-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsearch.xml
More file actions
982 lines (982 loc) · 120 KB
/
Copy pathsearch.xml
File metadata and controls
982 lines (982 loc) · 120 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
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>AI绘画拉取模型失败,DOS开启代理</title>
<url>/2024/04/02/AI%E7%BB%98%E7%94%BB%E6%8B%89%E5%8F%96%E6%A8%A1%E5%9E%8B%E5%A4%B1%E8%B4%A5%EF%BC%8CDOS%E5%BC%80%E5%90%AF%E4%BB%A3%E7%90%86/</url>
<content><![CDATA[<blockquote>
<p>我用了这么久的代理第一次知道DOS里面要开代理,惭愧惭愧。在我远程拉取模型的时候,挂科学也一直失败。在网上找报错找了很长时间没找到,最后经过一位群友的提示下,才知道问题出在DOS代理上面。</p>
<p>直接看文章第一部分就行,要是直接tun不行,再看下面的</p>
</blockquote>
<h1 id="直接开启tun"><a href="#直接开启tun" class="headerlink" title="直接开启tun"></a>直接开启tun</h1><p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111827992.png" alt="img"></p>
<blockquote>
<p>这个是V2的开启方法</p>
</blockquote>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111827993.png" alt="img"></p>
<p>测试的时候发现一个问题,开启后不会立马生效需要等个十几秒左右,有可能是系统缓存没刷新<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111827994.png" alt="img"></p>
<h2 id="检查代理"><a href="#检查代理" class="headerlink" title="检查代理"></a>检查代理</h2><p>测试的时候<strong>不要</strong>直接ping,ping不走http。直接用curl。</p>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">curl -vv www.google.com</span><br></pre></td></tr></table></figure>
<h1 id="Windows代理配置"><a href="#Windows代理配置" class="headerlink" title="Windows代理配置"></a>Windows代理配置</h1><p>单击「开始」,然后在搜索程序和文件框中键入 cmd。<br>在程序列表中右键单击 cmd.exe,然后单击以<strong>管理员身份运行</strong>。<br>键入命令 <strong>netsh winhttp set proxy host:port</strong> 设置代理,由于本机有运行 clash,所以这里设置代理为 127.0.0.1:7890,当然其他软件也有这个功能,自行摸索。</p>
<h2 id="使用winhttp设置代理"><a href="#使用winhttp设置代理" class="headerlink" title="使用winhttp设置代理"></a>使用winhttp设置代理</h2><p>根据测试这种方法好像不太行</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111827995.png" alt="img"></p>
<h3 id="代理设置:"><a href="#代理设置:" class="headerlink" title="代理设置:"></a>代理设置:</h3><figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">netsh winhttp <span class="built_in">set</span> proxy <span class="number">127</span>.<span class="number">0</span>.<span class="number">0</span>.<span class="number">1</span>:<span class="number">7897</span></span><br></pre></td></tr></table></figure>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">C:\WINDOWS\system32>netsh winhttp set proxy 127.0.0.1:7897</span><br><span class="line"></span><br><span class="line">当前的 WinHTTP 代理服务器设置:</span><br><span class="line"></span><br><span class="line"> 代理服务器: 127.0.0.1:7897</span><br><span class="line"> 绕过列表 : (无)</span><br><span class="line"></span><br><span class="line">C:\WINDOWS\system32></span><br></pre></td></tr></table></figure>
<h3 id="查看代理:"><a href="#查看代理:" class="headerlink" title="查看代理:"></a>查看代理:</h3><figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">netsh winhttp show proxy</span><br></pre></td></tr></table></figure>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line"><span class="function">C:\<span class="title">Users</span>\<span class="title">xisoul</span>><span class="title">netsh</span> <span class="title">winhttp</span> <span class="title">show</span> <span class="title">proxy</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">当前的 <span class="title">WinHTTP</span> 代理服务器设置:</span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"> 代理服务器: 127.0.0.1:7897</span></span><br><span class="line"><span class="function"> 绕过列表 : (无)</span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"><span class="title">C</span>:\<span class="title">Users</span>\<span class="title">xisoul</span>></span></span><br></pre></td></tr></table></figure>
<h3 id="取消代理"><a href="#取消代理" class="headerlink" title="取消代理"></a>取消代理</h3><figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">netsh winhttp reset proxy</span><br></pre></td></tr></table></figure>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line"><span class="function">C:\<span class="title">WINDOWS</span>\<span class="title">system32</span>><span class="title">netsh</span> <span class="title">winhttp</span> <span class="title">reset</span> <span class="title">proxy</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">当前的 <span class="title">WinHTTP</span> 代理服务器设置:</span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"> 直接访问(没有代理服务器)。</span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"><span class="title">C</span>:\<span class="title">WINDOWS</span>\<span class="title">system32</span>></span></span><br></pre></td></tr></table></figure>
<h2 id="使用环境变量直接用set"><a href="#使用环境变量直接用set" class="headerlink" title="使用环境变量直接用set"></a>使用环境变量直接用set</h2><p>这种方法我也测试了,确实是代理了,但是跑不通。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111827996.png" alt="img"></p>
<p>注意不要直接在clash里面复制命令,因为那玩意复制了后面有空格</p>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line"><span class="built_in">set</span> http_proxy=http://<span class="number">127</span>.<span class="number">0</span>.<span class="number">0</span>.<span class="number">1</span>:<span class="number">7897</span></span><br><span class="line"><span class="built_in">set</span> https_proxy=http://<span class="number">127</span>.<span class="number">0</span>.<span class="number">0</span>.<span class="number">1</span>:<span class="number">7897</span></span><br></pre></td></tr></table></figure>
<p>或者</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">set all_proxy=http://127.0.0.1:7897</span><br></pre></td></tr></table></figure>
<p>查看环境变量 直接cmd里面输入 <strong>set</strong> 在里面就能看到我们刚刚设置的代理了</p>
<p><strong>电脑重启之后还需要重新配置,set是临时变量</strong></p>
]]></content>
<tags>
<tag>-解决的问题</tag>
</tags>
</entry>
<entry>
<title>1panel搭建halo+alist+兰空图床</title>
<url>/2024/07/04/1panel%E6%90%AD%E5%BB%BAhalo-alist-%E5%85%B0%E7%A9%BA%E5%9B%BE%E5%BA%8A/</url>
<content><![CDATA[<blockquote>
<p>由于服务器更新过后,ssh连接不上,机商vnc延迟卡的很,输个命令都不行,刚好centos断更了,换ubuntu系统了。也顺便从MySQL转到PostgreSQL。这个算是个记录,给有基础的人看的,你连ssh都不会连,那你得自己一步一步慢慢百度来。其实还是比较无脑的,除了1panel的反代,感觉设计对小白来说不是那么友好。之前踩过坑了,有些坑也一一列举一下,有些可能忘了。</p>
</blockquote>
<h1 id="一、安装1panel"><a href="#一、安装1panel" class="headerlink" title="一、安装1panel"></a>一、安装1panel</h1><p>1panel官方链接:<a href="https://1panel.cn/docs/installation/online_installation/">在线安装 - 1Panel 文档</a></p>
<p>为什么使用1panel,这玩意里面应用纯纯都是docker,备份方便。管理也方便。都是隔离开的,不用担心环境问题。基本装了就能跑。</p>
<p>根据自己服务器系统选择,直接复制命令一路回车。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845540.png" alt="img"></p>
<p>非大陆服务器需要先安装docker,大陆服务器用1panel一路回车。<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845541.png" alt="img"></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845542.png" alt="img"></p>
<p>复制外网地址,面板用户密码保存好。浏览器打开这个页面就是成功了。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845543.png" alt="img"></p>
<p>1panel的应用基于docker,非大陆的服务器最好换源使用。大陆不用换用,直接用1p源就行。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845544.png" alt="img"></p>
<h1 id="二、安装PostgreSQL"><a href="#二、安装PostgreSQL" class="headerlink" title="二、安装PostgreSQL"></a>二、安装PostgreSQL</h1><p>在应用商店中找到PostgreSQL安装。这里推荐postgresql内存占用比MySQL小。当然根据你自己喜好选择。</p>
<p>应用商店-数据库</p>
<p>记得勾选端口外部访问</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845545.png" alt="img"></p>
<h1 id="三、配置网站自签证书"><a href="#三、配置网站自签证书" class="headerlink" title="三、配置网站自签证书"></a>三、配置网站自签证书</h1><p>这里安装空闲时间可以先配置证书账户</p>
<p>顺便将二级域也在cf解析一下</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845546.png" alt="img"></p>
<p>网站-证书</p>
<p>这里推荐DNS账户方式,选择DNS账户方式,每个运营商的配置方式不同。</p>
<p>改版了,api获取参考:<a href="https://forum.rainyun.com/t/topic/6777">1Panel CloudFlare证书申请失败的解决方案 - 综合讨论 - 雨云论坛 (rainyun.com)</a></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845547.png" alt="img"></p>
<p>创建一个ACME账户,主要密钥算法使用RSA2048</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845548.png" alt="img"></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845549.png" alt="img"></p>
<p>配置完后,直接安装后面的。等会安装配置完再来配置证书反代。</p>
<p>当所有安装完毕后,我们来配置证书自签反代。</p>
<p>点击网站提示安装openresty直接安装就好了,这玩意根据nginx来的<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845550.png" alt="img"></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845551.png" alt="img"></p>
<h1 id="四、安装halo"><a href="#四、安装halo" class="headerlink" title="四、安装halo"></a>四、安装halo</h1><p>halo点击安装,都是傻瓜式的安装方法,配置问题的情况。</p>
<p>数据库记得选择你对应的版本,记得勾选外部端口访问。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845552.png" alt="img"></p>
<p>记得修改halo容器的域名,修改完成后重启。这步要是不修改的话,后面你Halo可能会出现很多问题,比如装了一些插件,文章500有些会全局500。还有就是插件授权可能会出现问题。他识别你的域名的是location:8090。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845553.png" alt="img">安装完成后,ip+端口访问(默认8090),这里不要忙着初始化,先把容器域名改了。后面再配置域名证书。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845554.png" alt="img">找到你的halo域名点进去</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845555.png" alt="img"></p>
<h1 id="五、安装alist"><a href="#五、安装alist" class="headerlink" title="五、安装alist"></a>五、安装alist</h1><p>应用商店-实用工具</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845556.png" alt="img"></p>
<p>默认密码去容器找到alist后面点击终端然后连接,输入下面的命令自己设置。</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">./alist admin set 你自己要设置的密码</span><br></pre></td></tr></table></figure>
<p>直接ip+端口访问(默认5244),后面再反代<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845557.png" alt="img"></p>
<p>这样就登录成功了,下面有管理,可以自行配置。<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845558.png" alt="img"></p>
<p>创建反代<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845559.png" alt="img"><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845560.png" alt="img"></p>
<p>反代完之后要在容器里面重新设置一遍密码。开了https反代后原密码登陆不进去。</p>
<p>alist怎么使用直接参考官方文档,跟这教程无脑操作就行。</p>
<h1 id="六、安装兰空图床"><a href="#六、安装兰空图床" class="headerlink" title="六、安装兰空图床"></a>六、安装兰空图床</h1><blockquote>
<p>兰空注意几点就是你服务器内存够不够大,如果空间足够的情况下,就没必要降画质。你服务器内存和CPU不行的情况下也别降画质开水印,多线程。容易爆内存,卡死。还有就是用户组里面的文件命名不用管,路径这个东西,如果你使用的网盘(建议别用,容易G),路径可以不管,要是使用的相册之内的只能一个文件的,不能多层文件夹,你设置路径直接会导致上传失败。</p>
</blockquote>
<p>应用商店-云存储</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845561.png" alt="img"></p>
<p>访问ip+端口(默认40027)</p>
<p>容器安装环境应该都是全的。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845562.png" alt="img"></p>
<p>这里报错了<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845563.png" alt="img"></p>
<p>我自己手动创建一个数据库。填入到对应里面</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845564.png" alt="img"></p>
<p>数据库连接地址直接用容器的。</p>
<p>数据库名用的LskyPro,密码直接复制即可</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845565.png" alt="img"></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845566.png" alt="img"></p>
<p>创建网站反代</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845567.png" alt="img"></p>
<p>如果你直接使用webdav挂载到兰空,可以根据我这样创建图片转发反代。如果你用的oss,请忽略下面步骤。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845568.png" alt="img"></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845569.png" alt="img"></p>
<p>兰空里面创建存储策略,访问域名后面加<strong>/img</strong>,路径就是你alist的挂载路径,前面记得加上<strong>/dav</strong>。加密用<strong>Basic</strong>,网页访问alist的webdav没用的,alist webdav没做界面。但是可以直接用。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111845570.png" alt="img"></p>
<p>当你弄完这些,可以直接使用picgo或者piclist加上兰空,就可以愉快玩耍了,当然你也可以直接使用alist的webdav</p>
]]></content>
<tags>
<tag>-安装教程 -Halo</tag>
</tags>
</entry>
<entry>
<title>Spring5入门笔记</title>
<url>/2024/04/17/Spring5%E5%85%A5%E9%97%A8%E7%AC%94%E8%AE%B0/</url>
<content><![CDATA[<h1 id="引言"><a href="#引言" class="headerlink" title="引言"></a>引言</h1><h2 id="1-EJB存在的问题"><a href="#1-EJB存在的问题" class="headerlink" title="1.EJB存在的问题"></a>1.EJB存在的问题</h2><p>EJB(Enterprise Java Bean) </p>
<p>1.运行环境苛刻</p>
<p>2.代码移植性差</p>
<p>总结:EJB重量级的框架</p>
<h2 id="2-什么是Spring"><a href="#2-什么是Spring" class="headerlink" title="2.什么是Spring"></a>2.什么是Spring</h2><p>Spring是一个轻量级的JAVAEE解决方案,整合众多优秀的设计模式</p>
<ul>
<li>轻量级</li>
</ul>
<blockquote>
<p>1.对于运行环境是没有额外要求的</p>
<p> 开源 tomcat resion jetty</p>
<p> 收费 weblogic websphere</p>
<p>2.代码移植性高</p>
<p> 不需要实现额外的接口</p>
</blockquote>
<ul>
<li>JavaEE的解决方案</li>
</ul>
<p><img src="F:/Pictures/Saved%20Pictures/image-20240417215300298.png" alt="image-20240417215300298"></p>
<ul>
<li>整合了设计模式</li>
</ul>
<ol>
<li><p>工厂设计模式</p>
</li>
<li><p>代理设计模式</p>
</li>
<li><p>模板设计模式</p>
</li>
<li><p>策略设计模式</p>
</li>
</ol>
<h2 id="3-设计模式"><a href="#3-设计模式" class="headerlink" title="3.设计模式"></a>3.设计模式</h2><ol>
<li><p>广义的概念</p>
<p>面向对象设计中,解决特定问题的经典代码</p>
</li>
<li><p>狭义概念</p>
<p>GOF4人帮定义的23种设计模式:工厂、适配器、装饰器、门面、代理、模板….</p>
</li>
</ol>
<h2 id="4-工厂设计模式"><a href="#4-工厂设计模式" class="headerlink" title="4.工厂设计模式"></a>4.工厂设计模式</h2><ol>
<li><p>什么是工厂设计模式</p>
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="comment">//1.概念:通过工厂类,创建对象</span></span><br><span class="line"> User user=<span class="keyword">new</span> <span class="title class_">User</span>();</span><br><span class="line"> <span class="type">UserDao</span> <span class="variable">userDao</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">UserDaoImpl</span>();</span><br><span class="line"><span class="comment">//2.好处:解耦合</span></span><br><span class="line"> <span class="comment">//耦合:指的是代码间的强关联关系,一方的改变,另一方也需要改变</span></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">ActionServletController</span>{</span><br><span class="line"> <span class="comment">//这个地方Service改变。后面调用时,控制器也要跟着改变。</span></span><br><span class="line"> <span class="type">UserService</span> <span class="variable">userService</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">UserServiceImpl</span>();</span><br><span class="line"> }</span><br><span class="line"> <span class="comment">//问题:不利于代码维护</span></span><br><span class="line"> <span class="comment">//简单理解:把接口的实现类,硬编码在程序中.</span></span><br><span class="line"> </span><br></pre></td></tr></table></figure>
<p>UserService:</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="keyword">public</span> <span class="keyword">interface</span> <span class="title class_">UserService</span> {</span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">register</span><span class="params">(User user)</span>;<span class="comment">//需要用户信息所以用实体对象</span></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">login</span><span class="params">(String username, String password)</span>;<span class="comment">//登录需要传入用户名,密码</span></span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<p>UserServiceImpl:</p>
</li>
</ol>
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">UserServiceImpl</span> <span class="keyword">implements</span> <span class="title class_">UserService</span> {</span><br><span class="line"> <span class="keyword">private</span> <span class="type">UserDAO</span> <span class="variable">userDAO</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">UserDAOImpl</span>();<span class="comment">//需要DAO接入,引入对象</span></span><br><span class="line"></span><br><span class="line"> <span class="meta">@Override</span></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">register</span><span class="params">(User user)</span> {</span><br><span class="line"> userDAO.sava(user);<span class="comment">//定义数据库中保存</span></span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="meta">@Override</span></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">login</span><span class="params">(String username, String password)</span> {</span><br><span class="line"> userDAO.queryUserByNameAndPassword(username, password);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<p>UserDAOImpl:为了简单定义了两个打印输出</p>
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">UserDAOImpl</span> <span class="keyword">implements</span> <span class="title class_">UserDAO</span>{</span><br><span class="line"> <span class="meta">@Override</span></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">sava</span><span class="params">(User user)</span> {</span><br><span class="line"> System.out.println(<span class="string">"insert into user="</span> + user);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="meta">@Override</span></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">queryUserByNameAndPassword</span><span class="params">(String username, String password)</span> {</span><br><span class="line"> System.out.println(<span class="string">"query User name="</span>+username+<span class="string">" password="</span>+password);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
]]></content>
<tags>
<tag>-java -Spring</tag>
</tags>
</entry>
<entry>
<title>ai绘画基础总结(一)安装设置</title>
<url>/2024/03/30/ai%E7%BB%98%E7%94%BB%E5%9F%BA%E7%A1%80%E6%80%BB%E7%BB%93%EF%BC%88%E4%B8%80%EF%BC%89%E5%AE%89%E8%A3%85%E8%AE%BE%E7%BD%AE/</url>
<content><![CDATA[<blockquote>
<p>comfyUI对有工作流经验的小伙伴来说比较友好。小白学习comfyUI门槛也不是很高。</p>
</blockquote>
<h1 id="一、安装环境"><a href="#一、安装环境" class="headerlink" title="一、安装环境"></a>一、安装环境</h1><p>小白推荐直接整合包,b站有很多秋叶的,圣杯,还有疯狂AI启动器。纯小白推荐使用疯狂AI启动器(满血包)能解决很多依赖问题,自行安装依赖,很多都需要能上外网,所以推荐满血包。高手直接上官方就OK。要是缺金少一块好显卡的小伙伴,可以使用秋叶,圣杯,疯狂ai启动器都能适配低显存的工作模式,不过要设置一手。你们可以根据自己的需求进行选择。疯狂启动器可以将工作流转换成一键式的模板功能:</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111838778.png" alt="img"></p>
<p>首先附上<strong>大佬</strong>官方链接:<a href="https://github.com/comfyanonymous/ComfyUI">comfyanonymous/ComfyUI: The most powerful and modular stable diffusion GUI, api and backend with a graph/nodes interface. (github.com)</a></p>
<p><strong>秋枼</strong>:<a href="https://www.bilibili.com/video/BV1Ew411776J">【AI绘画】ComfyUI整合包发布!解压即用 一键启动 工作流版界面 超多节点 ☆更新 ☆汉化 秋叶整合包_哔哩哔哩_bilibili</a>视频下方链接:<a href="https://pan.quark.cn/s/64b808baa960">https://pan.quark.cn/s/64b808baa960</a></p>
<p><strong>无限圣杯、铁锅炖</strong>:<a href="https://www.bilibili.com/video/BV1yM411d79q/">【12月】无限圣杯&ComfyUI满血整合包——AI渲染器原型&更多易用化更新_哔哩哔哩_bilibili</a>视频下方链接启动器+整合包:<a href="https://shimo.im/docs/B1AwdxZewWhjwe3m">https://shimo.im/docs/B1AwdxZewWhjwe3m</a></p>
<p><strong>疯狂ai启动器</strong>:<a href="https://www.bilibili.com/video/BV1VS421w7fb/">王炸来了!全新Comfyui疯狂Ai启动器,更加好用易用人性化兼容秋叶绘世整合包启动器_哔哩哔哩_bilibili</a>(在群里面薅过来的链接,当然b站也有)</p>
<p><strong>Comflowy</strong>:<a href="https://www.comflowy.com/zh-CN">Comflowy 介绍 – Comflowy</a></p>
<p><strong>普通版</strong>:</p>
<p>123网盘下载地址:<a href="https://www.123pan.com/s/42q0Vv-SYvVd.html">https://www.123pan.com/s/42q0Vv-SYvVd.html</a><br>夸克网盘下载地址:<a href="https://pan.quark.cn/s/41aeb9394841">https://pan.quark.cn/s/41aeb9394841</a><br>百度网盘下载地址:<a href="https://pan.baidu.com/s/1vb4LIrsRjlP2cp1Z0FFQHQ?pwd=f0n1">https://pan.baidu.com/s/1vb4LIrsRjlP2cp1Z0FFQHQ?pwd=f0n1</a></p>
<p><strong>开发者满血版</strong>:</p>
<p>百度网盘:<br><a href="https://pan.baidu.com/s/18N3jGoLqHeUyUvgJt2PuAA?pwd=lour">https://pan.baidu.com/s/18N3jGoLqHeUyUvgJt2PuAA?pwd=lour</a><br>夸克网盘:<br><a href="https://pan.quark.cn/s/d306fa633fa7">https://pan.quark.cn/s/d306fa633fa7</a></p>
<p><strong>嘟嘟嘟上传的整合包</strong>:<br><a href="https://www.123pan.com/s/42q0Vv-eXvVd.html">https://www.123pan.com/s/42q0Vv-eXvVd.html</a><br>提取码:KbrA 模型文件需要另外下载,太大,放不进整合包<br><a href="https://www.123pan.com/s/42q0Vv-G2vVd.html">https://www.123pan.com/s/42q0Vv-G2vVd.html</a><br>提取码:BKG7 模型文件,下载完替换上面的整合包即可</p>
<blockquote>
<p>这种都是下载解压即用的,当然我只用过疯狂ai启动器,秋叶的webui。疯狂ai普通版比较难折腾,推荐直接上满血版。</p>
</blockquote>
<h1 id="二、设置"><a href="#二、设置" class="headerlink" title="二、设置"></a>二、设置</h1><p>下载完成后直接点开设置进行启动模型选择,然后自己去申请一个百度翻译的api(免费),方便后面直接使用中文提示词。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111838779.png" alt="img"></p>
<p>然后直接一键启动,我这是<strong>启动后的样子</strong></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111838780.png" alt="img"></p>
<p>要是依赖出问题了直接的点开控制台,讲报错往ai一丢,根据提示操作。实在不行一键重装所有依赖,插件依赖库</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111838781.png" alt="img"></p>
<blockquote>
<p>其他平台的功能就自己慢慢探索了,对照着up的视频来。有问题的可以加群交流。企鹅群:306146537</p>
</blockquote>
]]></content>
<tags>
<tag>-ComfyUI -AI</tag>
</tags>
</entry>
<entry>
<title>ai绘画基础总结(三)学习工作流</title>
<url>/2024/03/31/ai%E7%BB%98%E7%94%BB%E5%9F%BA%E7%A1%80%E6%80%BB%E7%BB%93%EF%BC%88%E4%B8%89%EF%BC%89%E5%AD%A6%E4%B9%A0%E5%B7%A5%E4%BD%9C%E6%B5%81/</url>
<content><![CDATA[<blockquote>
<p>教程源于学习:<a href="https://www.bilibili.com/video/BV13b4y1G7s9/?spm_id_from=333.788&vd_source=f82ab981c5010bda151ee99a98c48791">AI绘画进阶入门ComfyUI系列教程-1.简易安装于配置完全指南!_哔哩哔哩_bilibili</a>,编写此教程目的作为笔记使用。</p>
</blockquote>
<h1 id="一、基本工作流控件"><a href="#一、基本工作流控件" class="headerlink" title="一、基本工作流控件"></a>一、基本工作流控件</h1><h2 id="K采样器"><a href="#K采样器" class="headerlink" title="K采样器"></a>K采样器</h2><div class="table-container">
<table>
<thead>
<tr>
<th style="text-align:center">名称</th>
<th style="text-align:center">参数</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">随即种</td>
<td style="text-align:center">生成的图片id</td>
</tr>
<tr>
<td style="text-align:center">运行后操作</td>
<td style="text-align:center">fixed(固定)、increment(增加)、decrement(减少)、randomize(随机)、</td>
</tr>
<tr>
<td style="text-align:center">步数</td>
<td style="text-align:center">采样步数通常20-60步</td>
</tr>
<tr>
<td style="text-align:center">CFG</td>
<td style="text-align:center">通常7,少一点就是4</td>
</tr>
<tr>
<td style="text-align:center">采样器</td>
<td style="text-align:center">euler_ancestral+调度器normal对应webui中Eulera(最普通的生成方式)、dpmpp_2m+调度器karras对应webui中的dpm++2m Karras(没有sde效果好,增加了图片的发挥和想象力)、uni_pc和LCM类似(10步之内出不错的图像)</td>
</tr>
<tr>
<td style="text-align:center">调度器</td>
<td style="text-align:center">karras,ddim(可能会崩),simple(作者实验,不好用),normal(线性降噪╱型,泛用式调度器)<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111842847.png" alt="img" style="zoom:25%;" />,karras(曲线降噪s型,较为平滑,刚开始比较少,到了中间大幅降噪,快结束时又比较少)<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111842848.png" alt="img" style="zoom:25%;" />,karras(急速降噪, 后半部,收敛块)<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111842849.png" alt="img" style="zoom:25%;" />,sgm配合采样器LCM搭配使用</td>
</tr>
<tr>
<td style="text-align:center">降噪</td>
<td style="text-align:center">默认文生图就是1,图生图的重绘幅度</td>
</tr>
</tbody>
</table>
</div>
<h2 id="K采样器(高级)"><a href="#K采样器(高级)" class="headerlink" title="K采样器(高级)"></a>K采样器(高级)</h2><p>添加噪波二次渲染不需要</p>
<p>第一次渲染,开始步数默认为0,步数为30,结束降噪步数比30大没有任何意义。如果小于步数就会主动停止。现在结束降噪步数为20,那么还剩余10步,就会传递给下一次降噪。返回噪波需要开启。二次渲染如果步数到了就不需要了。</p>
<blockquote>
<p>也就是说当一次渲染为30步,开始降噪步数为0,结束降噪步数20,在20步结束了降噪步数,返回噪波需要开启噪波,第二次渲染的时候,步数为也为30,开始降噪步数要设成20。结束降噪步数>步数</p>
</blockquote>
<p>这种方法适合不同模型的融合采样二次精炼,在SDXL和1.5模型都适用。</p>
<h2 id="CheckPoint加载器(简易)"><a href="#CheckPoint加载器(简易)" class="headerlink" title="CheckPoint加载器(简易)"></a>CheckPoint加载器(简易)</h2><p>加载主模型。模型训练的时候像素512<em>512的图像(真实空间(Pixel space)每一个像素生成的空间),训练后压缩一块一块的64 </em> 64电脑会在小块的空间(潜在空间)里面合成我们想要的消息,然后转换成我们肉眼所能看到的图像。</p>
<blockquote>
<p>自己想的一个小小的例子,方便大家理解。</p>
<p><strong>1. 前期准备:</strong></p>
<ul>
<li>您作为一个定制花瓶的生产者,已经积累了丰富的设计经验。</li>
<li>您准备了一个房间,里面存放了成千上万打碎的花瓶碎片。这些碎片代表了像素,而整个房间就是您的大模型,包含了丰富的花瓶样式和元素。</li>
</ul>
<p><strong>2. 接收需求:</strong></p>
<ul>
<li>有一天,有客户提出了他们的花瓶需求,通过语言描述的方式告诉您他们想要的花瓶样式。</li>
</ul>
<p><strong>3. 根据需求提取碎片:</strong></p>
<ul>
<li>您进入房间(大模型),开始根据客户的描述(CLIP文本编码器)来寻找符合要求的碎片(像素)。</li>
<li>这个过程中,K采样器会帮助您从众多的碎片中挑选出最合适的那些。</li>
</ul>
<p><strong>4. 草图设计:</strong></p>
<ul>
<li>您现在有了这些碎片,接下来需要进行设计。</li>
<li>您开始根据碎片的编号和需求进行草图设计(K采样器步数)。这个步骤中,调度器会帮助您决定如何组合这些碎片,以达到最佳的设计效果。</li>
<li>草图的粗糙程度可以通过降噪技术来调整,使设计更加精确和美观。</li>
</ul>
<p><strong>5. 实物组装:</strong></p>
<ul>
<li>草图设计完成后,您拥有了花瓶的基本结构和样式。</li>
<li>但是,草图上的只是线条和碎片编号,还不是真正的花瓶。</li>
<li>这时,您会利用VAE编码器来进行最后的组装。VAE编码器会根据您的草图,将对应的碎片(像素)进行组装,生成最终的花瓶实物。</li>
</ul>
</blockquote>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111842850.png" alt="img"></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111842851.png" alt="img"></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111842852.png" alt="img"></p>
<blockquote>
<p><strong>图生图流程</strong></p>
<p><strong>1. 初始图片上传</strong></p>
<ul>
<li>用户上传一张照片作为参考,这张照片可以是一个具体的物体、风景、人物等,它提供了图生图过程的初始形态和细节。</li>
</ul>
<p><strong>2. 接收需求清单</strong></p>
<ul>
<li>用户输入一系列的正负提示词,作为对生成图片的具体要求或期望。这些提示词可以包括颜色、风格、元素增减等各个方面的描述。</li>
</ul>
<p><strong>3. 细节还原与碎片提取</strong></p>
<ul>
<li>系统根据您上传的照片,在大模型(即像素碎片库)中寻找与照片细节相匹配的碎片。这些碎片的提取过程确保了原始照片的细节能够得到很好的保留。</li>
</ul>
<p><strong>4. 设计与制作</strong></p>
<ul>
<li>有了初始照片和用户需求,系统开始根据这些信息进行设计和制作。它会在保持照片原有细节的基础上,根据用户的正负提示词,调整图片的颜色、添加或删除某些元素,以及改变整体风格等。</li>
</ul>
<p><strong>5. 降噪与重绘幅度调整</strong></p>
<ul>
<li>在这个过程中,降噪设置起到了关键作用。它决定了图片重绘的幅度。当降噪设置为0.几时,表示对原始图片的改动较小,更多地保留了原始细节。而降噪设置的参数越大,系统对图片的重绘幅度就越大,生成的图片与原始图片的差异也就越明显。</li>
</ul>
<p><strong>6. 最终生成</strong></p>
<ul>
<li>经过上述步骤后,系统最终生成一张既保留了原始照片细节,又符合用户需求的全新图片。这张图片是原始图片与用户需求的完美结合,展现了图生图技术的强大能力。</li>
</ul>
<p>通过这样的流程,图生图技术能够根据用户提供的照片和需求,生成出既符合用户期望又具有创意的全新图片。这种技术不仅在艺术创作中有着重要的应用价值,也在许多其他领域如设计、广告等中发挥着重要作用。</p>
</blockquote>
<h3 id="Checkpoint加载器(pysss)"><a href="#Checkpoint加载器(pysss)" class="headerlink" title="Checkpoint加载器(pysss)"></a>Checkpoint加载器(pysss)</h3><blockquote>
<p>瑞士军刀:新建节点>加载器>Checkpoint加载器(pysss)</p>
</blockquote>
<p>加载模型是分类,适用于模型储存在不同文件夹分类内,模型比较多的小伙伴.</p>
<h2 id="Empty-Latent-Image"><a href="#Empty-Latent-Image" class="headerlink" title="Empty Latent Image"></a>Empty Latent Image</h2><p>决定潜在空间的图像大小,batch_size批次,就是生成多少张图,K采样器输入输出都需要潜在空间控制。</p>
<h2 id="VAE解码"><a href="#VAE解码" class="headerlink" title="VAE解码"></a>VAE解码</h2><p>图片会在潜在空间之后解码</p>
<h2 id="预览图像、保存图像"><a href="#预览图像、保存图像" class="headerlink" title="预览图像、保存图像"></a>预览图像、保存图像</h2><p>VAE解码后,今儿可以看到我们的图像了。保存图像路径可以设置,默认存在ComfyUI文件夹下的output内。</p>
<h2 id="CLIP文本编码器"><a href="#CLIP文本编码器" class="headerlink" title="CLIP文本编码器"></a>CLIP文本编码器</h2><p>我们输入的是String类型的字符串,然后通过编码传给采样器。</p>
<p>以下节点需要安装插件使用,部分节点输出可能是String,所以需要使用默认CLIP文本编码器在CLIP节点上面右键选择<strong>转换为文本输入</strong></p>
<p>当然这种操作可以适用绝大多数节点,就像编程一样,可以把某些节点内的参数转换成变量使用。例如重绘多采样器或者放大操作使用共享相同的随机种子,专门的变量框可以使用元节点,也可以直接拉。</p>
<h3 id="CLIP文本编码器(Argos翻译)"><a href="#CLIP文本编码器(Argos翻译)" class="headerlink" title="CLIP文本编码器(Argos翻译)"></a>CLIP文本编码器(Argos翻译)</h3><blockquote>
<p>汉化插件:新建节点>ALEK节点>条件</p>
</blockquote>
<p>from设置现在的语言to设置要翻译的语言</p>
<p>文本翻译过后是否正确,可以使用预览文字和展示文本节点来查看。下同。</p>
<h3 id="CLIP文本编码器(翻译高级)"><a href="#CLIP文本编码器(翻译高级)" class="headerlink" title="CLIP文本编码器(翻译高级)"></a>CLIP文本编码器(翻译高级)</h3><blockquote>
<p>汉化插件:新建节点>ALEK节点>条件</p>
</blockquote>
<p>form设置auto自动to目标语言</p>
<p>add_proxies可以开启代理</p>
<p>service设置翻译引擎</p>
<h3 id="CLIP文本编码器(翻译)"><a href="#CLIP文本编码器(翻译)" class="headerlink" title="CLIP文本编码器(翻译)"></a>CLIP文本编码器(翻译)</h3><blockquote>
<p>汉化插件:新建节点>ALEK节点>条件</p>
</blockquote>
<p>form设置auto自动to目标语言</p>
<p>manual_translate 手动翻译</p>
<h3 id="字符串操作"><a href="#字符串操作" class="headerlink" title="字符串操作"></a>字符串操作</h3><blockquote>
<p>瑞士军刀插件:新建节点>实用工具>字符串操作</p>
</blockquote>
<p>append追加replace替换</p>
<p>可以提升文本框为变量,然后用翻译文本组合使用,每个翻译文本框里面都可以输入不同的场景,这样逻辑会更加清晰。比如第一个是场景环境,第二个是对人物进行修饰的提示词,还有很多操作。</p>
<h3 id="CLIP文本编码SDXL(优化)"><a href="#CLIP文本编码SDXL(优化)" class="headerlink" title="CLIP文本编码SDXL(优化)"></a>CLIP文本编码SDXL(优化)</h3><blockquote>
<p>SDXL Prompt Styler插件:新建节点>高级>条件</p>
</blockquote>
<p>普通版:宽高,裁剪宽高一般不动,目标宽高。CLIP中的分辨率一般是真实生成图像的倍数关系,一般都是2倍,4倍这种,配个瑞士军刀的数学表达式使用会更简单。</p>
<p>优化:相比普通的CLIP文本编码SDXL,优化适用于二次精炼。</p>
<h3 id="数学表达式"><a href="#数学表达式" class="headerlink" title="数学表达式"></a>数学表达式</h3><blockquote>
<p>新建节点>实用工具</p>
</blockquote>
<p>可以直接作用于空Latent节点输出的宽高。</p>
<p>假设空Latent节点宽高为1024,直接空Latent出连在A上。获取数据就是<strong>a.width</strong>,此时他就是1024。如果4倍就是<strong>a.width * 4</strong>。注意在这个里面,不管条件是什么输出的只是一个数,出整数或者浮点直接连接CLIP文本编码SDXL的进宽高就行了。</p>
<h2 id="加载图像"><a href="#加载图像" class="headerlink" title="加载图像"></a>加载图像</h2><blockquote>
<p>新建节点>图像>加载图像</p>
</blockquote>
<p>图片上传输入。mask就是图片蒙版,有可能照片年代久了,有些地方不出清楚了,或者之前有些地方不好看,我们就把它圈起来然他对圈起来的地方重新设计。</p>
<p>使用遮罩后要使用VAE内补码编码器,不然不识别遮罩。</p>
<h2 id="VAE内补码编码器"><a href="#VAE内补码编码器" class="headerlink" title="VAE内补码编码器"></a>VAE内补码编码器</h2><blockquote>
<p>新建节点>Latent>内补>VAE内补码编码器</p>
</blockquote>
<p>相比普通VAE编码多了一个遮罩连接点。</p>
<p>使用遮罩后,注意自己的题词,不然会出现更多的手和脚或者衣服之内的。</p>
<h2 id="图像裁剪"><a href="#图像裁剪" class="headerlink" title="图像裁剪"></a>图像裁剪</h2><blockquote>
<p>新建节点>图像>变换>图像裁剪</p>
</blockquote>
<p>宽高设置,x,y实现裁剪偏移,在右侧菜单栏中更多选项中勾选自动执行(Auto Queue)改变状态。配合图像按系数缩放节点来实现</p>
<h2 id="CLIP设置停止层"><a href="#CLIP设置停止层" class="headerlink" title="CLIP设置停止层"></a>CLIP设置停止层</h2><p>对应webui Clip跳过层</p>
<h2 id="WD14反推提示词"><a href="#WD14反推提示词" class="headerlink" title="WD14反推提示词"></a>WD14反推提示词</h2><blockquote>
<p>新建节点>图像>WD14反推提示词</p>
</blockquote>
<p>节点需要插件,并且配置科学,从远程批量下载模型提示词。同时也可以下载模型,本地运行。</p>
<p>在clash中要开启tun转发,在cmd管理员模式下输入上面命令并可开启代理。不会的请参考:<a href="https://xisoul.cn/archives/1712053060615">AI绘画拉取模型失败,DOS开启代理 | XiSoul Blog’s</a></p>
<p>模型:设置反推提示词模型</p>
<p>置信度:阈值,给的越低,反推出来的提示词越零碎,越详细。阈值越高,就会挑一些主要的提示词描述。角色置信度同理。</p>
<p>排除标签就是反推出来的字符串中有你不想要的,你可以复制粘贴进去。</p>
<p>同时也可以配合瑞士军刀插件字符串操作。</p>
<h2 id="SDXL风格化提示词(高级)"><a href="#SDXL风格化提示词(高级)" class="headerlink" title="SDXL风格化提示词(高级)"></a>SDXL风格化提示词(高级)</h2><blockquote>
<p>新建节点>实用工具>SDXL风格化提示词(高级)</p>
</blockquote>
<p>L偏向于tag,类型人物,座椅板凳这种名词描述,短袖,牛仔裤。</p>
<p>G偏向于风格,形容词,比如形容女性的头发:长发短发,什么颜色。穿着什么样:什么样的短袖,什么样的牛仔裤。</p>
<p>输出为字符串,普通的SDXL需要提供CLIP文本编码器将文本框提升为连接点,SDXL风格化提示词(高级)需要提供CLIP文本编码器SDXL。</p>
<p>SDXL默认加载一个offset的Lora,进行光线调节。使用风格化提示词,简单的图像也可以没必要使用offset的Lora。</p>
<p>负面词应用可以控制只应用G或者L。</p>
<h2 id="ControlNet应用"><a href="#ControlNet应用" class="headerlink" title="ControlNet应用"></a>ControlNet应用</h2><h3 id="ControlNet应用(高级)"><a href="#ControlNet应用(高级)" class="headerlink" title="ControlNet应用(高级)"></a>ControlNet应用(高级)</h3><blockquote>
<p>新建节点>条件</p>
</blockquote>
<p>高级和普通相比,多了开始时间和结束时间,连接点方面分为正负输出。</p>
<p>图像不能直接输入给ControlNet应用,需要安装预处理组件</p>
<h2 id="Aux集成预处理器"><a href="#Aux集成预处理器" class="headerlink" title=" Aux集成预处理器"></a> Aux集成预处理器</h2><blockquote>
<p>ControlNet插件:新建节点>ControlNet预处理器</p>
</blockquote>
<p>方便简单调用各种预处理器</p>
<h2 id="Lora加载器"><a href="#Lora加载器" class="headerlink" title="Lora加载器"></a>Lora加载器</h2><h3 id="Lora加载器(pysss)"><a href="#Lora加载器(pysss)" class="headerlink" title="Lora加载器(pysss)"></a>Lora加载器(pysss)</h3><blockquote>
<p>瑞士军刀:新建节点>加载器</p>
</blockquote>
<p>相比普通的,加载Lora方便文件夹内模型管理</p>
<h1 id="二、快捷操作"><a href="#二、快捷操作" class="headerlink" title="二、快捷操作"></a>二、快捷操作</h1><div class="table-container">
<table>
<thead>
<tr>
<th>Keybind</th>
<th>Explanation</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ctrl + Enter</td>
<td>出图</td>
</tr>
<tr>
<td>Ctrl + Z/Ctrl + Y</td>
<td>撤销</td>
</tr>
<tr>
<td>Ctrl + S</td>
<td>保存工作流</td>
</tr>
<tr>
<td>Ctrl + O</td>
<td>载入工作流</td>
</tr>
<tr>
<td>Ctrl + A</td>
<td>选择所有节点</td>
</tr>
<tr>
<td>Alt + C</td>
<td>折叠所选节点</td>
</tr>
<tr>
<td>Ctrl + M</td>
<td>屏蔽/取消屏蔽节点</td>
</tr>
<tr>
<td>Ctrl + B</td>
<td>穿过所选节点(就像此节点不存在,连线会穿越节点)</td>
</tr>
<tr>
<td>Delete/Backspace</td>
<td>删除节点</td>
</tr>
<tr>
<td>Ctrl + Delete/Backspace</td>
<td>清空界面</td>
</tr>
<tr>
<td>Space</td>
<td>按住之后画布会随着鼠标移动</td>
</tr>
<tr>
<td>Ctrl/Shift + Click</td>
<td>多选</td>
</tr>
<tr>
<td>Ctrl + C/Ctrl + V</td>
<td>复制粘贴节点</td>
</tr>
<tr>
<td>Ctrl + C/Ctrl + Shift + V</td>
<td>保持连线复制粘贴</td>
</tr>
<tr>
<td>Shift + Drag</td>
<td>同时移动多个节点</td>
</tr>
<tr>
<td>Ctrl + D</td>
<td>加载默认工作流</td>
</tr>
<tr>
<td>Q</td>
<td>切换队列可见性</td>
</tr>
<tr>
<td>H</td>
<td>切换出图历史可见性</td>
</tr>
<tr>
<td>R</td>
<td>刷新界面</td>
</tr>
<tr>
<td>双击</td>
<td>打开节点搜索界面</td>
</tr>
</tbody>
</table>
</div>
<p>多选:按住ctrl+鼠标拖动</p>
<p>多选后可以右键创建模板组</p>
<p>鼠标中间可以添加中转节点(理线器)</p>
<h1 id="三、功能操作"><a href="#三、功能操作" class="headerlink" title="三、功能操作"></a>三、功能操作</h1><h2 id="放大缩放"><a href="#放大缩放" class="headerlink" title="放大缩放"></a>放大缩放</h2><h3 id="空间内放大"><a href="#空间内放大" class="headerlink" title="空间内放大"></a>空间内放大</h3><h4 id="潜空间前放大"><a href="#潜空间前放大" class="headerlink" title="潜空间前放大"></a>潜空间前放大</h4><h5 id="Latent缩放"><a href="#Latent缩放" class="headerlink" title="Latent缩放"></a>Latent缩放</h5><p>指定宽高倍数,粗暴放大,只是尺寸变大。</p>
<h5 id="Latent按系数缩放"><a href="#Latent按系数缩放" class="headerlink" title="Latent按系数缩放"></a>Latent按系数缩放</h5><p>指定倍数,粗暴放大,二次采样注意重绘幅度。</p>
<h4 id="模型方法"><a href="#模型方法" class="headerlink" title="模型方法"></a>模型方法</h4><h5 id="放大模型加载器"><a href="#放大模型加载器" class="headerlink" title="放大模型加载器"></a>放大模型加载器</h5><blockquote>
<p>新建节点>图像>放大>图像通过模型放大</p>
<p>放大中图像缩放,图像按系数缩放也是粗暴放大</p>
</blockquote>
<p>4x-UltraSharp.pth</p>
<h4 id="SD放大"><a href="#SD放大" class="headerlink" title="SD放大"></a>SD放大</h4><blockquote>
<p>新建节点>图像>放大>SD放大</p>
</blockquote>
<p>SD放大节点混合了采样器采用区块式和webui一样。</p>
<p>区块大小自定义,区块模糊就是边缘羽化大小,分块分区通常默认。</p>
<p>接缝修复模式通常采用Band Pass效果较强,Half Tile比较弱。Half Tile+Intersections效果折中。如果不选默认为none会不起作用。</p>
<p>SD放大(不放大)少一个,方法模型连接点。用于二次采样二次修复</p>
<h2 id="遮罩"><a href="#遮罩" class="headerlink" title="遮罩"></a>遮罩</h2><blockquote>
<p>新建节点>遮罩>加载图像遮罩</p>
</blockquote>
<p>这个操作是直接在潜空间里面拿图,不需要二次采样</p>
<blockquote>
<p>新建节点>Latent>内补>设置Latent噪波遮罩</p>
</blockquote>
<p>可以直接遮罩连接点向旁边拖选择设置Latent噪波遮罩,然后直接使用上一个K采样器输出的Latent然后输出到下一个K采样器</p>
<h2 id="反向"><a href="#反向" class="headerlink" title="反向"></a>反向</h2><p>CLIP视觉加载器输入到CLIP视觉编码,同时将图像也输入。输出unCLIP条件也可以利用提示词传给条件零化然后传给unCLIP条件,再然后直接传给K采样器。这个过程可以利用多CLIP视觉编码进行风格化图片等等。</p>
]]></content>
<tags>
<tag>-ComfyUI</tag>
</tags>
</entry>
<entry>
<title>ai绘画基础总结(二)模型插件安装</title>
<url>/2024/03/30/ai%E7%BB%98%E7%94%BB%E5%9F%BA%E7%A1%80%E6%80%BB%E7%BB%93%EF%BC%88%E4%BA%8C%EF%BC%89%E6%A8%A1%E5%9E%8B%E6%8F%92%E4%BB%B6%E5%AE%89%E8%A3%85/</url>
<content><![CDATA[<h1 id="模型"><a href="#模型" class="headerlink" title="模型"></a>模型</h1><blockquote>
<p>授人以渔不如授人以渔,这里先给出一些常用的下载地址,首先声明,国内能下载模型的地方很少一盘都是网盘。所以网站是国外的,懂得都懂。</p>
</blockquote>
<h2 id="模型干什么的?怎么用?有什么区?"><a href="#模型干什么的?怎么用?有什么区?" class="headerlink" title="模型干什么的?怎么用?有什么区?"></a>模型干什么的?怎么用?有什么区?</h2><p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111840474.png" alt="img"></p>
<p>模型主要学习这5类,要是细分,那可太多。我们下载模型单纯看文件名后缀区分不了,所以没必要讲后缀。可以在上传模型到:<a href="https://spell.novelai.dev/">Stable Diffusion 法术解析 (novelai.dev)</a>解析。下载的时候如上图,看下作者上传的是什么类型的模型。按照对应的模型类型拷贝或者直接下载到对应的文件夹内就可以。要是主模型很多也可以在文件夹里再新建文件夹进行分类。</p>
<div class="table-container">
<table>
<thead>
<tr>
<th>模型分类</th>
<th>解释</th>
<th>功能</th>
<th>路径</th>
</tr>
</thead>
<tbody>
<tr>
<td>Checkpoint(主模型)</td>
<td>Checkpoint 大模型是一种<a href="https://so.csdn.net/so/search?q=深度学习模型&spm=1001.2101.3001.7020">深度学习模型</a>,通过将模型参数保存到磁盘上并随时恢复它们来避免重新训练模型的昂贵成本和时间。这种方法可以使用较少的内存和计算资源来加载大型模型,并在需要时恢复模型参数以进行预测。</td>
<td><strong>Checkpoint 模型</strong>是<strong>基础模型</strong>(<strong>主模型</strong>),常用大模型有sd1.0,sd1.5,sd2.0,SDXL等等。决定 AI 绘画的<strong>整体风格</strong>,文件比较<strong>大</strong>。</td>
<td>*\ComfyUI\models\checkpoints</td>
</tr>
<tr>
<td>Controlnet</td>
<td>是一种用于生成图像的深度学习模型,它通过在生成过程中引入外部控制信号来改进生成质量。ControlNet 通过将外部控制信号(如文本描述、关键点或方向向量)与生成网络的输入相结合来实现这一点,从而允许更精细的控制生成的图像内容。</td>
<td>在控制生成图的<strong>姿态</strong>、<strong>线条</strong>、<strong>结构</strong>、<strong>深度</strong>等方面有非常<strong>惊艳</strong>的<strong>效果</strong>。</td>
<td>*\ComfyUI\models\controlnet</td>
</tr>
<tr>
<td>VAE(变分自解码器)</td>
<td>变分自编码器(Variational Autoencoder,VAE)是一种深度学习模型,用于无监督学习,其中模型被训练以重建输入数据。VAE 由两部分组成:编码器和解码器。编码器将输入数据编码为一个低维度的潜在向量,而解码器则将潜在向量解码为重建数据。VAE 通过最大化重建数据的概率来学习数据的潜在分布。</td>
<td>它的<strong>效果</strong>类似于我们熟悉的<strong>滤镜</strong>,可以调整生成<strong>图片</strong>的<strong>色彩饱和度</strong>。</td>
<td><em>\ComfyUI\models\vae </em>\ComfyUI\models\vae_approx</td>
</tr>
<tr>
<td>Embeddings</td>
<td>嵌入(Embedding)是一种将输入数据映射到连续向量空间的技术,通常用于自然语言处理、计算机视觉和推荐系统等领域。嵌入模型将输入数据(如单词、图像或用户)映射到固定大小的向量,这些向量可以用于后续的机器学习任务,如分类、聚类和预测。</td>
<td>使用提示词来进行 AI绘画,为准确画出预期的<strong>角色</strong>、<strong>物品</strong>、<strong>行为</strong>或者<strong>画风</strong>,通常需要输入比较多的提示词去<strong>描述</strong>和<strong>限定</strong>它。</td>
<td>*\ComfyUI\models\embeddings</td>
</tr>
<tr>
<td>LORA</td>
<td>利低秩适配(Low-Rank Adaptation,LoRA)是一种用于迁移学习的方法,它允许在新任务上微调预训练模型,同时保持原始预训练模型的不变。LoRA 通过在预训练模型的输出和任务特定模型的输入之间引入一个低秩适配矩阵来实现这一点,从而最小化对原始预训练模型的影响。</td>
<td>擅长调整<strong>画风</strong>,用于<strong>动作</strong>、<strong>角色等其他特定概念</strong>。</td>
<td>*\ComfyUI\models\loras</td>
</tr>
</tbody>
</table>
</div>
<h2 id="常用模型推荐"><a href="#常用模型推荐" class="headerlink" title="常用模型推荐"></a>常用模型推荐</h2><h3 id="Checkpoint-模型"><a href="#Checkpoint-模型" class="headerlink" title="Checkpoint 模型"></a><strong>Checkpoint 模型</strong></h3><ul>
<li><p><strong>Stable Diffusion 1.5</strong>(Stable Diffusion 原模型 v1.5)</p>
</li>
<li><p><strong>Anything</strong>(二次元风格图像生成)</p>
</li>
<li><p><strong>AbyssOrangeMix2</strong>(二次元风格图像生成)</p>
</li>
<li><p><strong>OrangeMixs</strong>(二次元风格图像生成)</p>
</li>
<li><p><strong>Counterfeit</strong>(高质量二次元人物和风景图像生成)</p>
</li>
<li><p><strong>MeinaMix</strong>(高质量二次元风格人物图像生成)</p>
</li>
<li><p><strong>ChilloutMix</strong>(亚洲真人照片风格图像生成)</p>
</li>
<li><p><strong>Deliberate</strong>(欧美真人照片风格图像生成)</p>
</li>
<li><p><strong>DreamShaper</strong>(写实、原画等多种风格的人像和风景图像生成)</p>
</li>
<li><p><strong>Lyriel</strong>(支持多种风格的人物和风景图像生成)</p>
</li>
<li><p><strong>Protogen</strong>(支持多种风格的人物和风景图像生成)</p>
</li>
<li><p><strong>Dreamlike diffusion</strong>(插画风格图像生成)</p>
</li>
<li><p><strong>Dreamlike photoreal</strong>(真实风格图像生成)</p>
</li>
<li><p><strong>Realistic vision</strong>(真实世界风格的任务和环境图像生成)</p>
</li>
<li><p><strong>DDicon</strong>(B 端风格元素图像生成,配合 DDICON_lora 的LoRA模型使用)</p>
</li>
<li><p><strong>Product Design</strong>(工业产品设计相关图像生成)</p>
</li>
<li><p><strong>Isometric Future</strong>(等距微缩风格图像生成)</p>
</li>
<li><p><strong>Vectorartz Diffusion</strong>(矢量风格图像生成)</p>
</li>
<li><p><strong>Samdoesarts Ultmerge</strong>(Samdoesars 艺术风格图像生成)</p>
</li>
<li><p><strong>Flonix MJ Style</strong>(Flonix MJ 插画风格图像生成)</p>
</li>
<li><p><strong>architectural design sketches with markers</strong>(建筑设计草图风格图像生成)</p>
</li>
<li><p><strong>XSarchitectural-InteriorDesign-ForXSLora</strong>(室内设计风格图像生成)</p>
</li>
<li><p><strong>Re V Animated</strong>(动漫人物或场景的 2.5D 或 3D 图像生成) </p>
<hr>
</li>
</ul>
<h3 id="LoRA-模型"><a href="#LoRA-模型" class="headerlink" title="LoRA 模型"></a><strong>LoRA 模型</strong></h3><ul>
<li><strong>KoreanDollLikeness</strong>(韩国真人照片风格)【推荐主模型:ChilloutMix】</li>
<li><strong>JapaneseDollLikeness</strong>(日本真人照片风格)【推荐主模型:ChilloutMix】</li>
<li><strong>ThaiDollLikeness</strong>(泰国真人照片风格)【推荐主模型:ChilloutMix】</li>
<li><strong>墨心</strong>(水墨画风格)【推荐主模型:ChilloutMix】</li>
<li><strong>Gacha splash LORA</strong>(带背景的立绘风格)</li>
<li><strong>沁彩 Colorwater</strong>(水彩风格)</li>
<li><strong>blindbox</strong>(盲盒娃娃风格)【推荐主模型:RevAnimated】</li>
<li><strong>DDicon_lora</strong>(B端元素风格)【推荐主模型:DDicon】</li>
<li><strong>Freljord</strong>(场景凤格)</li>
<li><strong>剪纸</strong>(剪纸风格)</li>
<li><strong>Anime Lineart</strong>(线稿画风格)【推荐主模型:Anything v4.5】</li>
<li><strong>Concept Scenery Scene</strong>(风景场景风格)【推荐主模型:Counterfeit v2.5】</li>
<li><strong>Howls Moving Castle</strong>(哈尔移动城堡风格)</li>
<li><strong>Makoto Shinkai</strong>(新海诚风格)</li>
<li><strong>Studio Ghibli Style</strong>(吉卜力风格)【推荐主模型:Anything v4.5】</li>
<li><strong>Airconditioner</strong>(城镇、荒野等风景场景风格)</li>
<li><strong>Stamp_v1</strong>(图标 Loga 风格)</li>
</ul>
<h3 id="VAE-模型"><a href="#VAE-模型" class="headerlink" title="VAE 模型"></a><strong>VAE 模型</strong></h3><ul>
<li><strong>vae.ft-ema-560000-ema-pruned</strong>(Stabilily Al 官方发布的 VAE,适用于大部分场量)</li>
<li><strong>vae-ft-mse-840000-ema-pruned</strong>(Stability Al 官方发布的 VAE,适用于大部分场景)</li>
<li><strong>kl-f8-anime2</strong>(适用于二次元动漫场景)</li>
<li><strong>Grapefruit VAE</strong>(适用于二次元动漫场景)</li>
</ul>
<h2 id="常用下载地址"><a href="#常用下载地址" class="headerlink" title="常用下载地址"></a>常用下载地址</h2><p><strong>欢迎在评论区补充,相互学习。</strong></p>
<h3 id="国外:"><a href="#国外:" class="headerlink" title="国外:"></a>国外:</h3><p>抱脸:<a href="https://huggingface.co/">https://huggingface.co/</a></p>
<p>c站:<a href="https://civitai.com/">https://civitai.com/</a></p>
<h3 id="国内(需要登录是常态):"><a href="#国内(需要登录是常态):" class="headerlink" title="国内(需要登录是常态):"></a>国内(需要登录是常态):</h3><p><a href="https://tusiart.com/images/712052869865634751?post_id=712052869861440448&source_id=nzi_pFzkk0a7rPQrb37y8RUm">吐司 tusi.cn | 可在线生图的 AI 模型分享社区,还是免费的! (tusiart.com)</a>(部分需要付费,也是独家模型)</p>
<p><a href="https://www.liblib.art/">LiblibAI·哩布哩布AI - 中国领先的AI创作平台</a>(部分需要开会员)</p>
<h2 id="ai导航工具集"><a href="#ai导航工具集" class="headerlink" title="ai导航工具集"></a>ai导航工具集</h2><p><a href="https://ai-bot.cn/">AI工具集 | 700+ AI工具集合官网,国内外AI工具集导航大全 (ai-bot.cn)</a></p>
<p><a href="https://top.aibase.com/">AIbase - 智能匹配最适合您的AI产品和网站</a></p>
<p><a href="https://www.ainavpro.com/huggingface">Hugging Face–有趣的Hugging Face模型 | Ai导航 (ainavpro.com)</a></p>
<h1 id="工作流"><a href="#工作流" class="headerlink" title="工作流"></a>工作流</h1><blockquote>
<p>学习工作流难免抄作业,可以学学大佬的流程思维方式。如果想完美复刻工作流,注意看下别人使用的模型,你有没有,国外的环境相对较好,国内的好多人都是将模型改名上传。也有很多自炼的,所以很多东西仅供参考。</p>
</blockquote>
<p>详细工作流学习参考第三部分</p>
<h3 id="国外:-1"><a href="#国外:-1" class="headerlink" title="国外:"></a>国外:</h3><p><a href="https://comfy.icu/">Comfy.ICU - ComfyUI Cloud</a></p>
<p><a href="https://comfyworkflows.com/">Comfy Workflows</a></p>
<h3 id="国内:"><a href="#国内:" class="headerlink" title="国内:"></a>国内:</h3><p><a href="https://www.aigodlike.com/">www.aigodlike.com</a></p>
<p>一个大佬的github地址:(现在16类 41项)<a href="https://github.com/ZHO-ZHO-ZHO/ComfyUI-Workflows-ZHO">ZHO-ZHO-ZHO/ComfyUI-Workflows-ZHO: 我的 ComfyUI 工作流合集 | My ComfyUI workflows collection (github.com)</a>介绍了插件和节点等,很有参考价值</p>
<h1 id="插件"><a href="#插件" class="headerlink" title="插件"></a>插件</h1><p>安装方法,满血包里面有绝大多数常用的插件:</p>
<p>1.下载插件解压粘贴到里面,主要不要文件夹套娃(点开文件夹还要点开一层文件夹才能看到文件)</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111840475.png" alt="img"></p>
<p>2.注意下载安装的时候可以切换源,国内也可享用。![image-2!<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111840476.png" alt="img"></p>
<p>3.ComfyUI管理器界面安装</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111840477.png" alt="img"></p>
<blockquote>
<p>下载插件可能需要科学,已经打包好了放在企鹅群:306146537</p>
<p>插件安装经常会有提示更新,这个很正常。</p>
</blockquote>
<h2 id="AIGODLIKE-COMFYUI-TRANSLATION"><a href="#AIGODLIKE-COMFYUI-TRANSLATION" class="headerlink" title="AIGODLIKE-COMFYUI-TRANSLATION"></a><a href="https://github.com/AIGODLIKE/AIGODLIKE-COMFYUI-TRANSLATION"><strong>AIGODLIKE-COMFYUI-TRANSLATION</strong></a></h2><p>第一步当然是汉化了</p>
<p>功能:能汉化界面(安装完成后要手动去设置语言),添加能翻译的文本编码器(这个很重要,你就不需要输英文,或者手动翻译了。新建节点>ALEK节点>条件 然后就可以看到了)</p>
<h2 id="pythongosssss-ComfyUI-Custom-Scripts"><a href="#pythongosssss-ComfyUI-Custom-Scripts" class="headerlink" title="pythongosssss/ComfyUI-Custom-Scripts"></a><a href="https://github.com/pythongosssss/ComfyUI-Custom-Scripts"><strong>pythongosssss/ComfyUI-Custom-Scripts</strong></a></h2><p>功能:自动提示词补全、二级菜单、网络对齐、模型信息查看(来源civitai.com国外)、颜色自定义、网页小图标等等。。。</p>
<h2 id="SD放大"><a href="#SD放大" class="headerlink" title="SD放大"></a><a href="https://github.com/ssitu/ComfyUI_UltimateSDUpscale"><strong>SD放大</strong></a></h2><p>功能:SD放大</p>
<h2 id="ComfyUI-WD-1-4-Tagger"><a href="#ComfyUI-WD-1-4-Tagger" class="headerlink" title="ComfyUI WD 1.4 Tagger"></a><a href="https://github.com/pythongosssss/ComfyUI-WD14-Tagger"><strong>ComfyUI WD 1.4 Tagger</strong></a></h2><p><strong>我在这里的时候踩了一个坑,自动下载反推提示词模型需要代理,但是自动下载是在控制台执行的,代理需要开启tun,控制台才能链接代理,要是控制台也了连接不了请参考:<a href="https://xisoul.cn/archives/1712053060615">AI绘画拉取模型失败,DOS开启代理 | XiSoul Blog’s</a></strong></p>
<p>当然你要是感觉不影响你可以手动下载模型复制到插件的模型文件夹内:</p>
<blockquote>
<p>E:\comfyui\ComfyUI\custom_nodes\ComfyUI-WD14-Tagger\models</p>
</blockquote>
<p>模型地址:<a href="https://huggingface.co/SmilingWolf">SmilingWolf (Smiling Wolf) (huggingface.co)</a></p>
<p>功能:传入图片,反推提示词。</p>
<h2 id="SDXL-Prompt-Styler"><a href="#SDXL-Prompt-Styler" class="headerlink" title="SDXL Prompt Styler"></a>SDXL Prompt Styler</h2><p>twri地址:<a href="https://github.com/twri/sdxl_prompt_styler">twri/sdxl_prompt_styler: Custom prompt styler node for SDXL in ComfyUI (github.com)</a></p>
<p>wolfden地址:<a href="https://github.com/wolfden/ComfyUi_PromptStylers">wolfden/ComfyUi_PromptStylers: Style Prompts for ComfyUI (github.com)</a>(标准比第一种多一些)</p>
<p>风格json文件件路径:</p>
<blockquote>
<p>E:\comfyui\ComfyUI\custom_nodes\sdxl_prompt_styler</p>
</blockquote>
<p>当你有一套固定的风格提示词的时候,你可以直接编辑base.json文件,添加自己的风格模板。</p>
<p>功能:SDXL风格化提示词,SDXL风格化提示词(高级),记录提示词,高级,用很简单的提词生成不错的图形。</p>
<h2 id="ComfyUI’s-ControlNet-Auxiliary-Preprocessors"><a href="#ComfyUI’s-ControlNet-Auxiliary-Preprocessors" class="headerlink" title="ComfyUI’s ControlNet Auxiliary Preprocessors"></a><a href="https://github.com/Fannovel16/comfyui_controlnet_aux"><strong>ComfyUI’s ControlNet Auxiliary Preprocessors</strong></a></h2><p>功能:菜单中多出ControlNet预处理器标签页,可是手部修复,控制姿势</p>
<p>和WD1.4反推一样需要科学下载模型,文件后缀.pth</p>
<p>模型地址:<strong>*\ComfyUI\custom_nodes\comfyui_controlnet_aux\ckpts\lllyasviel\Annotators</strong></p>
<p>里面每个模型都是以文件夹的形式存放</p>
]]></content>
<tags>
<tag>-ComfyUI</tag>
</tags>
</entry>
<entry>
<title>hexo博客搭建</title>
<url>/2024/03/15/hexo%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/</url>
<content><![CDATA[<blockquote>
<p>hexo博客自由度非常高,对小白来说,不太友好,配置容易出错。网上有很多教程,但是不知道问题在哪还是很容易踩坑,这里我就以我自己的博客搭建过程来讲解一下hexo+github+cloudflare来实现</p>
</blockquote>
<p>这里引用一下有基础的同志可以参考一下:<a href="https://www.mubu.com/doc/C85kyZw3UU">https://www.mubu.com/doc/C85kyZw3UU</a><strong>首先声明,这个文档不是我写的,转载过来的,为了防止别人删除文档,所以我保存了一份</strong></p>
<h1 id="一、下载安装必要的工具"><a href="#一、下载安装必要的工具" class="headerlink" title="一、下载安装必要的工具"></a>一、下载安装必要的工具</h1><h2 id="1-安装node-js"><a href="#1-安装node-js" class="headerlink" title="1.安装node.js"></a>1.安装node.js</h2><p>这个是nodejs各个历史版本地址:<a href="https://nodejs.org/en/about/previous-releases">Node.js — Previous Releases (nodejs.org)</a></p>
<blockquote>
<p>为什么选择历史版本?</p>
<p>有些博客主题构建,需要的插件不支持新版本,或者构建出来页面空白。所以按照主题开发者的要求的版本来。</p>
</blockquote>
<p>如果你已经有了其他冰本的node.js请卸载使用对应的版本</p>
<h2 id="2-安装git工具"><a href="#2-安装git工具" class="headerlink" title="2.安装git工具"></a>2.安装git工具</h2><blockquote>
<p>这一步开始你得有一个github的账号,<a href="https://github.com/">https://github.com/</a> 如果是使用gitee账号请参考幕布,为什么我不使用gitee,因为gitee部署静态页面需要实名</p>
</blockquote>
]]></content>
<tags>
<tag>-hexo -搭建</tag>
</tags>
</entry>
<entry>
<title>使用cloudflare-works搭建自己docker加速源</title>
<url>/2024/06/20/%E4%BD%BF%E7%94%A8cloudflare-workers%E6%90%AD%E5%BB%BA%E8%87%AA%E5%B7%B1docker%E5%8A%A0%E9%80%9F%E6%BA%90/</url>
<content><![CDATA[<blockquote>
<p>在网上看到了许多教程,基本上部署都是手动的,docker镜像都要手动输入选择重新部署。要么都是些基本镜像仓库。</p>
<p>视频地址:【CloudFlare搭建doker加速源。都这么长时间了,你的docker还是跑不通吗?】 <a href="https://www.bilibili.com/video/BV1F533eHEsB/?share_source=copy_web&vd_source=0742f75b8f3995695112c41c1b64b995">https://www.bilibili.com/video/BV1F533eHEsB/?share_source=copy_web&vd_source=0742f75b8f3995695112c41c1b64b995</a></p>
</blockquote>
<h1 id="一、搭建说明"><a href="#一、搭建说明" class="headerlink" title="一、搭建说明"></a>一、搭建说明</h1><ul>
<li>这个脚本我不知道出处,是我大学同学发我的。如有侵权请联系删除</li>
<li><strong>需要自己有域名</strong>。用cf的域名,国内会被墙,所以没有什么用。我们需要用自己的域名使用cloudflare的cdn代理。</li>
<li>需要一个cloudflare账号。</li>
</ul>
<h1 id="二、搭建过程"><a href="#二、搭建过程" class="headerlink" title="二、搭建过程"></a>二、搭建过程</h1><h2 id="1-首先注册一个cloudflare账号"><a href="#1-首先注册一个cloudflare账号" class="headerlink" title="1.首先注册一个cloudflare账号"></a>1.首先注册一个cloudflare账号</h2><p>打开cloudflare官网:<a href="https://www.cloudflare-cn.com/">科赋锐信息科技Cloudflare | Cloudflare (cloudflare-cn.com)</a></p>
<p>有账号的跳过,没账号的需要注册一个。</p>
<h2 id="2-打开cloudflare-Workers-amp-Pages"><a href="#2-打开cloudflare-Workers-amp-Pages" class="headerlink" title="2.打开cloudflare Workers&Pages"></a>2.打开cloudflare Workers&Pages</h2><p>点击创建<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111755706.png" alt="img"></p>
<p>这个名字随便输</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111755707.png" alt="img"></p>
<p>往下翻点击完成。</p>
<h2 id="3-填写脚本"><a href="#3-填写脚本" class="headerlink" title="3.填写脚本"></a>3.填写脚本</h2><p>然后点击编辑代码</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111755708.png" alt="img"></p>
<p>把这里全删掉<img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111755709.png" alt="img">全选复制下面的代码。</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">'use strict'</span><br><span class="line"></span><br><span class="line">const hub_host = 'registry-1.docker.io'</span><br><span class="line">const auth_url = 'https://auth.docker.io'</span><br><span class="line">const workers_url = '这里填你的下一级域名,有人用的二级有人可能用三级域名,等等'</span><br><span class="line">/**</span><br><span class="line"> * static files (404.html, sw.js, conf.js)</span><br><span class="line"> */</span><br><span class="line"></span><br><span class="line">/** @type {RequestInit} */</span><br><span class="line">const PREFLIGHT_INIT = {</span><br><span class="line"> status: 204,</span><br><span class="line"> headers: new Headers({</span><br><span class="line"> 'access-control-allow-origin': '*',</span><br><span class="line"> 'access-control-allow-methods': 'GET,POST,PUT,PATCH,TRACE,DELETE,HEAD,OPTIONS',</span><br><span class="line"> 'access-control-max-age': '1728000',</span><br><span class="line"> }),</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">/**</span><br><span class="line"> * @param {any} body</span><br><span class="line"> * @param {number} status</span><br><span class="line"> * @param {Object<string, string>} headers</span><br><span class="line"> */</span><br><span class="line">function makeRes(body, status = 200, headers = {}) {</span><br><span class="line"> headers['access-control-allow-origin'] = '*'</span><br><span class="line"> return new Response(body, {status, headers})</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">/**</span><br><span class="line"> * @param {string} urlStr</span><br><span class="line"> */</span><br><span class="line">function newUrl(urlStr) {</span><br><span class="line"> try {</span><br><span class="line"> return new URL(urlStr)</span><br><span class="line"> } catch (err) {</span><br><span class="line"> return null</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">addEventListener('fetch', e => {</span><br><span class="line"> const ret = fetchHandler(e)</span><br><span class="line"> .catch(err => makeRes('cfworker error:\n' + err.stack, 502))</span><br><span class="line"> e.respondWith(ret)</span><br><span class="line">})</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">/**</span><br><span class="line"> * @param {FetchEvent} e</span><br><span class="line"> */</span><br><span class="line">async function fetchHandler(e) {</span><br><span class="line"> const getReqHeader = (key) => e.request.headers.get(key);</span><br><span class="line"></span><br><span class="line"> let url = new URL(e.request.url);</span><br><span class="line"></span><br><span class="line"> if (url.pathname === '/token') {</span><br><span class="line"> let token_parameter = {</span><br><span class="line"> headers: {</span><br><span class="line"> 'Host': 'auth.docker.io',</span><br><span class="line"> 'User-Agent': getReqHeader("User-Agent"),</span><br><span class="line"> 'Accept': getReqHeader("Accept"),</span><br><span class="line"> 'Accept-Language': getReqHeader("Accept-Language"),</span><br><span class="line"> 'Accept-Encoding': getReqHeader("Accept-Encoding"),</span><br><span class="line"> 'Connection': 'keep-alive',</span><br><span class="line"> 'Cache-Control': 'max-age=0'</span><br><span class="line"> }</span><br><span class="line"> };</span><br><span class="line"> let token_url = auth_url + url.pathname + url.search</span><br><span class="line"> return fetch(new Request(token_url, e.request), token_parameter)</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> url.hostname = hub_host;</span><br><span class="line"> </span><br><span class="line"> let parameter = {</span><br><span class="line"> headers: {</span><br><span class="line"> 'Host': hub_host,</span><br><span class="line"> 'User-Agent': getReqHeader("User-Agent"),</span><br><span class="line"> 'Accept': getReqHeader("Accept"),</span><br><span class="line"> 'Accept-Language': getReqHeader("Accept-Language"),</span><br><span class="line"> 'Accept-Encoding': getReqHeader("Accept-Encoding"),</span><br><span class="line"> 'Connection': 'keep-alive',</span><br><span class="line"> 'Cache-Control': 'max-age=0'</span><br><span class="line"> },</span><br><span class="line"> cacheTtl: 3600</span><br><span class="line"> };</span><br><span class="line"></span><br><span class="line"> if (e.request.headers.has("Authorization")) {</span><br><span class="line"> parameter.headers.Authorization = getReqHeader("Authorization");</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> let original_response = await fetch(new Request(url, e.request), parameter)</span><br><span class="line"> let original_response_clone = original_response.clone();</span><br><span class="line"> let original_text = original_response_clone.body;</span><br><span class="line"> let response_headers = original_response.headers;</span><br><span class="line"> let new_response_headers = new Headers(response_headers);</span><br><span class="line"> let status = original_response.status;</span><br><span class="line"></span><br><span class="line"> if (new_response_headers.get("Www-Authenticate")) {</span><br><span class="line"> let auth = new_response_headers.get("Www-Authenticate");</span><br><span class="line"> let re = new RegExp(auth_url, 'g');</span><br><span class="line"> new_response_headers.set("Www-Authenticate", response_headers.get("Www-Authenticate").replace(re, workers_url));</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> if (new_response_headers.get("Location")) {</span><br><span class="line"> return httpHandler(e.request, new_response_headers.get("Location"))</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> let response = new Response(original_text, {</span><br><span class="line"> status,</span><br><span class="line"> headers: new_response_headers</span><br><span class="line"> })</span><br><span class="line"> return response;</span><br><span class="line"> </span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">/**</span><br><span class="line"> * @param {Request} req</span><br><span class="line"> * @param {string} pathname</span><br><span class="line"> */</span><br><span class="line">function httpHandler(req, pathname) {</span><br><span class="line"> const reqHdrRaw = req.headers</span><br><span class="line"></span><br><span class="line"> // preflight</span><br><span class="line"> if (req.method === 'OPTIONS' &&</span><br><span class="line"> reqHdrRaw.has('access-control-request-headers')</span><br><span class="line"> ) {</span><br><span class="line"> return new Response(null, PREFLIGHT_INIT)</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> let rawLen = ''</span><br><span class="line"></span><br><span class="line"> const reqHdrNew = new Headers(reqHdrRaw)</span><br><span class="line"></span><br><span class="line"> const refer = reqHdrNew.get('referer')</span><br><span class="line"></span><br><span class="line"> let urlStr = pathname</span><br><span class="line"> </span><br><span class="line"> const urlObj = newUrl(urlStr)</span><br><span class="line"></span><br><span class="line"> /** @type {RequestInit} */</span><br><span class="line"> const reqInit = {</span><br><span class="line"> method: req.method,</span><br><span class="line"> headers: reqHdrNew,</span><br><span class="line"> redirect: 'follow',</span><br><span class="line"> body: req.body</span><br><span class="line"> }</span><br><span class="line"> return proxy(urlObj, reqInit, rawLen, 0)</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">/**</span><br><span class="line"> *</span><br><span class="line"> * @param {URL} urlObj</span><br><span class="line"> * @param {RequestInit} reqInit</span><br><span class="line"> */</span><br><span class="line">async function proxy(urlObj, reqInit, rawLen) {</span><br><span class="line"> const res = await fetch(urlObj.href, reqInit)</span><br><span class="line"> const resHdrOld = res.headers</span><br><span class="line"> const resHdrNew = new Headers(resHdrOld)</span><br><span class="line"></span><br><span class="line"> // verify</span><br><span class="line"> if (rawLen) {</span><br><span class="line"> const newLen = resHdrOld.get('content-length') || ''</span><br><span class="line"> const badLen = (rawLen !== newLen)</span><br><span class="line"></span><br><span class="line"> if (badLen) {</span><br><span class="line"> return makeRes(res.body, 400, {</span><br><span class="line"> '--error': `bad len: ${newLen}, except: ${rawLen}`,</span><br><span class="line"> 'access-control-expose-headers': '--error',</span><br><span class="line"> })</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> const status = res.status</span><br><span class="line"> resHdrNew.set('access-control-expose-headers', '*')</span><br><span class="line"> resHdrNew.set('access-control-allow-origin', '*')</span><br><span class="line"> resHdrNew.set('Cache-Control', 'max-age=1500')</span><br><span class="line"> </span><br><span class="line"> resHdrNew.delete('content-security-policy')</span><br><span class="line"> resHdrNew.delete('content-security-policy-report-only')</span><br><span class="line"> resHdrNew.delete('clear-site-data')</span><br><span class="line"></span><br><span class="line"> return new Response(res.body, {</span><br><span class="line"> status,</span><br><span class="line"> headers: resHdrNew</span><br><span class="line"> })</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<p>然后我们只需要修改这里,填写你自己的域名,这个域名必须能解析到cloudflare上面的。比如我的主域名是xisoul.cn,我填的是我自己的二级域名:docker.xisoul.cn</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111755710.png" alt="img"></p>
<p>然后的点击右上角部署</p>
<h1 id="三、修改域名"><a href="#三、修改域名" class="headerlink" title="三、修改域名"></a>三、修改域名</h1><p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111755711.png" alt="img"></p>
<p>输入你在脚本里面修改的域名。如果你的域名已经解析,这里直接可以添加域名Add Custom Domain</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111755712.png" alt="img"></p>
<p>cloudflare解析还是很快的,一两分钟不要就可以用了。</p>
<h1 id="四、修改配置"><a href="#四、修改配置" class="headerlink" title="四、修改配置"></a>四、修改配置</h1><p>我这是用的是自己香港的机子,有人会说你都用香港机子为什么用docker加速。这玩意官方的多少有点毛病,证书啥的连不通。自己搭建一个也方便使用。因为我是免费的这玩意每天有额度。用的人多了,没额度跑不通。你要是啥都没有可以联系我,免费的二级域名能解析cloudflare的也有很多。b站上面也有很多。</p>
<p>我的是1panel面板,你们可以自行百度。怎么改加速源.</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111755713.png" alt="img">大同小异都是找到下面这个配置文件然后修改。</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">{</span><br><span class="line"> "registry-mirrors": [</span><br><span class="line"> "https://xxx.xisoul.cn"</span><br><span class="line"> ]</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
]]></content>
<tags>
<tag>解决的问题</tag>
</tags>
</entry>
<entry>
<title>夸克自动签到转存到emby</title>
<url>/2024/05/19/%E5%A4%B8%E5%85%8B%E8%87%AA%E5%8A%A8%E7%AD%BE%E5%88%B0%E8%BD%AC%E5%AD%98%E5%88%B0emby/</url>
<content><![CDATA[<h1 id="夸克自动签到不同于之前的阿里盘内夸克签到脚本,这里可以自动转存管理文件,添加到emby中"><a href="#夸克自动签到不同于之前的阿里盘内夸克签到脚本,这里可以自动转存管理文件,添加到emby中" class="headerlink" title="夸克自动签到不同于之前的阿里盘内夸克签到脚本,这里可以自动转存管理文件,添加到emby中"></a>夸克自动签到不同于之前的阿里盘内夸克签到脚本,这里可以自动转存管理文件,添加到emby中</h1><p>b站视频地址:<a href="https://www.bilibili.com/video/BV1ry411a7Lt">https://www.bilibili.com/video/BV1ry411a7Lt</a></p>
<h2 id="一、准备"><a href="#一、准备" class="headerlink" title="一、准备"></a>一、准备</h2><p>你有服务器或者nas等等,有docker或者青龙都行。</p>
<p>由于nas在家关机了,我在外地。就不演示推到emby了。</p>
<p>来自于<a href="https://github.com/Cp0204/quark-auto-save">Cp0204/quark-auto-save: 夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙 (github.com)</a></p>
<h2 id="二、青龙搭建"><a href="#二、青龙搭建" class="headerlink" title="二、青龙搭建"></a>二、青龙搭建</h2><p>青龙命令一键就OK</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">ql repo https://github.com/Cp0204/quark-auto-save.git "quark" "" "notify"</span><br></pre></td></tr></table></figure>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111822206.png" alt="img"></p>
<p>然后执行拉库。</p>
<p>夸克网页版地址:<a href="https://pan.quark.cn/list#/list/all">夸克网盘 (quark.cn)</a>直接F12刷新找到cookie</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111822207.png" alt="img"></p>
<p>直接到此处配置cookie,不是直接使用环境变量。全部复制,粘贴到青龙里面。注意这里不能直接粘贴,我们点击编辑按钮,再进行粘贴,然后保存。</p>
<p>我们可以测试一下,已经签到成功了,不过任务没有配置。不能转存。以下是json文件,需要的自取。</p>
<p>正则学习地址:<a href="https://deerchao.cn/tutorials/regex/regex.htm">正则表达式30分钟入门教程 (deerchao.cn)</a></p>
<p>觉得麻烦的可以直接让ai帮你写。</p>
<figure class="highlight json"><table><tr><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"cookie"</span><span class="punctuation">:</span> <span class="punctuation">[</span> <span class="comment">//请用手机验证码登录,CK比较完整!</span></span><br><span class="line"> <span class="string">"Your pan.quark.cn Cookie1, Only this one will do save task."</span><span class="punctuation">,</span></span><br><span class="line"> <span class="string">"Your pan.quark.cn Cookie2, Only sign after this."</span></span><br><span class="line"> <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"push_config"</span><span class="punctuation">:</span> <span class="punctuation">{</span> <span class="comment">//无此字段则从环境变量(青龙设置)读取通知设置</span></span><br><span class="line"> <span class="attr">"QUARK_SIGN_NOTIFY"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//是否发送签到成功通知,也可在环境变量中设置</span></span><br><span class="line"> <span class="attr">"QYWX_AM"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span> <span class="comment">//企业微信应用通知示例</span></span><br><span class="line"> <span class="attr">"其他推送渠道//此项可删"</span><span class="punctuation">:</span> <span class="string">"配置方法同青龙"</span></span><br><span class="line"> <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"emby"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"url"</span><span class="punctuation">:</span> <span class="string">"http://yourdomain.com:8096"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"apikey"</span><span class="punctuation">:</span> <span class="string">""</span> <span class="comment">//在后台 高级-API秘钥 中生成</span></span><br><span class="line"> <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"tasklist"</span><span class="punctuation">:</span> <span class="punctuation">[</span> <span class="comment">//无任务则只签到</span></span><br><span class="line"> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"taskname"</span><span class="punctuation">:</span> <span class="string">"鸣xx年"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"shareurl"</span><span class="punctuation">:</span> <span class="string">"https://pan.quark.cn/s/39xxxx35#/list/share/17xxxx72-鸣xx年"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"savepath"</span><span class="punctuation">:</span> <span class="string">"/video/tv/鸣xx年/S01"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"pattern"</span><span class="punctuation">:</span> <span class="string">"^广告内容(\\d+).(mp4|mkv)"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"replace"</span><span class="punctuation">:</span> <span class="string">"\\1.\\2"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"enddate"</span><span class="punctuation">:</span> <span class="string">"2024-01-30"</span><span class="punctuation">,</span> <span class="comment">//可选,结束日期</span></span><br><span class="line"> <span class="attr">"emby_id"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span> <span class="comment">//可选,缺省时按taskname搜索匹配,为0时强制不匹配</span></span><br><span class="line"> <span class="attr">"ignore_extension"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//可选,忽略后缀</span></span><br><span class="line"> <span class="attr">"runweek"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="number">1</span><span class="punctuation">,</span> <span class="number">2</span><span class="punctuation">,</span> <span class="number">3</span><span class="punctuation">,</span> <span class="number">4</span><span class="punctuation">,</span> <span class="number">6</span><span class="punctuation">,</span> <span class="number">7</span><span class="punctuation">]</span><span class="punctuation">,</span> <span class="comment">//可选,指定星期几执行,无此字段则均执行</span></span><br><span class="line"> <span class="attr">"update_subdir"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span> <span class="comment">// 可选,子目录递归更新的正则表达式,如 "4k|1080p"</span></span><br><span class="line"> <span class="comment">// 以下字段无需配置</span></span><br><span class="line"> <span class="attr">"shareurl_ban"</span><span class="punctuation">:</span> <span class="string">"分享地址已失效"</span> <span class="comment">//记录分享是否失效;如有此字段将跳过任务,更新链接后请手动删去</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"> <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure>
<h2 id="三、docker搭建"><a href="#三、docker搭建" class="headerlink" title="三、docker搭建"></a>三、docker搭建</h2><p>我这里已经装了1panel面板,其实任何面板直接ssh命令都是可以的方法大同小异。</p>
<p>安装命令:</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">docker run -d \</span><br><span class="line"> --name quark-auto-save \</span><br><span class="line"> -p 5005:5005 \</span><br><span class="line"> -e WEBUI_USERNAME=admin \</span><br><span class="line"> -e WEBUI_PASSWORD=admin123 \</span><br><span class="line"> -v ./quark-auto-save/config:/app/config \</span><br><span class="line"> -v /etc/localtime:/etc/localtime \</span><br><span class="line"> --network bridge \</span><br><span class="line"> --restart unless-stopped \</span><br><span class="line"> cp0204/quark-auto-save:latest</span><br></pre></td></tr></table></figure>
<p>更新命令:</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -cR quark-auto-save</span><br></pre></td></tr></table></figure>
<p>管理地址:<a href="http://yourhost:5005/">http://yourip:5005</a></p>
<p>登录账号密码在环境变量中,可以自行修改。</p>
<div class="table-container">
<table>
<thead>
<tr>
<th style="text-align:left">环境变量</th>
<th>默认</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><code>WEBUI_USERNAME</code></td>
<td><code>admin</code></td>
<td>管理账号</td>
</tr>
<tr>
<td style="text-align:left"><code>WEBUI_PASSWORD</code></td>
<td><code>admin123</code></td>
<td>管理密码</td>
</tr>
</tbody>
</table>
</div>
]]></content>
<tags>
<tag>自动签到</tag>
</tags>
</entry>
<entry>
<title>nvm管理node.js版本</title>
<url>/2024/06/20/nvm%E7%AE%A1%E7%90%86node-js%E7%89%88%E6%9C%AC/</url>
<content><![CDATA[<blockquote>
<p>起因:自己在使用nodejs的时候经常遇到版本问题。每次手动重装更换版本觉得非常麻烦。之前在搭建静态博客的时候,遇到版本问题,生成出来博客静态页白屏。这个就是我部署在github上的静态博客:<a href="https://blog.xisoul.cn">https://blog.xisoul.cn</a><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835018.png" alt="img"></p>
</blockquote>
<h1 id="一、首先卸载Node-js"><a href="#一、首先卸载Node-js" class="headerlink" title="一、首先卸载Node.js"></a>一、首先卸载Node.js</h1><h2 id="1-打开控制面板"><a href="#1-打开控制面板" class="headerlink" title="1.打开控制面板"></a>1.打开控制面板</h2><p><a href="#test1">锚点</a></p>
<h2 id="2-卸载程序"><a href="#2-卸载程序" class="headerlink" title="2.卸载程序"></a>2.卸载程序</h2><p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835019.png" alt="img"></p>
<h2 id="3-找到Node-js卸载"><a href="#3-找到Node-js卸载" class="headerlink" title="3.找到Node.js卸载"></a>3.找到Node.js卸载</h2><h1 id="二、下载nvm"><a href="#二、下载nvm" class="headerlink" title="二、下载nvm"></a>二、下载nvm</h1><p>git操作版:<a href="https://gitcode.gitcode.host/docs-cn/nvm-docs-cn/">使用指南 - NVM 中文文档 (gitcode.host)</a></p>
<p>github地址:<a href="https://github.com/coreybutler/nvm-windows/releases">Releases · coreybutler/nvm-windows (github.com)</a></p>
<p>国内用户可以使用加速地址下载:<a href="https://github.xisoul.cn/gh/https://github.com/coreybutler/nvm-windows/releases/download/1.1.12/nvm-setup.exe">https://github.xisoul.cn/gh/https://github.com/coreybutler/nvm-windows/releases/download/1.1.12/nvm-setup.exe</a></p>
<p>想要搭建这个加速服务可以自行访问(照着文档来就行,难度不大):<a href="https://github.com/hunshcn/gh-proxy">hunshcn/gh-proxy: github release、archive以及项目文件的加速项目</a></p>
<h2 id="1-安装nvm"><a href="#1-安装nvm" class="headerlink" title="1.安装nvm"></a>1.安装nvm</h2><p>(记得记住安装路径,等会要用)一直下一步就行,当然你也可以自己修改安装存储路径。</p>
<p><strong>一个存储路径是nvm的,一个nodejs的</strong>。注意看清楚</p>
<h3 id="用法"><a href="#用法" class="headerlink" title="用法"></a>用法</h3><p><strong>nvm-windows 在管理 shell 中运行</strong>。您需要以管理员身份启动或命令提示符才能使用 nvm-windows<code>powershell</code></p>
<p>适用于 Windows 的 NVM 是一个命令行工具。只需在控制台中键入即可获取帮助。基本命令包括:<code>nvm</code></p>
<ul>
<li><strong><code>nvm arch [32|64]</code></strong>:显示节点是在 32 位还是 64 位模式下运行。指定 32 或 64 以覆盖默认体系结构。</li>
<li><strong><code>nvm debug</code></strong>:检查 NVM4W 进程中是否存在已知问题。</li>
<li><strong><code>nvm current</code></strong>:显示活动版本。</li>
<li><strong><code>nvm install <version> [arch]</code></strong>:版本可以是特定版本,“latest”表示最新的当前版本,“lts”表示最新的 LTS 版本。(可选)指定是安装 32 位还是 64 位版本(默认为 system arch)。将 [arch] 设置为“all”以安装 32 位和 64 位版本。添加到此命令的末尾以绕过远程下载服务器的 SSL 验证。<code>--insecure</code></li>
<li><strong><code>nvm list available</code></strong>:列出node.js安装。在末尾键入以显示可供下载的版本列表。<code>available</code></li>
<li><strong><code>nvm on</code></strong>:启用node.js版本管理。</li>
<li><strong><code>nvm off</code></strong>:禁用node.js版本管理(不卸载任何内容)。</li>
<li><strong><code>nvm proxy [url]</code></strong>:设置用于下载的代理。留空以查看当前代理。设置为“none”以删除代理。<code>[url]``[url]</code></li>
<li><strong><code>nvm uninstall <version></code></strong>:卸载特定版本。</li>
<li><strong><code>nvm use <version> [arch]</code></strong>:切换为使用指定版本。(可选)使用 、 或 。 是最新<em>安装</em>的版本。(可选)指定 32/64 位体系结构。 将继续使用所选版本,切换到 32/64 位模式。有关在特定目录中使用(或使用 )的信息,请参阅<a href="https://github.com/coreybutler/nvm-windows/issues/16">问题 #16</a>。<code>latest``lts``newest``newest``nvm use <arch>``use``.nvmrc</code></li>
<li><strong><code>nvm root <path></code></strong>:设置 nvm 应存储不同版本node.js的目录。如果未设置,将显示当前根目录。<code><path></code></li>
<li><strong><code>nvm version</code></strong>:显示当前运行的 NVM for Windows 版本。</li>
<li><strong><code>nvm node_mirror <node_mirror_url></code></strong>:设置节点镜像。中国人可以使用 <em><a href="https://npmmirror.com/mirrors/node/">https://npmmirror.com/mirrors/node/</a></em></li>
<li><strong><code>nvm npm_mirror <npm_mirror_url></code></strong>:设置 npm 镜像。中国人可以使用 <em><a href="https://npmmirror.com/mirrors/npm/">https://npmmirror.com/mirrors/npm/</a></em></li>
</ul>
<h2 id="2-检查安装是否成功"><a href="#2-检查安装是否成功" class="headerlink" title="2.检查安装是否成功"></a>2.检查安装是否成功</h2><p>打开命令提示符。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835020.png" alt="img"></p>
<p>或者按下键盘<code>windows+R</code>键,会弹出运行窗口输入<code>cmd</code>然后回车就会打开这个黑框框,然后输入<code>nvm version</code>回车就会弹出对应的安装版本。这时候就安装成功了。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835021.png" alt="img"></p>
<h2 id="3-配置"><a href="#3-配置" class="headerlink" title="3.配置"></a>3.配置</h2><p>直接使用命令,复制粘贴执行就可OK。</p>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">nvm node_mirror https://npmmirror.com/mirrors/node/</span><br><span class="line">nvm npm_mirror https://npmmirror.com/mirrors/npm/</span><br></pre></td></tr></table></figure>
<p>如果已经跑了命令直接跳到过下面手动修改步骤。</p>
<p>打开安装路径找到settings.txt打开</p>
<p>不知道路径的可以使用</p>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">nvm root</span><br></pre></td></tr></table></figure>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835022.png" alt="img"></p>
<p>然后将下面的配置粘贴到下面,保存</p>
<figure class="highlight xml"><table><tr><td class="code"><pre><span class="line">npm_mirror: https://npmmirror.com/mirrors/npm/</span><br><span class="line">npm_mirror: https://npmmirror.com/mirrors/npm/</span><br></pre></td></tr></table></figure>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835023.png" alt="img"></p>
<h1 id="三、nvm安装node"><a href="#三、nvm安装node" class="headerlink" title="三、nvm安装node"></a>三、nvm安装node</h1><p>输入<code>nvm list available</code>稍等几秒就加载出来了</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835024.png" alt="img"></p>
<p>比如我现在错误丢到GPT里面,GPT告诉我答案是这样的。</p>
<ul>
<li>‘@cloudflare/kv-asset-handler@0.3.3’ requires Node.js version ‘>=16.13’</li>
<li>‘consola@3.2.3’ requires Node.js version ‘^14.18.0 || >=16.10.0’</li>
<li>‘miniflare@3.20240610.1’ requires Node.js version ‘>=16.13’</li>
<li>‘wrangler@3.61.0’ requires Node.js version ‘>=16.17.0’</li>
</ul>
<p>那么我就安装<code>Node.js version '>=16.17.0'</code> <code>npm:'7.21.1'</code></p>
<p>因为官网历史下载改版了,显示的版本不全。我们可以点击控制台下面链接<a href="https://nodejs.org/en/about/previous-releases">Node.js — Node.js Releases (nodejs.org)</a>去官网查看自己需要的版本。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835025.png" alt="img"></p>
<h2 id="1-安装"><a href="#1-安装" class="headerlink" title="1. 安装"></a>1. 安装</h2><p><strong>Node.js已自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西</strong></p>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">nvm install <span class="number">16</span>.<span class="number">20</span>.<span class="number">0</span>(自己需要的版本)</span><br></pre></td></tr></table></figure>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835026.png" alt="img"></p>
<h2 id="2-环境变量配置"><a href="#2-环境变量配置" class="headerlink" title="2.环境变量配置"></a>2.环境变量配置</h2><p>首先要开启nvm版本管理<strong>nvm use 18.17.1(你要用的版本)</strong></p>
<p>可以解决你环境变量更换版本之后不生效问题。</p>
<p>然后使用<strong>nvm on</strong></p>
<h2 id="3-进阶配置"><a href="#3-进阶配置" class="headerlink" title="3.进阶配置"></a>3.进阶配置</h2><h3 id="手动配置"><a href="#手动配置" class="headerlink" title="手动配置"></a>手动配置</h3><p>首先在你安装nodejs的地方新建两个空文件夹,路径在安装nvm的时候会有两次路径确认,自己可以找一下,或者去环境变量里面看一下路径。</p>
<p><strong>node_global</strong>和<strong>node_cache</strong></p>
<p>建好以后开始配置环境:右键此电脑——属性——高级系统设置——高级——环境变量</p>
<p>nvm安装完成后就会有两个,没有的自己手动添加一下。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835027.png" alt="img"></p>
<p>在系统变量中新建</p>
<p>变量名:NODE_HOME</p>
<p>变量值:D:\Program Files\nodejs\node_global\node_modules(这个是你的自己nodejs安装路径)</p>
<p><strong>在系统变量的【path】中添加</strong></p>
<p>%NODE_HOME%</p>
<h3 id="指令配置"><a href="#指令配置" class="headerlink" title="指令配置"></a>指令配置</h3><p>指令配置cmd需要管理员模式(<strong>指令模式添加有风险</strong>,环境变量长度限制1024字符,如果你电脑安装了许多软件,可能导致Path过长,建议手动添加)</p>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">setx "NODE_HOME" "D:\Program Files\nodejs\node_global\node_modules" /m</span><br><span class="line">setx <span class="built_in">Path</span> "<span class="variable">%path%</span>;NODE_HOME%" /m</span><br></pre></td></tr></table></figure>
<p>如果你的环境变量提示超字符了,使用拓展大法,可以参考这篇文章:<a href="https://blog.csdn.net/github_34777264/article/details/85342877">解决windows下环境变量太大的问题(终极!!可用)_环境变量 缩起来-CSDN博客</a></p>
<p>完善node.js配置(直接nodejs软件安装的系统会默认将模块和缓存放在C盘,想要存在目标盘中,可先创建<strong>node_global</strong>和<strong>node_cache</strong>文档)</p>
<p><strong>当然你要是做开发,需要使用不同版本的,或者电脑中有hexo博客之类的,建议不要修改。</strong></p>
<p>这样无论切换什么版本,模块在哪里。我们只需要通过指令,简单配置一下环境变量,避免长时间拉取下载。</p>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">npm config <span class="built_in">set</span> prefix "D:\Program Files\nodejs\node_global"</span><br><span class="line">npm config <span class="built_in">set</span> cache "D:\Program Files\nodejs\node_cache"</span><br></pre></td></tr></table></figure>
<p>取消全局</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm config delete prefix</span><br><span class="line">npm config delete cache</span><br></pre></td></tr></table></figure>
<h2 id="4-npm换源"><a href="#4-npm换源" class="headerlink" title="4.npm换源"></a>4.npm换源</h2><p>你有梯子可以不用看这里。</p>
<p>来源:<a href="https://npmmirror.com/">npmmirror 镜像站</a></p>
<h3 id="使用说明"><a href="#使用说明" class="headerlink" title="使用说明"></a>使用说明</h3><p>你可以使用我们定制的<a href="https://npmmirror.com/package/cnpm">cnpm</a>命令行工具代替默认的 npm。<br>cnpm 支持除了写相关操作外的所有命令,例如 install、info、view 等。</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm install -g cnpm --registry=https://registry.npmmirror.com</span><br></pre></td></tr></table></figure>
<p>或者你直接通过添加 npm 参数 alias 一个新命令:</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">alias cnpm="npm --registry=https://registry.npmmirror.com \ --cache=$HOME/.npm/.cache/cnpm \ --disturl=https://npmmirror.com/mirrors/node \ --userconfig=$HOME/.cnpmrc"</span><br></pre></td></tr></table></figure>
<p>当然,你也可以使用任意你心仪的命令行工具,只要配置 registry 即可</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm config set registry https://registry.npmmirror.com</span><br></pre></td></tr></table></figure>
<h3 id="使用淘宝源"><a href="#使用淘宝源" class="headerlink" title="使用淘宝源"></a>使用淘宝源</h3><p>这是阿里更新后的,很可能报错</p>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">npm install -g cnpm --registry=https://registry.npm.taobao.org</span><br></pre></td></tr></table></figure>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">npm config <span class="built_in">set</span> registry https://registry.npm.taobao.org</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">cnpm install [name]</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">cnpm sync cnpmcore</span><br></pre></td></tr></table></figure>
<p>当然, 你可以直接通过 web 方式来同步, 界面打开时会自动比对版本信息</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">open https://npmmirror.com/sync/cnpmcore</span><br></pre></td></tr></table></figure>
<h1 id="四、卸载nvm"><a href="#四、卸载nvm" class="headerlink" title="四、卸载nvm"></a>四、卸载nvm</h1><h2 id="1、卸载软件"><a href="#1、卸载软件" class="headerlink" title="1、卸载软件"></a>1、卸载软件</h2><p>方法同<a id="test1">第一步</a>卸载node.js。</p>
<p>也可直接使用<a href="https://xisoul.cn/archives/1710772396722">电脑卸载软件推荐,解决卸载不干净问题 | XiSoul Blog’s</a>卸载,后续步骤可以忽略。</p>
<h2 id="2-删除环境变量"><a href="#2-删除环境变量" class="headerlink" title="2.删除环境变量"></a>2.删除环境变量</h2><p>环境变量打开方法:<a href="https://blog.csdn.net/scm_2008/article/details/129475517">Win10设置环境变量的5种方式,在哪打开? 如何打开?_环境变量在哪打开-CSDN博客</a></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835028.png" alt="img"></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835029.png" alt="img"></p>
<h1 id="五、node切换成功实际不生效解决方法"><a href="#五、node切换成功实际不生效解决方法" class="headerlink" title="五、node切换成功实际不生效解决方法"></a>五、node切换成功实际不生效解决方法</h1><p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111835030.png" alt="img"></p>
<p>直接删除16.20.0</p>
<figure class="highlight dos"><table><tr><td class="code"><pre><span class="line">nvm uninstall <span class="number">16</span>.<span class="number">20</span>.<span class="number">0</span></span><br></pre></td></tr></table></figure>
<p>然后nvm use 和nvm on切换一下</p>
]]></content>
<tags>
<tag>解决的问题</tag>
<tag>软件推荐</tag>
</tags>
</entry>
<entry>
<title>如何在hexo上创建一篇文章</title>
<url>/2024/03/10/%E5%A6%82%E4%BD%95%E5%9C%A8hexo%E4%B8%8A%E5%88%9B%E5%BB%BA%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0/</url>
<content><![CDATA[<h2 id="Page-Front-matter"><a href="#Page-Front-matter" class="headerlink" title="Page Front-matter"></a>Page Front-matter</h2><figure class="highlight markdown"><table><tr><td class="code"><pre><span class="line">---</span><br><span class="line">title:</span><br><span class="line">date:</span><br><span class="line">updated:</span><br><span class="line">type:</span><br><span class="line">comments:</span><br><span class="line">description:</span><br><span class="line">keywords:</span><br><span class="line">top<span class="emphasis">_img:</span></span><br><span class="line"><span class="emphasis">mathjax:</span></span><br><span class="line"><span class="emphasis">katex:</span></span><br><span class="line"><span class="emphasis">aside:</span></span><br><span class="line"><span class="emphasis">aplayer:</span></span><br><span class="line"><span class="emphasis">highlight_</span>shrink:</span><br><span class="line"><span class="section">random:</span></span><br><span class="line"><span class="section">---</span></span><br></pre></td></tr></table></figure>
<p>title 【必需】页面标题<br>date 【必需】页面创建日期<br>type 【必需】标签、分类和友情链接三个页面需要配置<br>updated 【可选】页面更新日期<br>description 【可选】页面描述<br>keywords 【可选】页面关键字<br>comments 【可选】显示页面评论模块 (默认 true)<br>top_img 【可选】页面顶部图片<br>mathjax 【可选】显示mathjax (当设置mathjax的per_page: false时,才需要配置,默认 false)<br>katex 【可选】显示katex (当设置katex的per_page: false时,才需要配置,默认 false)<br>aside 【可选】显示侧边栏 (默认 true)<br>aplayer 【可选】在需要的页面加载aplayer的js和css,请参考文章下面的音乐 配置<br>highlight_shrink 【可选】配置代码框是否展开 (true/false) (默认为设置中highlight_shrink的配置)<br>random 【可选】配置友情链接是否随机排序(默认为 false)</p>
<hr>
<h2 id="Post-Front-matter"><a href="#Post-Front-matter" class="headerlink" title="Post Front-matter"></a>Post Front-matter</h2><figure class="highlight markdown"><table><tr><td class="code"><pre><span class="line">title:</span><br><span class="line">date:</span><br><span class="line">updated:</span><br><span class="line">tags:</span><br><span class="line">categories:</span><br><span class="line">keywords:</span><br><span class="line">description:</span><br><span class="line">top<span class="emphasis">_img:</span></span><br><span class="line"><span class="emphasis">comments:</span></span><br><span class="line"><span class="emphasis">cover:</span></span><br><span class="line"><span class="emphasis">toc:</span></span><br><span class="line"><span class="emphasis">toc_</span>number:</span><br><span class="line">toc<span class="emphasis">_style_</span>simple:</span><br><span class="line">copyright:</span><br><span class="line">copyright<span class="emphasis">_author:</span></span><br><span class="line"><span class="emphasis">copyright_</span>author<span class="emphasis">_href:</span></span><br><span class="line"><span class="emphasis">copyright_</span>url:</span><br><span class="line">copyright<span class="emphasis">_info:</span></span><br><span class="line"><span class="emphasis">mathjax:</span></span><br><span class="line"><span class="emphasis">katex:</span></span><br><span class="line"><span class="emphasis">aplayer:</span></span><br><span class="line"><span class="emphasis">highlight_</span>shrink:</span><br><span class="line">aside:</span><br><span class="line">abcjs:</span><br></pre></td></tr></table></figure>
<p>写法 解释<br>title 【必需】文章标题<br>date 【必需】文章创建日期<br>updated 【可选】文章更新日期<br>tags 【可选】文章标签<br>categories 【可选】文章分类<br>keywords 【可选】文章关键字<br>description 【可选】文章描述<br>top_img 【可选】文章顶部图片<br>cover 【可选】文章缩略图(如果没有设置top_img,文章页顶部将显示缩略图,可设为false/图片地址/留空)<br>comments 【可选】显示文章评论模块(默认 true)<br>toc 【可选】显示文章TOC(默认为设置中toc的enable配置)<br>toc_number 【可选】显示toc_number(默认为设置中toc的number配置)<br>toc_style_simple 【可选】显示 toc 简洁模式<br>copyright 【可选】显示文章版权模块(默认为设置中post_copyright的enable配置)<br>copyright_author 【可选】文章版权模块的文章作者<br>copyright_author_href 【可选】文章版权模块的文章作者链接<br>copyright_url 【可选】文章版权模块的文章连结链接<br>copyright_info 【可选】文章版权模块的版权声明文字<br>mathjax 【可选】显示mathjax(当设置 mathjax 的 per_page: false 时,才需要配置,默认 false )<br>katex 【可选】显示 katex (当设置 katex 的 per_page: false 时,才需要配置,默认 false )<br>aplayer 【可选】在需要的页面加载 aplayer 的 js 和 css,请参考文章下面的音乐 配置<br>highlight_shrink 【可选】配置代码框是否展开(true/false)(默认为设置中 highlight_shrink 的配置)<br>aside 【可选】显示侧边栏 (默认 true)<br>abcjs 【可选】加载 abcjs (当设置 abcjs 的 per_page: false 时,才需要配置,默认 false )</p>
]]></content>
<tags>
<tag>hexo 教程</tag>
</tags>
</entry>
<entry>
<title>电脑卸载软件推荐,解决卸载不干净问题</title>
<url>/2024/03/18/%E7%94%B5%E8%84%91%E5%8D%B8%E8%BD%BD%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90%EF%BC%8C%E8%A7%A3%E5%86%B3%E5%8D%B8%E8%BD%BD%E4%B8%8D%E5%B9%B2%E5%87%80%E9%97%AE%E9%A2%98/</url>
<content><![CDATA[<blockquote>
<p>问题出现在我win11笔记本,电脑里面有office了,之前用的比较习惯,然后电脑里面又有WPS,所以正常按照卸载流程卸载,卸载不干净。问了好多人,网上查阅资料还是不行。有部分人会出现这个问题。</p>
</blockquote>
<h1 id="问题:WPS卸载不干净,右键新建还存在WPS的选项,默认方式还是office。"><a href="#问题:WPS卸载不干净,右键新建还存在WPS的选项,默认方式还是office。" class="headerlink" title="问题:WPS卸载不干净,右键新建还存在WPS的选项,默认方式还是office。"></a>问题:WPS卸载不干净,右键新建还存在WPS的选项,默认方式还是office。</h1><p>之前出现这个问题,网上的方法:</p>
<p>一、删除WPS注册表。</p>
<p>二、然后再就是重装,改默认然后再卸载。</p>
<p>以上两种方法我都试过了,我通过软件卸载后我大概知道问题出在哪,就是注册表删除不干净。我在使用第一种方法的时候,删除了几条注册表之后还是不行。所以转用第二种方法,我又在官网上面下载了WPS,然后改了修复,改了默认卸载还是不行。最后用软件删除注册表,里面大概有2000多条。</p>
<hr>
<h1 id="解决:使用HiBit-uninstaller卸载"><a href="#解决:使用HiBit-uninstaller卸载" class="headerlink" title="解决:使用HiBit uninstaller卸载"></a>解决:使用HiBit uninstaller卸载</h1><p>为什么卸载软件那么多推荐这款,因为比较轻量,功能齐全,免费。</p>
<p>官网:<a href="https://hibitsoft.ir/">HiBitSoftware</a></p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111812662.png" alt="1"></p>
<p>点击下载安装就可以了。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111812663.png" alt="2"></p>
<p>勾选所要卸载的软件,这里也可以多选,然后点击卸载所选项</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111812664.png" alt="3"></p>
<p>点击启动,卸载完之后这里就变成了扫描。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111812665.png" alt="4">然后就跳出扫描剩余项,拉倒下面我们看到,电脑残留的文件,还有注册表。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111812666.png" alt="5"></p>
<p>创建备份和日志报告,有分析需求的同志可以的打开。然后点击完成就OK了。</p>
<p><img src="https://v1.a2k6.com/xisoul/i/2024/09/11/202409111812667.png" alt="6"></p>
<p>工具里面有很多功能,可以找到自己电脑里面的垃圾文件,和没用的注册表,也可以将软件添加到上下文菜单(也就是鼠标右键)以后使用也方便。</p>
]]></content>
<tags>
<tag>解决的问题</tag>
<tag>软件推荐</tag>
</tags>
</entry>
</search>