-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
467 lines (295 loc) · 193 KB
/
atom.xml
File metadata and controls
467 lines (295 loc) · 193 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Stone的博客</title>
<link href="/atom.xml" rel="self"/>
<link href="http://www.1314sl.com/"/>
<updated>2018-04-10T03:45:06.833Z</updated>
<id>http://www.1314sl.com/</id>
<author>
<name>Stone</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>SpringBoot Process finished with exit code 0</title>
<link href="http://www.1314sl.com/SpringBoot-Process-finished-with-exit-code-0/"/>
<id>http://www.1314sl.com/SpringBoot-Process-finished-with-exit-code-0/</id>
<published>2018-04-10T03:02:54.000Z</published>
<updated>2018-04-10T03:45:06.833Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>报错:</p><p>Unregistering JMX-exposed beans on shutdown</p><a id="more"></a><p>2018-04-04 23:50:16.860 INFO 1953 — [ Thread-16] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans</p><p>2018-04-04 23:50:16.861 INFO 1953 — [ Thread-16] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit ‘default’</p><p>2018-04-04 23:50:16.862 INFO 1953 — [ Thread-16] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated…</p><p>2018-04-04 23:50:16.867 INFO 1953 — [ Thread-16] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.</p><p>Process finished with exit code 0</p><p>猜测原因:(因为试了好几次了)</p><h3 id="第一"><a href="#第一" class="headerlink" title="第一:"></a>第一:</h3><p>项目中由于pom.xml 的原因</p><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></pre></td><td class="code"><pre><div class="line"><span class="tag"><<span class="name">dependency</span>></span></div><div class="line"></div><div class="line"> <span class="tag"><<span class="name">groupId</span>></span>org.springframework.boot<span class="tag"></<span class="name">groupId</span>></span></div><div class="line"></div><div class="line"> <span class="tag"><<span class="name">artifactId</span>></span>spring-boot-starter-web<span class="tag"></<span class="name">artifactId</span>></span></div><div class="line"></div><div class="line"><span class="tag"></<span class="name">dependency</span>></span></div></pre></td></tr></table></figure><h3 id="第二"><a href="#第二" class="headerlink" title="第二:"></a>第二:</h3><p>项目中可能由于Maven仓库的问题</p><p>我们加入tomcat的依赖</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></pre></td><td class="code"><pre><div class="line"><span class="tag"><<span class="name">dependency</span>></span></div><div class="line"></div><div class="line"> <span class="tag"><<span class="name">groupId</span>></span>org.springframework.boot<span class="tag"></<span class="name">groupId</span>></span></div><div class="line"></div><div class="line"> <span class="tag"><<span class="name">artifactId</span>></span>spring-boot-starter-tomcat<span class="tag"></<span class="name">artifactId</span>></span></div><div class="line"></div><div class="line"> <span class="tag"><<span class="name">scope</span>></span>provided<span class="tag"></<span class="name">scope</span>></span></div><div class="line"></div><div class="line"><span class="tag"></<span class="name">dependency</span>></span></div></pre></td></tr></table></figure><p>第三:(也是运行成功的)</p><p>清理Maven的org 下 apache 文件夹,让Maven重新下载jar包</p><p>或者运行Maven命令,清理jar包</p><p><code>dependency:purge-local-repository</code></p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>报错:</p>
<p>Unregistering JMX-exposed beans on shutdown</p>
</summary>
<category term="SpringBoot" scheme="http://www.1314sl.com/tags/SpringBoot/"/>
<category term="Java" scheme="http://www.1314sl.com/tags/Java/"/>
</entry>
<entry>
<title>SpringBoot使用Thymeleaf</title>
<link href="http://www.1314sl.com/SpringBoot%E4%BD%BF%E7%94%A8Thymeleaf/"/>
<id>http://www.1314sl.com/SpringBoot使用Thymeleaf/</id>
<published>2018-04-10T02:32:07.000Z</published>
<updated>2018-04-10T02:42:19.380Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>JSP、Velocity、Freemarker、Thymeleaf</p><p><img src="http://oypem0qjb.bkt.clouddn.com/template-engine.png" alt=""></p><a id="more"></a><p>SpringBoot推荐的Thymeleaf;</p><p>语法更简单,功能更强大;</p><h3 id="1、引入thymeleaf;"><a href="#1、引入thymeleaf;" class="headerlink" title="1、引入thymeleaf;"></a>1、引入thymeleaf;</h3><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">dependency</span>></span></div><div class="line"><span class="tag"><<span class="name">groupId</span>></span>org.springframework.boot<span class="tag"></<span class="name">groupId</span>></span></div><div class="line"><span class="tag"><<span class="name">artifactId</span>></span>spring-boot-starter-thymeleaf<span class="tag"></<span class="name">artifactId</span>></span></div><div class="line"> 2.1.6</div><div class="line"><span class="tag"></<span class="name">dependency</span>></span></div><div class="line">切换thymeleaf版本</div><div class="line"><span class="tag"><<span class="name">properties</span>></span></div><div class="line"><span class="tag"><<span class="name">thymeleaf.version</span>></span>3.0.9.RELEASE<span class="tag"></<span class="name">thymeleaf.version</span>></span></div><div class="line"><span class="comment"><!-- 布局功能的支持程序 thymeleaf3主程序 layout2以上版本 --></span></div><div class="line"><span class="comment"><!-- thymeleaf2 layout1--></span></div><div class="line"><span class="tag"><<span class="name">thymeleaf-layout-dialect.version</span>></span>2.2.2<span class="tag"></<span class="name">thymeleaf-layout-dialect.version</span>></span></div><div class="line"> <span class="tag"></<span class="name">properties</span>></span></div></pre></td></tr></table></figure><h3 id="2、Thymeleaf使用"><a href="#2、Thymeleaf使用" class="headerlink" title="2、Thymeleaf使用"></a>2、Thymeleaf使用</h3><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></pre></td><td class="code"><pre><div class="line"><span class="meta">@ConfigurationProperties</span>(prefix = <span class="string">"spring.thymeleaf"</span>)</div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">ThymeleafProperties</span> </span>{</div><div class="line"></div><div class="line"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Charset DEFAULT_ENCODING = Charset.forName(<span class="string">"UTF-8"</span>);</div><div class="line"></div><div class="line"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> MimeType DEFAULT_CONTENT_TYPE = MimeType.valueOf(<span class="string">"text/html"</span>);</div><div class="line"></div><div class="line"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> String DEFAULT_PREFIX = <span class="string">"classpath:/templates/"</span>;</div><div class="line"></div><div class="line"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> String DEFAULT_SUFFIX = <span class="string">".html"</span>;</div><div class="line"> <span class="comment">//</span></div></pre></td></tr></table></figure><p>只要我们把HTML页面放在classpath:/templates/,thymeleaf就能自动渲染;</p><p>使用:</p><p>1、导入thymeleaf的名称空间</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="tag"><<span class="name">html</span> <span class="attr">lang</span>=<span class="string">"en"</span> <span class="attr">xmlns:th</span>=<span class="string">"http://www.thymeleaf.org"</span>></span></div></pre></td></tr></table></figure><p>2、使用thymeleaf语法;</p><figure class="highlight html"><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="meta"><!DOCTYPE html></span></div><div class="line"><span class="tag"><<span class="name">html</span> <span class="attr">lang</span>=<span class="string">"en"</span> <span class="attr">xmlns:th</span>=<span class="string">"http://www.thymeleaf.org"</span>></span></div><div class="line"><span class="tag"><<span class="name">head</span>></span></div><div class="line"> <span class="tag"><<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">"UTF-8"</span>></span></div><div class="line"> <span class="tag"><<span class="name">title</span>></span>Title<span class="tag"></<span class="name">title</span>></span></div><div class="line"><span class="tag"></<span class="name">head</span>></span></div><div class="line"><span class="tag"><<span class="name">body</span>></span></div><div class="line"> <span class="tag"><<span class="name">h1</span>></span>成功!<span class="tag"></<span class="name">h1</span>></span></div><div class="line"> <span class="comment"><!--th:text 将div里面的文本内容设置为 --></span></div><div class="line"> <span class="tag"><<span class="name">div</span> <span class="attr">th:text</span>=<span class="string">"${hello}"</span>></span>这是显示欢迎信息<span class="tag"></<span class="name">div</span>></span></div><div class="line"><span class="tag"></<span class="name">body</span>></span></div><div class="line"><span class="tag"></<span class="name">html</span>></span></div></pre></td></tr></table></figure><h3 id="3、语法规则"><a href="#3、语法规则" class="headerlink" title="3、语法规则"></a>3、语法规则</h3><p><img src="http://oypem0qjb.bkt.clouddn.com/2018-02-04_123955.png" alt=""></p><p>2)、表达式?</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></pre></td><td class="code"><pre><div class="line">Simple expressions:(表达式语法)</div><div class="line"> Variable Expressions: ${...}:获取变量值;OGNL;</div><div class="line"> 1)、获取对象的属性、调用方法</div><div class="line"> 2)、使用内置的基本对象:</div><div class="line"> #ctx : the context object.</div><div class="line"> #vars: the context variables.</div><div class="line"> #locale : the context locale.</div><div class="line"> #request : (only in Web Contexts) the HttpServletRequest object.</div><div class="line"> #response : (only in Web Contexts) the HttpServletResponse object.</div><div class="line"> #session : (only in Web Contexts) the HttpSession object.</div><div class="line"> #servletContext : (only in Web Contexts) the ServletContext object.</div><div class="line"> </div><div class="line"> ${session.foo}</div><div class="line"> 3)、内置的一些工具对象:</div><div class="line">#execInfo : information about the template being processed.</div><div class="line">#messages : methods for obtaining externalized messages inside variables expressions, in the same way as they would be obtained using #{…} syntax.</div><div class="line">#uris : methods for escaping parts of URLs/URIs</div><div class="line">#conversions : methods for executing the configured conversion service (if any).</div><div class="line">#dates : methods for java.util.Date objects: formatting, component extraction, etc.</div><div class="line">#calendars : analogous to #dates , but for java.util.Calendar objects.</div><div class="line">#numbers : methods for formatting numeric objects.</div><div class="line">#strings : methods for String objects: contains, startsWith, prepending/appending, etc.</div><div class="line">#objects : methods for objects in general.</div><div class="line">#bools : methods for boolean evaluation.</div><div class="line">#arrays : methods for arrays.</div><div class="line">#lists : methods for lists.</div><div class="line">#sets : methods for sets.</div><div class="line">#maps : methods for maps.</div><div class="line">#aggregates : methods for creating aggregates on arrays or collections.</div><div class="line">#ids : methods for dealing with id attributes that might be repeated (for example, as a result of an iteration).</div><div class="line"></div><div class="line"> Selection Variable Expressions: *{...}:选择表达式:和${}在功能上是一样;</div><div class="line"> 补充:配合 th:object="${session.user}:</div><div class="line"> <div th:object="${session.user}"></div><div class="line"> <p>Name: <span th:text="*{firstName}">Sebastian</span>.</p></div><div class="line"> <p>Surname: <span th:text="*{lastName}">Pepper</span>.</p></div><div class="line"> <p>Nationality: <span th:text="*{nationality}">Saturn</span>.</p></div><div class="line"> </div></div><div class="line"> </div><div class="line"> Message Expressions: #{...}:获取国际化内容</div><div class="line"> Link URL Expressions: @{...}:定义URL;</div><div class="line"> @{/order/process(execId=${execId},execType='FAST')}</div><div class="line"> Fragment Expressions: ~{...}:片段引用表达式</div><div class="line"> <div th:insert="~{commons :: main}">...</div></div><div class="line"> </div><div class="line">Literals(字面量)</div><div class="line"> Text literals: 'one text' , 'Another one!' ,…</div><div class="line"> Number literals: 0 , 34 , 3.0 , 12.3 ,…</div><div class="line"> Boolean literals: true , false</div><div class="line"> Null literal: null</div><div class="line"> Literal tokens: one , sometext , main ,…</div><div class="line">Text operations:(文本操作)</div><div class="line"> String concatenation: +</div><div class="line"> Literal substitutions: |The name is ${name}|</div><div class="line">Arithmetic operations:(数学运算)</div><div class="line"> Binary operators: + , - , * , / , %</div><div class="line"> Minus sign (unary operator): -</div><div class="line">Boolean operations:(布尔运算)</div><div class="line"> Binary operators: and , or</div><div class="line"> Boolean negation (unary operator): ! , not</div><div class="line">Comparisons and equality:(比较运算)</div><div class="line"> Comparators: > , < , >= , <= ( gt , lt , ge , le )</div><div class="line"> Equality operators: == , != ( eq , ne )</div><div class="line">Conditional operators:条件运算(三元运算符)</div><div class="line"> If-then: (if) ? (then)</div><div class="line"> If-then-else: (if) ? (then) : (else)</div><div class="line"> Default: (value) ?: (defaultvalue)</div><div class="line">Special tokens:</div><div class="line"> No-Operation: _</div></pre></td></tr></table></figure><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>JSP、Velocity、Freemarker、Thymeleaf</p>
<p><img src="http://oypem0qjb.bkt.clouddn.com/template-engine.png" alt=""></p>
</summary>
<category term="SpringBoot" scheme="http://www.1314sl.com/tags/SpringBoot/"/>
<category term="Java" scheme="http://www.1314sl.com/tags/Java/"/>
<category term="Thymeleaf" scheme="http://www.1314sl.com/tags/Thymeleaf/"/>
</entry>
<entry>
<title>SpringBoot接口文档自动生成</title>
<link href="http://www.1314sl.com/SpringBoot%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90/"/>
<id>http://www.1314sl.com/SpringBoot接口文档自动生成/</id>
<published>2018-04-10T02:27:37.000Z</published>
<updated>2018-04-10T02:31:02.241Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端。</p><p>这样一来,我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发、Android开发或是Web开发等。为了减少与其他团队平时开发期间的频繁沟通成本,传统做法我们会创建一份RESTful API文档来记录所有接口细节,然而这样的做法有以下几个问题:</p><a id="more"></a><ul><li>由于接口众多,并且细节复杂(需要考虑不同的HTTP请求类型、HTTP头部信息、HTTP请求内容等),高质量地创建这份文档本身就是件非常吃力的事,下游的抱怨声不绝于耳。</li><li>随着时间推移,不断修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导致不一致现象。</li></ul><p>为了解决上面这样的问题,本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让我们在修改代码逻辑的同时方便的修改文档说明。另外Swagger2也提供了强大的页面测试功能来调试每个RESTful API</p><h3 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h3><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></pre></td><td class="code"><pre><div class="line"><span class="tag"><<span class="name">dependency</span>></span></div><div class="line"> <span class="tag"><<span class="name">groupId</span>></span>io.springfox<span class="tag"></<span class="name">groupId</span>></span></div><div class="line"> <span class="tag"><<span class="name">artifactId</span>></span>springfox-swagger2<span class="tag"></<span class="name">artifactId</span>></span></div><div class="line"> <span class="tag"><<span class="name">version</span>></span>2.2.2<span class="tag"></<span class="name">version</span>></span></div><div class="line"><span class="tag"></<span class="name">dependency</span>></span></div><div class="line"><span class="tag"><<span class="name">dependency</span>></span></div><div class="line"> <span class="tag"><<span class="name">groupId</span>></span>io.springfox<span class="tag"></<span class="name">groupId</span>></span></div><div class="line"> <span class="tag"><<span class="name">artifactId</span>></span>springfox-swagger-ui<span class="tag"></<span class="name">artifactId</span>></span></div><div class="line"> <span class="tag"><<span class="name">version</span>></span>2.2.2<span class="tag"></<span class="name">version</span>></span></div><div class="line"><span class="tag"></<span class="name">dependency</span>></span></div></pre></td></tr></table></figure><h4 id="创建Swagger2配置类-第一种"><a href="#创建Swagger2配置类-第一种" class="headerlink" title="创建Swagger2配置类 (第一种)"></a>创建Swagger2配置类 (第一种)</h4><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></pre></td><td class="code"><pre><div class="line"><span class="keyword">package</span> com.tjjp.common.config;</div><div class="line"></div><div class="line"><span class="keyword">import</span> org.springframework.context.annotation.Bean;</div><div class="line"><span class="keyword">import</span> org.springframework.context.annotation.Configuration;</div><div class="line"><span class="keyword">import</span> org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;</div><div class="line"><span class="keyword">import</span> org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;</div><div class="line"><span class="keyword">import</span> springfox.documentation.builders.ApiInfoBuilder;</div><div class="line"><span class="keyword">import</span> springfox.documentation.builders.PathSelectors;</div><div class="line"><span class="keyword">import</span> springfox.documentation.service.Contact;</div><div class="line"><span class="keyword">import</span> springfox.documentation.spi.DocumentationType;</div><div class="line"><span class="keyword">import</span> springfox.documentation.spring.web.plugins.Docket;</div><div class="line"><span class="keyword">import</span> springfox.documentation.swagger2.annotations.EnableSwagger2;</div><div class="line"></div><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment"> * Swaager API文档配置</span></div><div class="line"><span class="comment"> */</span></div><div class="line"><span class="meta">@Configuration</span></div><div class="line"><span class="meta">@EnableSwagger</span>2</div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">SwaggerConfig</span> <span class="keyword">extends</span> <span class="title">WebMvcConfigurerAdapter</span> </span>{</div><div class="line"> <span class="meta">@Bean</span></div><div class="line"> <span class="function"><span class="keyword">public</span> Docket <span class="title">docket</span><span class="params">()</span> </span>{</div><div class="line"> <span class="keyword">return</span> <span class="keyword">new</span> Docket(DocumentationType.SWAGGER_2).groupName(<span class="string">"swagger接口文档"</span>)</div><div class="line"> .apiInfo(<span class="keyword">new</span> ApiInfoBuilder().title(<span class="string">"swagger接口文档"</span>)</div><div class="line"> .contact(<span class="keyword">new</span> Contact(<span class="string">"Stone"</span>, <span class="string">""</span>, <span class="string">"[email protected]"</span>)).version(<span class="string">"1.0"</span>).build())</div><div class="line"> .select().paths(PathSelectors.any()).build();</div><div class="line"></div><div class="line"> }</div><div class="line"><span class="comment">//解决静态资源无法访问的问题</span></div><div class="line"> <span class="meta">@Override</span></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">addResourceHandlers</span><span class="params">(ResourceHandlerRegistry registry)</span> </span>{</div><div class="line"> registry.addResourceHandler(<span class="string">"swagger-ui.html"</span>)</div><div class="line"> .addResourceLocations(<span class="string">"classpath:/META-INF/resources/"</span>);</div><div class="line"> registry.addResourceHandler(<span class="string">"/webjars*"</span>)</div><div class="line"> .addResourceLocations(<span class="string">"classpath:/META-INF/resources/webjars/"</span>);</div><div class="line"> }</div><div class="line"></div><div class="line"></div><div class="line">}</div></pre></td></tr></table></figure><h3 id="创建Swagger2配置类-第二种"><a href="#创建Swagger2配置类-第二种" class="headerlink" title="创建Swagger2配置类 (第二种)"></a>创建Swagger2配置类 (第二种)</h3><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></pre></td><td class="code"><pre><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">Swagger2</span> </span>{</div><div class="line"></div><div class="line"><span class="meta">@Bean</span></div><div class="line"><span class="function"><span class="keyword">public</span> Docket <span class="title">createRestApi</span><span class="params">()</span> </span>{</div><div class="line"><span class="keyword">return</span> <span class="keyword">new</span> Docket(DocumentationType.SWAGGER_2)</div><div class="line">.apiInfo(apiInfo())</div><div class="line">.select()</div><div class="line">.apis(RequestHandlerSelectors.basePackage(<span class="string">"cn.saytime.web"</span>))</div><div class="line">.paths(PathSelectors.any())</div><div class="line">.build();</div><div class="line">}</div><div class="line"></div><div class="line"><span class="function"><span class="keyword">private</span> ApiInfo <span class="title">apiInfo</span><span class="params">()</span> </span>{</div><div class="line"><span class="keyword">return</span> <span class="keyword">new</span> ApiInfoBuilder()</div><div class="line">.title(<span class="string">"springboot利用swagger构建api文档"</span>)</div><div class="line">.description(<span class="string">"简单优雅的restfun风格,http://www.1314sl.com"</span>)</div><div class="line">.termsOfServiceUrl(<span class="string">"http://www.1314sl.com"</span>)</div><div class="line">.version(<span class="string">"1.0"</span>)</div><div class="line">.build();</div><div class="line">}</div><div class="line">}</div></pre></td></tr></table></figure><h3 id="启动Swagger2"><a href="#启动Swagger2" class="headerlink" title="启动Swagger2"></a>启动Swagger2</h3><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></pre></td><td class="code"><pre><div class="line"><span class="comment">//在程序入口的地方加上注解 @EnableSwagger2</span></div><div class="line"><span class="meta">@MapperScan</span>(value = <span class="string">"com.tjjp.dao"</span>)</div><div class="line"><span class="meta">@EnableSwagger</span>2</div><div class="line"><span class="meta">@SpringBootApplication</span></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">TjjplmApplication</span> </span>{</div><div class="line"></div><div class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> </span>{</div><div class="line">SpringApplication.run(TjjplmApplication.class, args);</div><div class="line">}</div><div class="line">}</div></pre></td></tr></table></figure><h3 id="Restful-接口编写和文档编写"><a href="#Restful-接口编写和文档编写" class="headerlink" title="Restful 接口编写和文档编写"></a>Restful 接口编写和文档编写</h3><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></pre></td><td class="code"><pre><div class="line"><span class="keyword">package</span> com.tjjp.contorller;</div><div class="line"></div><div class="line"><span class="keyword">import</span> com.tjjp.dao.TNoticeMapper;</div><div class="line"><span class="keyword">import</span> com.tjjp.model.TNotice;</div><div class="line"><span class="keyword">import</span> com.tjjp.service.TNoticeService;</div><div class="line"><span class="keyword">import</span> io.swagger.annotations.ApiImplicitParam;</div><div class="line"><span class="keyword">import</span> io.swagger.annotations.ApiImplicitParams;</div><div class="line"><span class="keyword">import</span> io.swagger.annotations.ApiOperation;</div><div class="line"><span class="keyword">import</span> org.springframework.beans.factory.annotation.Autowired;</div><div class="line"><span class="keyword">import</span> org.springframework.web.bind.annotation.*;</div><div class="line"></div><div class="line"></div><div class="line"><span class="keyword">import</span> java.util.List;</div><div class="line"></div><div class="line"><span class="meta">@RestController</span></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">NoticeContorl</span> </span>{</div><div class="line"> <span class="meta">@Autowired</span></div><div class="line"> TNoticeService TNservier;</div><div class="line"></div><div class="line"> <span class="meta">@ApiOperation</span>(value=<span class="string">"获取NEW公告信息"</span>, notes=<span class="string">"最新的一条公告"</span>)</div><div class="line"> <span class="meta">@PostMapping</span> (value=<span class="string">"GetNoticeNewTopOne"</span>)</div><div class="line"> <span class="function"><span class="keyword">public</span> TNotice <span class="title">GetNoticeNewTopOne</span><span class="params">()</span></span>{</div><div class="line"> <span class="comment">//TNservier.select</span></div><div class="line"> TNotice tn=<span class="keyword">new</span> TNotice();</div><div class="line"> <span class="keyword">return</span> tn;</div><div class="line"> }</div><div class="line"> <span class="meta">@ApiOperation</span>(value=<span class="string">"获取公告(List)分页数据"</span>, notes=<span class="string">"分页查询公告信息"</span>)</div><div class="line"> <span class="meta">@ApiImplicitParams</span>({</div><div class="line"> <span class="meta">@ApiImplicitParam</span>(name = <span class="string">"page"</span>, value = <span class="string">"当前页数"</span>, required = <span class="keyword">true</span>, dataType = <span class="string">"Integer"</span>),</div><div class="line"> <span class="meta">@ApiImplicitParam</span>(name = <span class="string">"site"</span>, value = <span class="string">"每页多少条数据"</span>, required = <span class="keyword">true</span>, dataType = <span class="string">"Integer"</span>)</div><div class="line"> })</div><div class="line"> <span class="meta">@RequestMapping</span>(value=<span class="string">"GetPageList"</span>)</div><div class="line"> <span class="function"><span class="keyword">public</span> List<TNotice> <span class="title">selectPageList</span><span class="params">(@RequestParam(<span class="string">"page"</span>)</span> Integer page,</span></div><div class="line"><span class="function"> @<span class="title">RequestParam</span><span class="params">(<span class="string">"site"</span>)</span> Integer site,TNotice tn)</span>{</div><div class="line"> List<TNotice> tNotices = TNservier.selectPageList(tn, page, site);</div><div class="line"> <span class="keyword">return</span> tNotices;</div><div class="line"> }</div><div class="line"><span class="meta">@ApiIgnore</span><span class="comment">//使用该注解忽略这个API</span></div><div class="line"> <span class="meta">@RequestMapping</span>(value=<span class="string">"/GetAllNotice"</span>,method = RequestMethod.POST)</div><div class="line"> <span class="function"><span class="keyword">public</span> List<TNotice> <span class="title">GetAllNotice</span><span class="params">()</span></span>{</div><div class="line"></div><div class="line"> <span class="keyword">return</span> TNservier.selectByExample(<span class="keyword">null</span>);</div><div class="line"> }</div><div class="line"> <span class="meta">@ApiImplicitParam</span>(name = <span class="string">"id"</span>, value = <span class="string">"用户ID"</span>, required = <span class="keyword">true</span>, dataType = <span class="string">"Integer"</span>, paramType = <span class="string">"path"</span>)</div><div class="line"> <span class="meta">@RequestMapping</span>(<span class="string">"/GetNotice/{id}"</span>)</div><div class="line"> <span class="function"><span class="keyword">public</span> TNotice <span class="title">GetNotice</span><span class="params">(@PathVariable <span class="keyword">int</span> id)</span></span>{</div><div class="line"> <span class="keyword">return</span> TNservier.selectByPrimaryKey(id);</div><div class="line"> }</div><div class="line"></div><div class="line"></div><div class="line">}</div></pre></td></tr></table></figure><p>swagger-ui.html 进入</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端。</p>
<p>这样一来,我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发、Android开发或是Web开发等。为了减少与其他团队平时开发期间的频繁沟通成本,传统做法我们会创建一份RESTful API文档来记录所有接口细节,然而这样的做法有以下几个问题:</p>
</summary>
<category term="SpringBoot" scheme="http://www.1314sl.com/tags/SpringBoot/"/>
<category term="Java" scheme="http://www.1314sl.com/tags/Java/"/>
</entry>
<entry>
<title>SpringBoot设置跨越请求</title>
<link href="http://www.1314sl.com/SpringBoot%E8%AE%BE%E7%BD%AE%E8%B7%A8%E8%B6%8A%E8%AF%B7%E6%B1%82/"/>
<id>http://www.1314sl.com/SpringBoot设置跨越请求/</id>
<published>2018-04-10T02:26:43.000Z</published>
<updated>2018-04-10T03:01:58.638Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>默认状态下,ajax不能跨域请求得到数据</p><p>而我们的SpringBoot和VUE开发,就要涉及到不同端口下的开发了.</p><a id="more"></a><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></pre></td><td class="code"><pre><div class="line"><span class="meta">@Configurationig</span> extends WebMvcConfigurerAdapter {</div><div class="line"> <span class="keyword">static</span> <span class="keyword">final</span> String ORIGINS[] = <span class="keyword">new</span> String[] { <span class="string">"GET"</span>, <span class="string">"POST"</span>, <span class="string">"PUT"</span>, <span class="string">"DELETE"</span> };</div><div class="line"> <span class="meta">@Override</span></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">addCorsMappings</span><span class="params">(CorsRegistry registry)</span> </span>{</div><div class="line"> registry.addMapping(<span class="string">"/**"</span>).allowedOrigins(<span class="string">"*"</span>).allowCredentials(<span class="keyword">true</span>).allowedMethods(ORIGINS)</div><div class="line"> .maxAge(<span class="number">3600</span>);</div><div class="line"> }</div><div class="line">}</div></pre></td></tr></table></figure><p>在配置类中重写 addCorsMappings 方法,添加即可<br><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>默认状态下,ajax不能跨域请求得到数据</p>
<p>而我们的SpringBoot和VUE开发,就要涉及到不同端口下的开发了.</p>
</summary>
<category term="SpringBoot" scheme="http://www.1314sl.com/tags/SpringBoot/"/>
<category term="Java" scheme="http://www.1314sl.com/tags/Java/"/>
</entry>
<entry>
<title>SpringBoot静态资源映射</title>
<link href="http://www.1314sl.com/SpringBoot%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90%E6%98%A0%E5%B0%84/"/>
<id>http://www.1314sl.com/SpringBoot静态资源映射/</id>
<published>2018-04-10T02:25:33.000Z</published>
<updated>2018-04-10T02:54:00.644Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h2 id="SpringBoot静态资源映射"><a href="#SpringBoot静态资源映射" class="headerlink" title="SpringBoot静态资源映射"></a>SpringBoot静态资源映射</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></pre></td><td class="code"><pre><div class="line"><span class="meta">@ConfigurationProperties</span>(prefix = <span class="string">"spring.resources"</span>, ignoreUnknownFields = <span class="keyword">false</span>)</div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">ResourceProperties</span> <span class="keyword">implements</span> <span class="title">ResourceLoaderAware</span> </span>{</div><div class="line"> <span class="comment">//可以设置和静态资源有关的参数,缓存时间等</span></div></pre></td></tr></table></figure><a id="more"></a><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></pre></td><td class="code"><pre><div class="line">WebMvcAuotConfiguration:</div><div class="line"><span class="meta">@Override</span></div><div class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">addResourceHandlers</span><span class="params">(ResourceHandlerRegistry registry)</span> </span>{</div><div class="line"><span class="keyword">if</span> (!<span class="keyword">this</span>.resourceProperties.isAddMappings()) {</div><div class="line">logger.debug(<span class="string">"Default resource handling disabled"</span>);</div><div class="line"><span class="keyword">return</span>;</div><div class="line">}</div><div class="line">Integer cachePeriod = <span class="keyword">this</span>.resourceProperties.getCachePeriod();</div><div class="line"><span class="keyword">if</span> (!registry.hasMappingForPattern(<span class="string">"/webjars/**"</span>)) {</div><div class="line">customizeResourceHandlerRegistration(</div><div class="line">registry.addResourceHandler(<span class="string">"/webjars/**"</span>)</div><div class="line">.addResourceLocations(</div><div class="line"><span class="string">"classpath:/META-INF/resources/webjars/"</span>)</div><div class="line">.setCachePeriod(cachePeriod));</div><div class="line">}</div><div class="line">String staticPathPattern = <span class="keyword">this</span>.mvcProperties.getStaticPathPattern();</div><div class="line"> <span class="comment">//静态资源文件夹映射</span></div><div class="line"><span class="keyword">if</span> (!registry.hasMappingForPattern(staticPathPattern)) {</div><div class="line">customizeResourceHandlerRegistration(</div><div class="line">registry.addResourceHandler(staticPathPattern)</div><div class="line">.addResourceLocations(</div><div class="line"><span class="keyword">this</span>.resourceProperties.getStaticLocations())</div><div class="line">.setCachePeriod(cachePeriod));</div><div class="line">}</div><div class="line">}</div><div class="line"></div><div class="line"> <span class="comment">//配置欢迎页映射</span></div><div class="line"><span class="meta">@Bean</span></div><div class="line"><span class="function"><span class="keyword">public</span> WelcomePageHandlerMapping <span class="title">welcomePageHandlerMapping</span><span class="params">(</span></span></div><div class="line"><span class="function"><span class="params">ResourceProperties resourceProperties)</span> </span>{</div><div class="line"><span class="keyword">return</span> <span class="keyword">new</span> WelcomePageHandlerMapping(resourceProperties.getWelcomePage(),</div><div class="line"><span class="keyword">this</span>.mvcProperties.getStaticPathPattern());</div><div class="line">}</div><div class="line"></div><div class="line"> <span class="comment">//配置喜欢的图标</span></div><div class="line"><span class="meta">@Configuration</span></div><div class="line"><span class="meta">@ConditionalOnProperty</span>(value = <span class="string">"spring.mvc.favicon.enabled"</span>, matchIfMissing = <span class="keyword">true</span>)</div><div class="line"><span class="keyword">public</span> <span class="keyword">static</span> <span class="class"><span class="keyword">class</span> <span class="title">FaviconConfiguration</span> </span>{</div><div class="line"></div><div class="line"><span class="keyword">private</span> <span class="keyword">final</span> ResourceProperties resourceProperties;</div><div class="line"></div><div class="line"><span class="function"><span class="keyword">public</span> <span class="title">FaviconConfiguration</span><span class="params">(ResourceProperties resourceProperties)</span> </span>{</div><div class="line"><span class="keyword">this</span>.resourceProperties = resourceProperties;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="meta">@Bean</span></div><div class="line"><span class="function"><span class="keyword">public</span> SimpleUrlHandlerMapping <span class="title">faviconHandlerMapping</span><span class="params">()</span> </span>{</div><div class="line">SimpleUrlHandlerMapping mapping = <span class="keyword">new</span> SimpleUrlHandlerMapping();</div><div class="line">mapping.setOrder(Ordered.HIGHEST_PRECEDENCE + <span class="number">1</span>);</div><div class="line"> <span class="comment">//所有 **/favicon.ico </span></div><div class="line">mapping.setUrlMap(Collections.singletonMap(<span class="string">"**/favicon.ico"</span>,</div><div class="line">faviconRequestHandler()));</div><div class="line"><span class="keyword">return</span> mapping;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="meta">@Bean</span></div><div class="line"><span class="function"><span class="keyword">public</span> ResourceHttpRequestHandler <span class="title">faviconRequestHandler</span><span class="params">()</span> </span>{</div><div class="line">ResourceHttpRequestHandler requestHandler = <span class="keyword">new</span> ResourceHttpRequestHandler();</div><div class="line">requestHandler</div><div class="line">.setLocations(<span class="keyword">this</span>.resourceProperties.getFaviconLocations());</div><div class="line"><span class="keyword">return</span> requestHandler;</div><div class="line">}</div><div class="line"></div><div class="line">}</div></pre></td></tr></table></figure><p>==1)、所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源;==</p><p> webjars:以jar包的方式引入静态资源;</p><p><a href="http://www.webjars.org/" target="_blank" rel="external">http://www.webjars.org/</a></p><p><img src="http://oypem0qjb.bkt.clouddn.com/%E6%90%9C%E7%8B%97%E6%88%AA%E5%9B%BE20180203181751.png" alt=""></p><p>localhost:8080/webjars/jquery/3.3.1/jquery.js</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="comment"><!--引入jquery-webjar--></span>在访问的时候只需要写webjars下面资源的名称即可</div><div class="line"><span class="tag"><<span class="name">dependency</span>></span></div><div class="line"><span class="tag"><<span class="name">groupId</span>></span>org.webjars<span class="tag"></<span class="name">groupId</span>></span></div><div class="line"><span class="tag"><<span class="name">artifactId</span>></span>jquery<span class="tag"></<span class="name">artifactId</span>></span></div><div class="line"><span class="tag"><<span class="name">version</span>></span>3.3.1<span class="tag"></<span class="name">version</span>></span></div><div class="line"><span class="tag"></<span class="name">dependency</span>></span></div></pre></td></tr></table></figure><p>==2)、”/**” 访问当前项目的任何资源,都去(静态资源的文件夹)找映射==</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">"classpath:/META-INF/resources/", </div><div class="line">"classpath:/resources/",</div><div class="line">"classpath:/static/", </div><div class="line">"classpath:/public/" </div><div class="line">"/":当前项目的根路径</div></pre></td></tr></table></figure><p>localhost:8080/abc === 去静态资源文件夹里面找abc</p><p>==3)、欢迎页; 静态资源文件夹下的所有index.html页面;被”/**”映射;==</p><p> localhost:8080/ 找index页面</p><p>==4)、所有的 **/favicon.ico 都是在静态资源文件下找;==</p><h4 id="修改SpringBoot默认的静态资源的位置"><a href="#修改SpringBoot默认的静态资源的位置" class="headerlink" title="修改SpringBoot默认的静态资源的位置"></a>修改SpringBoot默认的静态资源的位置</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">spring.resources.static-locations=classpath:/resource/,classpash:/Stone/</div></pre></td></tr></table></figure><p>修改以后,默认的静态资源位置不能访问</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h2 id="SpringBoot静态资源映射"><a href="#SpringBoot静态资源映射" class="headerlink" title="SpringBoot静态资源映射"></a>SpringBoot静态资源映射</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></pre></td><td class="code"><pre><div class="line"><span class="meta">@ConfigurationProperties</span>(prefix = <span class="string">"spring.resources"</span>, ignoreUnknownFields = <span class="keyword">false</span>)</div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">ResourceProperties</span> <span class="keyword">implements</span> <span class="title">ResourceLoaderAware</span> </span>&#123;</div><div class="line"> <span class="comment">//可以设置和静态资源有关的参数,缓存时间等</span></div></pre></td></tr></table></figure>
</summary>
<category term="SpringBoot" scheme="http://www.1314sl.com/tags/SpringBoot/"/>
<category term="Java" scheme="http://www.1314sl.com/tags/Java/"/>
</entry>
<entry>
<title>SrpingBoot获取参数的几种方式</title>
<link href="http://www.1314sl.com/SrpingBoot%E8%8E%B7%E5%8F%96%E5%8F%82%E6%95%B0%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F/"/>
<id>http://www.1314sl.com/SrpingBoot获取参数的几种方式/</id>
<published>2018-04-10T02:24:14.000Z</published>
<updated>2018-04-10T02:26:11.796Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h5 id="1-直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。"><a href="#1-直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。" class="headerlink" title="1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。"></a>1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。</h5><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></pre></td><td class="code"><pre><div class="line"> <span class="comment">/**</span></div><div class="line"><span class="comment"> * 1.直接把表单的参数写在Controller相应的方法的形参中</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> username</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> password</span></div><div class="line"><span class="comment"> * <span class="doctag">@return</span></span></div><div class="line"><span class="comment"> */</span></div><div class="line"><span class="meta">@RequestMapping</span>(<span class="string">"/addUser1"</span>)</div><div class="line"><span class="function"><span class="keyword">public</span> String <span class="title">addUser1</span><span class="params">(String username,String password)</span> </span>{</div><div class="line"> System.out.println(<span class="string">"username is:"</span>+username);</div><div class="line"> System.out.println(<span class="string">"password is:"</span>+password);</div><div class="line"> <span class="keyword">return</span> <span class="string">"demo/index"</span>;</div><div class="line">}</div></pre></td></tr></table></figure><p>url形式:<a href="http://localhost/SSMDemo/demo/addUser1?username=lixiaoxi&password=111111" target="_blank" rel="external">http://localhost/SSMDemo/demo/addUser1?username=lixiaoxi&password=111111</a> 提交的参数需要和Controller方法中的入参名称一致。</p><a id="more"></a><h5 id="2-通过HttpServletRequest接收,post方式和get方式都可以。"><a href="#2-通过HttpServletRequest接收,post方式和get方式都可以。" class="headerlink" title="2.通过HttpServletRequest接收,post方式和get方式都可以。"></a>2.通过HttpServletRequest接收,post方式和get方式都可以。</h5><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"> <span class="comment">/**</span></div><div class="line"><span class="comment"> * 2、通过HttpServletRequest接收</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> request</span></div><div class="line"><span class="comment"> * <span class="doctag">@return</span></span></div><div class="line"><span class="comment"> */</span></div><div class="line"><span class="meta">@RequestMapping</span>(<span class="string">"/addUser2"</span>)</div><div class="line"><span class="function"><span class="keyword">public</span> String <span class="title">addUser2</span><span class="params">(HttpServletRequest request)</span> </span>{</div><div class="line"> String username=request.getParameter(<span class="string">"username"</span>);</div><div class="line"> String password=request.getParameter(<span class="string">"password"</span>);</div><div class="line"> System.out.println(<span class="string">"username is:"</span>+username);</div><div class="line"> System.out.println(<span class="string">"password is:"</span>+password);</div><div class="line"> <span class="keyword">return</span> <span class="string">"demo/index"</span>;</div><div class="line">}</div></pre></td></tr></table></figure><h5 id="3-通过一个bean来接收-post方式和get方式都可以。"><a href="#3-通过一个bean来接收-post方式和get方式都可以。" class="headerlink" title="3.通过一个bean来接收,post方式和get方式都可以。"></a>3.通过一个bean来接收,post方式和get方式都可以。</h5><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></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment"> * 3、通过一个bean来接收</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> user</span></div><div class="line"><span class="comment"> * <span class="doctag">@return</span></span></div><div class="line"><span class="comment"> */</span></div><div class="line"> <span class="meta">@RequestMapping</span>(<span class="string">"/addUser3"</span>)</div><div class="line"> <span class="function"><span class="keyword">public</span> String <span class="title">addUser3</span><span class="params">(UserModel user)</span> </span>{</div><div class="line"> System.out.println(<span class="string">"username is:"</span>+user.getUsername());</div><div class="line"> System.out.println(<span class="string">"password is:"</span>+user.getPassword());</div><div class="line"> <span class="keyword">return</span> <span class="string">"demo/index"</span>;</div><div class="line"> }</div></pre></td></tr></table></figure><h5 id="4-通过-PathVariable获取路径中的参数"><a href="#4-通过-PathVariable获取路径中的参数" class="headerlink" title="4.通过@PathVariable获取路径中的参数"></a>4.通过@PathVariable获取路径中的参数</h5><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></pre></td><td class="code"><pre><div class="line"> <span class="comment">/**</span></div><div class="line"><span class="comment"> * 4、通过<span class="doctag">@PathVariable</span>获取路径中的参数</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> username</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> password</span></div><div class="line"><span class="comment"> * <span class="doctag">@return</span></span></div><div class="line"><span class="comment"> */</span></div><div class="line"> <span class="meta">@RequestMapping</span>(value=<span class="string">"/addUser4/{username}/{password}"</span>,method=RequestMethod.GET)</div><div class="line"><span class="function"><span class="keyword">public</span> String <span class="title">addUser4</span><span class="params">(@PathVariable String username,@PathVariable String password)</span> </span>{</div><div class="line"> System.out.println(<span class="string">"username is:"</span>+username);</div><div class="line"> System.out.println(<span class="string">"password is:"</span>+password);</div><div class="line"> <span class="keyword">return</span> <span class="string">"demo/index"</span>;</div><div class="line"> }</div></pre></td></tr></table></figure><p>==例如==,访问<a href="http://localhost/SSMDemo/demo/addUser4/lixiaoxi/111111" target="_blank" rel="external">http://localhost/SSMDemo/demo/addUser4/lixiaoxi/111111</a> 路径时,则自动将URL中模板变量{username}和{password}绑定到通过@PathVariable注解的同名参数上,即入参后username=lixiaoxi、password=111111。</p><h5 id="5-使用-ModelAttribute注解获取POST请求的FORM表单数据"><a href="#5-使用-ModelAttribute注解获取POST请求的FORM表单数据" class="headerlink" title="5.使用@ModelAttribute注解获取POST请求的FORM表单数据"></a>5.使用@ModelAttribute注解获取POST请求的FORM表单数据</h5><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><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line"><!--jsp页面--></div><div class="line"><form action =<span class="string">"<%=request.getContextPath()%>/demo/addUser5"</span> method=<span class="string">"post"</span>> </div><div class="line"> 用户名:&nbsp;<input type=<span class="string">"text"</span> name=<span class="string">"username"</span>/><br/></div><div class="line"> 密&nbsp;&nbsp;码:&nbsp;<input type=<span class="string">"password"</span> name=<span class="string">"password"</span>/><br/></div><div class="line"> <input type=<span class="string">"submit"</span> value=<span class="string">"提交"</span>/> </div><div class="line"> <input type=<span class="string">"reset"</span> value=<span class="string">"重置"</span>/> </div><div class="line"></form></div></pre></td></tr></table></figure><p>Java 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><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></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment"> * 5、使用<span class="doctag">@ModelAttribute</span>注解获取POST请求的FORM表单数据</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> user</span></div><div class="line"><span class="comment"> * <span class="doctag">@return</span></span></div><div class="line"><span class="comment"> */</span></div><div class="line"> <span class="meta">@RequestMapping</span>(value=<span class="string">"/addUser5"</span>,method=RequestMethod.POST)</div><div class="line"> <span class="function"><span class="keyword">public</span> String <span class="title">addUser5</span><span class="params">(@ModelAttribute(<span class="string">"user"</span>)</span> UserModel user) </span>{</div><div class="line"> System.out.println(<span class="string">"username is:"</span>+user.getUsername());</div><div class="line"> System.out.println(<span class="string">"password is:"</span>+user.getPassword());</div><div class="line"> <span class="keyword">return</span> <span class="string">"demo/index"</span>;</div><div class="line"> }</div></pre></td></tr></table></figure><h5 id="6、用注解-RequestParam绑定请求参数到方法入参"><a href="#6、用注解-RequestParam绑定请求参数到方法入参" class="headerlink" title="6、用注解@RequestParam绑定请求参数到方法入参"></a>6、用注解@RequestParam绑定请求参数到方法入参</h5><p>当请求参数username不存在时会有异常发生,可以通过设置属性required=false解决,例如: @RequestParam(value=”username”, required=false)</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h5 id="1-直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。"><a href="#1-直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。" class="headerlink" title="1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。"></a>1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。</h5><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></pre></td><td class="code"><pre><div class="line"> <span class="comment">/**</span></div><div class="line"><span class="comment"> * 1.直接把表单的参数写在Controller相应的方法的形参中</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> username</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> password</span></div><div class="line"><span class="comment"> * <span class="doctag">@return</span></span></div><div class="line"><span class="comment"> */</span></div><div class="line"><span class="meta">@RequestMapping</span>(<span class="string">"/addUser1"</span>)</div><div class="line"><span class="function"><span class="keyword">public</span> String <span class="title">addUser1</span><span class="params">(String username,String password)</span> </span>&#123;</div><div class="line"> System.out.println(<span class="string">"username is:"</span>+username);</div><div class="line"> System.out.println(<span class="string">"password is:"</span>+password);</div><div class="line"> <span class="keyword">return</span> <span class="string">"demo/index"</span>;</div><div class="line">&#125;</div></pre></td></tr></table></figure>
<p>url形式:<a href="http://localhost/SSMDemo/demo/addUser1?username=lixiaoxi&amp;password=111111" target="_blank" rel="external">http://localhost/SSMDemo/demo/addUser1?username=lixiaoxi&amp;password=111111</a> 提交的参数需要和Controller方法中的入参名称一致。</p>
</summary>
<category term="SpringBoot" scheme="http://www.1314sl.com/tags/SpringBoot/"/>
<category term="Java" scheme="http://www.1314sl.com/tags/Java/"/>
</entry>
<entry>
<title>SpringBoot入门</title>
<link href="http://www.1314sl.com/SpringBoot%E5%85%A5%E9%97%A8/"/>
<id>http://www.1314sl.com/SpringBoot入门/</id>
<published>2018-04-10T02:20:48.000Z</published>
<updated>2018-04-10T02:31:03.488Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>简单记忆一下知识 :</p><p>SpringBoot 是什么?</p><p>快速开发,简单入门.</p><p>IDEA Main快捷键 (psvm)</p><a id="more"></a><p>入口程序:</p><p>@SpringBootApplication //用来标注一个主程序类,说明 这个是Spring Boot 的应用</p><p>public class SpringBootStone{</p><p>public static void main(String [] args){</p><p>//程序入口,类似C#程序的入口一样</p><p>SpringApplication.run(SpringBootStone.class,args);</p><p>}</p><p>}</p><p>为了让项目变为可执行的jar包文件,加入Maven的jar包</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></pre></td><td class="code"><pre><div class="line"><span class="tag"><<span class="name">plugins</span>></span></div><div class="line"></div><div class="line"> <span class="tag"><<span class="name">plugin</span>></span></div><div class="line"></div><div class="line"> <span class="tag"><<span class="name">groupId</span>></span>org.springframework.boot<span class="tag"></<span class="name">groupId</span>></span></div><div class="line"></div><div class="line"> <span class="tag"><<span class="name">artifactId</span>></span>spring-boot-maven-plugin<span class="tag"></<span class="name">artifactId</span>></span></div><div class="line"></div><div class="line"> <span class="tag"></<span class="name">plugin</span>></span></div><div class="line"></div><div class="line"><span class="tag"></<span class="name">plugins</span>></span></div></pre></td></tr></table></figure><p>SpringBoot 的启动器,有很多,它都帮我们配置好了,依赖版本号</p><p><img src="http://oypem0qjb.bkt.clouddn.com/clipboard.png" alt="img"></p><p>可以启动了.</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>简单记忆一下知识 :</p>
<p>SpringBoot 是什么?</p>
<p>快速开发,简单入门.</p>
<p>IDEA Main快捷键 (psvm)</p>
</summary>
<category term="SpringBoot" scheme="http://www.1314sl.com/tags/SpringBoot/"/>
<category term="Java" scheme="http://www.1314sl.com/tags/Java/"/>
</entry>
<entry>
<title>Mac使用dd写入u盘系统</title>
<link href="http://www.1314sl.com/Mac%E4%BD%BF%E7%94%A8dd%E5%86%99%E5%85%A5u%E7%9B%98%E7%B3%BB%E7%BB%9F/"/>
<id>http://www.1314sl.com/Mac使用dd写入u盘系统/</id>
<published>2018-04-03T07:07:00.000Z</published>
<updated>2018-04-03T10:01:04.203Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>Win转Mac以后好多软件都没有使用了.</p><p>重装系统,是每个人都需要掌握的,下面我将用Mac系统,写入win7镜像,重装系统</p><p>准备: U盘 8G左右<br> Mac笔记本(或者Mac系统)</p><p>第一步:<br> 使用 df -h 查看插入的U盘</p><p><img src="http://oypem0qjb.bkt.clouddn.com/004d6e02-c6c0-40c1-9547-60ed78053f3e.png" alt=""></p><a id="more"></a><p>哈哈,先下载个正版的win7镜像(纯洁无瑕疵)</p><p><img src="http://oypem0qjb.bkt.clouddn.com/87a8a0d9-599b-449a-a27c-1bfafd136a15.png" alt=""></p><p>第二部,把ios镜像文件写入u盘!!注意,这里是重点,而且不能把命令打错,后果自负</p><p> <img src="http://oypem0qjb.bkt.clouddn.com/4c9a997a-1b26-46da-bd1f-3cf5aa8584fc.png" alt=""></p><p>然后它可能</p><p> <img src="http://oypem0qjb.bkt.clouddn.com/3563b1a4-90d0-4f41-ae15-ab14e9d04707.png" alt=""></p><p>没事,我们再打一行命令,主要的作用是让它不忙 sudo umount /dev/你的u盘位置</p><p><img src="http://oypem0qjb.bkt.clouddn.com/bdf317bd-1df6-4dc7-9383-22061e30f512.png" alt=""></p><p>然后如果还不能写入,那就继续加 sudo diskutil unmount /dev/disk3s1</p><p>然后你发现占位符一直在闪烁,恭喜你,开心写入了</p><p>我们用 iostat -w 2 查看写入信息</p><p><img src="http://oypem0qjb.bkt.clouddn.com/ac035253-a27b-405b-8bde-46830c3dbedc.png" alt=""></p><p>…..请耐心等待…</p><p>然后完成了…等了好几个小时..</p><p><img src="http://oypem0qjb.bkt.clouddn.com/a39404a6-2e83-48b4-bbb5-f70e67b33e5b.png" alt=""></p><p>完成以后,我们弹出u盘</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>Win转Mac以后好多软件都没有使用了.</p>
<p>重装系统,是每个人都需要掌握的,下面我将用Mac系统,写入win7镜像,重装系统</p>
<p>准备: U盘 8G左右<br> Mac笔记本(或者Mac系统)</p>
<p>第一步:<br> 使用 df -h 查看插入的U盘</p>
<p><img src="http://oypem0qjb.bkt.clouddn.com/004d6e02-c6c0-40c1-9547-60ed78053f3e.png" alt=""></p>
</summary>
</entry>
<entry>
<title>释放</title>
<link href="http://www.1314sl.com/%E9%87%8A%E6%94%BE/"/>
<id>http://www.1314sl.com/释放/</id>
<published>2018-03-30T15:27:08.000Z</published>
<updated>2018-03-30T16:00:22.451Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h2 id="释放"><a href="#释放" class="headerlink" title="释放"></a>释放</h2><p>内心,一个从来都是自己可以看到的世界.</p><p>如果有天,你发现自己被锁在笼子里了,请别害怕.</p><p><img src="http://oypem0qjb.bkt.clouddn.com/56eb0004878e67f65ba6.gif" width="400" hight="300"></p><a id="more"></a><p>不知道你有没有觉得很脆弱的时刻,不知道你在孤独的时候,有没有想要有一个人陪在自己身边?</p><p>我们虽然嘴上说着自己一个人可以刀枪不入,无坚不摧,可其实,谁不想做一个拧不开瓶盖的孩子,谁不想有一个可以护自己周全的人在旁边呢?那些说着自己没有软肋只有盔甲的人,不过是被生活的现实所逼,没得选择而已。</p><p>我们知道,我们在不停的被生活的巨浪裹挟着朝前走,我们不敢停下,也不敢选择放弃,因为生活不易,每个人都得熬过一些不为人知的苦,才能破茧成蝶。</p><p>所以,你得加油,你就只管走好你自己的路,在你孤立无援的时候,努力做自己最强大的后盾。(@莫愁酒馆摘录)</p><p>烦闷的时候,就出去走一走,看看大千世界,你会发现,其实大多数跟你一样.都被自己给锁住.</p><p><img src="http://oypem0qjb.bkt.clouddn.com/56eb0004877d2ed2e273.gif" width="400" hight="300"></p><p>其实,那就什么放不下,只是内心的不甘心.</p><p>你想想,如果有天,你发现自己最喜欢的东西不见了,你会不会想它,但是小时候,我们的爸妈是怎么让我们开心的?</p><p>没错,就是再买一个你更喜欢的,然后你就不记得了,小时候第一件你最喜欢的东西,你还记得么?</p><p>当好的替代品来到的时候,就是你重新开始的生活.</p><p>而在这之前,(所有对感情专一的人),我们其实最重要的事情就是,打开心锁,放自己出来.</p><p>举个例子:</p><p> 你遇到一个不错的人,有打算跟他(她)在一起,但是这个时候,你内心的自己就会告诉自己,你再等等,说不定之前的她,会回来!就这样,你放弃了,就这样你又把自己锁进去了.</p><p>不管什么时候,只要你动了想她的念头,所有的事情都是不可能,都是自我拒绝.</p><p>如果,把内心的自己放出来,不单单只是你好受些.身边的人都会为你的”出狱”而开心,而不管是对你好的,还是你对她好的人,都会释放.</p><p><img src="http://oypem0qjb.bkt.clouddn.com/56ea000ddbf1cc4974cc.gif" width="400" hight="300"></p><p>释放,解铃还需系铃人,你的源头,找到它,勇敢的去解决.</p><p>相信我,你会变得不一样.</p><p>释放后的感受,远比任何的事情带来的情绪都好.</p><p><img src="http://oypem0qjb.bkt.clouddn.com/56e700178d0f01ae9b7d.gif" width="400" hight="300"></p><p>曾经执著的认为</p><p>只要不刻意的去想你</p><p>就不会勾起对你的思念</p><p>所有的一切也都会放下</p><p>原来所有的执著不过是自己的固执</p><p>一箱情愿罢了!</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h2 id="释放"><a href="#释放" class="headerlink" title="释放"></a>释放</h2><p>内心,一个从来都是自己可以看到的世界.</p>
<p>如果有天,你发现自己被锁在笼子里了,请别害怕.</p>
<p><img src="http://oypem0qjb.bkt.clouddn.com/56eb0004878e67f65ba6.gif" width="400" hight="300"></p>
</summary>
</entry>
<entry>
<title>招聘分析+源码</title>
<link href="http://www.1314sl.com/%E6%8B%9B%E8%81%98%E5%88%86%E6%9E%90-%E6%BA%90%E7%A0%81/"/>
<id>http://www.1314sl.com/招聘分析-源码/</id>
<published>2018-03-28T12:58:02.000Z</published>
<updated>2018-03-28T13:12:40.398Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>第一次做大数据分析,有点小小的不顺利.不过还好,能出来东西,反正数据大家拿到以后,你们自己也可以做分析.</p><h4 id="工资比较高的城市-根据百度招聘信息来分析的"><a href="#工资比较高的城市-根据百度招聘信息来分析的" class="headerlink" title="工资比较高的城市,根据百度招聘信息来分析的."></a>工资比较高的城市,根据百度招聘信息来分析的.</h4><p><img src="http://oypem0qjb.bkt.clouddn.com/101522241033_.pic_hd.jpg" alt=""></p><a id="more"></a><h4 id="根据市场需求分析-开发人员的年限"><a href="#根据市场需求分析-开发人员的年限" class="headerlink" title="根据市场需求分析,开发人员的年限"></a>根据市场需求分析,开发人员的年限</h4><p><img src="http://oypem0qjb.bkt.clouddn.com/111522241035_.pic_hd.jpg" alt=""></p><h4 id="市场人才需求分析"><a href="#市场人才需求分析" class="headerlink" title="市场人才需求分析"></a>市场人才需求分析</h4><p><img src="http://oypem0qjb.bkt.clouddn.com/121522241036_.pic_hd.jpg" alt=""></p><h4 id="各大城市对开发经验的要求"><a href="#各大城市对开发经验的要求" class="headerlink" title="各大城市对开发经验的要求"></a>各大城市对开发经验的要求</h4><p><img src="http://oypem0qjb.bkt.clouddn.com/131522241036_.pic_hd.jpg" alt=""></p><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><div class="line">81</div><div class="line">82</div><div class="line">83</div><div class="line">84</div><div class="line">85</div><div class="line">86</div><div class="line">87</div><div class="line">88</div><div class="line">89</div><div class="line">90</div><div class="line">91</div><div class="line">92</div><div class="line">93</div><div class="line">94</div><div class="line">95</div><div class="line">96</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">GetDate</span> </span>{</div><div class="line"></div><div class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> JSONException </span>{</div><div class="line">String srr[]={<span class="string">"北京"</span>,<span class="string">"上海"</span>,<span class="string">"广州"</span>,<span class="string">"天津"</span>,<span class="string">"武汉"</span>,<span class="string">"沈阳"</span>,<span class="string">"哈尔滨"</span>,<span class="string">"西安"</span>,<span class="string">"南京"</span>,<span class="string">"成都"</span>,<span class="string">"重庆 大城市;深圳"</span>,<span class="string">"杭州"</span>,<span class="string">"青岛"</span>,<span class="string">"苏州"</span>,<span class="string">"太原"</span>,<span class="string">"郑州"</span>,<span class="string">"济南"</span>,<span class="string">"长春"</span>,<span class="string">" 合肥"</span>,</div><div class="line"><span class="string">"长沙"</span>,<span class="string">"南昌"</span>,<span class="string">"无锡"</span>,<span class="string">"昆明"</span>,<span class="string">"宁波"</span>,<span class="string">"福州"</span>,<span class="string">"石家庄 较大的城市;南宁"</span>,<span class="string">"徐州"</span>,<span class="string">"烟台"</span>,<span class="string">"唐山"</span>,<span class="string">"柳州"</span>,<span class="string">"常州"</span>,<span class="string">"鞍山"</span>,<span class="string">"厦门"</span>,<span class="string">"抚顺"</span>,<span class="string">"吉林市"</span>,<span class="string">"洛阳"</span>,<span class="string">"大同"</span>,<span class="string">"包头"</span>,</div><div class="line"><span class="string">"大庆"</span>,<span class="string">"淄博"</span>,<span class="string">"乌鲁木齐"</span>,<span class="string">"佛山"</span>,<span class="string">"呼和浩特"</span>,<span class="string">"齐齐哈尔"</span>,<span class="string">"泉州"</span>,<span class="string">"西宁"</span>,<span class="string">"兰州"</span>,<span class="string">"贵阳"</span>,<span class="string">"温州"</span>};</div><div class="line">String brr[]={<span class="string">"java"</span>,<span class="string">"python"</span>,<span class="string">"C++"</span>,<span class="string">".NET"</span>,<span class="string">"WEB前端"</span>,<span class="string">"UI设计师"</span>,<span class="string">"Android"</span>,<span class="string">"IOS"</span>,<span class="string">"PHP"</span>,<span class="string">"C"</span>,<span class="string">"C#"</span>,<span class="string">"R"</span>,<span class="string">"Swift"</span>,<span class="string">"GO"</span>,<span class="string">"大数据"</span>};</div><div class="line"><span class="comment">//java</span></div><div class="line"><span class="comment">//String urlX="http://zhaopin.baidu.com/api/quanzhiasync?query=java&sort_type=1&detailmode=close&rn=20&pn=";</span></div><div class="line"><span class="comment">//python</span></div><div class="line"><span class="comment">//String urlX="http://zhaopin.baidu.com/api/quanzhiasync?query=python&sort_type=1&detailmode=close&rn=20&pn=";</span></div><div class="line"><span class="comment">//c++</span></div><div class="line">String urlX=<span class="string">"http://zhaopin.baidu.com/api/quanzhiasync?sort_type=1&detailmode=close&rn=20&pn="</span>;</div><div class="line"><span class="keyword">for</span> (<span class="keyword">int</span> d = <span class="number">0</span>; d < brr.length; d++) {</div><div class="line">String query=brr[d];</div><div class="line">System.err.println(query);</div><div class="line"><span class="keyword">for</span> (<span class="keyword">int</span> c = <span class="number">0</span>; c < srr.length; c++) {</div><div class="line"><span class="comment">//城市列表 city=%E6%9D%AD%E5%B7%9E&</span></div><div class="line">String city =srr[c];</div><div class="line"><span class="keyword">for</span> (<span class="keyword">int</span> j =<span class="number">0</span>; j <=<span class="number">740</span>; j+=<span class="number">20</span>) {</div><div class="line"><span class="keyword">try</span>{</div><div class="line">String url=urlX+j+<span class="string">"&city="</span>+city+<span class="string">"&query="</span>+query;</div><div class="line"></div><div class="line">String json=loadJSON(url);</div><div class="line">json=jsonJX(json);</div><div class="line"><span class="comment">//JSONObject jsonObject =new JSONObject(json);</span></div><div class="line">JSONArray array = <span class="keyword">new</span> JSONArray(json);<span class="comment">//将json字符串转成json数组</span></div><div class="line"><span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i < array.length(); i++) {</div><div class="line">JSONObject ob = (JSONObject) array.get(i);<span class="comment">//得到json对象</span></div><div class="line">insert(ob.toString());</div><div class="line">}</div><div class="line">}<span class="keyword">catch</span> (Exception e) {</div><div class="line">System.err.println(<span class="string">".................错误................"</span>);</div><div class="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"><span class="comment">//存数据库</span></div><div class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">insert</span><span class="params">(String json)</span></span>{</div><div class="line"></div><div class="line"><span class="keyword">try</span> {</div><div class="line"><span class="comment">//String jsons=json.substring(1, json.length()-1);</span></div><div class="line">JSONObject jsonObject =<span class="keyword">new</span> JSONObject(json);</div><div class="line">String jobfirstclass=jsonObject.getString(<span class="string">"jobfirstclass"</span>);</div><div class="line">String joblink=jsonObject.getString(<span class="string">"joblink"</span>);</div><div class="line">String experience=jsonObject.getString(<span class="string">"experience"</span>);</div><div class="line">String education=jsonObject.getString(<span class="string">"education"</span>);</div><div class="line">String employertype=jsonObject.getString(<span class="string">"employertype"</span>);</div><div class="line">String ori_city=jsonObject.getString(<span class="string">"ori_city"</span>);</div><div class="line">String salary=jsonObject.getString(<span class="string">"salary"</span>);</div><div class="line">String title=jsonObject.getString(<span class="string">"title"</span>);</div><div class="line"></div><div class="line"></div><div class="line">String sql=<span class="string">"insert into Baidu (jobfirstclass,joblink,experience,education,employertype,ori_city,salary,title) VALUES(?,?,?,?,?,?,?,?)"</span>;</div><div class="line">Object [] obj={jobfirstclass,joblink,experience,education,employertype,ori_city,salary,title};</div><div class="line">DataSource dataSource = DBUtils.getDataSource();</div><div class="line">QueryRunner qr = <span class="keyword">new</span> QueryRunner(dataSource);</div><div class="line"> </div><div class="line">qr.execute(sql, obj);</div><div class="line"> } <span class="keyword">catch</span> (Exception e) {</div><div class="line"><span class="comment">// TODO Auto-generated catch block</span></div><div class="line">e.printStackTrace();</div><div class="line">}</div><div class="line"><span class="comment">//salary</span></div><div class="line">}</div><div class="line"></div><div class="line"><span class="comment">//百度json解析</span></div><div class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> String <span class="title">jsonJX</span><span class="params">(String json)</span> <span class="keyword">throws</span> JSONException</span>{</div><div class="line">JSONObject jsonObject =<span class="keyword">new</span> JSONObject(json);</div><div class="line">String date2=<span class="keyword">new</span> JSONObject(jsonObject.getString(<span class="string">"data"</span>)).getString(<span class="string">"main"</span>);</div><div class="line">String Date3=<span class="keyword">new</span> JSONObject(date2).getString(<span class="string">"data"</span>);</div><div class="line">String BaiduDate=<span class="keyword">new</span> JSONObject(Date3).getString(<span class="string">"disp_data"</span>);</div><div class="line">System.out.println(BaiduDate);</div><div class="line"><span class="keyword">return</span> BaiduDate;</div><div class="line">}</div><div class="line"><span class="comment">//获取Json数据</span></div><div class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> String <span class="title">loadJSON</span> <span class="params">(String url)</span> </span>{</div><div class="line"> StringBuilder json = <span class="keyword">new</span> StringBuilder();</div><div class="line"> <span class="keyword">try</span> {</div><div class="line"> URL oracle = <span class="keyword">new</span> URL(url);</div><div class="line"> URLConnection yc = oracle.openConnection();</div><div class="line"> BufferedReader in = <span class="keyword">new</span> BufferedReader(<span class="keyword">new</span> InputStreamReader(</div><div class="line"> yc.getInputStream()));</div><div class="line"> </div><div class="line"> String inputLine = <span class="keyword">null</span>;</div><div class="line"> <span class="keyword">while</span> ( (inputLine = in.readLine()) != <span class="keyword">null</span>) {</div><div class="line"> json.append(inputLine);</div><div class="line"> }</div><div class="line"> in.close();</div><div class="line"> } <span class="keyword">catch</span> (MalformedURLException e) {</div><div class="line"> } <span class="keyword">catch</span> (IOException e) {</div><div class="line"> }</div><div class="line"> <span class="keyword">return</span> json.toString();</div><div class="line">}</div></pre></td></tr></table></figure><p>jar包:<br><img src="https://upload-images.jianshu.io/upload_images/7889959-d222e094751ce73a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="image.png"></p><p>工具类<br><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></pre></td><td class="code"><pre><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">DBUtils</span> </span>{</div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"> <span class="comment">// 获得c3p0连接池对象</span></div><div class="line"> <span class="keyword">private</span> <span class="keyword">static</span> ComboPooledDataSource dataSource = <span class="keyword">new</span> ComboPooledDataSource(); </div><div class="line"> <span class="keyword">static</span> {</div><div class="line"> </div><div class="line"> <span class="comment">// 对池进行四大参数的配置 </span></div><div class="line"> <span class="keyword">try</span> {</div><div class="line">dataSource.setDriverClass(<span class="string">"com.mysql.jdbc.Driver"</span>);</div><div class="line">} <span class="keyword">catch</span> (PropertyVetoException e) {</div><div class="line"><span class="comment">// TODO Auto-generated catch block</span></div><div class="line">e.printStackTrace();</div><div class="line">} </div><div class="line"> dataSource.setJdbcUrl(<span class="string">"jdbc:mysql://localhost:3306/stone?useUnicode=true&characterEncoding=UTF-8"</span>); </div><div class="line"> dataSource.setUser(<span class="string">"root"</span>); </div><div class="line"> dataSource.setPassword(<span class="string">"admin"</span>); </div><div class="line"> <span class="comment">// 池配置 </span></div><div class="line"> <span class="comment">//每次新增多少连接 </span></div><div class="line"> dataSource.setAcquireIncrement(<span class="number">5</span>); </div><div class="line"> <span class="comment">//初始连接数多少 </span></div><div class="line"> dataSource.setInitialPoolSize(<span class="number">20</span>); </div><div class="line"> <span class="comment">//最少连接数 </span></div><div class="line"> dataSource.setMinPoolSize(<span class="number">2</span>); </div><div class="line"> <span class="comment">//最大连接数 </span></div><div class="line"> dataSource.setMaxPoolSize(<span class="number">50</span>); </div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"><span class="comment"> * 获得数据库连接对象</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> * <span class="doctag">@return</span></span></div><div class="line"><span class="comment"> * <span class="doctag">@throws</span> SQLException</span></div><div class="line"><span class="comment"> */</span></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> Connection <span class="title">getConnection</span><span class="params">()</span> <span class="keyword">throws</span> SQLException </span>{</div><div class="line"> <span class="keyword">return</span> dataSource.getConnection();</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"><span class="comment"> * 获得c3p0连接池对象</span></div><div class="line"><span class="comment"> * <span class="doctag">@return</span></span></div><div class="line"><span class="comment"> */</span></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> DataSource <span class="title">getDataSource</span><span class="params">()</span> </span>{</div><div class="line"> <span class="keyword">return</span> dataSource;</div><div class="line"> }</div><div class="line">}</div></pre></td></tr></table></figure></p><p>然后给大家看效果:<br>有些数据爬不到,应该是百度的反爬机制.(所以建议大家把上面的主方法,拆开运行)<br><img src="https://upload-images.jianshu.io/upload_images/7889959-aa454700958d18d2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="image.png"></p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>第一次做大数据分析,有点小小的不顺利.不过还好,能出来东西,反正数据大家拿到以后,你们自己也可以做分析.</p>
<h4 id="工资比较高的城市-根据百度招聘信息来分析的"><a href="#工资比较高的城市-根据百度招聘信息来分析的" class="headerlink" title="工资比较高的城市,根据百度招聘信息来分析的."></a>工资比较高的城市,根据百度招聘信息来分析的.</h4><p><img src="http://oypem0qjb.bkt.clouddn.com/101522241033_.pic_hd.jpg" alt=""></p>
</summary>
</entry>
<entry>
<title>个人的小小感悟</title>
<link href="http://www.1314sl.com/%E4%B8%AA%E4%BA%BA%E7%9A%84%E5%B0%8F%E5%B0%8F%E6%84%9F%E6%82%9F/"/>
<id>http://www.1314sl.com/个人的小小感悟/</id>
<published>2018-03-10T04:35:40.000Z</published>
<updated>2018-03-10T05:42:00.124Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>今天我准备回家了,家,是一个人最后的归属,而我同样如此。</p><p>此刻的享受着动车带来的速度视觉,一眼望去,如此之大的世界,为何我们连一个扎根落脚的地都这么难找?(有些人会说,我有啊,说实在的,你爸妈给你的,并不是你自己寻找的,都不曾属于自己的成就。)</p><p><img src="http://oypem0qjb.bkt.clouddn.com/9b98b0f1-f4a1-46a2-871d-5d9426ec2fb1.png" alt=""></p><font color="red">昨天看到一个短片,里面描述着,我们都向往的生活。</font><p>故事开始! </p><a id="more"></a><p>你尽管闭上眼睛,直到你29岁好了.</p><p>因为热爱,所以盲目,哪有什么理智可言。</p><p>耐心,每个人都用高处的标准来衡量现在的自己,</p><p><img src="http://oypem0qjb.bkt.clouddn.com/32fb3cb7-c5ef-4f4e-b3b7-116030a3d00b.png" alt=""></p><p>因为耐心可以为你提供承受风险的保护伞.</p><p>如果你既乐观又耐心,那么你成功上道了!</p><p>短片里说,那99%有所成就的人们,都无惧牺牲,坚持不懈,付出超过常人的努力.而且考虑的是50年,不是50天.</p><p>对人生的改变,何时都不晚!</p><p><img src="http://oypem0qjb.bkt.clouddn.com/a8bc0d40-81a6-4d16-84a8-d3261ad24dc1.png" alt=""></p><p>的确如此,我相信他最后说得话没错。</p><p>我们不是不想去改变现状,而是我们总是有各种的借口来逃避。</p><p>如果你失败了,不要怪别人,先从自己身上找原因。如果有天你成功了,看看那些跟你一起走过来的人。</p><p>我听我朋友说一过一句话:<font color="red">人如果感觉路不好走,很吃力,那么恭喜你,你在走上坡路。上坡路是你学习和成长的一个过程,如果你现在就轻松了,那么你老以后就走不动了。</font></p><p>我们要在年轻的时候,多去尝试一些从未经历的事情,让自己成长,让自己有着更多的阅历,让自己稍微领先一点。</p><p>各位一定要记住,没有什么不可能,如果你真的想去做的事情,先把最坏的结果想好,如果能承受,那么就去干,不要找借口,因为所有做不好事情的人,才会有各种各样的借口来推脱责任。</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>今天我准备回家了,家,是一个人最后的归属,而我同样如此。</p>
<p>此刻的享受着动车带来的速度视觉,一眼望去,如此之大的世界,为何我们连一个扎根落脚的地都这么难找?(有些人会说,我有啊,说实在的,你爸妈给你的,并不是你自己寻找的,都不曾属于自己的成就。)</p>
<p><img src="http://oypem0qjb.bkt.clouddn.com/9b98b0f1-f4a1-46a2-871d-5d9426ec2fb1.png" alt=""></p>
<font color="red">昨天看到一个短片,里面描述着,我们都向往的生活。</font>
<p>故事开始! </p>
</summary>
</entry>
<entry>
<title>Mybatis介绍和原理</title>
<link href="http://www.1314sl.com/Mybatis%E4%BB%8B%E7%BB%8D%E5%92%8C%E5%8E%9F%E7%90%86/"/>
<id>http://www.1314sl.com/Mybatis介绍和原理/</id>
<published>2018-02-22T12:08:25.000Z</published>
<updated>2018-02-22T12:08:58.228Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>MyBatis 介绍-入门-原理</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Mybatis%E5%8E%9F%E7%90%86.png" alt=""></p><p>如上图所介绍的原理如下:</p><a id="more"></a><p>我的理解:</p><p> 首先加载Mbatis的配置文件,然后创建SqlSessionFactory. 再由SqlSessionFactory 得到 SqlSession对象,</p><p>而这个对象的出现,就是为了下面执行sql的对象。</p><p>mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。</p><h4 id="官方解释:"><a href="#官方解释:" class="headerlink" title="官方解释:"></a>官方解释:</h4><p><img src="http://oypem0qjb.bkt.clouddn.com/1d14245b-ad20-4e71-b59f-5eb2779f1169.png" alt=""></p><h3 id="Mybatis-对象使用范围"><a href="#Mybatis-对象使用范围" class="headerlink" title="Mybatis 对象使用范围"></a>Mybatis 对象使用范围</h3><p><img src="http://oypem0qjb.bkt.clouddn.com/462a67c7-2596-497d-bf13-6fb78642e0d5.png" alt=""></p><ul><li><h3 id="SqlSessionFactory"><a href="#SqlSessionFactory" class="headerlink" title="SqlSessionFactory"></a>SqlSessionFactory</h3></li></ul><p><img src="http://oypem0qjb.bkt.clouddn.com/1df3ded3-8ebc-4a9e-8dcd-edf1faf95fa0.png" alt=""></p><ul><li><h3 id="SqlSession"><a href="#SqlSession" class="headerlink" title="SqlSession"></a>SqlSession</h3><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></pre></td><td class="code"><pre><div class="line">SqlSession是一个面向用户的接口, sqlSession中定义了数据库操作方法。</div><div class="line">每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能共享使用,它也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession实例的引用放在一个类的静态字段或实例字段中。</div><div class="line">打开一个 SqlSession;使用完毕就要关闭它。通常把这个关闭操作放到 <span class="keyword">finally</span> 块中以确保每次都能执行关闭。如下:</div><div class="line">SqlSession session = sqlSessionFactory.openSession();</div><div class="line"><span class="keyword">try</span> {</div><div class="line"> <span class="comment">// do work</span></div><div class="line">} <span class="keyword">finally</span> {</div><div class="line"> session.close();</div><div class="line">}</div></pre></td></tr></table></figure></li></ul><h2 id="Mybatis-的dao层开发,分为2种,一种是传统的-dao接口和实现类,还有一种是接口-Mapper动态代理对象"><a href="#Mybatis-的dao层开发,分为2种,一种是传统的-dao接口和实现类,还有一种是接口-Mapper动态代理对象" class="headerlink" title="Mybatis 的dao层开发,分为2种,一种是传统的 dao接口和实现类,还有一种是接口+Mapper动态代理对象"></a>Mybatis 的dao层开发,分为2种,一种是传统的 dao接口和实现类,还有一种是接口+Mapper动态代理对象</h2><figure class="highlight html"><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"><span class="tag"><<span class="name">注意事项:</span></span></div><div class="line"><span class="tag"><span class="attr">Mapper</span>接口开发方法只需要程序员编写<span class="attr">Mapper</span>接口(相当于<span class="attr">Dao</span>接口),由<span class="attr">Mybatis</span>框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边<span class="attr">Dao</span>接口实现类方法。</span></div><div class="line"><span class="tag"><span class="attr">Mapper</span>接口开发需要遵循以下规范:</span></div><div class="line"><span class="tag"><span class="attr">1</span>、<span class="attr">Mapper.xml</span>文件中的<span class="attr">namespace</span>与<span class="attr">mapper</span>接口的类路径相同。</span></div><div class="line"><span class="tag"><span class="attr">2</span>、<span class="attr">Mapper</span>接口方法名和<span class="attr">Mapper.xml</span>中定义的每个<span class="attr">statement</span>的<span class="attr">id</span>相同 </span></div><div class="line"><span class="tag"><span class="attr">3</span>、<span class="attr">Mapper</span>接口方法的输入参数类型和<span class="attr">mapper.xml</span>中定义的每个<span class="attr">sql</span> 的<span class="attr">parameterType</span>的类型相同</span></div><div class="line"><span class="tag"><span class="attr">4</span>、<span class="attr">Mapper</span>接口方法的输出参数类型和<span class="attr">mapper.xml</span>中定义的每个<span class="attr">sql</span>的<span class="attr">resultType</span>的类型相同</span></div></pre></td></tr></table></figure><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><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></pre></td><td class="code"><pre><div class="line">Public <span class="class"><span class="keyword">class</span> <span class="title">UserMapperTest</span> <span class="keyword">extends</span> <span class="title">TestCase</span> </span>{</div><div class="line"></div><div class="line"><span class="keyword">private</span> SqlSessionFactory sqlSessionFactory;</div><div class="line"></div><div class="line"><span class="function"><span class="keyword">protected</span> <span class="keyword">void</span> <span class="title">setUp</span><span class="params">()</span> <span class="keyword">throws</span> Exception </span>{</div><div class="line"><span class="comment">//mybatis配置文件</span></div><div class="line">String resource = <span class="string">"sqlMapConfig.xml"</span>;</div><div class="line">InputStream inputStream = Resources.getResourceAsStream(resource);</div><div class="line"><span class="comment">//使用SqlSessionFactoryBuilder创建sessionFactory</span></div><div class="line">sqlSessionFactory = <span class="keyword">new</span> SqlSessionFactoryBuilder().build(inputStream);</div><div class="line">}</div><div class="line"></div><div class="line"></div><div class="line"><span class="function">Public <span class="keyword">void</span> <span class="title">testFindUserById</span><span class="params">()</span> <span class="keyword">throws</span> Exception </span>{</div><div class="line"><span class="comment">//获取session</span></div><div class="line">SqlSession session = sqlSessionFactory.openSession();</div><div class="line"><span class="comment">//获取mapper接口的代理对象</span></div><div class="line">UserMapper userMapper = session.getMapper(UserMapper.class);</div><div class="line"><span class="comment">//调用代理对象方法</span></div><div class="line">User user = userMapper.findUserById(<span class="number">1</span>);</div><div class="line">System.out.println(user);</div><div class="line"><span class="comment">//关闭session</span></div><div class="line">session.close();</div><div class="line"></div><div class="line">}</div><div class="line"><span class="meta">@Test</span></div><div class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">testFindUserByUsername</span><span class="params">()</span> <span class="keyword">throws</span> Exception </span>{</div><div class="line">SqlSession sqlSession = sqlSessionFactory.openSession();</div><div class="line">UserMapper userMapper = sqlSession.getMapper(UserMapper.class);</div><div class="line">List<User> list = userMapper.findUserByUsername(<span class="string">"张"</span>);</div><div class="line">System.out.println(list.size());</div><div class="line"></div><div class="line">}</div><div class="line"><span class="function">Public <span class="keyword">void</span> <span class="title">testInsertUser</span><span class="params">()</span> <span class="keyword">throws</span> Exception </span>{</div><div class="line"><span class="comment">//获取session</span></div><div class="line">SqlSession session = sqlSessionFactory.openSession();</div><div class="line"><span class="comment">//获取mapper接口的代理对象</span></div><div class="line">UserMapper userMapper = session.getMapper(UserMapper.class);</div><div class="line"><span class="comment">//要添加的数据</span></div><div class="line">User user = <span class="keyword">new</span> User();</div><div class="line">user.setUsername(<span class="string">"张三"</span>);</div><div class="line">user.setBirthday(<span class="keyword">new</span> Date());</div><div class="line">user.setSex(<span class="string">"1"</span>);</div><div class="line">user.setAddress(<span class="string">"北京市"</span>);</div><div class="line"><span class="comment">//通过mapper接口添加用户</span></div><div class="line">userMapper.insertUser(user);</div><div class="line"><span class="comment">//提交</span></div><div class="line">session.commit();</div><div class="line"><span class="comment">//关闭session</span></div><div class="line">session.close();</div><div class="line">}</div><div class="line"></div><div class="line"></div><div class="line">}</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><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">SqlMapConfig.xml中配置的内容和顺序如下:</div><div class="line"></div><div class="line">properties(属性)</div><div class="line">settings(全局配置参数)</div><div class="line">typeAliases(类型别名)</div><div class="line">typeHandlers(类型处理器)</div><div class="line">objectFactory(对象工厂)</div><div class="line">plugins(插件)</div><div class="line">environments(环境集合属性对象)</div><div class="line">environment(环境子属性对象)</div><div class="line">transactionManager(事务管理)</div><div class="line">dataSource(数据源)</div><div class="line">mappers(映射器)</div></pre></td></tr></table></figure><h2 id="面试问题:"><a href="#面试问题:" class="headerlink" title="面试问题:"></a>面试问题:</h2><p>在Mybatis中 #和$ 的区别:</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">#占位符,防止注入</div><div class="line"></div><div class="line">$ 拼接符,不防注入</div></pre></td></tr></table></figure><p>Mybatis 和Hibernate 对比</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">虽然他们都是ORM框架,但是Mybatisqu并不是一个完整的ORM框架,因为你使用Hibernate可以完全不写sql语句,完全对java类型操作就可以了。那Mybatis是做不到的,使用Mybatis那你就必须写sql语句了.</div><div class="line">Hibernate 对sql优化就不是特别好了,因为它是关系映射,都是javaBean,不怎么好优化。</div><div class="line">如果,想灵活的开发,那就使用Mybatis,如果想提高开发效率就是会用Hibernate</div></pre></td></tr></table></figure><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>MyBatis 介绍-入门-原理</p>
<p><img src="http://oypem0qjb.bkt.clouddn.com/Mybatis%E5%8E%9F%E7%90%86.png" alt=""></p>
<p>如上图所介绍的原理如下:</p>
</summary>
</entry>
<entry>
<title></title>
<link href="http://www.1314sl.com/%E6%8A%80%E6%9C%AF%E9%9D%A2%E8%AF%95-%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93/"/>
<id>http://www.1314sl.com/技术面试-问题总结/</id>
<published>2018-02-10T14:08:14.000Z</published>
<updated>2018-01-26T06:56:02.000Z</updated>
<content type="html"><![CDATA[<h1 id="面试问题-技术总结"><a href="#面试问题-技术总结" class="headerlink" title="面试问题(技术总结)"></a>面试问题(技术总结)</h1><h3 id="什么是SOA-分布式"><a href="#什么是SOA-分布式" class="headerlink" title="什么是SOA 分布式"></a>什么是SOA 分布式</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></pre></td><td class="code"><pre><div class="line">集群:就是很多的服务器来实现一种功能,例如mysql,很多的服务器都安装mysql</div><div class="line"></div><div class="line">负载均衡:就是用来调节的,比方说有很多的用户都在访问读取数据,可是读取a服务器的mysql多,而读取别的服务器的mysql就少,负载均衡把访问a的用户转给b一部分,防止a由于访问量过大造成宕机什么的。</div><div class="line"></div><div class="line">分布式:一个系统把不同的服务分开来部署,用户模块,bbs论坛模块,内容模块,支付模块。对服务的访问量很大的时候,单台服务器已经满足不了需求,就把服务分散到几台甚至几十台几百天电脑上</div><div class="line"></div><div class="line">好处:每个模块只负责自己的事情和请求压力,开发人员只负责自己的东西</div><div class="line"></div><div class="line">分布式应用开发简单的说,是指将用户界面、控制台服务、数据库管理三个层次部署在不同的位置上。其中用户界面是客户端实现的功能,控制台服务是一个专门的服务器,数据管理是在一个专门的数据库服务器上实现的。</div></pre></td></tr></table></figure><p> 自我理解:<br> 对项目的客户(用户界面),数据存储(操作数据(服务)),对数据库的操作(数据层) 分离开来,并且可以进行高效的敏捷开发.<br> 分布式,可以对各个模块进行加强(服务器添加(集群处理)),把调用次数比较多的服务,多加服务器,哪些很少使用的服务,可以对它进行一个降低.<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><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></pre></td><td class="code"><pre><div class="line">### hibernate和mybatis的区别</div><div class="line">- hibernate 是对SQL进行了高度的封装,它有自己的HQL语句</div><div class="line">- mybatis保留了对数据库灵活的操作,需要自己写sql语句</div><div class="line">- 他们都是ORM对象映射(数据查询出来以后都是存在pojo类中),使用方法都是大同小异.</div><div class="line">### hibernate的多个参数如何传递?怎么转换?</div><div class="line">- 自己理解 :</div><div class="line"> - 数组传递,对HQL的语句进行拼接,in()里面的条件通过循环来判断.</div><div class="line">- 百度理解:</div><div class="line"> - 集合(List),session.createSQLQuery(sql).setParameterList("userIdList", userIdList).list(); </div><div class="line"> - 创建一个查询对象,并且,直接吧集合传进去即可.(setParameterList)</div><div class="line">### SpringMVC和struts2 的区别</div><div class="line">``` </div><div class="line">SpringMVC和struts2区别</div><div class="line">实现不同</div><div class="line">SpringMVC是通过Servlet来实现的</div><div class="line">Struts2是通过拦截器来实现的</div><div class="line">Json的转换方式不同</div><div class="line">Spring MVC是自动转为json</div><div class="line">Struts2是通过插件来转</div><div class="line">数据传输不同</div><div class="line">SpringMVC是通过参数来传递的</div><div class="line">Struts2是通过值栈来传递的,而值栈是个比较庞大的东西</div><div class="line">控制器实例不同</div><div class="line">SpringMVC是基于方法来实现的</div><div class="line">Struts2是基于对象来实现的</div><div class="line">SpringMVC从理论上来讲是比Struts2快的</div></pre></td></tr></table></figure></p><h3 id="四大域对象"><a href="#四大域对象" class="headerlink" title="四大域对象"></a>四大域对象</h3><ul><li><p>ServletContext<br> 生命周期:当WEB应用被加载进容器创建代表整个WEB应用的ServletContext对象,当服务器关闭或WEB应用被移除时,ServletContext对象跟着被销毁。</p><p> 作用范围:整个WEB应用。</p><p> 在不同Servlet之间转发、读取资源文件</p></li><li>Request域<br>1.生命周期:在Service方法调用前由服务器创建,传入service发那个发。整个请求结束,request生命结束。<br>2.作用范围:整个请求链(请求转发也存在)<br>3.作用:在整个请求链中共享数据,经常用到:在servlet中处理好的数据交给JSP显示,此时参数就可以放在Request域中。</li><li>Session域<br> 1.生命周期:在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。如果服务器非正常关闭,没有到期的session也会跟着销毁。如果调用session提供的invalidate(),可以立即销毁session。<br> 2.作用范围:一次会话。</li><li>PageContext域<br>1.生命周期:当对JSP的请求开始,当相应结束时销毁。<br>2.作用范围:整个JSP页面,是四大作用域中最小的一个。<br>3.作用:获取其他八大隐式对象,可以认为是一个入口对象。<pre><code>`获取所有域中的数据`。`跳转到其他资源`。</code></pre><h3 id="Spring-参数如何传递"><a href="#Spring-参数如何传递" class="headerlink" title="Spring 参数如何传递"></a>Spring 参数如何传递</h3></li><li>直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。</li><li>通过HttpServletRequest接收,post方式和get方式都可以。</li><li>通过一个bean来接收,post方式和get方式都可以。(也叫模型驱动)</li><li>通过@PathVariable获取路径中的参数</li><li>使用@ModelAttribute注解获取POST请求的FORM表单数据</li><li>用注解@RequestParam绑定请求参数到方法入参</li></ul><h3 id="Spring的特征"><a href="#Spring的特征" class="headerlink" title="Spring的特征"></a>Spring的特征</h3><ul><li><p>aop(面向切面编程):</p><ul><li>软件系统分为两个部分:核心关注点和横切关注点<ul><li>业务处理的主要流程是核心关注点</li><li>与之关系不大的部分是横切关注点</li></ul></li><li><p>AOP核心概念</p><p>横切关注点<br>切面(aspect)<br>连接点(joinpoint)<br>切入点(pointcut)<br>通知(advice)<br>目标对象<br>织入(weave)<br>引入(introduction)</p></li></ul></li><li><p>ioc(控制反转):</p><ul><li><p>IOC是一种思想,是一个重要的面向对象编程的体现之一</p></li><li><p>它是把创建和查找依赖对象的控制器交给了容器,有容器进行注入组合对象,所以对象与对象之间是,低耦合的,便于测试,而且也使得整个体系架构变得更灵活</p></li><li>就是对象找依赖并注入,而不是对象自己主动去找</li></ul></li><li><p>IOC依赖注入</p><ul><li>在控制反转中获取资源的过程叫做依赖注入<br>-注入有2种,一种是通过xml配置进行构造注入<br>-还有一种是通过setter注入,就是通过对象的set方法进行注入.</li><li>一般都是在Spring配置文件中,配置bean ,然后交给Spring自动注入,我们拿到对象就可以直接使用.</li></ul></li></ul><h3 id="Spring-AOP-动态代理的实现"><a href="#Spring-AOP-动态代理的实现" class="headerlink" title="Spring AOP (动态代理的实现)"></a>Spring AOP (动态代理的实现)</h3><h3 id="Spring-MVC执行流程"><a href="#Spring-MVC执行流程" class="headerlink" title="Spring MVC执行流程"></a>Spring MVC执行流程</h3><ul><li>自己理解:<ul><li>客户请求–>前端控制器–>前端控制器找到HandlerAdapter–>HandlerAdapter(处理数据)—>返回视图–>然后渲染视图–>最后返回视图给客户<h3 id="Struts2的执行流程"><a href="#Struts2的执行流程" class="headerlink" title="Struts2的执行流程"></a>Struts2的执行流程</h3></li></ul></li></ul><h3 id="Hibernate的执行流程"><a href="#Hibernate的执行流程" class="headerlink" title="Hibernate的执行流程"></a>Hibernate的执行流程</h3><h3 id="mybatis的执行流程"><a href="#mybatis的执行流程" class="headerlink" title="mybatis的执行流程"></a>mybatis的执行流程</h3><h3 id="ElasticSearch-搭建"><a href="#ElasticSearch-搭建" class="headerlink" title="ElasticSearch 搭建"></a>ElasticSearch 搭建</h3><h3 id="ElasticSearch怎么建立索引"><a href="#ElasticSearch怎么建立索引" class="headerlink" title="ElasticSearch怎么建立索引"></a>ElasticSearch怎么建立索引</h3><h3 id="ElasticSearch-怎么使用"><a href="#ElasticSearch-怎么使用" class="headerlink" title="ElasticSearch 怎么使用"></a>ElasticSearch 怎么使用</h3><h3 id="solr-搭建"><a href="#solr-搭建" class="headerlink" title="solr 搭建"></a>solr 搭建</h3><h3 id="solr-怎么建立索引"><a href="#solr-怎么建立索引" class="headerlink" title="solr 怎么建立索引"></a>solr 怎么建立索引</h3><h3 id="solr-怎么使用"><a href="#solr-怎么使用" class="headerlink" title="solr 怎么使用"></a>solr 怎么使用</h3><h3 id="ActiveMQ-使用"><a href="#ActiveMQ-使用" class="headerlink" title="ActiveMQ 使用"></a>ActiveMQ 使用</h3><p>消费者:<br>生产者:</p><h3 id="Dobbo"><a href="#Dobbo" class="headerlink" title="Dobbo"></a>Dobbo</h3><h3 id="WebService"><a href="#WebService" class="headerlink" title="WebService"></a>WebService</h3><h3 id="String-amp-amp-StringBuffer-的区别-在什么时候使用"><a href="#String-amp-amp-StringBuffer-的区别-在什么时候使用" class="headerlink" title="String && StringBuffer 的区别,在什么时候使用."></a>String && StringBuffer 的区别,在什么时候使用.</h3><h3 id="Nginx-负载均衡搭建"><a href="#Nginx-负载均衡搭建" class="headerlink" title="Nginx 负载均衡搭建"></a>Nginx 负载均衡搭建</h3><h3 id="Redis的搭建-集群"><a href="#Redis的搭建-集群" class="headerlink" title="Redis的搭建(集群)"></a>Redis的搭建(集群)</h3><h3 id="Redis-中的5种数据类型"><a href="#Redis-中的5种数据类型" class="headerlink" title="Redis 中的5种数据类型"></a>Redis 中的5种数据类型</h3><p>String:key-value(做缓存)<br>Hash:key-fields-values(做缓存)<br>SortedSet(zset):有顺序,不能重复</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h1 id="面试问题-技术总结"><a href="#面试问题-技术总结" class="headerlink" title="面试问题(技术总结)"></a>面试问题(技术总结)</h1><h3 id="什么是SOA-分布式"><a href="#什么是SOA-分布式" c
</summary>
</entry>
<entry>
<title>python爬虫入门</title>
<link href="http://www.1314sl.com/python%E7%88%AC%E8%99%AB%E5%85%A5%E9%97%A8/"/>
<id>http://www.1314sl.com/python爬虫入门/</id>
<published>2018-02-09T11:23:46.000Z</published>
<updated>2018-02-09T12:07:26.000Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>今天,来介绍一下听起来很牛,其实的确牛的爬虫技术!(当然,我现在也学习者,分享一下学习经验)</p><p>废话不多少,先直接看效果</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1518176193209.jpg" alt="500条数据URL"></p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1518176400116.jpg" alt="爬虫获取数据"></p><a id="more"></a><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1518176486356.jpg" alt="获取数据"></p><h3 id="代码如下"><a href="#代码如下" class="headerlink" title="代码如下:"></a>代码如下:</h3><h4 id="文章URL爬取"><a href="#文章URL爬取" class="headerlink" title="文章URL爬取"></a>文章URL爬取</h4><figure class="highlight python"><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><div class="line">81</div><div class="line">82</div><div class="line">83</div><div class="line">84</div><div class="line">85</div><div class="line">86</div><div class="line">87</div><div class="line">88</div><div class="line">89</div><div class="line">90</div><div class="line">91</div><div class="line">92</div><div class="line">93</div><div class="line">94</div><div class="line">95</div><div class="line">96</div><div class="line">97</div><div class="line">98</div><div class="line">99</div><div class="line">100</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"><span class="keyword">import</span> requests</div><div class="line"><span class="keyword">import</span> pymysql</div><div class="line"></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">waitSql</span><span class="params">(bookName,bookLink)</span>:</span></div><div class="line"> bookName = str(bookName).replace(<span class="string">' '</span>, <span class="string">''</span>)</div><div class="line"> bookName = str(bookName).replace(<span class="string">'\r\n'</span>, <span class="string">''</span>)</div><div class="line"> db=pymysql.connect(host=<span class="string">'localhost'</span>, port=<span class="number">3306</span>, user=<span class="string">'root'</span>, passwd=<span class="string">'123'</span>, db=<span class="string">'booklog'</span>,charset=<span class="string">'utf8'</span>)</div><div class="line"> <span class="comment"># 使用 cursor() 方法创建一个游标对象 cursor</span></div><div class="line"> cursor = db.cursor()</div><div class="line"> <span class="comment"># 使用 execute() 方法执行 SQL 查询</span></div><div class="line"> sql=<span class="string">"insert into csdnbook(bookName,linkURL) VALUE('"</span>+str(bookName)+<span class="string">"','"</span>+str(bookLink)+<span class="string">"')"</span></div><div class="line"> print(sql)</div><div class="line"> cursor.execute(sql)</div><div class="line"> db.commit()</div><div class="line"> cursor.close()</div><div class="line"> db.close()</div><div class="line"> <span class="keyword">return</span></div><div class="line"></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">getDiv</span><span class="params">(html)</span>:</span></div><div class="line"> <span class="comment">####截取主要的文章链接块#</span></div><div class="line"> divClass = html.find(<span class="string">"article_list"</span>)</div><div class="line"> divClassEnd=html.find(<span class="string">"papelist"</span>,divClass)<span class="number">-38</span></div><div class="line"> <span class="comment">############截取到文章的块以后,把HTML内容重新赋值#############</span></div><div class="line"> html=html[divClass:divClassEnd]</div><div class="line"> <span class="comment">#print(html)</span></div><div class="line"> <span class="keyword">return</span> html</div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">Listadd</span><span class="params">(html)</span>:</span></div><div class="line"> <span class="comment">#进行html解析(首页解析)</span></div><div class="line"> html=str(html)</div><div class="line"> <span class="comment">#获取文章块的文章(唯一标识哦!)</span></div><div class="line"> divClass=html.find(<span class="string">"article_list"</span>)</div><div class="line"> <span class="comment">#############循环查找每一个DIV(article_title)标签和 A标签里名的名字######################</span></div><div class="line"> <span class="keyword">while</span>(divClass>= <span class="number">-1</span>):</div><div class="line"> <span class="comment">##寻找主要的链接和文章名字的块,而不是全部链接</span></div><div class="line"> divClass=html.find(<span class="string">'link_title'</span>,divClass)</div><div class="line"> <span class="comment">#寻找链接文章名字</span></div><div class="line"> <span class="keyword">if</span> (divClass <= <span class="number">-1</span>):</div><div class="line"> <span class="keyword">break</span></div><div class="line"> a_=html.find(<span class="string">'<a href="'</span>,divClass)+<span class="number">9</span></div><div class="line"> _a=html.find(<span class="string">'>'</span>,a_)<span class="number">-1</span></div><div class="line"> <span class="comment">#文章名字从链接获取完成以后开始 <a>名字</a> 所以此刻的位置就是 _a +2的位置</span></div><div class="line"> <span class="comment"># name_=html.find('',_a)+3</span></div><div class="line"> <span class="comment"># _name=html.find('</a',name_)</span></div><div class="line"></div><div class="line"> bookName_start = html.find(<span class="string">''</span>, _a) + <span class="number">2</span></div><div class="line"> bookName_end = html.find(<span class="string">'<'</span>, bookName_start)</div><div class="line"> <span class="comment">#链接的的截取</span></div><div class="line"> url=html[a_:_a]</div><div class="line"> <span class="comment">#截取文章名字</span></div><div class="line"> Bookname=html[bookName_start:bookName_end]</div><div class="line"> divClass = html.find(<span class="string">"<a href="</span>,bookName_end)</div><div class="line"> url=<span class="string">"http://blog.csdn.net"</span>+url</div><div class="line"> <span class="comment">#linkList.append(url)</span></div><div class="line"> <span class="comment">###########查看获取到的数据###########</span></div><div class="line"> <span class="comment">##去掉所有空格</span></div><div class="line"> Bookname.replace(<span class="string">" "</span>,<span class="string">""</span>)</div><div class="line"> url.replace(<span class="string">" "</span>, <span class="string">""</span>)</div><div class="line"> <span class="comment">#print(Bookname+url)</span></div><div class="line"> <span class="comment">############添加到数据库###########</span></div><div class="line"> waitSql(Bookname,url)</div><div class="line"></div><div class="line"></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">fileWarit</span><span class="params">(html,i)</span>:</span></div><div class="line"> file=open(str(i)+<span class="string">'.html'</span>,<span class="string">'w+'</span>,encoding=<span class="string">'utf-8'</span>)</div><div class="line"> file.write(html)</div><div class="line"> file.close()</div><div class="line"></div><div class="line"></div><div class="line"><span class="comment">#################请求循环,到25页,(分页请求)###############</span></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">geturl</span><span class="params">()</span>:</span></div><div class="line"> i=<span class="number">1</span></div><div class="line"> <span class="keyword">while</span>(i<=<span class="number">25</span>):</div><div class="line"> url=<span class="string">"http://blog.csdn.net/u010870518/article/list/"</span>+str(i)</div><div class="line"> print(url)</div><div class="line"> <span class="comment"># # 写入User Agent信息</span></div><div class="line"> <span class="comment"># head = {}</span></div><div class="line"> <span class="comment"># head[</span></div><div class="line"> <span class="comment"># 'User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'</span></div><div class="line"> <span class="comment"># 创建Request对象</span></div><div class="line"> web_date = requests.put(url)</div><div class="line"> <span class="comment">#把网页格式内容转换为 utf-8</span></div><div class="line"> web_date.encoding = <span class="string">'utf-8'</span></div><div class="line"> <span class="comment">#####获取网页内容##</span></div><div class="line"> html = web_date.text</div><div class="line"> <span class="comment">#fileWarit(html,i)</span></div><div class="line"> <span class="comment">####使用 getDiv 方法把 html中文章的DIV 截取到#</span></div><div class="line"> html = getDiv(html)</div><div class="line"> <span class="comment">#########链接添加到数据库##########</span></div><div class="line"> Listadd(html)</div><div class="line"> i=i+<span class="number">1</span></div><div class="line"></div><div class="line"></div><div class="line"><span class="comment">###############################程序执行#####################</span></div><div class="line">geturl()</div><div class="line"><span class="comment">#fileWarit(html)</span></div></pre></td></tr></table></figure><h4 id="文章爬取"><a href="#文章爬取" class="headerlink" title="文章爬取:"></a>文章爬取:</h4><figure class="highlight python"><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><div class="line">81</div><div class="line">82</div><div class="line">83</div><div class="line">84</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">import</span> pymysql</div><div class="line"><span class="keyword">import</span> urllib.request</div><div class="line"><span class="keyword">import</span> requests</div><div class="line"><span class="keyword">import</span> time</div><div class="line"></div><div class="line"><span class="comment">#######用来存储,数据库查询到的数据,名字,链接,时间###############</span></div><div class="line">NameList=[]</div><div class="line">urlList=[]</div><div class="line">datetime=[]</div><div class="line"></div><div class="line"><span class="comment">#获取数据中,由CSDN 爬取到的文章 名字和链接</span></div><div class="line"></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">waitSql</span><span class="params">()</span>:</span></div><div class="line"> db=pymysql.connect(host=<span class="string">'localhost'</span>, port=<span class="number">3306</span>, user=<span class="string">'root'</span>, passwd=<span class="string">'admin'</span>, db=<span class="string">'booklog'</span>,charset=<span class="string">'utf8'</span>)</div><div class="line"> <span class="comment"># 使用 cursor() 方法创建一个游标对象 cursor</span></div><div class="line"> cursor = db.cursor()</div><div class="line"> <span class="comment"># 使用 execute() 方法执行 SQL 查询</span></div><div class="line"> sql=<span class="string">"select bookName,linkURL,dateTime from csdnbook"</span></div><div class="line"> cursor.execute(sql)</div><div class="line"> <span class="comment">#获取数据库查询的数据</span></div><div class="line"> results=cursor.fetchall()</div><div class="line"> <span class="keyword">for</span> row <span class="keyword">in</span> results:</div><div class="line"> NameList.append(row[<span class="number">0</span>])</div><div class="line"> urlList.append(row[<span class="number">1</span>])</div><div class="line"> datetime.append(row[<span class="number">2</span>])</div><div class="line"> <span class="comment">#数组存数据</span></div><div class="line"></div><div class="line"> cursor.close()</div><div class="line"> db.close()</div><div class="line"> <span class="keyword">return</span></div><div class="line"></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">getDiv</span><span class="params">(html)</span>:</span></div><div class="line"> <span class="comment">####截取主要的文章链接块#</span></div><div class="line"> divClass = html.find(<span class="string">'<div class="markdown_views">'</span>)</div><div class="line"> divClassEnd=html.find(<span class="string">'<script type="text/javascript">'</span>,divClass)</div><div class="line"> <span class="comment">############截取到文章的块以后,把HTML内容重新赋值#############</span></div><div class="line"> html=html[divClass:divClassEnd]</div><div class="line"> <span class="comment">#print(html)</span></div><div class="line"> <span class="keyword">return</span> html</div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">getDiv2</span><span class="params">(html)</span>:</span></div><div class="line"> <span class="comment">####截取主要的文章链接块#</span></div><div class="line"> divClass = html.find(<span class="string">'<div id="article_content"'</span>)</div><div class="line"> divClassEnd=html.find(<span class="string">'<div class="bdsharebuttonbox tracking-ad'</span>,divClass)<span class="number">-45</span></div><div class="line"> <span class="comment">############截取到文章的块以后,把HTML内容重新赋值#############</span></div><div class="line"> html=html[divClass:divClassEnd]</div><div class="line"> <span class="comment">#print(html)</span></div><div class="line"> <span class="keyword">return</span> html</div><div class="line"></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">waitr</span><span class="params">(name, html, time)</span>:</span></div><div class="line"> <span class="comment"># -*- coding: utf-8 -*-</span></div><div class="line"> <span class="comment">#################各种字符串 转换异常#######################</span></div><div class="line"> name = str(name).replace(<span class="string">'/'</span>, <span class="string">''</span>)</div><div class="line"> name = str(name).replace(<span class="string">'\x08'</span>,<span class="string">''</span>)</div><div class="line"> name = str(name).replace(<span class="string">':'</span>, <span class="string">''</span>)</div><div class="line"> name=str(name).replace(<span class="string">':'</span>, <span class="string">''</span>)</div><div class="line"></div><div class="line"> print(name)</div><div class="line"> file = open(name + <span class="string">'.md'</span>,<span class="string">'w+'</span>,encoding=<span class="string">'utf8'</span>)</div><div class="line"> head = <span class="string">"---\ntitle: "</span> + name + <span class="string">"\ndate: "</span> + str(</div><div class="line"> time) + <span class="string">"\ntags: [javaEE]\nkeywords: "</span> + name + <span class="string">",Stone的博客\n---\n##### [@作者博客](http://www.1314sl.com)\n"</span></div><div class="line"> Text = head + html</div><div class="line"> print(Text)</div><div class="line"> file.flush()</div><div class="line"> file.write(Text)</div><div class="line"> file.close()</div><div class="line"> <span class="keyword">return</span></div><div class="line"></div><div class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</div><div class="line"> waitSql()</div><div class="line"> print(len(urlList))</div><div class="line"> print(len(NameList))</div><div class="line"> print(len(datetime))</div><div class="line"> <span class="keyword">for</span> index <span class="keyword">in</span> range(len(urlList)):</div><div class="line"> web_data = requests.put(urlList[index])</div><div class="line"> web_data.encoding=<span class="string">'utf-8'</span></div><div class="line"> html=getDiv(web_data.text)</div><div class="line"> <span class="keyword">if</span>(html==<span class="string">""</span>):</div><div class="line"> print(<span class="string">"###################245章以后的文章###########################"</span>)</div><div class="line"> <span class="comment">#######在245章以后文件的样式不同了###所以重新解析一下######</span></div><div class="line"> html=getDiv2(web_data.text)</div><div class="line"> <span class="keyword">if</span>(html==<span class="string">""</span>):</div><div class="line"> print(NameList[index]+<span class="string">"###############%%%%%%%%失败了%%%%%%%%%%%%%%%%################"</span>)</div><div class="line"> <span class="keyword">continue</span></div><div class="line"> waitr(NameList[index],html,datetime[index])</div></pre></td></tr></table></figure><p>好啦,装逼的时间过了,来介绍一下:</p><p>这次爬虫的目标是,中国最大的技术博客CSDN,不知道的朋友可以去百度.</p><p>首先,打开CSDN网站(<a href="http://blog.csdn.net/u010870518/article/list/1" target="_blank" rel="external">http://blog.csdn.net/u010870518/article/list/1</a>)</p><p>第二部就是解析这个网站的HTML结构.</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1518177071778.jpg" alt=""></p><p>HTML主要的代码块,就在这个DIV里,我们打开这个DIV,再去寻找自己想要的数据.</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1518177160041.jpg" alt=""></p><p>点开以后发现,里面每一个DIV块,对于每一个文章入口.<br>那就好操作了,现在已经找到它网站的有序结构就好爬取了.</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1518177359637.jpg" alt=""></p><p>它所有的URL都存在这个规定格式的a标签里,我们获取页面,然后利用pythone的来查找这个DIV块里的DIV块,然后获取a标签就可以了,</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1518177487930.jpg" alt=""></p><p>将获取到的链接,保存到数据库,即可.</p><p>然后再从数据库里获取就可以了!</p><p>这里就先介绍到这里.源码已经放在上面,喜欢的朋友可以试试.</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/Python%E7%88%AC%E8%99%AB.png" alt="enter description here" title="Python爬虫"></p><p><code>本博客,所有的文章,仅供学习,请勿商业利用!本人概不负责!</code></p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>今天,来介绍一下听起来很牛,其实的确牛的爬虫技术!(当然,我现在也学习者,分享一下学习经验)</p>
<p>废话不多少,先直接看效果</p>
<p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1518176193209.jpg" alt="500条数据URL"></p>
<p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1518176400116.jpg" alt="爬虫获取数据"></p>
</summary>
</entry>
<entry>
<title>Linux安装mysql</title>
<link href="http://www.1314sl.com/Linux%E5%AE%89%E8%A3%85mysql/"/>
<id>http://www.1314sl.com/Linux安装mysql/</id>
<published>2018-02-09T11:03:48.000Z</published>
<updated>2018-02-09T11:09:40.000Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h3 id="安装mysql-Centos"><a href="#安装mysql-Centos" class="headerlink" title="安装mysql Centos"></a>安装mysql Centos</h3><ol><li><p>下载mysql文件(5.6 linux-通用版)</p></li><li><p>上传到linux系统中</p></li><li><p>创建mysql的文件夹 </p></li><li><p>解压到文件夹 (/usr/local/develop/mysql)</p></li><li><p>安装mysql的服务端</p><ul><li>rpm -ivh MySQL-server-5.6.22-l.e16.i686.rpm</li></ul></li><li><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></pre></td><td class="code"><pre><div class="line">如果上面的行不通,报错,就下载 mysql -glib.tar 版本的</div><div class="line">安装步骤:</div><div class="line">shell> groupadd mysql # 添加用户组 mysql</div><div class="line">shell> useradd -r -g mysql mysql # 添加用户mysql 并加入到 mysql 组中</div><div class="line">shell> cd /usr/local # 进入用户本地目录</div><div class="line">shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz # 解压mysql压缩包(已解压略过)</div><div class="line">shell> ln -s full-path-to-mysql-VERSION-OS mysql # 创建软连接 mysql 指定mysql**目录</div><div class="line">shell> cd mysql # 进入mysql目录 ,或软连接目录</div><div class="line">shell> chown -R mysql . # 更改当前目录下的所有文件的所属用户为 mysql</div><div class="line">shell> chgrp -R mysql . # 更改当前目录下的所有文件的所属组为 mysql</div><div class="line">shell> scripts/mysql_install_db --user=mysql # 开始安装(调用安装脚本)</div><div class="line">shell> chown -R root .</div><div class="line">shell> chown -R mysql data</div><div class="line"># Next command is optional</div><div class="line">shell> cp support-files/my-medium.cnf /etc/my.cnf</div><div class="line">shell> bin/mysqld_safe --user=mysql &</div><div class="line"># Next command is optional</div><div class="line">shell> cp support-files/mysql.server /etc/init.d/mysql.server</div></pre></td></tr></table></figure></li></ol><p>Ubuntu 16.0 卸载 Mysql </p><a id="more"></a><ul><li>sudo apt purge mysql-*</li><li>sudo rm -rf /etc/mysql/ /var/lib/mysql</li><li>sudo apt autoremove</li><li>sudo apt autoreclean</li></ul><h3 id="Ubuntu16-0-安装Mysql"><a href="#Ubuntu16-0-安装Mysql" class="headerlink" title="Ubuntu16.0 安装Mysql"></a>Ubuntu16.0 安装Mysql</h3><h4 id="安装5-6"><a href="#安装5-6" class="headerlink" title="安装5.6"></a>安装5.6</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">apt-get install software-properties-common</div></pre></td></tr></table></figure><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></pre></td><td class="code"><pre><div class="line">sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'</div><div class="line">sudo apt-get update</div><div class="line">sudo apt install mysql-server-5.6</div><div class="line">sudo apt install mysql-client-5.6</div><div class="line"></div><div class="line">查看服务:</div><div class="line">cd /etc/init.d/</div><div class="line">ls</div><div class="line">如果有mysql 就表示安装成功</div><div class="line"></div><div class="line">启动mysql:</div><div class="line">service mysql start</div><div class="line">停止mysql:</div><div class="line">service 服务名 start或stop</div><div class="line"></div><div class="line"><!--如果你的mysql,不能远程连接,那你就开启远程服务!--></div><div class="line">开启远程服务:</div><div class="line">登录mysql:</div><div class="line">grant all privileges on *.* to 'root' @'%' identified by 'admin';</div><div class="line">flush privileges;</div><div class="line">•设置Linux的防火墙:</div><div class="line">/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT</div><div class="line">/etc/rc.d/init.d/iptables save</div></pre></td></tr></table></figure><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></pre></td><td class="code"><pre><div class="line">Errors were encountered while processing:</div><div class="line"></div><div class="line">sudo -s</div><div class="line">cd /var/cache/debconf</div><div class="line">rm *.dat</div><div class="line">apt-get update && apt-get upgrade</div></pre></td></tr></table></figure><h4 id="安装mysql-5-7-最新"><a href="#安装mysql-5-7-最新" class="headerlink" title="安装mysql 5.7 (最新)"></a>安装mysql 5.7 (最新)</h4><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></pre></td><td class="code"><pre><div class="line">sudo apt-get update</div><div class="line">sudo apt-get install mysql-server</div><div class="line">系统将提示您在安装过程中创建 root 密码。选择一个安全的密码,并确保你记住它,因为你以后需要它。接下来,我们将完成 MySQL 的配置。</div><div class="line">sudo mysql_secure_installation</div><div class="line">systemctl status mysql.service</div><div class="line">您将看到类似于以下内容的输出:</div><div class="line"></div><div class="line"></div><div class="line">mysql.service - MySQL Community Server</div><div class="line">Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en Active: active (running) since Wed 2016-11-23 21:21:25 UTC; 30min ago Main PID: 3754 (mysqld) Tasks: 28 Memory: 142.3M CPU: 1.994s CGroup: /system.slice/mysql.service └─3754 /usr/sbin/mysqld</div><div class="line">如果MySQL没有运行,您可以启动它:</div><div class="line"></div><div class="line">sudo systemctl mysql start</div><div class="line">如果额外的检查,您可以尝试使用该 mysqladmin 工具连接到数据库,该工具是允许您运行管理命令的客户端。例如,该命令表示以 root(-u root)方式连接到 MySQL ,提示输入密码(-p)并返回版本。</div><div class="line"></div><div class="line">mysqladmin -p -u root version</div><div class="line">你应该看到类似的输出:</div><div class="line"></div><div class="line"></div><div class="line">mysqladmin Ver 8.42 Distrib 5.7.16, for Linux on x86_64</div><div class="line">Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.</div><div class="line">Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.</div><div class="line">Server version 5.7.16-0ubuntu0.16.04.1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 30 min 54 sec</div><div class="line">Threads: 1 Questions: 12 Slow queries: 0 Opens: 115 Flush tables: 1 Open tables: 34 Queries per second avg: 0.006</div><div class="line">这意味着MySQL正在运行。</div><div class="line"></div><div class="line">结论</div><div class="line"></div><div class="line">现在您的服务器上已经安装了一个可以使用的 MySQL 5.7 了。</div></pre></td></tr></table></figure><h4 id="设置mysql-数据库-不区分大小写-项目上线"><a href="#设置mysql-数据库-不区分大小写-项目上线" class="headerlink" title="设置mysql 数据库 不区分大小写(项目上线)"></a>设置mysql 数据库 不区分大小写(项目上线)</h4><p>在my.cnf文件中: [mysqld] 后面<br>添加:</p><p>lower_case_table_names=1</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h3 id="安装mysql-Centos"><a href="#安装mysql-Centos" class="headerlink" title="安装mysql Centos"></a>安装mysql Centos</h3><ol>
<li><p>下载mysql文件(5.6 linux-通用版)</p>
</li>
<li><p>上传到linux系统中</p>
</li>
<li><p>创建mysql的文件夹 </p>
</li>
<li><p>解压到文件夹 (/usr/local/develop/mysql)</p>
</li>
<li><p>安装mysql的服务端</p>
<ul>
<li>rpm -ivh MySQL-server-5.6.22-l.e16.i686.rpm</li>
</ul>
</li>
<li><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></pre></td><td class="code"><pre><div class="line">如果上面的行不通,报错,就下载 mysql -glib.tar 版本的</div><div class="line">安装步骤:</div><div class="line">shell&gt; groupadd mysql # 添加用户组 mysql</div><div class="line">shell&gt; useradd -r -g mysql mysql # 添加用户mysql 并加入到 mysql 组中</div><div class="line">shell&gt; cd /usr/local # 进入用户本地目录</div><div class="line">shell&gt; tar zxvf /path/to/mysql-VERSION-OS.tar.gz # 解压mysql压缩包(已解压略过)</div><div class="line">shell&gt; ln -s full-path-to-mysql-VERSION-OS mysql # 创建软连接 mysql 指定mysql**目录</div><div class="line">shell&gt; cd mysql # 进入mysql目录 ,或软连接目录</div><div class="line">shell&gt; chown -R mysql . # 更改当前目录下的所有文件的所属用户为 mysql</div><div class="line">shell&gt; chgrp -R mysql . # 更改当前目录下的所有文件的所属组为 mysql</div><div class="line">shell&gt; scripts/mysql_install_db --user=mysql # 开始安装(调用安装脚本)</div><div class="line">shell&gt; chown -R root .</div><div class="line">shell&gt; chown -R mysql data</div><div class="line"># Next command is optional</div><div class="line">shell&gt; cp support-files/my-medium.cnf /etc/my.cnf</div><div class="line">shell&gt; bin/mysqld_safe --user=mysql &amp;</div><div class="line"># Next command is optional</div><div class="line">shell&gt; cp support-files/mysql.server /etc/init.d/mysql.server</div></pre></td></tr></table></figure>
</li>
</ol>
<p>Ubuntu 16.0 卸载 Mysql </p>
</summary>
</entry>
<entry>
<title>Linux环境搭建_Ubuntu</title>
<link href="http://www.1314sl.com/Linux%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA-Ubuntu/"/>
<id>http://www.1314sl.com/Linux环境搭建-Ubuntu/</id>
<published>2018-01-29T09:32:11.000Z</published>
<updated>2018-01-29T09:47:10.000Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h3 id="Ubuntu-16-0-安装jdk"><a href="#Ubuntu-16-0-安装jdk" class="headerlink" title="Ubuntu 16.0 安装jdk"></a>Ubuntu 16.0 安装jdk</h3><h4 id="最快速-最装逼的安装方式"><a href="#最快速-最装逼的安装方式" class="headerlink" title="最快速,最装逼的安装方式"></a>最快速,最装逼的安装方式</h4><p>直接在命令行里,运行,以下命令即可!</p><p> <code>sudo apt-get install default-jre</code><br> <a id="more"></a><br> 手动安装JDK</p><ol><li><p>下载jdk <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" target="_blank" rel="external">下载地址</a></p></li><li><p>利用工具上传到Ubuntu系统,我这里使用的是 <a href="https://filezilla-project.org/" target="_blank" rel="external">FileZilla</a></p></li><li><p>解压到目录(/usr/local/java)</p></li><li><p>设置环境变量,修改配置文件 sudo vim ~/.bashrc<br>在最后面加上:<br>#set oracle jdk environment<br>export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_60 ## 要换成自己解压的jdk 目录<br>export JRE_HOME=${JAVA_HOME}/jre<br>export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib<br>export PATH=${JAVA_HOME}/bin:$PATH </p><ol><li>然后刷新配置文件 sudo vim ~/.bashrc</li><li>设置系统默认jdk 版本 第二个路径是你jdk安装的路径<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">下面是终端运行的代码,机制,第二个是你JDK解压的路径</div><div class="line"></div><div class="line"> sudo update-alternatives --install /usr/bin/java java /usr/local/jdk1.7.0_80/bin/java 300 </div><div class="line"> sudo update-alternatives --install /usr/bin/javac javac /usr/local/jdk1.7.0_80/bin/javac 300 </div><div class="line"> sudo update-alternatives --install /usr/bin/jar jar /usr/local/jdk1.7.0_80/bin/jar 300 </div><div class="line"> sudo update-alternatives --install /usr/bin/javah javah /usr/local/jdk1.7.0_80/bin/javah 300 </div><div class="line"> sudo update-alternatives --install /usr/bin/javap javap /usr/local/jdk1.7.0_80/bin/javap 300</div></pre></td></tr></table></figure></li></ol></li><li><p>sudo update-alternatives –config java (查看系统中有几个jdk,并且选择用哪个)</p></li></ol><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1517218933960.jpg" alt=""></p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h3 id="Ubuntu-16-0-安装jdk"><a href="#Ubuntu-16-0-安装jdk" class="headerlink" title="Ubuntu 16.0 安装jdk"></a>Ubuntu 16.0 安装jdk</h3><h4 id="最快速-最装逼的安装方式"><a href="#最快速-最装逼的安装方式" class="headerlink" title="最快速,最装逼的安装方式"></a>最快速,最装逼的安装方式</h4><p>直接在命令行里,运行,以下命令即可!</p>
<p> <code>sudo apt-get install default-jre</code><br>
</summary>
</entry>
<entry>
<title>Linux环境搭建(JDK)</title>
<link href="http://www.1314sl.com/Linux%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA-JDK/"/>
<id>http://www.1314sl.com/Linux环境搭建-JDK/</id>
<published>2018-01-29T09:30:04.000Z</published>
<updated>2018-01-29T09:51:30.000Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h3 id="Centos-装jdk"><a href="#Centos-装jdk" class="headerlink" title="Centos 装jdk"></a>Centos 装jdk</h3><ol><li><p>下载JDK 我这边下载的是 jdk1.7 </p></li><li><p>上传文件(FileZilla)</p></li><li><p>在 /usr/local/ 目录下 创建 java <code>mdkir /usr/local/java</code></p><a id="more"></a></li><li><p>安装 依赖</p><ul><li><code>yum install glibc.i686</code></li></ul></li><li><p>解压 <code>jdk的包</code></p><ul><li>tar -zxvf jdk_xxx.tar.gz -C /usr/local/java</li></ul></li><li><p>配置 JDK的环境</p><ul><li><p>vim /etc/profile (修改配置文件,跟Windows中环境变量一样)</p><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><div class="line">8</div></pre></td><td class="code"><pre><div class="line"><span class="meta">#</span> set java environment</div><div class="line">JAVA_HOME= JDK安装路径 (/usr/local/java/jdk1.7.0_80)</div><div class="line"></div><div class="line">CLASSPATH=.:$JAVA_HOME/lib.tools.jar</div><div class="line"></div><div class="line">PATH=$JAVA_HOME/bin:$PATH</div><div class="line"></div><div class="line">export JAVA_HOME CLASSPATH PATH</div></pre></td></tr></table></figure></li><li><p>重新加载配置文件 </p><ul><li>source /etc/profile</li></ul></li></ul></li></ol><p>注意: 每个Linux的安装方式不同!同样的我也同时更新了Ubuntu16.0的jdk安装环境.</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><h3 id="Centos-装jdk"><a href="#Centos-装jdk" class="headerlink" title="Centos 装jdk"></a>Centos 装jdk</h3><ol>
<li><p>下载JDK 我这边下载的是 jdk1.7 </p>
</li>
<li><p>上传文件(FileZilla)</p>
</li>
<li><p>在 /usr/local/ 目录下 创建 java <code>mdkir /usr/local/java</code></p>
</summary>
</entry>
<entry>
<title>就业感言</title>
<link href="http://www.1314sl.com/%E5%B0%B1%E4%B8%9A%E6%84%9F%E8%A8%80/"/>
<id>http://www.1314sl.com/就业感言/</id>
<published>2018-01-26T06:52:31.000Z</published>
<updated>2018-01-26T06:58:30.000Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1516948182165.jpg" alt=""><br>杭州,这座城市,有多太的人想留下来,想要在这里干一个属于自己的落脚地。</p><a id="more"></a><p>而想要留下来,那你就必须干掉你的对手,我们都是刚刚毕业,培训出来,根本就没有实际的开发经验,而外面的技术,又是不断的更新,这个时候,一定要坚持下来!</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1516948550945.jpg" alt=""></p><p>我也不瞒任何人,我在杭州一共面试45家!最后一家拿到office!</p><p>最开始面试的时候,我还做下总结,最后索性就这样了!</p><p>在面试的过程中,有跟面试官,聊得开心,各种扯,各种吹,也有跟面试官闹得不愉快!</p><p>很想知道为什么闹得不愉快吧,当面试官问你Java基础的时候,你没有回答上来,并且啊,你很尴尬的时候,他们笑了,你就知道怎么个不舒服了。</p><p>被面试官质疑我技术的时候,我有段时间心态崩了,那个时候,是在杭州有15天了,跟我一起来杭州的还有2位同学,他们在那个时候,离开了杭州这座城市!</p><p>为什么离开?因为这边的消耗,加上看不到一点希望的情况下,他们理性的选择了离开,而我并不甘心!</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1516948619045.jpg" alt=""></p><p>为什么?为什么我来这里就找不到工作?为什么我的同学好多都找到了,而我却没有?然后你要面对的就是,你的朋友,你的家人,包括你的老师,他们都会问你,工作找的怎么样?</p><p>我也想过跟我同学一样,选择离开。但是我不甘心啊,不甘心就这么放弃!每个人都不会觉得自己比别人差到到哪里去,可能比别人更好!</p><p>你仔细想想,为什么去黑马,在哪里6个月,从早上的8点到晚上的10点甚至更能晚,我付出这么多,当我要实现,我的奋斗目标的时候,而你却给我来一个大锤子。那种感觉就像是,你看到一个大蛋糕,很多人都在分,而你好不容易挤进去,一看那块蛋糕,没了。。。</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/IMG_0185.JPG" alt=""></p><p>就这样,同学走了,并且只有自己一个人留在这里,开始我自己的人生路。</p><p>接下来的时间里,我比之前更疯狂,每天的面试都安排,并且能安排4个一天面试完的,我绝不安排3个。</p><p>在接下的面试中,我发现自己根本不需要在做任何的面试准备,跟面试官沟通都是一个小时左右。</p><p>哪个时候是准备还留一个星期再回去,可是到了下个星期,又不想回去了,总感觉,我离我的目标就差那么一点点,就又坚持了下来。</p><p>很幸运的是,拿到了我人生中的第一份office,并且顺利进入公司!</p><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">面试技巧: </div><div class="line">- 在自我介绍的时候,面试官想知道就是你项目的经验,和掌握的技术。</div><div class="line">- 对于简历上写的技术,自己一定要掌握,并且了解Java基础的算法和底层。</div><div class="line">- 对于 SSM 和SSH 都必须了解它们的区别,和为什么用它们!</div><div class="line">- 在面试官问你还有什么想问我们公司的时候,你一定要问他们公司用什么技术,并且工作业务是什么。你问了,他就觉得,你对他们公司还是有想法的,并且最求技术!一般的面试官都会介绍他们的公司项目和业务!</div></pre></td></tr></table></figure><p>再给大家分享一些干货!在我的博客里,有些面试的经历,和面试问题的总结!<br>百度搜索:Stone的博客 或者直接访问 www.1314sl.com</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1516948182165.jpg" alt=""><br>杭州,这座城市,有多太的人想留下来,想要在这里干一个属于自己的落脚地。</p>
</summary>
</entry>
<entry>
<title>杭州面试总结-Stone_6家</title>
<link href="http://www.1314sl.com/%E6%9D%AD%E5%B7%9E%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93-Stone-6%E5%AE%B6/"/>
<id>http://www.1314sl.com/杭州面试问题总结-Stone-6家/</id>
<published>2017-12-29T05:09:21.000Z</published>
<updated>2018-01-11T11:17:38.000Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>到目前为止,我已经面试了6家左右</p><p>说句实在的,都不怎么样,虽然拿到一个office,但是不是很喜欢,我也不清楚是为啥,所以,来总一下问题</p><p>昨天,上午一家是 杭州华卓科技有限公司,进公司的第一感觉,前台的小姐姐,很标致啊,然后就是跟所有的面试一样,填一张表,然后就是等,面试官来面试.<br>等得我实在是无聊啊,看到桌上有一个魔方,拿起来玩了.</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1514522893435.jpg" alt="enter description here"></p><p>哈哈哈,好了,总结一下,这家公司的情况:<br> 他们主要负责的是医院那一块,就是他们要走互联网方向,什么远程看病啊,什么,什么的. 然后他们公司的开发框架 都是比较新进的框架,Spring boot,Spring Cloud 等等,还有一些我都没听过<br> 然后面试官问我一些原理和底层问题,可惜啊,我对这一块并不是很了解,如果你让我写一段代码,可能还有一些希望.<br> 然后我就大致说了一下 Spring MVC 的原理<br> 大致就是:<br> 用户请求–>前端控制器–>handlerAdapter–>返回视图–>渲染视图–>把视图推送给用户<br> 但是实际的答案是这样:</p><p><img src="http://oypem0qjb.bkt.clouddn.com/Stone/1514523427943.jpg" alt="enter description here"></p><p>反正大致问的 比较细,也比较多.面试官还是很不错的,你不会的,或者说你答不上来的,他都会跟你说一遍那些原理.而且听他的语气来判断,这个人懂很多,而是技术宅那种吧,哈哈哈!</p><p>下午:<br> 远昊科技有限公司</p><p>一进去我就懵逼了,我就说我来面试java开发工程师的,她们人事就来了 一句 “你是孙磊吧”,行吧,我当时都是懵逼的,对,没错,就我一个在那里面试,对就是我一个人…<br> 一样的公司使用的框架也是SpringBoot,和Spring Cloud.<br> 行吧,我应该是没戏了.</p><p>也没什么好说的,等下晚上再更新面试的技术总结,现在准备去面试了哈哈哈!</p><p><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>到目前为止,我已经面试了6家左右</p>
<p>
</summary>
</entry>
<entry>
<title>杭州面试问题总结-Stone</title>
<link href="http://www.1314sl.com/%E6%9D%AD%E5%B7%9E%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93-Stone/"/>
<id>http://www.1314sl.com/杭州面试问题总结-Stone/</id>
<published>2017-12-29T04:37:57.000Z</published>
<updated>2018-01-11T11:17:54.000Z</updated>
<content type="html"><![CDATA[<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>此刻的我,享受着,咖啡+音乐 的生活,而在这么好的一个时间,我来了,我来给大家分享一下杭州的面试:</p><p>前天的一个总结:</p><p>到目前为止总共是面试了2家</p><p>情况是这样的<br>第一家,是他们HR拿一个面试卷子 (里面的mybatis#和$的区别 不知道,就没有写)本类是想拍照的,可是我就坐在了HR旁边….</p><p>面试官问我的我的问题</p><p> 电商秒杀活动,如何实现,(一个用户,多端登陆,手机端,客户端,web端同时登陆)为了不让同一个用户抢购到同一个商品多次,我回答不上来,然后我就说 我在上个项目里是 用消息队列,进行实现,然后用Redis来缓解服务器压力.</p><p> 然后又是那个问题 mybatis 的# 和$的区别 我说这个mybatis接触的不多,就上一个项目使用过.</p><p> 然后又问我 hibernate 查询数据库的时候 ,如果有多个条件,就是in(参数….),怎么实现,我说得是,用数组,或者集合, 接着问,那它们怎么转换成参数?我回答:他们是自动转的.</p><p> 然后问我上家公司的 薪资 我说12k 然后就是等通知..</p><p> 下午的这一家,技术总监没来,我进去的时候,他们让我在会议室等,然后我就装模作样的看了他们会议室上的一个宣告栏,是个什么 “帮你还”的APP软件,是关于信用卡还不上的那种人群使用.<br>然后,他们HR面试我,问了我一些 上家公司的情况,和主要负责的业务</p><p> 然后我问他,贵公司的主要业务和开发框架<br> 他回答,业务这一块,我看你刚才也在看宣告栏,大概的业务就是,关于金额方面的数字问题<br> 我回答: 我接触的金额,就是微信支付啊,支付宝啊,还有一些其他的第三方支付平台.<br> 他就开始介绍他们公司和入职的薪资(6-8k 试用期,8-12k 转正薪资).<br> 然后就没然后了,他就约我明天晚上6点去他们那边参加技术人员的面试,通过了就可以了.<br> (他们现在是 做这个软件的后期维护,紧急事件处理,新成立的一个开发部,缺人!!!)</p><p>然后是对于技术的一些总结,我稍后整理出来!<br><code>© 著作权归作者所有</code> <code>转载请保留原链接地址</code></p>]]></content>
<summary type="html">
<h5 id="作者博客"><a href="#作者博客" class="headerlink" title="@作者博客"></a><a href="http://www.1314sl.com">@作者博客</a></h5><p>此刻的我,享受着,咖啡+音乐 的生活,而在这么好
</summary>
</entry>
</feed>