Linux下使用 github+hexo 搭建个人博客01-hexo搭建

为什么要搭建自己的博客系统?

原因有好几个吧,归类如下:
1、自己搭建博客系统很有成就感,可以自己选定页面风格和页面排版;

2、自己搭建博客系统可以根据自己的需要添加各种插件功能,因此整体上比网上的第三方博客网站更好;

3、hexo 支持 MarkDown 标记语法,我们可以很容易的上手,排版简单明了;

4、网上主流的第三方博客网站,不一定很符合你个人的风格,而且由于网站要持续运营下去,因此在此过程中会不可避免的接入广告。当然这点我们也要理解,要允许网站有盈利,这样才能一直为大家服务下去;

5、第三方博客网站肯定会有系统升级,因此会时有出现各种改版的情况,你之前写的博文可能不符合新版本,造成之前的博文排版变得奇丑无比,简直令人崩溃「当然这种情况很少」。还有就是如果改版后符合你的操作习惯那还好,如果不符合那你就有点方了。

6、第三方博客网站有时会出现其他问题。最常见的就是博客页面改版「上一条说过」和图片加载不出来的情况等等。

大概就是上述几条吧,如果你还有其他的原因,欢迎你在文章底部留言!

说明:如果要把 hexo 生成的静态文件对外提供访问,那么请使用 Nginx 完成。
Nginx的部分配置如下:

    server {
        listen       80;
        server_name  www.zhangblog.com zhangblog.com 120.27.48.179;
        access_log  logs/access.log  main;

        location / {
            alias   /app/softinsall/hexo/public/;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

本次部署的机器信息

机器系统:CentOS Linux release 7.5
IP地址:120.27.48.179

因为该博客本人会长期维护和支持下去,因此我是在阿里云购买的机器。

域名解析【可省略】

由于这个博客系统是我以后经常使用并且持续维护,因此我在阿里云购买了域名并且进行了备案。域名为:zhangblog.com 。
并将域名 zhangblog 解析到了 120.27.48.179。

如果你只是个人测试使用,或者没有自己的域名,那么该项可省略。

安装 Git

[root@zhangblog ~]# yum install -y git  

具体使用处
1、后续在 hexo 安装不同的主题时,会使用Git方式获取这些主题;
2、将 hexo 与自己的 GitHub Pages 结合时。

node.js 安装

nodejs 下载

官网地址:

http://nodejs.cn/download/

为了方便,我们直接下载二进制版本。这样就省去了编译安装步骤。

二进制安装包下载

[root@zhangblog software]# pwd
/app/software
[root@zhangblog software]# wget https://npm.taobao.org/mirrors/node/v10.16.0/node-v10.16.0-linux-x64.tar.xz  # 下载二进制安装包

nodejs 部署

[root@zhangblog software]# pwd
/app/software
[root@zhangblog software]# tar xf node-v10.16.0-linux-x64.tar.xz 
[root@zhangblog software]# mv node-v10.16.0-linux-x64 /app/softinsall/
[root@zhangblog software]# cd /app/softinsall/
[root@zhangblog softinsall]# pwd
/app/softinsall
[root@zhangblog softinsall]# ln -s node-v10.16.0-linux-x64 nodejs
[root@zhangblog softinsall]# ll
total 4
lrwxrwxrwx 1 root root   23 Jun  4 15:59 nodejs -> node-v10.16.0-linux-x64
drwxrwxr-x 6  500  500 4096 May 29 05:36 node-v10.16.0-linux-x64

版本信息

[root@zhangblog bin]# pwd
/app/softinsall/nodejs/bin
[root@zhangblog bin]# ./node -v
v10.16.0

创建软连接

[root@zhangblog bin]# ln -s /app/softinsall/nodejs/bin/node /usr/local/bin/node 
[root@zhangblog bin]# ln -s /app/softinsall/nodejs/bin/npm  /usr/local/bin/npm 

hexo 常用操作

如果熟悉 hexo 命令,那么可以忽略这一节。

hexo 操作命令官网

https://hexo.io/docs/commands

$ hexo init [folder]
初始化一个网站。如果没有提供文件夹,Hexo将在当前目录中创建网站。

$ hexo new [layout] </strong><br>创建新文章。如果没有提供布局,Hexo 将使用 _config.yml 中的 default_layout 项提供的布局。<br>如果标题包含空格,用引号括起来。</p> <p><strong>$ hexo generate</strong></p> <pre><code>简写:hexo g</code></pre> <p>生成静态文件。</p> <p><strong><em>可选项</em></strong></p> <pre><code>-d, --deploy</code></pre> <p>生成静态文件完成后部署</p> <p><strong>$ hexo server</strong></p> <pre><code>简写:hexo s</code></pre> <p>启动本地服务器。<br>默认情况下,这是在 http://localhost:4000/ </p> <p><strong><em>可选项</em></strong></p> <pre><code>-p, --port</code></pre> <p>使用端口,覆盖默认端口</p> <p><strong>$ hexo deploy</strong></p> <pre><code>简写:hexo d</code></pre> <p>部署你的网站。</p> <p><strong><em>可选项</em></strong></p> <pre><code>-g, --generate</code></pre> <p>完成部署之前,生成静态文件。</p> <p><strong>$ hexo clean</strong><br>清除缓存文件(db.json)和生成的文件(public)。<br>使用新主题或想重新生成静态文件时可使用</p> <p><strong>$ hexo version</strong><br>版本信息</p> <pre><code>[root@zhangblog hexo]# hexo version hexo: 3.8.0 hexo-cli: 2.0.0 os: Linux 3.10.0-862.14.4.el7.x86_64 linux x64 http_parser: 2.8.0 node: 10.16.0 v8: 6.8.275.32-node.52 uv: 1.28.0 zlib: 1.2.11 brotli: 1.0.7 ares: 1.15.0 modules: 64 nghttp2: 1.34.0 napi: 4 openssl: 1.1.1b icu: 64.2 unicode: 12.1 cldr: 35.1 tz: 2019a</code></pre> <p><br/></p> <h1>hexo 部署</h1> <pre><code>[root@zhangblog ~]# npm install hexo-cli -g # 安装 hexo</code></pre> <p>将 hexo 命令添加到全局,采用软连接方式。</p> <pre><code>[root@zhangblog bin]# pwd # hexo 命令所在目录 /app/softinsall/nodejs/lib/node_modules/hexo-cli/bin [root@zhangblog bin]# ln -s /app/softinsall/nodejs/lib/node_modules/hexo-cli/bin/hexo /usr/local/bin/hexo </code></pre> <p><br/></p> <h1>部署 hexo 博客环境</h1> <h2>部署 hexo</h2> <p>可以放在和 nodejs 同层级的目录。</p> <pre><code>[root@zhangblog softinsall]# pwd /app/softinsall [root@zhangblog softinsall]# mkdir hexo [root@zhangblog softinsall]# cd hexo/ [root@zhangblog hexo]# hexo init # 新建一个网站,默认在目前的文件夹建立网站。 [root@zhangblog hexo]# ll total 168 -rw-r--r-- 1 root root 1765 Jun 4 16:14 _config.yml drwxr-xr-x 285 root root 12288 Jun 4 16:15 node_modules -rw-r--r-- 1 root root 443 Jun 4 16:14 package.json -rw-r--r-- 1 root root 138442 Jun 4 16:15 package-lock.json drwxr-xr-x 2 root root 4096 Jun 4 16:14 scaffolds drwxr-xr-x 3 root root 4096 Jun 4 16:14 source drwxr-xr-x 3 root root 4096 Jun 4 16:14 themes [root@zhangblog hexo]# ll themes/ # 查看自带的主题 total 4 drwxr-xr-x 6 root root 4096 Jun 4 16:14 landscape</code></pre> <h2>启动环境测试</h2> <pre><code>[root@zhangblog hexo]# hexo g # 生成静态文件 [root@zhangblog hexo]# ll total 200 -rw-r--r-- 1 root root 1765 Jun 4 16:14 _config.yml -rw-r--r-- 1 root root 25063 Jun 4 16:26 db.json drwxr-xr-x 285 root root 12288 Jun 4 16:15 node_modules -rw-r--r-- 1 root root 447 Jun 4 16:26 package.json -rw-r--r-- 1 root root 138442 Jun 4 16:15 package-lock.json drwxr-xr-x 7 root root 4096 Jun 4 16:26 public # 生成的静态文件 drwxr-xr-x 2 root root 4096 Jun 4 16:14 scaffolds drwxr-xr-x 3 root root 4096 Jun 4 16:14 source drwxr-xr-x 3 root root 4096 Jun 4 16:14 themes [root@zhangblog hexo]# hexo s # 启动服务,默认是 http://localhost:4000 INFO Start processing INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.</code></pre> <h2>端口信息</h2> <pre><code>[root@zhangblog ~]# netstat -lntup | grep 'hexo' tcp6 0 0 :::4000 :::* LISTEN 7072/hexo</code></pre> <h2>浏览器访问</h2> <pre><code>http://www.zhangblog.com:4000/</code></pre> <p><span class="img-wrap"></span></p> <p><br/></p> <h1>更新 hexo 主题</h1> <h2>获取NexT主题</h2> <p>该主题是我们以后长期使用的主题,后续的优化也是基于该主题进行。<br>由于该主题风格和页面排版都很好,因此推荐大家使用。</p> <pre><code>[root@zhangblog hexo]# pwd /app/softinsall/hexo # 注意当前的目录, themes/next 指定存放的位置 [root@zhangblog hexo]# git clone https://github.com/theme-next/hexo-theme-next themes/next # 新地址,当前维护中【但是有些细节不如老版本的】 # 或者 ***** [root@zhangblog hexo]# git clone https://github.com/iissnan/hexo-theme-next themes/next # 老地址,没有维护了「推荐使用」</code></pre> <p><strong>next 主题在 GitHub 有两个地址:</strong></p> <pre><code>https://github.com/theme-next/hexo-theme-next # 新地址,当前维护中 https://github.com/iissnan/hexo-theme-next # 老地址,没有维护了</code></pre> <h2>使用主题</h2> <pre><code>[root@zhangblog hexo]# hexo clean # 清楚缓存和静态文件目录 [root@zhangblog hexo]# vim _config.yml # 修改该配置 ………… # Extensions ## Plugins: https://hexo.io/plugins/ ## Themes: https://hexo.io/themes/ theme: next ………… [root@zhangblog hexo]# hexo g # 生成静态文件 [root@zhangblog hexo]# hexo s -p 80 # 启动服务,指定端口</code></pre> <h2>浏览器访问</h2> <pre><code>http://www.zhangblog.com/</code></pre> <p><span class="img-wrap"></span></p> <h1>新建一篇博客</h1> <h2>新建博客</h2> <pre><code>[root@zhangblog hexo]# pwd /app/softinsall/hexo [root@zhangblog hexo]# hexo new 'MarkDown_Use_Guide' INFO Created: /app/softinsall/hexo/source/_posts/MarkDown_Use_Guide.md [root@zhangblog hexo]# cat source/_posts/MarkDown_Use_Guide.md # 系统生成内容如下 --- title: MarkDown_Use_Guide date: 2019-06-04 19:28:51 tags: ---</code></pre> <h2>为博客添加内容---- Markdown 新手指南</h2> <pre><code>[root@zhangblog hexo]# pwd /app/softinsall/hexo [root@zhangblog hexo]# cat source/_posts/MarkDown_Use_Guide.md --- title: MarkDown 新手指南 date: 2019-06-04 19:28:51 tags: - MarkDown categories: - MarkDown --- # 标题 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 --- # 列表 ## 无序列表 - 文本1 - 文本2 - 文本3 ## 有序列表 1. 文本1 2. 文本2 3. 文本3 --- # 链接、图片和引用 ## 这是一个超连接 [lightzhang 个人博客](http://www.zhangblog.com/) ## 这是一个站外图片链接 ![示例图](https://www.cnblogs.com/images/logo_small.gif) ## 这是一个站内图片链接 ![数字网络](/uploads/weixin_pulic_small.jpg) ## 这个一个引用 > 宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒 --- # 粗体和斜体 从最开始的 *wordpress* ,到 *tale* ,到现在的**hexo**,网站变得越来越简单,越来越轻量级,这里主要说说**hexo**的使用。 --- # 代码引用 ## 多行代码 ··· 「备注:实践中,请把前一行开头的 · 改为 `」 #!/bin/bash ################ Version Info ################## # Create Date: 2018-09-29 # Author: Zhang # Mail: zhang@xxxx.com # Version: 1.0 # Attention: 脚本描述说明 ################################################ ··· 「备注:实践中,请把前一行开头的 · 改为 `」 ## 单行代码 【只能一行】 ` /bin/sh echo "test" >> /dev/null ` --- # 表格 ## 书写格式1 | Tables | Are | Cool | | ------------- |:-------------:| -----:| | col 3 is | right-aligned | $1600 | | col 2 is | centered | $12 | | zebra stripes | are neat | $1 | ## 书写格式2 dog | bird | cat ----|------|---- foo | foo | foo bar | bar | bar baz | baz | baz ## 书写格式3 | 名称 | 系统版本 | 内网IP | Hostname | |--|--|--|--| | salt100 | CentOS7.5 | 172.16.1.100 | 10.0.0.100 | | salt01 | CentOS7.5 | 172.16.1.11 | 10.0.0.11 | | salt02 | CentOS7.5 | 172.16.1.12 | 10.0.0.12 | | salt03 | CentOS7.5 | 172.16.1.13 | 10.0.0.13 | # 字体或图片居中 <center> **读万卷书,行万里路** </center> <center> ![数字网络](/uploads/avatar_small.png) </center> --- </code></pre> <h2>站内图片位置</h2> <pre><code>[root@zhangblog hexo]# pwd # 站点位置 /app/softinsall/hexo [root@zhangblog hexo]# ll source/uploads/ total 388 -rw-r--r-- 1 root root 131807 Apr 30 14:39 avatar.png -rw-r--r-- 1 root root 16602 Jun 7 17:39 avatar_small.png -rw-r--r-- 1 root root 209605 Jun 7 17:02 weixin_pulic.jpg -rw-r--r-- 1 root root 19296 Jun 11 14:55 weixin_pulic_small.jpg</code></pre> <h2>生成静态文件</h2> <pre><code>[root@zhangblog hexo]# pwd /app/softinsall/hexo [root@zhangblog hexo]# hexo g # 生成静态文件</code></pre> <h2>浏览器访问</h2> <pre><code>http://www.zhangblog.com/ http://www.zhangblog.com/2019/06/04/MarkDown_Use_Guide/</code></pre> <p><span class="img-wrap"></span></p> <p><br/></p> <h1>推荐阅读</h1> <p><b>Linux下使用 github+hexo 搭建个人博客01-hexo搭建</b></p> <p><b>Linux下使用 github+hexo 搭建个人博客02-hexo部署到Github Pages</b></p> <p><b>Linux下使用 github+hexo 搭建个人博客03-hexo配置优化</b></p> <p><b>Linux下使用 github+hexo 搭建个人博客04-next主题优化</b></p> <p><b>Linux下使用 github+hexo 搭建个人博客05-next主题接入评论系统</b></p> <p><b>Linux下使用 github+hexo 搭建个人博客06-next主题接入数据统计</b></p> <p><b>Linux下使用 github+hexo 搭建个人博客07-next主题接入搜索和站点管理</b></p> <hr> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1175871328817852416"></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">你可能感兴趣的:(博客,NexT,hexo)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1883045412798001152.htm" title="LSP介绍并实现语言服务" target="_blank">LSP介绍并实现语言服务</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/lsp%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80ide/1.htm">lsp编程语言ide</a> <div>首发于Enaium的个人博客LSP(LanguageServerProtocol)介绍前段时间我为JimmerDTO实现了一个LSP的语言服务,这是我第一次实现LSP,所以在这里我分享一下我实现LSP的经验。首先来看一下效果,图片太多,我就放一部分,更多的可以看jimmer-dto-lspLSP是一种协议,用于在IDE和语言服务器之间通信。IDE通过LSP请求语言服务器提供代码分析服务,语言服务器</div> </li> <li><a href="/article/1883045158564458496.htm" title="星露谷模组开发教程#8 自定义武器" target="_blank">星露谷模组开发教程#8 自定义武器</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a> <div>首发于Enaium的个人博客添加武器还是比较简单的,只需要在Data/Weapons中添加一个新的武器数据即可。这里做一张16x16格式为png的图。if(e.Name.IsEquivalentTo("Data/Weapons")){e.Edit(assets=>{vardict=assets.AsDictionary();dict.Data["Awesome_TheLastSword"]=new</div> </li> <li><a href="/article/1883045157318750208.htm" title="星露谷模组开发教程#7 自定义机器" target="_blank">星露谷模组开发教程#7 自定义机器</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a> <div>首发于Enaium的个人博客添加大型工艺品机器也算是大型工艺品,所以我们需要先添加它的大型工艺品。这里做一张16x32格式为png的图。if(e.Name.IsEquivalentTo("Data/BigCraftables")){e.Edit(assets=>{vardict=assets.AsDictionary();dict.Data["Awesome_Orearium"]=newBigCr</div> </li> <li><a href="/article/1883044525547515904.htm" title="Rust入门实战 编写Minecraft启动器#2建立资源模型" target="_blank">Rust入门实战 编写Minecraft启动器#2建立资源模型</a> <span class="text-muted"></span> <div>首发于Enaium的个人博客我们需要声明几个结构体来存储游戏的资源信息,之后我们需要将json文件解析成这几个结构体,所以我们需要添加serde依赖。serde={version="1.0",features=["derive"]}资源相关asset.rsuseserde::Deserialize;usestd::collections::HashMap;#[derive(Deserialize)</div> </li> <li><a href="/article/1883044526877110272.htm" title="Rust入门实战 编写Minecraft启动器#3解析资源配置" target="_blank">Rust入门实战 编写Minecraft启动器#3解析资源配置</a> <span class="text-muted"></span> <div>首发于Enaium的个人博客在上一篇文章中,我们已经建立了资源模型,接下来我们需要解析游戏的配置文件。首先我们添加serde_json依赖和model依赖。model={path="../model"}serde_json="1.0"之后我们在lib.rs中添加解析的trait。pubtraitParse:Sized{typeError;fnparse(value:T)->Result;}之后将所</div> </li> <li><a href="/article/1883044398502047744.htm" title="使用Kotlin编写一个Http服务器" target="_blank">使用Kotlin编写一个Http服务器</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AFkotlinhttp/1.htm">后端kotlinhttp</a> <div>首发于Enaium的个人博客引言在本文中,我们将使用Kotlin编写一个简单的HTTP服务器。我们将使用Java的ServerSocket类来实现这个服务器。我们将创建一个简单的服务器,它将监听端口8000,并在接收到请求时返回一个简单的响应。Http的格式HTTP请求和响应都是文本格式的。HTTP请求由请求行、请求头和请求体组成。HTTP响应由状态行、响应头和响应体组成。具体可以到MDN查看。代</div> </li> <li><a href="/article/1883044052937535488.htm" title="docker 快速入门" target="_blank">docker 快速入门</a> <span class="text-muted">小黄失业ing</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>你好,欢迎来到我的博客!今天我要和大家分享一下如何在CentOS中使用Docker安装常用服务。Docker是一个非常强大的容器技术,它可以让我们轻松地部署和管理各种应用程序,而不用担心环境的差异和依赖的问题。Docker的安装和使用也很简单,只需要几个步骤就可以完成。下面我就来具体介绍一下。安装docker首先,我们需要在CentOS上安装DockerEngine。DockerEngine是Do</div> </li> <li><a href="/article/1883043800713064448.htm" title="「Py」基础语法篇 之 Python缩进规则" target="_blank">「Py」基础语法篇 之 Python缩进规则</a> <span class="text-muted">何曾参静谧</span> <a class="tag" taget="_blank" href="/search/%E3%80%8CPy%E3%80%8DPython%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/1.htm">「Py」Python程序设计</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>✨博客主页何曾参静谧的博客(✅关注、点赞、⭐收藏、转发)全部专栏(专栏会有变化,以最新发布为准)「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C++」C/C++程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制开发「Py」Python程序设计「Math」探秘数学世界「PK」Pa</div> </li> <li><a href="/article/1883040774296236032.htm" title="第72期 | GPTSecurity周报" target="_blank">第72期 | GPTSecurity周报</a> <span class="text-muted">云起无垠</span> <a class="tag" taget="_blank" href="/search/GPTSecurity/1.htm">GPTSecurity</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%AE%89%E5%85%A8/1.htm">安全</a> <div>GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找到关于GPT/AIGC/LLM最新的研究论文、博客文章、实用的工具和预设指令(Prompts)。现为了更好地知悉近一周的贡献内容,现总结如下。SecurityPapers1.从孤立指令到互动鼓</div> </li> <li><a href="/article/1883037998036086784.htm" title="Docker + Nginx 部署个人静态博客指南" target="_blank">Docker + Nginx 部署个人静态博客指南</a> <span class="text-muted">jax不摆烂</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>本文是一个使用Docker和Nginx部署个人静态博客的指南。通过本指南,您可以快速了解如何使用Docker和Nginx部署自己的静态博客网站。前提在开始使用本指南之前,请具备以下前提:首先你得有个服务器服务器已经安装好Git、Vim等工具一份静态博客源码,本文以AstroAirBlog为例步骤第一步:安装Dockersudoaptinstalldocker第二步:拉取Nginx镜像dockerp</div> </li> <li><a href="/article/1883014930521714688.htm" title="开发基于WebRTC和OpenAI实时API的AI语音助手框架:技术解析与最佳实践" target="_blank">开发基于WebRTC和OpenAI实时API的AI语音助手框架:技术解析与最佳实践</a> <span class="text-muted">花生糖@</span> <a class="tag" taget="_blank" href="/search/AIGC%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%99%E5%BA%93/1.htm">AIGC学习资料库</a><a class="tag" taget="_blank" href="/search/webrtc/1.htm">webrtc</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)和实时通信技术的发展,构建一个能够提供即时响应、多语言支持以及个性化用户体验的AI语音助手变得越来越重要。本文将深入探讨如何使用现代Web技术和先进的AI工具开发这样一个语音助手框架,具体来说,我们将基于Next.js、WebRTC和OpenAIAPI创建一个高效且用户友好的解决方案。技术架构主框架-Next.js选择Next.js作为主框架不仅因为它提供的服务端渲染(SSR)</div> </li> <li><a href="/article/1883009637096157184.htm" title="【2024博客之星】我的年度技术总结:Netty渡劫指南--从线程暴走到百万长连接,这一年我踩过的坑比写的代码还多" target="_blank">【2024博客之星】我的年度技术总结:Netty渡劫指南--从线程暴走到百万长连接,这一年我踩过的坑比写的代码还多</a> <span class="text-muted">码到三十五</span> <a class="tag" taget="_blank" href="/search/netty%E8%A7%A3%E6%9E%90/1.htm">netty解析</a><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>时间过得真快,作为一名十年的技术老鸟,这一年来跟Netty打交道打得不少。今天就聊聊这一年来我跟Netty的那些事儿,还有我在学习它技术原理时的一些总结。导读Netty再相见:捡起来、用起来Netty原理学习:边啃边写变总结Netty实战:干不爬我的终将被我干爬一、为什么选择Netty?二、线程模型:从车祸现场到秋名山车神三、内存管理:从OOM拳皇到内存刺客四、协议设计:从二进制乱码到量子通信五、</div> </li> <li><a href="/article/1882983790423371776.htm" title="Windows10环境下使用docker部署Dify" target="_blank">Windows10环境下使用docker部署Dify</a> <span class="text-muted">南南的sky</span> <a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a> <div>前言最近带教导师让使用dify做一些工程项目,我在此之前没用过dify,也不知道怎么部署,便花了些时间研究了一下,这篇博客的主要目的是记录如何在windows10系统上使用docker部署dify,碰到了哪些问题以及解决方案。什么是DifyDify是一款开源的大语言模型(LLM)应用开发平台。它融合了后端即服务(BackendasService)和LLMOps的理念,使开发者可以快速搭建生产级的生</div> </li> <li><a href="/article/1882959457462317056.htm" title="浅谈Linux C基础9----数据链表" target="_blank">浅谈Linux C基础9----数据链表</a> <span class="text-muted">Oracle_666</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>前言:基于C语言实现数据链表1.实现代码函数:#include"loop_list.h"//创建单向循环链表node_pcreate_loop(){node_pH=(node_p)malloc(sizeof(node));if(H==NULL){printf("空间申请失败\n");returnNULL;}H->data=0;//链表中暂无数据H->next=H;//单向循环链表,尾结点指向头结点</div> </li> <li><a href="/article/1882955418901213184.htm" title="Markdown Viewer 浏览器, vscode" target="_blank">Markdown Viewer 浏览器, vscode</a> <span class="text-muted">sun007700</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>使用VSCode插件打造完美的MarkDown编辑器(插件安装、插件配置、markdown语法)_vscodemarkdown-CSDN博客右键.md文件,选择打开方式(安装一些markdown的插件)vscode如何预览markdown文件|FromideaGitCode-全球开发者的开源社区,开源代码托管平台MarkdownViewer安装与配置完全指南-CSDN博客Chrome安装Markd</div> </li> <li><a href="/article/1882954156583481344.htm" title="selenium自动化测试01" target="_blank">selenium自动化测试01</a> <span class="text-muted">Meng XY</span> <a class="tag" taget="_blank" href="/search/selenium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/1.htm">selenium自动化测试</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a> <div>前言新人一个,打算写写博客,去记录个人的学习历程。花了一周的时间去学习了selenium自动化,然后记录下来,一些语法、代码之类的。文笔不是很好,一些代码标注、注释可能不是很准确,望见谅。selenium自动化测试呢我用的是Java+maven,工具是IDEA。我在学习自动化的时候用的是eclipse,我习惯用IDEA,看个人喜好了。(要有Java编程基础,Java的话可能会在后续上线,还没写)介</div> </li> <li><a href="/article/1882938391159435264.htm" title="VScode使用笔记" target="_blank">VScode使用笔记</a> <span class="text-muted">我的老子姓彭</span> <a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a> <div>VScode打开keil工程的配置[STM32]从零开始的vscode连接keil教程_vscode配置keil环境-CSDN博客补充:包含头文件vscode编辑keilarm工程中遇到的问题以及解决方法-了不起的亮亮-博客园</div> </li> <li><a href="/article/1882930702320726016.htm" title="游戏引擎架构第二版中文pdf_Allen Kashiwa的游戏开发信息" target="_blank">游戏引擎架构第二版中文pdf_Allen Kashiwa的游戏开发信息</a> <span class="text-muted">weixin_39811166</span> <a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E%E6%9E%B6%E6%9E%84%E7%AC%AC%E4%BA%8C%E7%89%88%E4%B8%AD%E6%96%87pdf/1.htm">游戏引擎架构第二版中文pdf</a> <div>0本文首发于我的github和我的博客,欢迎大家与我交流。1基础知识与通用技能1.1语言相关1.1.1C/C++C++Primer1.1.2C#C#编程指南CLRviaC#(第4版)1.1.3LuaProgramminginLua1.1.4Python廖雪峰的Python教程1.2语言无关1.2.1算法算法图解DataStructureVisualizations算法可视化visualgoIntr</div> </li> <li><a href="/article/1882914690653286400.htm" title="Python tkinter Menu菜单组件详解" target="_blank">Python tkinter Menu菜单组件详解</a> <span class="text-muted">白客小李666</span> <a class="tag" taget="_blank" href="/search/%E6%84%8F%E5%BF%97%E8%AE%A9%E6%88%91%E5%9C%A8%E7%BC%96%E7%A8%8B%E9%A2%86%E5%9F%9F%E4%B8%8A%E5%8F%96%E5%BE%97%E7%9A%84%E8%83%9C%E5%88%A9/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> <div>好久没有更新了,今天我来领大家熟悉一下Menu组件1.认识、了解Menu什么是Menumenu组件是tkinter中的菜单组件,通过该组件,开发者可以为窗口设计菜单和工具栏等。(ttk还提供了treeview树形菜单,python遍历目录的两种方法_python遍历目录-CSDN博客,这篇博客提到过)Menu的好处有人会问,为什么要用Menu呢?如果我们要模拟右键菜单可以看到,菜单中有很多按钮。可</div> </li> <li><a href="/article/1882902336301494272.htm" title="基于深度学习的鸟类识别系统详解(UI界面 + YOLOv10 + 数据集)" target="_blank">基于深度学习的鸟类识别系统详解(UI界面 + YOLOv10 + 数据集)</a> <span class="text-muted">2025年数学建模美赛</span> <a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a><a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><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> <div>引言鸟类识别是计算机视觉领域中一个独具挑战性的任务,尤其是在复杂的自然环境中,识别不同种类的鸟类需要非常强大的模型和丰富的数据集。随着深度学习技术的发展,基于YOLO(YouOnlyLookOnce)系列模型的目标检测系统展现了卓越的性能,特别是在速度和精度上的平衡方面。本博客将详细讲解如何利用YOLOv10模型来构建一个基于深度学习的鸟类识别系统。该系统会结合自定义鸟类数据集,设计一个简洁直观的</div> </li> <li><a href="/article/1882889103159128064.htm" title="25-5 SQL 注入攻击 - insert注入" target="_blank">25-5 SQL 注入攻击 - insert注入</a> <span class="text-muted">技术探索</span> <a class="tag" taget="_blank" href="/search/Web%E5%AE%89%E5%85%A8%E6%94%BB%E9%98%B2%E5%85%A8%E8%A7%A3%E6%9E%90/1.htm">Web安全攻防全解析</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客一、注入原理描述:insert注入是指通过前端注册的信息被后台通过insert操作插入到数据库中。如果后台没有做相应的处理,就可能导致insert注入漏洞。原因:后台未对用户输入进行充分验证和过滤,导致恶意用户可以利用特定的输入构造恶意代码,从而影响数据库的插入操作,或者获取敏感数据。二、注入方法注入手段</div> </li> <li><a href="/article/1882884440980516864.htm" title="openresty+lua实现实时写kafka" target="_blank">openresty+lua实现实时写kafka</a> <span class="text-muted">sky@梦幻未来</span> <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/openresty/1.htm">openresty</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/openresty/1.htm">openresty</a><a class="tag" taget="_blank" href="/search/lua/1.htm">lua</a> <div>一.背景在使用openresty+lua+nginx+flume,通过定时切分日志发送kafka的方式无法满足实时性的情况下,小编开始研究openresty+lua+nginx+kafka实时写kafka,从而达到数据实时性,和高性能保证。二.实现1.openresty安装nginx,以及lua的使用请看博主上一篇博客https://blog.csdn.net/qq_29497387/articl</div> </li> <li><a href="/article/1882876992206991360.htm" title="Java 大视界 -- Java 大数据中的自然语言生成技术与实践(63)" target="_blank">Java 大视界 -- Java 大数据中的自然语言生成技术与实践(63)</a> <span class="text-muted">青云交</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%96%B0%E8%A7%86%E7%95%8C/1.htm">大数据新视界</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E8%A7%86%E7%95%8C/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/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%94%9F%E6%88%90/1.htm">自然语言生成</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E4%BA%8E%E8%A7%84%E5%88%99%E6%A8%A1%E5%9E%8B/1.htm">基于规则模型</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E4%BA%8E%E7%BB%9F%E8%AE%A1%E6%A8%A1%E5%9E%8B/1.htm">基于统计模型</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E4%BA%8E%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%A8%A1%E5%9E%8B/1.htm">基于深度学习模型</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E9%97%BB%E5%86%99%E4%BD%9C/1.htm">新闻写作</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E5%AE%A2%E6%9C%8D/1.htm">智能客服</a> <div>亲爱的朋友们,热烈欢迎来到青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而我的博客正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也期待你毫无保留地分享独特见解,愿我们于此携手成长,共赴新程!一、欢迎加入【福利社群】点击快速加入:青云交灵犀技韵交响盛汇福利社群点击快速加入2:2024CSDN博客之星创作交流营(NEW)二、本博客的精华专栏:大数据新视</div> </li> <li><a href="/article/1882868921137164288.htm" title="vim在命令模式下的查找功能" target="_blank">vim在命令模式下的查找功能</a> <span class="text-muted">千航@abc</span> <a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>/ab从上往下n下一个N上一个示例:在命令模式下直接点击键盘上的/就可以进行查找,比如我要查找a,输入a后再回车,就可以检索出文件中所有和a有关的内容。?ab从下往上N下一个n上一个示例:和上图相同,这里就不再做示范,唯一的区别就是一个是?一个是/,其他的没有什么区别,功能完全一致,使用哪个就看个人的喜好了。(vim查找如何不区分大小写:vim查找如何忽略字母的大小写-CSDN博客)</div> </li> <li><a href="/article/1882866270408339456.htm" title="python学opencv|读取图像(四十四)原理探究:bitwise_and()函数实现图像按位与运算" target="_blank">python学opencv|读取图像(四十四)原理探究:bitwise_and()函数实现图像按位与运算</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/opencv/1.htm">opencv</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/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a> <div>【1】引言前序学习进程中,已经掌握了两张图片按位与操作的基本技巧:python学opencv|读取图像(四十三)使用cv2.bitwise_and()函数实现图像按位与运算-CSDN博客【2】cv2.bitwise_and()函数实现图像按位与运算原理【2.1】图像运算在前述学习过程中,我们只是使用了cv2.bitwise_and()函数,其实未曾深入探究其根本原理。为实现原理探索,直接使用彩色图</div> </li> <li><a href="/article/1882852903648030720.htm" title="Java 大视界 -- Java 大数据中的知识图谱构建与应用(62)" target="_blank">Java 大视界 -- Java 大数据中的知识图谱构建与应用(62)</a> <span class="text-muted">青云交</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%96%B0%E8%A7%86%E7%95%8C/1.htm">大数据新视界</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E8%A7%86%E7%95%8C/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/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/1.htm">知识图谱</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E6%8A%BD%E5%8F%96/1.htm">信息抽取</a><a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E8%9E%8D%E5%90%88/1.htm">知识融合</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E6%90%9C%E7%B4%A2/1.htm">智能搜索</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E6%8E%A8%E8%8D%90/1.htm">智能推荐</a><a class="tag" taget="_blank" href="/search/%E9%A3%8E%E9%99%A9%E8%AF%84%E4%BC%B0/1.htm">风险评估</a> <div>亲爱的朋友们,热烈欢迎来到青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而我的博客正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也期待你毫无保留地分享独特见解,愿我们于此携手成长,共赴新程!一、欢迎加入【福利社群】点击快速加入:青云交灵犀技韵交响盛汇福利社群点击快速加入2:2024CSDN博客之星创作交流营(NEW)二、本博客的精华专栏:大数据新视</div> </li> <li><a href="/article/1882846475923288064.htm" title="【Docker系列】容器基础、Docker镜像管理_docker 博客镜像" target="_blank">【Docker系列】容器基础、Docker镜像管理_docker 博客镜像</a> <span class="text-muted">2401_86963185</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>2容器基础2.1Docker镜像查找命令查找dockersearchmysqldocker官网查找https://hub.docker.com2.2Docker镜像管理拉取MySQL镜像dockerpullmysql:latest查看本地镜像dockerimages镜像加速(阿里云)sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EO</div> </li> <li><a href="/article/1882845468724097024.htm" title="2024 年度学习总结" target="_blank">2024 年度学习总结</a> <span class="text-muted">Sunrise_angel</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>目录1.前言2.csdn对于我的意义3.写博客的初衷3.1现在的想法4.写博客的意义5.关于生活和博客创作5.1写博客较于纸质笔记的优势6.致20251.前言不知不觉,来到csdn已经快一年了,在这一年中,我通过csdn学习到了很多知识,结识了很多的良师益友.最重要的是,在技术上,我有了质的飞跃.2.csdn对于我的意义csdn,对我来说不仅是一个学习平台,更记录了我在2024的成长历程,可以说,</div> </li> <li><a href="/article/1882832231056076800.htm" title="【VScode】如何使用详细步骤【笔记】、配置 C / C ++【笔记】" target="_blank">【VScode】如何使用详细步骤【笔记】、配置 C / C ++【笔记】</a> <span class="text-muted">仟濹</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E5%B7%A5%E5%85%B7%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E5%90%88%E9%9B%86/1.htm">编程工具的使用方法合集</a><a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">C语言学习笔记</a><a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</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%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%23/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><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a> <div>2024-10-10-笔记-24作者(Author):郑龙浩(仟濹)该笔记写于2024-07-02摘抄到博客上的时间是2024-10-10VScode配置C/C++笔记我是看了下方链接的视频后为了方便后期复习做的笔记:B站某UP主的视频如下:VScode配置C/C++开发环境,安装/环境配置/编译/调试/汉化/编码问题_哔哩哔哩_bilibili[VScode配置C/C++开发环境,安装/环境配置</div> </li> <li><a href="/article/1882823151616847872.htm" title="使用 Python 指定内容 爬取百度引擎搜索结果" target="_blank">使用 Python 指定内容 爬取百度引擎搜索结果</a> <span class="text-muted">m0_74825614</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/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>在本篇博客中,我将展示如何使用Python编写一个简单的百度搜索爬虫。这个爬虫可以自动化地从百度获取搜索结果,并提取每个结果的标题和链接。我们将使用requests库来发送HTTP请求,使用BeautifulSoup库来解析HTML内容。需求分析在实现爬虫之前,我们需要明确以下需求:通过构建百度搜索的URL来发送搜索请求。解析百度搜索结果页面,提取每个结果的标题和链接。将搜索结果以列表形式返回,方</div> </li> <li><a href="/article/59.htm" title="html" target="_blank">html</a> <span class="text-muted">周华华</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a> <div>js 1,数组的排列 var arr=[1,4,234,43,52,]; for(var x=0;x<arr.length;x++){    for(var y=x-1;y<arr.length;y++){      if(arr[x]<arr[y]){     &</div> </li> <li><a href="/article/186.htm" title="【Struts2 四】Struts2拦截器" target="_blank">【Struts2 四】Struts2拦截器</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/struts2%E6%8B%A6%E6%88%AA%E5%99%A8/1.htm">struts2拦截器</a> <div>Struts2框架是基于拦截器实现的,可以对某个Action进行拦截,然后某些逻辑处理,拦截器相当于AOP里面的环绕通知,即在Action方法的执行之前和之后根据需要添加相应的逻辑。事实上,即使struts.xml没有任何关于拦截器的配置,Struts2也会为我们添加一组默认的拦截器,最常见的是,请求参数自动绑定到Action对应的字段上。   Struts2中自定义拦截器的步骤是:</div> </li> <li><a href="/article/313.htm" title="make:cc 命令未找到解决方法" target="_blank">make:cc 命令未找到解决方法</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%91%BD%E4%BB%A4%E6%9C%AA%E7%9F%A5/1.htm">命令未知</a><a class="tag" taget="_blank" href="/search/make+cc/1.htm">make cc</a> <div>安装rz sz程序时,报下面错误:   [root@slave2 src]# make posix cc   -O -DPOSIX -DMD=2 rz.c -o rz make: cc:命令未找到 make: *** [posix] 错误 127   系统:centos 6.6 环境:虚拟机   错误原因:系统未安装gcc,这个是由于在安</div> </li> <li><a href="/article/440.htm" title="Oracle之Job应用" target="_blank">Oracle之Job应用</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/oracle+job/1.htm">oracle job</a> <div> 最近写服务,服务上线后,需要写一个定时执行的SQL脚本,清理并更新数据库表里的数据,应用到了Oracle 的 Job的相关知识。在此总结一下。   一:查看相关job信息    1、相关视图  dba_jobs  all_jobs  user_jobs  dba_jobs_running 包含正在运行</div> </li> <li><a href="/article/567.htm" title="多线程机制" target="_blank">多线程机制</a> <span class="text-muted">朱辉辉33</span> <a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a> <div>转至http://blog.csdn.net/lj70024/archive/2010/04/06/5455790.aspx 程序、进程和线程: 程序是一段静态的代码,它是应用程序执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的单位,一个进程执行过程中可以产生多个线程,每个线程有自身的</div> </li> <li><a href="/article/694.htm" title="web报表工具FineReport使用中遇到的常见报错及解决办法(一)" target="_blank">web报表工具FineReport使用中遇到的常见报错及解决办法(一)</a> <span class="text-muted">老A不折腾</span> <a class="tag" taget="_blank" href="/search/web%E6%8A%A5%E8%A1%A8/1.htm">web报表</a><a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/java%E6%8A%A5%E8%A1%A8/1.htm">java报表</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E8%A1%A8%E5%B7%A5%E5%85%B7/1.htm">报表工具</a> <div>FineReport使用中遇到的常见报错及解决办法(一) 这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。   出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。   1、address pool is full: 含义:地址池满,连接数超过并发数上</div> </li> <li><a href="/article/821.htm" title="mysql rpm安装后没有my.cnf" target="_blank">mysql rpm安装后没有my.cnf</a> <span class="text-muted">林鹤霄</span> <a class="tag" taget="_blank" href="/search/%E6%B2%A1%E6%9C%89my.cnf/1.htm">没有my.cnf</a> <div>Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的, 至于为什么没有这个文件而MySQL却也能正常启动和作用,在这儿有两个说法, 第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动, 第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于r</div> </li> <li><a href="/article/948.htm" title="Kindle Fire HDX root并安装谷歌服务框架之后仍无法登陆谷歌账号的问题" target="_blank">Kindle Fire HDX root并安装谷歌服务框架之后仍无法登陆谷歌账号的问题</a> <span class="text-muted">aigo</span> <a class="tag" taget="_blank" href="/search/root/1.htm">root</a> <div>原文:http://kindlefireforkid.com/how-to-setup-a-google-account-on-amazon-fire-tablet/   Step 4: Run ADB command from your PC   On the PC, you need install Amazon Fire ADB driver and instal</div> </li> <li><a href="/article/1075.htm" title="javascript 中var提升的典型实例" target="_blank">javascript 中var提升的典型实例</a> <span class="text-muted">alxw4616</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>// 刚刚在书上看到的一个小问题,很有意思.大家一起思考下吧 myname = 'global'; var fn = function () { console.log(myname); // undefined var myname = 'local'; console.log(myname); // local }; fn() // 上述代码实际上等同于以下代码 m</div> </li> <li><a href="/article/1202.htm" title="定时器和获取时间的使用" target="_blank">定时器和获取时间的使用</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E6%97%B6%E9%97%B4%E7%9A%84%E8%BD%AC%E6%8D%A2/1.htm">时间的转换</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E5%99%A8/1.htm">定时器</a> <div>定时器:定时创建任务在游戏设计的时候用的比较多   Timer();定时器 TImerTask();Timer的子类  由 Timer 安排为一次执行或重复执行的任务。       定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定</div> </li> <li><a href="/article/1329.htm" title="JDK1.5 Queue" target="_blank">JDK1.5 Queue</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/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a><a class="tag" taget="_blank" href="/search/Queue/1.htm">Queue</a> <div>JDK1.5 Queue LinkedList: LinkedList不是同步的。如果多个线程同时访问列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方</div> </li> <li><a href="/article/1456.htm" title="http认证原理和https" target="_blank">http认证原理和https</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/https/1.htm">https</a> <div>一.基础介绍         在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。         Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后</div> </li> <li><a href="/article/1583.htm" title="【Java范型五】范型继承" target="_blank">【Java范型五】范型继承</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>定义如下一个抽象的范型类,其中定义了两个范型参数,T1,T2   package com.tom.lang.generics; public abstract class SuperGenerics<T1, T2> { private T1 t1; private T2 t2; public abstract void doIt(T</div> </li> <li><a href="/article/1710.htm" title="【Nginx六】nginx.conf常用指令(Directive)" target="_blank">【Nginx六】nginx.conf常用指令(Directive)</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Directive/1.htm">Directive</a> <div>1. worker_processes    8; 表示Nginx将启动8个工作者进程,通过ps -ef|grep nginx,会发现有8个Nginx Worker Process在运行   nobody 53879 118449 0 Apr22 ? 00:26:15 nginx: worker process </div> </li> <li><a href="/article/1837.htm" title="lua 遍历Header头部" target="_blank">lua 遍历Header头部</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/lua+header+%E9%81%8D%E5%8E%86%E3%80%80/1.htm">lua header 遍历 </a> <div> local headers = ngx.req.get_headers()   ngx.say("headers begin", "<br/>")   ngx.say("Host : ", he</div> </li> <li><a href="/article/1964.htm" title="java-32.通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小(两数组的差最小)。" target="_blank">java-32.通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小(两数组的差最小)。</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.Arrays; public class MinSumASumB { /** * Q32.有两个序列a,b,大小都为n,序列元素的值任意整数,无序. * * 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。 * 例如: * int[] a = {100,99,98,1,2,3</div> </li> <li><a href="/article/2091.htm" title="redis" target="_blank">redis</a> <span class="text-muted">开窍的石头</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>在redis的redis.conf配置文件中找到# requirepass foobared 把它替换成requirepass 12356789 后边的12356789就是你的密码 打开redis客户端输入config get requirepass 返回 redis 127.0.0.1:6379> config get requirepass 1) "require</div> </li> <li><a href="/article/2218.htm" title="[JAVA图像与图形]现有的GPU架构支持JAVA语言吗?" target="_blank">[JAVA图像与图形]现有的GPU架构支持JAVA语言吗?</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/java%E8%AF%AD%E8%A8%80/1.htm">java语言</a> <div>       无论是opengl还是cuda,都是建立在C语言体系架构基础上的,在未来,图像图形处理业务快速发展,相关领域市场不断扩大的情况下,我们JAVA语言系统怎么从这么庞大,且还在不断扩大的市场上分到一块蛋糕,是值得每个JAVAER认真思考和行动的事情        </div> </li> <li><a href="/article/2345.htm" title="安装ubuntu14.04登录后花屏了怎么办" target="_blank">安装ubuntu14.04登录后花屏了怎么办</a> <span class="text-muted">cuiyadll</span> <a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a> <div>这个情况,一般属于显卡驱动问题。 可以先尝试安装显卡的官方闭源驱动。 按键盘三个键:CTRL + ALT  +  F1 进入终端,输入用户名和密码登录终端: 安装amd的显卡驱动 sudo  apt-get  install  fglrx 安装nvidia显卡驱动 sudo  ap</div> </li> <li><a href="/article/2472.htm" title="SSL 与 数字证书 的基本概念和工作原理" target="_blank">SSL 与 数字证书 的基本概念和工作原理</a> <span class="text-muted">darrenzhu</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%AF%86/1.htm">加密</a><a class="tag" taget="_blank" href="/search/ssl/1.htm">ssl</a><a class="tag" taget="_blank" href="/search/%E8%AF%81%E4%B9%A6/1.htm">证书</a><a class="tag" taget="_blank" href="/search/%E5%AF%86%E9%92%A5/1.htm">密钥</a><a class="tag" taget="_blank" href="/search/%E7%AD%BE%E5%90%8D/1.htm">签名</a> <div>SSL 与 数字证书 的基本概念和工作原理 http://www.linuxde.net/2012/03/8301.html SSL握手协议的目的是或最终结果是让客户端和服务器拥有一个共同的密钥,握手协议本身是基于非对称加密机制的,之后就使用共同的密钥基于对称加密机制进行信息交换。 http://www.ibm.com/developerworks/cn/webspher</div> </li> <li><a href="/article/2599.htm" title="Ubuntu设置ip的步骤" target="_blank">Ubuntu设置ip的步骤</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a> <div>在单位的一台机器完全装了Ubuntu Server,但回家只能在XP上VM一个,装的时候网卡是DHCP的,用ifconfig查了一下ip是192.168.92.128,可以ping通。 转载不是错: Ubuntu命令行修改网络配置方法 /etc/network/interfaces打开后里面可设置DHCP或手动设置静态ip。前面auto eth0,让网卡开机自动挂载. 1. 以D</div> </li> <li><a href="/article/2726.htm" title="php包管理工具推荐" target="_blank">php包管理工具推荐</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/Composer/1.htm">Composer</a> <div>http://www.phpcomposer.com/   Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。 中文文档  入门指南  下载  安装包列表 Composer 中国镜像 </div> </li> <li><a href="/article/2853.htm" title="Gson使用四(TypeAdapter)" target="_blank">Gson使用四(TypeAdapter)</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/gson/1.htm">gson</a><a class="tag" taget="_blank" href="/search/Gson%E8%87%AA%E5%AE%9A%E4%B9%89%E8%BD%AC%E6%8D%A2%E5%99%A8/1.htm">Gson自定义转换器</a><a class="tag" taget="_blank" href="/search/gsonTypeAdapter/1.htm">gsonTypeAdapter</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2175595 一.概述        Gson的TypeAapter可以理解成自定义序列化和返序列化 二、应用场景举例        例如我们通常去注册时(那些外国网站),会让我们输入firstName,lastName,但是转到我们都</div> </li> <li><a href="/article/2980.htm" title="JQM控件之Navbar和Tabs" target="_blank">JQM控件之Navbar和Tabs</a> <span class="text-muted">gundumw100</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>在JQM中使用导航栏Navbar是简单的。 只需要将data-role="navbar"赋给div即可: <div data-role="navbar"> <ul> <li><a href="#" class="ui-btn-active&qu</div> </li> <li><a href="/article/3107.htm" title="利用归并排序算法对大文件进行排序" target="_blank">利用归并排序算法对大文件进行排序</a> <span class="text-muted">iwindyforest</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F/1.htm">归并排序</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%96%87%E4%BB%B6/1.htm">大文件</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E6%B2%BB%E6%B3%95/1.htm">分治法</a><a class="tag" taget="_blank" href="/search/Merge+sort/1.htm">Merge sort</a> <div>  归并排序算法介绍,请参照Wikipeida zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F 基本思想: 大文件分割成行数相等的两个子文件,递归(归并排序)两个子文件,直到递归到分割成的子文件低于限制行数 低于限制行数的子文件直接排序 两个排序好的子文件归并到父文件 直到最后所有排序好的父文件归并到输入</div> </li> <li><a href="/article/3234.htm" title="iOS UIWebView URL拦截" target="_blank">iOS UIWebView URL拦截</a> <span class="text-muted">啸笑天</span> <a class="tag" taget="_blank" href="/search/UIWebView/1.htm">UIWebView</a> <div>本文译者:candeladiao,原文:URL filtering for UIWebView on the iPhone说明:译者在做app开发时,因为页面的javascript文件比较大导致加载速度很慢,所以想把javascript文件打包在app里,当UIWebView需要加载该脚本时就从app本地读取,但UIWebView并不支持加载本地资源。最后从下文中找到了解决方法,第一次翻译,难免有</div> </li> <li><a href="/article/3361.htm" title="索引的碎片整理SQL语句" target="_blank">索引的碎片整理SQL语句</a> <span class="text-muted">macroli</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a> <div>SET NOCOUNT ON DECLARE @tablename VARCHAR (128) DECLARE @execstr VARCHAR (255) DECLARE @objectid INT DECLARE @indexid INT DECLARE @frag DECIMAL DECLARE @maxfrag DECIMAL --设置最大允许的碎片数量,超过则对索引进行碎片</div> </li> <li><a href="/article/3488.htm" title="Angularjs同步操作http请求with $promise" target="_blank">Angularjs同步操作http请求with $promise</a> <span class="text-muted">qiaolevip</span> <a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a> <div>// Define a factory app.factory('profilePromise', ['$q', 'AccountService', function($q, AccountService) { var deferred = $q.defer(); AccountService.getProfile().then(function(res) { </div> </li> <li><a href="/article/3615.htm" title="hibernate联合查询问题" target="_blank">hibernate联合查询问题</a> <span class="text-muted">sxj19881213</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/HQL/1.htm">HQL</a><a class="tag" taget="_blank" href="/search/%E8%81%94%E5%90%88%E6%9F%A5%E8%AF%A2/1.htm">联合查询</a> <div>最近在用hibernate做项目,遇到了联合查询的问题,以及联合查询中的N+1问题。 针对无外键关联的联合查询,我做了HQL和SQL的实验,希望能帮助到大家。(我使用的版本是hibernate3.3.2)   1 几个常识:  (1)hql中的几种join查询,只有在外键关联、并且作了相应配置时才能使用。  (2)hql的默认查询策略,在进行联合查询时,会产</div> </li> <li><a href="/article/3742.htm" title="struts2.xml" target="_blank">struts2.xml</a> <span class="text-muted">wuai</span> <a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a> <div><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache</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>