-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
173 lines (104 loc) · 45.4 KB
/
Copy pathatom.xml
File metadata and controls
173 lines (104 loc) · 45.4 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
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>一个Wiki站点</title>
<link href="/atom.xml" rel="self"/>
<link href="https://wiki.letcoder.cn/"/>
<updated>2020-10-06T02:49:00.172Z</updated>
<id>https://wiki.letcoder.cn/</id>
<author>
<name>QXQZX</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>Qt4andQt5</title>
<link href="https://wiki.letcoder.cn/2020/10/06/Qt4andQt5/"/>
<id>https://wiki.letcoder.cn/2020/10/06/Qt4andQt5/</id>
<published>2020-10-06T02:11:26.000Z</published>
<updated>2020-10-06T02:49:00.172Z</updated>
<content type="html"><![CDATA[<h1 id="Qt-creator-Qt4-与-Qt5-环境搭建"><a href="#Qt-creator-Qt4-与-Qt5-环境搭建" class="headerlink" title="Qt creator Qt4 与 Qt5 环境搭建"></a>Qt creator Qt4 与 Qt5 环境搭建</h1><p>教室里的嵌入式机器装的是Qt4,用习惯了新版的Qt creator再用旧版的,有点难以适应。</p><p>所以我就行:反正Qt creator只是个写代码的壳子,套在Qt5上可以,在Qt4上肯定也行</p><a id="more"></a><h2 id="提前准备"><a href="#提前准备" class="headerlink" title="提前准备"></a>提前准备</h2><ul><li>Qt5 这个可以去国内镜像站下载,官方下载比较慢,已经安装的可以跳过这一步</li></ul><p><img src="https://i.loli.net/2020/10/06/KhqPmylL3xRkbgF.png" alt="image-Qt5download"></p><p>Qt5 自带新版Qt creator,比旧版的creator好用很多</p><p><code>http://mirrors.ustc.edu.cn/qtproject/archive/qt/5.14/5.14.2/</code> 下载带windows字样的文件就可以了</p><p>下载完直接安装</p><ul><li><p>下载MinGW</p><p>我准备下4.8.7版本的Qt4</p><p><strong>不同版本的Qt需要不同版本的MinGW,不要下错了!!!</strong></p></li></ul><p><img src="https://i.loli.net/2020/10/06/1Y2nfsjRaTvzA5B.png" alt="image-mingwdownload"></p><p><code>https://wiki.qt.io/MinGW</code></p><p><strong>下载好解压,等会要用</strong></p><ul><li><p>Qt4 sdk</p><p>这个东西在国内镜像找不到了,只能去官网下载</p><p><code>http://download.qt.io/archive/qt/4.8/4.8.7/</code></p><p><img src="https://i.loli.net/2020/10/06/IouHrDif7ORtYQN.png" alt="image-Qt4download"></p><p>下载也是安装就行,中间会让你选择MinGW的路径,找到刚才解压的文件,进入找到bin所在的路径,粘贴上就行</p><p><strong>路径不要带着 <code>bin</code></strong> 点到为止</p></li></ul><p><img src="https://i.loli.net/2020/10/06/D1kabGXMe6OZNd7.png" alt="image-mingwpath"></p><h2 id="环境搭建"><a href="#环境搭建" class="headerlink" title="环境搭建"></a>环境搭建</h2><ul><li><p>打开Qt creator, 现在是Qt5的环境</p><p><code>工具->选项->Kits</code> 我们就是修改这里的内容</p></li><li><p>点开<code>编译器选项卡</code></p><p><code>添加->MinGW</code> C/C++都要修改</p><p>这以C++为例</p><p> <img src="https://i.loli.net/2020/10/06/dwNXro4H8FLxpjI.png" alt="image-compilers"></p><p><strong>C ==> gcc.exe</strong></p><p><strong>C++ ==> g++.exe</strong></p></li></ul><ul><li><p>同样的方式 改一下Debuggers</p><p>查找 <strong>mingw/bin/gdb.exe</strong></p></li><li><p>接下来打开Qt Versions</p><p><code>添加</code> 然后找到你安装Qt4的目录,选择 <strong>bin/qmake.exe</strong> 前面没有红色感叹号 说明成功了</p><p><img src="https://i.loli.net/2020/10/06/SbisAkG5BzZqQKl.png" alt="image-Qt Versions"></p></li><li><p>最后 构建套件(Kit)</p><p>依旧点击添加,修改红色框起来的部分就可以了</p><p><img src="https://i.loli.net/2020/10/06/Expvm51sQe3RLkD.png" alt="image-Kits"></p></li></ul><p>环境搭建完成!</p><h2 id="测试"><a href="#测试" class="headerlink" title="测试"></a>测试</h2><p>新建项目,可以选一个 也可以两个都选</p><p><img src="https://i.loli.net/2020/10/06/zMcno6lhbrdCLeg.png" alt="image-newporject"></p><p>新建的项目 会有这些警告,可以编译可以运行,就是警告看着难受。</p><p><img src="https://i.loli.net/2020/10/06/IFYs6K5N4AzpJPu.png" alt="image-warnings3"></p><p><code>帮助->关于</code>把这个插件关掉就行了。</p><p><img src="https://i.loli.net/2020/10/06/UQSkdtlT3V5IEKg.png" alt="image-plugins"></p><p><strong>Qt4 不支持<code>nullptr</code>关键字,要手动改成0或者NULL</strong></p><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><QWidget></span></span></span><br><span class="line"></span><br><span class="line">QT_BEGIN_NAMESPACE</span><br><span class="line"><span class="keyword">namespace</span> Ui { <span class="class"><span class="keyword">class</span> <span class="title">Widget</span>;</span> }</span><br><span class="line">QT_END_NAMESPACE</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Widget</span> :</span> <span class="keyword">public</span> QWidget</span><br><span class="line">{</span><br><span class="line"> Q_OBJECT</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span>:</span><br><span class="line"><span class="comment">// Widget(QWidget *parent = nullptr);</span></span><br><span class="line"> Widget(QWidget *parent = <span class="number">0</span>);</span><br><span class="line"> ~Widget();</span><br><span class="line"></span><br><span class="line"><span class="keyword">private</span>:</span><br><span class="line"> Ui::Widget *ui;</span><br><span class="line">};</span><br></pre></td></tr></table></figure><h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><blockquote><ul><li><a href></a></li><li><a href></a></li></ul></blockquote>]]></content>
<summary type="html">
<h1 id="Qt-creator-Qt4-与-Qt5-环境搭建"><a href="#Qt-creator-Qt4-与-Qt5-环境搭建" class="headerlink" title="Qt creator Qt4 与 Qt5 环境搭建"></a>Qt creator Qt4 与 Qt5 环境搭建</h1><p>教室里的嵌入式机器装的是Qt4,用习惯了新版的Qt creator再用旧版的,有点难以适应。</p>
<p>所以我就行:反正Qt creator只是个写代码的壳子,套在Qt5上可以,在Qt4上肯定也行</p>
</summary>
<category term="开发环境" scheme="https://wiki.letcoder.cn/categories/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/"/>
<category term="windows" scheme="https://wiki.letcoder.cn/categories/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/windows/"/>
<category term="Qt开发" scheme="https://wiki.letcoder.cn/categories/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/windows/Qt%E5%BC%80%E5%8F%91/"/>
<category term="Qt4" scheme="https://wiki.letcoder.cn/tags/Qt4/"/>
<category term="Qt5" scheme="https://wiki.letcoder.cn/tags/Qt5/"/>
<category term="Qt creator" scheme="https://wiki.letcoder.cn/tags/Qt-creator/"/>
</entry>
<entry>
<title>Nginx无法挂载/root目录的静态资源</title>
<link href="https://wiki.letcoder.cn/2020/02/04/nginx-01/"/>
<id>https://wiki.letcoder.cn/2020/02/04/nginx-01/</id>
<published>2020-02-04T11:56:51.000Z</published>
<updated>2020-02-04T12:11:46.731Z</updated>
<content type="html"><![CDATA[<h3 id="nginx静态资源文件无法访问,403-forbidden错误"><a href="#nginx静态资源文件无法访问,403-forbidden错误" class="headerlink" title="nginx静态资源文件无法访问,403 forbidden错误"></a>nginx静态资源文件无法访问,403 forbidden错误</h3><p>在安装 nginx 服务器后,我想把网站的根目录设置为 <code>/root/www/</code> ,于是对 <code>nginx</code> 的 <code>nginx.conf</code> 文件进行配置</p><a id="more"></a><p>先打开 <code>nginx.conf</code></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br></pre></td><td class="code"><pre><span class="line">#user nobody;</span><br><span class="line">worker_processes 1;</span><br><span class="line"></span><br><span class="line">#error_log logs/error.log;</span><br><span class="line">#error_log logs/error.log notice;</span><br><span class="line">#error_log logs/error.log info;</span><br><span class="line"></span><br><span class="line">#pid logs/nginx.pid;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">events {</span><br><span class="line"> worker_connections 1024;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">http {</span><br><span class="line"> include mime.types;</span><br><span class="line"> default_type application/octet-stream;</span><br><span class="line"></span><br><span class="line"> #log_format main '$remote_addr - $remote_user [$time_local] "$request" '</span><br><span class="line"> # '$status $body_bytes_sent "$http_referer" '</span><br><span class="line"> # '"$http_user_agent" "$http_x_forwarded_for"';</span><br><span class="line"></span><br><span class="line"> #access_log logs/access.log main;</span><br><span class="line"></span><br><span class="line"> sendfile on;</span><br><span class="line"> #tcp_nopush on;</span><br><span class="line"></span><br><span class="line"> #keepalive_timeout 0;</span><br><span class="line"> keepalive_timeout 65;</span><br><span class="line"></span><br><span class="line"> #gzip on;</span><br><span class="line"></span><br><span class="line"> server {</span><br><span class="line"> listen 80;</span><br><span class="line"> server_name localhost;</span><br><span class="line"> </span><br><span class="line"> charset utf-8;</span><br><span class="line"> </span><br><span class="line"> #access_log logs/host.access.log main;</span><br><span class="line"> </span><br><span class="line"> location / {</span><br><span class="line"> root /root/www/; ## 设置的地方</span><br><span class="line"> index index.html index.htm;</span><br><span class="line"> }</span><br><span class="line"> #error_page 404 /404.html;</span><br><span class="line"> </span><br><span class="line"> # redirect server error pages to the static page /50x.html</span><br><span class="line"> #</span><br><span class="line"> error_page 500 502 503 504 /50x.html;</span><br><span class="line"> location = /50x.html {</span><br><span class="line"> root html;</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> # proxy the PHP scripts to Apache listening on 127.0.0.1:80</span><br><span class="line"> #</span><br><span class="line"> #location ~ \.php$ {</span><br><span class="line"> # proxy_pass http://127.0.0.1;</span><br><span class="line"> #}</span><br><span class="line"></span><br><span class="line"> # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000</span><br><span class="line"> #</span><br><span class="line"> #location ~ \.php$ {</span><br><span class="line"> # root html;</span><br><span class="line"> # fastcgi_pass 127.0.0.1:9000;</span><br><span class="line"> # fastcgi_index index.php;</span><br><span class="line"> # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;</span><br><span class="line"> # include fastcgi_params;</span><br><span class="line"> #}</span><br><span class="line"></span><br><span class="line"> # deny access to .htaccess files, if Apache's document root</span><br><span class="line"> # concurs with nginx's one</span><br><span class="line"> #</span><br><span class="line"> #location ~ /\.ht {</span><br><span class="line"> # deny all;</span><br><span class="line"> #}</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>保存后,重启 nginx 服务,然后出现了 403 错误</p><h3 id="解决方案"><a href="#解决方案" class="headerlink" title="解决方案"></a>解决方案</h3><p>网上查询后说是权限问题,更改 nginx.conf 的第一行<br>将 <code>#user nobody;</code> 改为 <code>user root;</code></p><p>保存,再次重启 nginx 服务,访问成功</p><p><img src="https://i.loli.net/2020/02/04/gSbe6TniEx5hBdu.png" alt="nginx-root.png"></p><p>如果不想使用root用户运行,就不能把目录放在 <code>/root/</code> 目录下了,可以选择放在 <code>/home/www</code> 下,并设置 www 的权限 777,同样可以访问成功。<br><img src="https://i.loli.net/2020/02/04/fYeEpcF7qbQJSW2.png" alt="nginx-home.png"></p><h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><blockquote><ul><li><a href></a></li><li><a href></a></li></ul></blockquote>]]></content>
<summary type="html">
<h3 id="nginx静态资源文件无法访问,403-forbidden错误"><a href="#nginx静态资源文件无法访问,403-forbidden错误" class="headerlink" title="nginx静态资源文件无法访问,403 forbidden错误"></a>nginx静态资源文件无法访问,403 forbidden错误</h3><p>在安装 nginx 服务器后,我想把网站的根目录设置为 <code>/root/www/</code> ,于是对 <code>nginx</code> 的 <code>nginx.conf</code> 文件进行配置</p>
</summary>
<category term="web部署" scheme="https://wiki.letcoder.cn/categories/web%E9%83%A8%E7%BD%B2/"/>
<category term="nginx采坑" scheme="https://wiki.letcoder.cn/categories/web%E9%83%A8%E7%BD%B2/nginx%E9%87%87%E5%9D%91/"/>
<category term="Nginx" scheme="https://wiki.letcoder.cn/tags/Nginx/"/>
</entry>
<entry>
<title>windows下python jupyter tensorflow-gpu环境搭建</title>
<link href="https://wiki.letcoder.cn/2019/07/22/python-jupyter-tensorflow-gpu/"/>
<id>https://wiki.letcoder.cn/2019/07/22/python-jupyter-tensorflow-gpu/</id>
<published>2019-07-22T13:30:48.000Z</published>
<updated>2019-07-22T13:39:13.888Z</updated>
<content type="html"><![CDATA[<h2 id="python基本环境搭建"><a href="#python基本环境搭建" class="headerlink" title="python基本环境搭建"></a>python基本环境搭建</h2><ul><li><p>首先<code>https://www.python.org/downloads/windows/</code>下载对应版本的python</p></li><li><p>安装的时候注意一下几点就ok, 选择自定安装是为了更改安装目录, 如果想安装早C盘, 直接点第一个就行,然后无脑next</p><a id="more"></a><p><img src="https://iqxqzx.gitee.io/pic/images/2019/7/22/python_install_01.png" alt="install"></p></li><li><p>检查一下是否安装好了</p><p><img src="https://iqxqzx.gitee.io/pic/images/2019/7/22/python_cmd_02.png" alt="cmd"></p><p>出现’>>>’就表示安装好了</p></li><li><p>打开cmd 输入<code>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ jupyter</code></p><p>-i 是表示用国内源, 清华的比较快</p></li><li><p>然后打开cmd输入<code>jypyter notebook</code> 大功告成</p></li></ul><h2 id="tensorflow环境搭建(需要vs2015或者以上版本)"><a href="#tensorflow环境搭建(需要vs2015或者以上版本)" class="headerlink" title="tensorflow环境搭建(需要vs2015或者以上版本)"></a>tensorflow环境搭建(需要vs2015或者以上版本)</h2><ul><li><p>试一下在jupyter里<code>import tensorflow</code></p><p><img src="https://iqxqzx.gitee.io/pic/images/2019/7/22/python_tensorflow_03.png" alt="tensorflow"></p><p>不出意外会有这个报错,所以我们就要去下载cuda 10.0, 后面的链接是给的9.0, 不用管,让下什么版本就下什么版本,不要没事找事。</p></li><li><p><code>https://developer.nvidia.com/cuda-10.0-download-archive</code> cuda 10.0的下载地址</p><p><img src="https://iqxqzx.gitee.io/pic/images/2019/7/22/python_cuda_04.png" alt="cuda"></p><p>本地版应该比网络版快,点击下载就ok,下载完安装,全部默认,不知道啥用就不要改了。</p></li><li><p>还需要下载cudnn,这个要注册之后才能下载</p><p><img src="https://iqxqzx.gitee.io/pic/images/2019/7/22/cudnn.png" alt="cudnn"></p><p>下载与cuda对应版本即可, 之后解压, 把解压之后的东西, 放到<code>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0</code>对应目录下</p></li><li><p>接下来配置环境变量:</p><p>计算机上点右键,打开属性->高级系统设置->环境变量,可以看到系统中多了CUDA_PATH和CUDA_PATH_V8_0两个环境变量,接下来,还要在系统中添加以下几个环境变量:</p><p><code>CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0CUDA_LIB_PATH = %CUDA_PATH%\lib\x64CUDA_BIN_PATH = %CUDA_PATH%\binCUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64</code>‘</p></li><li><p>在系统变量 PATH 的末尾添加:<br><code>CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;</code><br>再添加如下4条(默认安装路径):<br><code>:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\common\lib\x64;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64;</code></p></li><li><p>打开<code>cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\demo_suite</code></p><p>然后分别执行<code>bandwidthTest.exe</code>和<code>deviceQuery.exe</code>。</p><p>如果都返回Result=PASS就是配置成功了。</p></li><li><p>进入python<code>import tensorflow</code>啥都没发生,好了可以写代码了。</p></li></ul><h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><ul><li><a href></a></li><li><a href></a></li></ul>]]></content>
<summary type="html">
<h2 id="python基本环境搭建"><a href="#python基本环境搭建" class="headerlink" title="python基本环境搭建"></a>python基本环境搭建</h2><ul>
<li><p>首先<code>https://www.python.org/downloads/windows/</code>下载对应版本的python</p>
</li>
<li><p>安装的时候注意一下几点就ok, 选择自定安装是为了更改安装目录, 如果想安装早C盘, 直接点第一个就行,然后无脑next</p>
</summary>
<category term="开发环境" scheme="https://wiki.letcoder.cn/categories/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/"/>
<category term="windows" scheme="https://wiki.letcoder.cn/categories/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/windows/"/>
<category term="python开发" scheme="https://wiki.letcoder.cn/categories/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/windows/python%E5%BC%80%E5%8F%91/"/>
<category term="python" scheme="https://wiki.letcoder.cn/tags/python/"/>
<category term="机器学习" scheme="https://wiki.letcoder.cn/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
</entry>
<entry>
<title>Web学习路线</title>
<link href="https://wiki.letcoder.cn/2019/07/22/web/"/>
<id>https://wiki.letcoder.cn/2019/07/22/web/</id>
<published>2019-07-22T03:50:06.000Z</published>
<updated>2019-07-22T03:51:43.948Z</updated>
<content type="html"><![CDATA[<h3 id="Web前端入门的自学路线"><a href="#Web前端入门的自学路线" class="headerlink" title="Web前端入门的自学路线"></a>Web前端入门的自学路线</h3><p>新手入门前端,需要学习的基础内容有很多,如下。</p><p>博主现在正在努力学习前端ing</p><a id="more"></a><p>一、HTML、CSS基础、JavaScript语法基础。学完基础后,可以仿照电商网站(例如京东、小米)做首页的布局。</p><p>二、JavaScript语法进阶。包括:作用域和闭包、this和对象原型等。相信我,JS语法,永远是面试中最重要的部分。</p><p>三、jQuery、Ajax等。</p><p>四、ES6语法。这部分属于JS新增的语法,面试必问。其中,关于promise、async等内容要尤其关注。</p><p>五、HTML5和CSS3。要熟悉其中的新特性。</p><p>六、canvas。面试时,有的公司不一定会问canvas,靠运气。如果时间不够,这部分的内容可以先不学。</p><p>七、移动Web开发、Bootstrap等。要注意移动开发中的适配和兼容性问题。</p><p>八、前端框架:Vue.js和React。这两个框架至少要会一个。入门时,建议先学Vue.js,上手相对容易。</p><p>九、Node.js。属于加分项,如果时间不够,可以先不学,但至少要知道 node 环境的配置。</p><p>十、自动化工具:构建工具 Webpack、构建工具 gulp、CSS 预处理器 Sass 等。注意,Sass 比 Less 用得多,gulp 比 grunt 用得多。</p><p>十一、前端综合:HTTP协议、跨域通信、安全问题(CSRF、XSS)、浏览器渲染机制、异步和单线程、页面性能优化、防抖动(Debouncing)和节流阀(Throtting)、lazyload、前端错误监控、虚拟DOM等。</p><p>十二、编辑器相关。Sublime Text 是每个学前端的人都要用到的编辑器。另外,前端常见的IDE有两个:WebStorm 和 Visual Studio Code。WebStorm什么都好,可就是太卡顿;VS Code就相对轻量很多。个人总结一下:新手一般用 WebStorm,入门之后,用 VS Code 的人更多。</p><hr><h3 id="推荐的图文教程"><a href="#推荐的图文教程" class="headerlink" title="推荐的图文教程"></a>推荐的图文教程</h3><p>原作者在GitHub上有一个Web前端入门的学习教程,非常详细,地址是:<br><a href="https://github.com/qianguyihao/Web" target="_blank" rel="noopener">https://github.com/qianguyihao/Web</a></p><p>非常详细和贴心,你值得star。</p><h3 id="推荐的技术博客"><a href="#推荐的技术博客" class="headerlink" title="推荐的技术博客"></a>推荐的技术博客</h3><p>阮一峰 <a href="http://www.ruanyifeng.com/blog/" target="_blank" rel="noopener">http://www.ruanyifeng.com/blog/</a></p><p>张鑫旭 <a href="https://www.zhangxinxu.com/wordpress/" target="_blank" rel="noopener">https://www.zhangxinxu.com/wordpress/</a></p><h3 id="推荐的书籍"><a href="#推荐的书籍" class="headerlink" title="推荐的书籍"></a>推荐的书籍</h3><p>《你不知道的JavaScript》<br>上面这套书有上、中、下三本,你都可以读一读。如果时间不够,那就先读第一本。</p><p>《网络是怎样连接的》<br>程序员面试的时候,经常会被问的一个问题是:“在浏览器的地址栏输入url,按下回车后,发生了什么?”</p><p>为了清楚这个问题,看上面这本书,足够了。如果你想入门计算机网络,这本书也是必读的。评价非常高。</p><h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2>]]></content>
<summary type="html">
<h3 id="Web前端入门的自学路线"><a href="#Web前端入门的自学路线" class="headerlink" title="Web前端入门的自学路线"></a>Web前端入门的自学路线</h3><p>新手入门前端,需要学习的基础内容有很多,如下。</p>
<p>博主现在正在努力学习前端ing</p>
</summary>
<category term="学习路线" scheme="https://wiki.letcoder.cn/categories/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/"/>
<category term="学习路线" scheme="https://wiki.letcoder.cn/tags/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/"/>
</entry>
<entry>
<title>提问的艺术</title>
<link href="https://wiki.letcoder.cn/2019/07/22/%E6%8F%90%E9%97%AE%E7%9A%84%E8%89%BA%E6%9C%AF/"/>
<id>https://wiki.letcoder.cn/2019/07/22/提问的艺术/</id>
<published>2019-07-22T03:20:43.000Z</published>
<updated>2019-07-22T03:22:41.078Z</updated>
<content type="html"><![CDATA[<h4 id="他人提问的方式"><a href="#他人提问的方式" class="headerlink" title="他人提问的方式"></a><strong>他人提问的方式</strong></h4><p>提问他人是一门艺术. 要知道, 他人没有义务回答你的问题. 更严格上讲, 也没人规定你拥有提问他人的这项权利.</p><p>所有的提问都是出于好奇或解决困难的目的, 而所有的无偿回答, 都是出于热心帮助的原因. 回答问题是对你的尊重, 也是对知识本身的尊重. 这也要求着你必须首先尊重他人, 更要尊重知识本身.</p><a id="more"></a><h4 id="先搜索再提问"><a href="#先搜索再提问" class="headerlink" title="先搜索再提问"></a><strong>先搜索再提问</strong></h4><p>不管是在哪个社区里面, 这一点尤为重要. 别人已经遇到过的问题, 解决方法往往也都是一样的.</p><p>这时候提一个相同的问题, 除了会被标记为重复问题之外, 还会被很多人置以鄙视的眼神. 这是一种不认真学习和研究的表现, 在社区交际中要特别注意.</p><p>另一方面, 提出一个问题到解决一个问题的时间, 是远超过直接搜索现有的问题并找到答案的时间的. 重复提出相同的问题, 对自己来说也不是一个非常经济的选择.</p><h4 id="把问题描述清楚"><a href="#把问题描述清楚" class="headerlink" title="把问题描述清楚"></a><strong>把问题描述清楚</strong></h4><p>我们来看下面两个问题:</p><p> 1.我的电脑打不开了怎么办?<br> 2.我的电脑今天下午突然无法开机了, 开机显示一个蓝色的画面, 上面提示系统出现问题, 需要重启, 下面的错误代码是System Service Exception, 还写着nvidia.sys等信息. 下面这张图片是我的现象拍照图 [附图片一张].<br>我们可以明显的看到, 第二种问题描述要更为详细, 且更容易分析问题. 现在我们作为一个回答人员来分析这两个问题.</p><p>第一个问题只说明了电脑打不开, 而电脑打不开有成千上万种可能, 没有办法一一判断. 因为没有办法快速判断问题, 所以解决这个问题可能需要消耗相当长的时间, 甚至双方互相浪费时间做无用功. 此时更多人的选择是直接忽略, 装作看不到这个问题.</p><p>第二个问题从描述就可以看出来是系统蓝屏, 并且提供了一个非常关键的信息 - nvidia.sys. 从这里就可以看出来似乎是显卡驱动导致了无法开机的情况, 这样的问题不是一个大问题, 此时会有非常多的热心朋友会建议此人进入安全模式, 尝试重装显卡驱动等.</p><p>我们可以看到, 两个同样的问题使用了不同的方式去描述, 得到的结果也是相差甚远的. 因此, 将问题尽可能描述的清楚, 有助于他人在第一时间锁定问题的范围, 从而快速定位问题根源. 定位问题的速度越快, 越能吸引更多人来回答这么一个问题.</p><h4 id="态度要端正"><a href="#态度要端正" class="headerlink" title="态度要端正"></a><strong>态度要端正</strong></h4><p>要知道, 你是以一个求知者的身份去询问他人, 因此态度上必须端正.</p><p>首先不要尝试做伸手党. 当别人回答了你的问题, 请先不要忙着追问, 认真思考可能的解决方案, 并尝试去解决. 别人没有义务手把手教你解决问题, 相反你更需要自己把问题研究清楚.</p><p>其次是一定要端正态度. 假设回答区出现了引战现象, 不管引战对象是不是你, 作为询问者的你都一定不要去参与吵架 - 你是来问问题的, 绝对不是来吵架的. 但是你可以心平气和的和他讲道理, 并说明自己的看法, 以及指出他人观点的缺陷之处. 作为询问者, 一定是要端正态度听取正反双方的意见, 并做好问题的总结. 这也不管是对你的名誉还是知识储备, 都是有利而无害的.</p><h4 id="平等互助"><a href="#平等互助" class="headerlink" title="平等互助"></a><strong>平等互助</strong></h4><p>平等互助指的是地位上的平等.</p><p>首先提问中不要使用”跪求”/“跪谢”等极端语言. 使用这些语言多半是心智不成熟的心理年龄低龄化人群, 或者是知识储备并不丰富, 却想着急于求成的人群. 这些词并不能显示出你对知识的尊重, 反而是技术圈的一类很避讳的词.</p><p>同时, 当你的问题被成功解决了, 请不要忘了向对方致谢.</p><p>如果你后来自己解决了问题</p><p>要知道并不是所有人都遇到过你遇到的问题. 有些问题可能因为领域偏门/小概率事件/人为原因等因素, 难以让其他人遇到. 这时候可能他人的回答没有办法解决你的问题.</p><p>但如果你后来自己解决了这个问题, 请一定要记得回到这个位置, 告诉大家你自己解决了, 并附上自己的解决方案.</p><p>这样做的目的一是为了不再浪费他人的时间, 二是告知后来的人这个问题的正确解决方法.</p><p>要知道, 这是一个社区的良性循环. 只有在这个良性循环当中不断前进, 我们的社区才会更温馨可靠.</p><h4 id="最后…"><a href="#最后…" class="headerlink" title="最后…"></a><strong>最后…</strong></h4><p>技术圈和其他圈子不同, 技术圈历来是以包容为骄傲的.</p><p>我可以不赞同你的想法, 但我一定会支持并维护你的正当权力.<br>很多时候, 其他人的行为或许你不一定认可, 但假设这是一个完全没有恶意动机的行为, 你依然要学会去包容, 或者说, 去理解其这样做的目的, 并给出建设性的建议.</p><p>技术圈内人群混杂, 但多半都拥有一颗善良而温暖的心. 他们有的人很热情, 有的人很坚强, 也有的人很脆弱, 也有的人很善良.</p><p>你的一句赞美, 你的一次回答, 你的一次包容, 你的一项建议… 或许对于你来说这不过是简单的一个小举动, 但对于整个技术圈来说, 你, 就是他们的核心.</p><h3 id="English-translation"><a href="#English-translation" class="headerlink" title="English translation:"></a><strong>English translation:</strong></h3><p>Ways to ask others<br>Asking others is an art. Be aware that others are not obligated to answer your questions. More strictly speaking, no one stipulates that you have the right to ask others.</p><p>All questions are for the purpose of curiosity or difficulty solving, and all unpaid answers are for the purpose of enthusiasm. Answering questions is respect for you and respect for knowledge itself. This also requires you to Respect others first, and respect the knowledge itself.</p><p>Search first and then ask questions<br>This is especially important in any community. The problems that others have encountered, the solutions are often the same.</p><p>At this time, the same question is raised. In addition to being marked as a duplication question, it will be despised by many people. This is a performance that is not seriously studied and studied. It should be paid special attention in community communication.</p><p>On the other hand, the time to ask a question to solve a problem is far more than the time to directly search for an existing problem and find the answer. Repeating the same question is not a very economical choice for yourself.</p><p>Describe the problem clearly<br>Let’s look at the following two questions:</p><p>1.What should I do if my computer cannot be opened?<br>2.My computer suddenly can’t boot up this afternoon. The boot shows a blue screen. The above prompts the system to have a problem and needs to be restarted. The following error code is System Service Exception, and also writes nvidia.sys and other information. The picture is a picture of my phenomenon [with a picture].<br>We can clearly see that the second problem description is more detailed and easier to analyze. Now we as an answerer to analyze the two questions.<br>The first question only shows that the computer can’t be opened, and there are thousands of possibilities for the computer to open. There is no way to judge one by one. Because there is no way to quickly judge the problem, it may take a long time to solve this problem. Even the two sides waste time each other to do useless work. At this time, more people’s choices are directly ignored, pretending not to see this problem.</p><p>The second question can be seen from the description is the system blue screen, and provides a very critical information - nvidia.sys. From here it can be seen that the graphics card driver caused the situation to be unable to boot, such a problem is not a big Problem, there will be a lot of enthusiastic friends will recommend this person to enter safe mode, try to reinstall the graphics card driver and so on.</p><p>We can see that the two same problems are described in different ways, and the results are quite different. Therefore, it is helpful to describe the problem as clearly as possible, which helps others to lock the problem in the first place. This quickly locates the source of the problem. The faster the problem is located, the more it attracts more people to answer such a question.</p><p>Correct attitude<br>You know, you are asking someone as a seeker, so you must be correct in your attitude.</p><p>Don’t try to reach out to the party first. When someone answers your question, please don’t ask questions, think about possible solutions, and try to solve them. Others have no obligation to teach you how to solve problems. Instead, you need to put problems yourself. The study is clear.</p><p>Secondly, it is necessary to correct the attitude. Suppose there is a phenomenon of warfare in the answering area. No matter whether the target of the war is you or not, you must not participate in the quarrel as an inquirer - you are asking questions, definitely not quarreling. You can calmly and reasoning with him, and explain your own opinions, as well as points out the flaws of others’ opinions. As an inquirer, you must correct your opinions and listen to the opinions of both parties, and do a good job of summarizing the questions. Is your reputation or knowledge reserve, both beneficial and harmless.</p><p>Equality and mutual assistance<br>Equality and mutual assistance refer to equality in status.</p><p>First of all, don’t use extreme language such as “begging” / “thank you”. Most of these languages are mentally immature mentally young people, or they are not rich in knowledge, but they are eager to seek success. These words do not show your respect for knowledge, but rather a class of avoidance words in the technical circle.</p><p>At the same time, when your problem is solved successfully, please don’t forget to thank the other party.</p><p>If you solve the problem yourself later</p><p>Be aware that not everyone has encountered the problem you encountered. Some problems may be caused by other factors such as domain bias/small probability events/human causes. At this time, there may be no way for others to solve your problem. The problem.</p><p>But if you solve this problem yourself, please remember to go back to this position, tell everyone that you have solved it yourself, and attach your own solution.</p><p>The purpose of this is to stop wasting the time of others, and to inform the later people of the correct solution to this problem.</p><p>You know, this is a virtuous circle of the community. Only by moving forward in this virtuous circle will our community be more warm and reliable.</p><p>At last…<br>The technical circle is different from other circles. The technical circle has always been proud of tolerance.</p><p>I can’t agree with you, but I will support and defend your legitimate rights.<br>Many times, other people’s behavior may not be recognized by you, but assuming that this is a completely malicious act, you still have to learn to be tolerant, or to understand the purpose of doing so, and give constructive suggestions. .</p><p>The crowds in the technical circle are mixed, but most of them have a kind and warm heart. Some of them are very enthusiastic, some are very strong, some are very fragile, and some are very kind.</p><p>One of your compliments, one of your answers, one of your tolerance, one of your suggestions… Perhaps this is a simple little move for you, but for the entire technical circle, you are theirs core.</p><h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><ul><li><a href="https://github.com/Angelic47/TheProgrammingWays/blob/master/1/6_theArtOfAsking.md" target="_blank" rel="noopener">文章出处</a></li><li><a href></a></li></ul>]]></content>
<summary type="html">
<h4 id="他人提问的方式"><a href="#他人提问的方式" class="headerlink" title="他人提问的方式"></a><strong>他人提问的方式</strong></h4><p>提问他人是一门艺术. 要知道, 他人没有义务回答你的问题. 更严格上讲, 也没人规定你拥有提问他人的这项权利.</p>
<p>所有的提问都是出于好奇或解决困难的目的, 而所有的无偿回答, 都是出于热心帮助的原因. 回答问题是对你的尊重, 也是对知识本身的尊重. 这也要求着你必须首先尊重他人, 更要尊重知识本身.</p>
</summary>
<category term="杂谈" scheme="https://wiki.letcoder.cn/categories/%E6%9D%82%E8%B0%88/"/>
<category term="杂谈" scheme="https://wiki.letcoder.cn/tags/%E6%9D%82%E8%B0%88/"/>
</entry>
<entry>
<title>Java学习路线</title>
<link href="https://wiki.letcoder.cn/2019/07/22/java/"/>
<id>https://wiki.letcoder.cn/2019/07/22/java/</id>
<published>2019-07-22T02:55:39.000Z</published>
<updated>2019-07-22T03:49:42.258Z</updated>
<content type="html"><![CDATA[<p>个人认为比较好的Java学习路线 转自群里某大佬<br>涉及:</p><a id="more"></a><h4 id="Java基础:"><a href="#Java基础:" class="headerlink" title="Java基础:"></a><strong>Java基础:</strong></h4><ul><li><p>环境搭建、java编译运行机制、数制、计算机基础</p></li><li><p>Java语法基础</p></li><li><p>Java面向对象编程</p></li><li><p>JDK核心API</p></li><li><p>Java界面编程(AWT)</p></li><li><p>Java高级知识(IO、多线程、异常处理、网络通信)</p></li></ul><h4 id="数据库及Web前端技术:"><a href="#数据库及Web前端技术:" class="headerlink" title="数据库及Web前端技术:"></a><strong>数据库及Web前端技术:</strong></h4><ul><li><p>SQL语言</p></li><li><p>MySql数据库</p></li><li><p>HTML基础、CSS基础、HTML5技术、CSS技术、JavaScript、XML</p></li><li><p>Bootstrap</p></li><li><p>jQuery、Ajax</p></li></ul><h4 id="Servlet技术、JSP-技术:"><a href="#Servlet技术、JSP-技术:" class="headerlink" title="** Servlet技术、JSP 技术:**"></a>** Servlet技术、JSP 技术:**</h4><ul><li><p>JDBC核心API、JDBC 优化</p></li><li><p>反射</p></li><li><p>SVN/Maven/log4j</p></li></ul><h4 id="Java-Web开发及服务端框架(轻量级Java-EE)-:"><a href="#Java-Web开发及服务端框架(轻量级Java-EE)-:" class="headerlink" title="** Java Web开发及服务端框架(轻量级Java EE)**:"></a>** Java Web开发及服务端框架(轻量级Java EE)**:</h4><ul><li><p>Struts2</p></li><li><p>Hibernate</p></li><li><p>Mybatis</p></li><li><p>SprintIOC、SpringAOP、SpringMVC、SpringBoot、SpringCloud</p></li><li><p>WebService核心概念、WebService组件、SOA</p></li><li><p>git/github</p></li><li><p>Activity</p></li></ul><h4 id="项目实战:"><a href="#项目实战:" class="headerlink" title="项目实战:"></a><strong>项目实战:</strong></h4><p>涉及知识点除Java、Web、Mysql等基本知识点外,还综合运用Hibernate、Struts、Spring、maven、JUnit、DOM4J、JAXP、Log4J、jquery easyui、Workflow、Freemarker等技术,项目通过多层架构、工作流引擎等串起整个Java开发知识体系,从需求分析开始,运用UML、设计模式等进行设计,然后编码,同时在Linux/Unix上进行部署,实现企业软件开发的全过程。</p><h4 id="互联网新技术:"><a href="#互联网新技术:" class="headerlink" title="互联网新技术:"></a><strong>互联网新技术:</strong></h4><ul><li><p>分布式架构的注册中心Zookeeper</p></li><li><p>全文索引数据库Elasticsearch</p></li><li><p>日志接收,转发工具Logstash</p></li><li><p>可视化数据分析平台Kibana</p></li><li><p>分布式发布-消息订阅系统kafka</p></li><li><p>虚拟化应用容器Docker</p></li></ul><h4 id="持续集成部分:"><a href="#持续集成部分:" class="headerlink" title="持续集成部分:"></a><strong>持续集成部分:</strong></h4><ul><li><p>持续集成简介</p></li><li><p>持续集成环境搭建</p></li><li><p>最简单的测试job</p></li><li><p>添加HTML测试报告</p></li><li><p>git支持及代码库监控</p></li><li><p>使用jenkins运行单元测试用例</p></li></ul><h4 id="工作经验分享:"><a href="#工作经验分享:" class="headerlink" title="工作经验分享:"></a><strong>工作经验分享:</strong></h4><ul><li><p>开发工作会用的各种小工具</p></li><li><p>如何单元测试用例</p></li><li><p>代码规范</p></li><li><p>敏捷软件开发的流程</p></li><li><p>需求分析的方法</p></li><li><p>版本管理基本方法</p></li><li><p>项目管理、质量管理</p></li><li><p>Github的使用</p></li></ul><h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><blockquote><ul><li><a href></a></li><li><a href></a></li></ul></blockquote>]]></content>
<summary type="html">
<p>个人认为比较好的Java学习路线 转自群里某大佬<br>涉及:</p>
</summary>
<category term="学习路线" scheme="https://wiki.letcoder.cn/categories/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/"/>
<category term="学习路线" scheme="https://wiki.letcoder.cn/tags/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/"/>
</entry>
</feed>