百度AIStudio-Python小白逆袭大神-Day4-PaddleHub之《青春有你2》作业:五人识别

Day4-《青春有你2》作业:五人识别

  • 要求
    • 本地操作
      • 爬取五位选手的图片
        • PIL处理图片实现数增强
        • 将图片地址和标记写入文件
      • AIStudio平台操作
        • 上传数据集
        • AIStudio代码
        • 识别结果
      • 隔天更新
        • 策略配置


大家好,我是EverdayForCode。你,今天学习了吗?

要求

  1. 自己准备数据集
  2. 完成《青春有你2》前五名照片识别
  • 虞书欣
  • 许佳琪
  • 赵小棠
  • 安崎
  • 王承渲

本地操作

爬取五位选手的图片

import json
import re
import requests
import datetime
from bs4 import BeautifulSoup
import os

# 获取当天的日期,并进行格式化,用于后面文件命名,格式:20200420
today = datetime.date.today().strftime('%Y%m%d')


# %%
def crawl_wiki_data(url):
    """
    爬取必应图片
    """
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'
    }
    url = url

    try:
        response = requests.get(url, headers=headers)
        print(response.status_code)
        html = response.content
        # 将一段文档传入BeautifulSoup的构造方法,就能得到一个文档的对象, 可以传入一段字符串
        soup = BeautifulSoup(html, 'lxml')

        title = soup.find_all('title')
        title = str(title).replace(''</span><span class="token punctuation">,</span> <span class="token string">''</span><span class="token punctuation">)</span>
        title <span class="token operator">=</span> title<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'['</span><span class="token punctuation">,</span> <span class="token string">''</span><span class="token punctuation">)</span>
        str_temp <span class="token operator">=</span> title<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'-'</span><span class="token punctuation">)</span>
        name <span class="token operator">=</span> str_temp<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span>
        imgs <span class="token operator">=</span> soup<span class="token punctuation">.</span>find_all<span class="token punctuation">(</span><span class="token string">'img'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token string">'class'</span><span class="token punctuation">:</span> <span class="token string">'mimg vimgld'</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
        <span class="token comment"># print(imgs)</span>

        srcs <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
        count  <span class="token operator">=</span> <span class="token number">0</span>
        <span class="token keyword">for</span> img <span class="token keyword">in</span> imgs<span class="token punctuation">:</span>
            src <span class="token operator">=</span> img<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'data-src'</span><span class="token punctuation">)</span>
            <span class="token keyword">if</span> src <span class="token keyword">is</span> <span class="token operator">not</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
                star <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'link'</span><span class="token punctuation">:</span> src<span class="token punctuation">,</span> <span class="token string">'name'</span><span class="token punctuation">:</span> name<span class="token punctuation">}</span>
                <span class="token comment"># print(src)</span>
                srcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>star<span class="token punctuation">)</span>
                count <span class="token operator">+=</span> <span class="token number">1</span>
            <span class="token keyword">if</span> count <span class="token operator">></span> <span class="token number">55</span><span class="token punctuation">:</span>
                <span class="token keyword">break</span>

        <span class="token keyword">return</span> srcs
    <span class="token keyword">except</span> Exception <span class="token keyword">as</span> e<span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span>


