fairseq笔记

文章目录

    • 训练新模型
      • 数据预处理
        • 预处理脚本
        • python的参数类型

训练新模型

以机器翻译为例子开始

数据预处理

Fairseq 包含多个翻译数据集的示例预处理脚本:IWSLT 2014(德语-英语)、WMT 2014(英语-法语)和 WMT 2014(英语-德语)。预处理和二值化 IWSLT 数据集:

> cd examples/translation/  #把当前路径切换到翻译示例下
> bash prepare-iwslt14.sh   #运行预处理脚本
> cd ../..                  #返回上上级目录。也就是退回到fairseq-master/
> TEXT=examples/translation/iwslt14.tokenized.de-en

#这个指令会调用 anaconda/scripts下的fairseq-preprocess.exe(如果是在windows下) ,
#这个实质上,根据F:\ANACONDA\Lib\site-packages\fairseq-0.10.0.dist-info的entry_points.txt
#fairseq-preprocess = fairseq_cli.preprocess:cli_main
#已经指明了这个exe实际上执行的是cli_main
> fairseq-preprocess --source-lang de --target-lang en \
    --trainpref $TEXT/train --validpref $TEXT/valid --testpref $TEXT/test \
    --destdir data-bin/iwslt14.tokenized.de-en

预处理脚本

我在脚本中写了注释,方便对脚本语言不熟练的同学入门,如果熟练的同学可以回忆一下这个预处理做了什么,然后跳转到关于fairseq-preprocess的源码讲解部分,

  • 下载数据集

  • 下载subword-nmt和moses

  • 清洗训练集

    • 去掉包含,的行,删除标记
    • 用moses分词,把标点符号和英文单词分开
    • 保留1-175长度和源语言目标语言长度1.5比例内的句子
    • 全部单词变小写
  • 把训练数据集(清洗后的)按照22:1划分成训练集和验证集

  • 把原验证集测试集全划分成测试集

  • bpe算法

#!/usr/bin/env bash
#
# Adapted from https://github.com/facebookresearch/MIXER/blob/master/prepareData.sh

#echo是输出一些信息,git clone是下载github上的仓库
echo 'Cloning Moses github repository (for tokenization scripts)...' 
git clone https://github.com/moses-smt/mosesdecoder.git

echo 'Cloning Subword NMT repository (for BPE pre-processing)...'
git clone https://github.com/rsennrich/subword-nmt.git

#定义一些路径变量
SCRIPTS=mosesdecoder/scripts
TOKENIZER=$SCRIPTS/tokenizer/tokenizer.perl
LC=$SCRIPTS/tokenizer/lowercase.perl
CLEAN=$SCRIPTS/training/clean-corpus-n.perl
BPEROOT=subword-nmt/subword_nmt
BPE_TOKENS=10000
# 指定去哪里下数据集
URL="http://dl.fbaipublicfiles.com/fairseq/data/iwslt14/de-en.tgz"
GZ=de-en.tgz
# -d 是linux脚本中用来判断是不是目录的
if [ ! -d "$SCRIPTS" ]; then
    echo "Please set SCRIPTS variable correctly to point to Moses scripts."
    exit
fi

src=de
tgt=en
lang=de-en
prep=iwslt14.tokenized.de-en
tmp=$prep/tmp
orig=orig
# 创建多层目录,主要是因为tmp和prep是多层目录
mkdir -p $orig $tmp $prep

echo "Downloading data from ${URL}..."
cd $orig
#从互联网上下载东西
wget "$URL"
#判断GZ是不是文件
if [ -f $GZ ]; then
    echo "Data successfully downloaded."
else
    echo "Data not successfully downloaded."
    exit
fi
# 解压GZ到当前文件夹
tar zxvf $GZ
#返回上一级
cd ..

echo "pre-processing train data..."
for l in $src $tgt; do
    f=train.tags.$lang.$l
    tok=train.tags.$lang.tok.$l
    # |是管道,就是这一条语句的输出作为下一条语句的输入,等于把grep这几行去掉
    cat $orig/$lang/$f | \
    grep -v '' | \
    grep -v '' | \
    grep -v '' | \
    # s是替换,g是替换多次
    sed -e 's///g'</span> <span class="token operator">|</span> <span class="token punctuation">\</span>
    <span class="token function">sed</span> -e <span class="token string">'s/<\/title>//g'</span> <span class="token operator">|</span> <span class="token punctuation">\</span>
    <span class="token function">sed</span> -e <span class="token string">'s/<description>//g'</span> <span class="token operator">|</span> <span class="token punctuation">\</span>
    <span class="token function">sed</span> -e <span class="token string">'s/<\/description>//g'</span> <span class="token operator">|</span> <span class="token punctuation">\</span>
    <span class="token comment"># 分词,就是把标点符号和单词分开</span>
    perl <span class="token variable">$TOKENIZER</span> -threads <span class="token number">8</span> -l <span class="token variable">$l</span> <span class="token operator">></span> <span class="token variable">$tmp</span>/<span class="token variable">$tok</span>
    <span class="token comment">#换行……?</span>
    <span class="token builtin class-name">echo</span> <span class="token string">""</span>
<span class="token keyword">done</span>
<span class="token comment"># http://www.statmt.org/moses/?n=FactoredTraining.PrepareTraining</span>
<span class="token comment"># 保留1-175长度和源语言目标语言长度1.5比例内的句子</span>
<span class="token comment">#  clean-corpus-n.perl CORPUS L1 L2 OUT MIN MAX</span>
perl <span class="token variable">$CLEAN</span> -ratio <span class="token number">1.5</span> <span class="token variable">$tmp</span>/train.tags.<span class="token variable">$lang</span>.tok <span class="token variable">$src</span> <span class="token variable">$tgt</span> <span class="token variable">$tmp</span>/train.tags.<span class="token variable">$lang</span>.clean <span class="token number">1</span> <span class="token number">175</span>
<span class="token comment">#小写</span>
<span class="token keyword">for</span> <span class="token for-or-select variable">l</span> <span class="token keyword">in</span> <span class="token variable">$src</span> <span class="token variable">$tgt</span><span class="token punctuation">;</span> <span class="token keyword">do</span>
    perl <span class="token variable">$LC</span> <span class="token operator"><</span> <span class="token variable">$tmp</span>/train.tags.<span class="token variable">$lang</span>.clean.<span class="token variable">$l</span> <span class="token operator">></span> <span class="token variable">$tmp</span>/train.tags.<span class="token variable">$lang</span><span class="token builtin class-name">.</span><span class="token variable">$l</span>
<span class="token keyword">done</span>

