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/1950214205252628480.htm"
                           title="为了在未来的人工智能世界中取得成功,学生们必须学习人类写作的优点" target="_blank">为了在未来的人工智能世界中取得成功,学生们必须学习人类写作的优点</a>
                        <span class="text-muted">睿邸管家</span>

                        <div>澳大利亚各地的学生在新学年开始使用铅笔、钢笔和键盘学习写字。在工作场所,机器也在学习写作,如此有效,几年之内,它们可能会写得比人类更好。有时它们已经做到了,就像Grammarly这样的应用程序所展示的那样。当然,人类现在的日常写作可能很快就会由具有人工智能(AI)的机器来完成。手机和电子邮件软件常用的预测文本是无数人每天都在使用的一种人工智能写作形式。据AI行业研究机构称,到2022年,人工智能及</div>
                    </li>
                    <li><a href="/article/1950201094361640960.htm"
                           title="人工智能应用研究快讯 2021-11-30" target="_blank">人工智能应用研究快讯 2021-11-30</a>
                        <span class="text-muted">峰谷皆平</span>

                        <div>[HTML]ArtificialIntelligenceforSkinCancerDetection:ScopingReviewATakiddin,JSchneider,YYang,AAbd-Alrazaq...JournalofMedicalInternet...,2021ABSTACT:Background:Skincanceristhemostcommoncancertypeaffectin</div>
                    </li>
                    <li><a href="/article/1950197640729784320.htm"
                           title="从振动信号到精准预警:AI 如何重塑工业设备健康管理?" target="_blank">从振动信号到精准预警: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/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/%E8%BE%B9%E7%BC%98%E8%AE%A1%E7%AE%97/1.htm">边缘计算</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E4%B8%8E%E9%80%9A%E4%BF%A1/1.htm">信息与通信</a>
                        <div>在智能制造浪潮席卷全球的当下,工业生产正经历着从传统模式向智能化、数字化转型的深刻变革。在这场变革中,AI驱动的振动分析技术犹如一颗璀璨新星,成为工业设备可靠运行的“健康卫士”。它通过在设备关键部位部署振动传感器,如同医生为患者听诊般实时采集设备运行时的振动信号,再借助强大的人工智能算法对这些“工业脉搏”进行深度解析,从而实现对工业设备从故障预警到寿命预测的全周期精准守护。一、AI振动分析:设备状</div>
                    </li>
                    <li><a href="/article/1950194741610082304.htm"
                           title="AI 生成虚拟宠物:24 小时陪你聊天解闷" target="_blank">AI 生成虚拟宠物:24 小时陪你聊天解闷</a>
                        <span class="text-muted">大力出奇迹985</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/%E5%AE%A0%E7%89%A9/1.htm">宠物</a>
                        <div>本文围绕AI生成虚拟宠物展开,介绍这类依托人工智能技术诞生的虚拟伙伴,能实现24小时不间断陪伴聊天,为人们解闷。文中详细阐述其技术基础,包括自然语言处理、机器学习等;分析多样功能,如个性化互动、情绪回应等;探讨在独居人群、压力大者等不同群体中的应用场景,最后总结其为人们生活带来的积极影响及未来发展潜力,展现AI虚拟宠物在陪伴领域的独特价值。一、AI生成虚拟宠物的诞生背景与技术基石在快节奏的现代社会</div>
                    </li>
                    <li><a href="/article/1950193733681082368.htm"
                           title="基于Python的AI健康助手:开发与部署全攻略" target="_blank">基于Python的AI健康助手:开发与部署全攻略</a>
                        <span class="text-muted">AI算力网络与通信</span>