<span class="token comment"># %%</span>
<span class="token comment"># srcs = crawl_wiki_data('https://cn.bing.com/images/search?q=%E8%99%9E%E4%B9%A6%E6%AC%A3&form=HDRSC2&first=1&cw=1519&ch=258')</span>
<span class="token comment"># print(srcs)</span>
<span class="token comment"># %%</span>
<span class="token keyword">def</span> <span class="token function">parse_wiki_data</span><span class="token punctuation">(</span>srcs<span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token triple-quoted-string string">'''
    ,存JSON文件,保存到work目录下
    '''</span>
    json_data <span class="token operator">=</span> json<span class="token punctuation">.</span>loads<span class="token punctuation">(</span><span class="token builtin">str</span><span class="token punctuation">(</span>srcs<span class="token punctuation">)</span><span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">"\'"</span><span class="token punctuation">,</span> <span class="token string">"\""</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
    <span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'work/'</span> <span class="token operator">+</span> today <span class="token operator">+</span> <span class="token string">'.json'</span><span class="token punctuation">,</span> <span class="token string">'w'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'UTF-8'</span><span class="token punctuation">)</span> <span class="token keyword">as</span> f<span class="token punctuation">:</span>
        json<span class="token punctuation">.</span>dump<span class="token punctuation">(</span>json_data<span class="token punctuation">,</span> f<span class="token punctuation">,</span> ensure_ascii<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">)</span>


<span class="token comment"># %%</span>
<span class="token comment"># 测试</span>
<span class="token comment"># srcs = crawl_wiki_data(</span>
<span class="token comment">#     'https://cn.bing.com/images/search?q=%E8%99%9E%E4%B9%A6%E6%AC%A3&form=HDRSC2&first=1&cw=1519&ch=258')</span>
<span class="token comment"># parse_wiki_data(srcs)</span>


<span class="token comment"># %%</span>
<span class="token keyword">def</span> <span class="token function">crawl_pic_urls</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token triple-quoted-string string">'''
    爬取每个选手的图片,并保存
    '''</span>
    <span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'work/'</span> <span class="token operator">+</span> today <span class="token operator">+</span> <span class="token string">'.json'</span><span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'UTF-8'</span><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token builtin">file</span><span class="token punctuation">:</span>
        json_array <span class="token operator">=</span> json<span class="token punctuation">.</span>loads<span class="token punctuation">(</span><span class="token builtin">file</span><span class="token punctuation">.</span>read<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>

    headers <span class="token operator">=</span> <span class="token punctuation">{</span>
        <span class="token string">'User-Agent'</span><span class="token punctuation">:</span> <span class="token string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'</span>
    <span class="token punctuation">}</span>
    count <span class="token operator">=</span> <span class="token number">0</span>
    <span class="token keyword">for</span> star <span class="token keyword">in</span> json_array<span class="token punctuation">:</span>
        name <span class="token operator">=</span> star<span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">]</span>
        link <span class="token operator">=</span> star<span class="token punctuation">[</span><span class="token string">'link'</span><span class="token punctuation">]</span>
        <span class="token comment"># !!!根据图片链接列表pic_urls, 下载所有图片,保存在以name命名的文件夹中!!!</span>
        down_pic<span class="token punctuation">(</span>name<span class="token punctuation">,</span> link<span class="token punctuation">,</span> count<span class="token punctuation">)</span>
        count <span class="token operator">+=</span> <span class="token number">1</span>


<span class="token comment"># %%</span>
<span class="token comment"># 下载图片</span>
<span class="token keyword">def</span> <span class="token function">down_pic</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> link<span class="token punctuation">,</span> i<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token triple-quoted-string string">'''
    根据图片链接列表pic_urls, 下载所有图片,保存在以name命名的文件夹中,
    '''</span>
    path <span class="token operator">=</span> <span class="token string">'work/'</span> <span class="token operator">+</span> <span class="token string">'pics/'</span> <span class="token operator">+</span> name <span class="token operator">+</span> <span class="token string">'/'</span>
    <span class="token keyword">if</span> <span class="token operator">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span>path<span class="token punctuation">)</span><span class="token punctuation">:</span>
        os<span class="token punctuation">.</span>makedirs<span class="token punctuation">(</span>path<span class="token punctuation">)</span>

    <span class="token keyword">try</span><span class="token punctuation">:</span>
        pic <span class="token operator">=</span> requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span>link<span class="token punctuation">,</span> timeout<span class="token operator">=</span><span class="token number">15</span><span class="token punctuation">)</span>
        string <span class="token operator">=</span> <span class="token builtin">str</span><span class="token punctuation">(</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'.jpg'</span>
        <span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span>path <span class="token operator">+</span> string<span class="token punctuation">,</span> <span class="token string">'wb'</span><span class="token punctuation">)</span> <span class="token keyword">as</span> f<span class="token punctuation">:</span>
            f<span class="token punctuation">.</span>write<span class="token punctuation">(</span>pic<span class="token punctuation">.</span>content<span class="token punctuation">)</span>
            <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'成功下载第%s张图片: %s'</span> <span class="token operator">%</span> <span class="token punctuation">(</span><span class="token builtin">str</span><span class="token punctuation">(</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token builtin">str</span><span class="token punctuation">(</span>link<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
    <span class="token keyword">except</span> Exception <span class="token keyword">as</span> e<span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'下载第%s张图片时失败: %s'</span> <span class="token operator">%</span> <span class="token punctuation">(</span><span class="token builtin">str</span><span class="token punctuation">(</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token builtin">str</span><span class="token punctuation">(</span>link<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span>


<span class="token comment"># %%</span>
<span class="token keyword">def</span> <span class="token function">show_pic_path</span><span class="token punctuation">(</span>path<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token triple-quoted-string string">'''
    遍历所爬取的每张图片,并打印所有图片的绝对路径
    '''</span>
    pic_num <span class="token operator">=</span> <span class="token number">0</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span>dirpath<span class="token punctuation">,</span> dirnames<span class="token punctuation">,</span> filenames<span class="token punctuation">)</span> <span class="token keyword">in</span> os<span class="token punctuation">.</span>walk<span class="token punctuation">(</span>path<span class="token punctuation">)</span><span class="token punctuation">:</span>
        <span class="token keyword">for</span> filename <span class="token keyword">in</span> filenames<span class="token punctuation">:</span>
            pic_num <span class="token operator">+=</span> <span class="token number">1</span>
            <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"第%d张照片:%s"</span> <span class="token operator">%</span> <span class="token punctuation">(</span>pic_num<span class="token punctuation">,</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>dirpath<span class="token punctuation">,</span> filename<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"共爬取《青春有你2》前五名选手的%d照片"</span> <span class="token operator">%</span> pic_num<span class="token punctuation">)</span>


<span class="token comment"># %%</span>
<span class="token comment"># 测试</span>
url_list <span class="token operator">=</span> <span class="token punctuation">[</span>
    <span class="token string">'https://cn.bing.com/images/search?q=%E8%99%9E%E4%B9%A6%E6%AC%A3&form=HDRSC2&first=1&cw=1519&ch=258'</span><span class="token punctuation">,</span>
    <span class="token string">'https://cn.bing.com/images/search?q=%E8%AE%B8%E4%BD%B3%E7%90%AA&go=%E6%90%9C%E7%B4%A2&qs=ds&form=QBIR&first=1'</span><span class="token punctuation">,</span>
    <span class="token string">'https://cn.bing.com/images/search?q=%E7%8E%8B%E6%89%BF%E6%B8%B2&qs=n&form=QBIRMH&sp=-1&pq=%E7%8E%8B%E6%89%BF%E6%B8%B2&sc=0-3&sk=&cvid=32CFFC40D3E843FF831F1EBEDE9C0DA1'</span><span class="token punctuation">,</span>
    <span class="token string">'https://cn.bing.com/images/search?q=%E8%B5%B5%E5%B0%8F%E6%A3%A0&qs=n&form=QBIR&sp=-1&pq=%E8%B5%B5%E5%B0%8F%E6%A3%A0&sc=2-3&sk=&cvid=8817542052FD499595F1B95F279526EF'</span>

<span class="token punctuation">]</span>
srcs <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
<span class="token keyword">for</span> url <span class="token keyword">in</span> url_list<span class="token punctuation">:</span>
    src_list <span class="token operator">=</span> crawl_wiki_data<span class="token punctuation">(</span>url<span class="token punctuation">)</span>
    srcs<span class="token punctuation">.</span>extend<span class="token punctuation">(</span>src_list<span class="token punctuation">)</span>
parse_wiki_data<span class="token punctuation">(</span>srcs<span class="token punctuation">)</span>
crawl_pic_urls<span class="token punctuation">(</span><span class="token punctuation">)</span>
show_pic_path<span class="token punctuation">(</span><span class="token string">'work'</span><span class="token punctuation">)</span>

</code></pre> 
  <p>由于必应图片几乎是动态加载,EverdayForCode爬虫很菜,每一个选手只获取了20几张图片(安琦一张没有爬取,应为安琦的照片大多是和其他人的合照,后续手动下载)<br> 每个选手20几张图片做训练是远远不够的,因此需要使用数据增强</p> 
  <h4>PIL处理图片实现数增强</h4> 
  <pre><code class="prism language-python"><span class="token keyword">import</span> os
<span class="token keyword">from</span> PIL <span class="token keyword">import</span> Image
<span class="token keyword">from</span> PIL <span class="token keyword">import</span> ImageEnhance

<span class="token comment">#%%</span>
<span class="token comment"># 上下左右旋转图片</span>
<span class="token keyword">def</span> <span class="token function">Rotate_pic_up_down_bri</span><span class="token punctuation">(</span>path<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span>dirpath<span class="token punctuation">,</span> dirnames<span class="token punctuation">,</span> filenames<span class="token punctuation">)</span> <span class="token keyword">in</span> os<span class="token punctuation">.</span>walk<span class="token punctuation">(</span>path<span class="token punctuation">)</span><span class="token punctuation">:</span>
        <span class="token keyword">for</span> filename <span class="token keyword">in</span> filenames<span class="token punctuation">:</span>
            img_path <span class="token operator">=</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>dirpath<span class="token punctuation">,</span> filename<span class="token punctuation">)</span>
            <span class="token keyword">print</span><span class="token punctuation">(</span>img_path<span class="token punctuation">)</span>
            <span class="token comment"># 打开图片</span>
            img <span class="token operator">=</span> Image<span class="token punctuation">.</span><span class="token builtin">open</span><span class="token punctuation">(</span>img_path<span class="token punctuation">)</span>
            img <span class="token operator">=</span> img<span class="token punctuation">.</span>convert<span class="token punctuation">(</span><span class="token string">'RGB'</span><span class="token punctuation">)</span>
            <span class="token comment"># 左右镜像</span>
            img_lr <span class="token operator">=</span> img<span class="token punctuation">.</span>transpose<span class="token punctuation">(</span>Image<span class="token punctuation">.</span>FLIP_LEFT_RIGHT<span class="token punctuation">)</span>
            <span class="token comment">#写入图片</span>
            w_path <span class="token operator">=</span> <span class="token string">'img_e/'</span><span class="token operator">+</span>path<span class="token operator">+</span><span class="token string">'/'</span>
            <span class="token keyword">if</span> <span class="token operator">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span>w_path<span class="token punctuation">)</span><span class="token punctuation">:</span>
                os<span class="token punctuation">.</span>makedirs<span class="token punctuation">(</span>w_path<span class="token punctuation">)</span>
            string <span class="token operator">=</span> filename<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'.jpg'</span><span class="token punctuation">,</span><span class="token string">'_lr.jpg'</span><span class="token punctuation">)</span>
            img_lr<span class="token punctuation">.</span>save<span class="token punctuation">(</span>w_path<span class="token operator">+</span>string<span class="token punctuation">)</span>

            <span class="token comment"># 上下镜像</span>
            img_bt <span class="token operator">=</span> img<span class="token punctuation">.</span>transpose<span class="token punctuation">(</span>Image<span class="token punctuation">.</span>FLIP_TOP_BOTTOM<span class="token punctuation">)</span>
            string <span class="token operator">=</span> filename<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'.jpg'</span><span class="token punctuation">,</span> <span class="token string">'_bt.jpg'</span><span class="token punctuation">)</span>
            img_bt<span class="token punctuation">.</span>save<span class="token punctuation">(</span>w_path <span class="token operator">+</span> string<span class="token punctuation">)</span>

            <span class="token comment"># 增强亮度</span>
            <span class="token comment"># 增强亮度</span>
            enh_bri <span class="token operator">=</span> ImageEnhance<span class="token punctuation">.</span>Brightness<span class="token punctuation">(</span>img<span class="token punctuation">)</span>
            brightness <span class="token operator">=</span> <span class="token number">1.5</span>
            img_bri <span class="token operator">=</span> enh_bri<span class="token punctuation">.</span>enhance<span class="token punctuation">(</span>brightness<span class="token punctuation">)</span>
            string <span class="token operator">=</span> filename<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'.jpg'</span><span class="token punctuation">,</span> <span class="token string">'_bri.jpg'</span><span class="token punctuation">)</span>
            img_bri<span class="token punctuation">.</span>save<span class="token punctuation">(</span>w_path <span class="token operator">+</span> string<span class="token punctuation">)</span>
<span class="token comment">#%%</span>
Rotate_pic_up_down_bri<span class="token punctuation">(</span><span class="token string">'img/anqi'</span><span class="token punctuation">)</span>
Rotate_pic_up_down_bri<span class="token punctuation">(</span><span class="token string">'img/wangchengxuan'</span><span class="token punctuation">)</span>
Rotate_pic_up_down_bri<span class="token punctuation">(</span><span class="token string">'img/xujiaqi'</span><span class="token punctuation">)</span>
Rotate_pic_up_down_bri<span class="token punctuation">(</span><span class="token string">'img/yushuxin'</span><span class="token punctuation">)</span>
Rotate_pic_up_down_bri<span class="token punctuation">(</span><span class="token string">'img/zhaoxiaotang'</span><span class="token punctuation">)</span>

</code></pre> 
  <p>使用PIL实现了图片的上下旋转、左右旋转、亮度增强</p> 
  <h4>将图片地址和标记写入文件</h4> 
  <p>由于是使用PaddleHub里面的模型,因此自定义数据需要遵守相应的数据规范,详见:</p> 
  <blockquote> 
   <p>数据规范<br> <a href="http://img.e-com-net.com/image/info8/21f4c7f49108488db874d95b94fc77b9.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/21f4c7f49108488db874d95b94fc77b9.jpg" alt="百度AIStudio-Python小白逆袭大神-Day4-PaddleHub之《青春有你2》作业:五人识别_第1张图片" width="650" height="383" style="border:1px solid black;"></a></p> 
  </blockquote> 
  <h3>AIStudio平台操作</h3> 
  <h4>上传数据集</h4> 
  <p>在本地做好数据及集,上传至AIStudion</p> 
  <h4>AIStudio代码</h4> 
  <pre><code class="prism language-python"><span class="token comment">#CPU环境启动请务必执行该指令</span>
<span class="token operator">%</span>set_env CPU_NUM<span class="token operator">=</span><span class="token number">1</span> 
<span class="token comment">#安装paddlehub</span>
!pip install paddlehub<span class="token operator">==</span><span class="token number">1.6</span><span class="token number">.0</span> <span class="token operator">-</span>i https<span class="token punctuation">:</span><span class="token operator">//</span>pypi<span class="token punctuation">.</span>tuna<span class="token punctuation">.</span>tsinghua<span class="token punctuation">.</span>edu<span class="token punctuation">.</span>cn<span class="token operator">/</span>simple
<span class="token comment"># 解压数据集</span>
!unzip <span class="token operator">-</span>o <span class="token operator">/</span>home<span class="token operator">/</span>aistudio<span class="token operator">/</span>data<span class="token operator">/</span>img<span class="token punctuation">.</span><span class="token builtin">zip</span> <span class="token operator">-</span>d <span class="token punctuation">.</span><span class="token operator">/</span>dataset<span class="token operator">/</span>img
<span class="token comment"># 遍历图集写入自定义数据</span>
<span class="token keyword">import</span> os
<span class="token keyword">def</span> <span class="token function">writeText</span><span class="token punctuation">(</span>path<span class="token punctuation">,</span>label<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span>dirpath<span class="token punctuation">,</span> dirnames<span class="token punctuation">,</span> filenames<span class="token punctuation">)</span> <span class="token keyword">in</span> os<span class="token punctuation">.</span>walk<span class="token punctuation">(</span>path<span class="token punctuation">)</span><span class="token punctuation">:</span>
        i <span class="token operator">=</span> <span class="token number">1</span>
        <span class="token keyword">for</span> filename <span class="token keyword">in</span> filenames<span class="token punctuation">:</span>
            img_path <span class="token operator">=</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>dirpath<span class="token punctuation">,</span> filename<span class="token punctuation">)</span>
            <span class="token comment"># print(img_path)</span>
            tra_f <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'/home/aistudio/dataset/train_list.txt'</span><span class="token punctuation">,</span><span class="token string">'a'</span><span class="token punctuation">)</span>
            tes_f <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'/home/aistudio/dataset/test_list.txt'</span><span class="token punctuation">,</span><span class="token string">'a'</span><span class="token punctuation">)</span>
            val_f <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'/home/aistudio/dataset/validate_list.txt'</span><span class="token punctuation">,</span><span class="token string">'a'</span><span class="token punctuation">)</span>
            string <span class="token operator">=</span> img_path <span class="token operator">+</span> <span class="token string">' '</span> <span class="token operator">+</span> <span class="token builtin">str</span><span class="token punctuation">(</span>label<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'\n'</span>
            <span class="token keyword">if</span> <span class="token number">1</span> <span class="token operator"><=</span> i <span class="token operator">%</span> <span class="token number">10</span> <span class="token operator"><=</span> <span class="token number">8</span><span class="token punctuation">:</span>
                tra_f<span class="token punctuation">.</span>write<span class="token punctuation">(</span>string<span class="token punctuation">)</span>
            <span class="token keyword">elif</span> i <span class="token operator">%</span> <span class="token number">10</span> <span class="token operator">==</span> <span class="token number">9</span><span class="token punctuation">:</span>
                tes_f<span class="token punctuation">.</span>write<span class="token punctuation">(</span>string<span class="token punctuation">)</span>
            <span class="token keyword">else</span><span class="token punctuation">:</span>
                val_f<span class="token punctuation">.</span>write<span class="token punctuation">(</span>string<span class="token punctuation">)</span>
            i <span class="token operator">+=</span> <span class="token number">1</span>
    tra_f<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>
    tes_f<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>
    val_f<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token comment"># 写入数据并查看    </span>
writeText<span class="token punctuation">(</span><span class="token string">'/home/aistudio/dataset/img/wangchengxuan'</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">)</span>
writeText<span class="token punctuation">(</span><span class="token string">'/home/aistudio/dataset/img/zhaoxiaotang'</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">)</span>
writeText<span class="token punctuation">(</span><span class="token string">'/home/aistudio/dataset/img/xujiaqi'</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span>
writeText<span class="token punctuation">(</span><span class="token string">'/home/aistudio/dataset/img/yushuxin'</span><span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">)</span>
writeText<span class="token punctuation">(</span><span class="token string">'/home/aistudio/dataset/img/anqi'</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">)</span>
!cat <span class="token operator">/</span>home<span class="token operator">/</span>aistudio<span class="token operator">/</span>dataset<span class="token operator">/</span>train_list<span class="token punctuation">.</span>txt
!cat <span class="token operator">/</span>home<span class="token operator">/</span>aistudio<span class="token operator">/</span>dataset<span class="token operator">/</span>test_list<span class="token punctuation">.</span>txt
!cat <span class="token operator">/</span>home<span class="token operator">/</span>aistudio<span class="token operator">/</span>dataset<span class="token operator">/</span>validate_list<span class="token punctuation">.</span>txt
<span class="token triple-quoted-string string">'''
Step2、加载预训练模型
接下来我们要在PaddleHub中选择合适的预训练模型来Finetune,由于是图像分类任务,因此我们使用经典的ResNet-50作为预训练模型。PaddleHub提供了丰富的图像分类预训练模型,包括了最新的神经网络架构搜索类的PNASNet,我们推荐您尝试不同的预训练模型来获得更好的性能。
'''</span>
<span class="token keyword">import</span> paddlehub <span class="token keyword">as</span> hub
module <span class="token operator">=</span> hub<span class="token punctuation">.</span>Module<span class="token punctuation">(</span>name<span class="token operator">=</span><span class="token string">"resnet_v2_50_imagenet"</span><span class="token punctuation">)</span>
<span class="token triple-quoted-string string">'''
Step3、数据准备

接着需要加载图片数据集。我们使用自定义的数据进行体验,请查看适配自定义数据

'''</span>
<span class="token keyword">from</span> paddlehub<span class="token punctuation">.</span>dataset<span class="token punctuation">.</span>base_cv_dataset <span class="token keyword">import</span> BaseCVDataset
   
<span class="token keyword">class</span> <span class="token class-name">DemoDataset</span><span class="token punctuation">(</span>BaseCVDataset<span class="token punctuation">)</span><span class="token punctuation">:</span>	
   <span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>	
       <span class="token comment"># 数据集存放位置</span>
       
       self<span class="token punctuation">.</span>dataset_dir <span class="token operator">=</span> <span class="token string">"dataset"</span>
       <span class="token builtin">super</span><span class="token punctuation">(</span>DemoDataset<span class="token punctuation">,</span> self<span class="token punctuation">)</span><span class="token punctuation">.</span>__init__<span class="token punctuation">(</span>
           base_path<span class="token operator">=</span>self<span class="token punctuation">.</span>dataset_dir<span class="token punctuation">,</span>
           train_list_file<span class="token operator">=</span><span class="token string">"train_list.txt"</span><span class="token punctuation">,</span>
           validate_list_file<span class="token operator">=</span><span class="token string">"validate_list.txt"</span><span class="token punctuation">,</span>
           test_list_file<span class="token operator">=</span><span class="token string">"test_list.txt"</span><span class="token punctuation">,</span>
           label_list_file<span class="token operator">=</span><span class="token string">"label_list.txt"</span><span class="token punctuation">,</span>
           <span class="token punctuation">)</span>
dataset <span class="token operator">=</span> DemoDataset<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token triple-quoted-string string">'''
Step4、生成数据读取器

接着生成一个图像分类的reader,reader负责将dataset的数据进行预处理,接着以特定格式组织并输入给模型进行训练。

当我们生成一个图像分类的reader时,需要指定输入图片的大小

'''</span>
data_reader <span class="token operator">=</span> hub<span class="token punctuation">.</span>reader<span class="token punctuation">.</span>ImageClassificationReader<span class="token punctuation">(</span>
    image_width<span class="token operator">=</span>module<span class="token punctuation">.</span>get_expected_image_width<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
    image_height<span class="token operator">=</span>module<span class="token punctuation">.</span>get_expected_image_height<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
    images_mean<span class="token operator">=</span>module<span class="token punctuation">.</span>get_pretrained_images_mean<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
    images_std<span class="token operator">=</span>module<span class="token punctuation">.</span>get_pretrained_images_std<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
    dataset<span class="token operator">=</span>dataset<span class="token punctuation">)</span>
<span class="token triple-quoted-string string">'''
Step5、配置策略

在进行Finetune前,我们可以设置一些运行时的配置,例如如下代码中的配置,表示:

    use_cuda:设置为False表示使用CPU进行训练。如果您本机支持GPU,且安装的是GPU版本的PaddlePaddle,我们建议您将这个选项设置为True;

    epoch:迭代轮数;

    batch_size:每次训练的时候,给模型输入的每批数据大小为32,模型训练时能够并行处理批数据,因此batch_size越大,训练的效率越高,但是同时带来了内存的负荷,过大的batch_size可能导致内存不足而无法训练,因此选择一个合适的batch_size是很重要的一步;

    log_interval:每隔10 step打印一次训练日志;

    eval_interval:每隔50 step在验证集上进行一次性能评估;

    checkpoint_dir:将训练的参数和数据保存到cv_finetune_turtorial_demo目录中;

    strategy:使用DefaultFinetuneStrategy策略进行finetune;

更多运行配置,请查看RunConfig

同时PaddleHub提供了许多优化策略,如AdamWeightDecayStrategy、ULMFiTStrategy、DefaultFinetuneStrategy等,详细信息参见策略

'''</span>
config <span class="token operator">=</span> hub<span class="token punctuation">.</span>RunConfig<span class="token punctuation">(</span>
    use_cuda<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">,</span>                              <span class="token comment">#是否使用GPU训练,默认为False;</span>
    num_epoch<span class="token operator">=</span><span class="token number">3</span><span class="token punctuation">,</span>                                <span class="token comment">#Fine-tune的轮数;</span>
    checkpoint_dir<span class="token operator">=</span><span class="token string">"cv_finetune_turtorial_demo"</span><span class="token punctuation">,</span><span class="token comment">#模型checkpoint保存路径, 若用户没有指定,程序会自动生成;</span>
    batch_size<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">,</span>                              <span class="token comment">#训练的批大小,如果使用GPU,请根据实际情况调整batch_size;</span>
    eval_interval<span class="token operator">=</span><span class="token number">10</span><span class="token punctuation">,</span>                           <span class="token comment">#模型评估的间隔,默认每100个step评估一次验证集;</span>
    strategy<span class="token operator">=</span>hub<span class="token punctuation">.</span>finetune<span class="token punctuation">.</span>strategy<span class="token punctuation">.</span>DefaultFinetuneStrategy<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>  <span class="token comment">#Fine-tune优化策略;</span>
<span class="token triple-quoted-string string">'''
Step6、组建Finetune Task

有了合适的预训练模型和准备要迁移的数据集后,我们开始组建一个Task。

由于该数据设置是一个二分类的任务,而我们下载的分类module是在ImageNet数据集上训练的千分类模型,所以我们需要对模型进行简单的微调,把模型改造为一个二分类模型:

    获取module的上下文环境,包括输入和输出的变量,以及Paddle Program;
    从输出变量中找到特征图提取层feature_map;
    在feature_map后面接入一个全连接层,生成Task;


'''</span>
input_dict<span class="token punctuation">,</span> output_dict<span class="token punctuation">,</span> program <span class="token operator">=</span> module<span class="token punctuation">.</span>context<span class="token punctuation">(</span>trainable<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span>
img <span class="token operator">=</span> input_dict<span class="token punctuation">[</span><span class="token string">"image"</span><span class="token punctuation">]</span>
feature_map <span class="token operator">=</span> output_dict<span class="token punctuation">[</span><span class="token string">"feature_map"</span><span class="token punctuation">]</span>
feed_list <span class="token operator">=</span> <span class="token punctuation">[</span>img<span class="token punctuation">.</span>name<span class="token punctuation">]</span>

task <span class="token operator">=</span> hub<span class="token punctuation">.</span>ImageClassifierTask<span class="token punctuation">(</span>
    data_reader<span class="token operator">=</span>data_reader<span class="token punctuation">,</span>
    feed_list<span class="token operator">=</span>feed_list<span class="token punctuation">,</span>
    feature<span class="token operator">=</span>feature_map<span class="token punctuation">,</span>
    num_classes<span class="token operator">=</span>dataset<span class="token punctuation">.</span>num_labels<span class="token punctuation">,</span>
    config<span class="token operator">=</span>config<span class="token punctuation">)</span>
 <span class="token triple-quoted-string string">'''
 Step5、开始Finetune

我们选择finetune_and_eval接口来进行模型训练,这个接口在finetune的过程中,会周期性的进行模型效果的评估,以便我们了解整个训练过程的性能变化。

 '''</span>
 run_states <span class="token operator">=</span> task<span class="token punctuation">.</span>finetune_and_eval<span class="token punctuation">(</span><span class="token punctuation">)</span>
 <span class="token triple-quoted-string string">'''
 Step6、预测

当Finetune完成后,我们使用模型来进行预测,先通过以下命令来获取测试的图片
'''</span>
<span class="token keyword">import</span> numpy <span class="token keyword">as</span> np
<span class="token keyword">import</span> matplotlib<span class="token punctuation">.</span>pyplot <span class="token keyword">as</span> plt 
<span class="token keyword">import</span> matplotlib<span class="token punctuation">.</span>image <span class="token keyword">as</span> mpimg
<span class="token comment"># 生成测试文件</span>
<span class="token keyword">import</span> os
<span class="token keyword">for</span> <span class="token punctuation">(</span>dirpath<span class="token punctuation">,</span> dirnames<span class="token punctuation">,</span> filenames<span class="token punctuation">)</span> <span class="token keyword">in</span> os<span class="token punctuation">.</span>walk<span class="token punctuation">(</span><span class="token string">'/home/aistudio/dataset/test'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    i <span class="token operator">=</span> <span class="token number">0</span>
    pics_f <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'/home/aistudio/dataset/test/test_pics.txt'</span><span class="token punctuation">,</span><span class="token string">'w'</span><span class="token punctuation">)</span>
    <span class="token keyword">for</span> filename <span class="token keyword">in</span> filenames<span class="token punctuation">:</span>
        img_path <span class="token operator">=</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>dirpath<span class="token punctuation">,</span> filename<span class="token punctuation">)</span>
        string <span class="token operator">=</span> img_path <span class="token operator">+</span> <span class="token string">' '</span> <span class="token operator">+</span> <span class="token builtin">str</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'\n'</span>
        pics_f<span class="token punctuation">.</span>write<span class="token punctuation">(</span>string<span class="token punctuation">)</span>
        i <span class="token operator">+=</span> <span class="token number">1</span>
pics_f<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>
f <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'/home/aistudio/dataset/test/test_pics.txt'</span><span class="token punctuation">,</span><span class="token string">'r'</span><span class="token punctuation">)</span>
filepath <span class="token operator">=</span> f<span class="token punctuation">.</span>readlines<span class="token punctuation">(</span><span class="token punctuation">)</span>
data <span class="token operator">=</span> <span class="token punctuation">[</span>filepath<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>filepath<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>filepath<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>filepath<span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>filepath<span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
f<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span>

label_map <span class="token operator">=</span> dataset<span class="token punctuation">.</span>label_dict<span class="token punctuation">(</span><span class="token punctuation">)</span>
index <span class="token operator">=</span> <span class="token number">0</span>
run_states <span class="token operator">=</span> task<span class="token punctuation">.</span>predict<span class="token punctuation">(</span>data<span class="token operator">=</span>data<span class="token punctuation">)</span>
results <span class="token operator">=</span> <span class="token punctuation">[</span>run_state<span class="token punctuation">.</span>run_results <span class="token keyword">for</span> run_state <span class="token keyword">in</span> run_states<span class="token punctuation">]</span>

<span class="token keyword">for</span> batch_result <span class="token keyword">in</span> results<span class="token punctuation">:</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span>batch_result<span class="token punctuation">)</span>
    batch_result <span class="token operator">=</span> np<span class="token punctuation">.</span>argmax<span class="token punctuation">(</span>batch_result<span class="token punctuation">,</span> axis<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span>batch_result<span class="token punctuation">)</span>
    <span class="token keyword">for</span> result <span class="token keyword">in</span> batch_result<span class="token punctuation">:</span>
        index <span class="token operator">+=</span> <span class="token number">1</span>
        result <span class="token operator">=</span> label_map<span class="token punctuation">[</span>result<span class="token punctuation">]</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"input %i is %s, and the predict result is %s"</span> <span class="token operator">%</span>
              <span class="token punctuation">(</span>index<span class="token punctuation">,</span> data<span class="token punctuation">[</span>index <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> result<span class="token punctuation">)</span><span class="token punctuation">)</span>
</code></pre> 
  <hr> 
  <p>代码到这里就结束了</p> 
  <h4>识别结果</h4> 
  <p><a href="http://img.e-com-net.com/image/info8/81469c7432d5457ca797942efc34efb6.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/81469c7432d5457ca797942efc34efb6.jpg" alt="百度AIStudio-Python小白逆袭大神-Day4-PaddleHub之《青春有你2》作业:五人识别_第2张图片" width="650" height="351" style="border:1px solid black;"></a><br> 由结果可知,60%的正确率,太低了。<br> 可能是数据集的太小的缘故,也可能是参数配置不对。<br> 明天再调试。拜拜!</p> 
  <blockquote> 
   <p>写在后面:你只要在努力,就没有辜负时光<br> 三天前就已经开营,拖到现在才写一篇博客,是我太懒。</p> 
  </blockquote> 
  <hr> 
  <h3>隔天更新</h3> 
  <p>时隔一天后,模型终于能够识别这五张图,狂喜!<br> <a href="http://img.e-com-net.com/image/info8/be86dac7e21b4076a7630f25e2d371cd.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/be86dac7e21b4076a7630f25e2d371cd.jpg" alt="百度AIStudio-Python小白逆袭大神-Day4-PaddleHub之《青春有你2》作业:五人识别_第3张图片" width="650" height="330" style="border:1px solid black;"></a>今天上午,我尝试过更改数据。把爬取的图片做了裁剪,见剩下演员的脸部。就像这样:<br> <a href="http://img.e-com-net.com/image/info8/a24f3dda11804e81aeaa0d98dce08459.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/a24f3dda11804e81aeaa0d98dce08459.jpg" alt="百度AIStudio-Python小白逆袭大神-Day4-PaddleHub之《青春有你2》作业:五人识别_第4张图片" width="413" height="417" style="border:1px solid black;"></a><br> 就剩下个大脑袋,其余部分都裁剪了。<br> 实验发现:<br> 测试图片具有身体部分,因此脸部的特征不够突出,而训练用的图片基本都是脸部特征,训练出来的模型识别率极低。</p> 
  <h4>策略配置</h4> 
  <p>这是最后模型微调前的策略配置:<br> <a href="http://img.e-com-net.com/image/info8/ad1eb4e010104eb5b855559eaad3a0a1.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/ad1eb4e010104eb5b855559eaad3a0a1.jpg" alt="百度AIStudio-Python小白逆袭大神-Day4-PaddleHub之《青春有你2》作业:五人识别_第5张图片" width="650" height="122" style="border:1px solid black;"></a>昨天配置的策略轮数是:</p> 
  <pre><code class="prism language-python">num_epoch <span class="token operator">=</span> <span class="token number">5</span>
</code></pre> 
  <p>昨天模型应该是过拟合。</p> 
  <hr> 
  <p>下面是本地图片爬取与图像数据增强</p> 
  <blockquote> 
   <p>点击这里</p> 
  </blockquote> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1288503891008233472"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(百度AIStudio-Python小白逆袭大神-Day4-PaddleHub之《青春有你2》作业:五人识别)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1946557357081292800.htm"
                           title="github push 失败解决方案" target="_blank">github push 失败解决方案</a>
                        <span class="text-muted">日不落000</span>

                        <div>问题1:之前一直很好用的Git,今天突然push失败,报错如下:YInit[master]⚡gitpushfatal:unabletoaccess'https://github.com/ribuluo000/react-native-boilerplate.git/':Emptyreplyfromserver问题2:github.com在Firefox访问也慢的不行,基本不可以使用了,Chrome</div>
                    </li>
                    <li><a href="/article/1946557353172201472.htm"
                           title="20201-01-02" target="_blank">20201-01-02</a>
                        <span class="text-muted">潘jane</span>

                        <div>姓名:潘珊群公司:宁波市镇海承迪文具有限公司盛和塾第456期六项精进反省一组成员(日精进打卡第736天)【知~学习】:《六项精进》背诵0遍共30遍.《大学》背诵0遍共30遍.朗读0遍共0遍.学习强国每天早上和晚上累计1小时以上······【经典名句分享】奇迹,是努力的另一个名字!【行~实践】一、修身:(对自己个人)1.晨起一杯温开水2.早睡早起3.多喝水4.每天一粒钙片5.饭后水果二、齐家:(对家</div>
                    </li>
                    <li><a href="/article/1946557097604870144.htm"
                           title="2021-11-09" target="_blank">2021-11-09</a>
                        <span class="text-muted">bcd9015d7411</span>

                        <div>2021.11.09中原焦点团队焦莉霞,本周第一次约练。今天作为来访者进行了第一次约练,感受到了咨询师老师的稳和能视察到行为背后原因的深厚功底。也让我看到了自己想要的是什么,在我摇摆不定,混乱的思绪中,如果不摇摆将会有什么选择。随着老师深情的陪伴,让我的情绪有了一个宣泄口,诉说即疗愈,顿时感觉心里舒畅了很多,回复了力量,也更理性的去看待一些问题,只有自己不断的学习、成长才能带动孩子,带着期待等待孩</div>
                    </li>
                    <li><a href="/article/1946556967883436032.htm"
                           title="写给祖国母亲" target="_blank">写给祖国母亲</a>
                        <span class="text-muted">青明山</span>

                        <div>图片发自App站在高山之巅你是一棵树躺在大地之上你是一棵树即使遍体鳞伤也是沃土一片站在高山之巅你是一棵树融入冬季的热炉你是熊熊烈火即使粉身碎骨也留温暖人间你与这片热土同呼吸共命运你为他们遮风挡雨你为他们引路导航你是九百六十万平方公里上,屹立不倒的长青树图片发自App</div>
                    </li>
                    <li><a href="/article/1946556709883408384.htm"
                           title="做智慧型班主任" target="_blank">做智慧型班主任</a>
                        <span class="text-muted">鱼儿_82f8</span>

                        <div>2018年5月5日,参加第五届全国班主任工作艺术与心理健康教育高端论坛第一天,开幕式有安徽师范大学方双虎教授主持。图片发自App上、下午聆听了全国德育专家邹六根教授和全国优秀班主任王文英老师的报告。邹教授的班级管理具体化、精细化,以骆驼文化为主线,诠释了他的班级管理内涵。图片发自App图片发自App图片发自App图片发自App图片发自App班级管理邹教授作为班主任用心、用情、用智慧,使班级德育课程</div>
                    </li>
                    <li><a href="/article/1946556711141699584.htm"
                           title="《如何说 孩子才会听,怎么听 孩子才肯说》- 代替惩罚的技巧" target="_blank">《如何说 孩子才会听,怎么听 孩子才肯说》- 代替惩罚的技巧</a>
                        <span class="text-muted">裘叔拆书</span>

                        <div>【R】爸爸:比利,看见我的锯了吗?比例:没有。爸爸:真没有?比利:我发誓,我从来没碰过。爸爸:那我怎么看见它在外面,都是锈,旁边还有你和小朋友的手推车?比利:哦!我们上周用过,后来下雨了,我们就跑回家,我可能给忘了。爸爸:你说谎!比利:我没说谎,我真的忘了。爸爸:哼!上周你忘了我的锤子,上上周你又忘了我的螺丝刀。比利:爸爸,我不是故意的,有时候,我真的是忘了。爸爸:我会让你记住的!你再也不能用我的</div>
                    </li>
                    <li><a href="/article/1946556713717002240.htm"
                           title="20180924 中秋" target="_blank">20180924 中秋</a>
                        <span class="text-muted">沈宽儿</span>

                        <div>这个中秋的傍晚阵雨过后的清凉静坐在行人穿梭的地方听喷泉汩汩流声看孩童奔跑嬉闹家暂在心房一旁街灯初上圆月无望绿植失去光芒大红灯笼交映成殇</div>
                    </li>
                    <li><a href="/article/1946556708620922880.htm"
                           title="微信阅读量推广业务,微信文章如何推广提升阅读量" target="_blank">微信阅读量推广业务,微信文章如何推广提升阅读量</a>
                        <span class="text-muted">爱吃菠萝的鱼</span>

                        <div>微信文章怎么推广?微信文章如何推广,微信文章怎么推广提升阅读量,微信文章如何推广。微信公众号在互联网领域的竞争越来越激烈,许多企业在竞争中不敢轻易尝试。事实上,这是一种错误的想法。如果你想在竞争中获胜,你必须有足够的理由和优势。现在,越来越多的企业开始重视微信公众号营销。企业做公众号的目的是为了做品牌、获客、与用户互动等。但是,如何推广微信公众号才能让企业获得更多的用户?这是很多人都想知道的。今天</div>
                    </li>
                    <li><a href="/article/1946556580312969216.htm"
                           title="自我认知" target="_blank">自我认知</a>
                        <span class="text-muted">遇见未来的我</span>

                        <div>自我认知最重要。每个人都自然地认为自己与众不同。虽然不敢说天老大自已老二,但看看别人的成绩,都会说也就是他的运气好,如果是我,肯定比他做得更好。至于怎么能做得好,那得等运气轮到我身上再说。有一部美国影片《美国动物》根据真实的案件拍摄。四个大学生计划抢图书馆里的珍藏版图书,计划看起来也很周密,实施的却漏洞百出。根本无需警察费力,顺着他们留下的各种线索直接抓人。可见想象与实际之间的巨大差异。我们的大脑</div>
                    </li>
                    <li><a href="/article/1946556581562871808.htm"
                           title="中原焦点团队网络初级第30期 杨明霞分享第16天" target="_blank">中原焦点团队网络初级第30期 杨明霞分享第16天</a>
                        <span class="text-muted">54dea169dd4d</span>

                        <div>昨天晚上参加了焦点学习的第三次课,每次课都有不一样的收获和感悟。1.不带情绪做事情,或少点情绪做事。2.关注人不关注事。3.看似圆点都是新的起点。4.关注本身就是强化。5.关注资源,资源多了,短板就少了。6.要刻意练习才能掌握。7.关注白,扩大白,白多黑就少。8.了解他,尊重他,才能帮到他。云手三步1.接住接纳才有沟通,沟通才有合作,合作才有改变的机会。2.顺势后退是自身的修为,要允许当事人发泄情</div>
                    </li>
                    <li><a href="/article/1946556449303883776.htm"
                           title="10个可以副业赚钱的网站,总有一个适合你" target="_blank">10个可以副业赚钱的网站,总有一个适合你</a>
                        <span class="text-muted">配音新手圈</span>

                        <div>您是否正在寻找在线赚取额外收入的方法?如果是这样,您很幸运!在这篇文章中,我们将分享10个可以副业赚钱的网站,它们每天至少为您的时间和技能支付100美元。无论您是想增加收入还是通过互联网谋生,这些网站都为各种专业人士提供了一系列机会。在线赚钱从未如此简单,而且随着零工经济的兴起,现在足不出户就可以找到高薪工作。从自由写作到参加调查,有很多在线赚钱的方法。通过这10个网站,您可以掌控自己的财务报表,</div>
                    </li>
                    <li><a href="/article/1946556448045592576.htm"
                           title="曾经优秀的人,怎么突然间就不优秀了" target="_blank">曾经优秀的人,怎么突然间就不优秀了</a>
                        <span class="text-muted">码农之屋</span>

                        <div>职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,想申诉,想求解释,结论是,能力不匹配,未能与企业一起成长云云。明明曾经优秀,怎么就突然不优秀了,拖后腿了呢。这有两说,一说是企业冷血,卸磨杀驴,嫌弃老人成本太高,又没有年轻人肯卖命;另一说是,一些老白兔们不知道追求</div>
                    </li>
                    <li><a href="/article/1946556065390850048.htm"
                           title="2019-11-11晨间日记" target="_blank">2019-11-11晨间日记</a>
                        <span class="text-muted">野老说史</span>

                        <div>今天光棍节起床:6:05就寝:9:30天气:晴6~17℃心情:好纪念日:叫我起床的不是闹钟是梦想年度目标及关键点:本月重要成果:今日三只青蛙/番茄钟成功日志-记录三五件有收获的事务学风整顿散步财务检视人际的投入开卷有益-学习/读书/听书三焦,以横膈膜和肚脐为界中医把人体五脏六腑分成三个部分:上焦中焦和下焦。上焦主清应该升,下焦主浊应该降中焦运转健康与饮食今日步数:18693今日锻炼:10000今日</div>
                    </li>
                    <li><a href="/article/1946556066707861504.htm"
                           title="相忘于江湖" target="_blank">相忘于江湖</a>
                        <span class="text-muted">五两_fb5b</span>

                        <div>挥袖间你是过眼云烟转瞬即逝但又若即若离时常在我脑海里游走暗想从前丝丝细雨中你的伞遮住了我的阴霾一颦一笑中我的心里荡起了层层涟漪但那已是曾经如今的我已变成一条鱼忘记你只需要7秒7秒过后我就在水里自由自在地游玩对你没有当初的依依不舍只希望你能忘记我是的前世的500次回眸换来今世的擦肩而过让我们相忘于江湖相约来生</div>
                    </li>
                    <li><a href="/article/1946555953021251584.htm"
                           title="CAS中的ABA问题" target="_blank">CAS中的ABA问题</a>
                        <span class="text-muted"></span>

                        <div>一、什么是CAS?CAS(compareandset)操作是多线程环境处理并发的原子操作,更新一个值前先比较,如果与预期值一样则更新,否则失败。CAS底层是通过汇编层面的原语调用cpu指令实现的,同时结合了内存屏障,具体依赖CPU的指令,如cmpxchg指令(X86架构)二、什么是ABA问题?现有线程t1和线程t2,共享变量str="A"①首先读取str,那么t1中缓存值为A,t2中缓存值也为A,</div>
                    </li>
                    <li><a href="/article/1946555952345968640.htm"
                           title="单例模式的设计与实现" target="_blank">单例模式的设计与实现</a>
                        <span class="text-muted">寒士obj</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>文章目录一、不安全的单例模式二、线程安全的单例模式1.同步方法2.静态内部类3.枚举:最安全的实现方式单例模式可能是我们在开发中用得最多的设计模式之一,但要在多线程环境下正确实现单例模式却不是那么简单。今天我们就来看看如何正确地实现线程安全的单例模式。一、不安全的单例模式在单线程环境下,实现单例模式很简单,但在多线程环境下就不安全了,可能会出现多个线程同时创建实例的情况,这就违背了单例模式的初衷。</div>
                    </li>
                    <li><a href="/article/1946555574464344064.htm"
                           title="GEV/POT/Markov/点过程/贝叶斯极值全解析;基于R语言的极值统计学" target="_blank">GEV/POT/Markov/点过程/贝叶斯极值全解析;基于R语言的极值统计学</a>
                        <span class="text-muted"></span>

                        <div>极值统计学就是专门研究自然界和人类社会中很少发生,然而发生之后有着巨大影响的极端现象的统计建模及分析方法;在水文、气象、环境、生态、保险和金融等领域都有着广泛的应用。专题一、独立假设下的极值统计建模主要内容包括:1.广义极值模型.2.极小值的处理.3.广义Pareto模型.4.第r大次序统计量建模.5.R语言中极值统计学包.6.实例操作1-2.(提供案例数据及代码)专题二、平稳时间序列的极值统计建</div>
                    </li>
                    <li><a href="/article/1946555307886964736.htm"
                           title="一个人对自己的父母总是发脾气,而对外人却很礼貌" target="_blank">一个人对自己的父母总是发脾气,而对外人却很礼貌</a>
                        <span class="text-muted">无语_c7b8</span>

                        <div>一个人对自己的父母总是发脾气,而对外人却很礼貌可能有以下原因:1.父母不会计较现在年轻人生活压力大,如果父母总爱唠唠叨叨,会让人心烦,有时会发脾气。父母都心疼自己的孩子,大都不会计较,而外人就不一样。2.父母宠溺的结果对于父母宠惯了的孩子,他们给父母发脾气,父母逆来顺受就助长了他们的气焰,而外人不会容忍。由于他们明白给父母发脾气没什么,而给外人发脾气就不一样,会被报复。3.父母教育失败经常给父母发</div>
                    </li>
                    <li><a href="/article/1946555180791164928.htm"
                           title="IIS部署ASP.Net Core 遇坑 502.记录" target="_blank">IIS部署ASP.Net Core 遇坑 502.记录</a>
                        <span class="text-muted">DemonTutor</span>

                        <div>IIS部署ASP.NetCore502.5错误和解决在Win2008的机器上部署ASP.NetCore程序,老是提示502.5错误。已经安装了MicrosoftVisualC++2015Redistributable.NETCoreWindowsServerHostingbundle对应版本的.NetCoreSDK,但程序就是跑不起来。出错截图直接使用dotnet命令程序是可以正常运行的,说明环境</div>
                    </li>
                    <li><a href="/article/1946555053582118912.htm"
                           title="团队合作~3A" target="_blank">团队合作~3A</a>
                        <span class="text-muted">Haven_5b28</span>

                        <div>物流与生产没必要成为朋友,只需要达成可行的计划就行啦。均衡化生产的计划:1按产品系列划分的每月均衡化生产量非专用设备的利用率;2必要的劳动力;3成品和在制品(WIP)的目标库存目标的班次数量。精益供应链,直送方式订购相同的数量,才用相同频率,并在计划发生变更前及时通知,不留空挡。(一周确认的订单,剩下几周为预测表),减少wip停滞要求:1.坏消息第一,要优先报告2.顺序沟通,计划好安全库存3.人员</div>
                    </li>
                    <li><a href="/article/1946555052294467584.htm"
                           title="2022-01-13" target="_blank">2022-01-13</a>
                        <span class="text-muted">Eltonpeople</span>

                        <div>今日启发:Elton:“困境的谷底成为我重建生活的坚实基础。你可能永远不会有我这种失败的经历,但有些失败,在生活中是不可避免的。毫无挫折的生活是不存在的,除非你生活的万般小心,可有些失败还是会发生。失败让我内心安全,是我从通过考试中没有得到过的。失败教会我一些不能用其他方法获得的东西,我发现自己有坚强的意志,比想象中还多的原则,我也发现我拥有朋友——他们的价值远在红宝石之上。从挫折中得到知识将使你</div>
                    </li>
                    <li><a href="/article/1946554923927793664.htm"
                           title="普品篆书嵌名联" target="_blank">普品篆书嵌名联</a>
                        <span class="text-muted">化莲堂</span>

                        <div>图片发自App图片发自App图片发自App为友作嵌名联静养仁心滋厚德;波生妙韵演华章。鱼籽金蜡染套边纸,23*138厘米*2。与您分享,请您斧正!南无阿弥陀佛</div>
                    </li>
                    <li><a href="/article/1946554795519176704.htm"
                           title="9月11日丰盛日记之日(脓肿修复历程2)" target="_blank">9月11日丰盛日记之日(脓肿修复历程2)</a>
                        <span class="text-muted">贵在坚持的小生活</span>

                        <div>8天的住院后,周一终于带着赤裸裸的四个刀口出院了,迎接我的依旧是无法坐和长久的站立,但,我知道我距离“好”不远了……1.回家的心情和在医院的心情截然不一样,而且感受着身体越来越好的滋味,还是不错的,内心丰盈!期待越来越好,且不复发。海上嘉年华的桥2.躺在床上,看着小伙伴们在群里的聊天,知道大家工作学习积极热烈,在脑海中想象办公室的情景,大家在工作学习的路上不断成长和进步,我心生羡慕;尤其是能“坐着</div>
                    </li>
                    <li><a href="/article/1946554566942191616.htm"
                           title="CFD中动网格资料" target="_blank">CFD中动网格资料</a>
                        <span class="text-muted"></span>

                        <div>文章目录一、动网格控制方程推导1.基本思想2.ALE形式下的质量守恒方程3.ALE形式下的动量守恒方程4.能量方程(略)二、Fluent中使用UDF编写动网格函数示例1:周期性平移运动(正弦运动)使用说明:示例2:刚体旋转运动(绕Z轴旋转)使用说明:三、动网格设置建议(Fluent)四、注意事项五、总结在计算流体力学(CFD)中,动网格(MovingMesh)技术用于处理边界运动或变形的问题,例如</div>
                    </li>
                    <li><a href="/article/1946554165035593728.htm"
                           title="《家》读后感" target="_blank">《家》读后感</a>
                        <span class="text-muted">小红莲</span>

                        <div>《家》是巴金的《激流三部曲》(《家》、《春》、《秋》的其中一本。描写19世纪20年代初,一个封建大家庭的罪恶与腐朽,控诉了封建制度对生命的摧残,歌颂青年一代反封建斗争与民主主义的觉醒。高家大少爷高觉新,由于是长子,在那个年代,长子自然被家长寄予厚望,加上他聪慧,读书又好,不仅得到双亲的钟爱,私塾先生的赞美,看见他的人都说他日后会有很大的成就。这样,一个品学兼优的孩子,对前途充满了美丽的幻想,他对化</div>
                    </li>
                    <li><a href="/article/1946553406021758976.htm"
                           title="焦点父母课堂洛阳第二期第23天分享" target="_blank">焦点父母课堂洛阳第二期第23天分享</a>
                        <span class="text-muted">耿丽娟</span>

                        <div>今天中午一家人吃过饭,看天气挺好,大姐就提议去三清洞玩,得到了大家的一致赞同,我们便驱车前往,到达目的地停好车,就开始爬山,道路两旁好多卖玩具小吃的,孩子又控制不住跟我商量想买玩具,但是这次拒绝了孩子并跟他讲了道理后,孩子也欣然接受了,并高高兴兴的开始爬山了,也没有像之前不给买就开始不高兴抱怨了,聚焦每天一小步,相信会越来越好的</div>
                    </li>
                    <li><a href="/article/1946553407296827392.htm"
                           title="刘洺松成长记17" target="_blank">刘洺松成长记17</a>
                        <span class="text-muted">向着太阳歌唱啦啦啦</span>

                        <div>刘洺松今天105天啦!上午,妈妈带你去医院测评了,医生阿姨为你做了各项评估,测试得分为94分,正常。是不是所有妈妈都认为自己的孩子是超人呢?在妈妈心中,你就是superboy.永远是superboy.刘洺松健康快乐长大,爸爸妈妈爱你!</div>
                    </li>
                    <li><a href="/article/1946553408601255936.htm"
                           title="2019.2.4-2.10周复盘" target="_blank">2019.2.4-2.10周复盘</a>
                        <span class="text-muted">幸福快乐的小熊熊</span>

                        <div>一健康管理这周有三天走的挺多。二财务风险信用卡,花呗还款。三家庭经营春节期间,家人都有聚会,家庭氛围总体还是比较和谐的。四人际社群grace阅读营自告奋勇报了打卡提醒员。小鹿老师电影群,很幸运的中了育儿课程。五学习成长听释若老师写作课,最后时刻完成第2次作业。六休闲活动这周除了和家人朋友聚会。就是完成作业,看了春晚。本周收获这周能完成第2次作业,对自己也有了信心。试着培养一个微习惯,小到不可能失败</div>
                    </li>
                    <li><a href="/article/1946553181622300672.htm"
                           title="c语言如何宏定义枚举型结构体,C语言学习笔记--枚举&结构体" target="_blank">c语言如何宏定义枚举型结构体,C语言学习笔记--枚举&结构体</a>
                        <span class="text-muted">搁浅的鲎</span>
<a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80%E5%A6%82%E4%BD%95%E5%AE%8F%E5%AE%9A%E4%B9%89%E6%9E%9A%E4%B8%BE%E5%9E%8B%E7%BB%93%E6%9E%84%E4%BD%93/1.htm">c语言如何宏定义枚举型结构体</a>
                        <div>枚举枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明:enum枚举类型名字{名字0,名字1,。。。,名字n};枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为它们就是常量符号,它们的类型是int,值则依次从0到n。如:enumcolor{red,yellow,green};就创建了3个常量,red的值是0,yellow的值是1,green的值是2。当需要一些可以排列</div>
                    </li>
                    <li><a href="/article/1946553055369555968.htm"
                           title="企业级3D TLC?看英特尔专家怎么说!" target="_blank">企业级3D TLC?看英特尔专家怎么说!</a>
                        <span class="text-muted">weixin_33691817</span>

                        <div>也许有人会说,3DNAND有什么好说的,三星早在前年就发布了3DV-NAND,就是基于3DTLC设计的,48层,单Die容量256Gb;此后,SKHynix、东芝/闪迪、Intel/美光等豪门都开始涉足3DNAND产品。但需要提醒的是,在这里谈论的是企业级产品市场应用。考虑到频繁读写,以及企业级应用场景对可靠性、稳定性的需求,专业人士指出,这是完全不同的市场。顺便说一句:企业级闪存产品应用,2DM</div>
                    </li>
                                <li><a href="/article/96.htm"
                                       title="怎么样才能成为专业的程序员?" target="_blank">怎么样才能成为专业的程序员?</a>
                                    <span class="text-muted">cocos2d-x小菜</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>  
如何要想成为一名专业的程序员?仅仅会写代码是不够的。从团队合作去解决问题到版本控制,你还得具备其他关键技能的工具包。当我们询问相关的专业开发人员,那些必备的关键技能都是什么的时候,下面是我们了解到的情况。 
  
关于如何学习代码,各种声音很多,然后很多人就被误导为成为专业开发人员懂得一门编程语言就够了?!呵呵,就像其他工作一样,光会一个技能那是远远不够的。如果你想要成为</div>
                                </li>
                                <li><a href="/article/223.htm"
                                       title="java web开发 高并发处理" target="_blank">java web开发 高并发处理</a>
                                    <span class="text-muted">BreakingBad</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91/1.htm">并发</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91/1.htm">开发</a><a class="tag" taget="_blank" href="/search/%E5%A4%84%E7%90%86/1.htm">处理</a><a class="tag" taget="_blank" href="/search/%E9%AB%98/1.htm">高</a>
                                    <div>java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据) 一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降。常用的优化措施是M-S(</div>
                                </li>
                                <li><a href="/article/350.htm"
                                       title="mysql批量更新" target="_blank">mysql批量更新</a>
                                    <span class="text-muted">ekian</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>mysql更新优化: 
一版的更新的话都是采用update set的方式,但是如果需要批量更新的话,只能for循环的执行更新。或者采用executeBatch的方式,执行更新。无论哪种方式,性能都不见得多好。 
三千多条的更新,需要3分多钟。 
查询了批量更新的优化,有说replace into的方式,即: 
 
 
replace into tableName(id,status) values</div>
                                </li>
                                <li><a href="/article/477.htm"
                                       title="微软BI(3)" target="_blank">微软BI(3)</a>
                                    <span class="text-muted">18289753290</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E8%BD%AFBI+SSIS/1.htm">微软BI SSIS</a>
                                    <div>1) 
Q:该列违反了完整性约束错误;已获得 OLE DB 记录。源:“Microsoft SQL Server Native Client 11.0” Hresult: 0x80004005 说明:“不能将值 NULL 插入列 'FZCHID',表 'JRB_EnterpriseCredit.dbo.QYFZCH';列不允许有 Null 值。INSERT 失败。”。 
A:一般这类问题的存在是 </div>
                                </li>
                                <li><a href="/article/604.htm"
                                       title="Java中的List" target="_blank">Java中的List</a>
                                    <span class="text-muted">g21121</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>        List是一个有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。 
        与 set 不同,列表通常允许重复</div>
                                </li>
                                <li><a href="/article/731.htm"
                                       title="读书笔记" target="_blank">读书笔记</a>
                                    <span class="text-muted">永夜-极光</span>
<a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/1.htm">读书笔记</a>
                                    <div>   1.  K是一家加工厂,需要采购原材料,有A,B,C,D 4家供应商,其中A给出的价格最低,性价比最高,那么假如你是这家企业的采购经理,你会如何决策? 
    
     传统决策: A:100%订单  B,C,D:0% 
  
  &nbs</div>
                                </li>
                                <li><a href="/article/858.htm"
                                       title="centos 安装 Codeblocks" target="_blank">centos 安装 Codeblocks</a>
                                    <span class="text-muted">随便小屋</span>
<a class="tag" taget="_blank" href="/search/codeblocks/1.htm">codeblocks</a>
                                    <div>1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可yum install gccyum install gcc-c++ 
  
2.安装gtk2-devel,因为默认已经安装了正式产品需要的支持库,但是没有安装开发所需要的文档.yum install gtk2* 
3. 安装wxGTK 
   yum search w</div>
                                </li>
                                <li><a href="/article/985.htm"
                                       title="23种设计模式的形象比喻" target="_blank">23种设计模式的形象比喻</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>1、ABSTRACT FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory    工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:</div>
                                </li>
                                <li><a href="/article/1112.htm"
                                       title="开发管理 CheckLists" target="_blank">开发管理 CheckLists</a>
                                    <span class="text-muted">aoyouzi</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E7%AE%A1%E7%90%86+CheckLists/1.htm">开发管理 CheckLists</a>
                                    <div>开发管理 CheckLists(23) -使项目组度过完整的生命周期 
开发管理 CheckLists(22) -组织项目资源 
开发管理 CheckLists(21) -控制项目的范围开发管理 CheckLists(20) -项目利益相关者责任开发管理 CheckLists(19) -选择合适的团队成员开发管理 CheckLists(18) -敏捷开发 Scrum Master 工作开发管理 C</div>
                                </li>
                                <li><a href="/article/1239.htm"
                                       title="js实现切换" target="_blank">js实现切换</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E6%A0%8F%E7%9B%AE%E5%88%87%E6%8D%A2/1.htm">栏目切换</a>
                                    <div>js主要功能之一就是实现页面的特效,窗体的切换可以减少页面的大小,被门户网站大量应用思路: 
   1,先将要显示的设置为display:bisible  否则设为none
    2,设置栏目的id  ,js获取栏目的id,如果id为Null就设置为显示
    3,判断js获取的id名字;再设置是否显示
 
  
代码实现: 
  
html代码: 
  <di</div>
                                </li>
                                <li><a href="/article/1366.htm"
                                       title="周鸿祎在360新员工入职培训上的讲话" target="_blank">周鸿祎在360新员工入职培训上的讲话</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E6%84%9F%E6%82%9F/1.htm">感悟</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E7%94%9F/1.htm">人生</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA/1.htm">职场</a>
                                    <div>        这篇文章也是最近偶尔看到的,考虑到原博客发布者可能将其删除等原因,也更方便个人查找,特将原文拷贝再发布的。“学东西是为自己的,不要整天以混的姿态来跟公司博弈,就算是混,我觉得你要是能在混的时间里,收获一些别的有利于人生发展的东西,也是不错的,看你怎么把握了”,看了之后,对这句话记忆犹新。  &</div>
                                </li>
                                <li><a href="/article/1493.htm"
                                       title="前端Web开发的页面效果" target="_blank">前端Web开发的页面效果</a>
                                    <span class="text-muted">Bill_chen</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/Microsoft/1.htm">Microsoft</a>
                                    <div>1.IE6下png图片的透明显示: 
<img src="图片地址" border="0" style="Filter.Alpha(Opacity)=数值(100),style=数值(3)"/> 
或在<head></head>间加一段JS代码让透明png图片正常显示。 
 
2.<li>标</div>
                                </li>
                                <li><a href="/article/1620.htm"
                                       title="【JVM五】老年代垃圾回收:并发标记清理GC(CMS GC)" target="_blank">【JVM五】老年代垃圾回收:并发标记清理GC(CMS GC)</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6/1.htm">垃圾回收</a>
                                    <div>  CMS概述 
并发标记清理垃圾回收(Concurrent Mark and Sweep GC)算法的主要目标是在GC过程中,减少暂停用户线程的次数以及在不得不暂停用户线程的请夸功能,尽可能短的暂停用户线程的时间。这对于交互式应用,比如web应用来说,是非常重要的。 
  
CMS垃圾回收针对新生代和老年代采用不同的策略。相比同吞吐量垃圾回收,它要复杂的多。吞吐量垃圾回收在执</div>
                                </li>
                                <li><a href="/article/1747.htm"
                                       title="Struts2技术总结" target="_blank">Struts2技术总结</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/struts2/1.htm">struts2</a>
                                    <div>  
 
 必备jar文件 
   
 早在struts2.0.*的时候,struts2的必备jar包需要如下几个: 
commons-logging-*.jar   Apache旗下commons项目的log日志包 
freemarker-*.jar          </div>
                                </li>
                                <li><a href="/article/1874.htm"
                                       title="Jquery easyui layout应用注意事项" target="_blank">Jquery easyui layout应用注意事项</a>
                                    <span class="text-muted">bozch</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/layout/1.htm">layout</a>
                                    <div>在jquery easyui中提供了easyui-layout布局,他的布局比较局限,类似java中GUI的border布局。下面对其使用注意事项作简要介绍: 
     如果在现有的工程中前台界面均应用了jquery easyui,那么在布局的时候最好应用jquery eaysui的layout布局,否则在表单页面(编辑、查看、添加等等)在不同的浏览器会出</div>
                                </li>
                                <li><a href="/article/2001.htm"
                                       title="java-拷贝特殊链表:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?" target="_blank">java-拷贝特殊链表:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>
public class CopySpecialLinkedList {

	/**
	 * 题目:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
拷贝pNext指针非常容易,所以题目的难点是如何拷贝pRand指针。
假设原来链表为A1 -> A2 ->... -> An,新拷贝</div>
                                </li>
                                <li><a href="/article/2128.htm"
                                       title="color" target="_blank">color</a>
                                    <span class="text-muted">Chen.H</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                                    <div><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">    <HTML>    <HEAD>&nbs</div>
                                </li>
                                <li><a href="/article/2255.htm"
                                       title="[信息与战争]移动通讯与网络" target="_blank">[信息与战争]移动通讯与网络</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                                    <div>      两个坚持:手机的电池必须可以取下来 
               光纤不能够入户,只能够到楼宇 
 
      建议大家找这本书看看:<&</div>
                                </li>
                                <li><a href="/article/2382.htm"
                                       title="oracle flashback query(闪回查询)" target="_blank">oracle flashback query(闪回查询)</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/flashback+query/1.htm">flashback query</a><a class="tag" taget="_blank" href="/search/flashback+table/1.htm">flashback table</a>
                                    <div>在Oracle 10g中,Flash back家族分为以下成员: 
Flashback Database 
Flashback Drop 
Flashback Table 
Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query) 
下面介绍一下Flashback Drop 和Flas</div>
                                </li>
                                <li><a href="/article/2509.htm"
                                       title="zeus持久层DAO单元测试" target="_blank">zeus持久层DAO单元测试</a>
                                    <span class="text-muted">deng520159</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a>
                                    <div>zeus代码测试正紧张进行中,但由于工作比较忙,但速度比较慢.现在已经完成读写分离单元测试了,现在把几种情况单元测试的例子发出来,希望有人能进出意见,让它走下去. 
本文是zeus的dao单元测试: 
1.单元测试直接上代码 
  
package com.dengliang.zeus.webdemo.test;


import org.junit.Test;
import o</div>
                                </li>
                                <li><a href="/article/2636.htm"
                                       title="C语言学习三printf函数和scanf函数学习" target="_blank">C语言学习三printf函数和scanf函数学习</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/printf/1.htm">printf</a><a class="tag" taget="_blank" href="/search/scanf/1.htm">scanf</a><a class="tag" taget="_blank" href="/search/language/1.htm">language</a>
                                    <div>printf函数 
/*
	2013年3月10日20:42:32
	地点:北京潘家园
	功能:
	目的:
		测试%x %X %#x %#X的用法
 */

# include <stdio.h>

int main(void)
{

	printf("哈哈!\n");  // \n表示换行

	int i = 10;
	printf</div>
                                </li>
                                <li><a href="/article/2763.htm"
                                       title="那你为什么小时候不好好读书?" target="_blank">那你为什么小时候不好好读书?</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/life/1.htm">life</a>
                                    <div>dady, 我今天捡到了十块钱, 不过我还给那个人了 
good girl! 那个人有没有和你讲thank you啊 
没有啦....他拉我的耳朵我才把钱还给他的, 他哪里会和我讲thank you 
  
爸爸, 如果地上有一张5块一张10块你拿哪一张呢.... 
当然是拿十块的咯... 
爸爸你很笨的, 你不会两张都拿 
  
爸爸为什么上个月那个人来跟你讨钱, 你告诉他没</div>
                                </li>
                                <li><a href="/article/2890.htm"
                                       title="iptables开放端口" target="_blank">iptables开放端口</a>
                                    <span class="text-muted">Fanyucai</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/iptables/1.htm">iptables</a><a class="tag" taget="_blank" href="/search/%E7%AB%AF%E5%8F%A3/1.htm">端口</a>
                                    <div>1,找到配置文件 
vi /etc/sysconfig/iptables   
  
2,添加端口开放,增加一行,开放18081端口 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 18081 -j ACCEPT 
  
3,保存 
ESC
:wq! 
  
4,重启服务 
service iptables </div>
                                </li>
                                <li><a href="/article/3017.htm"
                                       title="Ehcache(05)——缓存的查询" target="_blank">Ehcache(05)——缓存的查询</a>
                                    <span class="text-muted">234390216</span>
<a class="tag" taget="_blank" href="/search/%E6%8E%92%E5%BA%8F/1.htm">排序</a><a class="tag" taget="_blank" href="/search/ehcache/1.htm">ehcache</a><a class="tag" taget="_blank" href="/search/%E7%BB%9F%E8%AE%A1/1.htm">统计</a><a class="tag" taget="_blank" href="/search/query/1.htm">query</a>
                                    <div>缓存的查询 
目录 
1.    使Cache可查询 
1.1     基于Xml配置 
1.2     基于代码的配置 
2     指定可搜索的属性 
2.1     可查询属性类型 
2.2 &</div>
                                </li>
                                <li><a href="/article/3144.htm"
                                       title="通过hashset找到数组中重复的元素" target="_blank">通过hashset找到数组中重复的元素</a>
                                    <span class="text-muted">jackyrong</span>
<a class="tag" taget="_blank" href="/search/hashset/1.htm">hashset</a>
                                    <div>  如何在hashset中快速找到重复的元素呢?方法很多,下面是其中一个办法: 
 
 


 int[] array = {1,1,2,3,4,5,6,7,8,8};
         
        Set<Integer> set = new HashSet<Integer>();
         
        for(int i = 0</div>
                                </li>
                                <li><a href="/article/3271.htm"
                                       title="使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL" target="_blank">使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL</a>
                                    <span class="text-muted">lanrikey</span>
<a class="tag" taget="_blank" href="/search/history/1.htm">history</a>
                                    <div>后退时关闭当前页面 
<script type="text/javascript"> 
 jQuery(document).ready(function ($) { 
        if (window.history && window.history.pushState) {</div>
                                </li>
                                <li><a href="/article/3398.htm"
                                       title="应用程序的通信成本" target="_blank">应用程序的通信成本</a>
                                    <span class="text-muted">netkiller.github.com</span>
<a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">虚拟机</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E9%99%88%E6%99%AF%E5%B3%B0/1.htm">陈景峰</a><a class="tag" taget="_blank" href="/search/netkiller/1.htm">netkiller</a><a class="tag" taget="_blank" href="/search/neo/1.htm">neo</a>
                                    <div>应用程序的通信成本  
什么是通信 
一个程序中两个以上功能相互传递信号或数据叫做通信。  
什么是成本 
这是是指时间成本与空间成本。 时间就是传递数据所花费的时间。空间是指传递过程耗费容量大小。  
都有哪些通信方式 
 
 全局变量 
 线程间通信 
 共享内存 
 共享文件 
 管道 
 Socket 
 硬件(串口,USB) 等等 
  
全局变量 
全局变量是成本最低通信方法,通过设置</div>
                                </li>
                                <li><a href="/article/3525.htm"
                                       title="一维数组与二维数组的声明与定义" target="_blank">一维数组与二维数组的声明与定义</a>
                                    <span class="text-muted">恋洁e生</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">一维数组</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E4%B9%89/1.htm">定义</a><a class="tag" taget="_blank" href="/search/%E5%A3%B0%E6%98%8E/1.htm">声明</a><a class="tag" taget="_blank" href="/search/%E5%88%9D%E5%A7%8B%E5%8C%96/1.htm">初始化</a>
                                    <div>/**  *   */ package test20111005; /**  * @author FlyingFire  * @date:2011-11-18 上午04:33:36  * @author :代码整理  * @introduce :一维数组与二维数组的初始化  *summary:  */ public c</div>
                                </li>
                                <li><a href="/article/3652.htm"
                                       title="Spring Mybatis独立事务配置" target="_blank">Spring Mybatis独立事务配置</a>
                                    <span class="text-muted">toknowme</span>
<a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a>
                                    <div>在项目中有很多地方会使用到独立事务,下面以获取主键为例      
(1)修改配置文件spring-mybatis.xml    <!-- 开启事务支持 -->    <tx:annotation-driven transaction-manager="transactionManager" />       &n</div>
                                </li>
                                <li><a href="/article/3779.htm"
                                       title="更新Anadroid SDK Tooks之后,Eclipse提示No update were found" target="_blank">更新Anadroid SDK Tooks之后,Eclipse提示No update were found</a>
                                    <span class="text-muted">xp9802</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                    <div>使用Android SDK Manager 更新了Anadroid SDK Tooks 之后, 
打开eclipse提示 This Android SDK requires Android Developer Toolkit version 23.0.0 or above, 点击Check for Updates  
检测一会后提示 No update were found  </div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>