-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
1160 lines (971 loc) · 149 KB
/
atom.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
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
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>IT飞鱼</title>
<subtitle>天高任鸟飞,海阔凭鱼跃</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="http://bobjoy.github.io/"/>
<updated>2018-03-28T08:37:49.349Z</updated>
<id>http://bobjoy.github.io/</id>
<author>
<name>鲍方亮</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>SpringMVC请求json,客户端显示406状态码</title>
<link href="http://bobjoy.github.io/2018/03/28/SpringMVC%E8%AF%B7%E6%B1%82json%EF%BC%8C%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%98%BE%E7%A4%BA406%E7%8A%B6%E6%80%81%E7%A0%81/"/>
<id>http://bobjoy.github.io/2018/03/28/SpringMVC请求json,客户端显示406状态码/</id>
<published>2018-03-28T05:39:31.000Z</published>
<updated>2018-03-28T08:37:49.349Z</updated>
<content type="html"><![CDATA[<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><ul>
<li><p>主要配置:</p>
<figure class="highlight xml"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div></pre></td><td class="code"><pre><div class="line"><span class="tag"><<span class="name">mvc:message-converters</span> <span class="attr">register-defaults</span>=<span class="string">"true"</span>></span></div><div class="line"> <span class="comment"><!-- StringHttpMessageConverter编码为UTF-8,防止乱码 --></span></div><div class="line"> <span class="tag"><<span class="name">bean</span> <span class="attr">class</span>=<span class="string">"org.springframework.http.converter.StringHttpMessageConverter"</span>></span></div><div class="line"> <span class="tag"><<span class="name">constructor-arg</span> <span class="attr">value</span>=<span class="string">"UTF-8"</span>/></span></div><div class="line"> <span class="tag"><<span class="name">property</span> <span class="attr">name</span> = <span class="string">"supportedMediaTypes"</span>></span></div><div class="line"> <span class="tag"><<span class="name">list</span>></span></div><div class="line"> <span class="tag"><<span class="name">value</span>></span>text/plain;charset=UTF-8<span class="tag"></<span class="name">value</span>></span></div><div class="line"> <span class="tag"><<span class="name">value</span>></span>text/html;charset=UTF-8<span class="tag"></<span class="name">value</span>></span></div><div class="line"> <span class="tag"></<span class="name">list</span>></span></div><div class="line"> <span class="tag"></<span class="name">property</span>></span></div><div class="line"> <span class="tag"></<span class="name">bean</span>></span></div><div class="line"> <span class="comment"><!-- 避免IE执行AJAX时,返回JSON出现下载文件 --></span></div><div class="line"> <span class="tag"><<span class="name">bean</span> <span class="attr">id</span>=<span class="string">"fastJsonHttpMessageConverter"</span> <span class="attr">class</span>=<span class="string">"com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"</span>></span></div><div class="line"> <span class="tag"><<span class="name">property</span> <span class="attr">name</span>=<span class="string">"supportedMediaTypes"</span>></span></div><div class="line"> <span class="tag"><<span class="name">list</span>></span></div><div class="line"> <span class="tag"><<span class="name">value</span>></span>application/json;charset=UTF-8<span class="tag"></<span class="name">value</span>></span></div><div class="line"> <span class="tag"></<span class="name">list</span>></span></div><div class="line"> <span class="tag"></<span class="name">property</span>></span></div><div class="line"> <span class="tag"></<span class="name">bean</span>></span></div><div class="line"><span class="tag"></<span class="name">mvc:message-converters</span>></span></div></pre></td></tr></table></figure>
</li>
<li><p>主要方法:</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"> * 新增</div><div class="line"> */</div><div class="line"><span class="meta">@RequestMapping</span>(value = <span class="string">"ajaxCreate"</span>, method = RequestMethod.POST)</div><div class="line"><span class="meta">@ResponseBody</span></div><div class="line"><span class="function"><span class="keyword">public</span> AjaxResponse <span class="title">ajaxCreate</span><span class="params">(@Valid @ModelAttribute(<span class="string">"m"</span>)</span> Sample m, BindingResult result) <span class="keyword">throws</span> AjaxException </span>{</div><div class="line"></div><div class="line"> <span class="keyword">if</span> (permissionList != <span class="keyword">null</span>) {</div><div class="line"> <span class="keyword">this</span>.permissionList.assertHasCreatePermission();</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">if</span> (hasError(m, result)) {</div><div class="line"> <span class="keyword">return</span> AjaxResponse.fail(getErrors(result));</div><div class="line"> }</div><div class="line"></div><div class="line"> baseService.save(m);</div><div class="line"> <span class="keyword">return</span> AjaxResponse.ok(<span class="string">"新增成功"</span>);</div><div class="line">}</div></pre></td></tr></table></figure>
</li>
<li><p>客户端请求:</p>
<ul>
<li>请求方法</li>
</ul>
<figure class="highlight javascript"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">$.ajax({</div><div class="line"> <span class="attr">url</span>: <span class="string">'/showcase/sample/ajaxCreate'</span>,</div><div class="line"> <span class="attr">type</span>: <span class="string">'POST'</span>,</div><div class="line"> <span class="attr">data</span>: form,</div><div class="line"> <span class="attr">dataType</span>: <span class="string">'json'</span>,</div><div class="line"> <span class="attr">success</span>: <span class="function"><span class="keyword">function</span>(<span class="params">ret</span>) </span>{</div><div class="line"> <span class="comment">// ...</span></div><div class="line"> }</div><div class="line">})</div></pre></td></tr></table></figure>
<p><img src="http://7xkexv.dl1.z0.glb.clouddn.com/18-3-28/82236650.jpg" alt=""></p>
<p><img src="http://7xkexv.dl1.z0.glb.clouddn.com/18-3-28/34804039.jpg" alt=""></p>
</li>
</ul>
<h2 id="解决过程"><a href="#解决过程" class="headerlink" title="解决过程"></a>解决过程</h2><ol>
<li><p>这个406错误码几乎没有碰到过,都不知道是什么意思,<a href="https://www.cnblogs.com/ylei11/p/6375862.html" target="_blank" rel="external">搜索</a>了解释:</p>
<blockquote>
<p>HTTP 错误 406<br>406 不可接受<br>根据此请求中所发送的“接受”标题,此请求所标识的资源只能生成内容特征为“不可接受”的响应实体。<br>如果问题依然存在,请与服务器的管理员联系。 </p>
</blockquote>
</li>
<li><p>顿时懵逼了,不知如何下手,于是谷歌半天,查到如下解决方案</p>
<ul>
<li><del>由于使用的是fastjson,所以在官网<a href="https://github.com/alibaba/fastjson/issues/55" target="_blank" rel="external">github</a>上找到了相应的<a href="http://yingzhuo.iteye.com/blog/1602545" target="_blank" rel="external">办法</a></del></li>
<li><del><a href="https://blog.csdn.net/woshiwanxin102213/article/details/37521303" target="_blank" rel="external">Spring4 MVC json问题(406 Not Acceptable)</a></del></li>
<li>……</li>
</ul>
</li>
<li><p>网络上查询到的解决方案大致都是一样的思路,然而在我的项目中并不起作用,折腾了一下午,解决思路都是围绕着后台,最好我尝试着重请求端去查找问题,于是我比对了以下正常请求与该请求,发现了一个不同:</p>
<p><img src="http://7xkexv.dl1.z0.glb.clouddn.com/18-3-28/81972710.jpg" alt=""></p>
<p><img src="http://7xkexv.dl1.z0.glb.clouddn.com/18-3-28/82236650.jpg" alt=""></p>
<p>圈红框的地方就是不同之处,正常的请求头比异常的少了一块 <code>Accept: application/json, text/javascript, */*; q=0.01</code>,试着从此处入手,修改了ajax请求,添加了Accept头:</p>
<figure class="highlight javascript"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">$.ajax({</div><div class="line"> <span class="attr">url</span>: <span class="string">'/showcase/sample/ajaxCreate'</span>,</div><div class="line"> <span class="attr">type</span>: <span class="string">'POST'</span>,</div><div class="line"> <span class="attr">data</span>: form,</div><div class="line"> <span class="attr">dataType</span>: <span class="string">'json'</span>,</div><div class="line"> <span class="attr">headers</span>: {</div><div class="line"> <span class="attr">Accept</span>: <span class="string">'application/json; charset=utf-8'</span></div><div class="line"> },</div><div class="line"> <span class="attr">success</span>: <span class="function"><span class="keyword">function</span>(<span class="params">ret</span>) </span>{</div><div class="line"> <span class="comment">// ...</span></div><div class="line"> }</div><div class="line">})</div></pre></td></tr></table></figure>
<p><img src="http://7xkexv.dl1.z0.glb.clouddn.com/18-3-28/15231607.jpg" alt=""></p>
<p>问题解决了</p>
</li>
</ol>
<h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>有时候解决问题不能太局限了,一开始是围绕着SpringMVC后台去查找问题,各种谷歌、StackOverflow的搜索,也尝试了找到的解决方案,由于每个人的场景肯不一样,所以找到的答案并不一定可以解决你的问题,所以这个时候就需要换个思路去想问题,既然406这个状态码是客户端请求错误,那么可以重客户端请求方面查找问题!</p>
]]></content>
<summary type="html">
<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><ul>
<li><p>主要配置:</p>
<figure class="highlight xml"><table><tr><t
</summary>
<category term="编程开发" scheme="http://bobjoy.github.io/categories/%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91/"/>
<category term="Java" scheme="http://bobjoy.github.io/tags/Java/"/>
<category term="SpringMVC" scheme="http://bobjoy.github.io/tags/SpringMVC/"/>
<category term="Ajax" scheme="http://bobjoy.github.io/tags/Ajax/"/>
<category term="406" scheme="http://bobjoy.github.io/tags/406/"/>
</entry>
<entry>
<title>Java中Bean属性的getter方法定义导致json数据缺失</title>
<link href="http://bobjoy.github.io/2018/03/22/Java%E4%B8%ADBean%E5%B1%9E%E6%80%A7%E7%9A%84getter%E6%96%B9%E6%B3%95%E5%AE%9A%E4%B9%89%E5%AF%BC%E8%87%B4json%E6%95%B0%E6%8D%AE%E7%BC%BA%E5%A4%B1/"/>
<id>http://bobjoy.github.io/2018/03/22/Java中Bean属性的getter方法定义导致json数据缺失/</id>
<published>2018-03-22T09:53:03.000Z</published>
<updated>2018-03-28T07:21:32.339Z</updated>
<content type="html"><![CDATA[<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>手头上有一个项目,使用的是 <code>jsp</code> 写的,数据都是使用 <code>jsp</code> 标签来处理的,现在想使用 <code>ajax</code> 请求。有一个页面用到了zTree,数据是用 <code>c:forEach</code> 标签封装的,如下:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">var zNodes =[</div><div class="line"> <c:forEach items="${trees}" var="m"></div><div class="line"> { id:${m.id}, pId:${m.pId}, name:"${m.name}", iconSkin:"${m.iconSkin}", open: true, root : ${m.root},isParent:${m.isParent}},</div><div class="line"> </c:forEach></div><div class="line">];</div></pre></td></tr></table></figure>
<p>javaBean如下:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div><div class="line">69</div><div class="line">70</div><div class="line">71</div><div class="line">72</div><div class="line">73</div><div class="line">74</div><div class="line">75</div></pre></td><td class="code"><pre><div class="line">public class ZTree<ID extends Serializable> implements Serializable {</div><div class="line"> private ID id;</div><div class="line"> private ID pId;</div><div class="line"> private String name;</div><div class="line"> private String iconSkin;</div><div class="line"> private boolean open;</div><div class="line"> private boolean root;</div><div class="line"> private boolean isParent;</div><div class="line"> private boolean nocheck = false;</div><div class="line"></div><div class="line"> public ID getId() {</div><div class="line"> return id;</div><div class="line"> }</div><div class="line"></div><div class="line"> public void setId(ID id) {</div><div class="line"> this.id = id;</div><div class="line"> }</div><div class="line"></div><div class="line"> public ID getpId() {</div><div class="line"> return pId;</div><div class="line"> }</div><div class="line"></div><div class="line"> public void setpId(ID pId) {</div><div class="line"> this.pId = pId;</div><div class="line"> }</div><div class="line"></div><div class="line"> public String getName() {</div><div class="line"> return name;</div><div class="line"> }</div><div class="line"></div><div class="line"> public void setName(String name) {</div><div class="line"> this.name = name;</div><div class="line"> }</div><div class="line"></div><div class="line"> public String getIconSkin() {</div><div class="line"> return iconSkin;</div><div class="line"> }</div><div class="line"></div><div class="line"> public void setIconSkin(String iconSkin) {</div><div class="line"> this.iconSkin = iconSkin;</div><div class="line"> }</div><div class="line"></div><div class="line"> public boolean isOpen() {</div><div class="line"> return open;</div><div class="line"> }</div><div class="line"></div><div class="line"> public void setOpen(boolean open) {</div><div class="line"> this.open = open;</div><div class="line"> }</div><div class="line"></div><div class="line"> public boolean isRoot() {</div><div class="line"> return root;</div><div class="line"> }</div><div class="line"></div><div class="line"> public void setRoot(boolean root) {</div><div class="line"> this.root = root;</div><div class="line"> }</div><div class="line"></div><div class="line"> public boolean isIsParent() {</div><div class="line"> return isParent;</div><div class="line"> }</div><div class="line"></div><div class="line"> public void setIsParent(boolean isParent) {</div><div class="line"> this.isParent = isParent;</div><div class="line"> }</div><div class="line"></div><div class="line"> public boolean isNocheck() {</div><div class="line"> return nocheck;</div><div class="line"> }</div><div class="line"></div><div class="line"> public void setNocheck(boolean nocheck) {</div><div class="line"> this.nocheck = nocheck;</div><div class="line"> }</div><div class="line"></div><div class="line">}</div></pre></td></tr></table></figure>
<p>后台使用 <code>ajax</code> 异步请求该 <code>javaBean</code> 列表,发现 <code>json</code> 有一个属性 <code>pId</code> 始终没有返回,,在返回对象前都有数据,但是到了页面就没有了。</p>
<h2 id="解决办法"><a href="#解决办法" class="headerlink" title="解决办法"></a>解决办法</h2><p>检查了配置文件,调试了半天,只能从源头查找问题,看到bean,看到 <code>pId</code>,突然想起来getter、setter方法大小写的问题,试着将getter、setter方法修改如下:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">public ID getPId() {</div><div class="line"> return pId;</div><div class="line">}</div><div class="line"></div><div class="line">public void setPId(ID pId) {</div><div class="line"> this.pId = pId;</div><div class="line">}</div></pre></td></tr></table></figure>
<p>再ajax请求,数据原样返回来了。</p>
<blockquote>
<p>2018-03-23 后来发现使用的 <code>fastjson</code> 的版本太低了,只需要更新 <code>fastjson</code> 的版本,无须修改bean,同样可以解决问题</p>
</blockquote>
<h2 id="问题原因"><a href="#问题原因" class="headerlink" title="问题原因"></a>问题原因</h2><h3 id="javaBean规范"><a href="#javaBean规范" class="headerlink" title="javaBean规范"></a>javaBean规范</h3><p>javabean规范文档:<a href="http://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/,里面的有以下两个章节降到了具体的命名规则:" target="_blank" rel="external">http://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/,里面的有以下两个章节降到了具体的命名规则:</a></p>
<blockquote>
<ul>
<li>8.3.1 Simple properties</li>
<li>8.3.2 Boolean properties</li>
<li>8.8 Capitalization of inferred names.</li>
</ul>
</blockquote>
<p>这个文档里面说明了,从getter和setter方法名如何推倒出propertyName:</p>
<pre><code>一般情况,把除去get或者is(如果是boolean类型)后的部分首字母转成小写即可,比如:getFoo –> foo
如果除去get和is后端的部分,首字母和第二个字母都是大写,不作转换即可,比如:getXPath –> XPath
</code></pre><p>例如:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">private String getepath --> getGetepath()</div><div class="line">private String getEpath --> getGetEpath()</div><div class="line">private String epath --> getEpath() </div><div class="line">private String ePath --> getePath() // 首字母不用大写</div><div class="line">private String Epath --> getEpath() // 和epath的getter方法是一样的</div><div class="line">private String EPath --> getEPath()</div><div class="line">private boolean isenable --> isIsenable()</div><div class="line">private boolean isEnable --> isEnable() // 不是把首字母大写并在前面加is,其结果和enable的getter方法相同</div><div class="line">private boolean enable --> isEnable()</div><div class="line">private boolean eNable --> iseNable() // 首字母不用大写</div><div class="line">private boolean Enable --> isEnable() // 和enable的getter方法相同</div><div class="line">private boolean ENable --> isENable() //</div></pre></td></tr></table></figure>
<h3 id="什么时候你需要关注getter和setter方法的生成规则?"><a href="#什么时候你需要关注getter和setter方法的生成规则?" class="headerlink" title="什么时候你需要关注getter和setter方法的生成规则?"></a>什么时候你需要关注getter和setter方法的生成规则?</h3><ul>
<li>想要序列化为json对象时,如果你使用gson的话,基本没啥问题,但要是你使用了低版本的fastjson,那么可能会中枪了</li>
<li>要自己写代码拼装出getter和setter方法名,以此来通过反射查找Method时</li>
</ul>
<h3 id="编码规范"><a href="#编码规范" class="headerlink" title="编码规范"></a>编码规范</h3><ul>
<li>属性的前两个都以小写开头</li>
<li>boolean类型不要用is开头</li>
</ul>
<blockquote>
<p>参考文章:<a href="http://rongmayisheng.com/post/java%E4%B8%AD%E5%9D%91%E7%88%B9%E7%9A%84getter%E3%80%81setter%E6%96%B9%E6%B3%95%E7%9A%84%E6%BD%9C%E8%A7%84%E5%88%99" target="_blank" rel="external">http://rongmayisheng.com/post/java%E4%B8%AD%E5%9D%91%E7%88%B9%E7%9A%84getter%E3%80%81setter%E6%96%B9%E6%B3%95%E7%9A%84%E6%BD%9C%E8%A7%84%E5%88%99</a></p>
</blockquote>
]]></content>
<summary type="html">
<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>手头上有一个项目,使用的是 <code>jsp</code> 写的,数据都是使用 <code>jsp</code> 标签来处
</summary>
<category term="编程开发" scheme="http://bobjoy.github.io/categories/%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91/"/>
<category term="Java" scheme="http://bobjoy.github.io/tags/Java/"/>
<category term="JSON" scheme="http://bobjoy.github.io/tags/JSON/"/>
</entry>
<entry>
<title>MySQL-筛选出每个人的时间最新的一条记录</title>
<link href="http://bobjoy.github.io/2018/03/22/MySQL-%E7%AD%9B%E9%80%89%E5%87%BA%E6%AF%8F%E4%B8%AA%E4%BA%BA%E7%9A%84%E6%97%B6%E9%97%B4%E6%9C%80%E6%96%B0%E7%9A%84%E4%B8%80%E6%9D%A1%E8%AE%B0%E5%BD%95/"/>
<id>http://bobjoy.github.io/2018/03/22/MySQL-筛选出每个人的时间最新的一条记录/</id>
<published>2018-03-22T03:12:56.000Z</published>
<updated>2018-03-28T08:10:07.381Z</updated>
<content type="html"><![CDATA[<ul>
<li><p>场景:</p>
<p>查询每个学生最新的成绩记录</p>
</li>
<li><p>表结构</p>
</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">CREATE TABLE `student` (</div><div class="line"> `id` bigint(20) NOT NULL AUTO_INCREMENT,</div><div class="line"> `no` varchar(9) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,</div><div class="line"> `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,</div><div class="line"> `score` decimal(3, 1) NULL DEFAULT NULL,</div><div class="line"> `date` datetime(0) NULL DEFAULT NULL,</div><div class="line"> PRIMARY KEY (`id`) USING BTREE</div><div class="line">)</div></pre></td></tr></table></figure>
<ul>
<li>表数据:</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div></pre></td><td class="code"><pre><div class="line">1 600040407 王玲 80 2011-06-21 22:34:00</div><div class="line">2 600040407 王玲 56 2011-06-24 10:21:00</div><div class="line">3 600040407 王玲 64 2011-12-07 10:45:00</div><div class="line">4 600040407 王玲 84 2012-01-15 14:01:00</div><div class="line">5 600040407 王玲 62 2012-12-26 14:11:00</div><div class="line">6 600040408 魏武 58 2011-06-21 22:36:00</div><div class="line">7 600040408 魏武 75 2013-11-15 10:46:00</div><div class="line">8 600040408 魏武 68 2014-01-19 09:12:00</div><div class="line">9 600040408 魏武 99 2014-01-10 13:57:00</div><div class="line">10 600040408 魏武 73 2014-01-22 10:08:00</div><div class="line">11 600040435 于洋 86 2011-06-22 12:54:00</div><div class="line">12 600040435 于洋 77 2013-03-11 09:16:00</div><div class="line">13 600040435 于洋 68 2014-01-10 11:18:00</div><div class="line">14 600040435 于洋 88 2013-12-20 15:09:00</div></pre></td></tr></table></figure>
<ul>
<li>SQL实现:</li>
</ul>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line"><span class="comment">-- 方法1</span></div><div class="line"><span class="keyword">select</span> a.* <span class="keyword">from</span> student a</div><div class="line"><span class="keyword">where</span> <span class="keyword">not</span> <span class="keyword">exists</span>(</div><div class="line"> <span class="keyword">select</span> <span class="number">1</span> <span class="keyword">from</span> student b</div><div class="line"> <span class="keyword">where</span> b.no=a.no <span class="keyword">and</span> b.date>a.date</div><div class="line">)</div><div class="line"></div><div class="line"><span class="comment">-- 方法2</span></div><div class="line"><span class="keyword">select</span> a.* <span class="keyword">from</span> student a</div><div class="line"><span class="keyword">inner</span> <span class="keyword">join</span> (</div><div class="line"> <span class="keyword">select</span> <span class="keyword">no</span>,<span class="keyword">max</span>(<span class="built_in">date</span>) <span class="string">'maxdate'</span> <span class="keyword">from</span> student</div><div class="line"> <span class="keyword">group</span> <span class="keyword">by</span> <span class="keyword">no</span></div><div class="line">) b <span class="keyword">on</span> a.no=b.no <span class="keyword">and</span> a.date=b.maxdate</div></pre></td></tr></table></figure>
<ul>
<li>查询结果</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">5 600040407 王玲 62 2012-12-26 14:11:00</div><div class="line">10 600040408 魏武 73 2014-01-22 10:08:00</div><div class="line">13 600040435 于洋 68 2014-01-10 11:18:00</div></pre></td></tr></table></figure>
]]></content>
<summary type="html">
<ul>
<li><p>场景:</p>
<p>查询每个学生最新的成绩记录</p>
</li>
<li><p>表结构</p>
</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre
</summary>
<category term="编程开发" scheme="http://bobjoy.github.io/categories/%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91/"/>
<category term="Database" scheme="http://bobjoy.github.io/tags/Database/"/>
<category term="MySQL" scheme="http://bobjoy.github.io/tags/MySQL/"/>
</entry>
<entry>
<title>Git学习笔记(4)-导出新修改的文件</title>
<link href="http://bobjoy.github.io/2018/02/27/Git%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-4-%E5%AF%BC%E5%87%BA%E6%96%B0%E4%BF%AE%E6%94%B9%E7%9A%84%E6%96%87%E4%BB%B6/"/>
<id>http://bobjoy.github.io/2018/02/27/Git学习笔记-4-导出新修改的文件/</id>
<published>2018-02-27T01:52:14.000Z</published>
<updated>2018-03-28T07:37:46.727Z</updated>
<content type="html"><![CDATA[<p>在 <code>bash</code> 窗口中执行以下命令</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">git archive -o update.zip HEAD $(git diff --name-only HEAD)</div></pre></td></tr></table></figure>
]]></content>
<summary type="html">
<p>在 <code>bash</code> 窗口中执行以下命令</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td>
</summary>
</entry>
<entry>
<title>Java使用jsoup提取mht文件中图片</title>
<link href="http://bobjoy.github.io/2018/01/30/Java%E4%BD%BF%E7%94%A8jsoup%E6%8F%90%E5%8F%96mht%E6%96%87%E4%BB%B6%E4%B8%AD%E5%9B%BE%E7%89%87%E5%BC%82%E5%B8%B8/"/>
<id>http://bobjoy.github.io/2018/01/30/Java使用jsoup提取mht文件中图片异常/</id>
<published>2018-01-30T07:35:14.000Z</published>
<updated>2018-03-28T07:52:23.378Z</updated>
<content type="html"><![CDATA[<h2 id="jsoup读取mht文件方法"><a href="#jsoup读取mht文件方法" class="headerlink" title="jsoup读取mht文件方法"></a>jsoup读取mht文件方法</h2><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div><div class="line">69</div><div class="line">70</div><div class="line">71</div><div class="line">72</div><div class="line">73</div><div class="line">74</div><div class="line">75</div><div class="line">76</div><div class="line">77</div><div class="line">78</div><div class="line">79</div></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"> * 解析mht文件,包括提取图片</div><div class="line"> */</div><div class="line"><span class="meta">@SuppressWarnings</span>(<span class="string">"unchecked"</span>)</div><div class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> String <span class="title">parseMhtToHtml</span><span class="params">(String fileName)</span> <span class="keyword">throws</span> Exception </span>{</div><div class="line"></div><div class="line"> <span class="comment">// 读取文件内容</span></div><div class="line"> List<String> lines = FileUtils.readLines(<span class="keyword">new</span> File(fileName), <span class="string">"GBK"</span>);</div><div class="line"></div><div class="line"> Map<String, Object> map = <span class="keyword">new</span> HashMap<>();</div><div class="line"> List<Map<String, Object>> list = <span class="keyword">new</span> ArrayList<>();</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">6</span>; i < lines.size(); i++) {</div><div class="line"> String line = lines.get(i).trim();</div><div class="line"></div><div class="line"> <span class="keyword">if</span> (line.startsWith(<span class="string">"----boundary"</span>)) {</div><div class="line"> map = <span class="keyword">new</span> HashMap<>();</div><div class="line"> map.put(<span class="string">"headers"</span>, <span class="keyword">new</span> HashMap<>());</div><div class="line"> map.put(<span class="string">"content"</span>, <span class="keyword">new</span> ArrayList<>());</div><div class="line"> list.add(map);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">if</span> (!line.startsWith(<span class="string">"----boundary"</span>) && !<span class="string">""</span>.equals(line)) {</div><div class="line"> <span class="keyword">if</span> (line.contains(<span class="string">":"</span>)) {</div><div class="line"> String[] kv = line.split(<span class="string">":"</span>);</div><div class="line"> ((Map<String, String>) map.get(<span class="string">"headers"</span>)).put(kv[<span class="number">0</span>], kv[<span class="number">1</span>].trim());</div><div class="line"> } <span class="keyword">else</span> {</div><div class="line"> ((List<String>) map.get(<span class="string">"content"</span>)).add(line);</div><div class="line"> }</div><div class="line"></div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> Map<String, String> resultMap = <span class="keyword">new</span> HashMap<>();</div><div class="line"></div><div class="line"> list.forEach(m -> {</div><div class="line"> Map<String, String> headers = (Map<String, String>) m.get(<span class="string">"headers"</span>);</div><div class="line"> List<String> content = (List<String>) m.get(<span class="string">"content"</span>);</div><div class="line"> <span class="keyword">if</span> (!headers.isEmpty() && !content.isEmpty()) {</div><div class="line"> String cid = headers.get(<span class="string">"Content-ID"</span>);</div><div class="line"> String html = StringUtils.join(content, <span class="string">""</span>);</div><div class="line"> <span class="keyword">if</span> (cid != <span class="keyword">null</span>) {</div><div class="line"> String prefix = <span class="string">"data:"</span>+headers.get(<span class="string">"Content-Type"</span>)+<span class="string">";"</span>+headers.get(<span class="string">"Content-Transfer-Encoding"</span>)+<span class="string">","</span>;</div><div class="line"> resultMap.put(cid.substring(<span class="number">1</span>, cid.length()-<span class="number">1</span>), prefix + html);</div><div class="line"> } <span class="keyword">else</span> {</div><div class="line"> resultMap.put(<span class="string">"html"</span>, html);</div><div class="line"> }</div><div class="line"> }</div><div class="line"> });</div><div class="line"></div><div class="line"> String html = <span class="keyword">new</span> String(Base64.getDecoder().decode(resultMap.get(<span class="string">"html"</span>)), <span class="string">"GBK"</span>);</div><div class="line"></div><div class="line"> Pattern compile = Pattern.compile(<span class="string">"cid:(\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12})"</span>);</div><div class="line"> Matcher matcher = compile.matcher(html);</div><div class="line"> <span class="keyword">while</span> (matcher.find()) {</div><div class="line"> html = html.replaceAll(matcher.group(), resultMap.get(matcher.group(<span class="number">1</span>)));</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">return</span> html;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="comment">/**</span></div><div class="line"> * 解析html(doc转html)到map中</div><div class="line"> */</div><div class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> Map<String, Object> <span class="title">parseMhtToMap</span><span class="params">()</span> </span>{</div><div class="line"></div><div class="line"> String html = parseMhtToHtml(<span class="string">"/path/to/hmt/file"</span>);</div><div class="line"></div><div class="line"> Document doc = Jsoup.parse(html);</div><div class="line"> Element body = doc.body();</div><div class="line"></div><div class="line"> <span class="comment">// 基本信息 START</span></div><div class="line"> Map<String, String> map = <span class="keyword">new</span> HashMap<>();</div><div class="line"></div><div class="line"> <span class="comment">// 提取头像</span></div><div class="line"> String image = body.select(<span class="string">"img"</span>).attr(<span class="string">"src"</span>);</div><div class="line"> map.put(AVATAR, image);</div><div class="line"></div><div class="line"> <span class="keyword">return</span> map;</div><div class="line">}</div></pre></td></tr></table></figure>
<blockquote>
<p>注意:在解析文件中,发现图片无法显示,最后分析原始html和经过jsoup解析的html(Jsoup.parse),发现BASE64图片图片长度不一致,导致无法再网页中显示,解决方法就是更新jsoup依赖版本,如下</p>
</blockquote>
<p>><br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line"><dependency></div><div class="line"> <groupId>org.jsoup</groupId></div><div class="line"> <artifactId>jsoup</artifactId></div><div class="line"> <version>1.11.1</version></div><div class="line"></dependency></div></pre></td></tr></table></figure></p>
<blockquote>
<p>改为:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line"><dependency></div><div class="line"> <groupId>org.jsoup</groupId></div><div class="line"> <artifactId>jsoup</artifactId></div><div class="line"> <version>1.11.2</version></div><div class="line"></dependency></div></pre></td></tr></table></figure>
</blockquote>
]]></content>
<summary type="html">
<h2 id="jsoup读取mht文件方法"><a href="#jsoup读取mht文件方法" class="headerlink" title="jsoup读取mht文件方法"></a>jsoup读取mht文件方法</h2><figure class="highlight
</summary>
<category term="编程开发" scheme="http://bobjoy.github.io/categories/%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91/"/>
<category term="Java" scheme="http://bobjoy.github.io/tags/Java/"/>
<category term="Jsoup" scheme="http://bobjoy.github.io/tags/Jsoup/"/>
<category term="mht" scheme="http://bobjoy.github.io/tags/mht/"/>
</entry>
<entry>
<title>Java开发问题集锦</title>
<link href="http://bobjoy.github.io/2018/01/09/Java%E5%BC%80%E5%8F%91%E9%97%AE%E9%A2%98%E9%9B%86%E9%94%A6/"/>
<id>http://bobjoy.github.io/2018/01/09/Java开发问题集锦/</id>
<published>2018-01-09T01:33:41.000Z</published>
<updated>2018-03-28T07:52:47.581Z</updated>
<content type="html"><![CDATA[<h2 id="Failed-to-load-class-“org-slf4j-impl-StaticLoggerBinder”"><a href="#Failed-to-load-class-“org-slf4j-impl-StaticLoggerBinder”" class="headerlink" title="Failed to load class “org.slf4j.impl.StaticLoggerBinder”"></a>Failed to load class “org.slf4j.impl.StaticLoggerBinder”</h2><h3 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".</div><div class="line">SLF4J: Defaulting to no-operation (NOP) logger implementation</div><div class="line">SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.</div></pre></td></tr></table></figure>
<h3 id="解决办法"><a href="#解决办法" class="headerlink" title="解决办法"></a>解决办法</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line"><dependency></div><div class="line"> <groupId>org.slf4j</groupId></div><div class="line"> <artifactId>slf4j-api</artifactId></div><div class="line"> <version>1.7.5</version></div><div class="line"></dependency></div><div class="line"><dependency></div><div class="line"> <groupId>org.slf4j</groupId></div><div class="line"> <artifactId>slf4j-simple</artifactId></div><div class="line"> <version>1.7.5</version></div><div class="line"></dependency></div></pre></td></tr></table></figure>
]]></content>
<summary type="html">
<h2 id="Failed-to-load-class-“org-slf4j-impl-StaticLoggerBinder”"><a href="#Failed-to-load-class-“org-slf4j-impl-StaticLoggerBinder”" class=
</summary>
<category term="编程开发" scheme="http://bobjoy.github.io/categories/%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91/"/>
<category term="Java" scheme="http://bobjoy.github.io/tags/Java/"/>
</entry>
<entry>
<title>[转]微信小程序之使用本地接口开发</title>
<link href="http://bobjoy.github.io/2018/01/05/%E8%BD%AC-%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B9%8B%E4%BD%BF%E7%94%A8%E6%9C%AC%E5%9C%B0%E6%8E%A5%E5%8F%A3%E5%BC%80%E5%8F%91/"/>
<id>http://bobjoy.github.io/2018/01/05/转-微信小程序之使用本地接口开发/</id>
<published>2018-01-05T01:06:20.000Z</published>
<updated>2018-03-28T07:48:50.070Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>原文地址:<a href="https://www.cnblogs.com/xcsn/p/7538371.html" target="_blank" rel="external">https://www.cnblogs.com/xcsn/p/7538371.html</a></p>
</blockquote>
<p>本文主要讲解如何使用本地接口进行开发,很多人都会遇到这个问题,特别是小程序上线后。</p>
<h2 id="一、解决思路"><a href="#一、解决思路" class="headerlink" title="一、解决思路"></a>一、解决思路</h2><p>在小程序开发工具设置网络代理,然后再通过Charles设置代理,将https域名转为本地接口进行访问。</p>
<p>以下示例的环境为win7 + 老版本的微信开发工具</p>
<h2 id="二、准备工作"><a href="#二、准备工作" class="headerlink" title="二、准备工作"></a>二、准备工作</h2><ol>
<li><p>配置https域名</p>
<p>为小程序配置request合法域名,在登录公众号平台去设置。 </p>
</li>
<li><p>安装Charles</p>
<p>下载地址:<a href="https://www.charlesproxy.com/download/" target="_blank" rel="external">https://www.charlesproxy.com/download/</a></p>
</li>
</ol>
<h2 id="三、配置Charles"><a href="#三、配置Charles" class="headerlink" title="三、配置Charles"></a>三、配置Charles</h2><ol>
<li><p>安装根证书</p>
<p>首先,打开 <code>Charles,Help->SSL Proxying->Install Charles Root Certificate</code> 安装证书到本地,指定位置到受信任的根证书颁发机构,否则需要进行下一步操作。</p>
<p>然后,按住 <code>win+r</code>, 在输入运行窗口输入 <code>certmgr.msc</code> 回车,在证书界面找到 中级证书颁发机构=》证书 找到证书 <code>Chambers of Commerce Root - 2008</code>,然后拖到 受信任的根证书颁发机构=》证书,在弹出框点击 “是”。</p>
</li>
<li><p>映射https域名到本地访问地址</p>
<p>打开 <code>Tools->Map Remote</code> 添加线上域名于本地(开发环境)服务的映射</p>
<p><img src="http://images2017.cnblogs.com/blog/374636/201709/374636-20170917222522063-1356009748.png" alt=""></p>
</li>
<li><p>代理设置</p>
<p>打开 <code>Proxy->Proxy Settings</code>,该端口号后面会用到</p>
<p><img src="http://images2017.cnblogs.com/blog/374636/201709/374636-20170917222801094-1443588606.png" alt=""></p>
<p><img src="http://images2017.cnblogs.com/blog/374636/201709/374636-20170917222813047-566650194.png" alt=""></p>
</li>
<li><p>SSL代理设置(重要)</p>
<p>打开 <code>Proxy->SSL Proxying Settings</code>, 没有设置此步骤,将会出现 <code>SSL Proxying not enabled for this host: enable in Proxy Settings, SSL locations</code> 的错误</p>
<p>以下例子中 host 为*,即过滤所有https,实际操作时指定为您的https地址即可</p>
<p><img src="http://images2017.cnblogs.com/blog/374636/201709/374636-20170917223348672-1389632.png" alt=""></p>
</li>
<li><p>打开 <code>Proxy->Windows Proxy</code> 启用本地的代理服务</p>
</li>
</ol>
<h2 id="四、配置开发工具"><a href="#四、配置开发工具" class="headerlink" title="四、配置开发工具"></a>四、配置开发工具</h2><ol>
<li><p>选择手动设置代理,然后填写本地的IP,以及前边在Charles中设置的代理端口号</p>
<p>在开发工具的最左侧菜单的 设置 进入,如下设置</p>
<p><img src="http://images2017.cnblogs.com/blog/374636/201709/374636-20170917224254750-999756734.png" alt=""></p>
</li>
</ol>
<p><strong>以往的坑</strong></p>
<blockquote>
<p>在微信开发者工具中,可以临时开启 开发环境不校验请求域名、TLS版本及HTTPS证书 选项,跳过服务器域名的校验。=》在不填appId时创建的项目下可以调试本地接口,但是微信接口都调用不了</p>
</blockquote>
<h2 id="参考:"><a href="#参考:" class="headerlink" title="参考:"></a>参考:</h2><ul>
<li><a href="http://www.cnblogs.com/jiasm/archive/2016/11/14/6063317.html" target="_blank" rel="external">http://www.cnblogs.com/jiasm/archive/2016/11/14/6063317.html</a></li>
<li><a href="https://github.com/nighthary/someutil/blob/master/doc/charles%E6%8A%93%E5%8C%85https%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98.md" target="_blank" rel="external">https://github.com/nighthary/someutil/blob/master/doc/charles%E6%8A%93%E5%8C%85https%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98.md</a></li>
</ul>
]]></content>
<summary type="html">
<blockquote>
<p>原文地址:<a href="https://www.cnblogs.com/xcsn/p/7538371.html" target="_blank" rel="external">https://www.cnblogs.com/xcsn/p/753
</summary>
<category term="编程开发" scheme="http://bobjoy.github.io/categories/%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91/"/>
<category term="微信" scheme="http://bobjoy.github.io/tags/%E5%BE%AE%E4%BF%A1/"/>
<category term="小程序" scheme="http://bobjoy.github.io/tags/%E5%B0%8F%E7%A8%8B%E5%BA%8F/"/>
</entry>
<entry>
<title>Git学习笔记-3-将项目提交到两个git仓库</title>
<link href="http://bobjoy.github.io/2018/01/04/Git%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-3-%E5%B0%86%E9%A1%B9%E7%9B%AE%E6%8F%90%E4%BA%A4%E5%88%B0%E4%B8%A4%E4%B8%AAgit%E4%BB%93%E5%BA%93/"/>
<id>http://bobjoy.github.io/2018/01/04/Git学习笔记-3-将项目提交到两个git仓库/</id>
<published>2018-01-04T07:06:50.000Z</published>
<updated>2018-03-28T07:37:24.928Z</updated>
<content type="html"><![CDATA[<h2 id="方案一-git-remote-add"><a href="#方案一-git-remote-add" class="headerlink" title="方案一: git remote add"></a>方案一: git remote add</h2><ul>
<li><p>查看远程主机</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">$ git remote -v</div><div class="line">origin https://github.com/username/repository.git (fetch)</div><div class="line">origin https://github.com/username/repository.git (push)</div></pre></td></tr></table></figure>
</li>
<li><p>添加远程主机</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ git remote add oschina https://git.oschina.net/username/repository.git</div></pre></td></tr></table></figure>
</li>
<li><p>查看远程主机</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">$ git remote -v</div><div class="line">origin https://github.com/username/repository.git (fetch)</div><div class="line">origin https://github.com/username/repository.git (push)</div><div class="line">oschina https://git.oschina.net/username/repository.git (fetch)</div><div class="line">oschina https://git.oschina.net/username/repository.git (push)</div></pre></td></tr></table></figure>
</li>
<li><p>推送到远程主机</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">$ git add .</div><div class="line">$ git commit -m 'test'</div><div class="line">$ git push -u origin master</div><div class="line">$ git push -u oschina master</div></pre></td></tr></table></figure>
</li>
</ul>
<h2 id="方案二-git-remote-set-url"><a href="#方案二-git-remote-set-url" class="headerlink" title="方案二: git remote set-url"></a>方案二: git remote set-url</h2><ul>
<li><p>查看远程主机</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">$ git remote -v</div><div class="line">origin https://github.com/username/repository.git (fetch)</div><div class="line">origin https://github.com/username/repository.git (push)</div></pre></td></tr></table></figure>
</li>
<li><p>使用 <code>git remote set-url</code> 命令</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ git remote set-url --add origin https://git.oschina.net/username/repository.git</div></pre></td></tr></table></figure>
</li>
<li><p>查看远程主机</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">$ git remote -v</div><div class="line">origin https://github.com/username/repository.git (fetch)</div><div class="line">origin https://github.com/username/repository.git (push)</div><div class="line">origin https://git.oschina.net/username/repository.git (push)</div></pre></td></tr></table></figure>
</li>
</ul>
<blockquote>
<p>参考 <a href="http://feitianbenyue.iteye.com/blog/2376791" target="_blank" rel="external">http://feitianbenyue.iteye.com/blog/2376791</a></p>
</blockquote>
]]></content>
<summary type="html">
<h2 id="方案一-git-remote-add"><a href="#方案一-git-remote-add" class="headerlink" title="方案一: git remote add"></a>方案一: git remote add</h2><ul>
<l
</summary>
<category term="编程开发" scheme="http://bobjoy.github.io/categories/%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91/"/>
<category term="Git" scheme="http://bobjoy.github.io/tags/Git/"/>
</entry>
<entry>
<title>JavaWeb文件下载知识整理</title>
<link href="http://bobjoy.github.io/2017/12/28/JavaWeb%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BD%E7%9F%A5%E8%AF%86%E6%95%B4%E7%90%86/"/>
<id>http://bobjoy.github.io/2017/12/28/JavaWeb文件下载知识整理/</id>
<published>2017-12-28T03:49:16.000Z</published>
<updated>2018-03-28T07:51:57.916Z</updated>
<content type="html"><![CDATA[<h2 id="中文文件名乱码"><a href="#中文文件名乱码" class="headerlink" title="中文文件名乱码"></a>中文文件名乱码</h2><p>JAVA文件下载时乱码有两种情况:</p>
<ol>
<li>下载时中文文件名乱码</li>
</ol>
<p>解决方法:</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">String userAgent = request.getHeader(<span class="string">"User-Agent"</span>);</div><div class="line">String fileName = <span class="string">"中文文件名称"</span>;</div><div class="line"></div><div class="line"><span class="comment">// 针对IE或者以IE为内核的浏览器:</span></div><div class="line"><span class="keyword">if</span> (userAgent.contains(<span class="string">"MSIE"</span>) || userAgent.contains(<span class="string">"Trident"</span>)) {</div><div class="line"> fileName = java.net.URLEncoder.encode(fileName, <span class="string">"UTF-8"</span>);</div><div class="line">} <span class="keyword">else</span> {</div><div class="line"> <span class="comment">// 非IE浏览器的处理:</span></div><div class="line"> fileName = <span class="keyword">new</span> String(fileName.getBytes(<span class="string">"UTF-8"</span>), <span class="string">"ISO-8859-1"</span>);</div><div class="line">}</div><div class="line">response.setHeader(<span class="string">"Content-Disposition"</span>, String.format(<span class="string">"attachment; filename=\"%s\""</span>, fileName + <span class="string">".xls"</span>));</div><div class="line">response.setContentType(<span class="string">"application/vnd.ms-excel;charset=utf-8"</span>);</div><div class="line">response.setCharacterEncoding(<span class="string">"UTF-8"</span>);</div></pre></td></tr></table></figure>
<ol>
<li>下载时因为路径中包含中文文件名乱码,提示找不到文件</li>
</ol>
<p>解决方法:修改Tomcat配置文件 <code>${CATLINA_HOME}/conf/server.xml</code> ,如下内容</p>
<figure class="highlight xml"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line"><span class="tag"><<span class="name">Connector</span> <span class="attr">port</span>=<span class="string">"8080"</span></span></div><div class="line"> <span class="attr">protocol</span>=<span class="string">"HTTP/1.1"</span></div><div class="line"> <span class="attr">connectionTimeout</span>=<span class="string">"20000"</span></div><div class="line"> <span class="attr">redirectPort</span>=<span class="string">"8443"</span></div><div class="line"> <span class="attr">URIEncoding</span>=<span class="string">"UTF-8"</span> /></div></pre></td></tr></table></figure>
<h2 id="Content-Disposition的作用以及attachment、inline的区别"><a href="#Content-Disposition的作用以及attachment、inline的区别" class="headerlink" title="Content-Disposition的作用以及attachment、inline的区别"></a>Content-Disposition的作用以及attachment、inline的区别</h2><ul>
<li><p><code>Content-Disposition</code> 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。当浏览器接收到头时,它会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名。</p>
</li>
<li><p>服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用 <code>Content-Disposition</code> 进行一下处理,关键在于一定要加上 <code>attachment</code> :</p>
</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">response.setHeader("Content-Disposition", "attachment;filename=FileName.txt");</div></pre></td></tr></table></figure>
<p> 备注:这样浏览器会提示保存还是打开,即使选择打开,也会使用相关联的程序比如记事本打开,而不是IE直接打开了。</p>
<ul>
<li><p>Java Web中下载文件时,我们一般设置 <code>Content-Disposition</code> 告诉浏览器下载文件的名称,是否在浏览器中内嵌显示.</p>
</li>
<li><p><code>Content-Disposition: inline;filename=foobar.pdf</code> 表示浏览器内嵌显示一个文件,<code>Content-Type</code> 值为 <code>application/octet-stream</code> 除外</p>
</li>
<li><p><code>Content-Disposition: attachment;filename=foobar.pdf</code> 表示会下载文件,如火狐浏览器中</p>
</li>
</ul>
]]></content>
<summary type="html">
<h2 id="中文文件名乱码"><a href="#中文文件名乱码" class="headerlink" title="中文文件名乱码"></a>中文文件名乱码</h2><p>JAVA文件下载时乱码有两种情况:</p>
<ol>
<li>下载时中文文件名乱码</li>
</o
</summary>
<category term="编程开发" scheme="http://bobjoy.github.io/categories/%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91/"/>
<category term="Java" scheme="http://bobjoy.github.io/tags/Java/"/>
</entry>
<entry>
<title>Windows命令集合</title>
<link href="http://bobjoy.github.io/2017/12/27/Windows%E5%91%BD%E4%BB%A4%E9%9B%86%E5%90%88/"/>
<id>http://bobjoy.github.io/2017/12/27/Windows命令集合/</id>
<published>2017-12-27T07:41:21.000Z</published>
<updated>2018-03-28T08:07:54.528Z</updated>
<content type="html"><![CDATA[<p>ipconfig———查看本机IP信息 (Linux系统下是ifonfig)</p>
<p>ping———检查网络是否连通</p>
<p>tracert———查询从本机到该IP地址所在的电脑要经过的路由器及其IP地址</p>
<p>winver———检查Windows版本</p>
<p>wmimgmt.msc—-打开windows管理体系结构(WMI)</p>
<p>wupdmgr——–windows更新程序</p>
<p>wscript——–windows脚本宿主设置</p>
<p>write———-写字板</p>
<p>winmsd———系统信息</p>
<p>dxdiag———检查DirectX信息</p>
<p>drwtsn32—— 系统医生</p>
<p>devmgmt.msc— 设备管理器</p>
<p>dfrg.msc——-磁盘碎片整理程序</p>
<p>diskmgmt.msc—磁盘管理实用程序</p>
<p>dcomcnfg——-打开系统组件服务</p>
<p>ddeshare——-打开DDE共享设置</p>
<p>dvdplay——–DVD播放器</p>
<p>tsshutdn——-60秒倒计时关机命令</p>
<p>taskmgr——–任务管理器</p>
<p>regedit.exe—-注册表</p>
<p>rsop.msc——-组策略结果集</p>
<p>regedt32——-注册表编辑器</p>
<p>rononce -p —-15秒关机</p>
<p>osk————打开屏幕键盘</p>
<p>odbcad32——-ODBC数据源管理器</p>
<p>oobe/msoobe /a—-检查XP是否激活</p>
<p>lusrmgr.msc—-本机用户和组</p>
<p>logoff———注销命令</p>
<p>iexpress——-木马捆绑工具,系统自带</p>
<p>Nslookup——-IP地址侦测器</p>
<p>fsmgmt.msc—–共享文件夹管理器</p>
<p>utilman——–辅助工具管理器</p>
<p>gpedit.msc—–组策略</p>
<p>services、msc—本地服务设置</p>
]]></content>
<summary type="html">
<p>ipconfig———查看本机IP信息 (Linux系统下是ifonfig)</p>
<p>ping———检查网络是否连通</p>
<p>tracert———查询从本机到该IP地址所在的电脑要经过的路由器及其IP地址</p>
<p>winver———检查Windows版本<
</summary>
<category term="Windows" scheme="http://bobjoy.github.io/categories/Windows/"/>
<category term="Windows" scheme="http://bobjoy.github.io/tags/Windows/"/>
</entry>
<entry>
<title>好用的网盘搜索引擎搜藏</title>
<link href="http://bobjoy.github.io/2017/12/15/%E5%A5%BD%E7%94%A8%E7%9A%84%E7%BD%91%E7%9B%98%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E6%90%9C%E8%97%8F/"/>
<id>http://bobjoy.github.io/2017/12/15/好用的网盘搜索引擎搜藏/</id>
<published>2017-12-15T01:15:22.000Z</published>
<updated>2018-03-28T07:59:38.107Z</updated>
<content type="html"><![CDATA[<h2 id="网盘搜索引擎"><a href="#网盘搜索引擎" class="headerlink" title="网盘搜索引擎"></a>网盘搜索引擎</h2><ul>
<li><p>电驴 <a href="http://www.verycd.com" target="_blank" rel="external">http://www.verycd.com</a></p>
</li>
<li><p>城通网盘 <a href="https://www.ctfile.com" target="_blank" rel="external">https://www.ctfile.com</a></p>
</li>
<li><p>盘多多 <a href="http://www.panduoduo.net" target="_blank" rel="external">http://www.panduoduo.net</a></p>
</li>
<li><p>西林街 <a href="http://www.xilinjie.com" target="_blank" rel="external">http://www.xilinjie.com</a></p>
</li>
<li><p>胖次网盘搜索引擎 <a href="http://www.panc.cc" target="_blank" rel="external">http://www.panc.cc</a></p>
</li>
<li><p>呆木瓜 <a href="http://md5.daimugua.com" target="_blank" rel="external">http://md5.daimugua.com</a> (关停)</p>
</li>
<li><p>盘搜 <a href="http://www.pansou.com" target="_blank" rel="external">http://www.pansou.com</a></p>
</li>
<li><p>网盘搜 <a href="http://www.wangpansou.cn" target="_blank" rel="external">http://www.wangpansou.cn</a></p>
</li>
<li><p>盘易搜 <a href="http://panyisou.com" target="_blank" rel="external">http://panyisou.com</a> (不可用)</p>
</li>
<li><p>网盘搜啦 <a href="http://www.bdsola.com" target="_blank" rel="external">http://www.bdsola.com</a></p>
</li>
<li><p>盘盘搜 <a href="http://www.panpanso.com" target="_blank" rel="external">http://www.panpanso.com</a></p>
</li>
<li><p>特百度 <a href="http://www.tebaidu.com" target="_blank" rel="external">http://www.tebaidu.com</a></p>
</li>
<li><p>搜百度盘 <a href="http://www.sobaidupan.com" target="_blank" rel="external">http://www.sobaidupan.com</a></p>
</li>
<li><p>我的盘 <a href="http://www.wodepan.com" target="_blank" rel="external">http://www.wodepan.com</a></p>
</li>
<li><p>网盘007 <a href="http://wangpan007.com" target="_blank" rel="external">http://wangpan007.com</a></p>
</li>
<li><p>天天搜 <a href="http://www.daysou.com" target="_blank" rel="external">http://www.daysou.com</a></p>
</li>
<li><p>网盘屋 <a href="http://www.wangpanwu.com" target="_blank" rel="external">http://www.wangpanwu.com</a></p>
</li>
<li><p>百度网盘之家 <a href="http://wowenda.com" target="_blank" rel="external">http://wowenda.com</a></p>
</li>
<li><p>盘优搜 <a href="http://www.panuso.com" target="_blank" rel="external">http://www.panuso.com</a></p>
</li>
<li><p>百度云搜 <a href="http://www.baiduyunso.com" target="_blank" rel="external">http://www.baiduyunso.com</a></p>
</li>
<li><p>去转盘网 <a href="http://www.quzhuanpan.com" target="_blank" rel="external">http://www.quzhuanpan.com</a></p>
</li>
<li><p>百度云搜索 <a href="http://www.down20.com" target="_blank" rel="external">http://www.down20.com</a></p>
</li>
</ul>
<h2 id="实用网站"><a href="#实用网站" class="headerlink" title="实用网站"></a>实用网站</h2><ul>
<li><p>PDF导航 <a href="https://pdfcandy.com/tw" target="_blank" rel="external">https://pdfcandy.com/tw</a></p>
<p>一个十分全面的PDF导航网站,各种对PDF的编辑和转化,相信完全满足你对PDF的需求;真的十分强大的网站</p>
</li>
<li><p>V视频助手 <a href="http://v.ranks.xin" target="_blank" rel="external">http://v.ranks.xin</a></p>
<p>支持下载腾讯视频、秒拍视频、微博视频、今日头条、阳光宽频网、快手、微信、百度视频、梨视频、西瓜视频等;用了就知道好用,十分方便你对各种视频的下载</p>
</li>
<li><p>在线录屏、视频下载 <a href="https://www.videograbber.net/zh" target="_blank" rel="external">https://www.videograbber.net/zh</a></p>
<p>在线下载优酷、爱奇艺、哔哩哔哩等主流视频网站的视频。并且支持在线录屏和在线音视频格式转换,十分良心</p>
</li>
<li><p>迅捷PDF在线编辑器 <a href="http://app.xunjiepdf.com" target="_blank" rel="external">http://app.xunjiepdf.com</a></p>
<p>PDF文件需要编辑或者转换不用花时间去找一些软件或者花钱去进行转换,这个网站可以轻松帮你解决!</p>
</li>
</ul>
<h2 id="电影资源网站"><a href="#电影资源网站" class="headerlink" title="电影资源网站"></a>电影资源网站</h2><ul>
<li><p>电影街 <a href="http://t.cn/Rcs5iFq" target="_blank" rel="external">http://t.cn/Rcs5iFq</a></p>
</li>
<li><p>深影论坛 <a href="http://t.cn/RA2E8Ta" target="_blank" rel="external">http://t.cn/RA2E8Ta</a></p>
</li>
<li><p>BT之家 <a href="http://t.cn/RSmcbGy" target="_blank" rel="external">http://t.cn/RSmcbGy</a></p>
</li>
<li><p>电影港 <a href="http://t.cn/RAkhAeF" target="_blank" rel="external">http://t.cn/RAkhAeF</a></p>
</li>
<li><p>小浣熊 <a href="http://t.cn/RLF7zy5" target="_blank" rel="external">http://t.cn/RLF7zy5</a></p>
</li>
<li><p>QVOCD <a href="http://t.cn/zOueO0J" target="_blank" rel="external">http://t.cn/zOueO0J</a></p>
</li>
<li><p>嘎嘎影视 <a href="http://t.cn/RvfQBPZ" target="_blank" rel="external">http://t.cn/RvfQBPZ</a></p>
</li>
<li><p>BT家 <a href="http://t.cn/RSPW1hq" target="_blank" rel="external">http://t.cn/RSPW1hq</a></p>
</li>
<li><p>无极论坛 <a href="http://t.cn/RUV9YeG" target="_blank" rel="external">http://t.cn/RUV9YeG</a></p>
</li>
<li><p>蚂蚁高清 <a href="http://t.cn/RSmcbGA" target="_blank" rel="external">http://t.cn/RSmcbGA</a></p>
</li>
<li><p>ed2000 <a href="http://t.cn/hiVAw" target="_blank" rel="external">http://t.cn/hiVAw</a></p>
</li>
<li><p>ed2kfile <a href="http://t.cn/zRT4D78" target="_blank" rel="external">http://t.cn/zRT4D78</a></p>
</li>
<li><p>8688 <a href="http://t.cn/RSmcbGJ" target="_blank" rel="external">http://t.cn/RSmcbGJ</a></p>
</li>
<li><p>A站 <a href="http://t.cn/hiIr5" target="_blank" rel="external">http://t.cn/hiIr5</a></p>
</li>
<li><p>B站 <a href="http://t.cn/hbJPuO" target="_blank" rel="external">http://t.cn/hbJPuO</a></p>
</li>
<li><p>小调网 <a href="http://www.xiaopian.com" target="_blank" rel="external">http://www.xiaopian.com</a></p>
</li>
<li><p>全集网 <a href="http://www.quanji.la" target="_blank" rel="external">http://www.quanji.la</a></p>
</li>
<li><p>电影港 <a href="http://www.dygang.com" target="_blank" rel="external">http://www.dygang.com</a></p>
</li>
<li><p>泡饭影视 <a href="http://www.chapaofan.com" target="_blank" rel="external">http://www.chapaofan.com</a></p>
</li>
<li><p>电影天堂2018 <a href="http://www.dy2018.com" target="_blank" rel="external">http://www.dy2018.com</a></p>
</li>
<li><p>LOL电影天堂 <a href="http://www.loldytt.com" target="_blank" rel="external">http://www.loldytt.com</a></p>
</li>
<li><p>龙部落 <a href="http://www.lbldy.com" target="_blank" rel="external">http://www.lbldy.com</a></p>
</li>
<li><p>飘花电影网 <a href="http://www.piaohua.com" target="_blank" rel="external">http://www.piaohua.com</a></p>
</li>
<li><p>6V电影 <a href="http://www.6vhao.net" target="_blank" rel="external">http://www.6vhao.net</a></p>
</li>
<li><p>电影家园 <a href="http://www.dy1234.net" target="_blank" rel="external">http://www.dy1234.net</a></p>
</li>
<li><p>天天电影 <a href="http://www.tiantiandy.com" target="_blank" rel="external">http://www.tiantiandy.com</a></p>
</li>
<li><p>电影天堂 <a href="http://www.dygod.net" target="_blank" rel="external">http://www.dygod.net</a></p>
</li>
<li><p>破晓电影 <a href="http://www.poxiao.com" target="_blank" rel="external">http://www.poxiao.com</a></p>
</li>
<li><p>查片源 <a href="https://www.chapianyuan.com" target="_blank" rel="external">https://www.chapianyuan.com</a></p>
</li>
<li><p>茶杯狐 <a href="https://www.cupfox.com" target="_blank" rel="external">https://www.cupfox.com</a></p>
</li>
<li><p>SOS导航 <a href="http://lovedali.cn" target="_blank" rel="external">http://lovedali.cn</a></p>
</li>
<li><p>发烧屋影视网 <a href="http://www.hifiwu.com" target="_blank" rel="external">http://www.hifiwu.com</a></p>
</li>
<li><p>放肆够 <a href="http://vip.fansg.top/" target="_blank" rel="external">http://vip.fansg.top/</a></p>
</li>
</ul>
<h2 id="追剧追番影视网站"><a href="#追剧追番影视网站" class="headerlink" title="追剧追番影视网站"></a>追剧追番影视网站</h2><ul>
<li><p>五杀电影院 <a href="http://www.lol5s.com" target="_blank" rel="external">http://www.lol5s.com</a></p>
</li>
<li><p>电影首发站 <a href="http://www.dysfz.cc" target="_blank" rel="external">http://www.dysfz.cc</a></p>
</li>
<li><p>迅影网 <a href="http://www.xunyingwang.com" target="_blank" rel="external">http://www.xunyingwang.com</a></p>
</li>
<li><p>Neets <a href="http://neets.cc" target="_blank" rel="external">http://neets.cc</a></p>
</li>
<li><p>CK部落电影 <a href="http://www.ck180.net" target="_blank" rel="external">http://www.ck180.net</a></p>
</li>
<li><p>新视觉影视 <a href="http://www.yy6080.org" target="_blank" rel="external">http://www.yy6080.org</a></p>
</li>
<li><p>看看屋 <a href="http://www.kankanwu.com" target="_blank" rel="external">http://www.kankanwu.com</a></p>
</li>
</ul>
<h2 id="视频解析网站"><a href="#视频解析网站" class="headerlink" title="视频解析网站"></a>视频解析网站</h2><p><a href="http://bbs.chongbuluo.com/thread-3301-1-1.html" target="_blank" rel="external">http://bbs.chongbuluo.com/thread-3301-1-1.html</a></p>
<ul>
<li><p>会员影视中心 <a href="http://97ym.cn/vip" target="_blank" rel="external">http://97ym.cn/vip</a></p>
</li>
<li><p>闽视网-F站</p>
<ul>
<li><p><a href="http://www.fjyxdm.cn/vip" target="_blank" rel="external">http://www.fjyxdm.cn/vip</a></p>
</li>
<li><p><a href="http://www.kilikili.top/vip" target="_blank" rel="external">http://www.kilikili.top/vip</a></p>
</li>
</ul>
</li>
<li><p>我爱分享网 <a href="http://www.5ifxw.com/vip" target="_blank" rel="external">http://www.5ifxw.com/vip</a></p>
</li>
<li><p>有范全网通VIP <a href="http://vip.ufanw.com" target="_blank" rel="external">http://vip.ufanw.com</a></p>
</li>
<li><p>08影院 <a href="http://v.hzui.com" target="_blank" rel="external">http://v.hzui.com</a></p>
</li>
<li><p>旋风动漫 <a href="http://api.xfsub.com" target="_blank" rel="external">http://api.xfsub.com</a></p>
</li>
<li><p>FreeVideo搜索通用版 <a href="http://v.cnm.asia" target="_blank" rel="external">http://v.cnm.asia</a></p>
</li>
<li><p>够低调解析-vip视频在线解析 <a href="http://www.goudidiao.com/" target="_blank" rel="external">http://www.goudidiao.com/</a></p>
</li>
<li><p>超级看VIP视频 <a href="http://vip.deepba.com" target="_blank" rel="external">http://vip.deepba.com</a></p>
</li>
<li><p>九会员VIP视频解析站 <a href="http://yy.9vip.top/" target="_blank" rel="external">http://yy.9vip.top/</a></p>
</li>
<li><p>人人VIP视频网站解析 <a href="http://v.renrenfabu.com/" target="_blank" rel="external">http://v.renrenfabu.com/</a></p>
</li>
<li><p>会员影视中心 <a href="http://tejiamai.top/v/" target="_blank" rel="external">http://tejiamai.top/v/</a></p>
</li>
<li><p>爱6网 <a href="http://dy.a6vip.cn/" target="_blank" rel="external">http://dy.a6vip.cn/</a></p>
</li>
<li><p>福利吧 <a href="http://f.uliba.net/jiexi.php" target="_blank" rel="external">http://f.uliba.net/jiexi.php</a></p>
</li>
<li><p>小淘圈影院 <a href="http://www.52xtq.net/vip/" target="_blank" rel="external">http://www.52xtq.net/vip/</a></p>
</li>
<li><p>全民vip视频在线解析 <a href="http://www.qmaile.com/" target="_blank" rel="external">http://www.qmaile.com/</a></p>
</li>
<li><p>屌丝青年VIP视频解析 <a href="http://tv.dsqndh.com/" target="_blank" rel="external">http://tv.dsqndh.com/</a></p>
</li>
</ul>
]]></content>
<summary type="html">
<h2 id="网盘搜索引擎"><a href="#网盘搜索引擎" class="headerlink" title="网盘搜索引擎"></a>网盘搜索引擎</h2><ul>
<li><p>电驴 <a href="http://www.verycd.com" target="_b
</summary>
<category term="网站整理" scheme="http://bobjoy.github.io/categories/%E7%BD%91%E7%AB%99%E6%95%B4%E7%90%86/"/>
<category term="网站整理" scheme="http://bobjoy.github.io/tags/%E7%BD%91%E7%AB%99%E6%95%B4%E7%90%86/"/>
</entry>
<entry>
<title>Mybatis单个参数的if判断(针对异常:There is no getter for property..)</title>
<link href="http://bobjoy.github.io/2017/11/23/Mybatis%E5%8D%95%E4%B8%AA%E5%8F%82%E6%95%B0%E7%9A%84if%E5%88%A4%E6%96%AD%EF%BC%88%E9%92%88%E5%AF%B9%E5%BC%82%E5%B8%B8%EF%BC%9AThere-is-no-getter-for-property-%EF%BC%89/"/>
<id>http://bobjoy.github.io/2017/11/23/Mybatis单个参数的if判断(针对异常:There-is-no-getter-for-property-)/</id>
<published>2017-11-23T02:12:42.000Z</published>
<updated>2018-03-28T07:58:39.713Z</updated>
<content type="html"><![CDATA[<p>MyBatis在进行参数判断的时候,可以直接使用传入entity实体属性名或者map的键名,如下:</p>
<ol>
<li><p>常规代码</p>
<figure class="highlight xml"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line"><span class="tag"><<span class="name">update</span> <span class="attr">id</span>=<span class="string">"update"</span> <span class="attr">parameterType</span>=<span class="string">"com.demo.entity.Test"</span>></span></div><div class="line"> UPDATE t_test</div><div class="line"> <span class="tag"><<span class="name">set</span>></span></div><div class="line"> <span class="tag"><<span class="name">if</span> <span class="attr">test</span>=<span class="string">"field1 != null"</span>></span></div><div class="line"> field1 = #{field1,jdbcType=VARCHAR},</div><div class="line"> <span class="tag"></<span class="name">if</span>></span></div><div class="line"> <span class="tag"><<span class="name">if</span> <span class="attr">test</span>=<span class="string">"field2 != null"</span>></span></div><div class="line"> field2 = #{field2,jdbcType=INTEGER},</div><div class="line"> <span class="tag"></<span class="name">if</span>></span></div><div class="line"> <span class="tag"></<span class="name">set</span>></span></div><div class="line"> WHERE id = #{id,jdbcType=INTEGER}</div><div class="line"><span class="tag"></<span class="name">update</span>></span></div></pre></td></tr></table></figure>
<ul>
<li><p>但是单个参数和多参数的判断有个不同点,当我们的入参为entity实体,或者map的时候,使用 <code>if</code> 参数判断没任何问题。</p>
</li>
<li><p>但是当我们的入参为 <code>java.lang.Integer</code> 或者 <code>java.lang.String</code> 的时候,这时候就需要注意一些事情了,代码如下:</p>
</li>
</ul>
</li>
<li><p>错误代码</p>
<figure class="highlight xml"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line"><span class="tag"><<span class="name">select</span> <span class="attr">id</span>=<span class="string">"select"</span> <span class="attr">parameterType</span>=<span class="string">"java.lang.Integer"</span> <span class="attr">resultType</span>=<span class="string">"java.lang.Integer"</span>></span></div><div class="line"> SELECT field FROM t_test WHERE</div><div class="line"> <span class="tag"><<span class="name">if</span> <span class="attr">test</span>=<span class="string">"id != null"</span>></span></div><div class="line"> AND id = #{id}</div><div class="line"> <span class="tag"></<span class="name">if</span>></span></div><div class="line"><span class="tag"></<span class="name">select</span>></span></div></pre></td></tr></table></figure>
<ul>
<li><p>上述代码存在一些问题,首先入参是 <code>java.lang.Integer</code>,而不是map或者实体的入参方式,对于这类单个入参然后用 <code>if</code> 判断的,MyBatis有自己的内置对象</p>
</li>
<li><p>如果你在 <code>if</code> 判断里面写的是你的入参的对象名,那就报异常:<code>Internal error : nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'langId' in 'class java.lang.Integer'</code></p>
</li>
</ul>
</li>
<li><p>正确代码:</p>
<figure class="highlight xml"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line"><span class="tag"><<span class="name">select</span> <span class="attr">id</span>=<span class="string">"select"</span> <span class="attr">parameterType</span>=<span class="string">"java.lang.Integer"</span> <span class="attr">resultType</span>=<span class="string">"java.lang.Integer"</span>></span></div><div class="line"> SELECT field FROM t_test WHERE</div><div class="line"> <span class="tag"><<span class="name">if</span> <span class="attr">test</span>=<span class="string">"_parameter != null"</span>></span></div><div class="line"> AND id = #{id,jdbcType=INTEGER}</div><div class="line"> <span class="tag"></<span class="name">if</span>></span></div><div class="line"><span class="tag"></<span class="name">select</span>></span></div></pre></td></tr></table></figure>
<ul>
<li><p>这里MyBatis有内置对象 <code>_parameter</code>,对于单个参数的传入和判断,必须用 <code>_parameter</code> 来处理,而不是传入对象名 <code>id</code></p>
</li>
<li><p>在使用传入参数时,需要加上参数对于数据库类型</p>
</li>
</ul>
</li>
</ol>
<blockquote>
<p>参考:<a href="https://www.2cto.com/database/201505/401604.html" target="_blank" rel="external">https://www.2cto.com/database/201505/401604.html</a></p>
</blockquote>
]]></content>
<summary type="html">
<p>MyBatis在进行参数判断的时候,可以直接使用传入entity实体属性名或者map的键名,如下:</p>
<ol>
<li><p>常规代码</p>
<figure class="highlight xml"><table><tr><td class="gutter"><p
</summary>
</entry>
<entry>
<title>SSH公钥中保存多个git账号</title>
<link href="http://bobjoy.github.io/2017/08/15/SSH%E5%85%AC%E9%92%A5%E4%B8%AD%E4%BF%9D%E5%AD%98%E5%A4%9A%E4%B8%AAgit%E8%B4%A6%E5%8F%B7/"/>
<id>http://bobjoy.github.io/2017/08/15/SSH公钥中保存多个git账号/</id>
<published>2017-08-15T09:29:27.000Z</published>
<updated>2018-03-28T08:13:01.742Z</updated>
<content type="html"><![CDATA[<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>之前生成了GitHub的ssh公钥,可以免登陆提交代码,后来在oschina上也需要生成ssh公钥,发现GitHub的公钥就无法使用了,需要重新生成,但是又会将oschina的公钥覆盖掉。</p>
<h2 id="解决办法"><a href="#解决办法" class="headerlink" title="解决办法"></a>解决办法</h2><ol>
<li><p>创建不同的ssh公钥,修改默认文件路径</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div></pre></td><td class="code"><pre><div class="line">➜ ~ ssh-keygen -t rsa -C "[email protected]"</div><div class="line">Generating public/private rsa key pair.</div><div class="line">Enter file in which to save the key (/Users/xxx/.ssh/id_rsa): /Users/xxx/.ssh/id_rsa_oschina</div><div class="line">Enter passphrase (empty for no passphrase):</div><div class="line">Enter same passphrase again:</div><div class="line">Your identification has been saved in /Users/xxx/.ssh/id_rsa_oschina.</div><div class="line">Your public key has been saved in /Users/xxx/.ssh/id_rsa_oschina.pub.</div><div class="line">The key fingerprint is:</div><div class="line">SHA256:xVDjp+8X5x6YWx9gaxSpXo3Oj+ra0usZ9IwPtzYv8mk [email protected]</div><div class="line">The key's randomart image is:</div><div class="line">\+---[RSA 2048]----+</div><div class="line">| ..o |</div><div class="line">| + . . |</div><div class="line">| + + |</div><div class="line">| . * . |</div><div class="line">| S = = |</div><div class="line">| . X =.=. |</div><div class="line">| .+ X X+o |</div><div class="line">| ..o*EX .oo |</div><div class="line">| .=XXX++oo |</div><div class="line">\+----[SHA256]-----+</div></pre></td></tr></table></figure>
</li>
<li><p>添加生成的公钥</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ ssh-add ~/.ssh/id_rsa_oschina</div></pre></td></tr></table></figure>
<p> 添加之前可以删除缓存的公钥</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ ssh-add -D</div></pre></td></tr></table></figure>
<p> 添加之后查看添加的公钥</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ ssh-add -l</div></pre></td></tr></table></figure>
</li>
<li><p>将对应的ssh公钥添加到git账号上去</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">➜ cat ~/.ssh/id_rsa_oschina | pbcopy</div></pre></td></tr></table></figure>
</li>
<li><p>验证</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">➜ .ssh ssh -T [email protected]</div><div class="line">Welcome to Git@OSC, xxx!</div></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><p><a href="https://gist.github.com/Bobjoy/57d520585565e8afdc61495f7e71c3e6" target="_blank" rel="external">https://gist.github.com/Bobjoy/57d520585565e8afdc61495f7e71c3e6</a></p>
]]></content>
<summary type="html">
<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>之前生成了GitHub的ssh公钥,可以免登陆提交代码,后来在oschina上也需要生成ssh公钥,发现GitHub的公钥就
</summary>
<category term="编程开发" scheme="http://bobjoy.github.io/categories/%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91/"/>
<category term="Git" scheme="http://bobjoy.github.io/tags/Git/"/>
</entry>
<entry>
<title>记一次Spring注入Bean异常</title>
<link href="http://bobjoy.github.io/2017/08/03/%E8%AE%B0%E4%B8%80%E6%AC%A1Spring%E6%B3%A8%E5%85%A5Bean%E5%BC%82%E5%B8%B8/"/>
<id>http://bobjoy.github.io/2017/08/03/记一次Spring注入Bean异常/</id>
<published>2017-08-03T04:36:38.000Z</published>
<updated>2018-03-28T07:50:05.728Z</updated>
<content type="html"><![CDATA[<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div><div class="line">69</div><div class="line">70</div><div class="line">71</div><div class="line">72</div><div class="line">73</div><div class="line">74</div><div class="line">75</div><div class="line">76</div><div class="line">77</div><div class="line">78</div><div class="line">79</div><div class="line">80</div></pre></td><td class="code"><pre><div class="line"> org.springframework.beans.factory.BeanCreationException: Error creating bean with name <span class="string">'userLastOnlineController'</span>: Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: <span class="keyword">public</span> <span class="keyword">void</span> com.bfl.sa.common.web.controller.BaseCRUDController.setBaseService(com.bfl.sa.common.service.BaseService); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.bfl.sa.common.service.BaseService] found <span class="keyword">for</span> dependency: expected at least <span class="number">1</span> bean which qualifies as autowire candidate <span class="keyword">for</span> <span class="keyword">this</span> dependency. Dependency annotations: {}</div><div class="line"> at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:<span class="number">334</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:<span class="number">1214</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:<span class="number">543</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:<span class="number">482</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.support.AbstractBeanFactory$<span class="number">1</span>.getObject(AbstractBeanFactory.java:<span class="number">306</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:<span class="number">230</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:<span class="number">302</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:<span class="number">197</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:<span class="number">772</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:<span class="number">839</span>) ~[spring-context-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:<span class="number">538</span>) ~[spring-context-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:<span class="number">667</span>) ~[spring-webmvc-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:<span class="number">633</span>) ~[spring-webmvc-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:<span class="number">681</span>) ~[spring-webmvc-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:<span class="number">552</span>) ~[spring-webmvc-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:<span class="number">493</span>) ~[spring-webmvc-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:<span class="number">136</span>) ~[spring-webmvc-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at javax.servlet.GenericServlet.init(GenericServlet.java:<span class="number">158</span>) ~[servlet-api.jar:<span class="number">3.1</span>.FR]</div><div class="line"> at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:<span class="number">1227</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:<span class="number">1140</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:<span class="number">1027</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:<span class="number">5038</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:<span class="number">5348</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:<span class="number">145</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:<span class="number">725</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:<span class="number">701</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:<span class="number">717</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:<span class="number">1696</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:<span class="number">62</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:<span class="number">43</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at java.lang.reflect.Method.invoke(Method.java:<span class="number">498</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:<span class="number">300</span>) ~[tomcat-coyote.jar:<span class="number">8.0</span>.37]</div><div class="line"> at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:<span class="number">819</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:<span class="number">801</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:<span class="number">484</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:<span class="number">433</span>) ~[catalina.jar:<span class="number">8.0</span>.37]</div><div class="line"> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:<span class="number">62</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:<span class="number">43</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at java.lang.reflect.Method.invoke(Method.java:<span class="number">498</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:<span class="number">300</span>) ~[tomcat-coyote.jar:<span class="number">8.0</span>.37]</div><div class="line"> at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:<span class="number">819</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:<span class="number">801</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:<span class="number">1468</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at javax.management.remote.rmi.RMIConnectionImpl.access$<span class="number">300</span>(RMIConnectionImpl.java:<span class="number">76</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:<span class="number">1309</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:<span class="number">1401</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:<span class="number">829</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:<span class="number">62</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:<span class="number">43</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at java.lang.reflect.Method.invoke(Method.java:<span class="number">498</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:<span class="number">324</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.rmi.transport.Transport$<span class="number">1</span>.run(Transport.java:<span class="number">200</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.rmi.transport.Transport$<span class="number">1</span>.run(Transport.java:<span class="number">197</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at java.security.AccessController.doPrivileged(Native Method) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.rmi.transport.Transport.serviceCall(Transport.java:<span class="number">196</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:<span class="number">568</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:<span class="number">826</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$<span class="number">0</span>(TCPTransport.java:<span class="number">683</span>) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at java.security.AccessController.doPrivileged(Native Method) ~[?:<span class="number">1.8</span>.0_101]</div><div class="line"> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:<span class="number">682</span>) [?:<span class="number">1.8</span>.0_101]</div><div class="line"> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:<span class="number">1142</span>) [?:<span class="number">1.8</span>.0_101]</div><div class="line"> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:<span class="number">617</span>) [?:<span class="number">1.8</span>.0_101]</div><div class="line"> at java.lang.Thread.run(Thread.java:<span class="number">745</span>) [?:<span class="number">1.8</span>.0_101]</div><div class="line">Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: <span class="keyword">public</span> <span class="keyword">void</span> com.bfl.sa.common.web.controller.BaseCRUDController.setBaseService(com.bfl.sa.common.service.BaseService); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.bfl.sa.common.service.BaseService] found <span class="keyword">for</span> dependency: expected at least <span class="number">1</span> bean which qualifies as autowire candidate <span class="keyword">for</span> <span class="keyword">this</span> dependency. Dependency annotations: {}</div><div class="line"> at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:<span class="number">661</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:<span class="number">88</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:<span class="number">331</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> ... <span class="number">65</span> more</div><div class="line">Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.bfl.sa.common.service.BaseService] found <span class="keyword">for</span> dependency: expected at least <span class="number">1</span> bean which qualifies as autowire candidate <span class="keyword">for</span> <span class="keyword">this</span> dependency. Dependency annotations: {}</div><div class="line"> at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:<span class="number">1373</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:<span class="number">1119</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:<span class="number">1014</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:<span class="number">618</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:<span class="number">88</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:<span class="number">331</span>) ~[spring-beans-<span class="number">4.2</span>.5.RELEASE.jar:<span class="number">4.2</span>.5.RELEASE]</div><div class="line"> ... <span class="number">65</span> more</div></pre></td></tr></table></figure>
<h2 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h2><ul>
<li><code>BaseCRUDController</code> 类主要代码如下:</li>
</ul>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"> * 基础CRUD 控制器</div><div class="line"> */</div><div class="line"><span class="keyword">public</span> <span class="keyword">abstract</span> <span class="class"><span class="keyword">class</span> <span class="title">BaseCRUDController</span><<span class="title">E</span> <span class="keyword">extends</span> <span class="title">BaseEntity</span>, <span class="title">ID</span> <span class="keyword">extends</span> <span class="title">Serializable</span>> <span class="keyword">extends</span> <span class="title">BaseController</span><<span class="title">E</span>> </span>{</div><div class="line"></div><div class="line"> <span class="keyword">protected</span> BaseService<E, ID> baseService;</div><div class="line"></div><div class="line"> <span class="meta">@Autowired</span></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">setBaseService</span><span class="params">(BaseService<E, ID> baseService)</span> </span>{</div><div class="line"> <span class="keyword">this</span>.baseService = baseService;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="comment">// 以下忽略一些代码</span></div><div class="line">}</div></pre></td></tr></table></figure>
<ul>
<li>在 <code>BaseCRUDController.setBaseService(BaseService<E, ID> baseService)</code> 方法处断点调试</li>
</ul>
<p><img src="http://7xkexv.dl1.z0.glb.clouddn.com/20170803/spring_debug1.png" alt=""></p>
<p><img src="http://7xkexv.dl1.z0.glb.clouddn.com/20170803/spring_debug2.png" alt=""></p>
<ul>
<li>断点调试发现在实例化 <code>PermissionController</code> 和 <code>UserController</code> 时,对应的 <code>Service</code> 都是可以正常注入的,但是当实例化 <code>UserLastOnlineController</code> 时,就出现了以上描述的异常。</li>
</ul>
<p>Controller</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line"><span class="meta">@Controller</span></div><div class="line"><span class="meta">@RequestMapping</span>(value = <span class="string">"/admin/sys/permission/permission"</span>)</div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">PermissionController</span> <span class="keyword">extends</span> <span class="title">BaseCRUDController</span><<span class="title">Permission</span>, <span class="title">Long</span>> </span>{</div><div class="line">}</div></pre></td></tr></table></figure>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line"><span class="meta">@Controller</span>(<span class="string">"adminUserController"</span>)</div><div class="line"><span class="meta">@RequestMapping</span>(value = <span class="string">"/admin/sys/user"</span>)</div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">UserController</span> <span class="keyword">extends</span> <span class="title">BaseCRUDController</span><<span class="title">User</span>, <span class="title">Long</span>> </span>{</div><div class="line">}</div></pre></td></tr></table></figure>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line"><span class="meta">@Controller</span></div><div class="line"><span class="meta">@RequestMapping</span>(value = <span class="string">"/admin/sys/user/lastOnline"</span>)</div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">UserLastOnlineController</span> <span class="keyword">extends</span> <span class="title">BaseCRUDController</span><<span class="title">UserLastOnline</span>, <span class="title">Long</span>> </span>{</div><div class="line">}</div></pre></td></tr></table></figure>
<p>Service</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="meta">@Service</span></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">PermissionService</span> <span class="keyword">extends</span> <span class="title">BaseService</span><<span class="title">Permission</span>, <span class="title">Long</span>> </span>{</div><div class="line">}</div></pre></td></tr></table></figure>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="meta">@Service</span></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">UserService</span> <span class="keyword">extends</span> <span class="title">BaseService</span><<span class="title">User</span>, <span class="title">Long</span>> </span>{</div><div class="line">}</div></pre></td></tr></table></figure>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="meta">@Service</span></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">UserLastOnlineService</span> <span class="keyword">extends</span> <span class="title">BaseService</span><<span class="title">UserLastOnline</span>, <span class="title">String</span>> </span>{</div><div class="line">}</div></pre></td></tr></table></figure>
<ul>
<li>仔细比对 <code>Controller</code> 和 <code>Service</code> ,发现都只是简单的继承基础类,不过仔细观察,发现 <code>UserLastOnlineController</code> 和 <code>UserLastOnlineService</code> 中基类泛型中主键类型不同,然后将 <code>UserLastOnlineService</code> 中的主键类型修改为 <code>Long</code> 后,再调试就OK了</li>
</ul>
<p><img src="http://7xkexv.dl1.z0.glb.clouddn.com/20170803/spring_debug3.png" alt=""></p>
]]></content>
<summary type="html">
<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><figure class="highlight java"><table><tr><td class="gutter"><pre
</summary>
</entry>
<entry>
<title>MySQL-使用问题记录-持续更新</title>
<link href="http://bobjoy.github.io/2017/07/28/MySQL-%E4%BD%BF%E7%94%A8%E9%97%AE%E9%A2%98%E8%AE%B0%E5%BD%95-%E6%8C%81%E7%BB%AD%E6%9B%B4%E6%96%B0/"/>
<id>http://bobjoy.github.io/2017/07/28/MySQL-使用问题记录-持续更新/</id>
<published>2017-07-28T08:01:09.000Z</published>
<updated>2018-03-28T08:08:59.400Z</updated>
<content type="html"><![CDATA[<h2 id="SQL语句中delete语句中别名引发的问题"><a href="#SQL语句中delete语句中别名引发的问题" class="headerlink" title="SQL语句中delete语句中别名引发的问题"></a>SQL语句中delete语句中别名引发的问题</h2><ol>
<li><p>SQL语句</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">DELETE</span> <span class="keyword">FROM</span> sys_auth t <span class="keyword">WHERE</span> t.id=<span class="number">1</span></div></pre></td></tr></table></figure>
</li>
<li><p>错误提示</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't where t.id=111' at line 1</div></pre></td></tr></table></figure>
</li>
<li><p>解决方法</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">DELETE</span> <span class="keyword">FROM</span> sys_auth <span class="keyword">WHERE</span> <span class="keyword">id</span>=<span class="number">1</span></div></pre></td></tr></table></figure>
<p>或者</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">DELETE</span> t <span class="keyword">FROM</span> sys_auth t <span class="keyword">WHERE</span> t.id=<span class="number">1</span></div></pre></td></tr></table></figure>
</li>
<li><p>问题原因</p>
<p>别名使用姿势不对</p>
<blockquote>
<p><a href="https://dev.mysql.com/doc/refman/5.6/en/delete.html" target="_blank" rel="external">MySQL5.6参考手册</a></p>
<p><img src="http://7xkexv.dl1.z0.glb.clouddn.com/20170728/mysql_delete_alias.png" alt=""></p>
</blockquote>
</li>
</ol>
<h2 id="Sonar报错问题处理"><a href="#Sonar报错问题处理" class="headerlink" title="Sonar报错问题处理"></a>Sonar报错问题处理</h2><ul>
<li><p>错误描述</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">ERROR: Error during SonarQube Scanner execution</div><div class="line"></div><div class="line">ERROR: Failed to upload report - 500: An error has occurred. Please contact your administrator</div></pre></td></tr></table></figure>
</li>
<li><p>问题原因:mysql参数设置问题</p>
<ul>
<li><p>检查mysql参数:</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="meta">mysql></span><span class="bash"> SHOW VARIABLES LIKE <span class="string">'max_allowed_packet'</span>;</span></div></pre></td></tr></table></figure>
</li>
<li><p>修改/etc/my.cnf文件:</p>
<figure class="highlight ini"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="attr">max_allowed_packet</span> = <span class="number">50</span>M</div></pre></td></tr></table></figure>
</li>
</ul>
</li>
</ul>
<h2 id="无法删除数据库-ERROR-1010-HY000"><a href="#无法删除数据库-ERROR-1010-HY000" class="headerlink" title="无法删除数据库 ERROR 1010 (HY000)"></a>无法删除数据库 ERROR 1010 (HY000)</h2><p>在做数据库删除时出现这种提示,其原因是在database下面含有自己放进去的文件,譬如<em>.txt文件或</em>.sql文件等,只要进去把这个文件删了在执行</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">drop database database_name;</div></pre></td></tr></table></figure>
<h2 id="MySQL-命令行创建数据库"><a href="#MySQL-命令行创建数据库" class="headerlink" title="MySQL 命令行创建数据库"></a>MySQL 命令行创建数据库</h2><figure class="highlight sql"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">CREATE</span> <span class="keyword">DATABASE</span> dbname <span class="built_in">CHARACTER</span> <span class="keyword">SET</span> utf8mb4 <span class="keyword">COLLATE</span> utf8mb4_general_ci;</div><div class="line"><span class="keyword">CREATE</span> <span class="keyword">USER</span> <span class="string">'dbuser'</span> <span class="keyword">IDENTIFIED</span> <span class="keyword">BY</span> <span class="string">'dbpwd'</span>;</div><div class="line"><span class="keyword">GRANT</span> ALL <span class="keyword">ON</span> dbname.* <span class="keyword">TO</span> <span class="string">'dbuser'</span>@<span class="string">'%'</span> <span class="keyword">IDENTIFIED</span> <span class="keyword">BY</span> <span class="string">'dbpwd'</span>;</div><div class="line"><span class="keyword">GRANT</span> ALL <span class="keyword">ON</span> dbname.* <span class="keyword">TO</span> <span class="string">'dbuser'</span>@<span class="string">'localhost'</span> <span class="keyword">IDENTIFIED</span> <span class="keyword">BY</span> <span class="string">'dbpwd'</span>;</div><div class="line"><span class="keyword">FLUSH</span> <span class="keyword">PRIVILEGES</span>;</div></pre></td></tr></table></figure>
]]></content>
<summary type="html">
<h2 id="SQL语句中delete语句中别名引发的问题"><a href="#SQL语句中delete语句中别名引发的问题" class="headerlink" title="SQL语句中delete语句中别名引发的问题"></a>SQL语句中delete语句中别名引发的
</summary>
<category term="编程开发" scheme="http://bobjoy.github.io/categories/%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91/"/>
<category term="Database" scheme="http://bobjoy.github.io/tags/Database/"/>
<category term="MySQL" scheme="http://bobjoy.github.io/tags/MySQL/"/>
</entry>
<entry>
<title>Java读取INI文件时返回空</title>
<link href="http://bobjoy.github.io/2017/07/26/Java%E8%AF%BB%E5%8F%96INI%E6%96%87%E4%BB%B6%E6%97%B6%E8%BF%94%E5%9B%9E%E7%A9%BA/"/>
<id>http://bobjoy.github.io/2017/07/26/Java读取INI文件时返回空/</id>
<published>2017-07-26T07:48:51.000Z</published>
<updated>2018-03-28T07:53:09.677Z</updated>
<content type="html"><![CDATA[<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>Java 读取 INI配置 文件时,返回内容为空,也没有报错,配置内容如下</p>
<figure class="highlight"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[base_auth]</div><div class="line">/static/** = anon</div><div class="line">/u/** = anon</div><div class="line">/open/** = anon</div><div class="line">/user/** = kickout,simple,login</div></pre></td></tr></table></figure>
<h2 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h2><p>去除配置文件中每一行 ‘=’ 号两边的空格</p>
]]></content>
<summary type="html">
<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>Java 读取 INI配置 文件时,返回内容为空,也没有报错,配置内容如下</p>
<figure class="highl
</summary>
<category term="Java" scheme="http://bobjoy.github.io/categories/Java/"/>
<category term="Java" scheme="http://bobjoy.github.io/tags/Java/"/>
<category term="INI" scheme="http://bobjoy.github.io/tags/INI/"/>
</entry>
<entry>
<title>GIT使用问题记录(持续更新)</title>
<link href="http://bobjoy.github.io/2017/07/23/GIT%E4%BD%BF%E7%94%A8%E9%97%AE%E9%A2%98%E8%AE%B0%E5%BD%95-%E6%8C%81%E7%BB%AD%E6%9B%B4%E6%96%B0/"/>
<id>http://bobjoy.github.io/2017/07/23/GIT使用问题记录-持续更新/</id>
<published>2017-07-23T10:48:06.000Z</published>
<updated>2018-03-28T07:36:03.388Z</updated>
<content type="html"><![CDATA[<h2 id="Git-submodule-add-“a-git-directory-is-found-locally”-issue"><a href="#Git-submodule-add-“a-git-directory-is-found-locally”-issue" class="headerlink" title="Git submodule add: “a git directory is found locally” issue"></a>Git submodule add: “a git directory is found locally” issue</h2><h3 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">git submodule add https://github.com/iissnan/hexo-theme-next.git themes/next --branch master</div><div class="line">A git directory for 'themes/next' is found locally with remote(s):</div><div class="line"> origin https://github.com/XXX/hexo-theme-next.git</div><div class="line">If you want to reuse this local git directory instead of cloning again from</div><div class="line"> https://github.com/iissnan/hexo-theme-next.git</div><div class="line">use the '--force' option. If the local git directory is not the correct repo</div><div class="line">or you are unsure what this means choose another name with the '--name' option.</div></pre></td></tr></table></figure>
<h3 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h3><ol>
<li><p><code>git rm –-cached themes/next</code></p>
</li>
<li><p>删除 <code>.gitmodules</code> 文件中如下内容:</p>
</li>
</ol>
<figure class="highlight yml"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="string">[submodule</span> <span class="string">"themes/next"</span><span class="string">]</span></div><div class="line"> <span class="string">path</span> <span class="string">=</span> <span class="string">themes/next</span></div><div class="line"> <span class="string">url</span> <span class="string">=</span> <span class="attr">https://github.com/XXX/hexo-theme-next.git</span></div></pre></td></tr></table></figure>
<ol>
<li>删除 <code>.git/config</code> 文件中如下内容:</li>
</ol>
<figure class="highlight yml"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line"><span class="string">[submodule</span> <span class="string">"path_to_submodule"</span><span class="string">]</span></div><div class="line"> <span class="string">url</span> <span class="string">=</span> <span class="attr">https://github.com/XXX/hexo-theme-next.git</span></div></pre></td></tr></table></figure>
<ol>
<li><p>运行 <code>rm -rf .git/modules/themes/next</code></p>
</li>
<li><p>重新添加子模块 <code>git submodule add https://github.com/iissnan/hexo-theme-next.git</code></p>
</li>
</ol>
<h3 id="参考文章"><a href="#参考文章" class="headerlink" title="参考文章"></a>参考文章</h3><ul>
<li><a href="https://stackoverflow.com/questions/20929336/git-submodule-add-a-git-directory-is-found-locally-issue" target="_blank" rel="external">https://stackoverflow.com/questions/20929336/git-submodule-add-a-git-directory-is-found-locally-issue</a></li>
</ul>
<h2 id="git中不记录子模块中文件的修改"><a href="#git中不记录子模块中文件的修改" class="headerlink" title="git中不记录子模块中文件的修改"></a>git中不记录子模块中文件的修改</h2><h3 id="问题描述-1"><a href="#问题描述-1" class="headerlink" title="问题描述"></a>问题描述</h3><p>在自己的git项目中添加了外部的git项目,有时候需要修改子模块中的文件,但是执行 <code>git status</code> 时又不想看到子模块文件的修改</p>
<h3 id="解决办法"><a href="#解决办法" class="headerlink" title="解决办法"></a>解决办法</h3><p>在 <code>.gitmodules</code> 中添加 <code>ignore = dirty</code> 设置,如下</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[submodule "themes/next"]</div><div class="line"> path = themes/next</div><div class="line"> url = https://github.com/iissnan/hexo-theme-next.git</div><div class="line"> branch = master</div><div class="line"> ignore = dirty</div></pre></td></tr></table></figure>
]]></content>
<summary type="html">
<h2 id="Git-submodule-add-“a-git-directory-is-found-locally”-issue"><a href="#Git-submodule-add-“a-git-directory-is-found-locally”-issue" cl
</summary>
<category term="Git" scheme="http://bobjoy.github.io/categories/Git/"/>
<category term="Git" scheme="http://bobjoy.github.io/tags/Git/"/>
</entry>
<entry>
<title>[转]一个命令永久禁用Win10驱动程序强制签名</title>