hexo个人博客搭建(theme next)

Hexo NexT

以前使用docsify管理文档,如果个人使用,功能基本满足要求,但docify的显示theme不能令我满意。
最近发现了Hexo搭建博客的介绍,并且相关开发人员比较活跃,决定尝试一下。
开始阅读hexo的文档有些迷糊,后来看过其它文章,才渐渐明白hexo的使用,与相关主题的使用密不可分,可能用到最后,都是自己开发适合自己的theme……
我选择了一个比较喜欢的主题maupassant,试用后,感觉作者的活跃度不够,很多地方不是很理想,最后还是使用用户比较多的NexT主题。

文档项目创建

初始化hexo目录

主要步骤Hexo 首页上列出:

npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

Hexo init生成的目录文件说明参考Hexo doc 建站

添加git管理

考虑到备份,修改等需要,将hexo文档目录添加git管理

git init

网上有几种git管理theme的方式:

  • 直接从github下载主题zip,添加到自己的git服务器中
  • 使用外部配置,替换theme中的默认_config.yml,参考:Hexo-Theme-NexT主题自定义设置:论theme_config与next.yml方法的差异及取舍,这个时候theme的源码可以试用git submodule管理:
git submodule add https://github.com/tufu9441/maupassant-hexo.git themes/maupassant
  • 使用npm添加(hexo 5.0版本以上),例如NexT的添加:
npm install hexo-theme-next
# _config.yml
# theme: next

添加 NexT theme

从 https://hexo.io/themes/查找主题next,获取github路径:

The upstream repository of theme NexT has been changed.
2014-2017   https://github.com/iissnan/hexo-theme-next
2018-2019   https://github.com/theme-next/hexo-theme-next
2020    https://github.com/next-theme/hexo-theme-next
In order to get the latest update, please backup files of the legacy theme NexT, and execute the following command

            
                git clone https://github.com/next-theme/hexo-theme-next themes/next
            
        
For Hexo 5.0 or later
            
                npm install hexo-theme-next
            
        
Documentation

下载最后发布版本源码zip,解压缩到themes/next目录

参考:Hexo-Theme-NexT主题自定义设置:论theme_config与next.yml方法的差异及取舍

几种使用theme的方式,最后还是采用源码方式(有时可能需要直接修改源码比较方便)

修改NexT主题配置

NexT doc Made by IIssNan

Hexo的配置修改,包括_config.yml中的站点配置,还有_config.next.yml中的主题配置

站点配置

diff --git a/_config.yml b/_config.yml
index 98bf35f..0b7181e 100644
--- a/_config.yml
+++ b/_config.yml
@@ -3,17 +3,17 @@
 ## Source: https://github.com/hexojs/hexo/

 # Site
-title: Hexo
-subtitle: ''
+title: iticd
+subtitle: '一年又一年…… 知而不行,是为不知;行而不知,可以致知'
 description: ''
 keywords:
-author: John Doe
-language: en
-timezone: ''
+author: iticd
+language: zh-CN
+timezone: 'Asia/Shanghai'

 # URL
 ## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
-url: http://yoursite.com
+url: http://iticd.github.io
 root: /
 permalink: :year/:month/:day/:title/
 permalink_defaults:
@@ -28,7 +28,7 @@ tag_dir: tags
 archive_dir: archives
 category_dir: categories
 code_dir: downloads/code
-i18n_dir: :lang
+i18n_dir: :languages
 skip_render:

 # Writing
@@ -52,7 +52,7 @@ highlight:
   wrap: true
   hljs: false
 prismjs:
-  enable: false
+  enable: true
   preprocess: true
   line_number: true
   tab_replace: ''

主题配置

添加「标签」页面

添加「分类」页面

代码块

通过预览NexT Highlight Theme Preview,选择代码高亮样式:

站点配置修改:

highlight:
  enable: false
  ...
prismjs:
  enable: true
  ...

主题配置修改:

codeblock:
# Code Highlight theme
# All available themes: https://theme-next.js.org/highlight/
  ...
  prism:
    light: prism-tomorrow
    dark: prism-tomorrow
  ...

字体

Hexo Next 主题字体相关配置

Fonts-Customization

修改字体,字号:


# Define custom file paths.
# Create your custom files in site directory `source/_data` and uncomment needed files below.
custom_file_path:
  #head: source/_data/head.njk
  #header: source/_data/header.njk
  #sidebar: source/_data/sidebar.njk
  #postMeta: source/_data/post-meta.njk
  #postBodyEnd: source/_data/post-body-end.njk
  #footer: source/_data/footer.njk
  #bodyEnd: source/_data/body-end.njk
  variable: source/_data/variables.styl
  #mixin: source/_data/mixins.styl
  #style: source/_data/styles.styl

在source/_data/variables.styl中配置字体属性,避免修改next源码:

// Title Font, set it to font family you want.
$font-family-headings = Georgia, sans

// Set it to font family you want.
$font-family-base = "Microsoft YaHei", Verdana, sans-serif

// Code Font.
$code-font-family = "Input Mono", "PT Mono", Consolas, Monaco, Menlo, monospace

// Font size of articles.
$font-size-base = 14px

// Font size of table and code.
$table-font-size = 12px

Next 能加载用户自定义的样式,同样也能加载用户自定义样式使用的变量。然而同样比较可惜的是,自定义样式使用的变量里的定义(source/_data/variables.styl),不能覆盖变量默认定义的值(hexo-next-theme/source/css/_variables/)。但是你可以在默认定义里注释掉变量后,在自定义变量里重新定义并赋值。

写博客

修改文档模板

根据需要,修改Hexo目录下生成的文档模板,scaffolds/draft.md,scaffolds/post.md

---
title: {{ title }}
date: {{date}}
update: {{date}}
tags:
categories:
---

添加文章

添加博客文章,执行:

hexo new  post 
</code></pre> 
 <p>在source/_posts目录生成title.md文件,文章内容直接在md文件中修改,例:</p> 
 <pre><code class="md">---
title: hexo个人博客搭建(theme next)
date: 2020-08-25 11:13:27
updated: {{date}}
tags:
- Hexo
- 个人博客
categories:
- 个人博客系统
- Hexo
---