<a class="tag" taget="_blank" href="/search/AI%E7%AE%97%E5%8A%9B%E7%BD%91%E7%BB%9C%E4%B8%8E%E9%80%9A%E4%BF%A1%E5%8E%9F%E7%90%86/1.htm">AI算力网络与通信原理</a><a class="tag" taget="_blank" href="/search/AI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%9E%B6%E6%9E%84/1.htm">AI人工智能大数据架构</a><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><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/ai/1.htm">ai</a>
                        <div>基于Python的AI健康助手:开发与部署全攻略关键词:Python、AI健康助手、机器学习、自然语言处理、Flask、部署、健康管理摘要:本文将详细介绍如何使用Python开发一个AI健康助手,从需求分析、技术选型到核心功能实现,再到最终部署上线的完整过程。我们将使用自然语言处理技术理解用户健康咨询,通过机器学习模型提供个性化建议,并展示如何用Flask框架构建Web应用接口。文章包含大量实际代</div>
                    </li>
                    <li><a href="/article/1950193606174240768.htm"
                           title="GPT-4 在 AIGC 中的微调技巧:让模型更懂你的需求" target="_blank">GPT-4 在 AIGC 中的微调技巧:让模型更懂你的需求</a>
                        <span class="text-muted">AIGC应用创新大全</span>
<a class="tag" taget="_blank" href="/search/AI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%B8%8E%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91/1.htm">AI人工智能与大数据应用开发</a><a class="tag" taget="_blank" href="/search/MCP%26amp%3BAgent/1.htm">MCP&Agent</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E7%AE%97%E5%8A%9B%E7%BD%91%E7%BB%9C/1.htm">云算力网络</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>GPT-4在AIGC中的微调技巧:让模型更懂你的需求关键词:GPT-4、AIGC、模型微调、监督学习、指令优化、过拟合预防、个性化生成摘要:AIGC(人工智能生成内容)正在重塑内容创作行业,但通用的GPT-4模型可能无法精准匹配你的垂直需求——比如写电商爆款文案时总“跑题”,或生成技术文档时专业术语不够。本文将用“教小朋友学画画”的通俗类比,从微调的底层逻辑讲到实战技巧,带你掌握让GPT-4“更懂</div>
                    </li>
                    <li><a href="/article/1950192848225759232.htm"
                           title="AIGC内容生成实战:如何用ChatGPT+DALL·E打造高转化内容" target="_blank">AIGC内容生成实战:如何用ChatGPT+DALL·E打造高转化内容</a>
                        <span class="text-muted">AI大模型应用工坊</span>
<a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">AI大模型开发实战</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a><a class="tag" taget="_blank" href="/search/chatgpt/1.htm">chatgpt</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>AIGC内容生成实战:如何用ChatGPT+DALL·E打造高转化内容关键词:AIGC、ChatGPT、DALL·E、内容生成、高转化营销、多模态协同、提示词工程摘要:随着AIGC(人工智能生成内容)技术的爆发式发展,ChatGPT(文本生成)与DALL·E(图像生成)的组合已成为内容创作领域的“黄金搭档”。本文将深度解析二者的协同原理,结合实战案例演示从需求分析到内容落地的全流程,并揭示提升内容</div>
                    </li>
                    <li><a href="/article/1950192848833933312.htm"
                           title="数据分析领域中AI人工智能的发展前景展望" target="_blank">数据分析领域中AI人工智能的发展前景展望</a>
                        <span class="text-muted">AI大模型应用工坊</span>
<a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">AI大模型开发实战</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/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%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>数据分析领域中AI人工智能的发展前景展望关键词:数据分析、人工智能、机器学习、深度学习、数据挖掘、预测分析、自动化摘要:本文深入探讨了人工智能在数据分析领域的发展现状和未来趋势。我们将从核心技术原理出发,分析AI如何改变传统数据分析范式,详细讲解机器学习算法在数据分析中的应用,并通过实际案例展示AI驱动的数据分析解决方案。文章还将探讨行业应用场景、工具生态以及未来发展面临的挑战和机遇,为数据分析师</div>
                    </li>
                    <li><a href="/article/1950192849786040320.htm"
                           title="AI人工智能中的数据挖掘:提升智能决策能力" target="_blank">AI人工智能中的数据挖掘:提升智能决策能力</a>
                        <span class="text-muted"></span>

                        <div>AI人工智能中的数据挖掘:提升智能决策能力关键词:数据挖掘、人工智能、机器学习、智能决策、数据分析、特征工程、模型优化摘要:本文深入探讨了数据挖掘在人工智能领域中的核心作用,重点分析了如何通过数据挖掘技术提升智能决策能力。文章从基础概念出发,详细介绍了数据挖掘的关键算法、数学模型和实际应用场景,并通过Python代码示例展示了数据挖掘的全流程。最后,文章展望了数据挖掘技术的未来发展趋势和面临的挑战</div>
                    </li>
                    <li><a href="/article/1950186798126788608.htm"
                           title="【三桥君】MCP中台,究竟如何实现多模型、多渠道、多环境的统一管控?如何以MCP为核心设计AI应用架构?" target="_blank">【三桥君】MCP中台,究竟如何实现多模型、多渠道、多环境的统一管控?如何以MCP为核心设计AI应用架构?</a>
                        <span class="text-muted">三桥君</span>
