-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
232 lines (229 loc) · 54.2 KB
/
search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>CSS玻璃卡片悬停</title>
<url>/charlesleeblog/2023/02/27/CSS%E7%8E%BB%E7%92%83%E5%8D%A1%E7%89%87%E6%82%AC%E5%81%9C/</url>
<content><![CDATA[<p><img src="https://charleslee1227.oss-cn-beijing.aliyuncs.com/CSS%E7%8E%BB%E7%92%83%E5%8D%A1%E7%89%87%E6%82%AC%E5%81%9C.gif" alt="gif" loading="lazy" onerror='this.onerror=null;this.src="/charlesleeblog/img/404.jpg"'></p>
<p>刷抖音看到的一个玻璃卡片悬停效果,自己根据视频敲了一下</p>
<p>感兴趣的可以关注抖音<a href="https://www.douyin.com/user/MS4wLjABAAAAAdMBaT7cI1gx1Xv6HMVwKvy13YAhz3pqu364JxeOkG_GkNmiXtwM4n_cKtBQCetQ">前端小帅</a></p>
<p>其实都是一些基础的css样式,主要引用了一个三方的3D js库<a href="https://micku7zu.github.io/vanilla-tilt.js/">vanilla-tilt</a></p>
<p>由于官网的js文件下载速度在科学上网后依旧很慢,所以我将其放在了我的云oss上,可以<a href="https://charleslee1227.oss-cn-beijing.aliyuncs.com/vanilla-tilt.js">预览下载</a></p>
<p>话不多说,直接上代码</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="comment"><!-- body --></span></span><br><span class="line"><span class="tag"><<span class="name">div</span> <span class="attr">class</span>=<span class="string">"container"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">div</span> <span class="attr">class</span>=<span class="string">"card"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">div</span> <span class="attr">class</span>=<span class="string">"content"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">h2</span>></span>01<span class="tag"></<span class="name">h2</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">h3</span>></span>Card One<span class="tag"></<span class="name">h3</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">p</span>></span>Realistic glass card hover effect, realistic glass carc hover effect.<span class="tag"></<span class="name">p</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">a</span> <span class="attr">href</span>=<span class="string">"#"</span>></span>Read More<span class="tag"></<span class="name">a</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">div</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">div</span>></span></span><br><span class="line"></span><br><span class="line"> <span class="tag"><<span class="name">div</span> <span class="attr">class</span>=<span class="string">"card"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">div</span> <span class="attr">class</span>=<span class="string">"content"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">h2</span>></span>02<span class="tag"></<span class="name">h2</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">h3</span>></span>Card Two<span class="tag"></<span class="name">h3</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">p</span>></span>Realistic glass card hover effect, realistic glass carc hover effect.<span class="tag"></<span class="name">p</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">a</span> <span class="attr">href</span>=<span class="string">"#"</span>></span>Read More<span class="tag"></<span class="name">a</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">div</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">div</span>></span></span><br><span class="line"></span><br><span class="line"> <span class="tag"><<span class="name">div</span> <span class="attr">class</span>=<span class="string">"card"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">div</span> <span class="attr">class</span>=<span class="string">"content"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">h2</span>></span>03<span class="tag"></<span class="name">h2</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">h3</span>></span>Card Three<span class="tag"></<span class="name">h3</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">p</span>></span>Realistic glass card hover effect, realistic glass carc hover effect.<span class="tag"></<span class="name">p</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">a</span> <span class="attr">href</span>=<span class="string">"#"</span>></span>Read More<span class="tag"></<span class="name">a</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">div</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">div</span>></span></span><br><span class="line"><span class="tag"></<span class="name">div</span>></span></span><br></pre></td></tr></table></figure>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="comment"><!-- style --></span></span><br><span class="line"><span class="tag"><<span class="name">style</span>></span><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-tag">body</span> {</span></span><br><span class="line"><span class="language-css"> <span class="attribute">min-height</span>: <span class="number">100vh</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">display</span>: flex;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">justify-content</span>: center;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">align-items</span>: center;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">background-color</span>: <span class="number">#161626</span>;</span></span><br><span class="line"><span class="language-css">}</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.container</span> {</span></span><br><span class="line"><span class="language-css"> <span class="attribute">position</span>: relative;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">display</span>: flex;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">justify-content</span>: center;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">align-items</span>: center;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">flex-wrap</span>: wrap;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">z-index</span>: <span class="number">1</span>;</span></span><br><span class="line"><span class="language-css">}</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.container</span> <span class="selector-class">.card</span> {</span></span><br><span class="line"><span class="language-css"> <span class="attribute">position</span>: relative;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">width</span>: <span class="number">280px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">height</span>: <span class="number">400px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">background-color</span>: <span class="built_in">rgba</span>(<span class="number">255</span>, <span class="number">255</span>, <span class="number">255</span>, <span class="number">0.1</span>);</span></span><br><span class="line"><span class="language-css"> <span class="attribute">margin</span>: <span class="number">30px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">border-radius</span>: <span class="number">15px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">box-shadow</span>: <span class="number">20px</span> <span class="number">20px</span> <span class="number">50px</span> <span class="built_in">rgba</span>(<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0.5</span>);</span></span><br><span class="line"><span class="language-css"> <span class="attribute">overflow</span>: hidden;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">display</span>: flex;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">justify-content</span>: center;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">align-items</span>: center;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">border</span>: <span class="number">1px</span> solid <span class="built_in">rgba</span>(<span class="number">255</span>, <span class="number">255</span>, <span class="number">255</span>, <span class="number">0.1</span>);</span></span><br><span class="line"><span class="language-css"> backdrop-<span class="attribute">filter</span>: <span class="built_in">blur</span>(<span class="number">5px</span>);</span></span><br><span class="line"><span class="language-css">}</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.container</span> <span class="selector-class">.card</span> <span class="selector-class">.content</span> {</span></span><br><span class="line"><span class="language-css"> <span class="attribute">padding</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">text-align</span>: center;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">transform</span>: <span class="built_in">translateY</span>(<span class="number">100px</span>);</span></span><br><span class="line"><span class="language-css"> <span class="attribute">opacity</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">transition</span>: <span class="number">0.5s</span>;</span></span><br><span class="line"><span class="language-css">}</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.container</span> <span class="selector-class">.card</span><span class="selector-pseudo">:hover</span> <span class="selector-class">.content</span> {</span></span><br><span class="line"><span class="language-css"> <span class="attribute">transform</span>: <span class="built_in">translateY</span>(<span class="number">0</span>);</span></span><br><span class="line"><span class="language-css"> <span class="attribute">opacity</span>: <span class="number">1</span>;</span></span><br><span class="line"><span class="language-css">}</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.container</span> <span class="selector-class">.card</span> <span class="selector-class">.content</span> <span class="selector-tag">h2</span> {</span></span><br><span class="line"><span class="language-css"> <span class="attribute">position</span>: absolute;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">top</span>: -<span class="number">80px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">right</span>: <span class="number">25px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">font-size</span>: <span class="number">128px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">color</span>: <span class="built_in">rgba</span>(<span class="number">255</span>, <span class="number">255</span>, <span class="number">255</span>, <span class="number">0.05</span>);</span></span><br><span class="line"><span class="language-css">}</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.container</span> <span class="selector-class">.card</span> <span class="selector-class">.content</span> <span class="selector-tag">h3</span> {</span></span><br><span class="line"><span class="language-css"> <span class="attribute">font-size</span>: <span class="number">28px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">color</span>: <span class="number">#fff</span>;</span></span><br><span class="line"><span class="language-css">}</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.container</span> <span class="selector-class">.card</span> <span class="selector-class">.content</span> <span class="selector-tag">p</span> {</span></span><br><span class="line"><span class="language-css"> <span class="attribute">font-size</span>: <span class="number">16px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">color</span>: <span class="number">#fff</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">font-weight</span>: <span class="number">300</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">margin</span>: <span class="number">10px</span> <span class="number">0</span> <span class="number">15px</span> <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">}</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.container</span> <span class="selector-class">.card</span> <span class="selector-class">.content</span> <span class="selector-tag">a</span> {</span></span><br><span class="line"><span class="language-css"> <span class="attribute">position</span>: relative;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">display</span>: inline-block;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">padding</span>: <span class="number">8px</span> <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">margin-top</span>: <span class="number">15px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">background-color</span>: <span class="number">#fff</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">color</span>: <span class="number">#000</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">text-decoration</span>: none;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">border-radius</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">font-weight</span>: <span class="number">500</span>;</span></span><br><span class="line"><span class="language-css"> <span class="attribute">box-shadow</span>: <span class="number">0</span> <span class="number">5px</span> <span class="number">15px</span> <span class="built_in">rgba</span>(<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0.2</span>);</span></span><br><span class="line"><span class="language-css">}</span></span><br><span class="line"><span class="language-css"></span><span class="tag"></<span class="name">style</span>></span></span><br></pre></td></tr></table></figure>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="comment"><!-- js --></span></span><br><span class="line"><span class="tag"><<span class="name">script</span> <span class="attr">src</span>=<span class="string">"vanilla-tilt.js"</span>></span><span class="tag"></<span class="name">script</span>></span></span><br><span class="line"><span class="tag"><<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javaScript"</span>></span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript"> <span class="title class_">VanillaTilt</span>.<span class="title function_">init</span>(<span class="variable language_">document</span>.<span class="title function_">querySelectorAll</span>(<span class="string">".card"</span>), {</span></span><br><span class="line"><span class="language-javascript"> <span class="attr">max</span>: <span class="number">15</span>,</span></span><br><span class="line"><span class="language-javascript"> <span class="attr">speed</span>: <span class="number">400</span>,</span></span><br><span class="line"><span class="language-javascript"> <span class="attr">glare</span>: <span class="literal">true</span>,</span></span><br><span class="line"><span class="language-javascript"> <span class="string">"max-glare"</span>: <span class="number">1</span></span></span><br><span class="line"><span class="language-javascript"> })</span></span><br><span class="line"><span class="language-javascript"></span><span class="tag"></<span class="name">script</span>></span></span><br></pre></td></tr></table></figure>]]></content>
<categories>
<category>CSS</category>
</categories>
<tags>
<tag>html</tag>
<tag>css</tag>
</tags>
</entry>
<entry>
<title>Flutter Error Cannot run with sound null safety, because the following dependencies don‘t support</title>
<url>/charlesleeblog/2023/02/20/Flutter%20Error%20Cannot%20run%20with%20sound%20null%20safety,%20because%20the%20following%20dependencies%20don%E2%80%98t%20support/</url>
<content><![CDATA[<h1 id="问题记录"><a href="#问题记录" class="headerlink" title="问题记录"></a>问题记录</h1><p>我在我的Flutter项目中引入了第三方组件<a href="https://pub.dev/packages/awesome_dialog">Awesome_dialog</a></p>
<p>结果在运行时报错:</p>
<div style="color:red; border: 1px solid gray; padding: 5px">
Error: Cannot run with sound null safety, because the following dependencies
don't support null safety:
<ul>
<li>package:awesome_dialog</li>
<li>package:simple_animations</li>
<li>package:flare_flutter</li>
<li>package:supercharged</li>
<li>package:sa_v1_migration</li>
<li>package:flare_dart</li>
<li>package:supercharged_dart</div></li>
</ul>
<p>看字面意思像是说以下依赖包不安全</p>
<h1 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h1><p>在项目运行时加入<code>--no-sound-null-safety</code>参数,让其不监听安全性</p>
<p>但需要每次运行都手动加入该参数</p>
<p>如果是在IDEA中开发项目,可以编辑<code>main.dart</code>的启动参数,让其每次启动都自动加上该参数</p>
<p><img src="https://imgse.com/i/pSjCSw8" alt="jCSw8.jpg" loading="lazy" onerror='this.onerror=null;this.src="/charlesleeblog/img/404.jpg"'><br><img src="https://imgse.com/i/pSjCVO0" alt="jCVO0.jpg" loading="lazy" onerror='this.onerror=null;this.src="/charlesleeblog/img/404.jpg"'></p>
]]></content>
<categories>
<category>Exception记录</category>
</categories>
<tags>
<tag>Flutter</tag>
<tag>Exception</tag>
</tags>
</entry>
<entry>
<title>Flutter image_picker ios模拟器闪退问题</title>
<url>/charlesleeblog/2023/02/21/Flutter%20image_picker%20ios%E6%A8%A1%E6%8B%9F%E5%99%A8%E9%97%AA%E9%80%80%E9%97%AE%E9%A2%98/</url>
<content><![CDATA[<h2 id="问题记录"><a href="#问题记录" class="headerlink" title="问题记录"></a>问题记录</h2><p>上代码</p>
<figure class="highlight dart"><table><tr><td class="code"><pre><span class="line"><span class="keyword">void</span> _getImage() <span class="keyword">async</span> {</span><br><span class="line"> PickedFile pickedFile = <span class="keyword">await</span> picker.getImage(source: ImageSource.gallery);</span><br><span class="line"> setState(() {</span><br><span class="line"> image = File(pickedFile.path);</span><br><span class="line"> });</span><br><span class="line"> }</span><br></pre></td></tr></table></figure>
<p>这是一段我在注册时选择头像时<code>onTap</code>所调用的函数,起初一直在chrome上运行调试,所以没有去点击测试</p>
<p>然而后来在ios模拟器中运行的时候一点击App就闪退了</p>
<p>百度了一下是ios系统的权限问题,需要在ios的配置文件中增加对访问照片权限的原因描述</p>
<h2 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h2><p>打开<code>ios>Runner>info.plist</code>配置文件,加入以下参数</p>
<figure class="highlight xml"><table><tr><td class="code"><pre><span class="line"><span class="tag"><<span class="name">dict</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">key</span>></span>NSPhotoLibraryUsageDescription<span class="tag"></<span class="name">key</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">string</span>></span>获取您的图片权限以上传头像<span class="tag"></<span class="name">string</span>></span></span><br><span class="line"><span class="tag"></<span class="name">dict</span>></span></span><br></pre></td></tr></table></figure>
<p>xcode下视图<br><a href="https://imgse.com/i/pSj9GdS"><img src="https://s1.ax1x.com/2023/02/21/pSj9GdS.jpg" alt="pSj9GdS.jpg" loading="lazy" onerror='this.onerror=null;this.src="/charlesleeblog/img/404.jpg"'></a></p>
]]></content>
<categories>
<category>Exception记录</category>
</categories>
<tags>
<tag>flutter</tag>
<tag>exception</tag>
</tags>
</entry>
<entry>
<title>Hexo Centos7部署</title>
<url>/charlesleeblog/2022/08/08/Hexo%20Centos7%E9%83%A8%E7%BD%B2/</url>
<content><![CDATA[<h2 id="一、安装Node-js"><a href="#一、安装Node-js" class="headerlink" title="一、安装Node.js"></a>一、安装Node.js</h2><h3 id="使用EPEL安装"><a href="#使用EPEL安装" class="headerlink" title="使用EPEL安装"></a>使用EPEL安装</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 1.先确认系统是否已经安装epel-release包</span></span><br><span class="line"><span class="variable">$yum</span> info epel-release</span><br><span class="line"><span class="comment"># 2.若输出相关信息,则已安装,否则执行下面命令安装</span></span><br><span class="line"><span class="variable">$sudo</span> yum install epel-release</span><br><span class="line"><span class="comment"># 3.安装Node.js</span></span><br><span class="line"><span class="variable">$sudo</span> yum install nodejs</span><br><span class="line"><span class="comment"># 4.检验版本</span></span><br><span class="line"><span class="variable">$node</span> -v</span><br></pre></td></tr></table></figure>
<h2 id="二、安装git"><a href="#二、安装git" class="headerlink" title="二、安装git"></a>二、安装git</h2><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 1.卸载旧版本</span></span><br><span class="line"><span class="variable">$yum</span> remove git</span><br><span class="line"><span class="comment"># 2.安装yum源的Git版本</span></span><br><span class="line"><span class="variable">$yum</span> install -y git</span><br><span class="line"><span class="comment"># 3.查看版本</span></span><br><span class="line"><span class="variable">$git</span> version</span><br></pre></td></tr></table></figure>
<h3 id="配置全局环境变量"><a href="#配置全局环境变量" class="headerlink" title="配置全局环境变量"></a>配置全局环境变量</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 1. 编辑配置文件</span></span><br><span class="line"><span class="variable">$vim</span> /etc/profile</span><br><span class="line"><span class="comment"># 2. 在 /etc/profile 文件中末尾追加以下内容(相信你肯定已熟练掌握 Vim 使用啦)</span></span><br><span class="line"><span class="variable">$export</span> PATH=<span class="variable">$PATH</span>:/usr/local/git/bin</span><br><span class="line"><span class="comment"># 3. 回到终端, 刷新配置</span></span><br><span class="line"><span class="variable">$source</span> /etc/profile</span><br><span class="line"><span class="comment"># 4. 查看版本</span></span><br><span class="line"><span class="variable">$git</span> version </span><br></pre></td></tr></table></figure>
<h2 id="三、安装Hexo"><a href="#三、安装Hexo" class="headerlink" title="三、安装Hexo"></a>三、安装Hexo</h2><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 1.安装npm</span></span><br><span class="line"><span class="variable">$yum</span> install npm</span><br><span class="line"><span class="comment"># 2.安装hexo</span></span><br><span class="line"><span class="variable">$npm</span> install -g hexo-cli</span><br><span class="line"><span class="comment"># 3.创建hexo项目文件夹</span></span><br><span class="line"><span class="variable">$mkdir</span> /usr/local/hexo</span><br><span class="line"><span class="comment"># 4.hexo初始化</span></span><br><span class="line"><span class="variable">$cd</span> /usr/local/hexo</span><br><span class="line"><span class="variable">$npx</span> hexo init</span><br><span class="line"><span class="comment"># 5.启动服务</span></span><br><span class="line"><span class="variable">$npx</span> hexo server</span><br><span class="line"><span class="comment"># 后台启动</span></span><br><span class="line"><span class="variable">$nohup</span> npx hexo server > log.out 2>&1 &</span><br><span class="line"><span class="comment"># 后台启动后使用exit退出ssh</span></span><br></pre></td></tr></table></figure>
<h2 id="四、配置Hexo主题"><a href="#四、配置Hexo主题" class="headerlink" title="四、配置Hexo主题"></a>四、配置Hexo主题</h2><p><a href="https://async-docs.imalun.com/">Async主题</a> 点击下载 <a href="https://github.com/MaLuns/hexo-theme-async">GitHUb</a></p>
<ol>
<li>下载源码包至服务器</li>
<li>yum安装zip解压缩工具并解压<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="variable">$yum</span> install -y zip unzip</span><br><span class="line"><span class="variable">$unzip</span> -d /usr/local/hexo/themes async.zip</span><br></pre></td></tr></table></figure></li>
<li>npm安装主题必须的组件<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="variable">$npm</span> install --save hexo-theme-async hexo-renderer-less hexo-renderer-ejs</span><br></pre></td></tr></table></figure></li>
<li>修改hexo目录下的_config.yml,将 <code>theme: landscape</code> 修改为 <code>theme: async</code></li>
<li>重启hexo服务</li>
</ol>
]]></content>
<categories>
<category>安装部署</category>
</categories>
<tags>
<tag>hexo</tag>
<tag>linux</tag>
<tag>centos</tag>
</tags>
</entry>
<entry>
<title>Hexo部署Github空白页问题</title>
<url>/charlesleeblog/2022/12/30/Hexo%E9%83%A8%E7%BD%B2Github%E7%A9%BA%E7%99%BD%E9%A1%B5%E9%97%AE%E9%A2%98/</url>
<content><![CDATA[<h2 id="记录一下Hexo部署到Github-pages访问页面显示空白问题"><a href="#记录一下Hexo部署到Github-pages访问页面显示空白问题" class="headerlink" title="记录一下Hexo部署到Github pages访问页面显示空白问题"></a>记录一下Hexo部署到Github pages访问页面显示空白问题</h2><p>在服务器上安装部署Hexo后,访问没问题,然后偶然看到有博主的网站域名是github.io结尾的,于是在一番探索下尝试将静态文件部署到github pages进行托管,结果在访问时确实空白页面,百度之后大多数都是说index.html是空白的,但我的index文件确实是有内容的,但依旧是空白显示,我也尝试将主题切换为原始<code>landscape</code> 主题,但并没有任何作用,最后看到有说是node版本问题,我的Node版本是v16.18.1,在一番百度下大概率是因为node版本过高的原因</p>
<h3 id="卸载npm"><a href="#卸载npm" class="headerlink" title="卸载npm"></a>卸载npm</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">sudo npm uninstall npm -g</span><br></pre></td></tr></table></figure>
<h3 id="卸载node"><a href="#卸载node" class="headerlink" title="卸载node"></a>卸载node</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">yum remove nodejs npm -y</span><br></pre></td></tr></table></figure>
<p>看看是否有残留<br>进入 /usr/local/lib 删除所有 node 和 node_modules文件夹</p>
<p>进入 /usr/local/include 删除所有 node 和 node_modules 文件夹</p>
<p>进入 /usr/local/bin 删除 node 的可执行文件</p>
<h3 id="安装新版本node"><a href="#安装新版本node" class="headerlink" title="安装新版本node"></a>安装新版本node</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">curl -sL https://rpm.nodesource.com/setup_12.x | bash -</span><br></pre></td></tr></table></figure>
<p>我需要的是nodejs12.x的版本,所以这里是setup_12.x</p>
<p>最后执行安装命令</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">sudo yum -y install nodejs</span><br><span class="line"><span class="comment"># 查看node版本</span></span><br><span class="line">node -v</span><br><span class="line">V12.22.12</span><br></pre></td></tr></table></figure>
<h3 id="安装依赖"><a href="#安装依赖" class="headerlink" title="安装依赖"></a>安装依赖</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">npm install</span><br><span class="line"><span class="comment"># 由于主题需要,需安装hexo-renderer-less hexo-renderer-ejs</span></span><br><span class="line">npm install hexo-renderer-less hexo-renderer-ejs --save</span><br><span class="line"><span class="comment"># 安装Hexo部署插件</span></span><br><span class="line">npm install hexo-deployer-git --save</span><br></pre></td></tr></table></figure>
<h3 id=""><a href="#" class="headerlink" title=""></a></h3><h3 id="配置部署信息"><a href="#配置部署信息" class="headerlink" title="配置部署信息"></a>配置部署信息</h3><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 编辑_config.yml的deploy参数</span></span><br><span class="line"><span class="attr">deploy:</span></span><br><span class="line"> <span class="attr">type:</span> <span class="string">git</span></span><br><span class="line"> <span class="attr">repo:</span> <span class="string">https://github.com/xxx/xxx.git</span></span><br><span class="line"> <span class="attr">branch:</span> <span class="string">master</span></span><br></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 部署</span></span><br><span class="line">npx hexo clean</span><br><span class="line">npx hexo generate</span><br><span class="line">npx hexo deploy</span><br></pre></td></tr></table></figure>
<p><font size=5 color=red><b>以上都没有用!!!</b></font></p>
<p><font size=5 color=red><b>以上都没有用!!!</b></font></p>
<p><font size=5 color=red><b>以上都没有用!!!</b></font></p>
<p>真正的问题在我打开控制台后才发现所有的静态资源文件都是NOT_FOUND</p>
<p>修改<code>_config.yml</code>的<code>url</code>和<code>root</code>参数</p>
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">url:</span> <span class="string">https://chaflee.github.io/YourProjectName</span></span><br><span class="line"><span class="attr">root:</span> <span class="string">/YourProjectName/</span></span><br></pre></td></tr></table></figure>
<p>重新生成文件部署</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">npx hexo clean && npx hexo g -d</span><br></pre></td></tr></table></figure>
<p>访问<a href="https://chaflee.github.io/YourProjectName/">https://chaflee.github.io/YourProjectName/</a></p>
<p><font color=green size=5><b>成功!!!</b></font></p>
<h2 id="以下是过程中的一些问题记录,虽然和这次问题可能没多大关系了😀"><a href="#以下是过程中的一些问题记录,虽然和这次问题可能没多大关系了😀" class="headerlink" title="以下是过程中的一些问题记录,虽然和这次问题可能没多大关系了😀"></a>以下是过程中的一些问题记录,虽然和这次问题可能没多大关系了😀</h2><ol>
<li><p><code>npm install</code> 时提示以下信息</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):</span><br><span class="line">npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform <span class="keyword">for</span> [email protected]: wanted {<span class="string">"os"</span>:<span class="string">"darwin"</span>,<span class="string">"arch"</span>:<span class="string">"any"</span>} (current: {<span class="string">"os"</span>:<span class="string">"linux"</span>,<span class="string">"arch"</span>:<span class="string">"x64"</span>})</span><br></pre></td></tr></table></figure>
<p>只需在命令后加 <code>--no-optional</code> 参数即可</p>
</li>
<li><p>安装nodejs-v12版本后,执行 <code>npx hexo clean</code> 时报错</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">INFO Validating config</span><br><span class="line">ERROR {</span><br><span class="line"> err: /usr/local/hexo/themes/async/scripts/helper/tag.js:21</span><br><span class="line"> const <span class="built_in">type</span> = hexo.theme.config?.assets?.icons?.<span class="built_in">type</span> || <span class="string">'font'</span></span><br><span class="line"> ^</span><br><span class="line"> </span><br><span class="line"> SyntaxError: Unexpected token <span class="string">'.'</span></span><br><span class="line"> at new Script (vm.js:88:7)</span><br><span class="line"> at createScript (vm.js:261:10)</span><br><span class="line"> at runInThisContext (vm.js:309:10)</span><br><span class="line"> at /usr/local/hexo/node_modules/hexo/lib/hexo/index.js:303:18</span><br><span class="line"> at tryCatcher (/usr/local/hexo/node_modules/bluebird/js/release/util.js:16:23)</span><br><span class="line"> at Promise._settlePromiseFromHandler (/usr/local/hexo/node_modules/bluebird/js/release/promise.js:547:31)</span><br><span class="line"> at Promise._settlePromise (/usr/local/hexo/node_modules/bluebird/js/release/promise.js:604:18)</span><br><span class="line"> at Promise._settlePromise0 (/usr/local/hexo/node_modules/bluebird/js/release/promise.js:649:10)</span><br><span class="line"> at Promise._settlePromises (/usr/local/hexo/node_modules/bluebird/js/release/promise.js:729:18)</span><br><span class="line"> at _drainQueueStep (/usr/local/hexo/node_modules/bluebird/js/release/async.js:93:12)</span><br><span class="line"> at _drainQueue (/usr/local/hexo/node_modules/bluebird/js/release/async.js:86:9)</span><br><span class="line"> at Async._drainQueues (/usr/local/hexo/node_modules/bluebird/js/release/async.js:102:5)</span><br><span class="line"> at Immediate.Async.drainQueues [as _onImmediate] (/usr/local/hexo/node_modules/bluebird/js/release/async.js:15:14)</span><br><span class="line"> at processImmediate (internal/timers.js:461:21)</span><br><span class="line">} Script load failed: %s themes/async/scripts/helper/tag.js</span><br></pre></td></tr></table></figure>
<p>原因就是v12版本的node也不兼容😅</p>
</li>
</ol>
<p>但在我重新安装其他版本node时,执行切换node源版本命令时,出现一直还在重新安装v12版本且安装失败的错误,可以尝试清除一下yum源 <code>yum clean all</code> ,再尝试重新安装</p>
]]></content>
<categories>
<category>安装部署</category>
</categories>
<tags>
<tag>hexo</tag>
<tag>linux</tag>
<tag>centos</tag>
</tags>
</entry>
<entry>
<title>Python使用cx_Oracle插入oracle数据库ORA-01036: illegal variable name/number</title>
<url>/charlesleeblog/2023/03/22/PythonxOracle/</url>
<content><![CDATA[<h1 id="Python使用cx-Oracle插入oracle数据库ORA-01036-illegal-variable-name-number"><a href="#Python使用cx-Oracle插入oracle数据库ORA-01036-illegal-variable-name-number" class="headerlink" title="Python使用cx_Oracle插入oracle数据库ORA-01036: illegal variable name/number"></a>Python使用cx_Oracle插入oracle数据库ORA-01036: illegal variable name/number</h1><figure class="highlight python"><table><tr><td class="code"><pre><span class="line">row = (a,) + (b,)</span><br><span class="line"><span class="built_in">print</span>(row)</span><br><span class="line">sql_insert1=<span class="string">'insert into test (a,b) values (%s, %s)'</span> </span><br><span class="line">cur1.execute(sql_insert1,row)</span><br></pre></td></tr></table></figure>
<p>python在oracle执行这个报错,使用了tuple插入数据,后来发现应该写成:1,:2的格式:</p>
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line">sql_insert1=<span class="string">'insert into test(a,b) values (:1, :2)'</span></span><br></pre></td></tr></table></figure>]]></content>
<categories>
<category>Exception记录</category>
</categories>
<tags>
<tag>oracle</tag>
</tags>
</entry>
<entry>
<title>Shell数组添加元素</title>
<url>/charlesleeblog/2023/03/01/Shell%20%E6%95%B0%E7%BB%84%E6%B7%BB%E5%8A%A0%E5%85%83%E7%B4%A0/</url>
<content><![CDATA[<p>在Shell中,数组没有追加新元素的函数,只能通过下标来赋值</p>
<p>所以可以通过获取数组的当前长度<code>${#variable[*]}</code>作为其下标来赋值,以达到添加新元素的效果</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta prompt_">#</span><span class="language-bash">!/bin/bash</span></span><br><span class="line"></span><br><span class="line">a="a"</span><br><span class="line">b="b"</span><br><span class="line">c="c"</span><br><span class="line"></span><br><span class="line">array=()</span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_">array[$</span><span class="language-bash">{<span class="comment">#array[*]}]=a</span></span></span><br><span class="line"><span class="meta prompt_">array[$</span><span class="language-bash">{<span class="comment">#array[*]}]=b</span></span></span><br><span class="line"><span class="meta prompt_">array[$</span><span class="language-bash">{<span class="comment">#array[*]}]=c</span></span></span><br><span class="line"></span><br><span class="line">echo array: ${array[*]}</span><br></pre></td></tr></table></figure>
<p>输出结果</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ <span class="built_in">chmod</span> 777 array.sh</span><br><span class="line">$ ./array.sh</span><br><span class="line">array: a b c</span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>技术随笔</category>
</categories>
<tags>
<tag>Shell</tag>
<tag>Linux</tag>
</tags>
</entry>
<entry>
<title>Vim配置</title>
<url>/charlesleeblog/2022/08/20/Vim%E9%85%8D%E7%BD%AE/</url>
<content><![CDATA[<h3 id="编辑VIM配置文件"><a href="#编辑VIM配置文件" class="headerlink" title="编辑VIM配置文件"></a>编辑VIM配置文件</h3><h4 id="Mac"><a href="#Mac" class="headerlink" title="Mac"></a>Mac</h4><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cp</span> /usr/share/vim/vimrc ~/.vimrc</span><br><span class="line">vim ~/.vimrc</span><br></pre></td></tr></table></figure>
<h4 id="LINUX"><a href="#LINUX" class="headerlink" title="LINUX"></a>LINUX</h4><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">vim /etc/vimrc</span><br></pre></td></tr></table></figure>
<h3 id="配置参数"><a href="#配置参数" class="headerlink" title="配置参数"></a>配置参数</h3><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">colorscheme default " 设置颜色主题</span><br><span class="line">syntax on " 语法高亮</span><br><span class="line">filetype on " 检测文件的类型</span><br><span class="line">set number " 显示行号</span><br><span class="line">set cursorline " 用浅色高亮当前行</span><br><span class="line">"autocmd InsertLeave * se nocul</span><br><span class="line">"autocmd InsertEnter * se cul</span><br><span class="line">set ruler " 在编辑过程中,在右下角显示光标位置的状态行</span><br><span class="line">set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)</span><br><span class="line">set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\</span><br><span class="line"> " 设置在状态行显示的信息</span><br><span class="line">set tabstop=4 " Tab键的宽度</span><br><span class="line">set softtabstop=4</span><br><span class="line">set shiftwidth=4 " 统一缩进为4</span><br><span class="line">set autoindent " vim使用自动对齐,也就是把当前行的对齐格式应用到下一行(自动缩进)</span><br><span class="line">set cindent " (cindent是特别针对 C语言语法自动缩进)</span><br><span class="line">set smartindent " 依据上面的对齐格式,智能的选择对齐方式,对于类似C语言编写上有用</span><br><span class="line">set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离</span><br><span class="line">set incsearch " 输入搜索内容时就显示搜索结果</span><br><span class="line">set hlsearch " 搜索时高亮显示被找到的文本</span><br><span class="line">set foldmethod=indent " 设置缩进折叠</span><br><span class="line">set foldlevel=99 " 设置折叠层数</span><br><span class="line">nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR></span><br><span class="line"> " 用空格键来开关折叠</span><br><span class="line">" 自动跳转到上次退出的位置</span><br><span class="line">if has("autocmd")</span><br><span class="line"> au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif</span><br><span class="line">endif</span><br></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 按Esc退出到命令模式</span></span><br><span class="line">:wq! <span class="comment"># 退出保存配置</span></span><br><span class="line"><span class="comment"># 刷新修改的配置</span></span><br><span class="line"><span class="built_in">source</span> /etc/vimrc</span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>技术随笔</category>
</categories>
<tags>
<tag>linux</tag>
<tag>vim</tag>
</tags>
</entry>
<entry>
<title>若依ExcelUtil(poi)增加锁定列标识</title>
<url>/charlesleeblog/2023/02/28/%E8%8B%A5%E4%BE%9DExcelUtil%E5%A2%9E%E5%8A%A0%E9%94%81%E5%AE%9A%E5%88%97%E6%A0%87%E8%AF%86/</url>
<content><![CDATA[<p>最近碰到一个批量导入解析数据的需求,需求是导出一份价格数据Excel模板,在填写相关费用字段后导入系统进行更新操作</p>
<p>用若依自带的<code>@Excel</code>注解基本可以实现大多数功能,但因为导出的数据中有一个主键ID字段,后端需要根据此字段进行数据更新操作,所以得保证该数据不会发生变化,当然在正常情况下肯定不会有什么问题,就怕用户误点,所以我想锁定不需要变动的列</p>
<p>在百度后看到<code>poi</code>的<code>sheet</code>有一个设置表保护的属性</p>
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="type">Sheet</span> <span class="variable">sheet</span> <span class="operator">=</span> wb.createSheet();</span><br><span class="line"><span class="comment">// 设置表保护,密码为pwd</span></span><br><span class="line">sheet.protectSheet(<span class="string">"pwd"</span>);</span><br></pre></td></tr></table></figure>
<p>但是该属性是在初始化创建sheet时添加的,意味着会全表锁定</p>
<p>于是我在<code>@Excel</code>注解中加入了锁定标识字段</p>
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">isLocked</span><span class="params">()</span> <span class="keyword">default</span> <span class="literal">false</span>;</span><br></pre></td></tr></table></figure>
<p>在阅读若依的<code>ExcelUtil</code>后我决定在<code>setDataValidation</code>方法中加入对<code>isLocked</code>的判断</p>
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 因为开启了全表锁定,所以该判断的目的是给isLocked = false的列解锁</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">if</span> (!attr.isLocked()){</span><br><span class="line"> <span class="comment">// 获取列样式</span></span><br><span class="line"> <span class="type">CellStyle</span> <span class="variable">columnStyle</span> <span class="operator">=</span> sheet.getColumnStyle(column);</span><br><span class="line"> <span class="comment">// 设置该列解锁</span></span><br><span class="line"> columnStyle.setLocked(<span class="literal">false</span>);</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<p>但在测试后发现导出的数据依旧是全表锁定的状态</p>
<p>然后继续向上探索,发现了创建sheet表<code>createSheet()</code>方法其中的创建样式的<code>createStyles()</code></p>
<p>其中的这段代码令我大为不解(主要是水平不够)</p>
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line">style = wb.createCellStyle();</span><br><span class="line">style.cloneStyleFrom(styles.get(<span class="string">"data"</span>));</span><br><span class="line">style.setAlignment(HorizontalAlignment.LEFT);</span><br><span class="line">styles.put(<span class="string">"data1"</span>, style);</span><br><span class="line"></span><br><span class="line">style = wb.createCellStyle();</span><br><span class="line">style.cloneStyleFrom(styles.get(<span class="string">"data"</span>));</span><br><span class="line">style.setAlignment(HorizontalAlignment.CENTER);</span><br><span class="line">styles.put(<span class="string">"data2"</span>, style);</span><br><span class="line"></span><br><span class="line">style = wb.createCellStyle();</span><br><span class="line">style.cloneStyleFrom(styles.get(<span class="string">"data"</span>));</span><br><span class="line">style.setAlignment(HorizontalAlignment.RIGHT);</span><br><span class="line">styles.put(<span class="string">"data3"</span>, style);</span><br></pre></td></tr></table></figure>
<p>明明在上面已经创建了<code>data</code>的样式,为什么还需要在下面根据<code>Align</code>属性分别向<code>styles</code>中添加 <code>data1</code>、<code>data2</code>、<code>data3</code>的样式</p>
<p>最后在<code>exportExcel() > fillExcelData() > addCell()</code>中找到了用处</p>
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line">cell = row.createCell(column);</span><br><span class="line"><span class="type">int</span> <span class="variable">align</span> <span class="operator">=</span> attr.align().value();</span><br><span class="line"><span class="type">CellStyle</span> <span class="variable">style</span> <span class="operator">=</span> styles.get(<span class="string">"data"</span> + (align >= <span class="number">1</span> && align <= <span class="number">3</span> ? align : <span class="string">""</span>));</span><br><span class="line">cell.setCellStyle(style);</span><br></pre></td></tr></table></figure>
<p>我的猜想:在创建sheet后<code>Align</code>属性是不会再发生变化的,所以才需要将各种对齐方式的<code>style</code>初始化好,方便后续根据<code>@Excel</code>中的<code>Align</code>属性判断需要哪个<code>data</code>样式</p>
<p>顺着这个思路,我将<code>isLocked</code>属性也加入到初始创建<code>sheet</code>中</p>
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line">style = wb.createCellStyle();</span><br><span class="line">style.cloneStyleFrom(styles.get(<span class="string">"data"</span>));</span><br><span class="line">style.setLocked(<span class="literal">false</span>);</span><br><span class="line">styles.put(<span class="string">"data-unlock"</span>, style);</span><br><span class="line"></span><br><span class="line">style = wb.createCellStyle();</span><br><span class="line">style.cloneStyleFrom(styles.get(<span class="string">"data"</span>));</span><br><span class="line">style.setAlignment(HorizontalAlignment.LEFT);</span><br><span class="line">style.setLocked(<span class="literal">false</span>);</span><br><span class="line">styles.put(<span class="string">"data1-unlock"</span>, style);</span><br><span class="line"></span><br><span class="line">style = wb.createCellStyle();</span><br><span class="line">style.cloneStyleFrom(styles.get(<span class="string">"data"</span>));</span><br><span class="line">style.setAlignment(HorizontalAlignment.CENTER);</span><br><span class="line">style.setLocked(<span class="literal">false</span>);</span><br><span class="line">styles.put(<span class="string">"data2-unlock"</span>, style);</span><br><span class="line"></span><br><span class="line">style = wb.createCellStyle();</span><br><span class="line">style.cloneStyleFrom(styles.get(<span class="string">"data"</span>));</span><br><span class="line">style.setAlignment(HorizontalAlignment.RIGHT);</span><br><span class="line">style.setLocked(<span class="literal">false</span>);</span><br><span class="line">styles.put(<span class="string">"data3-unlock"</span>, style);</span><br></pre></td></tr></table></figure>
<p>修改<code>addCell()</code>中的条件判断</p>
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="type">CellStyle</span> <span class="variable">style</span> <span class="operator">=</span> styles.get(<span class="string">"data"</span> + (align >= <span class="number">1</span> && align <= <span class="number">3</span> ? align : <span class="string">""</span>) + (attr.isLocked() ? <span class="string">""</span> : <span class="string">"-unlock"</span>));</span><br></pre></td></tr></table></figure>
<p>最后测试结果:成功!!!</p>
<p>最终效果</p>
<p>ID列锁定<br><img src="https://charleslee1227.oss-cn-beijing.aliyuncs.com/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20230228140826.png" alt="img" loading="lazy" onerror='this.onerror=null;this.src="/charlesleeblog/img/404.jpg"'><br>费用列正常输入<br><img src="https://charleslee1227.oss-cn-beijing.aliyuncs.com/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20230228140843.png" alt="img" loading="lazy" onerror='this.onerror=null;this.src="/charlesleeblog/img/404.jpg"'></p>
]]></content>
<categories>
<category>技术随笔</category>
</categories>
<tags>
<tag>java</tag>
<tag>若依</tag>
<tag>poi</tag>
</tags>
</entry>
</search>