-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
executable file
·362 lines (194 loc) · 99.7 KB
/
Copy pathindex.html
File metadata and controls
executable file
·362 lines (194 loc) · 99.7 KB
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
225
226
227
228
229
230
231
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#f7f4ef">
<title>Winse Blog</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Noto+Sans+SC:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.png" type="image/png">
<link rel="alternate" type="application/atom+xml" title="Winse Blog" href="/atom.xml">
<link rel="stylesheet" href="/css/main.css">
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-43198550-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-43198550-1');
</script>
</head>
<body class="min-h-screen flex flex-col">
<a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:left-4 focus:top-4 focus:z-[100] focus:rounded-full focus:bg-ink focus:px-4 focus:py-2 focus:text-white">
跳到正文
</a>
<header class="sticky top-0 z-50 border-b border-line/80 bg-surface/85 backdrop-blur-xl">
<div class="site-shell flex items-center justify-between gap-4 py-4">
<a href="/" class="group flex items-center gap-3">
<span class="flex h-9 w-9 items-center justify-center rounded-full border border-line bg-surface-elevated text-sm font-semibold text-accent shadow-sm transition group-hover:border-accent/30 group-hover:bg-accent-soft/50">W</span>
<span class="text-xl font-bold tracking-tight text-ink">Winse Blog</span>
</a>
<button type="button" id="nav-toggle" class="btn-ghost px-3 py-2 sm:hidden" aria-expanded="false" aria-controls="site-nav">
Menu
</button>
<nav id="site-nav" class="hidden items-center gap-5 text-sm sm:flex" aria-label="Primary">
<a href="/" class="nav-link" data-nav="/">Blog</a>
<a href="/blog/archives/" class="nav-link" data-nav="/blog/archives/">Archives</a>
<a href="/atom.xml" class="nav-link" data-nav="/atom.xml">RSS</a>
<form action="https://www.google.com/search" method="get" onsubmit="this.q.value = this.q.value ? this.q.value + ' site:winse.github.io' : ''" class="hidden items-center lg:flex">
<label class="sr-only" for="site-search">Search blog</label>
<input id="site-search" type="search" name="q" placeholder="Search site…"
class="w-44 rounded-full border border-line bg-surface-elevated px-4 py-2 text-sm text-ink placeholder:text-muted focus:border-accent/40 xl:w-52">
</form>
<a href="https://github.com/winse" target="_blank" rel="noopener" class="btn-ghost hidden sm:inline-flex">
GitHub
</a>
</nav>
</div>
<div id="mobile-nav" class="hidden border-t border-line/80 bg-surface/95 sm:hidden">
<div class="site-shell flex flex-col gap-3 py-4 text-sm">
<a href="/" class="nav-link">Blog</a>
<a href="/blog/archives/" class="nav-link">Archives</a>
<a href="/atom.xml" class="nav-link">RSS</a>
<a href="https://github.com/winse" target="_blank" rel="noopener" class="nav-link">GitHub</a>
</div>
</div>
</header>
<main id="main-content" class="flex-1">
<section class="site-shell py-10 sm:py-14">
<div class="hero-panel w-full">
<p class="section-label">Writing</p>
<h1 class="page-title mt-3 text-5xl sm:text-6xl">Blog</h1>
<p class="mt-5 max-w-2xl text-lg leading-8 text-muted">走走停停都是风景, 熙熙攘攘都向最好, 忙忙碌碌都为明朝, 何畏之.</p>
<div class="mt-8 flex flex-wrap items-center gap-3 text-sm text-muted">
<span class="rounded-full border border-line bg-white/70 px-3 py-1">324 posts</span>
<span class="rounded-full border border-line bg-white/70 px-3 py-1">Since 2010</span>
</div>
</div>
<div class="mt-10">
<div class="mb-4 flex items-center justify-between gap-4">
<p class="section-label">Filter by category</p>
<p id="filter-count" class="text-sm text-muted"></p>
</div>
<div class="flex gap-2 overflow-x-auto pb-2 pt-1 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden" id="category-filters">
<button type="button" data-category="all" class="category-chip chip chip-with-count chip-active">
All
<span class="chip-count">324</span>
</button>
<button type="button" data-category="dev" class="category-chip chip chip-with-count">
dev
<span class="chip-count">107</span>
</button>
<button type="button" data-category="bigdata" class="category-chip chip chip-with-count">
bigdata
<span class="chip-count">105</span>
</button>
<button type="button" data-category="ops" class="category-chip chip chip-with-count">
ops
<span class="chip-count">73</span>
</button>
<button type="button" data-category="linux" class="category-chip chip chip-with-count">
linux
<span class="chip-count">53</span>
</button>
<button type="button" data-category="ai" class="category-chip chip chip-with-count">
ai
<span class="chip-count">39</span>
</button>
<button type="button" data-category="windows" class="category-chip chip chip-with-count">
windows
<span class="chip-count">24</span>
</button>
<button type="button" data-category="network" class="category-chip chip chip-with-count">
network
<span class="chip-count">22</span>
</button>
<button type="button" data-category="datastore" class="category-chip chip chip-with-count">
datastore
<span class="chip-count">21</span>
</button>
<button type="button" data-category="hardware" class="category-chip chip chip-with-count">
hardware
<span class="chip-count">18</span>
</button>
<button type="button" data-category="automation" class="category-chip chip chip-with-count">
automation
<span class="chip-count">15</span>
</button>
<button type="button" data-category="life" class="category-chip chip chip-with-count">
life
<span class="chip-count">15</span>
</button>
<button type="button" data-category="blog" class="category-chip chip chip-with-count">
blog
<span class="chip-count">14</span>
</button>
<button type="button" data-category="monitoring" class="category-chip chip chip-with-count">
monitoring
<span class="chip-count">13</span>
</button>
<button type="button" data-category="editor" class="category-chip chip chip-with-count">
editor
<span class="chip-count">11</span>
</button>
<button type="button" data-category="mobile" class="category-chip chip chip-with-count">
mobile
<span class="chip-count">11</span>
</button>
<button type="button" data-category="reading" class="category-chip chip chip-with-count">
reading
<span class="chip-count">8</span>
</button>
<button type="button" data-category="security" class="category-chip chip chip-with-count">
security
<span class="chip-count">3</span>
</button>
</div>
</div>
<div
class="mt-10 grid gap-5 md:grid-cols-2"
id="post-list"
data-page-size="10"
></div>
<div id="load-sentinel" class="mt-8 flex min-h-12 items-center justify-center text-sm text-muted" aria-live="polite">
<span id="load-status">Loading…</span>
</div>
<p class="mt-8 text-center">
<a href="/blog/archives/" class="text-sm text-muted transition hover:text-ink">View all archives →</a>
</p>
<script type="application/json" id="posts-feed">[{"title":"Cursor Agent 编程小小心得","url":"/blog/2026/06/11/Cursor-Agent-编程小小心得/","date":"2026-06-12","dateLabel":"2026-06-11","updatedDate":null,"updatedLabel":null,"categories":["dev","ai"],"description":"","cover":"","readingTime":"1 min"},{"title":"有一种自由叫做程序员的自由:把公众号文章镜像回自己的博客","url":"/blog/2026/06/02/有一种自由叫做程序员的自由:把公众号文章镜像回自己的博客/","date":"2026-06-02","dateLabel":"2026-06-02","updatedDate":null,"updatedLabel":null,"categories":["blog","dev"],"description":"","cover":"/images/2026-06-02/cover.jpg","readingTime":"1 min"},{"title":"被 Reconnecting/Timeout 折磨之后,我把 Clash 调成了自动挡","url":"/blog/2026/05/28/clash-auto-mode/","date":"2026-05-28","dateLabel":"2026-05-28","updatedDate":null,"updatedLabel":null,"categories":["network"],"description":"","cover":"/images/2026-05-28/cover.jpg","readingTime":"1 min"},{"title":"《Claude Code橙皮书》读书笔记","url":"/blog/2026/05/23/《Claude-Code橙皮书》读书笔记/","date":"2026-05-24","dateLabel":"2026-05-23","updatedDate":null,"updatedLabel":null,"categories":["ai","reading"],"description":"","cover":"/images/2026-05-23/cover.jpg","readingTime":"3 min"},{"title":"微信读书 Skill 给我的最大改变:阅读第一次有了“复利感”","url":"/blog/2026/05/23/微信读书-Skill-给我的最大改变:阅读第一次有了“复利感”/","date":"2026-05-24","dateLabel":"2026-05-23","updatedDate":null,"updatedLabel":null,"categories":["ai","reading"],"description":"","cover":"/images/2026-05-23/cover.jpg","readingTime":"1 min"},{"title":"流量都去哪里了?TUN 模式下的代理谜云","url":"/blog/2026/05/13/tun-proxy-traffic/","date":"2026-05-13","dateLabel":"2026-05-13","updatedDate":null,"updatedLabel":null,"categories":["network"],"description":"","cover":"/images/2026-05-13/cover.jpg","readingTime":"1 min"},{"title":"CLIProxyAPI 订阅转 API:把 Antigravity、CodeX 额度迁移到 Cursor","url":"/blog/2026/04/28/CLIProxyAPI-订阅转-API:把-Antigravity、CodeX-额度迁移到-Cursor/","date":"2026-04-28","dateLabel":"2026-04-28","updatedDate":null,"updatedLabel":null,"categories":["ai","network"],"description":"","cover":"/images/2026-04-28/cover.jpg","readingTime":"1 min"},{"title":"用 OpenClaw 快速搭建 Hermes Agent:一个会“自进化”的 Agent","url":"/blog/2026/04/20/用-OpenClaw-快速搭建-Hermes-Agent:一个会“自进化”的-Agent/","date":"2026-04-21","dateLabel":"2026-04-20","updatedDate":null,"updatedLabel":null,"categories":["ai"],"description":"","cover":"/images/2026-04-20/cover.jpg","readingTime":"2 min"},{"title":"Google One AI 国内可订阅了?刚刚实测能用","url":"/blog/2026/04/08/google-one-ai-subscription/","date":"2026-04-08","dateLabel":"2026-04-08","updatedDate":null,"updatedLabel":null,"categories":["ai"],"description":"","cover":"/images/2026-04-08/cover.jpg","readingTime":"1 min"},{"title":"OpenClaw v2026.3.28 升级踩坑(含飞书 / 微信)","url":"/blog/2026/03/31/OpenClaw-v2026.3.28-升级踩坑(含飞书-微信)/","date":"2026-03-31","dateLabel":"2026-03-31","updatedDate":null,"updatedLabel":null,"categories":["ai","automation"],"description":"","cover":"/images/2026-03-31/cover.jpg","readingTime":"1 min"},{"title":"OpenClaw 再折腾的这一月:从能跑到跑稳,我踩过的那些坑","url":"/blog/2026/03/23/OpenClaw-再折腾的这一月:从能跑到跑稳,我踩过的那些坑/","date":"2026-03-23","dateLabel":"2026-03-23","updatedDate":null,"updatedLabel":null,"categories":["ai"],"description":"","cover":"/images/2026-03-23/cover.jpg","readingTime":"1 min"},{"title":"21天,从\"Hello World\"到5人团队 —— 虾兵的自我进化之路","url":"/blog/2026/03/21/21天-从Hello-World到5人团队-虾兵的自我进化之路/","date":"2026-03-21","dateLabel":"2026-03-21","updatedDate":null,"updatedLabel":null,"categories":["ai","life"],"description":"","cover":"/images/2026-03-21/cover.jpg","readingTime":"1 min"},{"title":"笔记本电脑扩展出多个屏幕:Sunshine + Moonlight 实战记录","url":"/blog/2026/03/19/笔记本电脑扩展出多个屏幕:Sunshine-+-Moonlight-实战记录/","date":"2026-03-19","dateLabel":"2026-03-19","updatedDate":null,"updatedLabel":null,"categories":["hardware","life"],"description":"","cover":"/images/2026-03-19/cover.jpg","readingTime":"2 min"},{"title":"树莓派内存不够用?加上虚拟内存,再给 OpenClaw 浏览网页加上“阅后即焚”的策略","url":"/blog/2026/03/16/树莓派内存不够用?加上虚拟内存,再给-OpenClaw-浏览网页加上“阅后即焚”的策略/","date":"2026-03-16","dateLabel":"2026-03-16","updatedDate":null,"updatedLabel":null,"categories":["hardware","ai"],"description":"","cover":"/images/2026-03-16/cover.jpg","readingTime":"1 min"},{"title":"笔记本屏幕不够用?那就再加一块:三种简单副屏方案(Windows / 手机 / 平板)","url":"/blog/2026/03/12/笔记本屏幕不够用?那就再加一块:三种简单副屏方案(Windows-手机-平板)/","date":"2026-03-12","dateLabel":"2026-03-12","updatedDate":null,"updatedLabel":null,"categories":["windows","life"],"description":"","cover":"/images/2026-03-12/cover.jpg","readingTime":"2 min"},{"title":"树莓派 OpenClaw Browser 看不见摸不着?给它配个 VNC 图形环境,踏实安心的Debug","url":"/blog/2026/03/09/树莓派-OpenClaw-Browser-看不见摸不着?给它配个-VNC-图形环境,踏实安心的Debug/","date":"2026-03-10","dateLabel":"2026-03-09","updatedDate":null,"updatedLabel":null,"categories":["dev","ai","hardware"],"description":"","cover":"/images/2026-03-09/cover.jpg","readingTime":"2 min"},{"title":"在树莓派 Ubuntu Server 上跑 OpenClaw Browser:Chromium 无头模式实战","url":"/blog/2026/03/08/在树莓派-Ubuntu-Server-上跑-OpenClaw-Browser:Chromium-无头模式实战/","date":"2026-03-08","dateLabel":"2026-03-08","updatedDate":null,"updatedLabel":null,"categories":["ai","linux","hardware"],"description":"","cover":"/images/2026-03-08/cover.jpg","readingTime":"1 min"},{"title":"从静态生成到数据驱动:人像视频相册持续的进化","url":"/blog/2026/03/04/从静态生成到数据驱动:人像视频相册持续的进化/","date":"2026-03-04","dateLabel":"2026-03-04","updatedDate":null,"updatedLabel":null,"categories":["life"],"description":"","cover":"/images/2026-03-04/cover.jpg","readingTime":"1 min"},{"title":"树莓派用上 SSD,openclaw 进化太惊人了:安装流畅,体验飞跃","url":"/blog/2026/03/02/树莓派用上-SSD,openclaw-进化太惊人了:安装流畅,体验飞跃/","date":"2026-03-02","dateLabel":"2026-03-02","updatedDate":null,"updatedLabel":null,"categories":["ai","hardware"],"description":"","cover":"/images/2026-03-02/cover.jpg","readingTime":"1 min"},{"title":"从使用者到创造者:用 AI 构建你的专属 VS Code 工具链","url":"/blog/2026/02/27/从使用者到创造者:用-AI-构建你的专属-VS-Code-工具链/","date":"2026-02-27","dateLabel":"2026-02-27","updatedDate":null,"updatedLabel":null,"categories":["editor","dev","ai"],"description":"","cover":"/images/2026-02-27/cover.jpg","readingTime":"1 min"},{"title":"杀鸡焉用牛刀:DuckDB 正取代部分 Spark 场景","url":"/blog/2026/02/16/杀鸡焉用牛刀:DuckDB-正取代部分-Spark-场景/","date":"2026-02-16","dateLabel":"2026-02-16","updatedDate":null,"updatedLabel":null,"categories":["bigdata","dev","ops","datastore"],"description":"","cover":"/images/2026-02-16/cover.jpg","readingTime":"3 min"},{"title":"WIN 挂载 S3:像本地文件夹一样用对象存储","url":"/blog/2026/02/10/WIN-挂载-S3:像本地文件夹一样用对象存储/","date":"2026-02-11","dateLabel":"2026-02-10","updatedDate":null,"updatedLabel":null,"categories":["ops","windows"],"description":"","cover":"/images/2026-02-10/cover.png","readingTime":"1 min"},{"title":"我用 AI,把微信家族群里零碎的视频,变成了孩子的一本“成长相册”","url":"/blog/2026/02/08/我用-AI,把微信家族群里零碎的视频,变成了孩子的一本“成长相册”/","date":"2026-02-09","dateLabel":"2026-02-08","updatedDate":null,"updatedLabel":null,"categories":["life","ai"],"description":"","cover":"/images/2026-02-08/cover.jpg","readingTime":"1 min"},{"title":"Linux brew安装过程","url":"/blog/2026/02/01/Linux-brew安装过程/","date":"2026-02-01","dateLabel":"2026-02-01","updatedDate":null,"updatedLabel":null,"categories":["linux"],"description":"","cover":"/images/2026-02-01/cover.jpg","readingTime":"1 min"},{"title":"OpenClaw 折腾实录:虾兵蟹将的树莓派实战","url":"/blog/2026/02/01/OpenClaw-折腾实录:虾兵蟹将的树莓派实战/","date":"2026-02-01","dateLabel":"2026-02-01","updatedDate":null,"updatedLabel":null,"categories":["ai","hardware"],"description":"","cover":"/images/2026-02-01/cover.jpg","readingTime":"2 min"},{"title":"本地端口转发:访问远程 Linux 本地服务","url":"/blog/2026/02/01/本地端口转发:访问远程-Linux-本地服务/","date":"2026-02-01","dateLabel":"2026-02-01","updatedDate":null,"updatedLabel":null,"categories":["network","linux"],"description":"","cover":"/images/2026-02-01/cover.jpg","readingTime":"1 min"},{"title":"这波 AI,从“乐在其中”到“疲于奔命”","url":"/blog/2026/01/27/这波-AI,从“乐在其中”到“疲于奔命”/","date":"2026-01-27","dateLabel":"2026-01-27","updatedDate":null,"updatedLabel":null,"categories":["ai"],"description":"","cover":"/images/2026-01-27/cover.jpg","readingTime":"1 min"},{"title":"Chrome 一个配置,能把 8G 内存立马打到 2G","url":"/blog/2026/01/23/Chrome-一个配置,能把-8G-内存立马打到-2G/","date":"2026-01-24","dateLabel":"2026-01-23","updatedDate":null,"updatedLabel":null,"categories":["windows"],"description":"","cover":"/images/2026-01-23/cover.png","readingTime":"1 min"},{"title":"我以为 npm 装完就结束了,直到 Oh My OpenCode 真正生效","url":"/blog/2026/01/20/我以为-npm-装完就结束了,直到-Oh-My-OpenCode-真正生效/","date":"2026-01-20","dateLabel":"2026-01-20","updatedDate":null,"updatedLabel":null,"categories":["ai"],"description":"","cover":"/images/2026-01-20/cover.jpg","readingTime":"2 min"},{"title":"大力出奇迹:使用 OpenCode 转完整个 Joda-Time,进程 Bun 内存飙到 21G","url":"/blog/2026/01/17/大力出奇迹:使用-OpenCode-转完整个-Joda-Time,进程-Bun-内存飙到-21G/","date":"2026-01-17","dateLabel":"2026-01-17","updatedDate":null,"updatedLabel":null,"categories":["ai","dev"],"description":"","cover":"/images/2026-01-17/cover.jpg","readingTime":"1 min"},{"title":"从一个视频到一个合集:n8n + YouTube合集批量自动下载","url":"/blog/2026/01/16/从一个视频到一个合集:n8n-+-YouTube合集批量自动下载/","date":"2026-01-16","dateLabel":"2026-01-16","updatedDate":null,"updatedLabel":null,"categories":["automation"],"description":"","cover":"/images/2026-01-16/cover.jpg","readingTime":"1 min"},{"title":"刷刷刷,装起 OpenCode,用上 MINIMAX","url":"/blog/2026/01/15/刷刷刷,装起-OpenCode,用上-MINIMAX/","date":"2026-01-15","dateLabel":"2026-01-15","updatedDate":null,"updatedLabel":null,"categories":["ai"],"description":"","cover":"/images/2026-01-15/cover.jpg","readingTime":"1 min"},{"title":"重构:使用 n8n+飞书 重写视频下载小工具,直接上链接","url":"/blog/2026/01/13/重构:使用-n8n+飞书-重写视频下载小工具,直接上链接/","date":"2026-01-13","dateLabel":"2026-01-13","updatedDate":null,"updatedLabel":null,"categories":["automation"],"description":"","cover":"/images/2026-01-13/cover.jpg","readingTime":"2 min"},{"title":"已有 Eclipse Java 工程迁移到 VS Code,打扫干净屋子再请客","url":"/blog/2026/01/12/已有-Eclipse-Java-工程迁移到-VS-Code,打扫干净屋子再请客/","date":"2026-01-13","dateLabel":"2026-01-12","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2026-01-12/cover.jpg","readingTime":"1 min"},{"title":"一个 If 节点引发的灾难,去年折腾到今年:在 n8n 节点路径上踩到最隐蔽的坑","url":"/blog/2026/01/11/一个-If-节点引发的灾难,去年折腾到今年:在-n8n-节点路径上踩到最隐蔽的坑/","date":"2026-01-12","dateLabel":"2026-01-11","updatedDate":null,"updatedLabel":null,"categories":["automation"],"description":"","cover":"/images/2026-01-11/cover.jpg","readingTime":"1 min"},{"title":"被 n8n 任务 60s 超时反复折磨后的排查记录:从报错、堆栈到源码,理清 TASK_TIMEOUT 的真实用途与位置","url":"/blog/2026/01/10/被-n8n-任务-60s-超时反复折磨后的排查记录:从报错、堆栈到源码,理清-TASK_TIMEOUT-的真实用途与位置/","date":"2026-01-10","dateLabel":"2026-01-10","updatedDate":null,"updatedLabel":null,"categories":["dev","automation"],"description":"","cover":"/images/2026-01-10/cover.jpg","readingTime":"2 min"},{"title":"Fabric:命令行管道中的 AI 工具,更具价值的是里面 230 个系统提示词","url":"/blog/2026/01/08/Fabric:命令行管道中的-AI-工具,更具价值的是里面-230-个系统提示词/","date":"2026-01-08","dateLabel":"2026-01-08","updatedDate":null,"updatedLabel":null,"categories":["ai","linux"],"description":"","cover":"/images/2026-01-08/cover.jpg","readingTime":"25 min"},{"title":"跟着 n8n 案例来学习子流程 Sub-workflow","url":"/blog/2025/12/31/跟着-n8n-案例来学习子流程-Sub-workflow/","date":"2026-01-01","dateLabel":"2025-12-31","updatedDate":null,"updatedLabel":null,"categories":["automation","dev"],"description":"","cover":"/images/2025-12-31/cover.jpg","readingTime":"1 min"},{"title":"n8n 终于还是部署到 Docker 了,经验就是要反反复复地去验证:要想少走弯路,就按官方推荐的最佳实践","url":"/blog/2025/12/29/n8n-终于还是部署到-Docker-了,经验就是要反反复复地去验证:要想少走弯路,就按官方推荐的最佳实践/","date":"2025-12-29","dateLabel":"2025-12-29","updatedDate":null,"updatedLabel":null,"categories":["automation","ops","dev"],"description":"","cover":"/images/2025-12-29/cover.jpg","readingTime":"2 min"},{"title":"增强 Chat Memo 管理 AI 聊天记录,导出文本让 AI 来总结我这一年的 AI 聊天记录","url":"/blog/2025/12/27/增强-Chat-Memo-管理-AI-聊天记录,导出文本让-AI-来总结我这一年的-AI-聊天记录/","date":"2025-12-27","dateLabel":"2025-12-27","updatedDate":null,"updatedLabel":null,"categories":["dev","ai"],"description":"","cover":"/images/2025-12-27/cover.jpg","readingTime":"1 min"},{"title":"无需 Docker:n8n 2.x internal 模式下 Python Task Runner 配置实践","url":"/blog/2025/12/25/无需-Docker:n8n-2.x-internal-模式下-Python-Task-Runner-配置实践/","date":"2025-12-25","dateLabel":"2025-12-25","updatedDate":null,"updatedLabel":null,"categories":["automation","ops","dev"],"description":"","cover":"/images/2025-12-25/cover.jpg","readingTime":"1 min"},{"title":"一点点","url":"/blog/2025/12/24/一点点/","date":"2025-12-24","dateLabel":"2025-12-24","updatedDate":null,"updatedLabel":null,"categories":["life"],"description":"","cover":"","readingTime":"1 min"},{"title":"飞书多维表格:使用 n8n 存取飞书数据","url":"/blog/2025/12/20/飞书多维表格:使用-n8n-存取飞书数据/","date":"2025-12-20","dateLabel":"2025-12-20","updatedDate":null,"updatedLabel":null,"categories":["automation","dev"],"description":"","cover":"/images/2025-12-20/cover.jpg","readingTime":"1 min"},{"title":"飞书机器人:在 n8n 中收发飞书消息","url":"/blog/2025/12/16/飞书机器人:在-n8n-中收发飞书消息/","date":"2025-12-16","dateLabel":"2025-12-16","updatedDate":null,"updatedLabel":null,"categories":["automation","dev"],"description":"","cover":"/images/2025-12-16/cover.jpg","readingTime":"1 min"},{"title":"拯救上一代手机,手机上部署 n8n 服务","url":"/blog/2025/12/12/拯救上一代手机,手机上部署-n8n-服务/","date":"2025-12-12","dateLabel":"2025-12-12","updatedDate":null,"updatedLabel":null,"categories":["automation","ops","windows"],"description":"","cover":"/images/2025-12-12/cover.jpg","readingTime":"1 min"},{"title":"Java 开发环境迁移到 VS Code,进行 AI 结伴开发","url":"/blog/2025/12/07/Java-开发环境迁移到-VS-Code,进行-AI-结伴开发/","date":"2025-12-07","dateLabel":"2025-12-07","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-12-07/cover.jpg","readingTime":"1 min"},{"title":"Gemini 3 Pro Image 提示词","url":"/blog/2025/11/23/Gemini-3-Pro-Image-提示词/","date":"2025-11-23","dateLabel":"2025-11-23","updatedDate":null,"updatedLabel":null,"categories":["ai"],"description":"","cover":"/images/2025-11-23/cover.jpg","readingTime":"2 min"},{"title":"开发实战邪修1:条件断点不写条件","url":"/blog/2025/11/20/开发实战邪修1:条件断点不写条件/","date":"2025-11-20","dateLabel":"2025-11-20","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-11-20/cover.jpg","readingTime":"1 min"},{"title":"乱码:Windows开发成长必由之路","url":"/blog/2025/11/18/乱码:Windows开发成长必由之路/","date":"2025-11-18","dateLabel":"2025-11-18","updatedDate":null,"updatedLabel":null,"categories":["windows","dev"],"description":"","cover":"/images/2025-11-18/cover.jpg","readingTime":"1 min"},{"title":"conjure-dart 更新:别名类型 alias 代码生成实现","url":"/blog/2025/11/16/conjure-dart-更新:别名类型-alias-代码生成实现/","date":"2025-11-16","dateLabel":"2025-11-16","updatedDate":null,"updatedLabel":null,"categories":["mobile","dev"],"description":"","cover":"/images/2025-11-16/cover.jpg","readingTime":"1 min"},{"title":"AI时代,我们都要学会去做管理","url":"/blog/2025/10/30/AI时代,我们都要学会去做管理/","date":"2025-10-30","dateLabel":"2025-10-30","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-10-30/cover.jpg","readingTime":"1 min"},{"title":"基于对象存储的 Spark 数据读写实战:从末尾追加到任意更新","url":"/blog/2025/10/28/基于对象存储的-Spark-数据读写实战:从末尾追加到任意更新/","date":"2025-10-29","dateLabel":"2025-10-28","updatedDate":null,"updatedLabel":null,"categories":["bigdata","dev","datastore","linux"],"description":"","cover":"/images/2025-10-28/cover.jpg","readingTime":"2 min"},{"title":"VS Code配置运行Java","url":"/blog/2025/10/23/VS-Code配置运行Java/","date":"2025-10-23","dateLabel":"2025-10-23","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-10-23/cover.png","readingTime":"1 min"},{"title":"本地部署使用n8n,以及开发环境构建","url":"/blog/2025/10/20/本地部署使用n8n,以及开发环境构建/","date":"2025-10-21","dateLabel":"2025-10-20","updatedDate":null,"updatedLabel":null,"categories":["automation","dev","ai"],"description":"","cover":"/images/2025-10-20/cover.jpg","readingTime":"1 min"},{"title":"视频小工具的回旋镖猝不及防:种下的善因,终究回馈自己","url":"/blog/2025/10/08/视频小工具的回旋镖猝不及防:种下的善因,终究回馈自己/","date":"2025-10-09","dateLabel":"2025-10-08","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-10-08/cover.jpg","readingTime":"1 min"},{"title":"AI Chat消息动画实现全解析:一步一步成就自己的传奇","url":"/blog/2025/09/30/AI-Chat消息动画实现全解析:一步一步成就自己的传奇/","date":"2025-09-30","dateLabel":"2025-09-30","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-09-30/cover.jpg","readingTime":"1 min"},{"title":"代码即人生:众生皆苦,兼容并蓄","url":"/blog/2025/09/28/代码即人生:众生皆苦,兼容并蓄/","date":"2025-09-28","dateLabel":"2025-09-28","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-09-28/cover.jpg","readingTime":"1 min"},{"title":"深入剖析Carota源码:从问题出发","url":"/blog/2025/09/25/深入剖析Carota源码:从问题出发/","date":"2025-09-25","dateLabel":"2025-09-25","updatedDate":null,"updatedLabel":null,"categories":["dev","editor"],"description":"","cover":"/images/2025-09-25/cover.jpg","readingTime":"3 min"},{"title":"数学也要背?不理解就先背,笨鸟先飞","url":"/blog/2025/09/19/数学也要背?不理解就先背,笨鸟先飞/","date":"2025-09-19","dateLabel":"2025-09-19","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-09-19/cover.jpg","readingTime":"1 min"},{"title":"从“逐行死磕”到“问题导向”:源码精进之路,问题的深度决定理解的高度","url":"/blog/2025/09/16/从“逐行死磕”到“问题导向”:源码精进之路,问题的深度决定理解的高度/","date":"2025-09-17","dateLabel":"2025-09-16","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-09-16/cover.jpg","readingTime":"1 min"},{"title":"MVC 常用常新,温故知新:纵你虐我千百遍 我仍待你如初见","url":"/blog/2025/09/10/MVC-常用常新,温故知新:纵你虐我千百遍-我仍待你如初见/","date":"2025-09-11","dateLabel":"2025-09-10","updatedDate":null,"updatedLabel":null,"categories":["mobile","ai","dev"],"description":"","cover":"/images/2025-09-10/cover.png","readingTime":"1 min"},{"title":"从“调试万能”到“日志为王”:程序员的自我修养","url":"/blog/2025/09/08/从“调试万能”到“日志为王”:程序员的自我修养/","date":"2025-09-09","dateLabel":"2025-09-08","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-09-08/cover.jpg","readingTime":"1 min"},{"title":"富文本编辑器开发学习笔记:跟踪canvas-editor有感,是金子终会发光","url":"/blog/2025/09/07/富文本编辑器开发学习笔记:跟踪canvas-editor有感,是金子终会发光/","date":"2025-09-07","dateLabel":"2025-09-07","updatedDate":null,"updatedLabel":null,"categories":["editor","dev"],"description":"","cover":"/images/2025-09-07/cover.jpg","readingTime":"1 min"},{"title":"心流iFlow:超越 CLI,研究更出彩,成果更惊艳","url":"/blog/2025/09/06/心流iFlow:超越-CLI,研究更出彩,成果更惊艳/","date":"2025-09-07","dateLabel":"2025-09-06","updatedDate":null,"updatedLabel":null,"categories":["ai","linux","dev"],"description":"","cover":"/images/2025-09-06/cover.jpg","readingTime":"1 min"},{"title":"从摆地摊的素描像到AI来创作:Nano Banana帮你快速生成素描头像","url":"/blog/2025/08/30/从摆地摊的素描像到AI来创作:Nano-Banana帮你快速生成素描头像/","date":"2025-08-31","dateLabel":"2025-08-30","updatedDate":null,"updatedLabel":null,"categories":["ai","dev"],"description":"","cover":"/images/2025-08-30/cover.jpg","readingTime":"5 min"},{"title":"深入解析 Nano Banana:Google 技术博客四篇精华翻译","url":"/blog/2025/08/30/深入解析-Nano-Banana:Google-技术博客四篇精华翻译/","date":"2025-08-31","dateLabel":"2025-08-30","updatedDate":null,"updatedLabel":null,"categories":["ai","editor","dev"],"description":"","cover":"/images/2025-08-30/cover.jpg","readingTime":"2 min"},{"title":"富文本编辑器开发学习笔记:Carota插件","url":"/blog/2025/08/27/富文本编辑器开发学习笔记:Carota插件/","date":"2025-08-28","dateLabel":"2025-08-27","updatedDate":null,"updatedLabel":null,"categories":["editor","dev"],"description":"","cover":"/images/2025-08-27/cover.jpg","readingTime":"1 min"},{"title":"ShareX:Windows的滚动截屏","url":"/blog/2025/08/24/ShareX:Windows的滚动截屏/","date":"2025-08-24","dateLabel":"2025-08-24","updatedDate":null,"updatedLabel":null,"categories":["windows","ai"],"description":"","cover":"/images/2025-08-24/cover.jpg","readingTime":"1 min"},{"title":"编辑器实现的挣扎与思考","url":"/blog/2025/08/23/编辑器实现的挣扎与思考/","date":"2025-08-24","dateLabel":"2025-08-23","updatedDate":null,"updatedLabel":null,"categories":["editor","dev"],"description":"","cover":"/images/2025-08-23/cover.jpg","readingTime":"1 min"},{"title":"Qoder登台亮相,把代码读厚的IDE。不用邀请码,安装即用","url":"/blog/2025/08/22/Qoder登台亮相,把代码读厚的IDE。不用邀请码,安装即用/","date":"2025-08-22","dateLabel":"2025-08-22","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-08-22/cover.jpg","readingTime":"1 min"},{"title":"富文本编辑器开发学习笔记:Carota输入输出-交互与渲染","url":"/blog/2025/08/20/富文本编辑器开发学习笔记:Carota输入输出-交互与渲染/","date":"2025-08-21","dateLabel":"2025-08-20","updatedDate":null,"updatedLabel":null,"categories":["editor","ai","dev"],"description":"","cover":"/images/2025-08-20/cover.jpg","readingTime":"1 min"},{"title":"富文本编辑器开发学习笔记:光标之Carota实现","url":"/blog/2025/08/18/富文本编辑器开发学习笔记:光标之Carota实现/","date":"2025-08-18","dateLabel":"2025-08-18","updatedDate":null,"updatedLabel":null,"categories":["editor","dev"],"description":"","cover":"/images/2025-08-18/cover.jpg","readingTime":"1 min"},{"title":"收藏夹搬家记:上万链接导入到 IMA 知识库","url":"/blog/2025/08/16/收藏夹搬家记:上万链接导入到-IMA-知识库/","date":"2025-08-17","dateLabel":"2025-08-16","updatedDate":null,"updatedLabel":null,"categories":["automation","dev"],"description":"","cover":"/images/2025-08-16/cover.jpg","readingTime":"1 min"},{"title":"成长","url":"/blog/2025/08/16/成长/","date":"2025-08-16","dateLabel":"2025-08-16","updatedDate":null,"updatedLabel":null,"categories":["life"],"description":"","cover":"/images/2025-08-16/cover.jpg","readingTime":"1 min"},{"title":"富文本编辑器开发学习笔记:Carota模型","url":"/blog/2025/08/12/富文本编辑器开发学习笔记:Carota模型/","date":"2025-08-12","dateLabel":"2025-08-12","updatedDate":null,"updatedLabel":null,"categories":["editor","ai","dev"],"description":"","cover":"/images/2025-08-12/cover.jpg","readingTime":"1 min"},{"title":"帮姐姐做了个视频提取字幕的小工具:写代码的意义,不止在代码里","url":"/blog/2025/08/05/帮姐姐做了个视频提取字幕的小工具:写代码的意义,不止在代码里/","date":"2025-08-06","dateLabel":"2025-08-05","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-08-05/cover.jpg","readingTime":"1 min"},{"title":"工作中的数学:不经意间的学有所用,成就感爆棚","url":"/blog/2025/07/31/工作中的数学:不经意间的学有所用,成就感爆棚/","date":"2025-07-31","dateLabel":"2025-07-31","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-07-31/cover.jpg","readingTime":"3 min"},{"title":"富文本编辑器开发学习笔记:自己造轮子,是为了跑得更远","url":"/blog/2025/07/26/富文本编辑器开发学习笔记:自己造轮子,是为了跑得更远/","date":"2025-07-26","dateLabel":"2025-07-26","updatedDate":null,"updatedLabel":null,"categories":["editor","dev"],"description":"","cover":"/images/2025-07-26/cover.jpg","readingTime":"1 min"},{"title":"Conjure实战:从零搭建前后端分离的RPC服务","url":"/blog/2025/07/21/Conjure实战:从零搭建前后端分离的RPC服务/","date":"2025-07-21","dateLabel":"2025-07-21","updatedDate":null,"updatedLabel":null,"categories":["mobile","dev"],"description":"","cover":"/images/2025-07-21/cover.jpg","readingTime":"6 min"},{"title":"Conjure实战:对接高德导航 API(驾车导航)","url":"/blog/2025/07/21/Conjure实战:对接高德导航-API(驾车导航)/","date":"2025-07-21","dateLabel":"2025-07-21","updatedDate":null,"updatedLabel":null,"categories":["mobile","dev"],"description":"","cover":"/images/2025-07-21/cover.jpg","readingTime":"2 min"},{"title":"Conjure使用指南:告别接口API对接烦恼,拥抱高效开发","url":"/blog/2025/07/20/Conjure使用指南:告别接口API对接烦恼,拥抱高效开发/","date":"2025-07-21","dateLabel":"2025-07-20","updatedDate":null,"updatedLabel":null,"categories":["mobile","dev","ai"],"description":"","cover":"/images/2025-07-20/cover.jpg","readingTime":"2 min"},{"title":"Dart入门手记:Java程序员,你还好吗?","url":"/blog/2025/07/17/Dart入门手记:Java程序员,你还好吗?/","date":"2025-07-17","dateLabel":"2025-07-17","updatedDate":null,"updatedLabel":null,"categories":["dev","mobile"],"description":"","cover":"/images/2025-07-17/cover.jpg","readingTime":"3 min"},{"title":"腾讯智能体体验:腾讯AI焊在微信里面了","url":"/blog/2025/07/14/腾讯智能体体验:腾讯AI焊在微信里面了/","date":"2025-07-14","dateLabel":"2025-07-14","updatedDate":null,"updatedLabel":null,"categories":["ai"],"description":"","cover":"/images/2025-07-14/cover.jpg","readingTime":"1 min"},{"title":"Gemini CLI 体验,实测编写脚本能力","url":"/blog/2025/07/12/Gemini-CLI-体验,实测编写脚本能力/","date":"2025-07-12","dateLabel":"2025-07-12","updatedDate":null,"updatedLabel":null,"categories":["ai","dev"],"description":"","cover":"/images/2025-07-12/cover.jpg","readingTime":"1 min"},{"title":"微信聊天记录太占空间?手戳”瘦身神器“!","url":"/blog/2025/07/05/微信聊天记录太占空间?手戳"瘦身神器"!/","date":"2025-07-06","dateLabel":"2025-07-05","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"/images/2025-07-05/cover.jpg","readingTime":"1 min"},{"title":"Dart 语言入门指南:Flutter开发第一步","url":"/blog/2025/06/29/Dart-语言入门指南:Flutter开发第一步/","date":"2025-06-30","dateLabel":"2025-06-29","updatedDate":null,"updatedLabel":null,"categories":["mobile","dev"],"description":"","cover":"/images/2025-06-29/cover.jpg","readingTime":"5 min"},{"title":"Windows搭建Flutter桌面开发环境一步到位","url":"/blog/2025/06/02/Windows搭建Flutter桌面开发环境一步到位/","date":"2025-06-02","dateLabel":"2025-06-02","updatedDate":null,"updatedLabel":null,"categories":["mobile","windows","network","dev"],"description":"","cover":"/images/2025-06-02/cover.jpg","readingTime":"2 min"},{"title":"画龙点睛","url":"/blog/2025/02/01/画龙点睛/","date":"2025-02-02","dateLabel":"2025-02-01","updatedDate":null,"updatedLabel":null,"categories":["life"],"description":"","cover":"/images/2025-02-01/cover.jpg","readingTime":"1 min"},{"title":"跑跑模型 on Win11 WSL2","url":"/blog/2024/01/15/aigc-setup-on-windows-wsl-2/","date":"2024-01-15","dateLabel":"2024-01-14","updatedDate":null,"updatedLabel":null,"categories":["windows","ai"],"description":"","cover":"","readingTime":"30 min"},{"title":"reinstall redmine on raspberry2","url":"/blog/2023/11/18/reinstall-redmine-on-respberry2/","date":"2023-11-18","dateLabel":"2023-11-18","updatedDate":null,"updatedLabel":null,"categories":["hardware"],"description":"","cover":"","readingTime":"6 min"},{"title":"钉钉群机器人对接ChatGPT","url":"/blog/2023/04/09/dingtalk-with-openai/","date":"2023-04-09","dateLabel":"2023-04-09","updatedDate":null,"updatedLabel":null,"categories":["ai","automation"],"description":"","cover":"","readingTime":"4 min"},{"title":"树莓派4安装Clash","url":"/blog/2023/03/26/clash-on-raspberry4/","date":"2023-03-26","dateLabel":"2023-03-25","updatedDate":null,"updatedLabel":null,"categories":["network","hardware"],"description":"","cover":"","readingTime":"12 min"},{"title":"重新折腾raspberry2","url":"/blog/2023/03/25/reinstall-raspberry2/","date":"2023-03-25","dateLabel":"2023-03-25","updatedDate":null,"updatedLabel":null,"categories":["hardware"],"description":"","cover":"","readingTime":"4 min"},{"title":"请求复制/镜像","url":"/blog/2023/03/25/mirror-request/","date":"2023-03-25","dateLabel":"2023-03-25","updatedDate":null,"updatedLabel":null,"categories":["ops","datastore","network"],"description":"","cover":"","readingTime":"1 min"},{"title":"微信对接OpenAI","url":"/blog/2023/03/18/wechat-on-openai/","date":"2023-03-18","dateLabel":"2023-03-18","updatedDate":null,"updatedLabel":null,"categories":["ai","blog"],"description":"","cover":"","readingTime":"7 min"},{"title":"记git reset --hard","url":"/blog/2023/02/01/git-reset-hard/","date":"2023-02-01","dateLabel":"2023-02-01","updatedDate":null,"updatedLabel":null,"categories":["linux"],"description":"","cover":"","readingTime":"1 min"},{"title":"注册OpenAI","url":"/blog/2023/02/01/register-openai/","date":"2023-02-01","dateLabel":"2023-01-31","updatedDate":null,"updatedLabel":null,"categories":["ai","life"],"description":"","cover":"","readingTime":"1 min"},{"title":"信创环境迁移浅析-以Postgres为例","url":"/blog/2022/07/24/xinchuang-install-postgres/","date":"2022-07-24","dateLabel":"2022-07-24","updatedDate":null,"updatedLabel":null,"categories":["datastore","ops"],"description":"","cover":"","readingTime":"24 min"},{"title":"K8S官方例子NFS","url":"/blog/2022/04/19/k8s-nfs-run-example/","date":"2022-04-19","dateLabel":"2022-04-19","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"6 min"},{"title":"k8s共享存储使用NFS","url":"/blog/2022/04/14/k8s-nfs/","date":"2022-04-14","dateLabel":"2022-04-13","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"9 min"},{"title":"xiaomi r4a install padavan","url":"/blog/2022/04/11/xiaomi-r4a-install-padavan/","date":"2022-04-11","dateLabel":"2022-04-11","updatedDate":null,"updatedLabel":null,"categories":["hardware"],"description":"","cover":"","readingTime":"3 min"},{"title":"minikube guide","url":"/blog/2022/04/06/minikube-guide/","date":"2022-04-06","dateLabel":"2022-04-06","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"21 min"},{"title":"k8s ingress","url":"/blog/2022/03/26/k8s-ingress/","date":"2022-03-26","dateLabel":"2022-03-26","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"9 min"},{"title":"k8s-v1.23.5安装指南 - 使用kubeadm","url":"/blog/2022/03/18/k8s-guide-use-kubeadm/","date":"2022-03-18","dateLabel":"2022-03-18","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"27 min"},{"title":"k8s-v1.23.5依赖下载","url":"/blog/2022/03/18/k8s-deps-download/","date":"2022-03-18","dateLabel":"2022-03-18","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"4 min"},{"title":"欧拉20.03LTS_SP3安装docker","url":"/blog/2022/01/13/openeuler20-dot-03lts-sp3-install-docker/","date":"2022-01-13","dateLabel":"2022-01-13","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"5 min"},{"title":"octopress生成TOC","url":"/blog/2021/12/08/octopress-generate-toc/","date":"2021-12-08","dateLabel":"2021-12-08","updatedDate":null,"updatedLabel":null,"categories":["blog"],"description":"","cover":"","readingTime":"2 min"},{"title":"认真的博客","url":"/blog/2021/12/08/recommand-blogs/","date":"2021-12-08","dateLabel":"2021-12-08","updatedDate":null,"updatedLabel":null,"categories":["ops","windows","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"斐讯K2刷机padavan","url":"/blog/2021/09/15/k2-again/","date":"2021-09-15","dateLabel":"2021-09-15","updatedDate":null,"updatedLabel":null,"categories":["hardware"],"description":"","cover":"","readingTime":"1 min"},{"title":"\"再看毕业照","url":"/blog/2021/03/22/再看毕业照人生众生相,有你一相,何必在乎世人眼光,自取烦忧笑一笑,留下那精彩的一瞬笑得灿烂,活得精彩/","date":"2021-03-23","dateLabel":"2021-03-22","updatedDate":null,"updatedLabel":null,"categories":["life"],"description":"","cover":"","readingTime":"1 min"},{"title":"在树莓派上部署redmine - respberrypi","url":"/blog/2020/05/11/redmine-on-arm-pi/","date":"2020-05-11","dateLabel":"2020-05-11","updatedDate":null,"updatedLabel":null,"categories":["hardware","ops"],"description":"","cover":"","readingTime":"4 min"},{"title":"appium-Android自动化测试","url":"/blog/2020/04/12/appium-android-auto-test/","date":"2020-04-12","dateLabel":"2020-04-12","updatedDate":null,"updatedLabel":null,"categories":["mobile","dev","windows","automation"],"description":"","cover":"","readingTime":"3 min"},{"title":"android linux via termux","url":"/blog/2019/07/26/android-linux-via-termux/","date":"2019-07-26","dateLabel":"2019-07-26","updatedDate":null,"updatedLabel":null,"categories":["linux","mobile","ops"],"description":"","cover":"","readingTime":"3 min"},{"title":"try bk.tencent.com","url":"/blog/2019/04/10/try-bk-dot-tencent-dot-com/","date":"2019-04-10","dateLabel":"2019-04-10","updatedDate":null,"updatedLabel":null,"categories":["ops","linux"],"description":"","cover":"","readingTime":"2 min"},{"title":"try k8s","url":"/blog/2019/04/10/try-k8s/","date":"2019-04-10","dateLabel":"2019-04-10","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"10 min"},{"title":"编译JCEF - win64","url":"/blog/2018/10/20/jcef-build-on-win64/","date":"2018-10-20","dateLabel":"2018-10-20","updatedDate":null,"updatedLabel":null,"categories":["dev","windows","life"],"description":"","cover":"","readingTime":"6 min"},{"title":"视频自动翻译","url":"/blog/2018/08/25/video-auto-translate/","date":"2018-08-25","dateLabel":"2018-08-25","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"斐讯K2刷机记录","url":"/blog/2018/06/20/k2-reburn/","date":"2018-06-20","dateLabel":"2018-06-20","updatedDate":null,"updatedLabel":null,"categories":["hardware","life"],"description":"","cover":"","readingTime":"3 min"},{"title":"使用VMWare安装Mac OS X","url":"/blog/2018/06/19/install-macosx-on-vmware/","date":"2018-06-19","dateLabel":"2018-06-19","updatedDate":null,"updatedLabel":null,"categories":["ops","life"],"description":"","cover":"","readingTime":"1 min"},{"title":"使用注解生成代码","url":"/blog/2018/06/10/java-source-annotation-processor/","date":"2018-06-10","dateLabel":"2018-06-10","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"4 min"},{"title":"科学上网(续)","url":"/blog/2018/06/09/reasonable-way-to-access-the-internet/","date":"2018-06-09","dateLabel":"2018-06-09","updatedDate":null,"updatedLabel":null,"categories":["network","linux","windows","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"解读百度的Heatmap","url":"/blog/2018/05/01/heatmap-base-on-baidu/","date":"2018-05-01","dateLabel":"2018-05-01","updatedDate":null,"updatedLabel":null,"categories":["editor"],"description":"","cover":"","readingTime":"2 min"},{"title":"WebStart的使用以及如何结合JVMTI","url":"/blog/2018/04/07/java-webstart-jnlp-with-jvmti/","date":"2018-04-07","dateLabel":"2018-04-06","updatedDate":null,"updatedLabel":null,"categories":["dev","windows"],"description":"","cover":"","readingTime":"2 min"},{"title":"Map入门指南","url":"/blog/2018/01/30/map-started-guide/","date":"2018-01-30","dateLabel":"2018-01-30","updatedDate":null,"updatedLabel":null,"categories":["dev","network"],"description":"","cover":"","readingTime":"2 min"},{"title":"Java中使用代理-基于Shandowsocks","url":"/blog/2018/01/26/proxy-on-java-via-shandowsocks/","date":"2018-01-26","dateLabel":"2018-01-26","updatedDate":null,"updatedLabel":null,"categories":["dev","network"],"description":"","cover":"","readingTime":"4 min"},{"title":"logstash采集网站的访问日志","url":"/blog/2018/01/20/logstash-monitor-myself-blog-accesslog/","date":"2018-01-20","dateLabel":"2018-01-20","updatedDate":null,"updatedLabel":null,"categories":["monitoring","blog"],"description":"","cover":"","readingTime":"1 min"},{"title":"gitalk on octopress","url":"/blog/2018/01/20/gitalk-on-octopress/","date":"2018-01-20","dateLabel":"2018-01-20","updatedDate":null,"updatedLabel":null,"categories":["blog"],"description":"","cover":"","readingTime":"2 min"},{"title":"sed debug: sedsed","url":"/blog/2017/11/20/sed-debug-sedsed/","date":"2017-11-20","dateLabel":"2017-11-20","updatedDate":null,"updatedLabel":null,"categories":["linux","dev"],"description":"","cover":"","readingTime":"3 min"},{"title":"gitlab on docker","url":"/blog/2017/11/20/gitlab-on-docker/","date":"2017-11-20","dateLabel":"2017-11-20","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"1 min"},{"title":"使用Sphinx生成/管理文档","url":"/blog/2017/11/16/sphinx-generate-docs/","date":"2017-11-16","dateLabel":"2017-11-16","updatedDate":null,"updatedLabel":null,"categories":["linux","bigdata","blog"],"description":"","cover":"","readingTime":"2 min"},{"title":"使用TeamviewerVPN访问公司内网","url":"/blog/2017/11/04/teamviewer-vpn-on-windows/","date":"2017-11-04","dateLabel":"2017-11-04","updatedDate":null,"updatedLabel":null,"categories":["network","windows"],"description":"","cover":"","readingTime":"4 min"},{"title":"windows run ubuntu","url":"/blog/2017/10/30/windows-run-ubuntu/","date":"2017-10-30","dateLabel":"2017-10-29","updatedDate":"2023-11-28","updatedLabel":"2023-11-28","categories":["linux","windows","bigdata","blog"],"description":"","cover":"","readingTime":"11 min"},{"title":"在Cenots7双击运行程序","url":"/blog/2017/10/28/application-run-do-double-click-on-centos7/","date":"2017-10-28","dateLabel":"2017-10-28","updatedDate":null,"updatedLabel":null,"categories":["linux","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"使用Flamegraph查看磁盘使用情况","url":"/blog/2017/10/28/flamegraph-display-how-disk-be-used/","date":"2017-10-28","dateLabel":"2017-10-28","updatedDate":null,"updatedLabel":null,"categories":["windows"],"description":"","cover":"","readingTime":"1 min"},{"title":"docker多主机网络配置 - Macvlan","url":"/blog/2017/10/08/docker-network-via-macvlan/","date":"2017-10-08","dateLabel":"2017-10-08","updatedDate":null,"updatedLabel":null,"categories":["ops","network"],"description":"","cover":"","readingTime":"5 min"},{"title":"docker多主机网络配置 - pipework","url":"/blog/2017/10/07/docker-network-via-pipework/","date":"2017-10-07","dateLabel":"2017-10-07","updatedDate":null,"updatedLabel":null,"categories":["ops","network"],"description":"","cover":"","readingTime":"5 min"},{"title":"STAF start guide","url":"/blog/2017/10/06/staf-start-guide/","date":"2017-10-06","dateLabel":"2017-10-06","updatedDate":null,"updatedLabel":null,"categories":["dev","linux"],"description":"","cover":"","readingTime":"9 min"},{"title":"连接树莓派 - respberrypi","url":"/blog/2017/10/05/respberrypi-connected-via/","date":"2017-10-05","dateLabel":"2017-10-05","updatedDate":null,"updatedLabel":null,"categories":["hardware"],"description":"","cover":"","readingTime":"1 min"},{"title":"两台主机的docker通过route互联互通","url":"/blog/2017/09/20/docker-manual-make-connect-each-other/","date":"2017-09-20","dateLabel":"2017-09-20","updatedDate":null,"updatedLabel":null,"categories":["ops","network"],"description":"","cover":"","readingTime":"6 min"},{"title":"使用U盘安装Centos7","url":"/blog/2017/09/19/os-install-via-usb/","date":"2017-09-19","dateLabel":"2017-09-19","updatedDate":null,"updatedLabel":null,"categories":["linux"],"description":"","cover":"","readingTime":"1 min"},{"title":"Redmine部署以及插件安装","url":"/blog/2017/09/18/redmine-deploy-and-install-plugins/","date":"2017-09-18","dateLabel":"2017-09-18","updatedDate":null,"updatedLabel":null,"categories":["ops","hardware"],"description":"","cover":"","readingTime":"2 min"},{"title":"Docker compose入门","url":"/blog/2017/09/17/docker-compose-hello/","date":"2017-09-17","dateLabel":"2017-09-17","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"5 min"},{"title":"Zookeeper ACL","url":"/blog/2017/09/02/zookeeper-acl/","date":"2017-09-02","dateLabel":"2017-09-02","updatedDate":null,"updatedLabel":null,"categories":["datastore","bigdata"],"description":"","cover":"","readingTime":"5 min"},{"title":"命令行调用Jenkins2.63打包","url":"/blog/2017/08/31/jenkins-build-via-shell/","date":"2017-08-31","dateLabel":"2017-08-30","updatedDate":null,"updatedLabel":null,"categories":["ops","linux","dev"],"description":"","cover":"","readingTime":"2 min"},{"title":"Vagrant创建自定义的BOX","url":"/blog/2017/08/23/vagrant-create-your-own-box/","date":"2017-08-23","dateLabel":"2017-08-22","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"3 min"},{"title":"kubeadm部署k8s(资源已有)","url":"/blog/2017/08/13/kubeadm-install-k8s-on-centos7-with-resources/","date":"2017-08-13","dateLabel":"2017-08-13","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"3 min"},{"title":"保护/加密JAVA代码","url":"/blog/2017/08/10/java-bytecode-security/","date":"2017-08-10","dateLabel":"2017-08-09","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"3 min"},{"title":"NFS on centos7","url":"/blog/2017/08/05/nfs-on-centos7/","date":"2017-08-05","dateLabel":"2017-08-05","updatedDate":null,"updatedLabel":null,"categories":["ops","linux"],"description":"","cover":"","readingTime":"3 min"},{"title":"encfs加密文件系统","url":"/blog/2017/08/05/encfs-secure-filesystem/","date":"2017-08-05","dateLabel":"2017-08-05","updatedDate":null,"updatedLabel":null,"categories":["security","linux"],"description":"","cover":"","readingTime":"3 min"},{"title":"kubeadm部署kubernetes","url":"/blog/2017/07/30/kubeadm-install-kubenetes-on-centos7/","date":"2017-07-30","dateLabel":"2017-07-30","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"13 min"},{"title":"[转]一致性Hash","url":"/blog/2017/07/16/consistent-hashing/","date":"2017-07-16","dateLabel":"2017-07-16","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"1 min"},{"title":"togo简单的RPM打包工具","url":"/blog/2017/07/15/togo-another-rpmbuild-tool/","date":"2017-07-15","dateLabel":"2017-07-15","updatedDate":null,"updatedLabel":null,"categories":["dev","ops","life"],"description":"","cover":"","readingTime":"1 min"},{"title":"爬虫之CasperJS","url":"/blog/2017/07/08/casperjs-crawler/","date":"2017-07-08","dateLabel":"2017-07-08","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"2 min"},{"title":"导出微信照片","url":"/blog/2017/06/04/wechat-images-export/","date":"2017-06-04","dateLabel":"2017-06-04","updatedDate":null,"updatedLabel":null,"categories":["linux","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"jenkins start guide","url":"/blog/2017/06/04/jenkins-start-guide/","date":"2017-06-04","dateLabel":"2017-06-04","updatedDate":"2017-09-07","updatedLabel":"2017-09-07","categories":["dev","ops"],"description":"","cover":"","readingTime":"1 min"},{"title":"追生产的一次优化","url":"/blog/2017/06/01/optimize-java-on-production-environment/","date":"2017-06-01","dateLabel":"2017-06-01","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"7 min"},{"title":"Hive on Spark预测性执行BUG一枚","url":"/blog/2017/05/23/spark-on-hive-speculation-shit-bug/","date":"2017-05-23","dateLabel":"2017-05-23","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"4 min"},{"title":"Puppet批量自动化部署实战","url":"/blog/2017/05/05/puppet-automate-deploy-hosts/","date":"2017-05-05","dateLabel":"2017-05-05","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"4 min"},{"title":"k8s hadoop deploy","url":"/blog/2017/04/14/k8s-hadoop-deploy/","date":"2017-04-14","dateLabel":"2017-04-14","updatedDate":null,"updatedLabel":null,"categories":["bigdata","ops"],"description":"","cover":"","readingTime":"5 min"},{"title":"k8s harbor config","url":"/blog/2017/03/30/k8s-harbor-config/","date":"2017-03-30","dateLabel":"2017-03-30","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"3 min"},{"title":"codis使用进阶","url":"/blog/2017/03/23/codis-usage2/","date":"2017-03-23","dateLabel":"2017-03-23","updatedDate":null,"updatedLabel":null,"categories":["datastore"],"description":"","cover":"","readingTime":"4 min"},{"title":"k8s harbor config on centos6","url":"/blog/2017/03/12/k8s-harbor-config-on-centos6/","date":"2017-03-12","dateLabel":"2017-03-12","updatedDate":null,"updatedLabel":null,"categories":["ops","linux"],"description":"","cover":"","readingTime":"8 min"},{"title":"k8s在Centos6部署实践","url":"/blog/2017/03/05/k8s-docker-multinode-on-centos6/","date":"2017-03-05","dateLabel":"2017-03-05","updatedDate":"2017-03-06","updatedLabel":"2017-03-06","categories":["ops","linux"],"description":"","cover":"","readingTime":"9 min"},{"title":"k8s集群部署","url":"/blog/2017/02/25/k8s-docker-multinode/","date":"2017-02-25","dateLabel":"2017-02-25","updatedDate":null,"updatedLabel":null,"categories":["ops","dev"],"description":"","cover":"","readingTime":"6 min"},{"title":"k8s minikube on windows","url":"/blog/2017/02/08/k8s-minikube-on-windows/","date":"2017-02-08","dateLabel":"2017-02-08","updatedDate":null,"updatedLabel":null,"categories":["ops","windows"],"description":"","cover":"","readingTime":"5 min"},{"title":"Docker代理配置以及导入导出","url":"/blog/2017/02/06/docker-http-proxy-and-save-reload/","date":"2017-02-06","dateLabel":"2017-02-06","updatedDate":null,"updatedLabel":null,"categories":["ops","network"],"description":"","cover":"","readingTime":"2 min"},{"title":"使用Privoxy把shadowsocks转换为Http代理","url":"/blog/2017/02/04/privoxy-http-proxy-for-shadowsocks/","date":"2017-02-04","dateLabel":"2017-02-04","updatedDate":null,"updatedLabel":null,"categories":["network","ops","linux"],"description":"","cover":"","readingTime":"2 min"},{"title":"在Centos7上安装VNC Server","url":"/blog/2017/01/27/vnc-server-on-centos7/","date":"2017-01-27","dateLabel":"2017-01-27","updatedDate":null,"updatedLabel":null,"categories":["linux","hardware"],"description":"","cover":"","readingTime":"1 min"},{"title":"develop-environment-prepare","url":"/blog/2017/01/25/develop-environment-prepare/","date":"2017-01-25","dateLabel":"2017-01-25","updatedDate":null,"updatedLabel":null,"categories":["dev","network","ops","linux"],"description":"","cover":"","readingTime":"1 min"},{"title":"jarsperreports生成PDF中文问题","url":"/blog/2017/01/21/jarsperreports-pdf-chinese/","date":"2017-01-21","dateLabel":"2017-01-21","updatedDate":null,"updatedLabel":null,"categories":["dev","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"nginx https with tomcat http","url":"/blog/2017/01/20/nginx-https-with-tomcat-http/","date":"2017-01-20","dateLabel":"2017-01-20","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"2 min"},{"title":"Nginx配置https","url":"/blog/2017/01/19/nginx-https/","date":"2017-01-19","dateLabel":"2017-01-19","updatedDate":null,"updatedLabel":null,"categories":["ops","security"],"description":"","cover":"","readingTime":"7 min"},{"title":"elasticsearch5安装Head插件","url":"/blog/2016/12/14/elasticsearch5-head-plugin-config/","date":"2016-12-14","dateLabel":"2016-12-14","updatedDate":null,"updatedLabel":null,"categories":["datastore","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"spark2.0 + kafka0.10.1订阅多个但只读了一个分区","url":"/blog/2016/12/09/spark2-0-kafka0-10-1-partitions-work-incorrent/","date":"2016-12-09","dateLabel":"2016-12-09","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"3 min"},{"title":"jasperreports使用小结","url":"/blog/2016/12/01/jasperreports-brief-summary/","date":"2016-12-01","dateLabel":"2016-12-01","updatedDate":null,"updatedLabel":null,"categories":["dev","bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"Play2开发环境搭建","url":"/blog/2016/11/10/play2-development-environment-with-eclipse/","date":"2016-11-10","dateLabel":"2016-11-10","updatedDate":null,"updatedLabel":null,"categories":["dev","bigdata"],"description":"","cover":"","readingTime":"3 min"},{"title":"红帽6升级SSH","url":"/blog/2016/10/20/ssh-upgrade-on-centos6/","date":"2016-10-20","dateLabel":"2016-10-20","updatedDate":null,"updatedLabel":null,"categories":["dev","linux","hardware"],"description":"","cover":"","readingTime":"4 min"},{"title":"SparkSQL查看调试生成代码","url":"/blog/2016/10/12/sparksql-view-and-debug-generatecode/","date":"2016-10-12","dateLabel":"2016-10-12","updatedDate":null,"updatedLabel":null,"categories":["bigdata","dev"],"description":"","cover":"","readingTime":"3 min"},{"title":"Maven创建自己的Archetype","url":"/blog/2016/10/12/maven-create-ourself-archetype/","date":"2016-10-12","dateLabel":"2016-10-12","updatedDate":null,"updatedLabel":null,"categories":["dev","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"批量下载163-open的视频","url":"/blog/2016/09/19/163-open-movies-download/","date":"2016-09-19","dateLabel":"2016-09-19","updatedDate":null,"updatedLabel":null,"categories":["linux","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"Zookeeper节点切换","url":"/blog/2016/09/12/zookeeper-switch-node/","date":"2016-09-12","dateLabel":"2016-09-12","updatedDate":"2017-07-21","updatedLabel":"2017-07-20","categories":["datastore","bigdata"],"description":"","cover":"","readingTime":"3 min"},{"title":"Puppet批量修改用户密码","url":"/blog/2016/09/06/puppet-modify-password/","date":"2016-09-06","dateLabel":"2016-09-06","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"1 min"},{"title":"Maven压缩js/css功能实践","url":"/blog/2016/08/19/j2ee-maven-resources-compress/","date":"2016-08-19","dateLabel":"2016-08-19","updatedDate":null,"updatedLabel":null,"categories":["dev","bigdata"],"description":"","cover":"","readingTime":"3 min"},{"title":"Redis批量操作","url":"/blog/2016/08/17/redis-batch-operate/","date":"2016-08-17","dateLabel":"2016-08-17","updatedDate":null,"updatedLabel":null,"categories":["datastore"],"description":"","cover":"","readingTime":"2 min"},{"title":"Redis使用优化","url":"/blog/2016/07/28/redis-optimise/","date":"2016-07-28","dateLabel":"2016-07-28","updatedDate":null,"updatedLabel":null,"categories":["datastore"],"description":"","cover":"","readingTime":"4 min"},{"title":"使用 naxsi 处理 XSS","url":"/blog/2016/07/19/xss-blocked-by-naxsi/","date":"2016-07-19","dateLabel":"2016-07-19","updatedDate":null,"updatedLabel":null,"categories":["security","ops"],"description":"","cover":"","readingTime":"2 min"},{"title":"codis简单使用","url":"/blog/2016/07/14/codis-guide/","date":"2016-07-14","dateLabel":"2016-07-14","updatedDate":null,"updatedLabel":null,"categories":["datastore"],"description":"","cover":"","readingTime":"11 min"},{"title":"使用 flume+kafka+elasticsearch 处理数据","url":"/blog/2016/06/28/flume-kafka-elasticsearch-for-analyse/","date":"2016-06-28","dateLabel":"2016-06-28","updatedDate":null,"updatedLabel":null,"categories":["bigdata","datastore"],"description":"","cover":"","readingTime":"2 min"},{"title":"使用Puppet安装配置Ganglia","url":"/blog/2016/06/17/ganglia-install-on-centos-with-puppet/","date":"2016-06-17","dateLabel":"2016-06-17","updatedDate":"2016-10-27","updatedLabel":"2016-10-27","categories":["ops","monitoring","bigdata"],"description":"","cover":"","readingTime":"4 min"},{"title":"elasticsearch startguide","url":"/blog/2016/06/15/elasticsearch-startguide/","date":"2016-06-15","dateLabel":"2016-06-15","updatedDate":null,"updatedLabel":null,"categories":["dev","datastore"],"description":"","cover":"","readingTime":"2 min"},{"title":"[读读书]Apache Spark源码剖析-Shell","url":"/blog/2016/05/08/rrc-apache-spark-source-inside-shell/","date":"2016-05-08","dateLabel":"2016-05-08","updatedDate":"2016-09-27","updatedLabel":"2016-09-26","categories":["bigdata","dev","linux","reading"],"description":"","cover":"","readingTime":"3 min"},{"title":"[读读书]Apache Spark源码剖析-序","url":"/blog/2016/05/07/rrc-apache-spark-source-inside-preface/","date":"2016-05-07","dateLabel":"2016-05-07","updatedDate":"2016-09-27","updatedLabel":"2016-09-26","categories":["bigdata","dev","reading"],"description":"","cover":"","readingTime":"2 min"},{"title":"flamegraphs java cpu","url":"/blog/2016/05/06/flamegraphs-java-cpu/","date":"2016-05-06","dateLabel":"2016-05-06","updatedDate":null,"updatedLabel":null,"categories":["dev","monitoring"],"description":"","cover":"","readingTime":"4 min"},{"title":"hdfs异构存储实操","url":"/blog/2016/05/05/hdfs-heterogeneous-storage/","date":"2016-05-05","dateLabel":"2016-05-05","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"4 min"},{"title":"puppetboard install","url":"/blog/2016/05/05/puppetboard-install/","date":"2016-05-05","dateLabel":"2016-05-05","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"5 min"},{"title":"hiera and facts","url":"/blog/2016/05/03/hiera-and-facts/","date":"2016-05-03","dateLabel":"2016-05-03","updatedDate":null,"updatedLabel":null,"categories":["dev","ops","linux","windows"],"description":"","cover":"","readingTime":"3 min"},{"title":"MCollective Plugins","url":"/blog/2016/04/28/mcollective-plugins/","date":"2016-04-28","dateLabel":"2016-04-28","updatedDate":null,"updatedLabel":null,"categories":["bigdata","ops","linux"],"description":"","cover":"","readingTime":"8 min"},{"title":"MCollective安装配置","url":"/blog/2016/04/28/mcollective-quick-start/","date":"2016-04-28","dateLabel":"2016-04-28","updatedDate":null,"updatedLabel":null,"categories":["bigdata","ops","linux"],"description":"","cover":"","readingTime":"8 min"},{"title":"[整理] Hadoop入门","url":"/blog/2016/04/23/hadoop-guide-catalog/","date":"2016-04-23","dateLabel":"2016-04-23","updatedDate":"2016-04-29","updatedLabel":"2016-04-29","categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"puppet basic","url":"/blog/2016/04/22/puppet-basic/","date":"2016-04-22","dateLabel":"2016-04-22","updatedDate":"2016-10-12","updatedLabel":"2016-10-12","categories":["ops"],"description":"","cover":"","readingTime":"6 min"},{"title":"puppetexplorer设置","url":"/blog/2016/04/21/puppetexplorer-setting/","date":"2016-04-21","dateLabel":"2016-04-21","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"2 min"},{"title":"puppetdb安装配置","url":"/blog/2016/04/21/puppetdb-install-and-config/","date":"2016-04-21","dateLabel":"2016-04-20","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"7 min"},{"title":"Puppet入门之域名证书","url":"/blog/2016/04/21/puppet-domain-fdqn/","date":"2016-04-21","dateLabel":"2016-04-20","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"9 min"},{"title":"alluxio入门大全2","url":"/blog/2016/04/15/alluxio-quickstart2/","date":"2016-04-15","dateLabel":"2016-04-14","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"9 min"},{"title":"hiveserver2 ui and upgrade hive2.0.0","url":"/blog/2016/04/13/hiveserver2-ui-and-upgrade-hive2-dot-0-0/","date":"2016-04-13","dateLabel":"2016-04-13","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"7 min"},{"title":"spark-on-yarn内存分配","url":"/blog/2016/04/11/spark-on-yarn-memory-allocate/","date":"2016-04-11","dateLabel":"2016-04-11","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"hive-on-spark snappy on centos5","url":"/blog/2016/04/08/snappy-centos5-on-hive-on-spark/","date":"2016-04-08","dateLabel":"2016-04-08","updatedDate":null,"updatedLabel":null,"categories":["bigdata","linux"],"description":"","cover":"","readingTime":"5 min"},{"title":"puppet4.4.1入门安装","url":"/blog/2016/04/08/puppet-install/","date":"2016-04-08","dateLabel":"2016-04-08","updatedDate":"2016-05-03","updatedLabel":"2016-05-03","categories":["ops"],"description":"","cover":"","readingTime":"7 min"},{"title":"DBCP参数在Hive JDBC上的实践","url":"/blog/2016/04/08/dbcp-parameters/","date":"2016-04-08","dateLabel":"2016-04-08","updatedDate":"2016-04-11","updatedLabel":"2016-04-10","categories":["bigdata","datastore"],"description":"","cover":"","readingTime":"1 min"},{"title":"RPM打包","url":"/blog/2016/04/04/rpm-build-your-package/","date":"2016-04-04","dateLabel":"2016-04-04","updatedDate":null,"updatedLabel":null,"categories":["dev","ops","monitoring","bigdata"],"description":"","cover":"","readingTime":"4 min"},{"title":"parquet学习","url":"/blog/2016/03/29/parquet-simple-view/","date":"2016-03-29","dateLabel":"2016-03-29","updatedDate":null,"updatedLabel":null,"categories":["bigdata","linux"],"description":"","cover":"","readingTime":"9 min"},{"title":"limit on sparksql and hive","url":"/blog/2016/03/29/limit-on-sparksql-and-hive/","date":"2016-03-29","dateLabel":"2016-03-29","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"22 min"},{"title":"hive on spark","url":"/blog/2016/03/28/hive-on-spark/","date":"2016-03-28","dateLabel":"2016-03-28","updatedDate":"2016-04-09","updatedLabel":"2016-04-08","categories":["bigdata"],"description":"","cover":"","readingTime":"4 min"},{"title":"SparkSQL-on-YARN的Executors池(动态)配置","url":"/blog/2016/03/25/spark-sql-executors-dynamic-on-yarn/","date":"2016-03-25","dateLabel":"2016-03-25","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"hadoop内存环境变量和参数","url":"/blog/2016/03/17/hadoop-memory-opts-and-args/","date":"2016-03-17","dateLabel":"2016-03-17","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"安装配置OpenVPN","url":"/blog/2016/03/11/install-and-config-openvpn/","date":"2016-03-11","dateLabel":"2016-03-11","updatedDate":"2017-01-27","updatedLabel":"2017-01-27","categories":["network"],"description":"","cover":"","readingTime":"4 min"},{"title":"rsync与scp优势","url":"/blog/2016/03/07/rsync-vs-scp/","date":"2016-03-07","dateLabel":"2016-03-07","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"Ganglia页自定义视图","url":"/blog/2016/02/25/ganglia-web-ui-views/","date":"2016-02-25","dateLabel":"2016-02-25","updatedDate":null,"updatedLabel":null,"categories":["monitoring","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"Ganglia扩展-Python","url":"/blog/2016/02/01/ganglia-python-extension/","date":"2016-02-01","dateLabel":"2016-02-01","updatedDate":null,"updatedLabel":null,"categories":["monitoring","bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"pdsh","url":"/blog/2016/01/25/pdsh-simple-usage/","date":"2016-01-25","dateLabel":"2016-01-25","updatedDate":null,"updatedLabel":null,"categories":["bigdata","linux"],"description":"","cover":"","readingTime":"3 min"},{"title":"安装配置Ganglia(2)","url":"/blog/2016/01/23/install-and-config-ganglia-on-redhat-2/","date":"2016-01-23","dateLabel":"2016-01-23","updatedDate":null,"updatedLabel":null,"categories":["monitoring","bigdata"],"description":"","cover":"","readingTime":"5 min"},{"title":"坑","url":"/blog/2016/01/19/hole/","date":"2016-01-19","dateLabel":"2016-01-19","updatedDate":"2016-03-19","updatedLabel":"2016-03-18","categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"配置TEZ-UI","url":"/blog/2016/01/12/tez-ui-config-and-run/","date":"2016-01-12","dateLabel":"2016-01-12","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"3 min"},{"title":"Hadoop安装与升级-(3)HA配置","url":"/blog/2016/01/07/hadoop-install-and-upgrade-3-ha/","date":"2016-01-07","dateLabel":"2016-01-07","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"Hadoop安装与升级-(4)HA升级","url":"/blog/2016/01/07/hadoop-install-and-upgrade-4-ha-upgrade/","date":"2016-01-07","dateLabel":"2016-01-07","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"4 min"},{"title":"Hadoop安装与升级-(2)2.2升级到2.6","url":"/blog/2016/01/07/hadoop-install-and-upgrade-2-hadoop-upgrade/","date":"2016-01-07","dateLabel":"2016-01-07","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"Hadoop安装与升级-Docker中安装(1)","url":"/blog/2016/01/07/hadoop-install-and-upgrade-1-install-in-docker/","date":"2016-01-07","dateLabel":"2016-01-07","updatedDate":null,"updatedLabel":null,"categories":["bigdata","ops"],"description":"","cover":"","readingTime":"5 min"},{"title":"postgresql入门","url":"/blog/2015/12/13/postgresql-start-guide/","date":"2015-12-13","dateLabel":"2015-12-13","updatedDate":null,"updatedLabel":null,"categories":["datastore"],"description":"","cover":"","readingTime":"4 min"},{"title":"搭梯笔记","url":"/blog/2015/11/22/gfw-ladder/","date":"2015-11-22","dateLabel":"2015-11-22","updatedDate":"2018-06-09","updatedLabel":"2018-06-08","categories":["network"],"description":"","cover":"","readingTime":"1 min"},{"title":"Nginx再折腾---统一访问入口","url":"/blog/2015/11/11/nginx-build-unified-access/","date":"2015-11-11","dateLabel":"2015-11-11","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"2 min"},{"title":"树莓派raspberrypi2简单使用 - respberrypi","url":"/blog/2015/11/04/raspberrypi-start-guide/","date":"2015-11-04","dateLabel":"2015-11-04","updatedDate":null,"updatedLabel":null,"categories":["hardware"],"description":"","cover":"","readingTime":"2 min"},{"title":"cacti批量添加配置","url":"/blog/2015/10/13/cacti-batch-adding-configurations/","date":"2015-10-13","dateLabel":"2015-10-13","updatedDate":null,"updatedLabel":null,"categories":["linux","bigdata","monitoring"],"description":"","cover":"","readingTime":"4 min"},{"title":"nagios监控主机","url":"/blog/2015/09/25/nagios-start-guide/","date":"2015-09-25","dateLabel":"2015-09-25","updatedDate":"2016-04-20","updatedLabel":"2016-04-20","categories":["monitoring"],"description":"","cover":"","readingTime":"8 min"},{"title":"cacti监控主机","url":"/blog/2015/09/22/cacti-start-guide/","date":"2015-09-22","dateLabel":"2015-09-22","updatedDate":null,"updatedLabel":null,"categories":["monitoring","datastore"],"description":"","cover":"","readingTime":"4 min"},{"title":"解决SecureCRT【zmodem transfer canceled by remote side】问题","url":"/blog/2015/09/21/solve-securecrt-zmodem-transfer-canceled-by-remote-side/","date":"2015-09-21","dateLabel":"2015-09-21","updatedDate":null,"updatedLabel":null,"categories":["dev","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"【linux 101 hacks】读后感","url":"/blog/2015/09/13/review-linux-101-hacks/","date":"2015-09-13","dateLabel":"2015-09-13","updatedDate":null,"updatedLabel":null,"categories":["linux","bigdata","dev","reading"],"description":"","cover":"","readingTime":"4 min"},{"title":"oozie start guide","url":"/blog/2015/09/08/oozie-start-guide/","date":"2015-09-08","dateLabel":"2015-09-08","updatedDate":null,"updatedLabel":null,"categories":["dev","bigdata"],"description":"","cover":"","readingTime":"3 min"},{"title":"安装http代理服务器squid","url":"/blog/2015/09/06/squid-http-proxy-server-install/","date":"2015-09-06","dateLabel":"2015-09-06","updatedDate":null,"updatedLabel":null,"categories":["network","ops"],"description":"","cover":"","readingTime":"1 min"},{"title":"supervisor安装配置","url":"/blog/2015/08/24/manual-install-supervisor/","date":"2015-08-24","dateLabel":"2015-08-24","updatedDate":"2017-08-14","updatedLabel":"2017-08-14","categories":["ops","bigdata"],"description":"","cover":"","readingTime":"6 min"},{"title":"logstash elasticsearch kibana日志采集查询系统搭建","url":"/blog/2015/08/21/logstash-elasticsearch-kibana-startguide/","date":"2015-08-21","dateLabel":"2015-08-21","updatedDate":null,"updatedLabel":null,"categories":["monitoring","datastore"],"description":"","cover":"","readingTime":"2 min"},{"title":"hadoop不同版本yarn和hdfs混搭,spark-yarn环境配置","url":"/blog/2015/06/10/hadoop-deploy-spark-diff-version-yarn-and-hdfs/","date":"2015-06-10","dateLabel":"2015-06-10","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"tachyon剖析","url":"/blog/2015/04/18/tachyon-deep-source/","date":"2015-04-18","dateLabel":"2015-04-18","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"Tachyon入门指南","url":"/blog/2015/04/15/tachyon-quickstart/","date":"2015-04-15","dateLabel":"2015-04-15","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"3 min"},{"title":"使用RamDisk来优化系统","url":"/blog/2015/04/12/optimize-system-ramdisk/","date":"2015-04-12","dateLabel":"2015-04-12","updatedDate":null,"updatedLabel":null,"categories":["ai","linux"],"description":"","cover":"","readingTime":"1 min"},{"title":"已有HDFS上部署yarn","url":"/blog/2015/03/25/deploy-separated-yarn-on-exists-hdfs-cluster/","date":"2015-03-25","dateLabel":"2015-03-25","updatedDate":null,"updatedLabel":null,"categories":["bigdata","ops"],"description":"","cover":"","readingTime":"5 min"},{"title":"hadoop distcp","url":"/blog/2015/03/13/hadoop-distcp/","date":"2015-03-13","dateLabel":"2015-03-13","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"4 min"},{"title":"Windows build hadoop-2.6","url":"/blog/2015/03/09/windows-build-hadoop-2-dot-6/","date":"2015-03-09","dateLabel":"2015-03-09","updatedDate":null,"updatedLabel":null,"categories":["bigdata","windows"],"description":"","cover":"","readingTime":"1 min"},{"title":"VMware-Centos6 build hadoop-2.6","url":"/blog/2015/03/08/vmware-build-hadoop2-dot-6/","date":"2015-03-08","dateLabel":"2015-03-08","updatedDate":"2016-04-02","updatedLabel":"2016-04-02","categories":["bigdata","ops","linux"],"description":"","cover":"","readingTime":"7 min"},{"title":"VMware共享目录","url":"/blog/2015/03/07/vmware-sharefolder/","date":"2015-03-07","dateLabel":"2015-03-07","updatedDate":null,"updatedLabel":null,"categories":["ops","dev"],"description":"","cover":"","readingTime":"1 min"},{"title":"开年2015","url":"/blog/2015/02/19/starting-2015-spring-festival/","date":"2015-02-19","dateLabel":"2015-02-18","updatedDate":null,"updatedLabel":null,"categories":["life"],"description":"","cover":"","readingTime":"1 min"},{"title":"学习btrace","url":"/blog/2015/02/06/start-btrace/","date":"2015-02-06","dateLabel":"2015-02-06","updatedDate":null,"updatedLabel":null,"categories":["monitoring","dev"],"description":"","cover":"","readingTime":"1 min"},{"title":"windows gif","url":"/blog/2015/02/04/windows-gif/","date":"2015-02-04","dateLabel":"2015-02-04","updatedDate":null,"updatedLabel":null,"categories":["windows","linux","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"build redis-2.8","url":"/blog/2015/01/22/build-redis/","date":"2015-01-22","dateLabel":"2015-01-22","updatedDate":null,"updatedLabel":null,"categories":["datastore"],"description":"","cover":"","readingTime":"4 min"},{"title":"kafka快速入门","url":"/blog/2015/01/08/kafka-guide/","date":"2015-01-08","dateLabel":"2015-01-08","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"redis维护","url":"/blog/2014/12/31/redis-operations/","date":"2014-12-31","dateLabel":"2014-12-31","updatedDate":null,"updatedLabel":null,"categories":["datastore"],"description":"","cover":"","readingTime":"2 min"},{"title":"Hadoop查看作业状态Rest接口","url":"/blog/2014/12/07/hadoop-mr-rest-api/","date":"2014-12-07","dateLabel":"2014-12-07","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"mysql分区","url":"/blog/2014/11/14/mysql-partition/","date":"2014-11-14","dateLabel":"2014-11-14","updatedDate":null,"updatedLabel":null,"categories":["datastore"],"description":"","cover":"","readingTime":"3 min"},{"title":"nginx服务配置","url":"/blog/2014/11/13/nginx-serving-static-content/","date":"2014-11-13","dateLabel":"2014-11-13","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"2 min"},{"title":"为github pages页面设置自定义域名","url":"/blog/2014/10/24/github-custom-domain/","date":"2014-10-24","dateLabel":"2014-10-23","updatedDate":null,"updatedLabel":null,"categories":["blog"],"description":"","cover":"","readingTime":"1 min"},{"title":"dnsmasq解决docker集群节点互通问题","url":"/blog/2014/10/18/docker-dnsmasq-handler-hosts-build-hadoop-cluster/","date":"2014-10-18","dateLabel":"2014-10-17","updatedDate":null,"updatedLabel":null,"categories":["ops","network"],"description":"","cover":"","readingTime":"3 min"},{"title":"编译/搭建Spark环境","url":"/blog/2014/10/16/spark-build-and-configuration/","date":"2014-10-16","dateLabel":"2014-10-16","updatedDate":"2016-01-11","updatedLabel":"2016-01-10","categories":["bigdata","dev"],"description":"","cover":"","readingTime":"9 min"},{"title":"[读码] Spark1.1.0前篇--代码统计导入Eclipse","url":"/blog/2014/10/12/spark-read-source-starter/","date":"2014-10-12","dateLabel":"2014-10-12","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"思考","url":"/blog/2014/10/07/thinking/","date":"2014-10-07","dateLabel":"2014-10-07","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"1 min"},{"title":"配置ssh登录docker-centos","url":"/blog/2014/09/30/docker-ssh-on-centos/","date":"2014-09-30","dateLabel":"2014-09-29","updatedDate":null,"updatedLabel":null,"categories":["ops","linux"],"description":"","cover":"","readingTime":"3 min"},{"title":"docker入门","url":"/blog/2014/09/27/docker-start-guide-on-centos/","date":"2014-09-27","dateLabel":"2014-09-27","updatedDate":null,"updatedLabel":null,"categories":["ops"],"description":"","cover":"","readingTime":"12 min"},{"title":"在windows开发测试mapreduce几种方式","url":"/blog/2014/09/17/windows-hadoop2-test-your-mapreduce-feature/","date":"2014-09-17","dateLabel":"2014-09-17","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"scala wordcount on hadoop2","url":"/blog/2014/09/12/scala-wordcount-on-hadoop/","date":"2014-09-12","dateLabel":"2014-09-11","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"5 min"},{"title":"【笔记】Beginning Scala(1)","url":"/blog/2014/09/08/note-beginning-scala-part1/","date":"2014-09-08","dateLabel":"2014-09-07","updatedDate":null,"updatedLabel":null,"categories":["bigdata","reading"],"description":"","cover":"","readingTime":"12 min"},{"title":"Expect-批量实现SSH无密钥登录","url":"/blog/2014/09/07/expect-automate-and-batch-config-ssh/","date":"2014-09-07","dateLabel":"2014-09-07","updatedDate":null,"updatedLabel":null,"categories":["bigdata","linux"],"description":"","cover":"","readingTime":"2 min"},{"title":"[读码] hadoop2 balancer磁盘空间平衡(下)","url":"/blog/2014/09/05/read-hadoop-balancer-source-part3/","date":"2014-09-05","dateLabel":"2014-09-05","updatedDate":null,"updatedLabel":null,"categories":["network","bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"[读码] hadoop2 balancer磁盘空间平衡(中)","url":"/blog/2014/09/05/read-hadoop-balancer-source-part2/","date":"2014-09-05","dateLabel":"2014-09-05","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"4 min"},{"title":"计算出从1到100之间所有奇数的平方之和","url":"/blog/2014/09/04/scala-quadratic-sum-of-odd-num-in-100/","date":"2014-09-04","dateLabel":"2014-09-04","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"scala shell #! 惊叹号井号","url":"/blog/2014/09/03/linux-shell-shebang-tanjinghao/","date":"2014-09-03","dateLabel":"2014-09-03","updatedDate":null,"updatedLabel":null,"categories":["bigdata","linux"],"description":"","cover":"","readingTime":"2 min"},{"title":"hadoop2 mapreduce输入输出压缩","url":"/blog/2014/09/01/hadoop2-mapreduce-compress/","date":"2014-09-01","dateLabel":"2014-09-01","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"用ADT调试Xamarin程序中的Java库","url":"/blog/2014/08/29/xamarin-application-use-adt-eclipse-debug-java-code/","date":"2014-08-29","dateLabel":"2014-08-29","updatedDate":null,"updatedLabel":null,"categories":["dev","mobile"],"description":"","cover":"","readingTime":"1 min"},{"title":"查找逐步定位Java程序OOM的异常实践","url":"/blog/2014/08/25/step-by-step-found-java-oom-error/","date":"2014-08-25","dateLabel":"2014-08-25","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"1 min"},{"title":"巧用Equals和Hashcode","url":"/blog/2014/08/20/magical-use-java-equals-hashcode/","date":"2014-08-20","dateLabel":"2014-08-20","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"1 min"},{"title":"[读码] hadoop2 balancer磁盘空间平衡(上)","url":"/blog/2014/08/06/read-hadoop-balancer-source-part1/","date":"2014-08-06","dateLabel":"2014-08-06","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"hadoop的datanode数据节点软/硬件配置应该一致","url":"/blog/2014/08/02/hadoop-datanode-config-should-equals/","date":"2014-08-02","dateLabel":"2014-08-02","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"3 min"},{"title":"hadoop2 snappy compress","url":"/blog/2014/07/30/hadoop2-snappy-compress/","date":"2014-07-30","dateLabel":"2014-07-29","updatedDate":"2016-01-10","updatedLabel":"2016-01-09","categories":["bigdata"],"description":"","cover":"","readingTime":"5 min"},{"title":"hadoop2 ShortCircuit local reading","url":"/blog/2014/07/29/hadoop2-use-shortcircuit-local-reading/","date":"2014-07-29","dateLabel":"2014-07-29","updatedDate":"2016-01-13","updatedLabel":"2016-01-13","categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"hadoop安全的关闭datanode节点","url":"/blog/2014/07/29/safely-remove-datanode/","date":"2014-07-29","dateLabel":"2014-07-29","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"[读读书]Redis入门指南","url":"/blog/2014/07/27/start-redis/","date":"2014-07-27","dateLabel":"2014-07-26","updatedDate":null,"updatedLabel":null,"categories":["datastore","reading"],"description":"","cover":"","readingTime":"8 min"},{"title":"win编译32位openjdk","url":"/blog/2014/07/21/build-openjdk/","date":"2014-07-21","dateLabel":"2014-07-21","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"1 min"},{"title":"install ganglia on Redhat5+","url":"/blog/2014/07/18/install-ganglia-on-redhat/","date":"2014-07-18","dateLabel":"2014-07-18","updatedDate":"2016-01-21","updatedLabel":"2016-01-21","categories":["monitoring","bigdata"],"description":"","cover":"","readingTime":"11 min"},{"title":"upgrade hive: 0.12.0 to 0.13.1","url":"/blog/2014/06/21/upgrade-hive/","date":"2014-06-21","dateLabel":"2014-06-20","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"5 min"},{"title":"tez编译及使用","url":"/blog/2014/06/18/hadoop-tez-firststep/","date":"2014-06-18","dateLabel":"2014-06-17","updatedDate":null,"updatedLabel":null,"categories":["bigdata","dev"],"description":"","cover":"","readingTime":"3 min"},{"title":"远程调试hadoop2以及错误处理方法","url":"/blog/2014/04/22/remote-debug-hadoop2/","date":"2014-04-22","dateLabel":"2014-04-21","updatedDate":null,"updatedLabel":null,"categories":["bigdata","dev"],"description":"","cover":"","readingTime":"4 min"},{"title":"hadoop2学习过程/资源","url":"/blog/2014/04/22/hadoop-category/","date":"2014-04-22","dateLabel":"2014-04-21","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"Windows下部署/配置/调试hadoop2","url":"/blog/2014/04/21/hadoop2-windows-startguide/","date":"2014-04-21","dateLabel":"2014-04-21","updatedDate":null,"updatedLabel":null,"categories":["bigdata","dev","ops","windows"],"description":"","cover":"","readingTime":"10 min"},{"title":"GIT操作记录手册","url":"/blog/2014/03/30/git-cheatsheet/","date":"2014-03-30","dateLabel":"2014-03-30","updatedDate":null,"updatedLabel":null,"categories":["linux"],"description":"","cover":"","readingTime":"10 min"},{"title":"Jekyll按照tag分页面","url":"/blog/2014/03/20/jekyll-tag-per-page/","date":"2014-03-20","dateLabel":"2014-03-19","updatedDate":null,"updatedLabel":null,"categories":["blog"],"description":"","cover":"","readingTime":"3 min"},{"title":"Jekyll页面添加编辑按钮","url":"/blog/2014/03/18/jekyll-edit-link-in-web-page/","date":"2014-03-18","dateLabel":"2014-03-17","updatedDate":null,"updatedLabel":null,"categories":["blog","linux","windows"],"description":"","cover":"","readingTime":"2 min"},{"title":"Jekyll页面实现上/下一篇文章导航","url":"/blog/2014/03/14/jekyll-page-implement-navigate/","date":"2014-03-14","dateLabel":"2014-03-14","updatedDate":null,"updatedLabel":null,"categories":["blog"],"description":"","cover":"","readingTime":"1 min"},{"title":"在windows操作系统安装jekyll服务","url":"/blog/2014/03/14/windows-install-jekyll/","date":"2014-03-14","dateLabel":"2014-03-13","updatedDate":null,"updatedLabel":null,"categories":["blog"],"description":"","cover":"","readingTime":"5 min"},{"title":"处理git冲突","url":"/blog/2013/05/27/handle-git-conflict/","date":"2014-03-14","dateLabel":"2014-03-13","updatedDate":null,"updatedLabel":null,"categories":["linux"],"description":"","cover":"","readingTime":"2 min"},{"title":"[Windows运行]快速打开程序","url":"/blog/2014/02/23/quickly-open-program-in-windows/","date":"2014-02-23","dateLabel":"2014-02-23","updatedDate":"2016-01-31","updatedLabel":"2016-01-30","categories":["windows","linux","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"maven合并打包依赖的git项目","url":"/blog/2014/02/19/maven-package-dependent-git-projects/","date":"2014-02-19","dateLabel":"2014-02-19","updatedDate":null,"updatedLabel":null,"categories":["dev","bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"cygwin兼容配置","url":"/blog/2013/11/24/cygwin-compatible-setting/","date":"2013-11-24","dateLabel":"2013-11-24","updatedDate":null,"updatedLabel":null,"categories":["linux","dev","windows","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"Git实现多地多版本协作","url":"/blog/2013/10/27/git-implement-multi-place-version-collaborate/","date":"2013-10-27","dateLabel":"2013-10-27","updatedDate":null,"updatedLabel":null,"categories":["dev","linux"],"description":"","cover":"","readingTime":"2 min"},{"title":"java反编译工具使用记录","url":"/blog/2013/10/24/java-decompiler-tools/","date":"2013-10-24","dateLabel":"2013-10-24","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"6 min"},{"title":"让敲Shell命令高效起来","url":"/blog/2013/09/19/let-shell-command-efficient/","date":"2013-09-19","dateLabel":"2013-09-19","updatedDate":"2024-01-13","updatedLabel":"2024-01-13","categories":["linux"],"description":"","cover":"","readingTime":"5 min"},{"title":"学习Linux资源","url":"/blog/2013/09/17/learn-linux-resources/","date":"2013-09-17","dateLabel":"2013-09-17","updatedDate":null,"updatedLabel":null,"categories":["linux","bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"【读读书】Java程序性能优化","url":"/blog/2013/08/21/Java-Performance-Tuning/","date":"2013-08-21","dateLabel":"2013-08-20","updatedDate":null,"updatedLabel":null,"categories":["dev","reading"],"description":"","cover":"","readingTime":"7 min"},{"title":"编写自己的Page(MarkDown/MD)","url":"/blog/2013/05/26/use-markdown/","date":"2013-05-26","dateLabel":"2013-05-26","updatedDate":null,"updatedLabel":null,"categories":["blog","linux"],"description":"","cover":"","readingTime":"2 min"},{"title":"使用Jekyll建立自己的博客","url":"/blog/2013/05/24/jekyll-create-my-blog/","date":"2013-05-24","dateLabel":"2013-05-24","updatedDate":null,"updatedLabel":null,"categories":["blog"],"description":"","cover":"","readingTime":"1 min"},{"title":"masters配置是用来启动hadoop1 secondarynamenode","url":"/blog/2013/03/30/masters-is-to-start-secondarynamenode/","date":"2013-03-30","dateLabel":"2013-03-30","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"Ant实现hadoop插件Run-on-Hadoop","url":"/blog/2013/03/27/run-on-hadoop-on-ant/","date":"2013-03-27","dateLabel":"2013-03-27","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"使用hadoop-eclipse-plugin插件","url":"/blog/2013/03/27/hadoop-eclipse-plugin-use/","date":"2013-03-27","dateLabel":"2013-03-26","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"windows配置hadoop伪分布式环境(续)","url":"/blog/2013/03/24/pseudo-distributed-hadoop-in-windows/","date":"2013-03-24","dateLabel":"2013-03-24","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"3 min"},{"title":"编译hadoop的jsp源码","url":"/blog/2013/03/15/compile-hadoop-source-and-modify-jsp/","date":"2013-03-15","dateLabel":"2013-03-15","updatedDate":null,"updatedLabel":null,"categories":["bigdata","dev"],"description":"","cover":"","readingTime":"1 min"},{"title":"快速搭建第二个hadoop分布式集群环境","url":"/blog/2013/03/02/quickly-build-a-second-hadoop-cluster/","date":"2013-03-02","dateLabel":"2013-03-01","updatedDate":null,"updatedLabel":null,"categories":["bigdata","ops"],"description":"","cover":"","readingTime":"3 min"},{"title":"top命令使用","url":"/blog/2013/02/26/linux-top-command-mannual/","date":"2013-02-26","dateLabel":"2013-02-25","updatedDate":null,"updatedLabel":null,"categories":["linux","bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"hadoop集群增加节点","url":"/blog/2013/02/22/hadoop-cluster-increases-nodes/","date":"2013-02-22","dateLabel":"2013-02-22","updatedDate":null,"updatedLabel":null,"categories":["bigdata","ops"],"description":"","cover":"","readingTime":"1 min"},{"title":"warproduct-OSGi应用发布到tomcat","url":"/blog/2013/01/31/osgi-applications-published-to-tomcat/","date":"2013-01-31","dateLabel":"2013-01-30","updatedDate":null,"updatedLabel":null,"categories":["dev","ops"],"description":"","cover":"","readingTime":"1 min"},{"title":"windows配置hadoop1的伪分布式环境","url":"/blog/2012/11/25/windows-install-pseudo-distributed-hadoop1/","date":"2012-11-25","dateLabel":"2012-11-25","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"2 min"},{"title":"hbase-0.94启动脚本在cygwin环境的BUG","url":"/blog/2012/11/25/hbase-script-bug-in-cygwin/","date":"2012-11-25","dateLabel":"2012-11-25","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"使用 Eclipse 远程调试 Java 应用程序","url":"/blog/2012/10/08/eclipse-remote-debugging-java-applications/","date":"2012-10-08","dateLabel":"2012-10-08","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"1 min"},{"title":"hadoop上建索引index的程序","url":"/blog/2012/10/01/index-built-on-hadoop-program/","date":"2012-10-01","dateLabel":"2012-10-01","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"5 min"},{"title":"使用hadoop编写mapreduce程序的注意点","url":"/blog/2012/09/27/notes-when-written-hadoop-mapreduce-program/","date":"2012-09-27","dateLabel":"2012-09-27","updatedDate":null,"updatedLabel":null,"categories":["bigdata"],"description":"","cover":"","readingTime":"1 min"},{"title":"Filter mapping url-pattern that excludes subdirectories","url":"/blog/2012/07/26/ssh-urlpattern-excludes-subdirectory/","date":"2012-07-26","dateLabel":"2012-07-26","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"2 min"},{"title":"Win7下安装Fedora(linux)","url":"/blog/2011/02/28/win7-install-fedora-linux/","date":"2011-02-28","dateLabel":"2011-02-28","updatedDate":null,"updatedLabel":null,"categories":["linux"],"description":"","cover":"","readingTime":"1 min"},{"title":"Tomcat列出服务器目录下的文件","url":"/blog/2010/05/18/tomcat-list-directory-files/","date":"2010-05-18","dateLabel":"2010-05-18","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"1 min"},{"title":"新的开始@Sohu","url":"/blog/2010/02/25/sohu-new-start/","date":"2010-02-25","dateLabel":"2010-02-25","updatedDate":null,"updatedLabel":null,"categories":["dev"],"description":"","cover":"","readingTime":"1 min"}]</script>
</section>
</main>
<footer class="mt-20 border-t border-line bg-surface-elevated/70">
<div class="site-shell py-12">
<div class="grid gap-10 md:grid-cols-[1.4fr_1fr_1fr]">
<div>
<p class="page-title text-2xl text-ink">Winse Blog</p>
<p class="mt-3 max-w-md text-sm leading-7 text-muted">走走停停都是风景, 熙熙攘攘都向最好, 忙忙碌碌都为明朝, 何畏之.</p>
</div>
<div>
<p class="section-label">Explore</p>
<ul class="mt-4 space-y-2 text-sm text-muted">
<li><a href="/" class="transition hover:text-ink">Latest posts</a></li>
<li><a href="/blog/archives/" class="transition hover:text-ink">Archives</a></li>
<li><a href="/atom.xml" class="transition hover:text-ink">RSS feed</a></li>
</ul>
</div>
<div>
<p class="section-label">Connect</p>
<ul class="mt-4 space-y-2 text-sm text-muted">
<li><a href="https://github.com/winse" target="_blank" rel="noopener" class="transition hover:text-ink">GitHub @winse</a></li>
<li><a href="mailto:winseliu@foxmail.com" class="transition hover:text-ink">winseliu@foxmail.com</a></li>
</ul>
</div>
</div>
<div class="mt-10 flex flex-col gap-2 border-t border-line pt-6 text-sm text-muted sm:flex-row sm:items-center sm:justify-between">
<p>© 2026 Winse Liu</p>
<p>Built with <a href="https://www.11ty.dev/" class="transition hover:text-ink">Eleventy</a> + Tailwind</p>
</div>
</div>
</footer>
<script src="/js/main.js" defer></script>
</body>
</html>