深入浅出git-log之代码统计实战

前言

git-log 即查看 git 提交日志,本文会全面解析 git-log 使用并通过一个真实的 SpringBoot 项目进行实战。如果你是个技术管理者,你一定在乎手下做了什么,提了多少代码,是否有“佛祖保佑”,git-log 都可以帮你搞定。它还可帮你 code review,帮你 blame someone。你想 blame 吗?你想快速定位你的代码吗?那就看看我们的 git log 到底能做点啥吧。Let's Go~

概要

$ git log [] [] [[--] …]
  • 本文会用到以下两种命令做 demo,一种普通 log,一种单行显示 log
# 普通log
$ git log
# 单行显示
$ git log --oneline

选项options

  • --follow:会追溯历史,包括重命名前的记录

    $ git log -p gradle.properties
    # 不带 follow参数的情况下,git把名为gradle.properties的文件全部提交记录找出来
    $ git log -p --follow gradle.properties
    # 带follow参数的情况下,git会把当前以及重命名前的文件提交记录找出来
    
  • --no-decorate:不显示的所有提交的引用名称

    $ git log --no-decorate
    
    commit hash
    Author: caining 
    Date:  Tue Apr 20 11:10:53 2021 +0800
    develop2
    
  • --decorate[=short|full|auto|no]:显示的所有提交的引用名称

    • 名词解释:Git Reference
      • Git Reference简写为refs
      • 本地分支的Reference格式:refs/heads/如refs/heads/master,在保证唯一的情况下可以简写为master;
      • 远程追踪分支的Reference格式:refs/remotes//:如refs/remotes/origin/master,在保证唯一的情况下可以简写为origin/master;
      • tag的Reference格式:refs/tags/:如refs/tags/v1.0.1,在保证唯一的情况下可以简写为v1.0.1
      • 特殊refs-HEAD,指向当前本地分支的当前commit状态
      • 特殊refs-FETCH_HEAD,指向当前本地分支在最近一次fetch操作时得到的commit状态
      • 特殊refs-ORIG_HEAD,指向任何merge或rebase之前的刚刚检出时的commit状态
    $ git log --decorate=full
    # 结果:HEAD -> refs/heads/develop , refs/remotes/origin/develo
    $ git log --decorate=short
    # 结果:HEAD -> develop, origin/develop
    
  • --source:均显示提交分支

    # 每个提交均显示提交分支
    $ git log --oneline --source
    # 6256aa140       HEAD (HEAD -> develop, origin/develop) message
    
  • --log-size:是该提交消息的长度(以字节为单位)

    $ git log --oneline --log-size
    
    # commit 6256aa140f910d81eb71a7651aad1d6bc5128da0 (HEAD -> develop, origin/develop)
    # log size 107
    # Author: caining 
    # Date:  Thu Apr 22 09:59:29 2021 +0800
    # message
    
  • -L,::查看某个文件某几行范围内的修改记录

    $ git log -L 1,1:README.md
    
  • -L:::追踪一个函数的变更历史

    • 为了保证该命令执行有效,Git 需要知道哪些行是函数声明。Git有一套默认的正则表达式,但是由于语言比较多,默认配置下可能遇到这种报错:fatal: -L parameter 'test' starting at line 1: no match
    • 分析原因:在某些语言中,Git 默认的正则表达式无法识别该语言的函数开始和结束标识导致无法匹配函数名称
    • 解决方法
      • 项目下新建.gitattributes文件 关于gitattributes
      • 配置对应语言的diff*.java diff=java
    $ git log -L :test:app/src/main/java/com/cnn/androidmavenpackage/MainActivity.java
    

    image-20210423175510685

重点-筛选

  • 请注意,这些是在提交顺序和格式设置选项(例如--reverse)之前应用的。显示提交日志,以下 a b c 均为提交节点 hash 值 commit 时间 a < b < c )

    # 普通log
    $ git log
    # 单行显示
    $ git log --oneline
    
    # 列出a到(画重点:理解^ 可以理解为from  前面大 后面小,..可以理解为to 前面小后面大)
    $ git log a..b
    $ git log b ^a
    
    #列出所有可以从a 到 b而不包含c之前的提交
    $ git log a b ^c
    
  • 数量筛选

    $ git log -3
    $ git log -n3
    $ git log --max-count=3
    # - 
    # -n 
    # --max-count=
    # --skip=
    $ git log --skip=3 #跳过3条记录
    
  • 时间筛选

    $ git log --since='2021-04-02 00:00:00'
    # --since=
    # --after=
    $ git log --until='2021-04-02 00:00:00'
    # --until=
    # --before=
    # 2周内的提交
    $ git log --since=2.weeks = $ git log --since="2 weeks ago"
    # 2月内的提交
    $ git log --since=2.months = $ git log --since="2 months ago"
    # 1年内的提交
    $ git log --since=1.year = $ git log --since="1 year ago"
    
  • 作者筛选

    $ git log --author='caining'
    # --author=
    # --committer=
    # 注意这里是正则,模糊匹配,
    # 如果是多个人人一起查按下面
    $ git log -author="name1\|name2\|name3"
    
  • 提交描述筛选

    $ git log --grep='bug fix'
    $ git log -i --grep="message1\|message2"
    # --grep=
    # 重点1: --all-match 可以理解为sql-and与 --grep 至少有一个匹配的提交 例如与-author混用时
    $ git log --author='caining' --all-match --grep='bug fix'
    # 重点2: --invert-grep 用法同上,可以理解为sql not --grep 至少有一个不匹配的提交 例如与-author混用时
    $ git log --author='caining' --invert-grep --grep='bug fix'
    #上句理解: 为caining 提交的 但是 描述里不包含 bug fix的 提交内容
    
  • 代码内容搜索 -S,注意这个搜索可能很耗时。

    $ git log -S hello
    

image-20210423154604846

  • 多条件混合筛选

    $ git log --since=1.year --author='caining' --grep='获取' -3
    

image-20210423172328921