<a class="tag" taget="_blank" href="/search/%E3%80%8A%E4%B8%89%E6%A1%A5%E5%90%9B/1.htm">《三桥君</a><a class="tag" taget="_blank" href="/search/MCP%E8%90%BD%E5%9C%B0%E6%96%B9%E6%B3%95%E8%AE%BA%E3%80%8B/1.htm">MCP落地方法论》</a><a class="tag" taget="_blank" href="/search/%E3%80%8A%E4%B8%89%E6%A1%A5%E5%90%9B/1.htm">《三桥君</a><a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E8%90%BD%E5%9C%B0%E6%96%B9%E6%B3%95%E8%AE%BA%E3%80%8B/1.htm">AI大模型落地方法论》</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E3%80%8A%E4%B8%89%E6%A1%A5%E5%90%9B/1.htm">《三桥君</a><a class="tag" taget="_blank" href="/search/AI%E4%BA%A7%E5%93%81%E6%96%B9%E6%B3%95%E8%AE%BA%E3%80%8B/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/AI%E4%BA%A7%E5%93%81%E7%BB%8F%E7%90%86/1.htm">AI产品经理</a><a class="tag" taget="_blank" href="/search/MCP/1.htm">MCP</a><a class="tag" taget="_blank" href="/search/API/1.htm">API</a><a class="tag" taget="_blank" href="/search/%E4%B8%89%E6%A1%A5%E5%90%9B/1.htm">三桥君</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a><a class="tag" taget="_blank" href="/search/llama/1.htm">llama</a>
                        <div>你好,我是✨三桥君✨本文介绍>>一、引言随着人工智能技术的快速发展,越来越多的企业开始引入大语言模型(LLM)以提升用户体验和运营效率。然而,如何高效、稳定地将这些AI能力落地到生产环境呢?传统的系统架构往往难以应对AI应用的高并发、低延迟和灵活扩展需求,因此,从整体架构角度设计AI应用架构显得尤为重要。本文三桥君将深入探讨以MCP为核心的AI应用架构,并分析多种部署方式的优劣势,为企业在AI落地</div>
                    </li>
                    <li><a href="/article/1950181882679324672.htm"
                           title="深入理解卷积神经网络(CNN)与循环神经网络(RNN)" target="_blank">深入理解卷积神经网络(CNN)与循环神经网络(RNN)</a>
                        <span class="text-muted">CodeJourney.</span>
<a class="tag" taget="_blank" href="/search/cnn/1.htm">cnn</a><a class="tag" taget="_blank" href="/search/rnn/1.htm">rnn</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>在当今的人工智能领域,神经网络无疑是最为璀璨的明珠之一。而卷积神经网络(ConvolutionalNeuralNetworks,CNN)和循环神经网络(RecurrentNeuralNetworks,RNN)作为神经网络家族中的重要成员,各自有着独特的架构和强大的功能,广泛应用于众多领域。本文将深入探讨这两种神经网络的原理、特点以及应用场景,为对深度学习感兴趣的读者提供全面的知识讲解。一、卷积神经</div>
                    </li>
                    <li><a href="/article/1950178809030438912.htm"
                           title="今年校招竞争真激烈" target="_blank">今年校招竞争真激烈</a>
                        <span class="text-muted">12_05</span>

                        <div>程序员满大街,都要找不到工作了。即使人工智能满大街,我也后悔当初没学机器学习,后悔当初没学Java。C++真难找工作。难道毕了业就失业吗?好担心!</div>
                    </li>
                    <li><a href="/article/1950169145177862144.htm"
                           title="如何运用深度学习打造高效AI人工智能系统" target="_blank">如何运用深度学习打造高效AI人工智能系统</a>
                        <span class="text-muted">AI智能探索者</span>
