-
Notifications
You must be signed in to change notification settings - Fork 0
/
search.xml
224 lines (217 loc) · 18.1 KB
/
search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>hexo搭建-环境准备</title>
<url>/hexo%E6%90%AD%E5%BB%BA-%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html</url>
<content><![CDATA[<h1 id="本机安装node-js-git"><a href="#本机安装node-js-git" class="headerlink" title="本机安装node.js+git"></a>本机安装node.js+git</h1><h2 id="node-js安装"><a href="#node-js安装" class="headerlink" title="node.js安装"></a>node.js安装</h2><blockquote>
<p>Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。</p>
</blockquote>
<p>下载地址:<a href="https://nodejs.org/zh-cn/">https://nodejs.org/zh-cn/</a><br>下载完成后,双击安装,一路next到结束,安装完成后 按下<code>win + R</code> 键,输入cmd 回车,打开windows命令台,输入<br><code>node -v</code><br><code>npm -v</code><br>出现以下内容说明安装成功<br><a href="https://imgchr.com/i/s3dzVI"><img src="https://s3.ax1x.com/2021/01/11/s3dzVI.png" alt="s3dzVI.png"></a> </p>
<h2 id="git安装"><a href="#git安装" class="headerlink" title="git安装"></a>git安装</h2><blockquote>
<p>维基词条:git 是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools(一个类似Norton Commander界面的文件管理器)不同。<br>git最初的开发动力来自于BitKeeper和Monotone。git最初只是作为一个可以被其他前端(比如Cogito或Stgit)包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制。很多著名的软件都使用git进行版本控制,其中包括Linux内核、X.Org服务器和OLPC内核等项目的开发流程。</p>
</blockquote>
<p>下载地址:<a href="https://www.git-scm.com/download/win">https://www.git-scm.com/download/win</a><br>安装完成后,打开cmd命令行输入<br><code>git --version</code><br>出现以下内容说明安装成功<br><a href="https://imgchr.com/i/s3wSat"><img src="https://s3.ax1x.com/2021/01/11/s3wSat.png" alt="s3wSat.png"></a></p>
<h2 id="注册Github账号"><a href="#注册Github账号" class="headerlink" title="注册Github账号"></a>注册Github账号</h2><blockquote>
<p>GitHub是通过Git进行版本控制的软件源代码托管服务平台,由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails编写而成。它以各种不同的编程语言托管您的源代码项目,并跟踪每次迭代所做的各种更改。</p>
</blockquote>
<p>接下来我们需要创建一个github账号,访问<a href="https://github.com/">https://github.com/</a>github官网注册账号登陆后,新建一个项目<br><a href="https://imgchr.com/i/s3wPG8"><img src="https://s3.ax1x.com/2021/01/11/s3wPG8.png" alt="s3wPG8.png"></a><br>然后完善项目信息,如下:<br><a href="https://imgchr.com/i/s3wCPf"><img src="https://s3.ax1x.com/2021/01/11/s3wCPf.png" alt="s3wCPf.png"></a><br>这里Repository name 爆红是我已创建过相同名称的项目,不用管,然后选择项目的setting配置,如下图:<br><a href="https://imgchr.com/i/s3wiRS"><img src="https://s3.ax1x.com/2021/01/11/s3wiRS.png" alt="s3wiRS.png"></a><br>拉到最下面,找到<code>GitHub Pages</code>,点击<code>Choose a theme</code>选择一个主题。过一会之后再回到GitHub Pages,看到如下内容说明设置成功:<br><a href="https://imgchr.com/i/s3wFxg"><img src="https://s3.ax1x.com/2021/01/11/s3wFxg.png" alt="s3wFxg.png"></a><br>此时我们访问图中链接,已经可以正常访问啦,然后记录下我们项目的git ssh地址,后面和本地git打通要用到,git ssh地址如下图:<br><a href="https://imgchr.com/i/s3wErj"><img src="https://s3.ax1x.com/2021/01/11/s3wErj.png" alt="s3wErj.png"></a> </p>
<h2 id="github配置本地密钥"><a href="#github配置本地密钥" class="headerlink" title="github配置本地密钥"></a>github配置本地密钥</h2><p>打开我的电脑,右键空白处,选择 <code>Git Bash Here</code>,打开git命令窗口,输入以下命令配置你的github信息: </p>
<pre><code>git config --global user.name "xxxxx"
git config --global user.email "[email protected]"</code></pre>
<p>用户名邮箱为你注册github的用户名和邮箱,接下来创建本地ssh密钥,输入以下命令:<br><code>ssh-keygen -t rsa -C "[email protected]"</code><br>然后访问本机C:\Users\你的本机用户名 找到.ssh文件夹,会生成如下密钥文件:<br><a href="https://imgchr.com/i/s3wAMQ"><img src="https://s3.ax1x.com/2021/01/11/s3wAMQ.png" alt="s3wAMQ.png"></a><br>复制<code>id_rsa.pub</code>文件中的内容,打开github,<br><a href="https://imgchr.com/i/s3wVqs"><img src="https://s3.ax1x.com/2021/01/11/s3wVqs.png" alt="s3wVqs.png"></a><br><a href="https://imgchr.com/i/s3weZn"><img src="https://s3.ax1x.com/2021/01/11/s3weZn.png" alt="s3weZn.png"></a><br><a href="https://imgchr.com/i/s3wmaq"><img src="https://s3.ax1x.com/2021/01/11/s3wmaq.png" alt="s3wmaq.png"></a><br>密钥设置成功后,在git命令台输入<br><code>ssh -T [email protected]</code><br>出现你的名字,说明设置成功,至此,hexo+github搭建博客的前置环境我们就全部完成啦,后续搭建教程 <a href="/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8hexo-github%E6%90%AD%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8D%9A%E5%AE%A2%E7%B3%BB%E7%BB%9F.html">看这里</a></p>
]]></content>
<categories>
<category>工具</category>
<category>hexo</category>
</categories>
<tags>
<tag>hexo</tag>
</tags>
</entry>
<entry>
<title>如何使用hexo+github搭建自己的博客系统</title>
<url>/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8hexo-github%E6%90%AD%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8D%9A%E5%AE%A2%E7%B3%BB%E7%BB%9F.html</url>
<content><![CDATA[<h1 id="环境要求"><a href="#环境要求" class="headerlink" title="环境要求"></a>环境要求</h1><ol>
<li>新建github账号+项目( <a href="/hexo%E6%90%AD%E5%BB%BA-%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html">教程点这里</a> ) </li>
<li>本机需要装好node.js + git ( <a href="/hexo%E6%90%AD%E5%BB%BA-%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html">教程点这里</a> ) </li>
<li>写文章需要用到markdown编辑器( <a href="https://blog.csdn.net/davidhzq/article/details/100815332">编辑器推荐</a> ) </li>
</ol>
<h1 id="开始构建"><a href="#开始构建" class="headerlink" title="开始构建"></a>开始构建</h1><h2 id="安装Hexo"><a href="#安装Hexo" class="headerlink" title="安装Hexo"></a>安装Hexo</h2><p> 在本机新建一个文件夹来存放博客文件,比如我在d盘新建了D:\study\blog目录(以下统称为博客根目录),进入该目录,右键点击空白处,选择<br> <code>Git Bash Here</code><br> 来打开git命令窗口(安装以及后续所有操作都使用git命令台),输入<br> <code>npm install -g cnpm --registry=https://registry.npm.taobao.org</code><br> 回车,安装cnpm,因为国内网络受限,这里我们使用阿里云镜像来执行后续安装,( <a href="https://www.cnblogs.com/lichaoqing/p/5678595.html">理由</a> )<br> 命令执行完后,继续执行<br> <code>npm install -g hexo-cli</code><br> 安装hexo之后,执行<br> <code>hexo -v</code><br> 来验证hexo是否安装成功,接下来就要初始化hexo文件,执行<br> <code>hexo init</code><br> 初始化成功后会发现当前目录下多了很多hexo的文件,继续执行<br> <code>cnpm install</code><br> 安装必备组件,至此,本地博客系统已经搭建完毕了,接下来输入<br> <code>hexo g</code> 生成静态网页<br> <code>hexo s</code> 启动本地hexo博客<br> 看到没有报错,并出现<code> Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.</code>该提示,说明本地博客启动成功<br> 访问<code>localhost:4000</code> 即可访问我们的本地博客系统啦(<code>ctrl + c</code>关闭本地博客系统))</p>
<h2 id="将本地博客部署到github"><a href="#将本地博客部署到github" class="headerlink" title="将本地博客部署到github"></a>将本地博客部署到github</h2><p> 打开我们hexo的安装目录,我的是D:\study\blog,修改<code>_config.yml</code> 最后一行的配置, </p>
<pre><code>deploy:
type: git
repository: [email protected]:lihongze/lihongze.github.io.git(这里要改成自己的链接)
branch: master</code></pre>
<p> 修改保存后,我们就可以讲本地博客系统提交到github啦,但是在提交之前,需要先安装一个部署插件,在git命令台输入<br> <code>cnpm install hexo-deployer-git --save</code><br> 安装完成后,输入<br> <code>hexo d</code><br> 部署到github,然后我们就可以通过<code>https://lihongze.github.io</code>来访问自己的博客系统了 </p>
<h1 id="其他功能"><a href="#其他功能" class="headerlink" title="其他功能"></a>其他功能</h1><h2 id="设置主题"><a href="#设置主题" class="headerlink" title="设置主题"></a>设置主题</h2><p> 我这里选用的是next主题,在本地博客目录下,右键打开git命令控制台,输入<br> <code> git clone https://github.com/iissnan/hexo-theme-next.git themes/next</code><br> 安装next主题 至 本地themes文件夹下,修改博客根目录下<code>_config.yml</code> 中 theme配置项为<code>theme: next</code><br> 然后在git 命令台顺序执行<br> <code>hexo clean</code>(清理hexo缓存)<br> <code>hexo g</code><br> <code>hexo s</code><br> 访问<code>localhost:4000/</code>即可查看效果,更多next主题优化 <a href="https://zhuanlan.zhihu.com/p/30836436">点这里</a></p>
<h2 id="写文章"><a href="#写文章" class="headerlink" title="写文章"></a>写文章</h2><p> 在本地博客根目录下执行<code>hexo new post "你的文章名"</code> 来创建本地文章,执行完之后会在博客根目录下,<code>source\_posts</code>目录下<br> 生成<code>你的文章名.md</code>文件,使用任意文本编辑器打开你刚新建的.md文章源文件,即可开始编辑,markdown语法参考 <a href="http://xianbai.me/learn-md/article/about/readme.html">点这里</a></p>
<h1 id="常见问题解决"><a href="#常见问题解决" class="headerlink" title="常见问题解决"></a>常见问题解决</h1><h2 id="问题:文章目录点击无法跳转"><a href="#问题:文章目录点击无法跳转" class="headerlink" title=" 问题:文章目录点击无法跳转"></a> 问题:文章目录点击无法跳转</h2><p> <a href="https://www.cnblogs.com/Createsequence/p/14150758.html">解决方案点这里</a></p>
<h2 id="问题:文章目录只展示了一级标题,不展示二级标题"><a href="#问题:文章目录只展示了一级标题,不展示二级标题" class="headerlink" title=" 问题:文章目录只展示了一级标题,不展示二级标题 "></a> 问题:文章目录只展示了一级标题,不展示二级标题 </h2><p> 解决方案:打开themes/next/source/css/_custom/custom.styl 文件,在最后添加以下内容即可</p>
<pre><code>//文章目录默认展开
.post-toc .nav .nav-child { display: block; }</code></pre>
<h2 id="问题:文章引用本地图片无法展示"><a href="#问题:文章引用本地图片无法展示" class="headerlink" title=" 问题:文章引用本地图片无法展示"></a> 问题:文章引用本地图片无法展示</h2><p> 解决方案: 在hexo根目录下打开git控制台,输入<br> <code>npm install https://github.com/7ym0n/hexo-asset-image --save</code><br> 装这个插件,后续再通过<code>hexo new post "文章名"</code> 创建文章会发现之前存放文章的目录下会多一个与文章名一样的文件夹,文章相关的图片等静态资源会默认存放在这个文件夹内,然后我们在文章中就可以通过<br> <code>![img_9.png](img_9.png)</code><br> 这种格式来引用本地图片啦,那针对你装这个插件之前的文章,你可以手动在文章目录(hexo根目录/source/_posts/)下创建与文章名一样的文件夹,然后将文章相关图片剪切进去就可以啦<br> ps:推荐使用图床引用图片外链,否则本地图片加载会很慢,想试试效果可以先用<a href="https://imgchr.com/">路过图床</a></p>
]]></content>
<categories>
<category>工具</category>
<category>hexo</category>
</categories>
<tags>
<tag>hexo</tag>
</tags>
</entry>
<entry>
<title>java拼接图片工具类</title>
<url>/java%E6%8B%BC%E6%8E%A5%E5%9B%BE%E7%89%87%E5%B7%A5%E5%85%B7%E7%B1%BB.html</url>
<content><![CDATA[<p>最近有个拼接图片的需求,遂整理了一个java版本的拼接图片工具类,代码如下: </p>
<pre><code>public class ImageMergeUtil {
/**
* @param multipartFile 截图文件
* @return 读取到的缓存图像
* @throws IOException 不存在该文件时抛出IO异常
*/
public static BufferedImage getBufferedImage(MultipartFile multipartFile)
throws IOException {
return ImageIO.read(multipartFile.getInputStream());
}
/**
* 远程图片转BufferedImage
* @param destUrl 远程图片地址
* @return
*/
public static BufferedImage getBufferedImageDestUrl(String destUrl) {
HttpURLConnection conn = null;
BufferedImage image = null;
try {
URL url = new URL(destUrl);
conn = (HttpURLConnection) url.openConnection();
if (conn.getResponseCode() == 200) {
image = ImageIO.read(conn.getInputStream());
return image;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
conn.disconnect();
}
return image;
}
/**
* 输出图片
*
* @param buffImg
* 图像拼接叠加之后的BufferedImage对象
* @param savePath
* 图像拼接叠加之后的保存路径
*/
public static void generateSaveFile(BufferedImage buffImg, String savePath) {
int temp = savePath.lastIndexOf(".") + 1;
try {
File outFile = new File(savePath);
if(!outFile.exists()){
outFile.createNewFile();
}
ImageIO.write(buffImg, savePath.substring(temp), outFile);
System.out.println("ImageIO write...");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @Title: 构造图片
* @Description: 生成水印并返回java.awt.image.BufferedImage
* @param buffImg
* 源文件(BufferedImage)
* @param waterImg
* 水印文件(BufferedImage)
* @param x
* 距离右下角的X偏移量
* @param y
* 距离右下角的Y偏移量
* @param alpha
* 透明度, 选择值从0.0~1.0: 完全透明~完全不透明
* @return BufferedImage
* @throws IOException
*/
public static BufferedImage overlyingImage(BufferedImage buffImg, BufferedImage waterImg, int x, int y, float alpha) throws IOException {
// 创建Graphics2D对象,用在底图对象上绘图
Graphics2D g2d = buffImg.createGraphics();
int waterImgWidth = waterImg.getWidth();// 获取层图的宽度
int waterImgHeight = waterImg.getHeight();// 获取层图的高度
// 在图形和图像中实现混合和透明效果
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
// 绘制
g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null);
g2d.dispose();// 释放图形上下文使用的系统资源
return buffImg;
}
/**
* 合并任数量的图片成一张图片
*
* @param isHorizontal
* true代表水平合并,fasle代表垂直合并
* @param imgs
* 待合并的图片数组
* @return
* @throws IOException
*/
public static BufferedImage mergeImage(boolean isHorizontal, List<MultipartFile> imgs) throws IOException {
// 生成新图片
BufferedImage destImage = null;
// 计算新图片的长和高
int allw = 0, allh = 0, allwMax = 0, allhMax = 0;
// 获取总长、总宽、最长、最宽
for (MultipartFile image : imgs) {
BufferedImage img = getBufferedImage(image);
allw += img.getWidth();
allh += img.getHeight();
if (img.getWidth() > allwMax) {
allwMax = img.getWidth();
}
if (img.getHeight() > allhMax) {
allhMax = img.getHeight();
}
}
// 创建新图片
if (isHorizontal) {
destImage = new BufferedImage(allw, allhMax, BufferedImage.TYPE_INT_RGB);
} else {
destImage = new BufferedImage(allwMax, allh, BufferedImage.TYPE_INT_RGB);
}
// 合并所有子图片到新图片
int wx = 0, wy = 0;
for (MultipartFile image : imgs) {
BufferedImage img = getBufferedImage(image);
int w1 = img.getWidth();
int h1 = img.getHeight();
// 从图片中读取RGB
int[] ImageArrayOne = new int[w1 * h1];
ImageArrayOne = img.getRGB(0, 0, w1, h1, ImageArrayOne, 0, w1); // 逐行扫描图像中各个像素的RGB到数组中
if (isHorizontal) { // 水平方向合并
destImage.setRGB(wx, 0, w1, h1, ImageArrayOne, 0, w1); // 设置上半部分或左半部分的RGB
} else { // 垂直方向合并
destImage.setRGB(0, wy, w1, h1, ImageArrayOne, 0, w1); // 设置上半部分或左半部分的RGB
}
wx += w1;
wy += h1;
}
return destImage;
}
public static InputStream mergeImageStream(boolean isHorizontal, List<MultipartFile> imgs) throws IOException {
BufferedImage image = mergeImage(isHorizontal,imgs);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(image,"png", outputStream);
return new ByteArrayInputStream(outputStream.toByteArray());
}
}</code></pre>
]]></content>
<categories>
<category>工具</category>
<category>java</category>
</categories>
<tags>
<tag>工具</tag>
<tag>java</tag>
</tags>
</entry>
</search>