HEXO官方文档学习笔记
hexo官方文档
一. hexo 开始使用
1.1 概述
环境必须包括
nodejs
与git
,从对应的官网进行对应的安装;
1.2 建站(测试生成静态文件并本地运行)
执行下面的代码:
$ cd D:hexo/ #换成你的目录
$ npm install -g hexo-cli #安装hexo脚手架
$ hexo init #Hexo自动在当前文件夹下下载搭建网站所需的所有文件
$ npm install #安装依赖包
$ hexo g #完整命令为hexo generate,生成静态文件
$ hexo s #完整命令为hexo server,启动服务器,用来本地预览
生成的项目的目录如下,下面对各个目录功能介绍:
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes
- _config.yml:网站的 配置 信息,您可以在此配置大部分的参数;
- scaffolds:模版 文件夹。当您新建文章时,Hexo 会根据 scaffold 来建立文件:
hexo new title.md
- source:资源文件夹是存放用户资源的地方; _posts 文件夹指的是发布文章的文件夹;_drafts为文章的草稿文件夹,除 _posts 文件夹之,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。
- themes:主题 文件夹。Hexo 会根据主题来生成静态页面。
1.3 配置(_config.yml 中修改网站配置)
_config.yml 文件中的
# Home page setting
在后面介绍;
1.3.1 网站(# Site)
参数 | 描述
------------- | ------------------------------------------- |------------------
title | 网站标题
subtitle | 网站副标题
description | 网站描述
author | 您的名字
language | 网站使用的语言
timezone | 网站时区。Hexo 默认使用您电脑的时区。时区列表。比如说:America/New_York, Japan, 和 UTC 。
description主要用于SEO,告诉搜索引擎一个关于您站点的简单描述,通常建议在其中包含您网站的关键词。author参数用于主题显示文章的作者。
1.3.2 网址(# URL)
参数 | 描述 | 默认值 |
---|---|---|
url | 网址 | |
root | 网站根目录 | |
permalink | 文章的 永久链接 格式 | :year/:month/:day/:title/ |
permalink_defaults | 永久链接中各部分的默认值 |
如果您的网站存放在子目录中,例如
http://yoursite.com/blog
,则请将您的url
设为http://yoursite.com/blog
并把root
设为/blog/
。
1.3.3 目录(# Directory)——建议刚学hexo时不改动
参数 | 描述 | 默认值 |
---|---|---|
source_dir | 资源文件夹,这个文件夹用来存放内容。 | source |
public_dir | 公共文件夹,这个文件夹用于存放生成的站点文件。 | public |
tag_dir | 标签文件夹 | tags |
archive_dir | 归档文件夹 | archives |
category_dir | 分类文件夹 | categories |
code_dir | Include code 文件夹 | downloads/code |
i18n_dir | 国际化(i18n)文件夹 | :lang |
skip_render | 跳过指定文件的渲染,您可使用 glob 表达式来匹配路径。 |
1.3.4 文章(# Writing)
参数 | 描述 | 默认值 |
---|---|---|
new_post_name | 新文章的文件名称 | :title.md |
default_layout | 预设布局 | post |
auto_spacing | 在中文和英文之间加入空格 | false |
titlecase | 把标题转换为 title case | false |
external_link | 在新标签中打开链接 | true |
filename_case | 把文件名称转换为 (1) 小写或 (2) 大写 | 0 |
render_drafts | 显示草稿 | false |
post_asset_folder | 启动 Asset 文件夹 | false |
relative_link | 把链接改为与根目录的相对位址 | false |
future | 显示未来的文章 | true |
highlight | 代码块的设置 |
1.3.5 分类 & 标签(# Category & Tag)
参数 | 描述 | 默认值 |
---|---|---|
default_category | 默认分类 | uncategorized |
category_map | 分类别名 | |
tag_map | 标签别名 |
1.3.6 日期 / 时间格式(# Date / Time format)
参数 | 描述 | 默认值 |
---|---|---|
date_format | 日期格式 | YYYY-MM-DD |
time_format | 时间格式 | H:mm:ss |
Hexo 使用 Moment.js 来解析和显示时间。
1.3.6 分页(# Pagination)
参数 | 描述 | 默认值 |
---|---|---|
per_page | 每页显示的文章量 (0 = 关闭分页功能) | 10 |
pagination_dir | 分页目录 | page |
1.3.6 扩展(# Extensions)
参数 | 描述
------------- | ------------------------------------------- |------------------
theme | 当前主题名称。值为false时禁用主题
deploy | 部署部分的设置
1.4 命令
1.4.1 指令
# init : hexo初始化新建一个网站,没有folder默认当前文件夹建立网站项目,一般是在网站建立文件夹下使用gitBash直接输入 hexo init 进行初始化;
$ hexo init [folder]
# new : 新建一篇文章,若没有设置 layout 的话,默认使用 _config.yml 中的 default_layout 参数post代替,如果标题包含空格的话,请使用引号括起来;
$ hexo new [layout]
# generate : 生成静态文件;可选参数:-d, --deploy 文件生成后立即部署网站 ;-w, --watch 监视文件变动
$ hexo generate
$ hexo g #简写
# publish : 发表草稿
$ hexo publish [layout] <filename>
# server : 启动服务器,默认网址: http://localhost:4000/。可选参数:-i 重设IP地址; -p, --port 重设端口;-s, --static 只使用静态文件;-l, --log 启动日记记录,使用覆盖记录格式
$ hexo server
# deploy : 部署网站。可选参数:-g, --generate 部署之前预先生成静态文件
$ hexo deploy
$ hexo d # 简写
# render : 渲染文件。可选参数:-o, --output 设置输出路径
$ hexo render <file1> [file2] ...
# migrate : 从其他博客系统 迁移内容。
$ hexo migrate <type>
# clean : 清除缓存文件 (db.json) 和已生成的静态文件 (public),发布新的网站前应执行该命令。
$ hexo clean
# list : 列出网站资料。
$ hexo list <type>
# version : 显示 Hexo 版本。
$ hexo version
</code></pre>
<h4>1.4.2 选项</h4>
<pre><code class="bash"># 安全模式 : 在安全模式下,不会载入插件和脚本。当您在安装新插件遭遇问题时,可以尝试以安全模式重新执行。
$ hexo --safe
# 调试模式 : 在终端中显示调试信息并记录到 debug.log。当您碰到问题时,可以尝试用调试模式重新执行一次,并 提交调试信息到 GitHub。
$ hexo --debug
# 简洁模式 : 隐藏终端信息。
$ hexo --silent
# 自定义配置文件的路径 : 自定义配置文件的路径,执行后将不再使用 _config.yml。
$ hexo --config custom.yml
# 显示草稿 : 显示 source/_drafts 文件夹中的草稿文章。
$ hexo --draft
# 自定义 CWD : 自定义当前工作目录(Current working directory)的路径。
$ hexo --cwd /path/to/cwd
</code></pre>
<h2>二. 基本操作</h2>
<h3>2.1 写作</h3>
<p>创建一篇新文章的命令:</p>
<pre><code class="bash"># layout 表示文章的布局,默认是post,可修改 _config.yml 中的 default_layout 参数来指定默认布局
$ hexo new [layout] <title>
</code></pre>
<h4>2.1.1 布局(Layout)</h4>
<p>Hexo 有三种默认布局:post、page 和 draft,也可以自定义其他布局,都将储存到 source/_posts 文件夹;</p>
<p>【若不想你的文章被处理,你可以将 Front-Matter 中的layout: 设为 false 。】</p>
<h4>2.1.2 文件名称</h4>
<p>Hexo 默认以标题做为文件名称,但您可编辑 new_post_name 参数来改变默认的文件名称,举例来说,设为 :year-:month-:day-:title.md 可让您更方便的通过日期来管理文章。</p>
<table>
<thead>
<tr>
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>:title</td>
<td>标题(小写,空格将会被替换为短杠)</td>
</tr>
<tr>
<td>:year</td>
<td>建立的年份,比如, 2015</td>
</tr>
<tr>
<td>:month</td>
<td>建立的月份(有前导零),比如, 04</td>
</tr>
<tr>
<td>:i_month</td>
<td>建立的月份(无前导零),比如, 4</td>
</tr>
<tr>
<td>:day</td>
<td>建立的日期(有前导零),比如, 07</td>
</tr>
<tr>
<td>:i_day</td>
<td>建立的日期(无前导零),比如, 7</td>
</tr>
</tbody>
</table>
<h4>2.1.3 草稿</h4>
<p>草稿存放在 <code>source/_drafts</code> 目录下,通过 <code>hexo new draft :title</code> 建立,再通过 <code>hexo publish [layout] <title></code> 来指定布局并发布文章;</p>
<p>【草稿默认不会显示在页面中,您可在执行时加上 --draft 参数,或是把 render_drafts 参数设为 true 来预览草稿。】</p>
<h4>2.1.4 模版(Scaffold)</h4>
<p>新建文章时,Hexo 会根据 scaffolds 文件夹内相对应的文件来建立文件;<br> 例如 : <code>$ hexo new photo "My Gallery"</code>,表示Hexo 会尝试在 scaffolds 文件夹中寻找 photo.md,并根据其内容建立文章,以下是您可以在模版中使用的变量:</p>
<table>
<thead>
<tr>
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>layout</td>
<td>布局</td>
</tr>
<tr>
<td>title</td>
<td>标题</td>
</tr>
<tr>
<td>date</td>
<td>文件建立日期</td>
</tr>
</tbody>
</table>
<h3>2.2 Front-matter</h3>
<p>Front-matter 是文件最上方以 --- 分隔的区域,用于指定个别文件的变量;</p>
<pre><code class="m">title: Hello World
date: 2013/7/13 20:46:25
---
</code></pre>
<p>以下是预先定义的参数,您可在模板中使用这些参数值并加以利用。</p>
<table>
<thead>
<tr>
<th>参数</th>
<th>描述</th>
<th>默认值</th>
</tr>
</thead>
<tbody>
<tr>
<td>layout</td>
<td>布局</td>
</tr>
<tr>
<td>title</td>
<td>标题</td>
</tr>
<tr>
<td>date</td>
<td>建立日期</td>
<td>文件建立日期</td>
</tr>
<tr>
<td>updated</td>
<td>更新日期</td>
<td>文件更新日期</td>
</tr>
<tr>
<td>comments</td>
<td>开启文章的评论功能</td>
<td>true</td>
</tr>
<tr>
<td>tags</td>
<td>标签(不适用于分页)</td>
</tr>
<tr>
<td>categories</td>
<td>分类(不适用于分页)</td>
</tr>
<tr>
<td>permalink</td>
<td>覆盖文章网址</td>
</tr>
</tbody>
</table>
<h4>2.2.1 分类和标签</h4>
<p>只有文章支持分类和标签,您可以在 Front-matter 中设置。Hexo 中的分类具有顺序性和层次性,而标签没有顺序和层次,区别于其他系统;</p>
<pre><code class="m">categories:
- Diary
tags:
- PS3
- Games
</code></pre>
<h4>2.2.2 JSON Front-matter</h4>
<p>除了 YAML 外,你也可以使用 JSON 来编写 Front-matter,只要将 --- 代换成 ;;; 即可</p>
<pre><code class="m">"title": "Hello World",
"date": "2013/7/13 20:46:25"
;;;
</code></pre>
<h3>2.3 标签插件(Tag Plugins)</h3>
<p>标签插件和 Front-matter 中的标签不同,它们是用于在文章中快速插入特定内容的插件。</p>
<h4>2.3.1 引用块</h4>
<p>在文章中插入引言,可包含作者、来源和标题。</p>
<p><strong>别号: quote</strong></p>
<pre><code class="m">方式1:提供参数, 这些参数将会被显示出来
{% blockquote [author[, source]] [link] [source_link_title] %}
content
{% endblockquote %}
方式2:没有提供参数,则只输出普通的 blockquote
方式3:引用书上的句子
{% blockquote David Levithan, Wide Awake %}
Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.
{% endblockquote %}
方式4:引用 Twitter
{% blockquote @DevDocs https://twitter.com/devdocs/status/356095192085962752 %}
NEW: DevDocs now comes with syntax highlighting. http://devdocs.io
{% endblockquote %}
方式5:引用网络上的文章
{% blockquote Seth Godin http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html Welcome to Island Marketing %}
Every interaction is both precious and an opportunity to delight.
{% endblockquote %}
</code></pre>
<h4>2.3.2 代码块</h4>
<p>在文章中插入代码。</p>
<p><strong>别名: code</strong></p>
<pre><code class="m">方式1:提供参数, 这些参数将会被显示出来
{% codeblock [title] [lang:language] [url] [link text] %}
code snippet
{% endcodeblock %}
方式2:普通的代码块
{% codeblock %}
alert('Hello World!');
{% endcodeblock %}
方式3:指定语言
{% codeblock lang:objc %}
[rectangle setX: 10 y: 10 width: 20 height: 20];
{% endcodeblock %}
方式4:附加说明
{% codeblock Array.map %}
array.map(callback[, thisArg])
{% endcodeblock %}
方式5:附加说明和网址
{% codeblock _.compact http://underscorejs.org/#compact Underscore.js %}
_.compact([0, 1, false, 2, '', 3]);
=> [1, 2, 3]
{% endcodeblock %}
</code></pre>
<h4>2.3.3 反引号代码块(类似md中的代码块格式)</h4>
<p>它使用三个反引号来包裹;<br> <code>[language] [title] [url] [link text] code snippet</code></p>
<h4>2.3.4 Pull Quote</h4>
<p>在文章中插入 Pull quote。</p>
<pre><code class="m">{% pullquote [class] %}
content
{% endpullquote %}
</code></pre>
<h4>2.3.5 jsFiddle</h4>
<p>在文章中嵌入 jsFiddle。</p>
<pre><code class="m">{% jsfiddle shorttag [tabs] [skin] [width] [height] %}
</code></pre>
<h4>2.3.6 Gist</h4>
<p>在文章中嵌入 Gist。</p>
<pre><code class="m">{% gist gist_id [filename] %}
</code></pre>
<h4>2.3.7 iframe</h4>
<p>在文章中插入 iframe。</p>
<pre><code class="m">{% iframe url [width] [height] %}
</code></pre>
<h4>2.3.8 Image</h4>
<p>在文章中插入指定大小的图片。</p>
<pre><code class="m">{% img [class names] /path/to/image [width] [height] [title text [alt text]] %}
</code></pre>
<h4>2.3.9 Link</h4>
<p>在文章中插入链接,并自动给外部链接添加 target="_blank" 属性。</p>
<pre><code class="m">{% link text url [external] [title] %}
</code></pre>
<h4>2.3.10 Include Code</h4>
<p>插入 source 文件夹内的代码文件。</p>
<pre><code class="m">{% include_code [title] [lang:language] path/to/file %}
</code></pre>
<h4>2.3.11 Youtube</h4>
<p>在文章中插入 Youtube 视频。</p>
<pre><code class="m">{% youtube video_id %}
</code></pre>
<h4>2.3.12 Vimeo</h4>
<p>在文章中插入 Vimeo 视频。</p>
<pre><code class="m">{% vimeo video_id %}
</code></pre>
<h4>2.3.13 引用文章</h4>
<p>引用其他文章的链接。</p>
<pre><code class="m">{% post_path slug %}
{% post_link slug [title] %}
</code></pre>
<h4>2.3.14 引用资源</h4>
<p>引用文章的资源。</p>
<pre><code class="m">{% asset_path slug %}
{% asset_img slug [title] %}
{% asset_link slug [title] %}
</code></pre>
<h4>2.3.15 Raw</h4>
<p>如果您想在文章中插入 Swig 标签,可以尝试使用 Raw 标签,以免发生解析异常。</p>
<pre><code class="m">{% raw %}
content
{% endraw %}
</code></pre>
<h3>2.4 资源文件夹</h3>
<p>资源(Asset)代表 source 文件夹中除了文章以外的所有文件,例如图片、CSS、JS 文件等。</p>
<h4>2.4.1 文章资源文件夹</h4>
<p>将 config.yml 文件中的 <code>post_asset_folder</code> 选项设为 true 来打开,有规律地提供图片和其他资源以及想要将他们的资源分布在各个文章上;当资源文件管理功能打开后,Hexo将会在你每一次通过 <code>hexo new [layout] <title></code> 命令创建新文章时自动创建一个文件夹。这个资源文件夹将会有与这个 <code>markdown 文件一样的名字</code>。将所有与你的文章有关的资源放在这个关联文件夹中之后,你可以通过相对路径来引用它们,这样你就得到了一个更简单而且方便得多的工作流。</p>
<h4>2.4.2 相对路径引用的标签插件</h4>
<p>通过常规的 markdown 语法和相对路径来引用图片和其它资源可能会导致它们在存档页或者主页上显示不正确。<br> Hexo 3 的发布,许多新的标签插件被加入到了核心代码中。这使得你可以更简单地在文章中引用你的资源。<br> 正确的引用图片方式是使用下列的标签插件而不是 markdown 语法 <code>[图片上传失败...(image-3fd250-1576230489118)]</code>:</p>
<pre><code class="m">{% asset_path slug %}
{% asset_img slug [title] %}
{% asset_link slug [title] %}
通过下面这种方式,图片将会同时出现在文章和主页以及归档页中。
{% asset_img example.jpg This is an example image %}
</code></pre>
<h3>2.5 数据文件夹</h3>
<p>有时候可能需要在主题中使用某些资料,而这些资料并不在文章内,并且是需要重复使用的,那么您可以考虑使用 Hexo 3.0 新增的「数据文件」功能。此功能会载入 <code>source/_data</code> 内的 <code>YAML 或 JSON</code> 文件,如此一来您便能在网站中复用这些文件;<br> 例子:在 source/_data 文件夹中新建 menu.yml 文件:</p>
<pre><code>Home: /
Gallery: /gallery/
Archives: /archives/
</code></pre>
<p>就能在模板中使用这些资料:</p>
<pre><code class="js"><% for (var link in site.data.menu) { %>
<a href="<%= site.data.menu[link] %>"> <%= link %> </a>
<% } %>
</code></pre>
<p>渲染结果如下 :</p>
<pre><code class="js"><a href="/"> Home </a>
<a href="/gallery/"> Gallery </a>
<a href="/archives/"> Archives </a>
</code></pre>
<h3>2.6 服务器(本地预览效果)</h3>
<p>Hexo 3.0 把服务器独立成了个别模块,安装 hexo-server 才能使用:<code>npm install hexo-server --save</code>;安装完后执行 <code>hexo server</code>启动服务器,也可以改变一些参数,参考<code>命令->指令</code>的知识;</p>
<h4>2.6.1 静态模式 && 自定义 IP</h4>
<pre><code class="bash"># 在静态模式下,服务器只处理 public 文件夹内的文件,而不会处理文件变动,在执行时,您应该先自行执行 hexo generate;
$ hexo server -s
# 自定义 IP地址,对于一台使用无线网络的笔记本电脑,除了指向本机的127.0.0.1外,通常还有一个192.168.*.*的局域网IP; hexo server -i 127.0.0.1 -p 5000
$ hexo server -i 192.168.1.1
</code></pre>
<h4>2.6.2 Pow(略)</h4>
<p>Pow 是一个 Mac 系统上的零配置 Rack 服务器,它也可以作为一个简单易用的静态文件服务器来使用。</p>
<h3>2.7 生成器</h3>
<p>Hexo 生成静态文件指令:<code>$ hexo generate</code>,参考<code>命令->指令</code>的知识;</p>
<h4>监视文件变动 && 完成后部署</h4>
<pre><code class="bash"># 监视文件变动并立即重新生成静态文件,在生成时会比对文件的 SHA1 checksum,只有变动的文件才会写入;
$ hexo generate --watch
# 在生成完毕后自动部署网站,下面两个命令的作用是相同的。
$ hexo generate --deploy
$ hexo deploy --generate
# 上面命令的简介形式
$ hexo g -d
$ hexo d -g
</code></pre>
<h3>2.8 部署</h3>
<p>Hexo 通过指令 <code>$ hexo deploy</code> 实现网站部署到指定的服务器中,在执行此命令前要对网站根目录下的 <code>_config.yml</code> 中修改参数(<strong>注意yml文件格式</strong>),见下方实现 <code>gitee pages</code> 部署:</p>
<pre><code class="bash">deploy:
type: git
repository: git@gitee.com:geekleng/hexoblog.git #发布到gitee,还可以加上github Page 页面
branch: master
</code></pre>
<p>部署多个 deployer,Hexo 会依照顺序执行每个 deployer:</p>
<pre><code class="bash">deploy:
- type: git
repo:
- type: heroku
repo:
</code></pre>
<p>【YAML依靠缩进来确定元素间的从属关系。因此,请确保每个deployer的缩进长度相同,并且使用空格缩进。】</p>
<h4>2.8.1 Git</h4>
<ul>
<li>先安装 <code>hexo-deployer-git</code> 包:<code>$ npm install hexo-deployer-git --save</code> </li>
<li>修改<code>_config.yml</code> 中参数;</li>
</ul>
<pre><code class="bash">deploy:
type: git
repo: <repository url>
branch: [branch]
message: [message]
</code></pre>
<table>
<thead>
<tr>
<th>参数</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>repo</td>
<td>库(Repository)地址</td>
</tr>
<tr>
<td>branch</td>
<td>分支名称。如果您使用的是 GitHub 或 GitCafe 的话,程序会尝试自动检测。</td>
</tr>
<tr>
<td>message</td>
<td>自定义提交信息 (默认为 Site updated: {{ 当前时间('YYYY-MM-DD HH:mm:ss') }})</td>
</tr>
</tbody>
</table>
<h2>三. 自定义</h2>
<h3>3.1 永久链接</h3>
<p>可以在HEXO网站配置文件 <code>_config.yml</code> 配置中调整网站的永久链接或者在每篇文章的 <code>Front-matter</code> 中指定。</p>
<h4>3.1.1 变量</h4>
<p>使用下面的变量或是使用 <code>Front-matter</code> 中的所有属性;</p>
<table>
<thead>
<tr>
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>:year</td>
<td>文章的发表年份(4 位数)</td>
</tr>
<tr>
<td>:month</td>
<td>文章的发表月份(2 位数)</td>
</tr>
<tr>
<td>:i_month</td>
<td>文章的发表月份(去掉开头的零)</td>
</tr>
<tr>
<td>:day</td>
<td>文章的发表日期 (2 位数)</td>
</tr>
<tr>
<td>:i_day</td>
<td>文章的发表日期(去掉开头的零)</td>
</tr>
<tr>
<td>:title</td>
<td>文件名称</td>
</tr>
<tr>
<td>:post_title</td>
<td>文章标题</td>
</tr>
<tr>
<td>:id</td>
<td>文章 ID</td>
</tr>
<tr>
<td>:category</td>
<td>分类。如果文章没有分类,则是 default_category 配置信息。</td>
</tr>
</tbody>
</table>
<p>或在 <code>permalink_defaults</code> 参数下调整永久链接中各变量的默认值:</p>
<pre><code class="bash">permalink_defaults:
lang: en
</code></pre>
<h4>3.1.2 多语种支持</h4>
<p>若要建立一个多语种的网站,您可修改 new_post_name 和 permalink 参数,如下:</p>
<pre><code class="bash">new_post_name: :lang/:title.md # 新的博文的文件名
permalink: :lang/:title/ # 生成的链接的格式。带井号的是默认的格式;规则也比较简单,标签前面要加英文冒号。
</code></pre>
<p>当您建立新文章时,文章会被储存到:</p>
<pre><code class="bash">$ hexo new "Hello World" --lang tw
# => source/_posts/tw/Hello-World.md
</code></pre>
<h3>3.2 主题</h3>
<p>在HEXO的官网上找到合适的主题,下载压缩包解压到 <code>themes</code> 文件夹中或者是由git直接下载对应主题的包,再修改HEXO网站配置文件 <code>_config.yml</code> 配置中 <code>theme</code> 字段即可;主题的文件架构如下:</p>
<pre><code class="m">.
├── _config.yml
├── languages
├── layout
├── scripts
└── source
</code></pre>
<h4>3.2.1 _config.yml</h4>
<p>主题的配置文件。修改时会自动更新,无需重启服务器。</p>
<h4>3.2.2 languages</h4>
<p>语言文件夹;HEXO国际化-i18n</p>
<h4>3.2.3 layout</h4>
<p>布局文件夹。用于存放主题的模板文件,决定了网站内容的呈现方式,Hexo 内建 Swig 模板引擎,可以另外安装插件来获得 EJS、Haml 或 Jade 支持;HEXO模板</p>
<h4>3.2.4 scripts</h4>
<p>脚本文件夹。在启动时,Hexo 会载入此文件夹内的 JavaScript 文件;HEXO插件</p>
<h4>3.2.5 source</h4>
<p>资源文件夹,除了模板以外的 <code>Asset</code>,例如 <code>CSS、JavaScript</code> 文件等,都应该放在这个文件夹中。文件或文件夹开头名称为 <code>_(下划线线)</code> 或隐藏的文件会被忽略。</p>
<h3>3.3 模版</h3>
<p>模板决定了网站内容的呈现方式,以下是各页面相对应的模板名称:</p>
<table>
<thead>
<tr>
<th>模板</th>
<th>用途</th>
<th>回退</th>
</tr>
</thead>
<tbody>
<tr>
<td>index</td>
<td>首页</td>
</tr>
<tr>
<td>post</td>
<td>文章</td>
<td>index</td>
</tr>
<tr>
<td>page</td>
<td>分页</td>
<td>index</td>
</tr>
<tr>
<td>archive</td>
<td>归档</td>
<td>index</td>
</tr>
<tr>
<td>category</td>
<td>分类归档</td>
<td>archive</td>
</tr>
<tr>
<td>tag</td>
<td>标签归档</td>
<td>archive</td>
</tr>
</tbody>
</table>
<h4>3.3.1 布局(Layout)</h4>
<p>若页面结构类似,可以通过「布局」让两个模板共享相同的结构。一个布局文件必须要能显示 body 变量的内容,如此一来模板的内容才会被显示,举例来说:</p>
<pre><code class="html"><!-->index.ejs 文件<-->
index
<!-->layout.ejs 文件<-->
<!DOCTYPE html>
<html>
<body><%- body %></body>
</html>
<!-->生成文件<-->
<!DOCTYPE html>
<html>
<body>index</body>
</html>
</code></pre>
<p>每个模板都默认使用 layout 布局,您可在 <code>front-matter</code> 指定其他布局,或是设为 <code>false</code> 来关闭布局功能,甚至可在布局中再使用其他布局来建立嵌套布局。</p>
<h4>3.3.2 局部模版(Partial)</h4>
<p>局部模板让您在不同模板之间共享相同的组件,可利用局部模板功能分割为个别文件,让维护更加便利。</p>
<pre><code class="html"><!-->partial/header.ejs文件<-->
<h1 id="logo"><%= config.title %></h1>
<!-->index.ejs文件<-->
<%- partial('partial/header') %>
<div id="content">Home page</div>
<!-->生成文件<-->
<h1 id="logo">My Site</h1>
<div id="content">Home page</div>
</code></pre>
<p><strong>局部变量</strong>:局部模板中指定局部变量并使用;</p>
<pre><code class="html"><!-->partial/header.ejs文件<-->
<h1 id="logo"><%= title></h1>
<!-->index.ejs文件<-->
<%- partial('partial/header', {title: 'Hello World'}) %>
<div id="content">Home page</div>
<!-->生成文件<-->
<h1 id="logo">Hello World</h1>
<div id="content">Home page</div>
</code></pre>
<h4>3.3.3 优化</h4>
<p>考虑使用 Hexo 2.7 新增的局部缓存(Fragment Caching) 功能,功能借鉴于 Ruby on Rails,它储存局部内容,下次便能直接使用缓存内容,可以减少文件夹查询并使生成速度更快。可用于页首、页脚、侧边栏等文件不常变动的位置;</p>
<pre><code class="html"><%- fragment_cache('header', function(){
return '<header></header>';
});
</code></pre>
<p>如果您使用局部模板的话,可以更简单:</p>
<p><code><%- partial('header', {}, {cache: true});</code></p>
<p>【注意:若开启了 <code>relative_link</code> 参数(把链接改为与根目录的相对位址),请勿使用局部缓存功能,因为相对链接在每个页面可能不同】</p>
<h3>3.4 变量</h3>
<h4>3.4.1 全局变量</h4>
<table>
<thead>
<tr>
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>site</td>
<td>网站变量</td>
</tr>
<tr>
<td>page</td>
<td>针对该页面的内容以及 front-matter 所设定的变量。</td>
</tr>
<tr>
<td>config</td>
<td>网站配置</td>
</tr>
<tr>
<td>theme</td>
<td>主题配置。继承自网站配置。</td>
</tr>
<tr>
<td>_ (单下划线)</td>
<td>Lodash 函数库</td>
</tr>
<tr>
<td>path</td>
<td>当前页面的路径(不含根路径)</td>
</tr>
<tr>
<td>url</td>
<td>当前页面的完整网址</td>
</tr>
<tr>
<td>env</td>
<td>环境变量</td>
</tr>
</tbody>
</table>
<h4>3.4.2 网站变量</h4>
<table>
<thead>
<tr>
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>site.posts</td>
<td>所有文章</td>
</tr>
<tr>
<td>site.pages</td>
<td>所有分页</td>
</tr>
<tr>
<td>site.categories</td>
<td>所有分类</td>
</tr>
<tr>
<td>site.tags</td>
<td>所有标签</td>
</tr>
</tbody>
</table>
<h4>3.4.3 页面变量</h4>
<p><strong>页面(page)</strong></p>
<table>
<thead>
<tr>
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>page.title</td>
<td>页面标题</td>
</tr>
<tr>
<td>page.date</td>
<td>页面建立日期(Moment.js 对象)</td>
</tr>
<tr>
<td>page.updated</td>
<td>页面更新日期(Moment.js 对象)</td>
</tr>
<tr>
<td>page.comments</td>
<td>留言是否开启</td>
</tr>
<tr>
<td>page.layout</td>
<td>布局名称</td>
</tr>
<tr>
<td>page.content</td>
<td>页面的完整内容</td>
</tr>
<tr>
<td>page.excerpt</td>
<td>页面摘要</td>
</tr>
<tr>
<td>page.more</td>
<td>除了页面摘要的其余内容</td>
</tr>
<tr>
<td>page.source</td>
<td>页面原始路径</td>
</tr>
<tr>
<td>page.full_source</td>
<td>页面的完整原始路径</td>
</tr>
<tr>
<td>page.path</td>
<td>页面网址(不含根路径)。我们通常在主题中使用 url_for(page.path)。</td>
</tr>
<tr>
<td>page.permalink</td>
<td>页面的完整网址</td>
</tr>
<tr>
<td>page.prev</td>
<td>上一个页面。如果此为第一个页面则为 null。</td>
</tr>
<tr>
<td>page.next</td>
<td>下一个页面。如果此为最后一个页面则为 null。</td>
</tr>
<tr>
<td>page.raw</td>
<td>文章的原始内容</td>
</tr>
<tr>
<td>page.photos</td>
<td>文章的照片(用于相簿)</td>
</tr>
<tr>
<td>page.link</td>
<td>文章的外部链接(用于链接文章)</td>
</tr>
</tbody>
</table>
<p><strong>文章 (post)</strong>: 和 page 布局类似,但是添加了下列变量。</p>
<table>
<thead>
<tr>
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>page.published</td>
<td>如果该文章已发布则为True</td>
</tr>
<tr>
<td>page.categories</td>
<td>该文章的所有分类</td>
</tr>
<tr>
<td>page.tags</td>
<td>该文章的所有标签</td>
</tr>
</tbody>
</table>
<p><strong>首页(index)</strong></p>
<table>
<thead>
<tr>
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>page.per_page</td>
<td>每页显示的文章数量</td>
</tr>
<tr>
<td>page.total</td>
<td>总文章数</td>
</tr>
<tr>
<td>page.current</td>
<td>目前页数</td>
</tr>
<tr>
<td>page.current_url</td>
<td>目前分页的网址</td>
</tr>
<tr>
<td>page.posts</td>
<td>本页文章</td>
</tr>
<tr>
<td>page.prev</td>
<td>上一页的页数。如果此页是第一页的话则为 0。</td>
</tr>
<tr>
<td>page.prev_link</td>
<td>上一页的网址。如果此页是第一页的话则为 ''。</td>
</tr>
<tr>
<td>page.next</td>
<td>下一页的页数。如果此页是最后一页的话则为 0。</td>
</tr>
<tr>
<td>page.next_link</td>
<td>下一页的网址。如果此页是最后一页的话则为 ''。</td>
</tr>
<tr>
<td>page.path</td>
<td>当前页面的路径(不含根目录)。我们通常在主题中使用 url_for(page.path)。</td>
</tr>
</tbody>
</table>
<p><strong>归档 (archive)</strong>:与 index 布局相同,但新增以下变量。</p>
<table>
<thead>
<tr>
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>page.archive</td>
<td>等于 true</td>
</tr>
<tr>
<td>page.year</td>
<td>年份归档 (4位)</td>
</tr>
<tr>
<td>page.month</td>
<td>月份归档 (没有前导零的2位数)</td>
</tr>
</tbody>
</table>
<p><strong>分类 (category)</strong>:与 index 布局相同,但新增以下变量。</p>
<table>
<thead>
<tr>
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>page.category</td>
<td>分类名称</td>
</tr>
</tbody>
</table>
<p><strong>标签 (tag)</strong>:与 index 布局相同,但新增以下变量。</p>
<table>
<thead>
<tr>
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>page.tag</td>
<td>标签名称</td>
</tr>
</tbody>
</table>
<h3>3.5 辅助函数——重难点</h3>
<p>HEXO辅助函数官方文档</p>
<p>辅助函数帮助您在模版中快速插入内容。</p>
<h3>3.6 国际化 (i18n)</h3>
<p>HEXO的网站配置文件 <code>_config.yml</code> 中调整 <code>language</code> 字段值的设定,可设定多个语言来调整预设语言的顺位。</p>
<pre><code class="bash">language:
- zh-tw
- en
</code></pre>
<h4>3.6.1 语言文件</h4>
<p>语言文件可以使用 YAML 或 JSON 编写,并放在主题文件夹中的 languages 文件夹。</p>
<h4>3.6. 模板</h4>
<p>在模板中,透过 __ 或 _p 辅助函数,即可取得翻译后的字符串,前者用于一般使用;而后者用于复数字符串。</p>
<h4>3.6.3 路径</h4>
<p>可在 <code>front-matter</code> 中指定该页面的语言,也可在 <code>_config.yml</code> 中修改 <code>i18n_dir</code> 设定,让 Hexo 自动侦测。</p>
<p>i18n_dir 的预设值是 :lang:<code>i18n_dir: :lang</code>,Hexo 会捕获网址中的第一段以检测语言,举例来说:</p>
<pre><code class="m">/index.html => en
/archives/index.html => en
/zh-tw/index.html => zh-tw
</code></pre>
<h3>3.7 插件</h3>
<h4>3.7.1 脚本(Scripts)</h4>
<p>若代码很简单,建议您编写脚本,您只需要把 JavaScript 文件放到 scripts 文件夹,在启动时就会自动载入。</p>
<h4>3.7.2 插件(Packages)</h4>
<p>编写自己的插件;首先,在 <code>node_modules</code> 文件夹中建立文件夹,文件夹名称开头必须为 <code>hexo-</code>,如此一来 <code>Hexo</code> 才会在启动时载入否则 Hexo 将会忽略它。<br><br> 文件夹内至少要包含 2 个文件:一个是主程序 <code>index.js</code> ,另一个是 <code>package.json</code> (至少包含name, version, main 属性),描述插件的用途和所依赖的插件。</p>
<h4>3.7.3 工具</h4>
<p>Hexo 提供的官方工具插件来加速开发:(可在npm上看各自包的用法)</p>
<ul>
<li>hexo-fs:文件 IO</li>
<li>hexo-util:工具程式</li>
<li>hexo-i18n:本地化(i18n)</li>
<li>hexo-pagination:生成分页资料</li>
</ul>
<h4>3.7.4 发布</h4>
<p>发布你的插件到 HEXO插件列表</p>
<ol>
<li>Fork hexojs/site </li>
<li>把库(repository)复制到电脑上,并安装所依赖的插件。</li>
</ol>
<pre><code class="bash">$ git clone https://github.com/<username>/site.git
$ cd site
$ npm install
</code></pre>
<ol start="3">
<li>编辑 source/_data/plugins.yml,在档案中新增您的插件,例如:</li>
</ol>
<pre><code class="bash">- name: hexo-server
description: Server module for Hexo.
link: https://github.com/hexojs/hexo-server
tags:
- official
- server
- console
</code></pre>
<ol start="4">
<li>推送(push)分支。</li>
<li>建立一个新的合并申请(pull request)并描述改动。</li>
</ol>
</article>
</div>
</div>
</div>
<!--PC和WAP自适应版-->
<div id="SOHUCS" sid="1697350289570476032"></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官方文档学习笔记)</h4>
<div id="paradigm-article-related">
<div class="recommend-post mb30">
<ul class="widget-links">
<li><a href="/article/1899566174912442368.htm"
title="NanoMQ ds笔记250306" target="_blank">NanoMQ ds笔记250306</a>
<span class="text-muted">kfepiza</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E9%80%9A%E8%AE%AF%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE/1.htm">网络通讯传输协议</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94/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/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E4%B8%8E%E9%80%9A%E4%BF%A1/1.htm">信息与通信</a>
<div>NanoMQ多版本下载地址https://www.emqx.com/zh/downloads/nanomqNanoMQ官方文档https://nanomq.io/docs/zh/latest/NanoMQ是一个专为物联网边缘计算设计的轻量级、高性能MQTT消息代理(MessageBroker),由中国的开源物联网公司EMQ开发并维护。它专注于在资源受限的边缘设备上提供高效的MQTT消息通信能力,同</div>
</li>
<li><a href="/article/1899549520581160960.htm"
title="2024年大数据技术4:Lambda和Kappa架构区别_lambda架构和kappa架构区别,2024年最新你花了多久弄明白架构设计" target="_blank">2024年大数据技术4:Lambda和Kappa架构区别_lambda架构和kappa架构区别,2024年最新你花了多久弄明白架构设计</a>
<span class="text-muted">2401_84182146</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
<div>既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新需要这份系统化资料的朋友,可以戳这里获取虽然Lambda架构使用起来十分灵活,并且可以适用于很多的应用场景,但在实际应用的时候,Lambda架构也</div>
</li>
<li><a href="/article/1899523036885872640.htm"
title="Spring的setter方法注入和构造器注入的对比" target="_blank">Spring的setter方法注入和构造器注入的对比</a>
<span class="text-muted">蓝黑2020</span>
<a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
<div>我们知道,Spring的依赖注入,有setter方法注入,实例变量注入,构造器注入等。Spring官方文档里,提到:依赖注入存在两种主要形式:构造器注入setter方法注入注:其实对于Spring注解,目前最常见的注入方式是实例变量注入,无需setter方法,直接在实例变量上添加@Autowired注解即可,详见我另一篇文档。但是实例变量注入是Spring不推荐的方法,在IntelliJIDEA里</div>
</li>
<li><a href="/article/1899495154922876928.htm"
title="Stream 流 【学习笔记】Java 基础" target="_blank">Stream 流 【学习笔记】Java 基础</a>
<span class="text-muted">燕赵韩魏555</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80%E5%AD%A6%E4%B9%A0/1.htm">基础学习</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
<div>若文章内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系博主删除。写这篇博客旨在制作笔记,方便个人在线阅览,巩固知识,无其他用途。学习视频【黑马Java基础教程】Stream流从入门到精通】【黑马程序员Java零基础视频教程】(上部)【黑马程序员Java零基础视频教程】(下部)Java基础(查缺补漏)Java集合【学习笔记】Java基础:https://blog.csdn</div>
</li>
<li><a href="/article/1899493764020367360.htm"
title="rust学习笔记13-18. 四数之和" target="_blank">rust学习笔记13-18. 四数之和</a>
<span class="text-muted">水蜜桃one</span>
<a class="tag" taget="_blank" href="/search/rust/1.htm">rust</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>
<div>上一篇已经说到了两数之和,索性将三数之和与四数之和一起都复习一下15.三数之和给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返回所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:输入:nums=[-1,0,1,2,-1,-4]输</div>
</li>
<li><a href="/article/1899483168562540544.htm"
title="零基础快速上手STM32开发(手把手保姆级教程)-转载学习" target="_blank">零基础快速上手STM32开发(手把手保姆级教程)-转载学习</a>
<span class="text-muted">曹瑞曹瑞</span>
<a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a>
<div>安装详细教程:零基础快速上手STM32开发(手把手保姆级教程)-CSDN博客部件详细教程:【STM32】江科大STM32学习笔记汇总(已完结)_stm32江科大笔记-CSDN博客</div>
</li>
<li><a href="/article/1899453540439486464.htm"
title="AIGC视频生成模型:ByteDance的PixelDance模型" target="_blank">AIGC视频生成模型:ByteDance的PixelDance模型</a>
<span class="text-muted">好评笔记</span>
<a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</a>
<div>大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍ByteDance的视频生成模型PixelDance,论文于2023年11月发布,模型上线于2024年9月,同时期上线的模型还有Seaweed(论文未发布)。热门专栏机器学习机器学习笔记合集深度学习深度学习笔记合集优质专栏回顾:机器学习笔记深度学习笔记多模态论文笔记AIGC—图像文章目录热门专栏机器学习深度学习</div>
</li>
<li><a href="/article/1899429453616967680.htm"
title="工作流编排利器:Prefect 全流程解析" target="_blank">工作流编排利器:Prefect 全流程解析</a>
<span class="text-muted">船长@Quant</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E9%87%91%E8%9E%8D%E7%A7%91%E6%8A%80/1.htm">金融科技</a><a class="tag" taget="_blank" href="/search/prefect/1.htm">prefect</a><a class="tag" taget="_blank" href="/search/polars/1.htm">polars</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%BC%96%E6%8E%92/1.htm">工作流编排</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86/1.htm">数据处理</a>
<div>工作流编排利器:Prefect全流程解析本文系统讲解了Prefect工作流编排工具,从基础入门到高级应用,涵盖任务与流程管理、数据处理、执行器配置、监控调试、性能优化及与其他工具集成等内容,文末项目实战示例,帮助读者全面回顾Prefect知识点。Prefect官方文档https://docs.prefect.io/v3/get-started/index一、Prefect基础入门(一)关于Pref</div>
</li>
<li><a href="/article/1899427813782515712.htm"
title="微信小程序云开发的sql语法 where `$and` 运算符怎么用?踩坑总结!" target="_blank">微信小程序云开发的sql语法 where `$and` 运算符怎么用?踩坑总结!</a>
<span class="text-muted">代码简单说</span>
<a class="tag" taget="_blank" href="/search/2025%E5%BC%80%E5%8F%91%E5%BF%85%E5%A4%87/1.htm">2025开发必备</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a><a class="tag" taget="_blank" href="/search/where/1.htm">where</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8Fand/1.htm">微信小程序and</a>
<div>微信小程序云开发$and组合查询时间戳转换**最近在小程序云开发里用$and组合查询,结果直接翻车,明明条件写对了,却总是查不出数据,要么就是报错,真是要被折腾疯了,官方文档也没给完整示例,最终折腾了半天,终于找到正确用法,现在分享出来,避免大家踩坑1.$and查询失败的真正原因在云开发数据库查询时,如果你的$and组合条件查不出数据,大概率是因为数据类型不匹配,特别是在时间筛选时,很多人会写成这</div>
</li>
<li><a href="/article/1899416972173570048.htm"
title="Golang后端学习笔记 — 6. Golang操作数据库事务的方法" target="_blank">Golang后端学习笔记 — 6. Golang操作数据库事务的方法</a>
<span class="text-muted">宝码</span>
<a class="tag" taget="_blank" href="/search/Golang%E5%90%8E%E7%AB%AF%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">Golang后端学习笔记</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1/1.htm">数据库事务</a><a class="tag" taget="_blank" href="/search/postgresql/1.htm">postgresql</a>
<div>之前,学习了对数据库的每个表执行CRUD操作。真实的场景中,我们经常需要执行一个事务,它组合了多个表的相关操作。本节学习如何在Golang中实现它。在开始之前,先聊一下事务。什么是数据库事务?它是一个单一的工作单元,通常由多个表操作组成。比如:在我们的小银行项目中,我们要从张三的账户中向李四的账户中转账10元。该交易就包括5个操作,涉及到accounts表、entries表和transfers表:</div>
</li>
<li><a href="/article/1899381785339424768.htm"
title="Zookeeper+kafka学习笔记" target="_blank">Zookeeper+kafka学习笔记</a>
<span class="text-muted">CHR_YTU</span>
<a class="tag" taget="_blank" href="/search/Zookeeper/1.htm">Zookeeper</a>
<div>Zookeeper是Apache的一个java项目,属于Hadoop系统,扮演管理员的角色。配置管理分布式系统都有好多机器,比如我在搭建hadoop的HDFS的时候,需要在一个主机器上(Master节点)配置好HDFS需要的各种配置文件,然后通过scp命令把这些配置文件拷贝到其他节点上,这样各个机器拿到的配置信息是一致的,才能成功运行起来HDFS服务。Zookeeper提供了这样的一种服务:一种集</div>
</li>
<li><a href="/article/1899376358220427264.htm"
title="uniapp开发app时权限仅获取一次,拒绝后不再拉取已拒绝权限" target="_blank">uniapp开发app时权限仅获取一次,拒绝后不再拉取已拒绝权限</a>
<span class="text-muted">聆听+自律</span>
<a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</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>
<div>"app-plus":{..."checkPermissionDenied":true,}在manifest.json中添加以上内容即可详情参考uniapp官方文档背景|uni-app官网(dcloud.net.cn)</div>
</li>
<li><a href="/article/1899366297582497792.htm"
title="ToughRADIUS 快速安装指南 - 搭建开源用户认证" target="_blank">ToughRADIUS 快速安装指南 - 搭建开源用户认证</a>
<span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
<div>ToughRADIUS快速安装指南ToughRADIUS是一种健壮、高性能、易于扩展的开源RADIUS服务器。本指南将引导您快速地在您的系统上安装和配置ToughRADIUS服务。当前版本是基于Go语言开发的。开源项目地址:https://github.com/talkincode/toughradius官方文档:https://www.toughradius.net/docs/documents</div>
</li>
<li><a href="/article/1899365637621346304.htm"
title="Zookeeper与Kafka学习笔记" target="_blank">Zookeeper与Kafka学习笔记</a>
<span class="text-muted">上海研博数据</span>
<a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
<div>一、Zookeeper核心要点1.核心特性分布式协调服务,用于维护配置/命名/同步等元数据采用层次化数据模型(Znode树结构),每个节点可存储<1MB数据典型应用场景:HadoopNameNode高可用HBase元数据管理Kafka集群选举与状态管理2.设计限制内存型存储,不适合大数据量场景数据变更通过版本号(Version)控制,实现乐观锁机制采用ZAB协议保证数据一致性二、Kafka核心架构</div>
</li>
<li><a href="/article/1899361097505370112.htm"
title="GO语言学习笔记" target="_blank">GO语言学习笔记</a>
<span class="text-muted">螺旋式上升abc</span>
<a class="tag" taget="_blank" href="/search/golang/1.htm">golang</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>
<div>一、viper笔记【七米】https://liwenzhou.com/posts/Go/viper/二、优雅关机和平滑重启https://liwenzhou.com/posts/Go/graceful-shutdown/三、gin使用zaphttps://liwenzhou.com/posts/Go/zap-in-gin/四、flag用于命令行传参https://liwenzhou.com/pos</div>
</li>
<li><a href="/article/1899332478573801472.htm"
title="Oracle创建表空间、删除、状态、重命名、修改、增加、移动" target="_blank">Oracle创建表空间、删除、状态、重命名、修改、增加、移动</a>
<span class="text-muted">水煮白菜王</span>
<a class="tag" taget="_blank" href="/search/Oracle/1.htm">Oracle</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>
<div>目录Oracle基本学习笔记创建表空间1.表空间创建格式3.表空间状态属性4.重命名表空间5.修改表空间数据文件的大小6.删除表空间的数据文件7.修改表空间中数据文件的状态8.表空间中数据文件的移动Oracle基本学习笔记创建表空间需要使用CREATETABLESPACE语句。其基本语法如下:CREATE[TEMPORARYIUNDO]TABLESPACEtablespacename[DATAFI</div>
</li>
<li><a href="/article/1899328443783376896.htm"
title="学习笔记09——并发编程之线程基础" target="_blank">学习笔记09——并发编程之线程基础</a>
<span class="text-muted">码代码的小仙女</span>
<a class="tag" taget="_blank" href="/search/%E9%AB%98%E7%BA%A7%E5%BC%80%E5%8F%91%E5%BF%85%E5%A4%87%E6%8A%80%E8%83%BD/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/python/1.htm">python</a>
<div>线程基础1.1进程与线程的区别,Java中线程的实现(用户线程与内核线程)进程是操作系统分配资源的基本单位,而线程是CPU调度的基本单位。每个进程有独立的内存空间,而同一进程内的线程共享内存.可以从资源分配、切换开销、通信方式和独立性四个方面来比较两者的区别资源分配进程:操作系统分配资源(如内存、文件句柄等)的基本单位,拥有独立的地址空间。线程:隶属于进程,共享进程的资源(如内存、文件等),是CP</div>
</li>
<li><a href="/article/1899328316687577088.htm"
title="学习笔记10——并发编程2线程安全问题与同步机制" target="_blank">学习笔记10——并发编程2线程安全问题与同步机制</a>
<span class="text-muted">码代码的小仙女</span>
<a class="tag" taget="_blank" href="/search/%E9%AB%98%E7%BA%A7%E5%BC%80%E5%8F%91%E5%BF%85%E5%A4%87%E6%8A%80%E8%83%BD/1.htm">高级开发必备技能</a><a class="tag" taget="_blank" href="/search/java%E7%9F%A5%E8%AF%86/1.htm">java知识</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>
<div>线程安全问题与同步机制线程安全的本质问题线程安全问题源于多线程环境下对共享资源(数据或状态)的非原子性、非可见性、非有序性访问,导致程序行为不符合预期。主要表现如下:竞态条件(RaceCondition):多个线程对同一资源进行非原子操作,导致结果依赖线程执行顺序。示例:两个线程同时执行count++(非原子操作,实际包含读-改-写三步)。内存可见性问题:线程修改共享变量后,其他线程无法立即看到最</div>
</li>
<li><a href="/article/1899325544734978048.htm"
title="Java学习笔记——并发编程(三)" target="_blank">Java学习笔记——并发编程(三)</a>
<span class="text-muted">__________习惯</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
<div>一、wait和notifywait和notify原理Owner线程发现条件不满足,调用wait方法,即可进入WaitSet变为WAITING状态BLOCKED和WAITING的线程都处于阻塞状态,不占用CPU时间片BLOCKED线程会在Owner线程释放锁时唤醒WAITING线程会在Owner线程调用notify或notifyAll时唤醒,但唤醒后并不意味着立刻获得锁,仍需进入EntryList重</div>
</li>
<li><a href="/article/1899316838844657664.htm"
title="学习笔记12——并发编程之线程之间协作方式" target="_blank">学习笔记12——并发编程之线程之间协作方式</a>
<span class="text-muted">码代码的小仙女</span>
<a class="tag" taget="_blank" href="/search/%E9%AB%98%E7%BA%A7%E5%BC%80%E5%8F%91%E5%BF%85%E5%A4%87%E6%8A%80%E8%83%BD/1.htm">高级开发必备技能</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
<div>线程之间协作有哪些方式当多个线程可以一起工作去解决某个问题时,如果某些部分必须在其他部分之前完成,那么就需要对线程进行协调。共享变量和轮询方式实现:定义一个共享变量(如volatile修饰的布尔标志)。线程通过检查共享变量的状态来决定是否继续执行。publicclassTest{ privatestaticvolatilebooleanflag=false; publicstaticvoi</div>
</li>
<li><a href="/article/1899275354716041216.htm"
title="第五周作业——第十章动手试一试" target="_blank">第五周作业——第十章动手试一试</a>
<span class="text-muted">hongsqi</span>
<div>10-1Python学习笔记学习笔记:在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python知识,其中每一行都以“InPythonyoucan”打头。将这个文件命名为learning_python.txt,并将其存储到为完成本章练习而编写的程序所在的目录中。编写一个程序,它读取这个文件,并将你所写的内容打印三次:第一次打印时读取整个文件;第二次打印时遍历文件对象;第三次打印时将各行</div>
</li>
<li><a href="/article/1899254799753342976.htm"
title="python调用ollama本地部署的deepseek" target="_blank">python调用ollama本地部署的deepseek</a>
<span class="text-muted">小杰丶</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
<div>说明在本地主机上调用局域网内使用ollama部署好的deepseek。之前的文章中已经部署好,并调试通的网络,现在需要使用python能调用deepseek的API,便于后续的模型探索和应用开发。但是百度了很多,没一个能用的,各种无脑的复制粘贴,最后还是老实得去看官方文档,还是自己记录一下比较好。正文使用ollama的pythonlib包进行deepseek的调用。pypyi地址:ollama·P</div>
</li>
<li><a href="/article/1899171931798695936.htm"
title="【C++基础学习笔记】C++的输入输出流及缺省参数" target="_blank">【C++基础学习笔记】C++的输入输出流及缺省参数</a>
<span class="text-muted">大家好我叫张同学</span>
<a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BA%E5%AD%A6%E4%B9%A0C%2B%2B/1.htm">深入浅出学习C++</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a>
<div>我要做一个好奇宝宝,带着疑问来阅读,哼~C++如何进行输入输出?和C语言何有区别?C++的缺省参数是什么?如何理解和掌握?文章目录C++的输入&输出缺省参数缺省参数的概念缺省参数的分类1.全缺省参数2.半缺省参数:C++的输入&输出婴儿降生到这个世界上时,会以自己独特的方式向这个崭新的世界打招呼。跟新生婴儿类似,C++语言刚出来后,也算是一个新事物,作为一门新的编程语言也会有自己问候这个美好世界的</div>
</li>
<li><a href="/article/1899166889049911296.htm"
title="快速从C过度C++(一):namespace,C++的输入和输出,缺省参数,函数重载" target="_blank">快速从C过度C++(一):namespace,C++的输入和输出,缺省参数,函数重载</a>
<span class="text-muted">愚润泽</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
<div>前言:本文章适合有一定C语言编程基础的读者浏览,主要介绍从C语言到C++过度,我们首先要掌握的一些基础知识,以便于我们快速进入C++的学习,为后面的学习打下基础。这篇文章的主要内容有:1,命名空间namespace2,C++的输入和输出3,缺省参数4,函数重载个人简介:努力学习ing个人专栏:C++学习笔记CSDN主页愚润求学其他专栏:C语言入门基础,python入门基础,python刷题专栏快速</div>
</li>
<li><a href="/article/1899123145684611072.htm"
title="Dubbo+zookeeper" target="_blank">Dubbo+zookeeper</a>
<span class="text-muted">可乐丿不加冰</span>
<a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</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/java/1.htm">java</a>
<div>Dubbo+zookeeperdubbo中文官方文档:https://dubbo.gitbooks.io/dubbo-user-book/content/preface/background.html随着互联网的高速发展,网站不断地扩大,我们的垂直应用架构无法应对,分布式服务架构以及流动计算架构势在必得,急需一个治理系统确保架构有条不紊的演进网站架构迭代:单一应用架构(所有功能都写在一个方法中)-</div>
</li>
<li><a href="/article/1899121126953512960.htm"
title="Python ipaddress 模块:IP 地址处理的全面指南" target="_blank">Python ipaddress 模块:IP 地址处理的全面指南</a>
<span class="text-muted">tekin</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/1.htm">Python网络编程</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a>
<div>Pythonipaddress模块:IP地址处理的全面指南在网络编程和系统管理中,对IP地址进行操作和管理是一项常见任务。Python的ipaddress模块为开发者提供了强大而便捷的工具,用于创建、操作和验证IPv4和IPv6地址。本教程将结合Python官方文档(https://docs.python.org/zh-cn/3.12/library/ipaddress.html),详细介绍ipa</div>
</li>
<li><a href="/article/1899117599900364800.htm"
title="学习笔记11——并发编程之并发关键字" target="_blank">学习笔记11——并发编程之并发关键字</a>
<span class="text-muted">码代码的小仙女</span>
<a class="tag" taget="_blank" href="/search/%E9%AB%98%E7%BA%A7%E5%BC%80%E5%8F%91%E5%BF%85%E5%A4%87%E6%8A%80%E8%83%BD/1.htm">高级开发必备技能</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
<div>并发关键字synchronized关键字在应用Sychronized关键字时需要把握如下注意点:1.一把锁只能同时被一个线程获取,没有获得锁的线程只能等待;2.每个实例都对应有自己的一把锁(this),不同实例之间互不影响;例外:锁对象是*.class以及synchronized修饰的是static方法的时候,所有对象公用同一把锁3.synchronized修饰的方法,无论方法正常执行完毕还是抛出</div>
</li>
<li><a href="/article/1899068413670649856.htm"
title="2024年HarmonyOS鸿蒙最全HarmonyOS Next 自定义路由栈管理_navpathstack,2024年最新销售应届毕业生的面试题" target="_blank">2024年HarmonyOS鸿蒙最全HarmonyOS Next 自定义路由栈管理_navpathstack,2024年最新销售应届毕业生的面试题</a>
<span class="text-muted">2401_84870988</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99/1.htm">鸿蒙</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
<div>深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新需要这份系统化的资料的朋</div>
</li>
<li><a href="/article/1899017110533763072.htm"
title="手机无线投屏到windows11电脑" target="_blank">手机无线投屏到windows11电脑</a>
<span class="text-muted">HAPPY酷</span>
<a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E6%89%8B%E6%9C%BA/1.htm">智能手机</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E5%AA%92%E4%BD%93/1.htm">媒体</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
<div>1安装无线投影组件2电脑端打开允许其他设备投影的开关3手机找到投屏选项4手机搜索可用设备连接即可这里的官方文档给的不太好,给了一些让人眼花撩乱的信息,以下是经过整合的有效信息</div>
</li>
<li><a href="/article/1899000840979542016.htm"
title="深度学习笔记——Resnet和迁移学习" target="_blank">深度学习笔记——Resnet和迁移学习</a>
<span class="text-muted">肆——</span>
<a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%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/%E8%BF%81%E7%A7%BB%E5%AD%A6%E4%B9%A0/1.htm">迁移学习</a>
<div>1.ResNet的提出深度学习与网络深度的挑战:在深度学习中,网络的“深度”(即层数)通常与模型的能力成正比。然而,随着网络深度的增加,一些问题也随之出现,最突出的是梯度消失/爆炸问题。这使得深层网络难以训练。梯度消失:梯度消失是指在训练深度神经网络时,通过多层传递的梯度(误差)变得非常小,接近于零。这导致网络中较早层的权重更新非常缓慢,甚至几乎不更新。梯度爆炸:梯度爆炸是指在训练深度神经网络时,</div>
</li>
<li><a href="/article/36.htm"
title="ASM系列四 利用Method 组件动态注入方法逻辑" target="_blank">ASM系列四 利用Method 组件动态注入方法逻辑</a>
<span class="text-muted">lijingyao8206</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%97%E8%8A%82%E7%A0%81%E6%8A%80%E6%9C%AF/1.htm">字节码技术</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86/1.htm">动态代理</a><a class="tag" taget="_blank" href="/search/ASM/1.htm">ASM</a>
<div> 这篇继续结合例子来深入了解下Method组件动态变更方法字节码的实现。通过前面一篇,知道ClassVisitor 的visitMethod()方法可以返回一个MethodVisitor的实例。那么我们也基本可以知道,同ClassVisitor改变类成员一样,MethodVIsistor如果需要改变方法成员,注入逻辑,也可以</div>
</li>
<li><a href="/article/163.htm"
title="java编程思想 --内部类" target="_blank">java编程思想 --内部类</a>
<span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E9%83%A8%E7%B1%BB/1.htm">内部类</a><a class="tag" taget="_blank" href="/search/%E5%8C%BF%E5%90%8D%E5%86%85%E9%83%A8%E7%B1%BB/1.htm">匿名内部类</a>
<div>内部类;了解外部类 并能与之通信 内部类写出来的代码更加整洁与优雅
1,内部类的创建 内部类是创建在类中的
package com.wj.InsideClass;
/*
* 内部类的创建
*/
public class CreateInsideClass {
public CreateInsideClass(</div>
</li>
<li><a href="/article/290.htm"
title="web.xml报错" target="_blank">web.xml报错</a>
<span class="text-muted">crabdave</span>
<a class="tag" taget="_blank" href="/search/web.xml/1.htm">web.xml</a>
<div>web.xml报错
The content of element type "web-app" must match "(icon?,display-
name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,s</div>
</li>
<li><a href="/article/417.htm"
title="泛型类的自定义" target="_blank">泛型类的自定义</a>
<span class="text-muted">麦田的设计者</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E6%B3%9B%E5%9E%8B/1.htm">泛型</a>
<div> 为什么要定义泛型类,当类中要操作的引用数据类型不确定的时候。
采用泛型类,完成扩展。
例如有一个学生类
Student{
Student(){
System.out.println("I'm a student.....");
}
}
有一个老师类
</div>
</li>
<li><a href="/article/544.htm"
title="CSS清除浮动的4中方法" target="_blank">CSS清除浮动的4中方法</a>
<span class="text-muted">IT独行者</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
<div>清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近。CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受。
1、结尾处加空div标签 clear:both 1 2 3 4
.div
1
{
background
:
#000080
;
border
:
1px
s</div>
</li>
<li><a href="/article/671.htm"
title="Cygwin使用windows的jdk 配置方法" target="_blank">Cygwin使用windows的jdk 配置方法</a>
<span class="text-muted">_wy_</span>
<a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/cygwin/1.htm">cygwin</a>
<div>1.[vim /etc/profile]
JAVA_HOME="/cgydrive/d/Java/jdk1.6.0_43" (windows下jdk路径为D:\Java\jdk1.6.0_43)
PATH="$JAVA_HOME/bin:${PATH}"
CLAS</div>
</li>
<li><a href="/article/798.htm"
title="linux下安装maven" target="_blank">linux下安装maven</a>
<span class="text-muted">无量</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E8%A3%85/1.htm">安装</a>
<div>Linux下安装maven(转) 1.首先到Maven官网
下载安装文件,目前最新版本为3.0.3,下载文件为
apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令;
2.进入下载文件夹,找到下载的文件,运行如下命令解压
tar -xvf apache-maven-2.2.1-bin.tar.gz
解压后的文件夹</div>
</li>
<li><a href="/article/925.htm"
title="tomcat的https 配置,syslog-ng配置" target="_blank">tomcat的https 配置,syslog-ng配置</a>
<span class="text-muted">aichenglong</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/http%E8%B7%B3%E8%BD%AC%E5%88%B0https/1.htm">http跳转到https</a><a class="tag" taget="_blank" href="/search/syslong-ng%E9%85%8D%E7%BD%AE/1.htm">syslong-ng配置</a><a class="tag" taget="_blank" href="/search/syslog%E9%85%8D%E7%BD%AE/1.htm">syslog配置</a>
<div>1) tomcat配置https,以及http自动跳转到https的配置
1)TOMCAT_HOME目录下生成密钥(keytool是jdk中的命令)
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit</div>
</li>
<li><a href="/article/1052.htm"
title="关于领号活动总结" target="_blank">关于领号活动总结</a>
<span class="text-muted">alafqq</span>
<a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8/1.htm">活动</a>
<div>关于某彩票活动的总结
具体需求,每个用户进活动页面,领取一个号码,1000中的一个;
活动要求
1,随机性,一定要有随机性;
2,最少中奖概率,如果注数为3200注,则最多中4注
3,效率问题,(不能每个人来都产生一个随机数,这样效率不高);
4,支持断电(仍然从下一个开始),重启服务;(存数据库有点大材小用,因此不能存放在数据库)
解决方案
1,事先产生随机数1000个,并打</div>
</li>
<li><a href="/article/1179.htm"
title="java数据结构 冒泡排序的遍历与排序" target="_blank">java数据结构 冒泡排序的遍历与排序</a>
<span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
<div>java的冒泡排序是一种简单的排序规则
冒泡排序的原理:
比较两个相邻的数,首先将最大的排在第一个,第二次比较第二个 ,此后一样;
针对所有的元素重复以上的步骤,除了最后一个
例题;将int array[] </div>
</li>
<li><a href="/article/1306.htm"
title="JS检查输入框输入的是否是数字的一种校验方法" target="_blank">JS检查输入框输入的是否是数字的一种校验方法</a>
<span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a>
<div>如下是JS检查输入框输入的是否是数字的一种校验方法:
<form method=post target="_blank">
数字:<input type="text" name=num onkeypress="checkNum(this.form)"><br>
</form>
</div>
</li>
<li><a href="/article/1433.htm"
title="Test注解的两个属性:expected和timeout" target="_blank">Test注解的两个属性:expected和timeout</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/expected/1.htm">expected</a><a class="tag" taget="_blank" href="/search/timeout/1.htm">timeout</a>
<div>JUnit4:Test文档中的解释:
The Test annotation supports two optional parameters.
The first, expected, declares that a test method should throw an exception.
If it doesn't throw an exception or if it </div>
</li>
<li><a href="/article/1560.htm"
title="[Gson二]继承关系的POJO的反序列化" target="_blank">[Gson二]继承关系的POJO的反序列化</a>
<span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a>
<div>父类
package inheritance.test2;
import java.util.Map;
public class Model {
private String field1;
private String field2;
private Map<String, String> infoMap</div>
</li>
<li><a href="/article/1687.htm"
title="【Spark八十四】Spark零碎知识点记录" target="_blank">【Spark八十四】Spark零碎知识点记录</a>
<span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a>
<div>1. ShuffleMapTask的shuffle数据在什么地方记录到MapOutputTracker中的
ShuffleMapTask的runTask方法负责写数据到shuffle map文件中。当任务执行完成成功,DAGScheduler会收到通知,在DAGScheduler的handleTaskCompletion方法中完成记录到MapOutputTracker中
</div>
</li>
<li><a href="/article/1814.htm"
title="WAS各种脚本作用大全" target="_blank">WAS各种脚本作用大全</a>
<span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/WAS+%E8%84%9A%E6%9C%AC/1.htm">WAS 脚本</a>
<div> http://www.ibm.com/developerworks/cn/websphere/library/samples/SampleScripts.html
无意中,在WAS官网上发现的各种脚本作用,感觉很有作用,先与各位分享一下
获取下载
这些示例 jacl 和 Jython 脚本可用于在 WebSphere Application Server 的不同版本中自</div>
</li>
<li><a href="/article/1941.htm"
title="java-12.求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句" target="_blank">java-12.求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句</a>
<span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/switch/1.htm">switch</a>
<div>借鉴网上的思路,用java实现:
public class NoIfWhile {
/**
* @param args
*
* find x=1+2+3+....n
*/
public static void main(String[] args) {
int n=10;
int re=find(n);
System.o</div>
</li>
<li><a href="/article/2068.htm"
title="Netty源码学习-ObjectEncoder和ObjectDecoder" target="_blank">Netty源码学习-ObjectEncoder和ObjectDecoder</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>Netty中传递对象的思路很直观:
Netty中数据的传递是基于ChannelBuffer(也就是byte[]);
那把对象序列化为字节流,就可以在Netty中传递对象了
相应的从ChannelBuffer恢复对象,就是反序列化的过程
Netty已经封装好ObjectEncoder和ObjectDecoder
先看ObjectEncoder
ObjectEncoder是往外发送</div>
</li>
<li><a href="/article/2195.htm"
title="spring 定时任务中cronExpression表达式含义" target="_blank">spring 定时任务中cronExpression表达式含义</a>
<span class="text-muted">chicony</span>
<a class="tag" taget="_blank" href="/search/cronExpression/1.htm">cronExpression</a>
<div>一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:
代表含义 是否必须 允许的取值范围 &nb</div>
</li>
<li><a href="/article/2322.htm"
title="Nutz配置Jndi" target="_blank">Nutz配置Jndi</a>
<span class="text-muted">ctrain</span>
<a class="tag" taget="_blank" href="/search/JNDI/1.htm">JNDI</a>
<div>1、使用JNDI获取指定资源:
var ioc = {
dao : {
type :"org.nutz.dao.impl.NutDao",
args : [ {jndi :"jdbc/dataSource"} ]
}
}
以上方法,仅需要在容器中配置好数据源,注入到NutDao即可. </div>
</li>
<li><a href="/article/2449.htm"
title="解决 /bin/sh^M: bad interpreter: No such file or directory" target="_blank">解决 /bin/sh^M: bad interpreter: No such file or directory</a>
<span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a>
<div>在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决:
1)在windows下转换:
利用一些编辑器如UltraEdit或EditPlus等工具</div>
</li>
<li><a href="/article/2576.htm"
title="[转]for 循环为何可恨?" target="_blank">[转]for 循环为何可恨?</a>
<span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6/1.htm">读书</a>
<div>
Java的闭包(Closure)特征最近成为了一个热门话题。 一些精英正在起草一份议案,要在Java将来的版本中加入闭包特征。 然而,提议中的闭包语法以及语言上的这种扩充受到了众多Java程序员的猛烈抨击。
不久前,出版过数十本编程书籍的大作家Elliotte Rusty Harold发表了对Java中闭包的价值的质疑。 尤其是他问道“for 循环为何可恨?”[http://ju</div>
</li>
<li><a href="/article/2703.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>1、去掉所有Activity界面的标题栏
修改AndroidManifest.xml 在application 标签中添加android:theme="@android:style/Theme.NoTitleBar"
2、去掉所有Activity界面的TitleBar 和StatusBar
修改AndroidManifes</div>
</li>
<li><a href="/article/2830.htm"
title="Oracle 复习笔记之序列" target="_blank">Oracle 复习笔记之序列</a>
<span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/Oracle+%E5%BA%8F%E5%88%97/1.htm">Oracle 序列</a><a class="tag" taget="_blank" href="/search/sequence/1.htm">sequence</a><a class="tag" taget="_blank" href="/search/Oracle+sequence/1.htm">Oracle sequence</a>
<div>转载请出自出处:http://eksliang.iteye.com/blog/2098859
1.序列的作用
序列是用于生成唯一、连续序号的对象
一般用序列来充当数据库表的主键值
2.创建序列语法如下:
create sequence s_emp
start with 1 --开始值
increment by 1 --増长值
maxval</div>
</li>
<li><a href="/article/2957.htm"
title="有“品”的程序员" target="_blank">有“品”的程序员</a>
<span class="text-muted">gongmeitao</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a>
<div>完美程序员的10种品质
完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的
完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质:
1. 才智非凡- 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力强
(范围:用简单方式解决复杂问题)
</div>
</li>
<li><a href="/article/3084.htm"
title="使用KeleyiSQLHelper类进行分页查询" target="_blank">使用KeleyiSQLHelper类进行分页查询</a>
<span class="text-muted">hvt</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</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>本文适用于sql server单主键表或者视图进行分页查询,支持多字段排序。KeleyiSQLHelper类的最新代码请到http://hovertree.codeplex.com/SourceControl/latest下载整个解决方案源代码查看。或者直接在线查看类的代码:http://hovertree.codeplex.com/SourceControl/latest#HoverTree.D</div>
</li>
<li><a href="/article/3211.htm"
title="SVG 教程 (三)圆形,椭圆,直线" target="_blank">SVG 教程 (三)圆形,椭圆,直线</a>
<span class="text-muted">天梯梦</span>
<a class="tag" taget="_blank" href="/search/svg/1.htm">svg</a>
<div>SVG <circle> SVG 圆形 - <circle>
<circle> 标签可用来创建一个圆:
下面是SVG代码:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" c</div>
</li>
<li><a href="/article/3338.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/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
<div>
public class Node {
private Object object;
private Node next;
public Node() {
this.next = null;
this.object = null;
}
public Object getObject() {
return object;
}
public</div>
</li>
<li><a href="/article/3465.htm"
title="基础数据结构和算法十:2-3 search tree" target="_blank">基础数据结构和算法十:2-3 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/2-3+search+tree/1.htm">2-3 search tree</a>
<div>
Binary search tree works well for a wide variety of applications, but they have poor worst-case performance. Now we introduce a type of binary search tree where costs are guaranteed to be loga</div>
</li>
<li><a href="/article/3592.htm"
title="spring配置定时任务" target="_blank">spring配置定时任务</a>
<span class="text-muted">stunizhengjia</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/timer/1.htm">timer</a>
<div>最近因工作的需要,用到了spring的定时任务的功能,觉得spring还是很智能化的,只需要配置一下配置文件就可以了,在此记录一下,以便以后用到:
//------------------------定时任务调用的方法------------------------------
/**
* 存储过程定时器
*/
publi</div>
</li>
<li><a href="/article/3719.htm"
title="ITeye 8月技术图书有奖试读获奖名单公布" target="_blank">ITeye 8月技术图书有奖试读获奖名单公布</a>
<span class="text-muted">ITeye管理员</span>
<a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8/1.htm">活动</a>
<div>ITeye携手博文视点举办的8月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
8月试读活动回顾:
http://webmaster.iteye.com/blog/2102830
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《跨终端Web》
gleams:http</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>