<a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E4%BD%93%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%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><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/ai/1.htm">ai</a>
                        <div>如何运用深度学习打造高效AI人工智能系统关键词:深度学习、AI系统、神经网络、模型优化、实战开发摘要:本文将从深度学习的核心概念出发,结合生活实例和代码实战,系统讲解如何构建高效AI系统。我们会拆解数据准备、模型设计、训练优化、部署落地的全流程,揭秘“数据-模型-训练-推理”的协同机制,并通过具体案例演示从0到1开发AI系统的关键技巧,帮助开发者掌握打造高效AI系统的底层逻辑。背景介绍目的和范围在</div>
                    </li>
                    <li><a href="/article/1950157547734364160.htm"
                           title="非欧空间计算加速:图神经网络与微分几何计算的GPU优化(流形数据的内存布局优化策略)" target="_blank">非欧空间计算加速:图神经网络与微分几何计算的GPU优化(流形数据的内存布局优化策略)</a>
                        <span class="text-muted">九章云极AladdinEdu</span>
<a class="tag" taget="_blank" href="/search/%E7%A9%BA%E9%97%B4%E8%AE%A1%E7%AE%97/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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/gpu%E7%AE%97%E5%8A%9B/1.htm">gpu算力</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>一、非欧空间计算的革命性意义与核心挑战在三维形状分析、社交网络建模、分子动力学模拟等领域,非欧几里得空间数据(流形数据)的处理正推动人工智能技术向更复杂的几何结构迈进。传统欧式空间优化方法在处理流形数据时面临根本性局限:黎曼度量导致距离计算失效、局部坐标系动态变化引发内存访问模式混乱、曲率变化影响并行计算效率。本文提出基于分块流形存储(BlockedManifoldStorage,BMS)与层次化</div>
                    </li>
                    <li><a href="/article/1950138256133779456.htm"
                           title="响应式编程实践:Spring Boot WebFlux构建高性能非阻塞服务" target="_blank">响应式编程实践:Spring Boot WebFlux构建高性能非阻塞服务</a>
                        <span class="text-muted">fanxbl957</span>
<a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</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>博主介绍:Java、Python、js全栈开发“多面手”,精通多种编程语言和技术,痴迷于人工智能领域。秉持着对技术的热爱与执着,持续探索创新,愿在此分享交流和学习,与大家共进步。全栈开发环境搭建运行攻略:多语言一站式指南(环境搭建+运行+调试+发布+保姆级详解)感兴趣的可以先收藏起来,希望帮助更多的人响应式编程实践:SpringBootWebFlux构建高性能非阻塞服务一、引言在当今数字化时代,互</div>
                    </li>
                    <li><a href="/article/1950127416483573760.htm"
                           title="企业级RAG的数据方案选择 - 向量数据库、图数据库和知识图谱" target="_blank">企业级RAG的数据方案选择 - 向量数据库、图数据库和知识图谱</a>
                        <span class="text-muted">南七小僧</span>