format与样式

  • --pretty[=

  • --date=--date=relative``--date=local``--date=default-local.--date=iso --date=iso8601``--date=rfc``--date=short``--date=rfc2822

    日期格式化

  • --parents

    显示提交的父母节点

  • --children

    显示提交的孩子节点

  • --graph

    --graph like thisimage-20210504160756705

  • git log --pretty=format 已存在样式包含 oneline,short, medium, full, fuller, reference, email, raw

    $ git log --pretty=oneline
    # 样式:
    #  
    </code></pre> <pre><code class="bash">$ git log --pretty=short
    # 样式:
    # commit <hash>
    # Author: <author>
    # <title line>
    </code></pre> <pre><code class="bash">$ git log --pretty=medium
    # 样式:
    # commit <hash>
    # Author: <author>
    # Date:   <author date>
    # <title line>
    # <full commit message>
    </code></pre> <pre><code class="bash">$ git log --pretty=full
    # 样式:
    # commit <hash>
    # Author: <author>
    # Commit: <committer>
    # <title line>
    # <full commit message>
    </code></pre> <pre><code class="bash">$ git log --pretty=fuller
    # 样式:
    # commit <hash>
    # Author:     <author>
    # AuthorDate: <author date>
    # Commit:     <committer>
    # CommitDate: <committer date>
    # <title line>
    # <full commit message>
    </code></pre> </li> 
      <li> <p>自定义git log --graph --pretty=format:''</p> <pre><code class="bash">#%Cred    切换至红色
    #%Cgreen  切换至绿色
    #%Cblue   切换至蓝色
    #%C(yellow)切换至黄色
    #%Creset 重设颜色
    $ git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
    </code></pre> </li> 
     </ul> 
     <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ed2785848c894baabaeac6ccf178fa2d~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20210501171014592" style="zoom:50%;" /></p> 
     <ul> 
      <li> <p>format支持的类型如下,以%开头:</p> <pre><code class="bash"># %H:完整哈希字串
    # %h:简短哈希字串
    # %T:树对象(tree)的完整哈希字串
    # %t:树对象的简短哈希字串
    # %P:父对象(parent)的完整哈希字串
    # %p:父对象的简短哈希字串
    # %an:作者(author)的名字
    # %aN:作者(author)的名字 (respecting .mailmap, see [git-shortlog[1\]](https://git-scm.com/docs/git-shortlog) or [git-blame[1\]](https://git-scm.com/docs/git-blame))
    # %ae:作者电子邮件
    # %aE:作者电子邮件 (respecting .mailmap, see [git-shortlog[1\]](https://git-scm.com/docs/git-shortlog) or [git-blame[1\]](https://git-scm.com/docs/git-blame))
    # %al:作者电子邮件的本地部分(@号之前的部分)
    # %aL:author local-part (see *%al*) respecting .mailmap, see [git-shortlog[1\]](https://git-scm.com/docs/git-shortlog) or [git-blame[1\]](https://git-scm.com/docs/git-blame))
    # %ad:作者日期 (format respects --date= option)
    # %aD:author date, RFC2822 style
    # %ar:作者日期,相对
    # %at:作者日期,UNIX时间戳
    # %ai:author date, ISO 8601-like format -作者日期,类似IS0 8601的格式
    # %aI:author date, strict ISO 8601 format - 作者日期,严格的lS0 8601格式
    # %as:作者日期,短格式(YYYY-MM-DD)
    # %cn:提交者名称
    # %cN:committer name (respecting .mailmap, see [git-shortlog[1\]](https://git-scm.com/docs/git-shortlog) or [git-blame[1\]](https://git-scm.com/docs/git-blame))
    # %ce:提交者电子邮件
    # %cE:committer email 
    # %cl:committer email local-part 
    # %cL:committer local-part 
    # %cd:committer date (format respects --date= option)
    # %cD:committer date, RFC2822 style
    # %cr:committer date, relative
    # %ct:committer date, UNIX timestamp
    # %ci:committer date, ISO 8601-like format
    # %cI:committer date, strict ISO 8601 format
    # %cs:committer date, short format (`YYYY-MM-DD`)
    # %s:message
    
    $ git log  --graph --pretty=format:'提交:-:%Cred%h%Creset;%Cgreen日期:-:%ar%Creset;%Cblue日期at:-:%at%Creset;%C(yellow)日期ai:-:%ai%Creset;%Cred日期ad:-:%ad%Creset;%Cblue作者an:-:%an%Creset;%C(yellow)作者aN:-:%aN%Creset;%Cgreen邮箱ce:-:%ce%Cresete:-:%e;sssss:-:%Cred%s%Creset;SSSS:-:%S;f-%f%n'
    </code></pre> </li> 
     </ul> 
     <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5367e7ea219c4e1dbc825ca9a50be2b6~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20210501160914927" style="zoom:50%;" /></p> 
     <h2>git shortlog--统计</h2> 
     <pre><code class="bash"># 默认以贡献者分组进行输出
    $ git shortlog
    
    # 列出提交者代码贡献数量, 打印作者和贡献数量
    $ git shortlog -sn==git shortlog -s -n
    $ git log --pretty='%an' | sort | uniq -c | sort -k1 -n -r | head -n 10
    #-s 参数省略每次 commit 的注释,仅仅返回一个简单的统计。
    #-n 参数按照 commit 数量从多到少的顺利对用户进行排序
    
    # 以提交贡献数量排序并打印出message
    $ git shortlog -n
    
    # 采用邮箱格式化的方式进行查看贡献度
    $ git shortlog -e
    </code></pre> 
     <pre><code class="bash">$ git shortlog -sn==git shortlog -s -n
    # &&
    $ git log --pretty='%an' | sort | uniq -c | sort -k1 -n -r | head -n 10
    </code></pre> 
     <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e4784d6f6d1c44c78be59c1ad847556f~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20210501162714228" style="zoom:50%;" /></p> 
     <h2>git blame--查提交</h2> 
     <pre><code class="bash"># 查看 README.md 文件的修改历史记录,包括时间、作者以及内容
    git blame README.md
    
    # 查看谁改动了 README.md 文件的 11行-12行
    git blame -L 11,12 README.md
    git blame -L 11 README.md   # 查看第11行以后
    
    # 显示完整的 hash 值
    git blame -l README.md
    
    # 显示修改的行数
    git blame -n README.md
    
    # 显示作者邮箱
    git blame -e README.md
    
    # 对参数进行一个组合查询
    git blame -enl -L 11 README.md
    </code></pre> 
     <h1>实战项目</h1> 
     <ul> 
      <li><p>首先我们是要做一个 【Git代码年报总结/年度代码账单】统计类项目,思路参考某宝的【花钱账单】或者某音乐云的【听歌账单】</p></li> 
      <li> <p>根据需求导出所需要的提交日志内容to本地文件</p> <pre><code class="bash">$ git log --date=iso --pretty=format:’"%h","%an","%ad","%s","%ce"’ >> ~/Desktop/commit.csv
    $ git log  --date=iso --pretty=format:’"%h","%ar","%at","%ai","%ad","%an","%aN","%ce","%e","%s","%S","%f"’ >> ~/Desktop/commit.csv
    $ git log --date=iso --pretty=format:’"项目-demo","%H","%h","%an","%ae","%at","%ad","%s"’ >> ~/Desktop/项目-demo.csv
    #%H:完整哈希%h:简短哈希%an:作者%ae:邮件 %at:作者日期,UNIX时间戳"%ad","%s"
    # 我们根据 git shortlog -sn,统计出排名,然后查看 Yangkai.Shen,yangkai.shen的代码行数
    $ git log --author="Yangkai.Shen\|yangkai.shen" --pretty=tformat: --numstat | awk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "增加的行数:%s 删除的行数:%s 总行数: %s\n",add,subs,loc }'>> ~/Desktop/项目-demo_code.csv
    # 增加的行数:133582 删除的行数:77429 总行数: 56153
    
    git log --author="Yangkai.Shen\|yangkai.shen" --pretty=tformat: --numstat | awk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "%s,%s,%s,%s\n",add,subs,loc,"Yangkai.Shen" }'>> ~/Desktop/项目-demo_code.csv
    #658  Yangkai.Shen
    #    57  yangkai.shen
    #     4  fxbin
    #     3  EchoCow
    #     2  chenqi
    #    1  yaodehuang
    #     1  76peter
    #     1  yidasanqian
    #     1  UndefinedDiary
    #     1  geek
    #     1  taffier
    #     1  yanshaoshuai
    </code></pre> </li> 
     </ul> 
     <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cdc3b3334a714628a5dd0a74399481a5~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20210502193902849" style="zoom:50%;" /></p> 
     <ul> 
      <li>利用Python 脚本循环读取作者,可以获取各个作者代码数量,组装为json,并导出,关键代码如下:</li> 
     </ul> 
     <pre><code class="python">if __name__ == '__main__':
        p = subprocess.Popen("git log --pretty='%an' | sort | uniq -c | sort -k1 -n -r | head -n 10", shell=True,
                             cwd='/Users/caining/Documents/demo/spring-boot-demo', stdout=subprocess.PIPE)
        out, err = p.communicate()
        value = str(out, encoding="utf-8")
        arr = value.split("\n")
        subprocess.Popen('printf [ >> ~/Desktop/项目-demo_code1.csv', shell=True,
                         cwd='/Users/caining/Documents/demo/spring-boot-demo')
        for a in arr:
            if len(a.split(" ")) >= 2:
                name = a.split(" ")[len(a.split(" ")) - 1]
                author = name
                subprocess.Popen(
                    'printf {\\"name\\":\\"' + author + '\\",\\"score\\":\\" >> ~/Desktop/项目-demo_code1.csv', shell=True,
                    cwd='/Users/caining/Documents/demo/spring-boot-demo')
                cmdd = 'git log --author=\'' + author + '\' --pretty=tformat: --numstat | awk \'{ add += $1 ; subs += $2 ' \
                                                        '; loc += $1 - $2 } END ' \
                                                        '{ printf "%s,%s,%s",add,subs,loc }\'>> ~/Desktop/项目-demo_code1.csv'
                p = subprocess.Popen(cmdd, shell=True, cwd='/Users/caining/Documents/demo/spring-boot-demo')
                out, err = p.communicate()
                subprocess.Popen('printf \\"}, >> ~/Desktop/项目-demo_code1.csv', shell=True,
                                          cwd='/Users/caining/Documents/demo/spring-boot-demo')
        subprocess.Popen('printf {}] >> ~/Desktop/项目-demo_code1.csv', shell=True,
                         cwd='/Users/caining/Documents/demo/spring-boot-demo')
                          
    </code></pre> 
     <ul> 
      <li>执行完结果如下:</li> 
     </ul> 
     <pre><code class="json">[
        {
            "name":"Yangkai.Shen",
            "score":"124483,76983,47500"
        },
        {
            "name":"yangkai.shen",
            "score":"9099,446,8653"
        },
        {
            "name":"fxbin",
            "score":"2902,216,2686"
        },
      ...
    ]
    </code></pre> 
     <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2a8439f34e60452dad05a0a81c98221d~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20210501211114654" style="zoom:50%;" /></p> 
     <ul> 
      <li>搭建springBoot 项目<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8a37c7721bc74c4a99c39e18d0bfd198~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20210502191400391" style="zoom:25%;" /></li> 
      <li>编写upload上传接口,并集成swagger2<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8d1208b6c19940d7aec7453d90bf0586~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20210502192113500" style="zoom:100%;" /></li> 
      <li>Upload to mysql 保证数据的完整性,对比后正确</li> 
     </ul> 
     <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e710ee1c6dbe49738b095e6545e1db15~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20210502185428210" style="zoom:50%;" /></p> 
     <ul> 
      <li>spring to mysql 关键代码如下</li> 
     </ul> 
     <pre><code class="java">try {
                InputStream inputStream = file.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
                String str = null;
                while((str = br.readLine()) != null){
                    String[] split = str.split("\n");
                    int len = split.length;
                    List<GitLog> gitLogList = new ArrayList<>();
                    for (int j = 0; j < len; j++) {
                        String[] split1 = split[j].split(",");
                        try {
                            String commit_id_long = split1[1];
                            GitLog oneById = gitDao.findOneById(commit_id_long);
                            GitLog gitLog = new GitLog()
                                .setProject(split1[0].replace("’", ""))
                                .setCommit_id_long(commit_id_long)
                                .setCommit_id(split1[2])
                                .setAuthor(split1[3])
                                .setEmail(split1[4])
                                .setTime_stamp(Long.valueOf(split1[5]))
                                .setTime(split1[6].replace("+0800", ""))
                                .setMessage(split1[7].replace("’", ""));
                            if (oneById != null) {
                                gitDao.update(gitLog);
                            } else {
                                gitLogList.add(gitLog);
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    gitDao.insertList(gitLogList);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
    </code></pre> 
     <ul> 
      <li>存入mysql 后,更加方便统计,除了基础代码量统计外,存入mysql 好处如下: 
       <ul> 
        <li>可以统计同一个用户不同author情况</li> 
        <li>可以统计不同email相同author情况</li> 
        <li>可以统计最晚时间</li> 
        <li>可以统计当日提交最多提交数等</li> 
        <li>重复author like this:<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/27b0c59db02243748aaf14f850bf2ba0~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20210502190448732" style="zoom:33%;" /></li> 
        <li>其他统计(全年某日最多提交次数、全年总提交次数、全年提交次数排名、全年某日最晚提交(加班最晚时间点提交)、全年加班提交次数等统计)<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f7a5e0bb2fdd416dadeb3d90e9d61271~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20210506154102885" style="zoom: 50%;" /></li> 
       </ul> </li> 
     </ul> 
     <pre><code class="sql">SELECT COUNT(*) as 总提交次数 FROM git_log ORDER BY time_stamp ASC;
    SELECT DATE_FORMAT(time,"%Y年%m月") AS 月份,COUNT(*) as 提交次数 FROM git_log GROUP BY DATE_FORMAT(time,"%Y年%m月") 
    SELECT DATE_FORMAT(time,"%Y年%m月%d日") AS 日期,COUNT(*) as 提交次数 FROM git_log GROUP BY DATE_FORMAT(time,"%Y年%m月%d日") ORDER BY 提交次数 DESC; 
    --sql 其他相关脚本略。。。以上sql脚本 只是举个栗子,进行中,这里不影响本篇文章。
    </code></pre> 
     <ul> 
      <li><p>总体来说,利用 sql 超强统计能力+git-log 本身代码统计能力,可以做到我们想做的项目:【Git代码年报总结/年度代码账单】</p></li> 
      <li><p>作者个人基本脚本以及简单后端初步形成,后面打算结合前端界面,前端负责<strong>炫酷</strong>,完成本项目,项目规划中,感兴趣同学欢迎一起讨论;come on baby!</p></li> 
      <li><p>到此项目后端以及准备阶段脚本已初步形成,差具体接口开发以及统计</p></li> 
     </ul> 
     <h1>总结</h1> 
     <ul> 
      <li><p>git log 基础知识,format 很强大,样式也很多样</p></li> 
      <li><p>git shortlog 基础知识&git blame 基础知识</p></li> 
      <li><p>项目实战结合了mysql+spring boot,方便统计</p></li> 
      <li><p>git 命令导出脚本运用了python 方便循环导出作者所写代码数量</p></li> 
      <li><p>mysql 其他脚本进行中</p></li> 
      <li><p>后期小程序或者web界面搭建进行中</p></li> 
      <li><p>讨论@QiShare</p></li> 
     </ul> 
     <h1>引用</h1> 
     <blockquote> 
      <ul> 
       <li>https://git-scm.com/docs/git-log</li> 
       <li>https://git-scm.com/docs/git-blame</li> 
       <li>https://git-scm.com/docs/git-shortlog</li> 
       <li>https://git-scm.com/docs/gitattributes</li> 
       <li>本项目后端代码&&项目统计源参考:https://github.com/xkcoding/spring-boot-demo </li> 
      </ul> 
     </blockquote> 
    </article>
                                </div>
                            </div>
                        </div>
                        <!--PC和WAP自适应版-->
                        <div id="SOHUCS" sid="1642196852658987008"></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">你可能感兴趣的:(深入浅出git-log之代码统计实战)</h4>
            <div id="paradigm-article-related">
                <div class="recommend-post mb30">
                    <ul class="widget-links">
                        <li><a href="/article/1950233199242178560.htm"
                               title="x86-64汇编语言训练程序与实战" target="_blank">x86-64汇编语言训练程序与实战</a>
                            <span class="text-muted">十除以十等于一</span>
    
                            <div>本文还有配套的精品资源,点击获取简介:汇编语言是一种低级语言,与机器代码紧密相关,特别适用于编写系统级代码及性能要求高的应用。nasm编译器是针对x86和x86-64架构的汇编语言编译器,支持多种语法风格和指令集。项目Euler提供数学和计算机科学问题,鼓励编程技巧应用,前100个问题的答案可共享。x86-64架构扩展了寄存器数量并引入新指令,提升了数据处理效率。学习汇编语言能够深入理解计算机底层</div>
                        </li>
                        <li><a href="/article/1950231254427299840.htm"
                               title="我不懂什么是爱,但我给你全部我拥有的" target="_blank">我不懂什么是爱,但我给你全部我拥有的</a>
                            <span class="text-muted">香尧</span>
    
                            <div>因为怕黑,所以愿意陪伴在夜中行走的人,给他一点点的安全感。因为渴望温柔与爱,所以愿意为别的孩子付出爱与温柔。因为曾遭受侮辱和伤害,所以不以同样的方式施于其他人。如果你向别人出之以利刃,对方还了你爱与包容,真的不要感激他,真的不要赞美他。每一个被人伤害过的人心里都留下了一颗仇恨的种子,他也会想要有一天以眼还眼,以牙还牙。但他未让那颗种子生根发芽,他用一把心剑又一次刺向他自己,用他血荐仇恨,开出一朵温</div>
                        </li>
                        <li><a href="/article/1950228031524106240.htm"
                               title="Spring进阶 - SpringMVC实现原理之DispatcherServlet处理请求的过程" target="_blank">Spring进阶 - SpringMVC实现原理之DispatcherServlet处理请求的过程</a>
                            <span class="text-muted">倾听铃的声</span>
    <a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                            <div>前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet处理请求的过程的源码解析。本文是第二篇:DispatcherServlet处理请求的过程的源码解析。@pdaiSpring进阶-SpringMVC实现原理之DispatcherServlet处理请求的</div>
                        </li>
                        <li><a href="/article/1950226391064702976.htm"
                               title="Flowable 实战落地核心:选型决策与坑点破解" target="_blank">Flowable 实战落地核心:选型决策与坑点破解</a>
                            <span class="text-muted">练习时长两年半的程序员小胡</span>
    <a class="tag" taget="_blank" href="/search/Flowable/1.htm">Flowable</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%BC%95%E6%93%8E%E5%AE%9E%E6%88%98%E6%8C%87%E5%8D%97/1.htm">流程引擎实战指南</a><a class="tag" taget="_blank" href="/search/%E4%BD%8E%E4%BB%A3%E7%A0%81/1.htm">低代码</a><a class="tag" taget="_blank" href="/search/BPMN/1.htm">BPMN</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%BC%95%E6%93%8E/1.htm">流程引擎</a><a class="tag" taget="_blank" href="/search/flowable/1.htm">flowable</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                            <div>在企业级流程引擎的落地过程中,选型的准确性和坑点的预见性直接决定项目成败。本文聚焦Flowable实战中最关键的“选型决策”与“常见坑点”,结合真实项目经验,提供可落地的解决方案。一、流程引擎选型:从业务本质出发1.1选型的三大核心维度企业在选择流程引擎时,需避免陷入“技术崇拜”,应回归业务本质。评估Flowable是否适用,可从三个维度判断:业务复杂度若流程涉及动态审批链(如按金额自动升级审批)</div>
                        </li>
                        <li><a href="/article/1950226390070652928.htm"
                               title="Flowable 高级扩展:自定义元素与性能优化实战" target="_blank">Flowable 高级扩展:自定义元素与性能优化实战</a>
                            <span class="text-muted">练习时长两年半的程序员小胡</span>
    <a class="tag" taget="_blank" href="/search/Flowable/1.htm">Flowable</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%BC%95%E6%93%8E%E5%AE%9E%E6%88%98%E6%8C%87%E5%8D%97/1.htm">流程引擎实战指南</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%9B%BE/1.htm">流程图</a><a class="tag" taget="_blank" href="/search/flowable/1.htm">flowable</a><a class="tag" taget="_blank" href="/search/BPMN/1.htm">BPMN</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%BC%95%E6%93%8E/1.htm">流程引擎</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                            <div>在前五篇文章中,我们从基础概念、流程设计、API实战、SpringBoot集成,到外部系统协同,逐步构建了Flowable的应用体系。但企业级复杂场景中,原生功能往往难以满足定制化需求——比如需要特殊的审批规则网关、与决策引擎联动实现动态路由,或是在高并发场景下优化流程引擎性能。本文将聚焦Flowable的高级扩展能力,详解如何自定义流程元素、集成规则引擎,并掌握大型系统中的性能调优策略。一、自定</div>
                        </li>
                        <li><a href="/article/1950225532016717824.htm"
                               title="恩小希美食成长日记之118:“摘星女神”王亚平归来,她的婚姻,治愈了多少职场女性的痛" target="_blank">恩小希美食成长日记之118:“摘星女神”王亚平归来,她的婚姻,治愈了多少职场女性的痛</a>
                            <span class="text-muted">恩小希</span>
    
                            <div>上周最为热闹的消息,无疑是神舟13号的三位航天英雄回来了.其中,最为瞩目的就是王亚平.她是我国首位进行太空行走的女航天员,也是为自己小女儿“摘星星的妈妈”。作为最受关注的职场妈妈,王亚平之所以能够成就这样一番事业,跟背后默默支持她的丈夫--赵鹏分不开。01王亚平1980年出生于山东烟台。父母都是地地道道的农民。王亚平这个姑娘从小体质好,一直练习长跑。高中时,空军来家乡招收女飞行员,作为体育班里唯一</div>
                        </li>
                        <li><a href="/article/1950225020974329856.htm"
                               title="2019-07-30" target="_blank">2019-07-30</a>
                            <span class="text-muted">西域社群</span>
    
                            <div>天地之间,分外热闹。望热浪涛涛,引无数帅哥竞开撩,夕窈窕淑女皆露腰。一代天骄,群里热闹。不见美女露妖娆,唯见帅哥手机忙,唐诗宋词,广为流传,惜字如金,声情并茂。君悉吾析,今日之局有套路,昨日之生惹人恋。聚往矣,数风流人物还看今朝!!</div>
                        </li>
                        <li><a href="/article/1950222094314827776.htm"
                               title="【老房翻新】92平轻奢简约风,将和谐之美融入空间!" target="_blank">【老房翻新】92平轻奢简约风,将和谐之美融入空间!</a>
                            <span class="text-muted">没人比我更懂装修</span>
    
                            <div>在客厅空间中,设计师于冷静的空间基调中选用了层次感丰富的黄蓝色作为主要跳色,搭配黑白纹理的地毯与单椅,为空间增加了时尚摩登的气息。艺术感的单品突出点亮了空间,绿植的点缀、留白的软饰则增强了空间的呼吸性。点击此处添加图片说明文字点击此处添加图片说明文字设计师力求使每一处的设立都在空间中达到相互间的呼应与制衡,将艺术的跃动之美赋于空间之上,也将空间的和谐之美融于生活之中。点击此处添加图片说明文字点击此</div>
                        </li>
                        <li><a href="/article/1950219924043526144.htm"
                               title="二十四节气组诗 谷雨" target="_blank">二十四节气组诗 谷雨</a>
                            <span class="text-muted">离陌_6639</span>
    
                            <div>图片来源网络,若侵犯了你的权益,请联系我删除6.谷雨文/离陌背上行囊背上如行囊的我从此任行程马不停蹄今天家乡的田野春雨快马加鞭播下希望的种子观音不语目送着我和夏天一道在观音山出关图片来源网络,若侵犯了你的权益,请联系我删除你好啊,我是离陌,已然在懵懂中走过了16年的岁月,为了珍惜当下的每一秒,所以立志做一名终身学习者。文学对于我来说是一种信仰,诗歌是我的生命。人生之道,四通八达,即入文学,自当持之</div>
                        </li>
                        <li><a href="/article/1950218946015719424.htm"
                               title="图论算法经典题目解析:DFS、BFS与拓扑排序实战" target="_blank">图论算法经典题目解析:DFS、BFS与拓扑排序实战</a>
                            <span class="text-muted">周童學</span>
    <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/1.htm">数据结构与算法</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88/1.htm">深度优先</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E8%AE%BA/1.htm">图论</a>
                            <div>图论算法经典题目解析:DFS、BFS与拓扑排序实战图论问题是算法面试中的高频考点,本博客将通过四道LeetCode经典题目(均来自"Top100Liked"题库),深入讲解图论的核心算法思想和实现技巧。涵盖DFS、BFS、拓扑排序和前缀树等知识点,每道题配有Java实现和易错点分析。1.岛屿数量(DFS遍历)问题描述给定一个由'1'(陆地)和'0'(水)组成的二维网格,计算岛屿的数量。岛屿由水平或</div>
                        </li>
                        <li><a href="/article/1950218817753903104.htm"
                               title="【项目实战】 容错机制与故障恢复:保障系统连续性的核心体系" target="_blank">【项目实战】 容错机制与故障恢复:保障系统连续性的核心体系</a>
                            <span class="text-muted">本本本添哥</span>
    <a class="tag" taget="_blank" href="/search/004/1.htm">004</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E7%A0%94%E6%95%88%E4%B8%8EDevOps%E8%BF%90%E7%BB%B4%E5%B7%A5%E5%85%B7%E9%93%BE/1.htm">研效与DevOps运维工具链</a><a class="tag" taget="_blank" href="/search/002/1.htm">002</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91%E8%83%BD%E5%8A%9B/1.htm">进阶开发能力</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                            <div>在分布式系统中,硬件故障、网络波动、软件异常等问题难以避免。容错机制与故障恢复的核心目标是:通过主动检测故障、自动隔离风险、快速转移负载、重建数据一致性,最大限度减少故障对业务的影响,保障系统“持续可用”与“数据不丢失”。以下从核心机制、实现方式、典型案例等维度展开说明。一、故障检测:及时发现异常节点故障检测是容错的第一步,需通过多维度手段实时感知系统组件状态,确保故障被快速识别。1.健康检查与心</div>
                        </li>
                        <li><a href="/article/1950218399846035456.htm"
                               title="营销活动-大转盘" target="_blank">营销活动-大转盘</a>
                            <span class="text-muted">無缺520</span>
    
                            <div>写在前面最近,首先营销活动工具这块我是再熟悉不过了。曾经做了不下20个活动工具,然后通过监控活动数据反推活动的好坏。文中主要讲解幸运大转盘营销工具一.大转盘定义大转盘是比较常见的营销活动工具,它是通过消费者用户控制【开始/停止】操作获得奖品物品。用户在不知道自己能获得什么奖品的条件下,然后通过抽奖,大概率的获得未知的奖品。类似最近流行的盲盒玩法。二.为什么做大转盘大转盘是最常用的抽奖类的活动工具之</div>
                        </li>
                        <li><a href="/article/1950218314064130048.htm"
                               title="Java并发核心:线程池使用技巧与最佳实践! | 多线程篇(五)" target="_blank">Java并发核心:线程池使用技巧与最佳实践! | 多线程篇(五)</a>
                            <span class="text-muted">bug菌¹</span>
    <a class="tag" taget="_blank" href="/search/Java%E5%AE%9E%E6%88%98%28%E8%BF%9B%E9%98%B6%E7%89%88%29/1.htm">Java实战(进阶版)</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Java%E9%9B%B6%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8/1.htm">Java零基础入门</a><a class="tag" taget="_blank" href="/search/Java%E5%B9%B6%E5%8F%91/1.htm">Java并发</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E6%B1%A0/1.htm">线程池</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%AF%87/1.htm">多线程篇</a>
                            <div>本文收录于「Java进阶实战」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!环境说明:Windows10+IntelliJIDEA2021.3.2+Jdk1.8本文目录前言摘要正文何为线程池?为什么需要线程池?线程池的好处线程池使用场景如何创建线程池?线程池的常见配置源码解析案例分享案例代码演示案例运行</div>
                        </li>
                        <li><a href="/article/1950217304876838912.htm"
                               title="STM32入门之TIM基本定时器" target="_blank">STM32入门之TIM基本定时器</a>
                            <span class="text-muted">嵌入式白话</span>
    <a class="tag" taget="_blank" href="/search/STM32%E5%85%A5%E9%97%A8%E5%AD%A6%E4%B9%A0/1.htm">STM32入门学习</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a>
                            <div>一、定时器简介定时器是嵌入式系统中的关键外设之一,它可以用于生成精确的延时、周期性中断、PWM波形生成等功能。在STM32F1系列单片机中,定时器不仅能为系统提供精确的时钟,还支持外部事件的捕获以及信号输出。对于定时器的功能,我们可以通过一个生活中非常常见的例子来形象地描述:微波炉的定时器。想象你正在使用微波炉加热食物。在微波炉里,定时器的作用就是帮助你控制食物加热的时间。当你设置了加热时间后,定</div>
                        </li>
                        <li><a href="/article/1950215540215705600.htm"
                               title="JVM 内存分配与回收策略:从对象创建到内存释放的全流程" target="_blank">JVM 内存分配与回收策略:从对象创建到内存释放的全流程</a>
                            <span class="text-muted"></span>
    
                            <div>在JVM的运行机制中,内存分配与回收策略是连接对象生命周期与垃圾收集器的桥梁。它决定了对象在堆内存中的创建位置、存活过程中的区域迁移,以及最终被回收的时机。合理的内存分配策略能减少GC频率、降低停顿时间,是优化Java应用性能的核心环节。本文将系统解析JVM的内存分配规则、对象晋升机制,以及实战中的内存优化技巧。一、对象优先在Eden区分配:新生代的“临时缓冲区”大多数情况下,Java对象在新生代</div>
                        </li>
                        <li><a href="/article/1950215474298023936.htm"
                               title="收集落叶" target="_blank">收集落叶</a>
                            <span class="text-muted">申文秀</span>
    
                            <div>走啊,一起走,我们一起去收集落叶落叶的模样早已映入我的眼帘耳边已响起叶子落在地上的“沙沙”声走啊,去收集落叶,落叶是我们的回忆落叶的样子如此俏皮心形是写给秋姑娘的情书圆形是秋姑娘送给大地的礼物三角形是秋姑娘礼服上的碎珠片哟!秋姑娘举行的盛装宴会开始了你看!秋之宴会开始了松叶缓缓飘落在空中跳起了华尔兹枫叶跳着芭蕾兜着圈子盘旋而下银杏叶是杂技演员,正“七上八下”地翻跟头每个落叶都在宴会上展示自己最美妙</div>
                        </li>
                        <li><a href="/article/1950215091567783936.htm"
                               title="婴童医话(五百六十)" target="_blank">婴童医话(五百六十)</a>
                            <span class="text-muted">妙手柯楠</span>
    
                            <div>探天地清浊之源,察阴阳顺逆之机。“乳食过饱蓄胃中,乳片不化吐频频,身热面黄腹膨胀。”伤乳吐者,因乳食过饱,停蓄胃中,以致运化不及,吐多乳片,犹如物盛满而上溢也。其证身热面黄,肚腹膨胀。治宜化其宿乳,安胃和中,节其乳食,自然止也。“过食伤胃腹胀热,恶食口臭吐酸粘,眼胞虚浮身潮热。”伤食吐者,因小儿饮食无节,过食油腻、面食等物,以致壅塞中脘而成也,其证肚腹胀热,恶食口臭,频吐酸粘,眼胞虚浮,身体潮热。</div>
                        </li>
                        <li><a href="/article/1950213690397618176.htm"
                               title="【阳光️️☀️苑长 幸福365】7月9日《就此刻确知》" target="_blank">【阳光️️☀️苑长 幸福365】7月9日《就此刻确知》</a>
                            <span class="text-muted">阳光苑长</span>
    
                            <div>音频文字原创|阳光苑长图片发自App一夜的梦境,情景相当的壮烈,那是前前后后多个情节的叠加,那是因为极其在意在正义的,完满的,在早已经确认——万古之先已经确认了一切美好的事物当中。当有假象,当有一些不好的势力,试图想去破坏夺取的时候,在梦境中一直得力的征战,为着身边最挚爱的朋友,为他,为所有美好的事业而守望。守望,英文叫做watcher,就是观望者。图片发自App在这个毫不奇怪,事实上一直发生的征</div>
                        </li>
                        <li><a href="/article/1950212284320116736.htm"
                               title="漫步,跳出藩篱" target="_blank">漫步,跳出藩篱</a>
                            <span class="text-muted">张巧金沙</span>
    
                            <div>最近的教学,倍感不爽。一为这国庆之假,把这课上得支离破碎的。放假前,上了四天课,但我却只上了三天,9月30日,我工作室在搞活动,全天的活动,课当然未能上。10月8日学生回校,上了两天课,学生又放回家了。就觉得学生刚有点状态,又回去逍遥去了。感觉吧,教学内容也不敢大胆甩开膀子去教学,所以呀,这教学内容还真上不走,而且学生学下来效果特差。这不,国庆放假前的一个周,测试了两次,均为第一单元,是自考试以来</div>
                        </li>
                        <li><a href="/article/1950210758742700032.htm"
                               title="用好考评指挥棒 答好时代新答卷" target="_blank">用好考评指挥棒 答好时代新答卷</a>
                            <span class="text-muted">天才码字选手</span>
    
                            <div>民之所望,施政所向。而群众评议正是检验发展质量和人民获得感的试金石。究竟是“走过场”、“栽盆景”,还是俯下身子,甘当为民服务的“孺子牛”或撸起袖子,做担当作为的“拓荒牛”,群众自是看得清清楚楚,最有发言权。因而也有这样一句话:干部脚下沾多少泥土,群众心里就有多少感情。民意不可或缺,群众的意见不能少。新时代下,要最大程度发挥群众评议在激励干部担当作为中的效能,才能汇聚起推动高质量发展的磅礴之力,答好</div>
                        </li>
                        <li><a href="/article/1950208352168505344.htm"
                               title="总会有一道光之利刃 能划破暗夜长空!" target="_blank">总会有一道光之利刃 能划破暗夜长空!</a>
                            <span class="text-muted">一滴Sea</span>
    
                            <div>图片发自App一帆风顺的人生很难产生什么顿悟,只有扎扎心,人才会醒悟,所以人生路上偶尔的风浪冲突,都可以怡情,和着一杯清茶一品人生的滋味。图片发自App中国人的传统家教就是:优点不鼓励,心知肚明就好,有缺点一定要细细碎碎仔细倒嚼,然后编织成一张唠叨之网把家人孩子都包裹的严严实实,苦口婆心地说:“走大街的人,没有人像我这样说你,你该感恩才是!”图片发自App唉!真是让人一口长气无处抒发,多少孩子因为</div>
                        </li>
                        <li><a href="/article/1950207853105049600.htm"
                               title="【Coze搞钱实战】3. 避坑指南:对话流设计中的6个致命错误(真实案例)" target="_blank">【Coze搞钱实战】3. 避坑指南:对话流设计中的6个致命错误(真实案例)</a>
                            <span class="text-muted">AI_DL_CODE</span>
    <a class="tag" taget="_blank" href="/search/Coze%E5%B9%B3%E5%8F%B0/1.htm">Coze平台</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%AF%9D%E6%B5%81%E8%AE%BE%E8%AE%A1/1.htm">对话流设计</a><a class="tag" taget="_blank" href="/search/%E5%AE%A2%E6%9C%8DBot%E9%81%BF%E5%9D%91/1.htm">客服Bot避坑</a><a class="tag" taget="_blank" href="/search/%E7%94%A8%E6%88%B7%E6%B5%81%E5%A4%B1/1.htm">用户流失</a><a class="tag" taget="_blank" href="/search/%E5%B0%81%E5%8F%B7%E9%A3%8E%E9%99%A9/1.htm">封号风险</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E5%AE%A2%E6%9C%8D%E9%85%8D%E7%BD%AE/1.htm">智能客服配置</a><a class="tag" taget="_blank" href="/search/%E6%95%85%E9%9A%9C%E4%BF%AE%E5%A4%8D%E6%8C%87%E5%8D%97/1.htm">故障修复指南</a>
                            <div>摘要:对话流设计是智能客服Bot能否落地的核心环节,直接影响用户体验与业务安全。本文基于50+企业Bot部署故障分析,聚焦导致用户流失、投诉甚至封号的6大致命错误:无限循环追问、人工移交超时、敏感词过滤缺失、知识库冲突、未处理否定意图、跨平台适配失败。通过真实案例拆解每个错误的表现形式、技术根因及工业级解决方案,提供可直接复用的Coze配置代码、工作流模板和检测工具。文中包含对话流健康度检测工具使</div>
                        </li>
                        <li><a href="/article/1950204266194989056.htm"
                               title="今天的彭格列依然被世界游戏吓得瑟瑟发抖呢" target="_blank">今天的彭格列依然被世界游戏吓得瑟瑟发抖呢</a>
                            <span class="text-muted">云染舒倦</span>
    
                            <div>前言有一天,有一个白兰的大魔王想要毁灭世界,创世者非常不高兴,于是,创始者用吞噬一切,包容一切的大空(泽田纲吉)、捉摸不定的雾(六道骸)、孤高的浮云(云雀恭弥)、愤怒的忠岚(狱寺隼人)、晕染一切的雨(山本武)、守护之雷(蓝波)、热血之晴(晴川了平)创造了七位拯救世界的勇士(用属性制造勇士),让他们跟白兰对抗。。。[白兰的力量是游戏,于是要打败他,只要同样在世界布置的游戏中,赢过白兰就行了~]图片发</div>
                        </li>
                        <li><a href="/article/1950202936449626112.htm"
                               title="Qwen3 大模型实战:使用 vLLM 部署与函数调用(Function Call)全攻略" target="_blank">Qwen3 大模型实战:使用 vLLM 部署与函数调用(Function Call)全攻略</a>
                            <span class="text-muted">曦紫沐</span>
    <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E9%83%A8%E7%BD%B2/1.htm">大模型部署</a><a class="tag" taget="_blank" href="/search/Qwen3/1.htm">Qwen3</a><a class="tag" taget="_blank" href="/search/vLLM/1.htm">vLLM</a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0%E8%B0%83%E7%94%A8/1.htm">函数调用</a>
                            <div>文章摘要本文将带你从零开始,深入掌握如何使用Qwen3-8B大语言模型,结合vLLM进行高性能部署,并通过函数调用(FunctionCall)实现模型与外部工具的智能联动。我们将详细讲解部署命令、调用方式、代码示例及实际应用场景,帮助你快速构建基于Qwen3的智能应用。一、Qwen3简介与部署环境准备Qwen3是通义千问系列的最新一代大语言模型,具备强大的自然语言理解和生成能力,尤其在函数调用、工</div>
                        </li>
                        <li><a href="/article/1950202938265759744.htm"
                               title="你竟然还在用克隆删除?Conda最新版rename命令全攻略!" target="_blank">你竟然还在用克隆删除?Conda最新版rename命令全攻略!</a>
                            <span class="text-muted">曦紫沐</span>
    <a class="tag" taget="_blank" href="/search/Python%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/1.htm">Python基础知识</a><a class="tag" taget="_blank" href="/search/conda/1.htm">conda</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83%E7%AE%A1%E7%90%86/1.htm">虚拟环境管理</a>
                            <div>文章摘要Conda虚拟环境管理终于迎来革命性升级!本文揭秘Conda4.9+版本新增的rename黑科技,彻底告别传统“克隆+删除”的繁琐操作。从命令解析到实战案例,手把手教你如何安全高效地重命名Python虚拟环境,附带版本检测、环境迁移、故障排查等进阶技巧,助你提升开发效率10倍!一、颠覆认知:Conda居然自带重命名功能?很多开发者仍停留在“Conda无法直接重命名环境”的认知阶段,实际上自</div>
                        </li>
                        <li><a href="/article/1950199576451411968.htm"
                               title="20210517坚持分享53天读书摘抄笔记 非暴力沟通——爱自己" target="_blank">20210517坚持分享53天读书摘抄笔记 非暴力沟通——爱自己</a>
                            <span class="text-muted">f79a6556cb19</span>
    
                            <div>让生命之花绽放在赫布·加德纳(HerbGardner)编写的《一千个小丑》一剧中,主人公拒绝将他12岁的外甥交给儿童福利院。他郑重地说道:“我希望他准确无误地知道他是多么特殊的生命,要不,他在成长的过程中将会忽视这一点。我希望他保持清醒,并看到各种奇妙的可能。我希望他知道,一旦有机会,排除万难给世界一点触动是值得的。我还希望他知道为什么他是一个人,而不是一张椅子。”然而,一旦负面的自我评价使我们看</div>
                        </li>
                        <li><a href="/article/1950198270882017280.htm"
                               title="《UNIX网络编程卷1:套接字联网API》第8章:基本UDP套接字编程深度解析" target="_blank">《UNIX网络编程卷1:套接字联网API》第8章:基本UDP套接字编程深度解析</a>
                            <span class="text-muted"></span>
    
                            <div>《UNIX网络编程卷1:套接字联网API》第8章:基本UDP套接字编程深度解析(8000字图文实战)一、UDP协议核心特性与编程模型1.1UDP协议设计哲学UDP(UserDatagramProtocol)是面向无连接的传输层协议(图1),其核心特征包括:无连接通信:无需三次握手,直接发送数据报尽最大努力交付:不保证可靠性、不维护连接状态报文边界保留:接收方读取的数据与发送方写入完全一致低开销高效</div>
                        </li>
                        <li><a href="/article/1950197540850823168.htm"
                               title="好学生引路人2021年6月21日星期一" target="_blank">好学生引路人2021年6月21日星期一</a>
                            <span class="text-muted">一米阳光2025年</span>
    
                            <div>5组21号董文娟(甘肃省白银市靖远县小芦小学语文教师)的打卡记录:1.听录音,读原文:《论语·学政第二》之2.42[爱心]2.听分享,写心得:认真聆听了好几遍辛教授的讲解《为政第二》2.4后,深有感触,孔子说自己的学习是有所自觉的学习,而不是盲目的学习。自己最向往的志向,三十而立,坚定的自守,立于自己的志向,我感觉我自己正处于这个“三十而立”的年龄,能真正达到一切游刃有余,财务自由,志向远大的生命</div>
                        </li>
                        <li><a href="/article/1950197388496924672.htm"
                               title="魔搭平台实战:手把手教你训练SDXL模型,解锁AI绘画新纪元" target="_blank">魔搭平台实战:手把手教你训练SDXL模型,解锁AI绘画新纪元</a>
                            <span class="text-muted">Liudef06小白</span>
    <a class="tag" taget="_blank" href="/search/%E7%89%B9%E6%AE%8A%E4%B8%93%E6%A0%8F/1.htm">特殊专栏</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/AI%E4%BD%9C%E7%94%BB/1.htm">AI作画</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a>
                            <div>魔搭平台实战:手把手教你训练SDXL模型,解锁AI绘画新纪元随着多模态AI技术的爆发式发展,StableDiffusionXL(SDXL)等文生图模型正在彻底重塑创意产业工作流。本文将深入解析如何在魔搭平台高效训练SDXL模型,并探讨AI绘画技术对设计行业的革命性影响。一、SDXL模型架构解析1.1双文本编码器设计SDXL采用双文本编码器架构,显著提升提示词理解能力:#SDXL文本编码器结构示意c</div>
                        </li>
                        <li><a href="/article/1950195499067830272.htm"
                               title="量子计算解决气候变化:科学家找到了新方法" target="_blank">量子计算解决气候变化:科学家找到了新方法</a>
                            <span class="text-muted">大力出奇迹985</span>
    <a class="tag" taget="_blank" href="/search/%E9%87%8F%E5%AD%90%E8%AE%A1%E7%AE%97/1.htm">量子计算</a>
                            <div>气候变化已成为全球面临的严峻挑战,传统计算方法在应对与之相关的复杂问题时存在诸多局限。而量子计算作为新兴技术,为解决气候变化难题带来曙光。本文深入剖析科学家利用量子计算应对气候变化的新方法。量子计算凭借独特的量子比特与量子特性,在加速气候模型计算、优化模型参数、预测极端天气事件等方面展现出巨大优势。同时,在可再生能源整合、电网管理、碳捕获等实际应用场景中也发挥着重要作用。尽管目前面临硬件和算法等方</div>
                        </li>
                                    <li><a href="/article/14.htm"
                                           title="Spring4.1新特性——综述" target="_blank">Spring4.1新特性——综述</a>
                                        <span class="text-muted">jinnianshilongnian</span>
    <a class="tag" taget="_blank" href="/search/spring+4.1/1.htm">spring 4.1</a>
                                        <div>目录 
    Spring4.1新特性——综述 
    Spring4.1新特性——Spring核心部分及其他 
    Spring4.1新特性——Spring缓存框架增强 
    Spring4.1新特性——异步调用和事件机制的异常处理 
    Spring4.1新特性——数据库集成测试脚本初始化 
    Spring4.1新特性——Spring MVC增强 
    Spring4.1新特性——页面自动化测试框架Spring MVC T</div>
                                    </li>
                                    <li><a href="/article/141.htm"
                                           title="Schema与数据类型优化" target="_blank">Schema与数据类型优化</a>
                                        <span class="text-muted">annan211</span>
    <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                        <div>
    
    目前商城的数据库设计真是一塌糊涂,表堆叠让人不忍直视,无脑的架构师,说了也不听。
    在数据库设计之初,就应该仔细揣摩可能会有哪些查询,有没有更复杂的查询,而不是仅仅突出
    很表面的业务需求,这样做会让你的数据库性能成倍提高,当然,丑陋的架构师是不会这样去考虑问题的。
    
    选择优化的数据类型
     1 更小的通常更好
       更小的数据类型通常更快,因为他们占用更少的磁盘、内存和cpu缓存,</div>
                                    </li>
                                    <li><a href="/article/268.htm"
                                           title="第一节 HTML概要学习" target="_blank">第一节 HTML概要学习</a>
                                        <span class="text-muted">chenke</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/css/1.htm">css</a>
                                        <div>第一节 HTML概要学习 
     
    1. 什么是HTML 
     
    HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,它规定了自己的语法规则,用来表示比“文本”更丰富的意义,比如图片,表格,链接等。浏览器(IE,FireFox等)软件知道HTML语言的语法,可以用来查看HTML文档。目前互联网上的绝大部分网页都是使用HTML编写的。 
     
    打开记事本 输入一下内</div>
                                    </li>
                                    <li><a href="/article/395.htm"
                                           title="MyEclipse里部分习惯的更改" target="_blank">MyEclipse里部分习惯的更改</a>
                                        <span class="text-muted">Array_06</span>
    <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                        <div>继续补充中---------------------- 
     
     
     
    1.更改自己合适快捷键windows-->prefences-->java-->editor-->Content Assist--> 
         Activation triggers for java的右侧“.”就可以改变常用的快捷键 
     
    选中 Text </div>
                                    </li>
                                    <li><a href="/article/522.htm"
                                           title="近一个月的面试总结" target="_blank">近一个月的面试总结</a>
                                        <span class="text-muted">cugfy</span>
    <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                                        <div>本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46753275 
     
     
    前言 
          打算换个工作,近一个月面试了不少的公司,下面将一些面试经验和思考分享给大家。另外校招也快要开始了,为在校的学生提供一些经验供参考,希望都能找到满意的工作。 </div>
                                    </li>
                                    <li><a href="/article/649.htm"
                                           title="HTML5一个小迷宫游戏" target="_blank">HTML5一个小迷宫游戏</a>
                                        <span class="text-muted">357029540</span>
    <a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a>
                                        <div>     通过《HTML5游戏开发》摘抄了一个小迷宫游戏,感觉还不错,可以画画,写字,把摘抄的代码放上来分享下,喜欢的同学可以拿来玩玩! 
     
    <html> 
     <head> 
     <title>创建运行迷宫</title> 
     <script type="text/javascript"</div>
                                    </li>
                                    <li><a href="/article/776.htm"
                                           title="10步教你上传githib数据" target="_blank">10步教你上传githib数据</a>
                                        <span class="text-muted">张亚雄</span>
    <a class="tag" taget="_blank" href="/search/git/1.htm">git</a>
                                        <div>官方的教学还有其他博客里教的都是给懂的人说得,对已我们这样对我大菜鸟只能这么来锻炼,下面先不玩什么深奥的,先暂时用着10步干净利索。等玩顺溜了再用其他的方法。 
    操作过程(查看本目录下有哪些文件NO.1)ls 
    (跳转到子目录NO.2)cd+空格+目录 
    (继续NO.3)ls 
    (匹配到子目录NO.4)cd+ 目录首写字母+tab键+(首写字母“直到你所用文件根就不再按TAB键了”) 
    (查看文件</div>
                                    </li>
                                    <li><a href="/article/903.htm"
                                           title="MongoDB常用操作命令大全" target="_blank">MongoDB常用操作命令大全</a>
                                        <span class="text-muted">adminjun</span>
    <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E5%91%BD%E4%BB%A4/1.htm">操作命令</a>
                                        <div>成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作。输入help可以看到基本操作命令,只是MongoDB没有创建数据库的命令,但有类似的命令   如:如果你想创建一个“myTest”的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection('user')),这样就可以创建一个名叫“myTest”的数据库。   
    一</div>
                                    </li>
                                    <li><a href="/article/1030.htm"
                                           title="bat调用jar包并传入多个参数" target="_blank">bat调用jar包并传入多个参数</a>
                                        <span class="text-muted">aijuans</span>
    
                                        <div>下面的主程序是通过eclipse写的: 
    1.在Main函数接收bat文件传递的参数(String[] args) 
     如:   String ip =args[0];          String user=args[1];       &nbs</div>
                                    </li>
                                    <li><a href="/article/1157.htm"
                                           title="Java中对类的主动引用和被动引用" target="_blank">Java中对类的主动引用和被动引用</a>
                                        <span class="text-muted">ayaoxinchao</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%B8%BB%E5%8A%A8%E5%BC%95%E7%94%A8/1.htm">主动引用</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E7%B1%BB%E7%9A%84%E5%BC%95%E7%94%A8/1.htm">对类的引用</a><a class="tag" taget="_blank" href="/search/%E8%A2%AB%E5%8A%A8%E5%BC%95%E7%94%A8/1.htm">被动引用</a><a class="tag" taget="_blank" href="/search/%E7%B1%BB%E5%88%9D%E5%A7%8B%E5%8C%96/1.htm">类初始化</a>
                                        <div>  
    在Java代码中,有些类看上去初始化了,但其实没有。例如定义一定长度某一类型的数组,看上去数组中所有的元素已经被初始化,实际上一个都没有。对于类的初始化,虚拟机规范严格规定了只有对该类进行主动引用时,才会触发。而除此之外的所有引用方式称之为对类的被动引用,不会触发类的初始化。虚拟机规范严格地规定了有且仅有四种情况是对类的主动引用,即必须立即对类进行初始化。四种情况如下:1.遇到ne</div>
                                    </li>
                                    <li><a href="/article/1284.htm"
                                           title="导出数据库 提示 outfile disabled" target="_blank">导出数据库 提示 outfile disabled</a>
                                        <span class="text-muted">BigBird2012</span>
    <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                        <div>在windows控制台下,登陆mysql,备份数据库: 
      
    mysql>mysqldump -u root -p test test > D:\test.sql 
    使用命令 mysqldump 格式如下: mysqldump -u root -p *** DBNAME > E:\\test.sql。 
    注意:执行该命令的时候不要进入mysql的控制台再使用,这样会报</div>
                                    </li>
                                    <li><a href="/article/1411.htm"
                                           title="Javascript 中的 && 和 ||" target="_blank">Javascript 中的 && 和 ||</a>
                                        <span class="text-muted">bijian1013</span>
    <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%26%26/1.htm">&&</a><a class="tag" taget="_blank" href="/search/%7C%7C/1.htm">||</a>
                                        <div>        准备两个对象用于下面的讨论 
    var alice = {
        name: "alice",
        toString: function () {
            return this.name;
        }
    }
    var smith = {
        name: "smith",
     </div>
                                    </li>
                                    <li><a href="/article/1538.htm"
                                           title="[Zookeeper学习笔记之四]Zookeeper Client Library会话重建" target="_blank">[Zookeeper学习笔记之四]Zookeeper Client Library会话重建</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a>
                                        <div>为了说明问题,先来看个简单的示例代码: 
      
    package com.tom.zookeeper.book;
    
    import com.tom.Host;
    import org.apache.zookeeper.WatchedEvent;
    import org.apache.zookeeper.ZooKeeper;
    import org.apache.zookeeper.Wat</div>
                                    </li>
                                    <li><a href="/article/1665.htm"
                                           title="【Scala十一】Scala核心五:case模式匹配" target="_blank">【Scala十一】Scala核心五:case模式匹配</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a>
                                        <div>package spark.examples.scala.grammars.caseclasses
    
    object CaseClass_Test00 {
    
      def simpleMatch(arg: Any) = arg match {
        case v: Int => "This is an Int"
        case v: (Int, String)</div>
                                    </li>
                                    <li><a href="/article/1792.htm"
                                           title="运维的一些面试题" target="_blank">运维的一些面试题</a>
                                        <span class="text-muted">yuxianhua</span>
    <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                        <div>1、Linux挂载Winodws共享文件夹 
      
    mount -t cifs //1.1.1.254/ok /var/tmp/share/ -o username=administrator,password=yourpass
    或
    mount -t cifs -o username=xxx,password=xxxx //1.1.1.1/a /win 
      
     </div>
                                    </li>
                                    <li><a href="/article/1919.htm"
                                           title="Java lang包-Boolean" target="_blank">Java lang包-Boolean</a>
                                        <span class="text-muted">BrokenDreams</span>
    <a class="tag" taget="_blank" href="/search/boolean/1.htm">boolean</a>
                                        <div>         Boolean类是Java中基本类型boolean的包装类。这个类比较简单,直接看源代码吧。 
     
    
    public final class Boolean implements java.io.Serializable,
                                          </div>
                                    </li>
                                    <li><a href="/article/2046.htm"
                                           title="读《研磨设计模式》-代码笔记-命令模式-Command" target="_blank">读《研磨设计模式》-代码笔记-命令模式-Command</a>
                                        <span class="text-muted">bylijinnan</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                        <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
     
     
    
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.List;
    
    /**
     * GOF 在《设计模式》一书中阐述命令模式的意图:“将一个请求封装</div>
                                    </li>
                                    <li><a href="/article/2173.htm"
                                           title="matlab下GPU编程笔记" target="_blank">matlab下GPU编程笔记</a>
                                        <span class="text-muted">cherishLC</span>
    <a class="tag" taget="_blank" href="/search/matlab/1.htm">matlab</a>
                                        <div>不多说,直接上代码 
     
    gpuDevice   %   查看系统中的gpu,,其中的DeviceSupported会给出matlab支持的GPU个数。
    g=gpuDevice(1);    %会清空 GPU 1中的所有数据,,将GPU1 设为当前GPU
    reset(g)  %也可以清空GPU中数据。
    
    a=1;
    a=gpuArray(a);    %将a从CPU移到GPU中
    onGP</div>
                                    </li>
                                    <li><a href="/article/2300.htm"
                                           title="SVN安装过程" target="_blank">SVN安装过程</a>
                                        <span class="text-muted">crabdave</span>
    <a class="tag" taget="_blank" href="/search/SVN/1.htm">SVN</a>
                                        <div>SVN安装过程 
      
    subversion-1.6.12 
      
    ./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-openssl=/</div>
                                    </li>
                                    <li><a href="/article/2427.htm"
                                           title="sql 行列转换" target="_blank">sql 行列转换</a>
                                        <span class="text-muted">daizj</span>
    <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E8%A1%8C%E5%88%97%E8%BD%AC%E6%8D%A2/1.htm">行列转换</a><a class="tag" taget="_blank" href="/search/%E8%A1%8C%E8%BD%AC%E5%88%97/1.htm">行转列</a><a class="tag" taget="_blank" href="/search/%E5%88%97%E8%BD%AC%E8%A1%8C/1.htm">列转行</a>
                                        <div>行转列的思想是通过case when 来实现 
    列转行的思想是通过union all 来实现 
     
    下面具体例子: 
     
    假设有张学生成绩表(tb)如下: 
    Name Subject Result 
    张三 语文  74 
    张三 数学  83 
    张三 物理  93 
    李四 语文  74 
    李四 数学  84 
    李四 物理  94 
    */ 
    /* 
    想变成 
    姓名   &</div>
                                    </li>
                                    <li><a href="/article/2554.htm"
                                           title="MySQL--主从配置" target="_blank">MySQL--主从配置</a>
                                        <span class="text-muted">dcj3sjt126com</span>
    <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                        <div>   linux下的mysql主从配置:   说明:由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,   Master的版本肯定不能高于Slave版本。(版本向下兼容)   
       mysql1  : 192.168.100.1    //master   mysq</div>
                                    </li>
                                    <li><a href="/article/2681.htm"
                                           title="关于yii 数据库添加新字段之后model类的修改" target="_blank">关于yii 数据库添加新字段之后model类的修改</a>
                                        <span class="text-muted">dcj3sjt126com</span>
    <a class="tag" taget="_blank" href="/search/Model/1.htm">Model</a>
                                        <div>rules: 
    array('新字段','safe','on'=>'search') 
    1、array('新字段', 'safe')//这个如果是要用户输入的话,要加一下, 
    2、array('新字段', 'numerical'),//如果是数字的话 
    3、array('新字段', 'length', 'max'=>100),//如果是文本 
    1、2、3适当的最少要加一条,新字段才会被</div>
                                    </li>
                                    <li><a href="/article/2808.htm"
                                           title="sublime text3 中文乱码解决" target="_blank">sublime text3 中文乱码解决</a>
                                        <span class="text-muted">dyy_gusi</span>
    <a class="tag" taget="_blank" href="/search/Sublime+Text/1.htm">Sublime Text</a>
                                        <div>sublime text3中文乱码解决 
    原因:缺少转换为UTF-8的插件 
    目的:安装ConvertToUTF8插件包 
    第一步:安装能自动安装插件的插件,百度“Codecs33”,然后按照步骤可以得到以下一段代码: 
    import urllib.request,os,hashlib; h = 'eb2297e1a458f27d836c04bb0cbaf282' + 'd0e7a30980927</div>
                                    </li>
                                    <li><a href="/article/2935.htm"
                                           title="概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM" target="_blank">概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM</a>
                                        <span class="text-muted">geeksun</span>
    <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                        <div>CGI 
    CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。 
    CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。 FastCGI 
    FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不</div>
                                    </li>
                                    <li><a href="/article/3062.htm"
                                           title="Git push 报错 "error: failed to push some refs to " 解决" target="_blank">Git push 报错 "error: failed to push some refs to " 解决</a>
                                        <span class="text-muted">hongtoushizi</span>
    <a class="tag" taget="_blank" href="/search/git/1.htm">git</a>
                                        <div>Git push 报错 "error: failed to push some refs to " . 
    此问题出现的原因是:由于远程仓库中代码版本与本地不一致冲突导致的。 
    由于我在第一次git pull --rebase 代码后,准备push的时候,有别人往线上又提交了代码。所以出现此问题。 
    解决方案: 
    1: git pull    
    2:</div>
                                    </li>
                                    <li><a href="/article/3189.htm"
                                           title="第四章 Lua模块开发" target="_blank">第四章 Lua模块开发</a>
                                        <span class="text-muted">jinnianshilongnian</span>
    <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/lua/1.htm">lua</a>
                                        <div>在实际开发中,不可能把所有代码写到一个大而全的lua文件中,需要进行分模块开发;而且模块化是高性能Lua应用的关键。使用require第一次导入模块后,所有Nginx 进程全局共享模块的数据和代码,每个Worker进程需要时会得到此模块的一个副本(Copy-On-Write),即模块可以认为是每Worker进程共享而不是每Nginx Server共享;另外注意之前我们使用init_by_lua中初</div>
                                    </li>
                                    <li><a href="/article/3316.htm"
                                           title="java.lang.reflect.Proxy" target="_blank">java.lang.reflect.Proxy</a>
                                        <span class="text-muted">liyonghui160com</span>
    
                                        <div>  
    1.简介 
      
    Proxy 提供用于创建动态代理类和实例的静态方法 
    (1)动态代理类的属性 
     
     代理类是公共的、最终的,而不是抽象的 
     未指定代理类的非限定名称。但是,以字符串 "$Proxy" 开头的类名空间应该为代理类保留 
     代理类扩展 java.lang.reflect.Proxy  
     代理类会按同一顺序准确地实现其创建时指定的接口</div>
                                    </li>
                                    <li><a href="/article/3443.htm"
                                           title="Java中getResourceAsStream的用法" target="_blank">Java中getResourceAsStream的用法</a>
                                        <span class="text-muted">pda158</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                        <div>1.Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。     2. Class.getClassLoader.get</div>
                                    </li>
                                    <li><a href="/article/3570.htm"
                                           title="spring 包官方下载地址(非maven)" target="_blank">spring 包官方下载地址(非maven)</a>
                                        <span class="text-muted">sinnk</span>
    <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                        <div>SPRING官方网站改版后,建议都是通过 Maven和Gradle下载,对不使用Maven和Gradle开发项目的,下载就非常麻烦,下给出Spring Framework jar官方直接下载路径: 
      
     http://repo.springsource.org/libs-release-local/org/springframework/spring/ 
      
    s</div>
                                    </li>
                                    <li><a href="/article/3697.htm"
                                           title="Oracle学习笔记(7) 开发PLSQL子程序和包" target="_blank">Oracle学习笔记(7) 开发PLSQL子程序和包</a>
                                        <span class="text-muted">vipbooks</span>
    <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a>
                                        <div>    哈哈,清明节放假回去了一下,真是太好了,回家的感觉真好啊!现在又开始出差之旅了,又好久没有来了,今天继续Oracle的学习! 
         这是第七章的学习笔记,学习完第六章的动态SQL之后,开始要学习子程序和包的使用了……,希望大家能多给俺一些支持啊! 
        编程时使用的工具是PLSQL</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>