这里填写文章摘要……

<!--more-->

这里填写文章正文……

</code></pre> 
 <p>参考 Hexo doc front-matter</p> 
 <h3>标签,分类</h3> 
 <h3>文档里的图片路径</h3> 
 <p>使用固定的图片资源目录</p> 
 <blockquote> 
  <p>资源(Asset)代表 source 文件夹中除了文章以外的所有文件,例如图片、CSS、JS 文件等。比方说,如果你的Hexo项目中只有少量图片,那最简单的方法就是将它们放在 source/images 文件夹中。然后通过类似于<code>[图片上传失败...(image-fa1c2a-1598453205685)]</code> 的方法访问它们。</p> 
 </blockquote> 
 <p>使用文章资源文件夹</p> 
 <blockquote> 
  <p>对于那些想要更有规律地提供图片和其他资源以及想要将他们的资源分布在各个文章上的人来说,Hexo也提供了更组织化的方式来管理资源。这个稍微有些复杂但是管理资源非常方便的功能可以通过将 config.yml 文件中的 post_asset_folder 选项设为 true 来打开。</p> 
 </blockquote> 
 <p><strong>注:使用vscode进行md文件编辑时,由于路径原因,预览插件显示图片异常。</strong></p> 
 <h2>github 部署</h2> 
 <p>修改_config.yml</p> 
 <pre><code class="yaml"># Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
  type: git
  repo: 
    github: https://github.com/iticd/iticd.github.io.git
    gitee: https://gitee.com/iticd/iticd.git
  branch: 
</code></pre> 
 <p><strong>注:可以同时部署多个站点</strong></p> 
 <p>本地安装插件,部署</p> 
 <pre><code class="bash">npm install hexo-deployer-git --save

hexo d
</code></pre> 
 <h2>添加gitalk评论</h2> 
 <ul> 
  <li>在github创建一个新仓库</li> 
  <li>创建OAuth Apps (成功后记录client_id,client_secret)</li> 
 </ul> 
 <div class="image-package"> 
  <div class="image-container" style="max-width: 619px; max-height: 455px;"> 
   <div class="image-view">  
   </div> 
  </div> 
  <div class="image-caption">
    OAuth Apps 
  </div> 
 </div> 
 <ul> 
  <li>修改主题配置文件中gitalk配置</li> 
 </ul> 
 <div class="image-package"> 
  <div class="image-container" style="max-width: 700px; max-height: 279px;"> 
   <div class="image-view">  
   </div> 
  </div> 
  <div class="image-caption">
    主题配置_config->gitalk 
  </div> 
 </div> 
 <ul> 
  <li>重新部署</li> 
 </ul> 
 <pre><code class="bash">hexo clean && hexo d -g
</code></pre> 
 <h2>参考</h2> 
 <p>Hexo<br> Heox theme NexT<br> easy hexo<br> 打造个性超赞博客 Hexo + NexT + GitHub Pages 的超深度优化<br> Hexo-Theme-NexT主题自定义设置:论theme_config与next.yml方法的差异及取舍<br> git submodule 使用小结<br> Markdown - 简单的世界</p> 
</article>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1635590756951449600"></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">你可能感兴趣的:(hexo个人博客搭建(theme next))</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1773173709033504768.htm"
                           title="单链表的基本操作" target="_blank">单链表的基本操作</a>
                        <span class="text-muted">stoAir</span>