<a class="tag" taget="_blank" href="/search/AI%E6%8A%80%E6%9C%AF%E4%BA%A7%E5%93%81%E7%BB%8F%E7%90%86/1.htm">AI技术产品经理</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%AB%99%E5%BC%80%E5%8F%91/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%BA%93/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>如何为企业RAG选择合适的数据存储方式摘要:本文讨论了矢量数据库、图数据库和知识图谱在解决信息检索挑战方面的重要性,特别是针对企业规模的检索增强生成(RAG)。看看海外人工智能企业Writer是如何利用知识图谱增强企业级RAG。要点概要:矢量数据库高效存储数据,但缺乏上下文和关联信息。图数据库优先考虑数据点之间的关系,受益于关系结构。知识图谱在语义存储方面表现出色,由于其能够编码丰富的上下文信息,</div>
                    </li>
                    <li><a href="/article/1950120484314083328.htm"
                           title="【人工智能入门必看的最全Python编程实战(1)】" target="_blank">【人工智能入门必看的最全Python编程实战(1)】</a>
                        <span class="text-muted">DFCED</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/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><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%89%BE%E5%B7%A5%E4%BD%9C/1.htm">找工作</a><a class="tag" taget="_blank" href="/search/%E5%B0%B1%E4%B8%9A/1.htm">就业</a>
                        <div>--------------------------------------------------------------------------------------------------------------------1.AIGC未来发展前景未完持续…1.1人工智能相关科研重要性拥有一篇人工智能科研论文及专利软著竞赛是保研考研留学深造以及找工作的关键门票!!!拥有一篇人工智能科研论文</div>
                    </li>
                    <li><a href="/article/1950102581887954944.htm"
                           title="2025毫米波雷达技术白皮书:智能汽车与物联网的感知核心" target="_blank">2025毫米波雷达技术白皮书:智能汽车与物联网的感知核心</a>
                        <span class="text-muted"></span>

                        <div>随着人工智能、物联网(IoT)和智能汽车产业的迅猛发展,毫米波雷达技术正成为感知领域的核心驱动力。毫米波雷达凭借其高精度、全天候和强抗干扰能力,广泛应用于智能汽车的自动驾驶、物联网的环境感知以及工业自动化。2025年,毫米波雷达技术在性能、应用场景和市场规模上都达到了一个全新的高度。本白皮书将深入探讨毫米波雷达技术的核心优势、发展趋势及其在智能汽车与物联网中的应用前景,同时推荐各大品牌的领先产品方</div>
                    </li>
                    <li><a href="/article/1950091615854981120.htm"
                           title="从零开始构建深度学习环境:基于Pytorch、CUDA与cuDNN的虚拟环境搭建与实践(适合初学者)" target="_blank">从零开始构建深度学习环境:基于Pytorch、CUDA与cuDNN的虚拟环境搭建与实践(适合初学者)</a>
                        <span class="text-muted">荣华富贵8</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E7%9F%A5%E8%AF%86%E5%82%A8%E5%A4%872/1.htm">程序员的知识储备2</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E7%9F%A5%E8%AF%86%E5%82%A8%E5%A4%873/1.htm">程序员的知识储备3</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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>摘要:深度学习正在引领人工智能技术的革新,而对于初学者来说,正确搭建深度学习环境是迈向AI研究与应用的第一步。本文将为读者提供一套详尽的教程,指导如何在本地环境中搭建Pytorch、CUDA与cuDNN,以及如何利用Anaconda和PyCharm进行高效开发。内容涵盖从环境配置、常见错误修正,到基础的深度学习模型构建及训练。我们旨在为深度学习零基础的入门者提供一个全面且易于理解的“保姆级”教程,</div>
                    </li>
                    <li><a href="/article/1950086067768061952.htm"
                           title="人工智能概念之九:深度学习概述" target="_blank">人工智能概念之九:深度学习概述</a>
                        <span class="text-muted"></span>

                        <div>文章目录相关文章一、深度学习的定位:AI时代的基石技术1.1技术生态全景图1.2技术革命的催化剂二、深度学习的双面性:性能优势与技术挑战2.1技术优势全景扫描2.2技术挑战深度剖析三、技术演进时间轴:70年的厚积薄发四、主流框架生态对比五、未来演进方向相关文章人工智能概念之二:人工智能核心概念:网页链接一、深度学习的定位:AI时代的基石技术1.1技术生态全景图深度学习处于人工智能(AI)技术金字塔</div>
                    </li>
                    <li><a href="/article/1950076867776147456.htm"
                           title="H800核心技术突破与行业应用实战" target="_blank">H800核心技术突破与行业应用实战</a>
                        <span class="text-muted">智能计算研究中心</span>