<span class="token builtin class-name">echo</span> <span class="token string">"pre-processing valid/test data..."</span>
<span class="token keyword">for</span> <span class="token for-or-select variable">l</span> <span class="token keyword">in</span> <span class="token variable">$src</span> <span class="token variable">$tgt</span><span class="token punctuation">;</span> <span class="token keyword">do</span>
    <span class="token comment"># ls是个列表,*和正则不是一个东西,正则的是要求 前面有点什么,他的0闭包,但是文件扩展他本身就是任何字符(串)。</span>
    <span class="token keyword">for</span> <span class="token for-or-select variable">o</span> <span class="token keyword">in</span> <span class="token variable"><span class="token variable">`</span><span class="token function">ls</span> $orig/$lang/IWSLT14.TED*.$l.xml<span class="token variable">`</span></span><span class="token punctuation">;</span> <span class="token keyword">do</span>
    <span class="token comment">#o是一个绝对路径,这个##*是删除除了最后一个路径(也就是文件名)的东西,等于保留IWSLT14.TED*.$l.xml</span>
    <span class="token comment"># 两个重复的符号是最大匹配,一个是最小匹配,#是去掉左边,%是去掉右边(逆序匹配),后面的就是正则了</span>
    <span class="token assign-left variable">fname</span><span class="token operator">=</span><span class="token variable">${o<span class="token operator">##</span>*<span class="token operator">/</span>}</span>
    <span class="token comment"># f就是等于 temp/IWSLT14.TED*.$l</span>
    <span class="token assign-left variable">f</span><span class="token operator">=</span><span class="token variable">$tmp</span>/<span class="token variable">${fname<span class="token operator">%</span>.*}</span>
    <span class="token builtin class-name">echo</span> <span class="token variable">$o</span> <span class="token variable">$f</span>
    <span class="token comment"># 找到有segid 的行,去掉seg id,去掉句子结尾的seg,替换中文引号为英文引号</span>
    <span class="token function">grep</span> <span class="token string">'<seg id'</span> <span class="token variable">$o</span> <span class="token operator">|</span> <span class="token punctuation">\</span>
        <span class="token function">sed</span> -e <span class="token string">'s/<seg id="[0-9]*">\s*//g'</span> <span class="token operator">|</span> <span class="token punctuation">\</span>
        <span class="token function">sed</span> -e <span class="token string">'s/\s*<\/seg>\s*//g'</span> <span class="token operator">|</span> <span class="token punctuation">\</span>
        <span class="token function">sed</span> -e <span class="token string">"s/\’/\'/g"</span> <span class="token operator">|</span> <span class="token punctuation">\</span>
    <span class="token comment">#分词,小写</span>
    perl <span class="token variable">$TOKENIZER</span> -threads <span class="token number">8</span> -l <span class="token variable">$l</span> <span class="token operator">|</span> <span class="token punctuation">\</span>
    perl <span class="token variable">$LC</span> <span class="token operator">></span> <span class="token variable">$f</span>
    <span class="token builtin class-name">echo</span> <span class="token string">""</span>
    <span class="token keyword">done</span>
<span class="token keyword">done</span>


<span class="token builtin class-name">echo</span> <span class="token string">"creating train, valid, test..."</span>
<span class="token comment"># 每23行输出一行给valid,其实这个句子应该这么理解</span>
<span class="token comment"># [awk '{if (NR%23 == 0)  print $0; }' $tmp/train.tags.de-en.$l] > $tmp/valid.$l</span>
<span class="token keyword">for</span> <span class="token for-or-select variable">l</span> <span class="token keyword">in</span> <span class="token variable">$src</span> <span class="token variable">$tgt</span><span class="token punctuation">;</span> <span class="token keyword">do</span>
    <span class="token function">awk</span> <span class="token string">'{if (NR%23 == 0)  print <span class="token variable">$0</span>; }'</span> <span class="token variable">$tmp</span>/train.tags.de-en.<span class="token variable">$l</span> <span class="token operator">></span> <span class="token variable">$tmp</span>/valid.<span class="token variable">$l</span>
    <span class="token function">awk</span> <span class="token string">'{if (NR%23 != 0)  print <span class="token variable">$0</span>; }'</span> <span class="token variable">$tmp</span>/train.tags.de-en.<span class="token variable">$l</span> <span class="token operator">></span> <span class="token variable">$tmp</span>/train.<span class="token variable">$l</span>
    <span class="token comment">#把这几个文件合并成$tmp/test.$l</span>
    <span class="token function">cat</span> <span class="token variable">$tmp</span>/IWSLT14.TED.dev2010.de-en.<span class="token variable">$l</span> <span class="token punctuation">\</span>
        <span class="token variable">$tmp</span>/IWSLT14.TEDX.dev2012.de-en.<span class="token variable">$l</span> <span class="token punctuation">\</span>
        <span class="token variable">$tmp</span>/IWSLT14.TED.tst2010.de-en.<span class="token variable">$l</span> <span class="token punctuation">\</span>
        <span class="token variable">$tmp</span>/IWSLT14.TED.tst2011.de-en.<span class="token variable">$l</span> <span class="token punctuation">\</span>
        <span class="token variable">$tmp</span>/IWSLT14.TED.tst2012.de-en.<span class="token variable">$l</span> <span class="token punctuation">\</span>
        <span class="token operator">></span> <span class="token variable">$tmp</span>/test.<span class="token variable">$l</span>
<span class="token keyword">done</span>

<span class="token assign-left variable">TRAIN</span><span class="token operator">=</span><span class="token variable">$tmp</span>/train.en-de
<span class="token assign-left variable">BPE_CODE</span><span class="token operator">=</span><span class="token variable">$prep</span>/code
<span class="token function">rm</span> -f <span class="token variable">$TRAIN</span>
<span class="token keyword">for</span> <span class="token for-or-select variable">l</span> <span class="token keyword">in</span> <span class="token variable">$src</span> <span class="token variable">$tgt</span><span class="token punctuation">;</span> <span class="token keyword">do</span>
    <span class="token function">cat</span> <span class="token variable">$tmp</span>/train.<span class="token variable">$l</span> <span class="token operator">>></span> <span class="token variable">$TRAIN</span>
<span class="token keyword">done</span>

<span class="token comment">#调用subword_nmt 学习code ,这些参数在我的另一个文章中有</span>
<span class="token builtin class-name">echo</span> <span class="token string">"learn_bpe.py on <span class="token variable">${TRAIN}</span>..."</span>
python <span class="token variable">$BPEROOT</span>/learn_bpe.py -s <span class="token variable">$BPE_TOKENS</span> <span class="token operator"><</span> <span class="token variable">$TRAIN</span> <span class="token operator">></span> <span class="token variable">$BPE_CODE</span>

<span class="token comment">#使用code进行bpe生成</span>
<span class="token keyword">for</span> <span class="token for-or-select variable">L</span> <span class="token keyword">in</span> <span class="token variable">$src</span> <span class="token variable">$tgt</span><span class="token punctuation">;</span> <span class="token keyword">do</span>
    <span class="token keyword">for</span> <span class="token for-or-select variable">f</span> <span class="token keyword">in</span> train.<span class="token variable">$L</span> valid.<span class="token variable">$L</span> test.<span class="token variable">$L</span><span class="token punctuation">;</span> <span class="token keyword">do</span>
        <span class="token builtin class-name">echo</span> <span class="token string">"apply_bpe.py to <span class="token variable">${f}</span>..."</span>
        python <span class="token variable">$BPEROOT</span>/apply_bpe.py -c <span class="token variable">$BPE_CODE</span> <span class="token operator"><</span> <span class="token variable">$tmp</span>/<span class="token variable">$f</span> <span class="token operator">></span> <span class="token variable">$prep</span>/<span class="token variable">$f</span>
    <span class="token keyword">done</span>
<span class="token keyword">done</span>
</code></pre> 
  <p><span id="preprocess">preprocess的源码分析</span></p> 
  <p>先讲怎么从命令行中截获参数,fairseq用的是python 标准库里的argparser,顾名思义,是参数解析器。</p> 
  <h4>python的参数类型</h4> 
  <p>在python中,有如下四种类型的参数,分别是位置参数、关键字参数、默认参数和可变参数。其中位置参数和关键字参数讲的是调用的方式,比如以下例子:</p> 
  <pre><code class="prism language-python"><span class="token keyword">def</span> <span class="token function">print_hello</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> sex<span class="token punctuation">)</span>

print_hello<span class="token punctuation">(</span><span class="token string">'小明'</span><span class="token punctuation">,</span><span class="token string">'male'</span><span class="token punctuation">)</span> <span class="token comment">#位置参数</span>

print_hello<span class="token punctuation">(</span>sex<span class="token operator">=</span><span class="token string">'male'</span><span class="token punctuation">,</span>name<span class="token operator">=</span><span class="token string">'小明'</span><span class="token punctuation">)</span> <span class="token comment">#关键字参数</span>
</code></pre> 
  <p>位置参数通过参数定义的位置来传递参数;关键字参数通过键值对的方式来传递参数,不需要考虑位置关系。当关键字参数和位置参数混用的时候,需要特别注意,<strong>位置参数必须在关键字参数之前</strong>,所以解析的方式就是逐个把位置参数送入形参,再把关键字和形参结合,一旦关键字参数和位置参数相同,比如<code>print_hello(1, name='小明')</code>就会因为name有两个实参报错。</p> 
  <p>默认参数就是在形参定义的时候,带上的默认值,比如</p> 
  <pre><code class="prism language-python"><span class="token keyword">def</span> <span class="token function">print_hello</span><span class="token punctuation">(</span>sex,name<span class="token operator">=</span><span class="token string">'male'</span><span class="token punctuation">)</span>
    <span class="token comment"># name是默认参数</span>
</code></pre> 
  <p>这时候调用的时候就可以不传name的实参进去,当然需要注意的是,默认参数也必须在位置参数之后。</p> 
  <p>可变参数就是有时候我们不确定调用的时候会传递多少个参数,此时可以用packing包裹位置参数或者关键字参数。<br> 比如包裹位置参数的例子</p> 
  <pre><code class="prism language-python"><span class="token comment">#定义</span>