<a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>链表文章目录链表创建链表单链表实现一:实现二:错例循环链表单独创建逐节点创建约瑟夫环问题删除节点实现方式一:实现方式二:删除节点并建立新链表逆置链表实现:链表排序实现一:实现二:实现三:链表查询(跳表)structList{intdata;structList*next;}创建链表单链表实现一:structList*listCreate(){intdata;structList*head=NULL</div>
                    </li>
                    <li><a href="/article/1772468509490610176.htm"
                           title="Net中LINQ的扩展方法ForEach()对多个属性进行赋值" target="_blank">Net中LINQ的扩展方法ForEach()对多个属性进行赋值</a>
                        <span class="text-muted">kingwebo'sZone</span>
<a class="tag" taget="_blank" href="/search/linq/1.htm">linq</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a>
                        <div>Net中LINQ的扩展方法ForEach()对多个属性进行赋值用大括号属性块的格式可以进行赋值,例子如下:Listadds=newList();adds.ForEach(t=>{t.ID=IdWorkerFactory.GetNextId();t.CreateTime=DateTime.Now;});</div>
                    </li>
                    <li><a href="/article/1772464985230868480.htm"
                           title="blog-engine-06-pelican 静态网站生成 支持 markdown 和 reST 语法" target="_blank">blog-engine-06-pelican 静态网站生成 支持 markdown 和 reST 语法</a>
                        <span class="text-muted">老马啸西风</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>拓展阅读blog-engine-01-常见博客引擎jekyll/hugo/Hexo/Pelican/Gatsby/VuePress/Nuxt.js/Middleman对比blog-engine-02-通过博客引擎jekyll构建githubpages博客实战笔记blog-engine-02-博客引擎jekyll-jekyll博客引擎介绍blog-engine-02-博客引擎jekyll-jekyl</div>
                    </li>
                    <li><a href="/article/1772050110448992256.htm"
                           title="3月23日,每日信息差" target="_blank">3月23日,每日信息差</a>
                        <span class="text-muted">信息差Pro</span>
<a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%B7%AEPro/1.htm">信息差Pro</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/oracle/1.htm">oracle</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/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                        <div>素材来源官方媒体/网络新闻首个国产单池万卡液冷算力集群投入运营,满足万亿级大模型训练需求快手电商正式启动兴农计划360AI浏览器APP即将上线,支持500万字长文本处理安卓15将支持音频共享,可同时连接多个耳机播放音乐✨音视频领域首个,阿里云推出华为鸿蒙HarmonyOSNEXT版音视频SDK全球首个万兆宽带落户上海一小区:下载90GB文件72秒第一、中国电信宣布,天翼云上海临港国产万卡算力池正式</div>
                    </li>
                    <li><a href="/article/1771976723324272640.htm"
                           title="复习笔记 队列" target="_blank">复习笔记 队列</a>
                        <span class="text-muted">李不存</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>约瑟夫问题:约瑟夫问题:有N个人围成一圈,每个人都有一个编号,编号由入圈的顺序决定,第一个入圈的人编号为1,最后一个为N,从第k(1queue=newLinkedList<>();Scannersc=newScanner(System.in);intn=sc.nextInt();intm=sc.nextInt();for(inti=1;i<=n;i++){queue.add(i);}intcoun</div>
                    </li>
                    <li><a href="/article/1770914991738781696.htm"
                           title="leetcode-链表" target="_blank">leetcode-链表</a>
                        <span class="text-muted">鼠鼠想回浪浪山</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a>
                        <div>合并两个有序链表:方法一:递归publicListNodemergeTwoLists2(ListNodelist1,ListNodelist2){if(list1==null)returnlist2;if(list2==null)returnlist1;if(list1.val>list2.val){list2.next=mergeTwoLists(list1,list2.next);return</div>
                    </li>
                    <li><a href="/article/1770436137769304064.htm"
                           title="蓝桥杯(3.17 刷真题)" target="_blank">蓝桥杯(3.17 刷真题)</a>
                        <span class="text-muted">MegaDataFlowers</span>
<a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E6%9D%AF/1.htm">蓝桥杯</a><a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E6%9D%AF/1.htm">蓝桥杯</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a>
                        <div>1240.完全二叉树的权值P8681[蓝桥杯2019省AB]完全二叉树的权值ACimportjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intn=sc.nextInt();int[]res=newint[n+1];for(inti=1;iMA</div>
                    </li>
                    <li><a href="/article/1770393844915961856.htm"
                           title="贪心问题" target="_blank">贪心问题</a>
                        <span class="text-muted">m0_73165551</span>
<a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%BF%97/1.htm">日志</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>1055.股票买卖II-AcWing题库importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);int[]a=newint[100010];intn=sc.nextInt();for(inti=0;i0;i--){c[i]=c[i+1]+avg-a[i]</div>
                    </li>
                    <li><a href="/article/1770389942367748096.htm"
                           title="KMP算法(java、C#)" target="_blank">KMP算法(java、C#)</a>
                        <span class="text-muted">以明志、</span>
<a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</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>
                        <div>文章目录kmp中的nextVal(代码用next数组表示)获取匹配成功的主串下标程序入口(示例)kmp中的nextVal(代码用next数组表示)namespaceTestmain{publicclassGetNext{int[]next;publicint[]getNextArray(char[]ch){next=newint[ch.Length];inti=0,j=-1;next[0]=-1;</div>
                    </li>
                    <li><a href="/article/1770009547138727936.htm"
                           title="Animal Farm(109)" target="_blank">Animal Farm(109)</a>
                        <span class="text-muted">云手a</span>

                        <div>ForthenexttwodaysBoxerremainedinhisstall.Thepigshadsentoutalargebottleofpinkmedicinewhichtheyhadfoundinthemedicinechestinthebathroom,andCloveradministered【vt.管理;执行;给予】ittoBoxertwiceadayaftermeals.Inth</div>
                    </li>
                    <li><a href="/article/1769982620147449856.htm"
                           title="Vue项目创建新文件后都会提示仅当 “module” 选项设置为 “es2022”、“esnext”、“system”、“node16” -警告提示" target="_blank">Vue项目创建新文件后都会提示仅当 “module” 选项设置为 “es2022”、“esnext”、“system”、“node16” -警告提示</a>
                        <span class="text-muted">JackieDYH</span>
<a class="tag" taget="_blank" href="/search/ERROR/1.htm">ERROR</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a>
                        <div>警告提示vscode中vue项目创建新文件后都会提示仅当“module”选项设置为“es2022”、“esnext”、“system”、“node16”或“nodenext”,且“target”选项设置为“es2017”或更高版本时,才允许使用顶级“await”表达式。在VSCode中,如果您在TypeScript文件中使用顶级await(即在模块的最顶层直接使用await而不是在async函数中</div>
                    </li>
                    <li><a href="/article/1769862409784197120.htm"
                           title="链表的删除结点(各种方法)" target="_blank">链表的删除结点(各种方法)</a>
                        <span class="text-muted">LightningJie</span>
<a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>先建立链表(代码在最后)一、链表中删除第i个结点intmain(){inti;Node*p,*head,*k;head=setlink();scanf("%d",&i);intv=1;for(p=head->next;p!=NULL;k=p,p=p->next){if(v==i)break;else{v++;}}k->next=p->next;delete(p);for(p=head->next;</div>
                    </li>
                    <li><a href="/article/1769689578886725632.htm"
                           title="如何在顶层使用await 【top level await】" target="_blank">如何在顶层使用await 【top level await】</a>
                        <span class="text-muted">wincheshe</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/--/1.htm">--</a><a class="tag" taget="_blank" href="/search/typescript%EF%BC%88TS%EF%BC%89/1.htm">typescript(TS)</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/--/1.htm">--</a><a class="tag" taget="_blank" href="/search/ES6%E8%AF%AD%E6%B3%95/1.htm">ES6语法</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a>
                        <div>在顶层使用await注意:tsconfig.jsonmodule:"esnext",target:"esnext",仅当“module”选项设置为“es2022”、“esnext”、“system”、“node16”或“nodenext”,且“target”选项设置为“es2017”或更高版本时,才允许使用顶级“await”表达式。package.json添加type为module"type":"</div>
                    </li>
                    <li><a href="/article/1769096709138350080.htm"
                           title="RUST 每日一省:迭代器2" target="_blank">RUST 每日一省:迭代器2</a>
                        <span class="text-muted">许强0xq</span>
<a class="tag" taget="_blank" href="/search/rust/1.htm">rust</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>创建迭代器1、大多数集合类型提供了iter和iter_mut方法,返回该类型的迭代器,产生每个迭代项的共享或可修改引用。切片类型&[T]和&str也有iter和iter_mut方法。letv=vec![4,20,12];letmutiterator=v.iter();assert_eq!(iterator.next(),Some(&4));assert_eq!(iterator.next(),So</div>
                    </li>
                    <li><a href="/article/1768516912679026688.htm"
                           title="数据结构.pta测试二" target="_blank">数据结构.pta测试二</a>
                        <span class="text-muted">丰海洋</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                        <div>#includeusingnamespacestd;typedefstructnode{intdata;node*next;}*List;ListlistPoduce(){inta;ListL;node*r,*new0;//创建指针L=newnode();//分配空间r=L;cin>>a;while(a!=-1){new0=newnode();new0->data=a;r->next=new0;r</div>
                    </li>
                    <li><a href="/article/1767884373002092544.htm"
                           title="粉嘟嘟的免费wordpress模板" target="_blank">粉嘟嘟的免费wordpress模板</a>
                        <span class="text-muted">podoor</span>
<a class="tag" taget="_blank" href="/search/wordpress/1.htm">wordpress</a><a class="tag" taget="_blank" href="/search/wordpress/1.htm">wordpress</a>
                        <div>粉色好看的wordpress免费模板,用免费wordpress模板也可以搭建网站。https://www.wpniu.com/themes/11.html</div>
                    </li>
                    <li><a href="/article/1767804947333709824.htm"
                           title="resetFields()失效" target="_blank">resetFields()失效</a>
                        <span class="text-muted">虾仁不眨眼ok</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a>
                        <div>问题描述先点击新增,再取消弹窗。resetFields()正常运行,清空表单内容。先点击编辑,再新增,表单内容不能清空。解决方法在nextTick里赋值表单内容,因为弹窗会把第一次赋值的内容当成初始值,所以要在弹窗加载完之后再赋值constopenModal=(data)=>{base.visible=true;nextTick(()=>{base.formData=Object.assign({</div>
                    </li>
                    <li><a href="/article/1767693666576564224.htm"
                           title="【Express】创建防盗链中间件(HotLinking)" target="_blank">【Express】创建防盗链中间件(HotLinking)</a>
                        <span class="text-muted">小秀_heo</span>
<a class="tag" taget="_blank" href="/search/Express/1.htm">Express</a><a class="tag" taget="_blank" href="/search/express/1.htm">express</a>
                        <div>比如我们可以在http://localhost:3000/assets/index.html网站中获取某个图片,但是在http://127.0.0.1:3000/assets/index.html不可以获取,就是因为该网站设置了防盗链,而localhost在白名单内。constwhiteList=['localhost']constHotLinking=(req,res,next)=>{const</div>
                    </li>
                    <li><a href="/article/1767390042952630272.htm"
                           title="PTA 实现单链表逆转" target="_blank">PTA 实现单链表逆转</a>
                        <span class="text-muted">ZoeLandia</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/C/1.htm">C</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>本题要求实现一个函数,将给定的单链表逆转。函数接口定义:ListReverse(ListL);其中List结构定义如下:typedefstructNodePtrToNode;structNode{ElementTypeData;/存储结点数据/PtrToNodeNext;/指向下一个结点的指针/};typedefPtrToNodeList;/定义单链表类型*/L是给定单链表,函数Reverse要返</div>
                    </li>
                    <li><a href="/article/1767082335011954688.htm"
                           title="算法二刷day4" target="_blank">算法二刷day4</a>
                        <span class="text-muted">gsy-will</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/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>
                        <div>24.两两交换链表中的节点classSolution{public:ListNode*swapPairs(ListNode*head){ListNode*dummyHead=newListNode(0);dummyHead->next=head;ListNode*cur=dummyHead;while(cur->next!=nullptr&&cur->next->next!=nullptr){Li</div>
                    </li>
                    <li><a href="/article/1767006555296849920.htm"
                           title="next.js 开启Proxy反向代理" target="_blank">next.js 开启Proxy反向代理</a>
                        <span class="text-muted">思绪万千133</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/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>
                        <div>本地开发使用需要安装的包http-proxy-middlewareexpressconstexpress=require('express')constnext=require('next')constcreateProxyMiddleware=require('http-proxy-middleware').createProxyMiddleware;consthostname='0.0.0.0</div>
                    </li>
                    <li><a href="/article/1766786780616548352.htm"
                           title="python生成器和迭代器 装饰器,Python 生成器、迭代器和装饰器" target="_blank">python生成器和迭代器 装饰器,Python 生成器、迭代器和装饰器</a>
                        <span class="text-muted">平胸爱吃梨</span>
<a class="tag" taget="_blank" href="/search/python%E7%94%9F%E6%88%90%E5%99%A8%E5%92%8C%E8%BF%AD%E4%BB%A3%E5%99%A8/1.htm">python生成器和迭代器</a><a class="tag" taget="_blank" href="/search/%E8%A3%85%E9%A5%B0%E5%99%A8/1.htm">装饰器</a>
                        <div>1生成器定义(1)采用惰性计算的方式(2)无需一次性存储海量数据(3)一边执行一边计算,只计算每次需要的值(4)实际上一直在执行next()操作,直到无值可取生成器表达式(返回值for元素in可迭代对象if条件)生成器函数——yield在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行2迭代器可迭代对象可直接作用于for循环的对象统称为可迭代对</div>
                    </li>
                    <li><a href="/article/1766740839826022400.htm"
                           title="LeetCode 173.二叉搜索树迭代器" target="_blank">LeetCode 173.二叉搜索树迭代器</a>
                        <span class="text-muted">吃着火锅x唱着歌</span>
<a class="tag" taget="_blank" href="/search/LeetCode/1.htm">LeetCode</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</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>
                        <div>实现一个二叉搜索树迭代器类BSTIterator,表示一个按中序遍历二叉搜索树(BST)的迭代器:BSTIterator(TreeNoderoot)初始化BSTIterator类的一个对象。BST的根节点root会作为构造函数的一部分给出。指针应初始化为一个不存在于BST中的数字,且该数字小于BST中的任何元素。booleanhasNext()如果向指针右侧遍历存在数字,则返回true;否则返回f</div>
                    </li>
                    <li><a href="/article/1766570904210464768.htm"
                           title="算法学习07:KMP算法" target="_blank">算法学习07:KMP算法</a>
                        <span class="text-muted">Lhz326568</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%89%93%E5%8D%A1/1.htm">学习打卡</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/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/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>算法学习07:KMP算法文章目录算法学习07:KMP算法前言一、KMP算法1.kmp匹配过程:2.求解next数组(kmp算法重点)3.代码总结前言提示:以下是本篇文章正文内容:一、KMP算法1.kmp匹配过程:2.求解next数组(kmp算法重点)3.代码#includeusingnamespacestd;constintN=10000+10,m=100000+10;intn,m;intp[N]</div>
                    </li>
                    <li><a href="/article/1766373918362394624.htm"
                           title="HDLBits刷题Day23,3.2.5.7 Simple FSM 3 (asynchronous reset) - 3.2.5.8 Simple FSM 3 (synchronous reset)" target="_blank">HDLBits刷题Day23,3.2.5.7 Simple FSM 3 (asynchronous reset) - 3.2.5.8 Simple FSM 3 (synchronous reset)</a>
                        <span class="text-muted">weixin_52312830</span>
<a class="tag" taget="_blank" href="/search/HDLBits%E5%88%B7%E9%A2%98/1.htm">HDLBits刷题</a><a class="tag" taget="_blank" href="/search/fpga%E5%BC%80%E5%8F%91/1.htm">fpga开发</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%A1%AC%E4%BB%B6%E5%B7%A5%E7%A8%8B/1.htm">硬件工程</a>
                        <div>联系3.2.5.5和3.2.5.6来看3.2.5.7SimpleFSM3(asynchronousreset)问题描述下面是一输入一输出四状态的摩尔状态机的状态转移表。实现这个状态机。包括将FSM重置为状态A的异步重置。代码:moduletop_module(inputclk,inputin,inputareset,outputout);//reg[1:0]state,next_state;par</div>
                    </li>
                    <li><a href="/article/1766171383458521088.htm"
                           title="LeetCode206题:反转链表(python3)" target="_blank">LeetCode206题:反转链表(python3)</a>
                        <span class="text-muted">Zachos</span>
<a class="tag" taget="_blank" href="/search/%E9%93%B6%E6%B2%B3%E9%AA%91%E5%A3%AB%E6%AF%8F%E6%97%A5%E4%B8%80%E7%BB%83/1.htm">银河骑士每日一练</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>采用递归classSolution:defreverseList(self,head:Optional[ListNode])->Optional[ListNode]:cur=headpre=Nonewhilecur:temp=cur.next#保存下一轮循环的节点cur.next=pre#将当前节点cur的指针指向上一个节点prepre=curcur=tempreturnpre</div>
                    </li>
                    <li><a href="/article/1765869780918689792.htm"
                           title="vue3+element-plus el-input 自动获取焦点" target="_blank">vue3+element-plus el-input 自动获取焦点</a>
                        <span class="text-muted">Hico、</span>
<a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/elementui/1.htm">elementui</a>
                        <div>虽然element有提供input的autofocus属性,但是当我们第二次进入页面就会发现autofocus已经不再生效,需要通过onMounted去触发input的focus解决这个问题。1.先给el-input绑定一个ref:2.定义一个函数去触发这个input的focus:constfocusInput=()=>{nextTick(()=>{inputRef.value.focus()})</div>
                    </li>
                    <li><a href="/article/1765728171245789184.htm"
                           title="loop_list单向循环列表" target="_blank">loop_list单向循环列表</a>
                        <span class="text-muted">时雨90</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>#include"loop_list.h"//创建单向循环链表loop_pcreate_head(){loop_pL=(loop_p)malloc(sizeof(loop_list));if(L==NULL){printf("createfail\n");returnNULL;}L->len=0;L->next=L;returnL;}//创建节点loop_pcreate_node(datatype</div>
                    </li>
                    <li><a href="/article/1765718729817153536.htm"
                           title="将链表保存在文件中 C语言" target="_blank">将链表保存在文件中 C语言</a>
                        <span class="text-muted">ghblk</span>
<a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                        <div>#include#includeintcount=0;typedefstructLinkList{intval;charname[20];structLinkList*next;}LinkList;LinkList*create_LinkList(){LinkList*head=(LinkList*)malloc(sizeof(LinkList)),*p;p=head;intdata=0;whil</div>
                    </li>
                    <li><a href="/article/1765203789813473280.htm"
                           title="代码随想录算法训练营Day4|leetCode 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、 面试题 02.07. 链表相交、 142.环形链表II" target="_blank">代码随想录算法训练营Day4|leetCode 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、 面试题 02.07. 链表相交、 142.环形链表II</a>
                        <span class="text-muted">qq_44884699</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a>
                        <div>24.两两交换链表中的节点开始写的代码总有一些问题,对比答案之后发现自己少设置了一个变量,(此前想偷懒,把cur和head融合到一块了)。此题我出现的问题,还有一点在于自己忘了指针的作用了,一直奇怪head节点改变后,为什么dummyhead->next依然正确classSolution{public:ListNode*swapPairs(ListNode*head){ListNode*dummy</div>
                    </li>
                                <li><a href="/article/37.htm"
                                       title="ASM系列五 利用TreeApi 解析生成Class" target="_blank">ASM系列五 利用TreeApi 解析生成Class</a>
                                    <span class="text-muted">lijingyao8206</span>
<a class="tag" taget="_blank" href="/search/ASM/1.htm">ASM</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E8%8A%82%E7%A0%81%E5%8A%A8%E6%80%81%E7%94%9F%E6%88%90/1.htm">字节码动态生成</a><a class="tag" taget="_blank" href="/search/ClassNode/1.htm">ClassNode</a><a class="tag" taget="_blank" href="/search/TreeAPI/1.htm">TreeAPI</a>
                                    <div>   前面CoreApi的介绍部分基本涵盖了ASMCore包下面的主要API及功能,其中还有一部分关于MetaData的解析和生成就不再赘述。这篇开始介绍ASM另一部分主要的Api。TreeApi。这一部分源码是关联的asm-tree-5.0.4的版本。 
         在介绍前,先要知道一点, Tree工程的接口基本可以完</div>
                                </li>
                                <li><a href="/article/164.htm"
                                       title="链表树——复合数据结构应用实例" target="_blank">链表树——复合数据结构应用实例</a>
                                    <span class="text-muted">bardo</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E6%A0%91%E5%9E%8B%E7%BB%93%E6%9E%84/1.htm">树型结构</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E7%BB%93%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">表结构设计</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/%E8%8F%9C%E5%8D%95%E6%8E%92%E5%BA%8F/1.htm">菜单排序</a>
                                    <div>我们清楚:数据库设计中,表结构设计的好坏,直接影响程序的复杂度。所以,本文就无限级分类(目录)树与链表的复合在表设计中的应用进行探讨。当然,什么是树,什么是链表,这里不作介绍。有兴趣可以去看相关的教材。 
需求简介: 
经常遇到这样的需求,我们希望能将保存在数据库中的树结构能够按确定的顺序读出来。比如,多级菜单、组织结构、商品分类。更具体的,我们希望某个二级菜单在这一级别中就是第一个。虽然它是最后</div>
                                </li>
                                <li><a href="/article/291.htm"
                                       title="为啥要用位运算代替取模呢" target="_blank">为啥要用位运算代替取模呢</a>
                                    <span class="text-muted">chenchao051</span>
<a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a><a class="tag" taget="_blank" href="/search/%E5%93%88%E5%B8%8C/1.htm">哈希</a><a class="tag" taget="_blank" href="/search/%E6%B1%87%E7%BC%96/1.htm">汇编</a>
                                    <div>  
  在hash中查找key的时候,经常会发现用&取代%,先看两段代码吧, 
  
  JDK6中的HashMap中的indexFor方法: 
    /**
     * Returns index for hash code h.
     */
    static int indexFor(int h, int length) {
</div>
                                </li>
                                <li><a href="/article/418.htm"
                                       title="最近的情况" target="_blank">最近的情况</a>
                                    <span class="text-muted">麦田的设计者</span>
<a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a><a class="tag" taget="_blank" href="/search/%E6%84%9F%E6%82%9F/1.htm">感悟</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E5%88%92/1.htm">计划</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E8%80%83/1.htm">软考</a><a class="tag" taget="_blank" href="/search/%E6%83%B3/1.htm">想</a>
                                    <div>      今天是2015年4月27号 
     整理一下最近的思绪以及要完成的任务 
            1、最近在驾校科目二练车,每周四天,练三周。其实做什么都要用心,追求合理的途径解决。为</div>
                                </li>
                                <li><a href="/article/545.htm"
                                       title="PHP去掉字符串中最后一个字符的方法" target="_blank">PHP去掉字符串中最后一个字符的方法</a>
                                    <span class="text-muted">IT独行者</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2/1.htm">字符串</a>
                                    <div>今天在PHP项目开发中遇到一个需求,去掉字符串中的最后一个字符 原字符串1,2,3,4,5,6, 去掉最后一个字符",",最终结果为1,2,3,4,5,6 代码如下: 
$str = "1,2,3,4,5,6,";
$newstr = substr($str,0,strlen($str)-1);
echo $newstr; </div>
                                </li>
                                <li><a href="/article/672.htm"
                                       title="hadoop在linux上单机安装过程" target="_blank">hadoop在linux上单机安装过程</a>
                                    <span class="text-muted">_wy_</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a>
                                    <div>1、安装JDK 
    jdk版本最好是1.6以上,可以使用执行命令java -version查看当前JAVA版本号,如果报命令不存在或版本比较低,则需要安装一个高版本的JDK,并在/etc/profile的文件末尾,根据本机JDK实际的安装位置加上以下几行: 
   export JAVA_HOME=/usr/java/jdk1.7.0_25  </div>
                                </li>
                                <li><a href="/article/799.htm"
                                       title="JAVA进阶----分布式事务的一种简单处理方法" target="_blank">JAVA进阶----分布式事务的一种简单处理方法</a>
                                    <span class="text-muted">无量</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%B3%BB%E7%BB%9F%E4%BA%A4%E4%BA%92/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/%E4%BA%8B%E5%8A%A1/1.htm">事务</a>
                                    <div>每个方法都是原子操作: 
 
提供第三方服务的系统,要同时提供执行方法和对应的回滚方法 
 
A系统调用B,C,D系统完成分布式事务 
 
 
=========执行开始======== 
A.aa(); 
 
try { 
 B.bb(); 
} catch(Exception e) { 
 A.rollbackAa(); 
} 
 
try { 
 C.cc(); 
} catch(Excep</div>
                                </li>
                                <li><a href="/article/926.htm"
                                       title="安墨移动广 告:移动DSP厚积薄发 引领未来广 告业发展命脉" target="_blank">安墨移动广 告:移动DSP厚积薄发 引领未来广 告业发展命脉</a>
                                    <span class="text-muted">矮蛋蛋</span>
<a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/%E4%BA%92%E8%81%94%E7%BD%91/1.htm">互联网</a>
                                    <div>  “谁掌握了强大的DSP技术,谁将引领未来的广 告行业发展命脉。”2014年,移动广 告行业的热点非移动DSP莫属。各个圈子都在纷纷谈论,认为移动DSP是行业突破点,一时间许多移动广 告联盟风起云涌,竞相推出专属移动DSP产品。 
 
  到底什么是移动DSP呢? 
 
  DSP(Demand-SidePlatform),就是需求方平台,为解决广 告主投放的各种需求,真正实现人群定位的精准广 </div>
                                </li>
                                <li><a href="/article/1053.htm"
                                       title="myelipse设置" target="_blank">myelipse设置</a>
                                    <span class="text-muted">alafqq</span>
<a class="tag" taget="_blank" href="/search/IP/1.htm">IP</a>
                                    <div>  在一个项目的完整的生命周期中,其维护费用,往往是其开发费用的数倍。因此项目的可维护性、可复用性是衡量一个项目好坏的关键。而注释则是可维护性中必不可少的一环。 
 
 
 
注释模板导入步骤  
 
 
 
安装方法: 
打开eclipse/myeclipse 
选择 window-->Preferences-->JAVA-->Code-->Code </div>
                                </li>
                                <li><a href="/article/1180.htm"
                                       title="java数组" target="_blank">java数组</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/java%E6%95%B0%E7%BB%84/1.htm">java数组</a>
                                    <div>java数组的   声明  创建  初始化;   java支持C语言 
   
  
数组中的每个数都有唯一的一个下标 
  一维数组的定义   声明:  int[] a = new int[3];声明数组中有三个数int[3]    
int[] a 中有三个数,下标从0开始,可以同过for来遍历数组中的数

</div>
                                </li>
                                <li><a href="/article/1307.htm"
                                       title="javascript读取表单数据" target="_blank">javascript读取表单数据</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>利用javascript读取表单数据,可以利用以下三种方法获取: 
1、通过表单ID属性:var a = document.getElementByIdx_x_x("id"); 
2、通过表单名称属性:var b = document.getElementsByName("name"); 
3、直接通过表单名字获取:var c = form.content.</div>
                                </li>
                                <li><a href="/article/1434.htm"
                                       title="探索JUnit4扩展:使用Theory" target="_blank">探索JUnit4扩展:使用Theory</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/JUnit/1.htm">JUnit</a><a class="tag" taget="_blank" href="/search/Theory/1.htm">Theory</a>
                                    <div>理论机制(Theory) 
一.为什么要引用理论机制(Theory) 
        当今软件开发中,测试驱动开发(TDD — Test-driven development)越发流行。为什么 TDD 会如此流行呢?因为它确实拥有很多优点,它允许开发人员通过简单的例子来指定和表明他们代码的行为意图。 
TDD 的优点: 
    &nb</div>
                                </li>
                                <li><a href="/article/1561.htm"
                                       title="[Spring Data Mongo一]Spring Mongo Template操作MongoDB" target="_blank">[Spring Data Mongo一]Spring Mongo Template操作MongoDB</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/template/1.htm">template</a>
                                    <div>什么是Spring Data Mongo 
Spring Data MongoDB项目对访问MongoDB的Java客户端API进行了封装,这种封装类似于Spring封装Hibernate和JDBC而提供的HibernateTemplate和JDBCTemplate,主要能力包括 
1. 封装客户端跟MongoDB的链接管理 
2. 文档-对象映射,通过注解:@Document(collectio</div>
                                </li>
                                <li><a href="/article/1688.htm"
                                       title="【Kafka八】Zookeeper上关于Kafka的配置信息" target="_blank">【Kafka八】Zookeeper上关于Kafka的配置信息</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a>
                                    <div>问题: 
1. Kafka的哪些信息记录在Zookeeper中 2. Consumer Group消费的每个Partition的Offset信息存放在什么位置 
3. Topic的每个Partition存放在哪个Broker上的信息存放在哪里 
4. Producer跟Zookeeper究竟有没有关系?没有关系!!! 
  
//consumers、config、brokers、cont</div>
                                </li>
                                <li><a href="/article/1815.htm"
                                       title="java OOM内存异常的四种类型及异常与解决方案" target="_blank">java OOM内存异常的四种类型及异常与解决方案</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/java+OOM+%E5%86%85%E5%AD%98%E5%BC%82%E5%B8%B8/1.htm">java OOM 内存异常</a>
                                    <div>       OOM异常的四种类型: 
    
  一: StackOverflowError :通常因为递归函数引起(死递归,递归太深)。-Xss 128k 一般够用。 
  
     二: out Of memory: PermGen Space:通常是动态类大多,比如web 服务器自动更新部署时引起。-Xmx</div>
                                </li>
                                <li><a href="/article/1942.htm"
                                       title="java-实现链表反转-递归和非递归实现" target="_blank">java-实现链表反转-递归和非递归实现</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>20120422更新: 
对链表中部分节点进行反转操作,这些节点相隔k个: 
0->1->2->3->4->5->6->7->8->9 
k=2 
8->1->6->3->4->5->2->7->0->9 
注意1 3 5 7 9 位置是不变的。 
解法: 
将链表拆成两部分: 
a.0-&</div>
                                </li>
                                <li><a href="/article/2069.htm"
                                       title="Netty源码学习-DelimiterBasedFrameDecoder" target="_blank">Netty源码学习-DelimiterBasedFrameDecoder</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/netty/1.htm">netty</a>
                                    <div> 看DelimiterBasedFrameDecoder的API,有举例: 
 接收到的ChannelBuffer如下: 
 
 +--------------+
 | ABC\nDEF\r\n |
 +--------------+ 
 经过DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())之后,得到: 
 
 +-----+----</div>
                                </li>
                                <li><a href="/article/2196.htm"
                                       title="linux的一些命令 -查看cc攻击-网口ip统计等" target="_blank">linux的一些命令 -查看cc攻击-网口ip统计等</a>
                                    <span class="text-muted">hotsunshine</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>Linux判断CC攻击命令详解 
2011年12月23日 ⁄ 安全 ⁄ 暂无评论 
查看所有80端口的连接数 
 
 
netstat -nat|grep -i '80'|wc -l
对连接的IP按连接数量进行排序

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
查看TCP连接状态

n</div>
                                </li>
                                <li><a href="/article/2323.htm"
                                       title="Spring获取SessionFactory" target="_blank">Spring获取SessionFactory</a>
                                    <span class="text-muted">ctrain</span>
<a class="tag" taget="_blank" href="/search/sessionFactory/1.htm">sessionFactory</a>
                                    <div>
String sql = "select sysdate from dual";
		
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); 
String[] names = wac.getBeanDefinitionNames();
for(int i=0; i&</div>
                                </li>
                                <li><a href="/article/2450.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/%E6%95%B0%E6%8D%AE%E5%AF%BC%E5%87%BA/1.htm">数据导出</a>
                                    <div>Hive几种导出数据方式 
     
1.拷贝文件 
  
如果数据文件恰好是用户需要的格式,那么只需要拷贝文件或文件夹就可以。 
hadoop fs –cp source_path target_path 
  
2.导出到本地文件系统 
  
--不能使用insert into local directory来导出数据,会报错 
--只能使用</div>
                                </li>
                                <li><a href="/article/2577.htm"
                                       title="编程之美" target="_blank">编程之美</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E9%87%8D%E6%9E%84/1.htm">重构</a>
                                    <div>我个人的 PHP 编程经验中,递归调用常常与静态变量使用。静态变量的含义可以参考 PHP 手册。希望下面的代码,会更有利于对递归以及静态变量的理解 
  
header("Content-type: text/plain");
function static_function () {
    static $i = 0;
    if ($i++ < 1</div>
                                </li>
                                <li><a href="/article/2704.htm"
                                       title="Android保存用户名和密码" target="_blank">Android保存用户名和密码</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>转自:http://www.2cto.com/kf/201401/272336.html 
我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地就是为了让用户下一次再使用该程序不会重新输入用户名和密码,这里我使用3种方式来存储用户名和密码 
1、通过普通 的txt文本存储 
2、通过properties属性文件进行存</div>
                                </li>
                                <li><a href="/article/2831.htm"
                                       title="Oracle 复习笔记之同义词" target="_blank">Oracle 复习笔记之同义词</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/Oracle+%E5%90%8C%E4%B9%89%E8%AF%8D/1.htm">Oracle 同义词</a><a class="tag" taget="_blank" href="/search/Oracle+synonym/1.htm">Oracle synonym</a>
                                    <div>转载请出自出处:http://eksliang.iteye.com/blog/2098861 
1.什么是同义词 
      同义词是现有模式对象的一个别名。 
      概念性的东西,什么是模式呢?创建一个用户,就相应的创建了 一个模式。模式是指数据库对象,是对用户所创建的数据对象的总称。模式对象包括表、视图、索引、同义词、序列、过</div>
                                </li>
                                <li><a href="/article/2958.htm"
                                       title="Ajax案例" target="_blank">Ajax案例</a>
                                    <span class="text-muted">gongmeitao</span>
<a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a>
                                    <div>数据库采用Sql Server2005 
项目名称为:Ajax_Demo 
1.com.demo.conn包 
package com.demo.conn; 
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException; 
//获取数据库连接的类public class DBConnec</div>
                                </li>
                                <li><a href="/article/3085.htm"
                                       title="ASP.NET中Request.RawUrl、Request.Url的区别" target="_blank">ASP.NET中Request.RawUrl、Request.Url的区别</a>
                                    <span class="text-muted">hvt</span>
<a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/hovertree/1.htm">hovertree</a>
                                    <div>  
如果访问的地址是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree%3C&n=myslider#zonemenu那么Request.Url.ToString() 的值是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree<&</div>
                                </li>
                                <li><a href="/article/3212.htm"
                                       title="SVG 教程 (七)SVG 实例,SVG 参考手册" target="_blank">SVG 教程 (七)SVG 实例,SVG 参考手册</a>
                                    <span class="text-muted">天梯梦</span>
<a class="tag" taget="_blank" href="/search/svg/1.htm">svg</a>
                                    <div>SVG 实例   在线实例 
下面的例子是把SVG代码直接嵌入到HTML代码中。 
谷歌Chrome,火狐,Internet Explorer9,和Safari都支持。 
注意:下面的例子将不会在Opera运行,即使Opera支持SVG - 它也不支持SVG在HTML代码中直接使用。    SVG 实例 
SVG基本形状 
一个圆 
矩形 
不透明矩形 
一个矩形不透明2 
一个带圆角矩</div>
                                </li>
                                <li><a href="/article/3339.htm"
                                       title="事务管理" target="_blank">事务管理</a>
                                    <span class="text-muted">luyulong</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/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1/1.htm">事务</a>
                                    <div>事物管理 
 
spring事物的好处 
 
为不同的事物API提供了一致的编程模型 
支持声明式事务管理 
提供比大多数事务API更简单更易于使用的编程式事务管理API 
整合spring的各种数据访问抽象 
 
TransactionDefinition 
定义了事务策略 
 
int getIsolationLevel()得到当前事务的隔离级别 
 
READ_COMMITTED </div>
                                </li>
                                <li><a href="/article/3466.htm"
                                       title="基础数据结构和算法十一:Red-black binary search tree" target="_blank">基础数据结构和算法十一:Red-black binary search tree</a>
                                    <span class="text-muted">sunwinner</span>
<a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a><a class="tag" taget="_blank" href="/search/Red-black/1.htm">Red-black</a>
                                    <div>  
The insertion algorithm for 2-3 trees just described is not difficult to understand; now, we will see that it is also not difficult to implement. We will consider a simple representation known</div>
                                </li>
                                <li><a href="/article/3593.htm"
                                       title="centos同步时间" target="_blank">centos同步时间</a>
                                    <span class="text-muted">stunizhengjia</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E9%9B%86%E7%BE%A4%E5%90%8C%E6%AD%A5%E6%97%B6%E9%97%B4/1.htm">集群同步时间</a>
                                    <div>做了集群,时间的同步就显得非常必要了。 以下是查到的如何做时间同步。 在CentOS 5不再区分客户端和服务器,只要配置了NTP,它就会提供NTP服务。 1)确认已经ntp程序包: # yum install ntp 2)配置时间源(默认就行,不需要修改) # vi /etc/ntp.conf server pool.ntp.o</div>
                                </li>
                                <li><a href="/article/3720.htm"
                                       title="ITeye 9月技术图书有奖试读获奖名单公布" target="_blank">ITeye 9月技术图书有奖试读获奖名单公布</a>
                                    <span class="text-muted">ITeye管理员</span>
<a class="tag" taget="_blank" href="/search/ITeye/1.htm">ITeye</a>
                                    <div>ITeye携手博文视点举办的9月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。 9月试读活动回顾:http://webmaster.iteye.com/blog/2118112本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):  
  
  
《NFC:Arduino、Andro</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>