<a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96/1.htm">其他</a>
                        <div>内容概要在人工智能技术持续迭代的背景下,H800芯片凭借自主架构优化与算力跃升,成为推动行业场景化落地的关键驱动力。本文将从技术路径、性能突破与行业应用三个维度,系统解析H800如何在高并发计算与低延时响应领域实现底层架构创新。首先聚焦其自主架构优化的核心技术路径,包括动态资源调度算法与异构计算单元的深度协同设计,揭示其在能效比与计算密度上的突破逻辑;进一步结合算力跃升的具体表现,探讨该芯片如何通</div>
                    </li>
                    <li><a href="/article/1950070184962224128.htm"
                           title="智慧建筑:科技引领房地产与建筑业的未来" target="_blank">智慧建筑:科技引领房地产与建筑业的未来</a>
                        <span class="text-muted">RedPhoenix45</span>

                        <div>最新接入DeepSeek-V3模型,点击下载最新版本InsCodeAIIDE智慧建筑:科技引领房地产与建筑业的未来随着科技的飞速发展,人工智能(AI)和智能化工具正以前所未有的速度改变着各行各业。在房地产与建筑领域,这种变革尤为显著。从建筑设计到施工管理,再到物业管理,智能化技术正在重塑行业的每一个环节。本文将探讨如何利用先进的智能化工具提升房地产与建筑行业的效率,并介绍一款革命性的开发工具——它</div>
                    </li>
                    <li><a href="/article/1950069805558067200.htm"
                           title="智慧施工:AI技术赋能建筑安全监测新纪元" target="_blank">智慧施工:AI技术赋能建筑安全监测新纪元</a>
                        <span class="text-muted"></span>

                        <div>开发AI智能应用,就下载InsCodeAIIDE,一键接入DeepSeek-R1满血版大模型!智慧施工:AI技术赋能建筑安全监测新纪元在现代建筑行业中,施工安全始终是核心关注点之一。随着科技的飞速发展,人工智能(AI)和大数据分析逐渐成为提升施工安全的重要工具。本文将探讨如何利用智能化软件和大模型API来构建高效的施工安全监测系统,并介绍一款强大的开发工具——InsCodeAIIDE的应用场景及其</div>
                    </li>
                    <li><a href="/article/1950068291812782080.htm"
                           title="智慧工地系统:建筑行业数字化变革的引领者" target="_blank">智慧工地系统:建筑行业数字化变革的引领者</a>
                        <span class="text-muted">青云智慧园区</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>在建筑行业积极迈向数字化转型的浪潮中,智慧工地系统凭借“数据驱动、智能管控、协同增效”的核心优势,深度融合物联网、大数据、人工智能等前沿技术,构建起覆盖工程项目全生命周期的精细化管理体系。以下将从系统架构、核心功能模块、应用价值以及未来展望等方面,全方位剖析智慧工地系统如何实现施工全过程的智能化、高效化管理。一、系统架构:打造一体化协同管理平台智慧工地系统采用先进的分层架构设计,以底层的数据采集层</div>
                    </li>
                    <li><a href="/article/1950049131158368256.htm"
                           title="AGI和AIGC傻傻分不清楚,一篇文章告诉你如何分辨!" target="_blank">AGI和AIGC傻傻分不清楚,一篇文章告诉你如何分辨!</a>
                        <span class="text-muted"></span>

                        <div>Look!我们的大模型商业化落地产品更多AI资讯请关注Free三天集训营助教在线为您火热答疑‍什么是AGI(人工通用智能)?AGI是ArtificialGeneralIntelligence的缩写,中文翻译为“通用人工智能”,该术语指的是机器能够完成人类能够完成的任何智力任务的能力。与狭义的人工智能(ANI)不同,狭义的人工智能是为特定领域或问题而设计的,而AGI旨在实现一般的认知能力,能够适应任</div>
                    </li>
                    <li><a href="/article/1950031985376292864.htm"
                           title="新一代数据库:融合多模智能,重塑数据价值" target="_blank">新一代数据库:融合多模智能,重塑数据价值</a>
                        <span class="text-muted"></span>

                        <div>一、场景重塑产业格局:数据库“融合进化”AI浪潮奔涌而至,数字产业格局加速重构。云计算、移动互联、万物互联(IoT)、人工智能(AI)等技术的深度融合与快速落地,正以前所未有的速度重塑着企业的应用形态。新业务场景层出不穷——从高并发的在线交易、实时精准的分析决策,到海量物联网设备监控、基于图关系的风控反欺诈,再到AI驱动的智能推荐与内容生成,应用场景的多样性与复杂性已突破传统数据库的能力边界。这对</div>
                    </li>
                    <li><a href="/article/1950031480927350784.htm"
                           title="基于知识图谱技术增强大模型RAG知识库应用效果" target="_blank">基于知识图谱技术增强大模型RAG知识库应用效果</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>【摘要】本文是AI落地实践的优秀案例,利用RAG技术(Retrieval-AugmentedGeneration,检索增强生成)的知识库实践为背景,介绍了RAG技术的发展及存在的不足,以及知识图谱相关的知识,利用RAG技术去完善和智能化知识图谱。在AI技术大量涌现,但应用不足的情况下,指明了现有应用场景、技术与AI结合的具体做法。1.引言随着人工智能技术的加速演进,AI大模型如雨后春笋般纷纷涌现,</div>
                    </li>
                    <li><a href="/article/1950028702708461568.htm"
                           title="BGE-M3模型结合Milvus向量数据库强强联合实现混合检索" target="_blank">BGE-M3模型结合Milvus向量数据库强强联合实现混合检索</a>
                        <span class="text-muted"></span>

                        <div>在基于生成式人工智能的应用开发中,通过关键词或语义匹配的方式对用户提问意图进行识别是一个很重要的步骤,因为识别的精准与否会影响后续大语言模型能否检索出合适的内容作为推理的上下文信息(或选择合适的工具)以给出用户最符合预期的回答。在本篇文章中,我将尽可能详细地介绍想达成准确识别用户提问意图的解决方案之一,即基于功能强大的BGE-M3模型和Milvus向量数据库实现混合检索(稠密向量densevect</div>
                    </li>
                    <li><a href="/article/1950022003285094400.htm"
                           title="朋友圈发的原力元宇宙项目到底能不能挣钱" target="_blank">朋友圈发的原力元宇宙项目到底能不能挣钱</a>
                        <span class="text-muted">口碑信息传播者</span>

                        <div>原力元宇宙项目正如其名,是一场前所未有的数字化革命,融合了虚拟现实(VR)、人工智能(AI)、区块链(Blockchain)等前沿技术,开辟了全新的商业模式和赚钱机会。在朋友圈中频繁看到对该项目的推广宣传,确实反映了其在赚钱方面的潜力。本文将从多个角度解析原力元宇宙项目的盈利机制,揭示其中的商机所在。13分钟视频内容讲明白原力元宇宙创富项目,中国区运营服务对接微信:ForceZen激发兴趣的独特魅</div>
                    </li>
                    <li><a href="/article/1950020631848349696.htm"
                           title="构建高效 RAG 流程的七个关键点及其落地实践" target="_blank">构建高效 RAG 流程的七个关键点及其落地实践</a>
                        <span class="text-muted">charles666666</span>
<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/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E9%9C%80%E6%B1%82%E5%88%86%E6%9E%90/1.htm">需求分析</a><a class="tag" taget="_blank" href="/search/%E4%BA%A4%E4%BA%92/1.htm">交互</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>人工智能应用浪潮中,检索增强生成(RAG)技术凭借着结合大型语言模型(LLMs)的生成能力和信息检索系统的独特优势,成为了各企业挖掘数据价值、提升业务智能化水平的关键手段之一。然而,构建一个高效且精准的RAG流程并非易事,其中存在着诸多关键点和挑战。作为一名非资深IT技术顾问,我将基于丰富的实战经验,为大家深入剖析构建高效RAG流程的七个关键点及其落地实践。一、文档解析:混合格式的“第一道坎”在企</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>