<span class="token keyword">def</span> <span class="token function">func</span><span class="token punctuation">(</span><span class="token operator">*</span>args<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>

<span class="token comment"># 调用</span>
func<span class="token punctuation">(</span><span class="token punctuation">)</span>
func<span class="token punctuation">(</span>a<span class="token punctuation">)</span>
func<span class="token punctuation">(</span>a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> c<span class="token punctuation">)</span>
</code></pre> 
  <p>所有传进去的参数都会被args收集,他是一个tuple类型的变量。</p> 
  <pre><code class="prism language-python"><span class="token keyword">def</span> <span class="token function">func</span><span class="token punctuation">(</span><span class="token operator">**</span>kargs<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>

func<span class="token punctuation">(</span>a<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">)</span>
func<span class="token punctuation">(</span>a<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">,</span> b<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">,</span> c<span class="token operator">=</span><span class="token number">3</span><span class="token punctuation">)</span>
</code></pre> 
  <p>kargs是一个dict类型的变量。<br> 需要注意的是,args和kargs并不是必须的命名,只是一种习惯,区别是元组还是字典,靠的是**的数量。</p> 
  <p>我们什么时候需要argparse,比如我们写好了一个python脚本hello.py<br> 你可以直接使用</p> 
  <pre><code class="prism language-bash">python hello.py
</code></pre> 
  <p>来运行这个脚本,但有时候你并不满足只是运行,可能还需要从外界获取一点额外的信息,比如说,使用者的名字,运行的次数,等等。这时你就可以使用argparse,达到下面的效果:</p> 
  <pre><code class="prism language-bash">python hello.py --name 小明 --time <span class="token number">3</span>
</code></pre> 
  <p>这时小明和3就会被传入hello.py中,并且可以被获取,我们不会讲的特别深入,只保证你能明白fairseq用这个做什么,感兴趣可以自行从python的官方文档中阅读。</p> 
  <p>讲完argparse的用途,我们讲怎么做。<br> 基本上是三部曲,第一是创建解析器,第二步是往解析器里添加需要解析的参数,第三步是开始解析参数。这就好像开辅导班,第一步是租店面,第二步是确定教什么科目,第三步是招收对应的老师为学生授课这样(奇怪的例子orz)</p> 
  <p>argparse中,有一个命令解析类,叫做<code>ArgumentParser</code>,他的构造函数中的所有参数都是关键字参数,也就是要用键值对的方式传进去,他有非常多的成员,我们只讲fairseq用的部分。<br> bool类型的add_help,当这个参数是true的时候,你可以通过-h或者–help读到这个<code>hello.py</code>所有参数的帮助(当然这得是你写了才有东西输出)。<br> bool类型的<code>allow_abbrev</code>,这个是允许使用缩写的意思,在python3.5以后默认开启,比如我们定义了–time 这个参数,当你实际使用时采用–ti 3,也可以被识别到time参数上,当然,一旦你输入的缩写是多个参数的共同前缀,产生了歧义时,这个选项就无法使用了。</p> 
  <p>在定义完一个解析器之后,我们需要为里面加上需要解析的内容,这个是通过解析器类的<code>add_argument</code>方法进行的,比如我们需要让这个参数解析器接受<code>--time</code>,就是通过这个方法加的。这个方法常用的参数如下:<br> default - 说白了如果定义了这个,就允许这个参数被当成默认参数处理,如果没写,或者把这一个参数定义成None,那这个参数就无法在命令行缺省该参数时使用。<br> name or flags - 这个参数就是用来写–time的,为这个解析器类加上需要解析的参数,需要注意,如果在同一个add_argument里面写多个flags<code>('-f', '--foo')</code>,也可以只写一个name比如<code>(bar)</code>,需要注意,不加-的会被解析成位置参数,是不允许缺省的,一旦缺省了会报错,而加了-的会被认为是可选参数,同时如果flags不是一个字母,前面要加–,如果是一个字母,只用一个-。<br> dest - 这个说起来有点绕啊,其实他和name需要区分一下,他是parser创建完后,解析了参数之后(后面会说的parse_args()方法),你用什么变量名来获取刚刚的参数,比如说啊<br> parser.add_argument(’-f’, ‘–foo-bar’, ‘–foo’),这里面所有的参数都是flags对吧,那之后我们要调用这个参数,就是通过parse.foo_bar,因为如果有–的,会选择第一个–的names去掉杠杠,而且把里面的-变成_(这是因为变量名的规范要求),如果只有-的,就取第一个-的name作为内容。</p> 
  <hr> 
  <p>讲完参数的类型后,我们开始看源码部分的argparse内容。<code>fairseq-preprocess</code>调用的是<code>fairseq_cli/preprocess.py</code>的<code>cli-main()</code>。</p> 
  <pre><code class="prism language-python"><span class="token keyword">def</span> <span class="token function">cli_main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    parser <span class="token operator">=</span> options<span class="token punctuation">.</span>get_preprocessing_parser<span class="token punctuation">(</span><span class="token punctuation">)</span>
    args <span class="token operator">=</span> parser<span class="token punctuation">.</span>parse_args<span class="token punctuation">(</span><span class="token punctuation">)</span>
    main<span class="token punctuation">(</span>args<span class="token punctuation">)</span>
</code></pre> 
  <p>其中options的路径是<code>fairseq/options.py</code>,我们看看预处理的解析器函数内容是什么。</p> 
  <pre><code class="prism language-python"><span class="token keyword">def</span> <span class="token function">get_preprocessing_parser</span><span class="token punctuation">(</span>default_task<span class="token operator">=</span><span class="token string">"translation"</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    parser <span class="token operator">=</span> get_parser<span class="token punctuation">(</span><span class="token string">"Preprocessing"</span><span class="token punctuation">,</span> default_task<span class="token punctuation">)</span>
    add_preprocess_args<span class="token punctuation">(</span>parser<span class="token punctuation">)</span>
    <span class="token keyword">return</span> parser
</code></pre> 
  <p>上面这三行里面,get_parser创建了一个parser,他的两个实参中,第一个字符串类的desc并没有用上,更像是一个和不同cli指令区分开的标记,只是为了增加可读性。这个函数的具体注释写在代码体里面了。</p> 
  <pre><code class="prism language-python"><span class="token keyword">def</span> <span class="token function">get_parser</span><span class="token punctuation">(</span>desc<span class="token punctuation">,</span> default_task<span class="token operator">=</span><span class="token string">"translation"</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token triple-quoted-string string">"""

    Args:
        desc: 没用上,这里像是一个信息标记
        default_task:  默认任务

    Returns:

    """</span>
    <span class="token comment"># Before creating the true parser, we need to import optional user module</span>
    <span class="token comment"># in order to eagerly import custom tasks, optimizers, architectures, etc.</span>

    <span class="token comment">#创建用户参数解析器</span>
    usr_parser <span class="token operator">=</span> argparse<span class="token punctuation">.</span>ArgumentParser<span class="token punctuation">(</span>add_help<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">,</span> allow_abbrev<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">)</span> <span class="token comment">#不添加帮助,不允许运行时缩写指代参数</span>
    usr_parser<span class="token punctuation">.</span>add_argument<span class="token punctuation">(</span><span class="token string">"--user-dir"</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span>
    <span class="token comment">#这个和parse_args很像,区别在于当解析碰到额外指令时不会报错,会把额外的不存在的参数存下来</span>
    <span class="token comment">#不过这里没打算接受,所以用了_,本质应该是为了加强鲁棒性。</span>
    usr_args<span class="token punctuation">,</span> _ <span class="token operator">=</span> usr_parser<span class="token punctuation">.</span>parse_known_args<span class="token punctuation">(</span><span class="token punctuation">)</span>
    <span class="token comment">#导入用户的自定义模块</span>
    utils<span class="token punctuation">.</span>import_user_module<span class="token punctuation">(</span>usr_args<span class="token punctuation">)</span>

    <span class="token comment">#然后通过数据类初始化这个parser</span>
    parser <span class="token operator">=</span> argparse<span class="token punctuation">.</span>ArgumentParser<span class="token punctuation">(</span>allow_abbrev<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">)</span>
    gen_parser_from_dataclass<span class="token punctuation">(</span>parser<span class="token punctuation">,</span> CommonConfig<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>

    <span class="token keyword">from</span> fairseq<span class="token punctuation">.</span>registry <span class="token keyword">import</span> REGISTRIES

    <span class="token keyword">for</span> registry_name<span class="token punctuation">,</span> REGISTRY <span class="token keyword">in</span> REGISTRIES<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
        parser<span class="token punctuation">.</span>add_argument<span class="token punctuation">(</span>
            <span class="token string">"--"</span> <span class="token operator">+</span> registry_name<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>
            default<span class="token operator">=</span>REGISTRY<span class="token punctuation">[</span><span class="token string">"default"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
            choices<span class="token operator">=</span>REGISTRY<span class="token punctuation">[</span><span class="token string">"registry"</span><span class="token punctuation">]</span><span class="token punctuation">.</span>keys<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
        <span class="token punctuation">)</span>

    <span class="token comment"># Task definitions can be found under fairseq/tasks/</span>
    <span class="token keyword">from</span> fairseq<span class="token punctuation">.</span>tasks <span class="token keyword">import</span> TASK_REGISTRY

    parser<span class="token punctuation">.</span>add_argument<span class="token punctuation">(</span>
        <span class="token string">"--task"</span><span class="token punctuation">,</span>
        metavar<span class="token operator">=</span><span class="token string">"TASK"</span><span class="token punctuation">,</span>
        default<span class="token operator">=</span>default_task<span class="token punctuation">,</span>
        choices<span class="token operator">=</span>TASK_REGISTRY<span class="token punctuation">.</span>keys<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
        <span class="token builtin">help</span><span class="token operator">=</span><span class="token string">"task"</span><span class="token punctuation">,</span>
    <span class="token punctuation">)</span>
    <span class="token comment"># fmt: on</span>
    <span class="token keyword">return</span> parser
</code></pre> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1609240932245340160"></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">你可能感兴趣的:(机器翻译,人工智能,自然语言处理)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1892464158230769664.htm"
                           title="【自然语言处理|迁移学习-08】:中文语料完型填空" target="_blank">【自然语言处理|迁移学习-08】:中文语料完型填空</a>
                        <span class="text-muted">爱学习不掉头发</span>
<a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%EF%BC%88NLP%EF%BC%89/1.htm">自然语言处理(NLP)</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/%E8%BF%81%E7%A7%BB%E5%AD%A6%E4%B9%A0/1.htm">迁移学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>文章目录1中文语料完型填空任务介绍2数据集加载及处理3定义下游任务模型4模型训练5.模型测试1中文语料完型填空任务介绍任务介绍:完成中文语料完型填空完型填空是一个分类问题,[MASK]单词有21128种可能数据构建实现分析:使用迁移学习方式完成使用预训练模型bert模型提取文特征,后面添加全连接层和softmax进行单标签多分类2数据集加载及处理数据介绍:数据文件有三个train.csv,test</div>
                    </li>
                    <li><a href="/article/1892462137901641728.htm"
                           title="鸢尾花分类项目 GUI" target="_blank">鸢尾花分类项目 GUI</a>
                        <span class="text-muted">编织幻境的妖</span>
<a class="tag" taget="_blank" href="/search/%E5%88%86%E7%B1%BB/1.htm">分类</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>1.机器学习的定义机器学习是一门人工智能的分支,专注于开发算法和统计模型,使计算机能够在没有明确编程的情况下从数据中自动学习和改进。通过识别数据中的模式和规律,机器学习系统可以做出预测或决策。常见的应用包括图像识别、语音识别、推荐系统等。2.为什么使用鸢尾花数据集(Irisdataset)鸢尾花数据集是一个经典的多类分类问题数据集,由英国统计学家和遗传学家RonaldFisher在1936年引入。</div>
                    </li>
                    <li><a href="/article/1892452924794138624.htm"
                           title="《神经网络与深度学习》(邱锡鹏) 内容概要【不含数学推导】" target="_blank">《神经网络与深度学习》(邱锡鹏) 内容概要【不含数学推导】</a>
                        <span class="text-muted">code_stream</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a>
                        <div>第1章绪论基本概念:介绍了人工智能的发展历程及不同阶段的特点,如符号主义、连接主义、行为主义等。还阐述了深度学习在人工智能领域的重要地位和发展现状,以及其在图像、语音、自然语言处理等多个领域的成功应用。术语解释人工智能:旨在让机器模拟人类智能的技术和科学。深度学习:一种基于对数据进行表征学习的方法,通过构建具有很多层的神经网络模型,自动从大量数据中学习复杂的模式和特征。第2章机器学习概述基本概念:</div>
                    </li>
                    <li><a href="/article/1892448386565599232.htm"
                           title="图像识别与应用" target="_blank">图像识别与应用</a>
                        <span class="text-muted">狂踹瘸子那条好脚</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>图像识别作为人工智能领域的重要分支,近年来取得了显著进展,其中卷积神经网络(CNN)功不可没。CNN凭借其强大的特征提取能力,在图像分类、目标检测、人脸识别等任务中表现出色,成为图像识别领域的核心技术。一、卷积神经网络:图像识别的利器CNN是一种专门处理网格状数据的深度学习模型,其结构设计灵感来源于生物视觉系统。与全连接神经网络不同,CNN通过卷积层、池化层等结构,能够有效提取图像的局部特征,并逐</div>
                    </li>
                    <li><a href="/article/1892446997915430912.htm"
                           title="Python中的 redis keyspace 通知_python 操作redis psubscribe(‘__keyspace@0__ ‘)" target="_blank">Python中的 redis keyspace 通知_python 操作redis psubscribe(‘__keyspace@0__ ‘)</a>
                        <span class="text-muted">2301_82243733</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>最后Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习Python门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的Pytho</div>
                    </li>
                    <li><a href="/article/1892438284043350016.htm"
                           title="知识图谱构建概念、工具、实例调研" target="_blank">知识图谱构建概念、工具、实例调研</a>
                        <span class="text-muted">熟悉的黑曼巴</span>
<a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/1.htm">知识图谱</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>一、知识图谱的概念知识图谱(Knowledgegraph)知识图谱是一种用图模型来描述知识和建模世界万物之间的关联关系的技术方法。知识图谱由节点和边组成。节点可以是实体,如一个人、一本书等,或是抽象的概念,如人工智能、知识图谱等。边可以是实体的属性,如姓名、书名或是实体之间的关系,如朋友、配偶。知识图谱的早期理念来自SemanticWeb(语义网络),其最初理想是把基于文本链接的万维网落转化为基于</div>
                    </li>
                    <li><a href="/article/1892434375757328384.htm"
                           title="【deepseek与chatGPT辩论】辩论题: “人工智能是否应当具备自主决策能力?”" target="_blank">【deepseek与chatGPT辩论】辩论题: “人工智能是否应当具备自主决策能力?”</a>
                        <span class="text-muted">海宁不掉头发</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/1.htm">软件工程</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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/chatgpt/1.htm">chatgpt</a><a class="tag" taget="_blank" href="/search/deepseek/1.htm">deepseek</a>
                        <div>探讨辩论题这个提案涉及创建一个精确的辩论题目,旨在测试deepseek的应答能力。创建辩论题目提议设计一个辩论题目以测试deepseek的应答能力。希望这个题目具有挑战性并能够测量其回应质量。好的,来一道适合深度学习的辩论题:辩论题:“人工智能是否应当具备自主决策能力?”这个话题涉及到人工智能的发展、伦理以及未来应用,可以从以下几个方面展开辩论:支持方:认为人工智能的自主决策能力能够加速科技进步,</div>
                    </li>
                    <li><a href="/article/1892423520114241536.htm"
                           title="GenAI 平台,3 分钟即可构建基于 Claude、DeepSeek 的 AI Agent" target="_blank">GenAI 平台,3 分钟即可构建基于 Claude、DeepSeek 的 AI Agent</a>
                        <span class="text-muted">DO_Community</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>DigitalOcean云服务在前不久发布了GenAI平台——一个让任何团队都能在几分钟内构建和部署AI代理的平台。DigitalOcean的GenAI平台持续扩展,让人工智能驱动的开发变得更加易用、灵活且强大。近日,Digitalocean宣布将Anthropic的Claude模型和DeepSeekR1引入Digitalocean的生态系统,为你提供更多构建和部署AI应用的选择。通过Anthro</div>
                    </li>
                    <li><a href="/article/1892422258589233152.htm"
                           title="智享AI直播三代系统,马斯克旗下AI人工智能直播工具,媲美DeepSeek!" target="_blank">智享AI直播三代系统,马斯克旗下AI人工智能直播工具,媲美DeepSeek!</a>
                        <span class="text-muted">V__17671155793</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>智享AI直播三代系统,马斯克旗下AI人工智能直播工具,媲美DeepSeek!在科技飞速发展的当下,人工智能正以前所未有的态势重塑着各个行业的格局。直播领域,作为信息传播与商业交互的前沿阵地,也在AI技术的赋能下迎来了颠覆性的变革。其中,马斯克旗下的智享AI直播三代系统宛如一颗璀璨的新星,横空出世,以其卓越的性能和创新的理念,迅速在竞争激烈的直播市场中崭露头角,甚至被业界誉为可媲美DeepSeek的</div>
                    </li>
                    <li><a href="/article/1892419226480734208.htm"
                           title="DeepSeek与ChatGPT:会取代搜索引擎和人工客服的人工智能革命" target="_blank">DeepSeek与ChatGPT:会取代搜索引擎和人工客服的人工智能革命</a>
                        <span class="text-muted">云边有个稻草人</span>
<a class="tag" taget="_blank" href="/search/%E7%83%AD%E9%97%A8%E6%96%87%E7%AB%A0/1.htm">热门文章</a><a class="tag" taget="_blank" href="/search/chatgpt/1.htm">chatgpt</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</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/DeepSeek/1.htm">DeepSeek</a>
                        <div>云边有个稻草人-CSDN博客在众多创新技术中,DeepSeek和ChatGPT无疑是最为引人注目的。它们通过强大的搜索和对话生成能力,能够改变我们与计算机交互的方式,帮助我们高效地获取信息,增强智能服务。本文将深入探讨这两项技术如何结合使用,为用户提供更精准、更流畅的对话和搜索体验。目录一、介绍1.1什么是DeepSeek?1.2什么是ChatGPT?1.3DeepSeek与ChatGPT的结合:</div>
                    </li>
                    <li><a href="/article/1892411035852271616.htm"
                           title="LLM与知识图谱融合:智能运维知识库构建" target="_blank">LLM与知识图谱融合:智能运维知识库构建</a>
                        <span class="text-muted">AI天才研究院</span>
<a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/R1/1.htm">R1</a><a class="tag" taget="_blank" href="/search/%26amp%3B/1.htm">&</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AEAI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大数据AI人工智能大模型</a><a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">AI大模型企业级应用开发实战</a><a class="tag" taget="_blank" href="/search/AI%E5%AE%9E%E6%88%98/1.htm">AI实战</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E7%A7%91%E5%AD%A6/1.htm">计算科学</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E8%AE%A1%E7%AE%97/1.htm">神经计算</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</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/%E5%A4%A7%E5%9E%8B%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">大型语言模型</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/AGI/1.htm">AGI</a><a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a><a class="tag" taget="_blank" href="/search/RPA/1.htm">RPA</a>
                        <div>1.背景介绍随着信息技术的飞速发展,IT运维管理面临着越来越大的挑战。海量的设备、复杂的网络环境、日益增长的数据量,使得传统的运维方式难以满足需求。为了提高运维效率和质量,智能运维应运而生。智能运维的核心是将人工智能技术应用于运维领域,通过机器学习、深度学习等算法,实现自动化、智能化的运维管理。其中,大语言模型(LLM)和知识图谱是两个重要的技术方向。LLM能够理解和生成自然语言,可以用于构建智能</div>
                    </li>
                    <li><a href="/article/1892407882155094016.htm"
                           title="知识图谱的作用及其更新方式" target="_blank">知识图谱的作用及其更新方式</a>
                        <span class="text-muted">甜瓜瓜哥</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</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/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/1.htm">知识图谱</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>知识图谱的作用及其更新方式简介作用1.语义理解和推理2.信息检索3.推荐系统4.自然语言处理5.智能对话系统更新知识图谱的过程1.数据收集2.数据清洗和处理3.知识抽取4.知识融合5.验证和评估6.部署和应用总结简介知识图谱是一种以图形结构表示知识的方法,它包含了实体(如人物、地点、事物)以及它们之间的关系。知识图谱可以用于帮助计算机理解和处理自然语言,进行信息检索,进行推荐系统等多种应用。作用1</div>
                    </li>
                    <li><a href="/article/1892392376316522496.htm"
                           title="机器学习·文本数据读写处理" target="_blank">机器学习·文本数据读写处理</a>
                        <span class="text-muted">AAA顶置摸鱼</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</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/%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86/1.htm">数据处理</a>
                        <div>前言在自然语言处理的第一步,需要面对的是各种各样以不同形式表现的文本数据,比如,txt、Excel中的表格数据,还有无法直接打开的pkl文件等。针对这些不同类型的数据,可以基于Python中的基本功能函数或者调用某些库进行读写以及作一些基本的处理。一、文本数据读写方法1.读写TXT文件读取方法:read():读取整个文件,返回字符串。readline():逐行读取,返回字符串。readlines(</div>
                    </li>
                    <li><a href="/article/1892390108330520576.htm"
                           title="Python中LLM的知识图谱构建:动态更新与推理" target="_blank">Python中LLM的知识图谱构建:动态更新与推理</a>
                        <span class="text-muted">二进制独立开发</span>
<a class="tag" taget="_blank" href="/search/GenAI%E4%B8%8EPython/1.htm">GenAI与Python</a><a class="tag" taget="_blank" href="/search/%E9%9D%9E%E7%BA%AF%E7%B2%B9GenAI/1.htm">非纯粹GenAI</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/1.htm">知识图谱</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/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</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/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a>
                        <div>文章目录引言1.知识图谱的基本概念1.1知识图谱的定义1.2知识图谱的构建流程2.利用LLM进行知识抽取2.1实体识别2.2关系抽取2.3属性抽取3.知识融合3.1实体对齐3.2冲突消解4.知识存储5.知识推理5.1规则推理5.2基于LLM的推理6.动态更新6.1增量更新6.2实时更新7.结论引言随着人工智能技术的飞速发展,知识图谱(KnowledgeGraph,KG)作为一种结构化的知识表示方法</div>
                    </li>
                    <li><a href="/article/1892381274820112384.htm"
                           title="AI编剧系统深度解析:从算法架构到影视工业化应用实战" target="_blank">AI编剧系统深度解析:从算法架构到影视工业化应用实战</a>
                        <span class="text-muted">Coderabo</span>
<a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/R1%E6%A8%A1%E5%9E%8B%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%BA%94%E7%94%A8/1.htm">R1模型企业级应用</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/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>媒体娱乐行业革命:AI编剧创意辅助系统架构解析与实战应用一、行业背景与技术架构在流媒体内容需求激增的当下,传统编剧模式面临产能瓶颈。AI编剧创意辅助系统通过自然语言处理(NLP)、生成对抗网络(GAN)和知识图谱技术,构建了包含剧本生成、情节优化、角色塑造等模块的智能创作平台。核心架构分为:知识图谱层:整合影视剧本数据库(IMSDb)、维基百科等结构化数据NLP处理层:基于Transformer的</div>
                    </li>
                    <li><a href="/article/1892381020796284928.htm"
                           title="无需配置!深脑云一键启用DeepSeek全系AI模型" target="_blank">无需配置!深脑云一键启用DeepSeek全系AI模型</a>
                        <span class="text-muted">小深ai硬件分享</span>
<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/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>解锁无限算力潜能,开启DeepSeek镜像云算力新征程!在人工智能风起云涌的时代,算力就是驱动创新的引擎,而优质的模型镜像则是引领变革的密钥。我们向您介绍一下我们的深脑云算力平台,这里汇聚了DeepSeek的各大版本镜像,为您的科研、开发与创新之路注入强大动力!强大的DeepSeek模型家族DeepSeek,作为AI领域的璀璨明星,以其卓越的性能和先进的技术架构闻名遐迩。我们的平台精心整合了Dee</div>
                    </li>
                    <li><a href="/article/1892381022583058432.htm"
                           title="AI服务器散热黑科技:让芯片“冷静”提速" target="_blank">AI服务器散热黑科技:让芯片“冷静”提速</a>
                        <span class="text-muted">小深ai硬件分享</span>
<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/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>AI服务器为何需要散热黑科技在人工智能飞速发展的当下,AI服务器作为核心支撑,作用重大。从互联网智能推荐,到医疗疾病诊断辅助,从金融风险预测,到教育个性化学习,AI服务器广泛应用,为各类复杂人工智能应用提供强大算力。然而,AI服务器在运行时面临着严峻的散热挑战。随着人工智能技术的不断发展,对AI服务器的计算能力要求越来越高,这使得服务器的功率密度急剧增加。以GPT-4的训练为例,它需要大量的GPU</div>
                    </li>
                    <li><a href="/article/1892375727005822976.htm"
                           title="深度应用场景:DeepSeek —— 探索AI赋能的智慧未来" target="_blank">深度应用场景:DeepSeek —— 探索AI赋能的智慧未来</a>
                        <span class="text-muted">人工智能专属驿站</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>深度应用场景:DeepSeek——探索AI赋能的智慧未来随着人工智能的迅猛发展,数据的价值已不再局限于简单的存储与处理,它们正变得更加智能与高效。DeepSeek,这一创新的AI技术平台,正以其独特的深度学习能力,开启了各行各业的智能化变革。让我们走进一个由DeepSeek打造的深度应用场景,探索它如何推动未来的发展。1.智能医疗:精准诊断,拯救生命想象一下,医生们不再是唯一的诊断专家,而是与AI</div>
                    </li>
                    <li><a href="/article/1892369420290945024.htm"
                           title="在 DeepSeek 驱动的编程变革中抓住机遇并脱颖而出" target="_blank">在 DeepSeek 驱动的编程变革中抓住机遇并脱颖而出</a>
                        <span class="text-muted">智想天开</span>
<a class="tag" taget="_blank" href="/search/AI%E6%8A%80%E6%9C%AF/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/deep/1.htm">deep</a><a class="tag" taget="_blank" href="/search/learning/1.htm">learning</a>
                        <div>公众号地址:在DeepSeek驱动的编程变革中抓住机遇并脱颖而出更多内容请关注公众号:智想天开前言在DeepSeek引领的新一轮AI技术革新中,程序员们正面临着前所未有的挑战。随着DeepSeek等人工智能工具的迅猛发展,编程领域正在发生深刻变革。这些先进的工具不仅能够自动化完成繁重的代码生成和调试任务,还能够根据大量数据提供优化建议,改变了传统编程的工作流程。虽然这些技术为提高工作效率和解放开发</div>
                    </li>
                    <li><a href="/article/1892369293711044608.htm"
                           title="项目管理新趋势!2024年,Jira与Codes你更倾向谁?" target="_blank">项目管理新趋势!2024年,Jira与Codes你更倾向谁?</a>
                        <span class="text-muted">Codes_AndyLiu</span>
<a class="tag" taget="_blank" href="/search/jira/1.htm">jira</a><a class="tag" taget="_blank" href="/search/teambition/1.htm">teambition</a><a class="tag" taget="_blank" href="/search/redmine/1.htm">redmine</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E8%BD%AF%E4%BB%B6/1.htm">项目管理软件</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7/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/jira/1.htm">jira</a><a class="tag" taget="_blank" href="/search/%E5%9B%BD%E4%BA%A7%E5%B9%B3%E6%9B%BF/1.htm">国产平替</a>
                        <div>一、项目管理软件新趋势概述2024年,项目管理软件呈现出诸多新趋势,这些趋势对于项目管理的重要性日益凸显。在数字化转型方面,项目管理软件成为企业实现数字化转型的关键工具。让老板感知数据,让中层管理者感受先进,让基层员工感到舒心.人工智能与自动化在项目管理软件中的应用也越来越广泛。项目管理软件正朝着智能化、自动化的方向迈进,利用AI技术提供个性化和场景化解决方案。例如,工作周报AI化,自动化测试,代</div>
                    </li>
                    <li><a href="/article/1892362734704586752.htm"
                           title="【人工智能】提升编程效率的6种GPT实用应用技巧!保姆级讲解!" target="_blank">【人工智能】提升编程效率的6种GPT实用应用技巧!保姆级讲解!</a>
                        <span class="text-muted">ChatGPT-千鑫</span>
<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%E9%A2%86%E5%9F%9F/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/gpt/1.htm">gpt</a><a class="tag" taget="_blank" href="/search/AI%E7%BC%96%E7%A8%8B/1.htm">AI编程</a>
                        <div>文章目录实用教程:六大AI编程技巧解锁效率提升技巧1:快速实现需求demo操作步骤技巧2:代码审查——AI帮你提升代码质量操作步骤技巧3:错误排查——AI助你快速定位问题操作步骤技巧4:代码注释——AI帮你理解复杂逻辑操作步骤技巧5:数据整理——AI帮你高效准备测试数据操作步骤技巧6:学习未知代码库——AI助你快速掌握新工具操作步骤使用教程:全面掌握CodeMoss的高效编程工具(1)VSCode</div>
                    </li>
                    <li><a href="/article/1892362356776824832.htm"
                           title="利用人工智能增强可读性:自动为文本添加标点符号" target="_blank">利用人工智能增强可读性:自动为文本添加标点符号</a>
                        <span class="text-muted">姚家湾</span>
<a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E6%A0%87%E7%82%B9%E7%AC%A6%E5%8F%B7/1.htm">标点符号</a>
                        <div>在数字通信时代,文本的清晰度和可读性至关重要。无论是转录口语、处理原始文本数据还是改进用户生成的内容,标点符号在传达预期信息方面都起着至关重要的作用。但是,手动编辑文本以添加标点符号可能非常耗时且容易出错。这就是人工智能(AI)发挥作用的地方,它提供了一种强大的解决方案,可以自动将标点符号插入句子中。目前,利用大模型的能力,完全可以胜任添加标点符号的工作,不需要其它特别的处理程序。参考代码from</div>
                    </li>
                    <li><a href="/article/1892348360938024960.htm"
                           title="基于Python的搜索引擎的设计与实现" target="_blank">基于Python的搜索引擎的设计与实现</a>
                        <span class="text-muted">AI大模型应用之禅</span>
<a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/R1/1.htm">R1</a><a class="tag" taget="_blank" href="/search/%26amp%3B/1.htm">&</a><a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E4%B8%8E%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">AI大模型与大数据</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>搜索引擎,Python,爬虫,自然语言处理,信息检索,索引,算法,数据库1.背景介绍在信息爆炸的时代,海量数据无处不在,高效地获取所需信息变得至关重要。搜索引擎作为信息获取的桥梁,扮演着不可或缺的角色。传统的搜索引擎往往依赖于庞大的服务器集群和复杂的算法,对资源消耗较大,且难以满足个性化搜索需求。基于Python的搜索引擎设计,则凭借Python语言的易学易用、丰富的第三方库和强大的社区支持,为开</div>
                    </li>
                    <li><a href="/article/1892342942933250048.htm"
                           title="《从编程小白到人工智能大神:大学新生Python入门攻略》" target="_blank">《从编程小白到人工智能大神:大学新生Python入门攻略》</a>
                        <span class="text-muted">千帆过尽.</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>前言在如今这个技术飞速发展的时代,编程已经成为许多大学生不可或缺的技能,尤其是对于人工智能方向的学生来说,编程更是必不可少的一部分。作为一名大三学生,并且专注于Python和人工智能方向,我深知刚开始学习编程时的挑战与迷茫。希望本文能帮助作为大学新生的你们在编程入门的过程中少走弯路,提供一条清晰有效的学习路径。一、编程语言选择作为编程新手,选择一门适合自己的编程语言至关重要。对于希望进入人工智能领</div>
                    </li>
                    <li><a href="/article/1892339411396390912.htm"
                           title="【拥抱AI】如何实现AI外呼通话,并与客户达成确认" target="_blank">【拥抱AI】如何实现AI外呼通话,并与客户达成确认</a>
                        <span class="text-muted">奔跑草-</span>
<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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>实现AI外呼通话并与客户达成确认涉及多个技术组件和步骤。以下是一个基本的流程和技术方案,仅供参考。1.技术选型与准备主要技术组件语音识别(ASR):将客户的语音转换为文本。自然语言处理(NLP):理解和生成自然语言对话。语音合成(TTS):将文本转换为客户可以听到的语音。呼叫平台/API:用于发起和管理电话呼叫。数据库:存储客户信息、通话记录等数据。业务逻辑层:处理对话管理和决策逻辑。2.系统架构</div>
                    </li>
                    <li><a href="/article/1892338402662084608.htm"
                           title="探索Vearch:高效的深度学习向量相似度搜索系统" target="_blank">探索Vearch:高效的深度学习向量相似度搜索系统</a>
                        <span class="text-muted">scaFHIO</span>
<a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</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/python/1.htm">python</a>
                        <div>Vearch是一个可扩展的分布式系统,用于高效搜索深度学习向量的相似度。在本文中,我们将介绍Vearch的技术背景及其核心原理,演示如何使用VearchPythonSDK进行安装和设置,并分析一些实际应用场景,最后提供一些实战建议。技术背景介绍随着深度学习技术的发展,向量相似度搜索在各类应用中变得越来越重要。从图像识别、推荐系统到自然语言处理,向量搜索可以极大地提升系统的性能。然而,随着数据量的增</div>
                    </li>
                    <li><a href="/article/1892330207495385088.htm"
                           title="华为的云端训练算力与迭代效率" target="_blank">华为的云端训练算力与迭代效率</a>
                        <span class="text-muted">AI大模型应用之禅</span>
<a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/R1/1.htm">R1</a><a class="tag" taget="_blank" href="/search/%26amp%3B/1.htm">&</a><a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E4%B8%8E%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">AI大模型与大数据</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E7%A7%91%E5%AD%A6/1.htm">计算科学</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E8%AE%A1%E7%AE%97/1.htm">神经计算</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</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/%E5%A4%A7%E5%9E%8B%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">大型语言模型</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/AGI/1.htm">AGI</a><a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a><a class="tag" taget="_blank" href="/search/RPA/1.htm">RPA</a>
                        <div>华为云、云端训练、算力、迭代效率、人工智能、深度学习、模型训练、分布式训练、优化算法1.背景介绍人工智能(AI)技术近年来发展迅速,深度学习作为其核心驱动力,在图像识别、自然语言处理、语音识别等领域取得了突破性进展。然而,深度学习模型的训练需要海量数据和强大的计算资源,这成为AI技术发展面临的瓶颈之一。云计算作为一种新型的计算模式,为深度学习提供了强大的算力支持。华为云作为国内领先的云计算平台,在</div>
                    </li>
                    <li><a href="/article/1892314580617588736.htm"
                           title="AI外呼机器人:营销新利器还是骚扰电话的升级版?" target="_blank">AI外呼机器人:营销新利器还是骚扰电话的升级版?</a>
                        <span class="text-muted">yoloGina</span>
<a class="tag" taget="_blank" href="/search/%E5%AE%A2%E6%88%B7%E7%AE%A1%E7%90%86/1.htm">客户管理</a><a class="tag" taget="_blank" href="/search/%E5%A4%96%E5%91%BC%E7%B3%BB%E7%BB%9F/1.htm">外呼系统</a><a class="tag" taget="_blank" href="/search/%E7%94%B5%E8%AF%9D%E5%A4%96%E5%91%BC/1.htm">电话外呼</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/%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">机器人</a>
                        <div>"您好,这里是XX房产,最近有购房需求吗?""您好,您最近有种牙需求吗?"相信很多人都接到过类似的营销电话,而电话那头,很可能已经不是真人,而是AI外呼机器人。近年来,AI外呼系统凭借其高效率、低成本的优势,迅速在电销行业普及,成为企业营销的"新宠"。据统计,2022年中国AI外呼市场规模已达50亿元,预计2025年将突破100亿元。AI外呼系统的核心技术是语音识别和自然语言处理。通过深度学习海量</div>
                    </li>
                    <li><a href="/article/1892310044372955136.htm"
                           title="使用Cohere进行文本生成: 从安装到实战" target="_blank">使用Cohere进行文本生成: 从安装到实战</a>
                        <span class="text-muted">shuoac</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>Cohere是一家加拿大初创公司,提供自然语言处理模型,帮助企业提升人机交互体验。本文将详细介绍如何使用Cohere进行文本生成,包括环境配置、核心原理、代码演示和实际应用场景分析。1.技术背景介绍随着自然语言处理技术的快速发展,基于大模型的文本生成应用在各行各业中展现出了巨大的潜力。Cohere提供了高效、易用的API,使得开发者能够快速集成高质量的文本生成能力。本文将带你一步步实现这些功能。2</div>
                    </li>
                    <li><a href="/article/1892276983908331520.htm"
                           title="【深度学习pytorch-93】Transformer 相比 RNN 的优势" target="_blank">【深度学习pytorch-93】Transformer 相比 RNN 的优势</a>
                        <span class="text-muted">华东算法王</span>
<a class="tag" taget="_blank" href="/search/DL-pytorch/1.htm">DL-pytorch</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</a>
                        <div>Transformer相比RNN的优势Transformer和RNN(循环神经网络)都是自然语言处理(NLP)领域的重要架构,但它们的工作原理和应用方式有很大不同。Transformer由于其独特的结构和机制,在多个方面优于RNN。以下是Transformer相比RNN的主要优势:1.并行计算能力RNN的局限性RNN是按顺序处理输入的,即每个时间步的输出都依赖于前一个时间步的输出。这意味着,在训练</div>
                    </li>
                                <li><a href="/article/22.htm"
                                       title="redis学习笔记——不仅仅是存取数据" target="_blank">redis学习笔记——不仅仅是存取数据</a>
                                    <span class="text-muted">Everyday都不同</span>
<a class="tag" taget="_blank" href="/search/returnSource/1.htm">returnSource</a><a class="tag" taget="_blank" href="/search/expire%2Fdel/1.htm">expire/del</a><a class="tag" taget="_blank" href="/search/incr%2Flpush/1.htm">incr/lpush</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%86%E5%8C%BA/1.htm">数据库分区</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>最近项目中用到比较多redis,感觉之前对它一直局限于get/set数据的层面。其实作为一个强大的NoSql数据库产品,如果好好利用它,会带来很多意想不到的效果。(因为我搞java,所以就从jedis的角度来补充一点东西吧。PS:不一定全,只是个人理解,不喜勿喷) 
  
1、关于JedisPool.returnSource(Jedis jeids) 
  
这个方法是从red</div>
                                </li>
                                <li><a href="/article/149.htm"
                                       title="SQL性能优化-持续更新中。。。。。。" target="_blank">SQL性能优化-持续更新中。。。。。。</a>
                                    <span class="text-muted">atongyeye</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>
                                    <div>1 通过ROWID访问表--索引 
你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高. 
 
2 共享SQL语句--相同的sql放入缓存 
 
3 选择最有效率的表</div>
                                </li>
                                <li><a href="/article/276.htm"
                                       title="[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善" target="_blank">[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/JAVA%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">JAVA虚拟机</a>
                                    <div> 
     如果我们用汇编语言编写一个直接读写CPU寄存器的代码段,然后利用这个代码段去控制被操作系统屏蔽的硬件资源,这对于JVM虚拟机显然是不合法的,对操作系统来讲,这样也是不合法的,但是如果是一个工程项目的确需要这样做,合同已经签了,我们又不能够这样做,怎么办呢? 那么一个精通汇编语言的那种X客,是否在这个时候就会发生某种至关重要的作用呢? 
 
&n</div>
                                </li>
                                <li><a href="/article/403.htm"
                                       title="lvs- real" target="_blank">lvs- real</a>
                                    <span class="text-muted">男人50</span>
<a class="tag" taget="_blank" href="/search/LVS/1.htm">LVS</a>
                                    <div>#!/bin/bash 
# 
# Script to start LVS DR real server. 
# description: LVS DR real server 
# 
#.  /etc/rc.d/init.d/functions 
 
VIP=10.10.6.252 
host='/bin/hostname' 
 
case "$1" in 
sta</div>
                                </li>
                                <li><a href="/article/530.htm"
                                       title="生成公钥和私钥" target="_blank">生成公钥和私钥</a>
                                    <span class="text-muted">oloz</span>
<a class="tag" taget="_blank" href="/search/DSA/1.htm">DSA</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E5%8A%A0%E5%AF%86/1.htm">安全加密</a>
                                    <div>package com.msserver.core.util;

import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;

public class SecurityUtil {
</div>
                                </li>
                                <li><a href="/article/657.htm"
                                       title="UIView 中加入的cocos2d,背景透明" target="_blank">UIView 中加入的cocos2d,背景透明</a>
                                    <span class="text-muted">374016526</span>
<a class="tag" taget="_blank" href="/search/cocos2d/1.htm">cocos2d</a><a class="tag" taget="_blank" href="/search/glClearColor/1.htm">glClearColor</a>
                                    <div>要点是首先pixelFormat:kEAGLColorFormatRGBA8,必须有alpha层才能透明。然后view设置为透明glView.opaque = NO;[director setOpenGLView:glView];[self.viewController.view setBackgroundColor:[UIColor clearColor]];[self.viewControll</div>
                                </li>
                                <li><a href="/article/784.htm"
                                       title="mysql常用命令" target="_blank">mysql常用命令</a>
                                    <span class="text-muted">香水浓</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>连接数据库 
mysql -u troy -ptroy 
 
备份表 
mysqldump -u troy -ptroy mm_database mm_user_tbl > user.sql 
 
恢复表(与恢复数据库命令相同) 
mysql -u troy -ptroy mm_database < user.sql 
 
备份数据库 
mysqldump -u troy -ptroy</div>
                                </li>
                                <li><a href="/article/911.htm"
                                       title="我的架构经验系列文章 - 后端架构 - 系统层面" target="_blank">我的架构经验系列文章 - 后端架构 - 系统层面</a>
                                    <span class="text-muted">agevs</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a>
                                    <div>系统层面:
高可用性

所谓高可用性也就是通过避免单独故障加上快速故障转移实现一旦某台物理服务器出现故障能实现故障快速恢复。一般来说,可以采用两种方式,如果可以做业务可以做负载均衡则通过负载均衡实现集群,然后针对每一台服务器进行监控,一旦发生故障则从集群中移除;如果业务只能有单点入口那么可以通过实现Standby机加上虚拟IP机制,实现Active机在出现故障之后虚拟IP转移到Standby的快速</div>
                                </li>
                                <li><a href="/article/1038.htm"
                                       title="利用ant进行远程tomcat部署" target="_blank">利用ant进行远程tomcat部署</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a>
                                    <div>在javaEE项目中,需要将工程部署到远程服务器上,如果部署的频率比较高,手动部署的方式就比较麻烦,可以利用Ant工具实现快捷的部署。这篇博文详细介绍了ant配置的步骤(http://www.cnblogs.com/GloriousOnion/archive/2012/12/18/2822817.html),但是在tomcat7以上不适用,需要修改配置,具体如下: 
1.配置tomcat的用户角色</div>
                                </li>
                                <li><a href="/article/1165.htm"
                                       title="获取复利总收入" target="_blank">获取复利总收入</a>
                                    <span class="text-muted">baalwolf</span>
<a class="tag" taget="_blank" href="/search/%E8%8E%B7%E5%8F%96/1.htm">获取</a>
                                    <div>       public static void main(String args[]){ 
        int money=200; 
        int year=1; 
        double rate=0.1; 
&</div>
                                </li>
                                <li><a href="/article/1292.htm"
                                       title="eclipse.ini解释" target="_blank">eclipse.ini解释</a>
                                    <span class="text-muted">BigBird2012</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                    <div>大多数java开发者使用的都是eclipse,今天感兴趣去eclipse官网搜了一下eclipse.ini的配置,供大家参考,我会把关键的部分给大家用中文解释一下。还是推荐有问题不会直接搜谷歌,看官方文档,这样我们会知道问题的真面目是什么,对问题也有一个全面清晰的认识。 
Overview 
1、Eclipse.ini的作用 
Eclipse startup is controlled by th</div>
                                </li>
                                <li><a href="/article/1419.htm"
                                       title="AngularJS实现分页功能" target="_blank">AngularJS实现分页功能</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/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E9%A1%B5/1.htm">分页</a>
                                    <div>        对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能。既然在整个应用中这是一种很常见的需求,那么把这一功能抽象成一个通用的、可复用的分页(Paginator)服务是很有意义的。 
  &nbs</div>
                                </li>
                                <li><a href="/article/1546.htm"
                                       title="[Maven学习笔记三]Maven archetype" target="_blank">[Maven学习笔记三]Maven archetype</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/ArcheType/1.htm">ArcheType</a>
                                    <div>archetype的英文意思是原型,Maven archetype表示创建Maven模块的模版,比如创建web项目,创建Spring项目等等. 
  
mvn archetype提供了一种命令行交互式创建Maven项目或者模块的方式, 
  
mvn archetype 
  
1.在LearnMaven-ch03目录下,执行命令mvn archetype:gener</div>
                                </li>
                                <li><a href="/article/1673.htm"
                                       title="【Java命令三】jps" target="_blank">【Java命令三】jps</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Java%E5%91%BD%E4%BB%A4/1.htm">Java命令</a>
                                    <div>jps很简单,用于显示当前运行的Java进程,也可以连接到远程服务器去查看 
  
[hadoop@hadoop bin]$ jps -help
usage: jps [-help]
       jps [-q] [-mlvV] [<hostid>]

Definitions:
    <hostid>:      <hostname>[:</div>
                                </li>
                                <li><a href="/article/1800.htm"
                                       title="ZABBIX2.2 2.4 等各版本之间的兼容性" target="_blank">ZABBIX2.2 2.4 等各版本之间的兼容性</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>zabbix更新很快,从2009年到现在已经更新多个版本,为了使用更多zabbix的新特性,随之而来的便是升级版本,zabbix版本兼容性是必须优先考虑的一点 客户端AGENT兼容 
zabbix1.x到zabbix2.x的所有agent都兼容zabbix server2.4:如果你升级zabbix server,客户端是可以不做任何改变,除非你想使用agent的一些新特性。 Zabbix代理(p</div>
                                </li>
                                <li><a href="/article/1927.htm"
                                       title="unity 3d还是cocos2dx哪个适合游戏?" target="_blank">unity 3d还是cocos2dx哪个适合游戏?</a>
                                    <span class="text-muted">brotherlamp</span>
<a class="tag" taget="_blank" href="/search/unity%E8%87%AA%E5%AD%A6/1.htm">unity自学</a><a class="tag" taget="_blank" href="/search/unity%E6%95%99%E7%A8%8B/1.htm">unity教程</a><a class="tag" taget="_blank" href="/search/unity%E8%A7%86%E9%A2%91/1.htm">unity视频</a><a class="tag" taget="_blank" href="/search/unity%E8%B5%84%E6%96%99/1.htm">unity资料</a><a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a>
                                    <div>unity 3d还是cocos2dx哪个适合游戏? 
问:unity 3d还是cocos2dx哪个适合游戏? 
答:首先目前来看unity视频教程因为是3d引擎,目前对2d支持并不完善,unity 3d 目前做2d普遍两种思路,一种是正交相机,3d画面2d视角,另一种是通过一些插件,动态创建mesh来绘制图形单元目前用的较多的是2d toolkit,ex2d,smooth moves,sm2, 
</div>
                                </li>
                                <li><a href="/article/2054.htm"
                                       title="百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序" target="_blank">百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序</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/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a><a class="tag" taget="_blank" href="/search/%E6%8B%9B%E8%81%98/1.htm">招聘</a>
                                    <div>

import java.util.Arrays;

/**
 * 最早是在陈利人老师的微博看到这道题:
 * #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K
 * 设计一个排序算法。It should be faster than O(n*lgn)。</div>
                                </li>
                                <li><a href="/article/2181.htm"
                                       title="获取checkbox复选框的值" target="_blank">获取checkbox复选框的值</a>
                                    <span class="text-muted">chiangfai</span>
<a class="tag" taget="_blank" href="/search/checkbox/1.htm">checkbox</a>
                                    <div><title>CheckBox</title>
  <script type = "text/javascript">
	doGetVal: function  doGetVal()
	{
		//var fruitName = document.getElementById("apple").value;//根据</div>
                                </li>
                                <li><a href="/article/2308.htm"
                                       title="MySQLdb用户指南" target="_blank">MySQLdb用户指南</a>
                                    <span class="text-muted">chenchao051</span>
<a class="tag" taget="_blank" href="/search/mysqldb/1.htm">mysqldb</a>
                                    <div>原网页被墙,放这里备用。  MySQLdb User's Guide  
Contents 
 
 Introduction 
 Installation 
  _mysql 
   
   MySQL C API translation 
   MySQL C API function mapping 
   Some _mysql examples 
    
  MySQLdb 
   
 </div>
                                </li>
                                <li><a href="/article/2435.htm"
                                       title="HIVE 窗口及分析函数" target="_blank">HIVE 窗口及分析函数</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/%E7%AA%97%E5%8F%A3%E5%87%BD%E6%95%B0/1.htm">窗口函数</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E6%9E%90%E5%87%BD%E6%95%B0/1.htm">分析函数</a>
                                    <div>窗口函数应用场景: 
(1)用于分区排序 
(2)动态Group By 
(3)Top N 
(4)累计计算 
(5)层次查询 
 
一、分析函数 
用于等级、百分点、n分片等。 
函数             说明 
RANK()     &nbs</div>
                                </li>
                                <li><a href="/article/2562.htm"
                                       title="PHP ZipArchive 实现压缩解压Zip文件" target="_blank">PHP ZipArchive 实现压缩解压Zip文件</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/zip/1.htm">zip</a>
                                    <div>  
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。 
一、解压缩zip文件        01   02   03   04   05   06   07   08   09   10   11   </div>
                                </li>
                                <li><a href="/article/2689.htm"
                                       title="精彩英语贺词" target="_blank">精彩英语贺词</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E8%8B%B1%E8%AF%AD/1.htm">英语</a>
                                    <div>I'm always here  
            我会一直在这里支持你  
              &nb</div>
                                </li>
                                <li><a href="/article/2816.htm"
                                       title="基于Java注解的Spring的IoC功能" target="_blank">基于Java注解的Spring的IoC功能</a>
                                    <span class="text-muted">e200702084</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a><a class="tag" taget="_blank" href="/search/Office/1.htm">Office</a>
                                    <div>                                
  </div>
                                </li>
                                <li><a href="/article/2943.htm"
                                       title="java模拟post请求" target="_blank">java模拟post请求</a>
                                    <span class="text-muted">geeksun</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>一般API接收客户端(比如网页、APP或其他应用服务)的请求,但在测试时需要模拟来自外界的请求,经探索,使用HttpComponentshttpClient可模拟Post提交请求。  此处用HttpComponents的httpclient来完成使命。   
import org.apache.http.HttpEntity ;
import org.apache.http.HttpRespon</div>
                                </li>
                                <li><a href="/article/3070.htm"
                                       title="Swift语法之 ---- ?和!区别" target="_blank">Swift语法之 ---- ?和!区别</a>
                                    <span class="text-muted">hongtoushizi</span>
<a class="tag" taget="_blank" href="/search/%3F/1.htm">?</a><a class="tag" taget="_blank" href="/search/swift/1.htm">swift</a><a class="tag" taget="_blank" href="/search/%21/1.htm">!</a>
                                    <div>转载自: http://blog.sina.com.cn/s/blog_71715bf80102ux3v.html 
  
Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:  
var stringValue : String 
//</div>
                                </li>
                                <li><a href="/article/3197.htm"
                                       title="centos7安装jdk1.7" target="_blank">centos7安装jdk1.7</a>
                                    <span class="text-muted">jisonami</span>
<a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                                    <div>安装JDK1.7 
步骤1、解压tar包在当前目录 
[root@localhost usr]#tar -xzvf jdk-7u75-linux-x64.tar.gz 
步骤2:配置环境变量 
在etc/profile文件下添加 
export JAVA_HOME=/usr/java/jdk1.7.0_75 
export CLASSPATH=/usr/java/jdk1.7.0_75/lib 
</div>
                                </li>
                                <li><a href="/article/3324.htm"
                                       title="数据源架构模式之数据映射器" target="_blank">数据源架构模式之数据映射器</a>
                                    <span class="text-muted">home198979</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%98%A0%E5%B0%84%E5%99%A8/1.htm">数据映射器</a><a class="tag" taget="_blank" href="/search/datamapper/1.htm">datamapper</a>
                                    <div>前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。 
  
一、概念 
数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射器层。概念永远都是抽象的,简单的说,数据映射器就是一个负责将数据映射到对象的类数据。 
&nb</div>
                                </li>
                                <li><a href="/article/3451.htm"
                                       title="在Python中使用MYSQL" target="_blank">在Python中使用MYSQL</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                                    <div>缘由     近期在折腾一个小东西须要抓取网上的页面。然后进行解析。将结果放到 
数据库中。     了解到 
Python在这方面有优势,便选用之。     由于我有台 
server上面安装有 
mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里 
记录一下,大家共勉。      
python中mysql的调用      
百度之后能够通过MySQLdb进行数据库操作。</div>
                                </li>
                                <li><a href="/article/3578.htm"
                                       title="单例模式" target="_blank">单例模式</a>
                                    <span class="text-muted">hxl1988_0311</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/1.htm">单例</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BB%B6/1.htm">单件</a>
                                    <div>package com.sosop.designpattern.singleton;

/*
 * 单件模式:保证一个类必须只有一个实例,并提供全局的访问点
 * 
 * 所以单例模式必须有私有的构造器,没有私有构造器根本不用谈单件
 * 
 * 必须考虑到并发情况下创建了多个实例对象
 * */

/**
 * 虽然有锁,但是只在第一次创建对象的时候加锁,并发时不会存在效率</div>
                                </li>
                                <li><a href="/article/3705.htm"
                                       title="27种迹象显示你应该辞掉程序员的工作" target="_blank">27种迹象显示你应该辞掉程序员的工作</a>
                                    <span class="text-muted">vipshichg</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a>
                                    <div>1、你仍然在等待老板在2010年答应的要提拔你的暗示。 2、你的上级近10年没有开发过任何代码。 3、老板假装懂你说的这些技术,但实际上他完全不知道你在说什么。 4、你干完的项目6个月后才部署到现场服务器上。 5、时不时的,老板在检查你刚刚完成的工作时,要求按新想法重新开发。 6、而最终这个软件只有12个用户。 7、时间全浪费在办公室政治中,而不是用在开发好的软件上。 8、部署前5分钟才开始测试。</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>