-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
406 lines (378 loc) · 24.2 KB
/
index.html
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>商伟的技术博客</title>
<meta name="description" content="">
<meta name="author" content="商伟">
<!-- HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]>
<script src="/theme/html5.js"></script>
<![endif]-->
<!-- Styles -->
<link href="/theme/bootstrap.min.css" rel="stylesheet">
<link href="/theme/local.css" rel="stylesheet">
<link href="/theme/pygments.css" rel="stylesheet">
<!-- Feeds -->
</head>
<body>
<div class="topbar">
<div class="topbar-inner">
<div class="container-fluid">
<a class="brand" href="/">商伟的技术博客</a>
<ul class="nav">
<li ><a href="/category/django.html">Django</a></li>
<li ><a href="/category/docker.html">Docker</a></li>
<li ><a href="/category/git.html">GIT</a></li>
<li ><a href="/category/javascript.html">JavaScript</a></li>
<li ><a href="/category/mongodb.html">Mongodb</a></li>
<li ><a href="/category/mysql.html">MySQL</a></li>
<li ><a href="/category/pa-chong.html">爬虫</a></li>
<li ><a href="/category/python.html">Python</a></li>
<li ><a href="/category/rabbitmq.html">RabbitMQ</a></li>
<li ><a href="/category/redis.html">redis</a></li>
<li ><a href="/category/shu-ju-jie-gou.html">数据结构</a></li>
<li ><a href="/category/sui-shou-bi-ji.html">随手笔记</a></li>
<li ><a href="/category/supervisor.html">Supervisor</a></li>
<li ><a href="/category/vue.html">VUE</a></li>
<li ><a href="/category/wang-luo.html">网络</a></li>
<li ><a href="/category/web.html">web</a></li>
<li ><a href="/category/xiao-cheng-xu.html">小程序</a></li>
<li ><a href="/category/xu-ni-huan-jing.html">虚拟环境</a></li>
</ul>
<p class="pull-right"><a href="/archives.html">[archives]</a> <a href="/tags.html">[tags]</a></p>
</div>
</div>
</div>
<div class="container-fluid">
<div class="sidebar">
<div class="well">
<h3>Blogroll</h3>
<ul>
<li><a href="http://getpelican.com/">Pelican</a></li>
<li><a href="http://python.org/">Python.org</a></li>
<li><a href="http://jinja.pocoo.org/">Jinja2</a></li>
</ul>
<div class="social">
<h3>Social</h3>
<ul>
<li><a href="https://lienze.tech/">老渔夫吃虾米</a></li>
</ul>
</div>
</div>
</div>
<div class="content">
<div class="page-header"><h1> 商伟的技术博客 </h1></div>
<div class='article'>
<h2>MySQL主从</h2>
<div class="well small">Permalink: <a class="more" href="/MySQL主从.html">2020-05-18 17:59:00+02:00</a>
by <a class="url fn" href="/author/shang-wei.html">商伟 </a>
in <a href="/category/mysql.html">MySQL</a>
tags: <a href="/tag/mysql.html">MySQL</a> </div>
<div class="summary"><h3>1.1 mysql主从同步</h3>
<h4><em>1、mysql主从同步(复制)概念</em></h4>
<div class="highlight"><pre><span></span> <span class="mi">1</span><span class="p">.</span> <span class="err">将</span><span class="n">Mysql某一台主机数据复制到其它主机</span><span class="err">(</span><span class="n">slaves</span><span class="err">)上,并重新执行一遍来实现的。</span>
<span class="mi">2</span><span class="p">.</span> <span class="err">复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。</span>
<span class="mi">3</span><span class="p">.</span> <span class="err">主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。</span>
<span class="mi">4</span><span class="p">.</span> <span class="err">当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。</span>
<span class="mi">5</span><span class="p">.</span> <span class="err">从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。</span>
<span class="n">binlog</span><span class="err">:是二进制日志文件,用于记录</span><span class="n">mysql的数据更新或者潜在更新</span><span class="p">(</span><span class="err">比如</span><span class="n">DELETE语句执行删除而实际并没有符合条件的数据</span><span class="p">)</span>
</pre></div>
<h4><em>2、Mysql支持哪些复制</em></h4>
<div class="highlight"><pre><span></span> <span class="mi">1</span><span class="p">.</span> <span class="err">基于语句的复制</span><span class="p">:</span> <span class="err">在主服务器执行</span><span class="n">SQL语句</span><span class="err">,在从服务器执行同样语句。</span>
<span class="err">注:</span><span class="n">MySQL默认采用基于语句的复制</span><span class="err">,效率较高。一旦发现没法精确复制时</span><span class="p">,</span> <span class="err">会自动选基于行的复制。</span>
<span class="mi">2</span><span class="p">.</span> <span class="err">基于行的复制</span><span class="p">:</span> <span class="err">把改变的内容复制过去,而不是把命令在从服务器上执行一遍</span><span class="p">.</span> <span class="err">从</span><span class="n">mysql5</span><span class="p">.</span><span class="mi">0 …</span></pre></div> <a class="btn primary xsmall" href="/MySQL主从.html">more…</a>
</div>
</div>
<div class='article'>
<h2>Python-进程、线程、协成</h2>
<div class="well small">Permalink: <a class="more" href="/Python-进程、线程、协成.html">2020-05-17 22:01:00+02:00</a>
by <a class="url fn" href="/author/shang-wei.html">商伟 </a>
in <a href="/category/python.html">Python</a>
tags: <a href="/tag/python.html">Python</a> </div>
<div class="summary"><h2>1.进程</h2>
<ul>
<li>
<p>进程</p>
</li>
<li>
<p><strong>进程是资源分配的最小单位( 内存、cpu、网络、io)</strong></p>
</li>
<li><strong>一个运行起来的程序就是一个进程</strong><ul>
<li>什么是程序(程序是我们存储在硬盘里的代码)</li>
<li>硬盘(256G)、内存条(8G)</li>
<li>当我们双击图标,打开程序的时候,实际上就是通过I/O操作(读写)内存条里面</li>
<li>内存条就是我们所指的资源</li>
<li>CPU分时</li>
<li>CPU比你的手速快多了,分时处理每个线程,但是由于太快然你觉得每个线程都是独占cpu</li>
<li>cpu是计算,只有时间片到了,获取cpu,线程真正执行</li>
<li>当你想使用 网络、磁盘等资源的时候,需要cpu的调度</li>
</ul>
</li>
<li><strong>进程具有独立的内存空间,所以没有办法相互通信</strong><ul>
<li>进程如何通信</li>
<li>进程queue(父子进程通信)</li>
<li>pipe(同一程序下两个进程通信)</li>
<li>managers(同一程序下多个进程通信)</li>
<li>RabbitMQ、redis等(不同程序间通信)</li>
</ul>
</li>
<li>为什么需要进程池<ul>
<li>一次性开启指定数量的进程</li>
<li>如果有十个进程,有一百个任务 …</li></ul></li></ul> <a class="btn primary xsmall" href="/Python-进程、线程、协成.html">more…</a>
</div>
</div>
<div class='article'>
<h2>Python-select、epool、pool</h2>
<div class="well small">Permalink: <a class="more" href="/Python-select、epool、pool.html">2020-05-16 23:21:00+02:00</a>
by <a class="url fn" href="/author/shang-wei.html">商伟 </a>
in <a href="/category/python.html">Python</a>
tags: <a href="/tag/python.html">Python</a> </div>
<div class="summary"><p>https://www.cnblogs.com/xiaonq/p/7907871.html</p>
<ul>
<li>
<p>I/O的实质是什么?</p>
</li>
<li>
<p>I/O的实质是将硬盘中的数据,或收到的数据实现从内核态 copy到 用户态的过程</p>
</li>
<li>本文讨论的背景是Linux环境下的network IO。</li>
<li>
<p>比如微信读取本地硬盘的过程</p>
<ul>
<li>微信进程会发送一个读取硬盘的请求----》操作系统</li>
<li>只有内核才能够读取硬盘中的数据---》数据返回给微信程序(看上去就好像是微信直接读取)</li>
</ul>
</li>
<li>
<p>用户态 & 内核态</p>
</li>
<li>
<p>系统空间分为两个部分,一部分是内核态,一部分是用户态的部分</p>
</li>
<li>内核态:内核态的空间资源只有操作系统能够访问</li>
<li>用户态:我们写的普通程序使用的空间</li>
<li>
<p><img alt="1582510462530" src="http://r.photo.store.qq.com/psc?/V11vDzPO1w5782/evyMJ*ZwKmN7EwaKYDZ0cDadIcxPvUtyq26XjyS3icpqLFiFeUQCWbsf1I439OGpKUb6sEWkqE7QoWd3BTZQ9W.CQe7QUEaL.V.aeG4siKM!/r"></p>
</li>
<li>
<p>select</p>
</li>
<li>
<p>只能处理1024个连接(每一个请求都可以理解为一个连接)</p>
</li>
<li>
<p>不能告诉用户程序,哪一个连接是活跃的</p>
</li>
<li>
<p>pool</p>
</li>
<li>
<p>只是取消了最大1024个活跃的限制</p>
</li>
<li>
<p>不能告诉用户程序,哪一个连接是活跃的</p>
</li>
<li>
<p>epool</p>
</li>
<li>
<p>不仅取消了1024这个最大连接限制</p>
</li>
<li>而且能告诉用户程序哪一个是活跃的</li>
</ul>
<p><img alt="1582511897842" src="http://r.photo.store.qq.com/psc?/V11vDzPO1w5782/evyMJ*ZwKmN7EwaKYDZ0cK96cig6R0eEHwpqfaa..BLMweNAAOd94J1g7IbSLpgEz5xGefYhpMdIAJD6ycRaRvEMorvLD7Cr1YYEZKJFaL0!/r"></p> <a class="btn primary xsmall" href="/Python-select、epool、pool.html">more…</a>
</div>
</div>
<div class='article'>
<h2>PEP8</h2>
<div class="well small">Permalink: <a class="more" href="/PEP8.html">2020-05-14 13:05:00+02:00</a>
by <a class="url fn" href="/author/shang-wei.html">商伟 </a>
in <a href="/category/python.html">Python</a>
tags: <a href="/tag/python.html">Python</a> </div>
<div class="summary"><p>缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。</p>
<p>每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。</p>
<p>类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。</p>
<p>块注释,在一段代码前增加的注释。在‘#’后加一空格。段落之间以只有‘#’的行间隔</p>
<p>各种右括号前不要加空格。</p>
<p>逗号、冒号、分号前不要加空格。</p>
<p>函数的左括号前不要加空格。如Func(1)。</p>
<p>序列的左括号前不要加空格。如list[2]。</p>
<p>操作符左右各加一个空格,不要为了对齐增加空格。</p>
<p>函数默认参数使用的赋值符左右省略空格。</p>
<p>不要将多句语句写在同一行,尽管使用‘;’允许。</p>
<p>if/for/while语句中,即使执行语句只有一句,也必须另起一行。</p>
<p>类的方法第一个参数必须是self,而静态方法第一个参数必须是cls。</p> <a class="btn primary xsmall" href="/PEP8.html">more…</a>
</div>
</div>
<div class='article'>
<h2>自定义鼠标指针</h2>
<div class="well small">Permalink: <a class="more" href="/自定义鼠标指针.html">2020-04-09 21:52:00+02:00</a>
by <a class="url fn" href="/author/shang-wei.html">商伟 </a>
in <a href="/category/web.html">web</a>
tags: <a href="/tag/web.html">web</a> </div>
<div class="summary"><p>现而今,我们纵向的回顾整个大前端的历史,不难发现,人们对前端的审美要求越来越高,越来越严苛,与此同时,人们对追求美的体验是也极致的,从理性到感性,从平面到几何,从现实到虚拟,所以从某种角度来说,作为前端工程师,他们所追求的东西往往和人类软件核心理念南辕北辙,因为人类的终极追求是个性,绝不是共性,换句话说,大家都一样就不好玩儿了。</p>
<p>那么作为web前端,追求个性的手段手段之一就是鼠标指针的更换,早在css2时代,Cursor属性就可以对象鼠标指针光标进行控制,可以根据自身需要选择设置鼠标指针样式,代码如下:</p>
<div class="highlight"><pre><span></span><span class="o"><</span><span class="n">head</span><span class="o">></span>
<span class="o"><</span><span class="n">title</span><span class="o">></span><span class="n">cursor属性</span><span class="o"></</span><span class="n">title</span><span class="o">></span>
<span class="o"></</span><span class="n">head</span><span class="o">></span>
<span class="o"><</span><span class="n">body</span><span class="o">></span>
<span class="o"><</span><span class="n">p</span><span class="o">></span><span class="err">请把鼠标移动到单词上,可以看到鼠标指针发生变化:</span><span class="o"></</span><span class="n">p</span><span class="o">></span>
<span class="o"><</span><span class="n">span</span> <span class="n">style</span><span class="o">=</span><span class="s2">"cursor:auto"</span><span class="o">></span><span class="n">Auto</span><span class="o">......</</span><span class="n">span</span><span class="o">><</span><span class="n">br</span> <span class="o">/></span>
<span class="o"><</span><span class="n">span</span> <span class="n">style</span><span class="o">=</span><span class="s2">"cursor:crosshair"</span><span class="o">></span><span class="n">Crosshair</span><span class="o">......</</span><span class="n">span</span><span class="o">><</span><span class="n">br</span> <span class="o">/></span>
<span class="o"><</span><span class="n">span</span> <span class="n">style</span><span class="o">=</span><span class="s2">"cursor …</span></pre></div> <a class="btn primary xsmall" href="/自定义鼠标指针.html">more…</a>
</div>
</div>
<div class='article'>
<h2>live2d的动态小挂件</h2>
<div class="well small">Permalink: <a class="more" href="/live2d的动态小挂件.html">2020-03-07 15:03:00+01:00</a>
by <a class="url fn" href="/author/shang-wei.html">商伟 </a>
in <a href="/category/web.html">web</a>
tags: <a href="/tag/web.html">web</a> </div>
<div class="summary"><p>喜欢二次元的朋友一定对大名鼎鼎的live2d技术并不陌生,live2D是一种应用于电子游戏的绘图渲染技术,技术由日本Cybernoids公司开发,通过一系列的连续图像和人物建模来生成一种类似三维模型的二维图像。</p>
<p>可以看到本站右下角出现了一只可爱的小喵</p>
<p><img alt="img" src="http://m.qpic.cn/psc?/V11vDzPO1w5782/zfrllz9Q9AzvUwq**DIV02dzZYRUvMYLJwvmipTxIeGo0Ttkhyrtl.fFv0K0F7EcNm9RZ36e.S8mRXkxx8Rd1Q!!/b&bo=BgKCAQYCggEDCSw!&rf=viewer_4"></p>
<p>可以看到这只猫会跟着你的鼠标运动,有着伪3D的感觉,这种技术的核心就是明明是2D平面设计风格,却有3D行为交互的效果就是live2d</p>
<p>值得一提的是Live2D游戏也风靡一时,比较著名的有《梦幻俱乐部》(DREAM C CLUB),其在android端首次使用live2d技术,可以说有着里程碑的意义,得到了业界的一致好评。</p>
<p>live2d官方提供了很多平台的SDK),包括iOS,Android,Flash,Unity,openGL等,然后如果要在网页中呈现,则可以提供了WebGL SDK,可以参照官方网站:https://www.live2d.com/</p>
<p>live2d不仅在移动端,同时也可以在网页中呈现,首先网页要引入官方提供的webgl的js压缩包 L2Dwidget.min.js,建议在页面底部延迟加载,因为其体积过于庞大,如果不延迟加载,会严重影响你的网站的加载速度和性能,然后在页面中写入以下代码:</p>
<div class="highlight"><pre><span></span>var arr = ['wanko','hibiki','hijiki','tororo'];
var …</pre></div> <a class="btn primary xsmall" href="/live2d的动态小挂件.html">more…</a>
</div>
</div>
<div class='article'>
<h2>为网站添加暗黑模式</h2>
<div class="well small">Permalink: <a class="more" href="/为网站添加暗黑模式.html">2020-01-15 22:20:00+01:00</a>
by <a class="url fn" href="/author/shang-wei.html">商伟 </a>
in <a href="/category/web.html">web</a>
tags: <a href="/tag/web.html">web</a> </div>
<div class="summary"><p>究竟什么是暗黑模式?这个概念起初来源于macOS系统,该系统的mojave版本为用户提供两个主题皮肤,即浅色和深色的皮肤。自从有了这个概念之后,很多网站和系统都会用户提供了相应的两套肤色,便于用户根据自己的习惯或爱好进行切换</p>
<p><img alt="img" src="http://m.qpic.cn/psc?/V11vDzPO1w5782/evyMJ*ZwKmN7EwaKYDZ0cJsaS6tPtY3Ylot*koQ8t7rtX9PMrDQXsJ.ez1e094bIVVwA6mrijapv.TVC3WYaplPif*ONKGLodw1vASMNNLA!/b&bo=lgKUApYClAICSW0!&rf=viewer_4"></p>
<p>从科学的角度讲,低对比度的暗色可以降低屏幕对视网膜的刺激,同时还可以让电子设备更加省电。</p>
<p>在过往的印象之中,最早实现类似的效果,一般都是通过JavaScript来更换Web页面或Web应用程序主题皮肤的.css文件,但是对于维护多套样式是较为痛苦的,特别当你要为你的产品提供更多的皮肤的时候更为堪忧。这个时候你可以借助类似Sass这样的处理器来维护你的主题样式,声明好变量,然后维护对应的变量值。</p>
<p>这就是css3的自定义属性,自定义属性的出现,可以让css样式也使用变量,通过js可以动态的修改变量的值</p>
<div class="highlight"><pre><span></span><span class="o">//</span><span class="err">现在全局定义</span>
<span class="p">:</span><span class="n">root</span><span class="p">{</span>
<span class="o">--</span><span class="n">theme</span><span class="o">-</span><span class="n">color</span><span class="p">:</span><span class="n">red</span><span class="p">;</span>
<span class="p">}</span>
<span class="o">//</span><span class="err">使用的时候</span>
<span class="c1">#app{</span>
<span class="n">background</span><span class="o">-</span><span class="n">color</span><span class="p">:</span><span class="n">var</span><span class="p">(</span><span class="o">--</span><span class="n">theme</span><span class="o">-</span><span class="n">color</span><span class="p">);</span>
<span class="p">}</span>
<span class="o">//</span><span class="err">假如我们没有指定</span><span class="o">--</span><span class="n">theme</span><span class="o">-</span><span class="n">color这个属性</span><span class="err">,则可以在使用的时候加上替代值</span>
<span class="c1">#app{</span>
<span class="n">background</span><span class="o">-</span><span class="n">color</span><span class="p">:</span><span class="n">var</span><span class="p">(</span><span class="o">--</span><span class="n">theme</span><span class="o">-</span><span class="n">color</span><span class="p">,</span><span class="n">black</span><span class="p">);</span><span class="o">//</span><span class="err">没有指定</span><span class="o">--</span><span class="n">theme</span><span class="o">-</span><span class="n">color则会由black代替</span>
<span class="p">}</span>
</pre></div>
<p>通过JS获取和设置自定义的属性 …</p> <a class="btn primary xsmall" href="/为网站添加暗黑模式.html">more…</a>
</div>
</div>
<div class='article'>
<h2>微信小程序快速生成工具</h2>
<div class="well small">Permalink: <a class="more" href="/微信小程序快速生成工具.html">2019-12-12 18:44:00+01:00</a>
by <a class="url fn" href="/author/shang-wei.html">商伟 </a>
in <a href="/category/xiao-cheng-xu.html">小程序</a>
tags: <a href="/tag/xiao-cheng-xu.html">小程序</a> </div>
<div class="summary"><h5>快速生成小程序代码的工具</h5>
<ul>
<li>HBuilderX -- 下载地址</li>
<li>https://www.dcloud.io/hbuilderx.html</li>
<li>
<p>也可以生成手机小程序app</p>
</li>
<li>
<p>官方组件文档</p>
</li>
<li>
<p><a href="https://uniapp.dcloud.io/component/README">https://uniapp.dcloud.io/component/README</a></p>
</li>
<li>
<p>官方文档介绍</p>
</li>
<li><a href="https://dcloud.io/doc.html">https://dcloud.io/doc.html</a></li>
</ul> <a class="btn primary xsmall" href="/微信小程序快速生成工具.html">more…</a>
</div>
</div>
<div class='article'>
<h2>Docker-应用场景</h2>
<div class="well small">Permalink: <a class="more" href="/Docker-应用场景.html">2019-08-09 18:44:00+02:00</a>
by <a class="url fn" href="/author/shang-wei.html">商伟 </a>
in <a href="/category/docker.html">Docker</a>
tags: <a href="/tag/docker.html">Docker</a> </div>
<div class="summary"><h4>docker技术应用场景</h4>
<p><strong>1、场景一:节省项目环境部署时间</strong></p>
<p><strong>1)单项目打包</strong></p>
<p>1. 每次部署项目到测试、生产等环境,都要部署一大堆依赖的软件、工具,时间久,出错概率大。</p>
<p>2. Docker主要理念就是环境打包部署,可在任意Docker Engine运行。</p>
<p>3. 我们只需要将每个项目环境打包到镜像,push到镜像仓库,当有需要部署这个项目时,
直接pull镜像启动容器,这个项目就可以访问了!一次构建多次部署,一劳永逸。</p>
<p><strong>2)整套项目打包</strong></p>
<p>1. 比如有一个产品可以整套部署到客户那里,以往都是派一名实施工程师到客户那部署。</p>
<p>2. 如果用了Docker,我们可以前期将这套项目封装打包起来,实现一键部署,分分钟钟搞定,就不需要再派人过去了。比如官方的Docker Compose编排工具。</p>
<p><strong>3)新开源技术试用</strong></p>
<p>1. 有时,我们想调研一些开源项目,我们可以直接从公共镜像仓库pull项目官方做好镜像启动容器即可。</p>
<p><strong>2、场景二:环境一致性</strong></p>
<p>1. 项目在开发电脑本地运行没问题,到了测试或生产环境就运行不起来 …</p> <a class="btn primary xsmall" href="/Docker-应用场景.html">more…</a>
</div>
</div>
<div class='article'>
<h2>Django126发送邮件</h2>
<div class="well small">Permalink: <a class="more" href="/Django126发送邮件.html">2019-08-08 18:44:00+02:00</a>
by <a class="url fn" href="/author/shang-wei.html">商伟 </a>
in <a href="/category/django.html">Django</a>
tags: <a href="/tag/django.html">Django</a> </div>
<div class="summary"><ul>
<li>首先取得网易授权</li>
</ul>
<div class="highlight"><pre><span></span> <span class="m">1</span>. 设置
<span class="m">2</span>.左侧客户端授权码
<span class="m">3</span>.自定义授权码 也就是你配置文件中的密码
</pre></div>
<ul>
<li>配置文件</li>
</ul>
<div class="highlight"><pre><span></span> 邮件
<span class="nv">EMAIL_HOST</span> <span class="o">=</span> <span class="s1">'shang.126.com'</span>
设置端口号,为数字
<span class="nv">EMAIL_PORT</span> <span class="o">=</span> <span class="m">25</span>
设置发件人邮箱
<span class="nv">EMAIL_HOST_USER</span> <span class="o">=</span> <span class="s1">'[email protected]'</span>
设置发件人 授权码
<span class="nv">EMAIL_HOST_PASSWORD</span> <span class="o">=</span> <span class="s1">'ice1a3136'</span>
设置是否启用安全链接
<span class="nv">EMAIL_USER_TLS</span> <span class="o">=</span> True
<span class="nv">EMAIL_USER_TLS</span> <span class="o">=</span> False
<span class="nv">DEFAULT_FROM_EMAIL</span> <span class="o">=</span> EMAIL_HOST_USER
</pre></div>
<ul>
<li>views.py</li>
</ul>
<div class="highlight"><pre><span></span> from django.core.mail import send_email
from django.conf import settings
def sendMsg<span class="o">()</span>:
<span class="nv">res …</span></pre></div> <a class="btn primary xsmall" href="/Django126发送邮件.html">more…</a>
</div>
</div>
<div class="pagination">
<ul>
<li class="prev disabled"><a href="#">← Previous</a></li>
<li class="active"><a href="/index.html">1</a></li>
<li class=""><a href="/index2.html">2</a></li>
<li class=""><a href="/index3.html">3</a></li>
<li class=""><a href="/index4.html">4</a></li>
<li class=""><a href="/index5.html">5</a></li>
<li class=""><a href="/index6.html">6</a></li>
<li class=""><a href="/index7.html">7</a></li>
<li class=""><a href="/index8.html">8</a></li>
<li class=""><a href="/index9.html">9</a></li>
<li class="next"><a href="/index2.html">Next →</a></li>
</ul>
</div>
<footer>
<p>Powered by <a href="http://getpelican.com/">Pelican</a>. Theme based on <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a>.</p>
<p>© 商伟</p>
</footer>
</div>
</div>
</body>
</html>