Site updated: 2024-01-07 00:31:53
This commit is contained in:
1 parent
2819cb9914
commit
f1be14c46e
204 files changed
+610
-508
No files matched your search
@@ -32,14 +32,21 @@
|
||||
<category term="证书" scheme="https://hitoli.com/tags/%E8%AF%81%E4%B9%A6/" />
|
||||
<pubDate>Wed, 03 Jan 2024 18:01:00 +0800</pubDate>
|
||||
<description><![CDATA[ <h4 id="生成根证书私钥和根证书"><a class="anchor" href="#生成根证书私钥和根证书">#</a> 生成根证书私钥和根证书</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>openssl req <span class="token parameter variable">-x509</span> <span class="token parameter variable">-nodes</span> <span class="token parameter variable">-days</span> <span class="token number">36500</span> <span class="token parameter variable">-newkey</span> rsa:2048 <span class="token parameter variable">-subj</span> <span class="token string">"/C=国家/ST=省/L=市/O=机构"</span> <span class="token parameter variable">-keyout</span> CA-private.key <span class="token parameter variable">-out</span> CA-certificate.crt <span class="token parameter variable">-reqexts</span> v3_req <span class="token parameter variable">-extensions</span> v3_ca</pre></td></tr><tr><td data-num="2"></td><td><pre></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token comment">#示例</span></pre></td></tr><tr><td data-num="4"></td><td><pre>openssl req <span class="token parameter variable">-x509</span> <span class="token parameter variable">-nodes</span> <span class="token parameter variable">-days</span> <span class="token number">36500</span> <span class="token parameter variable">-newkey</span> rsa:2048 <span class="token parameter variable">-subj</span> <span class="token string">"/C=CN/ST=EZ/L=EZ/O=EZ"</span> <span class="token parameter variable">-keyout</span> CA-private.key <span class="token parameter variable">-out</span> CA-certificate.crt <span class="token parameter variable">-reqexts</span> v3_req <span class="token parameter variable">-extensions</span> v3_ca</pre></td></tr></table></figure><h4 id="生成自签名证书私钥"><a class="anchor" href="#生成自签名证书私钥">#</a> 生成自签名证书私钥</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>openssl genrsa <span class="token parameter variable">-out</span> private.key <span class="token number">2048</span></pre></td></tr></table></figure><h4 id="根据自签名证书私钥生成自签名证书申请文件"><a class="anchor" href="#根据自签名证书私钥生成自签名证书申请文件">#</a> 根据自签名证书私钥生成自签名证书申请文件</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>openssl req <span class="token parameter variable">-new</span> <span class="token parameter variable">-key</span> private.key <span class="token parameter variable">-subj</span> <span class="token string">"/C=CN/ST=EZ/L=EZ/O=EZ/CN=192.168.2.117"</span> <span class="token parameter variable">-sha256</span> <span class="token parameter variable">-out</span> private.csr</pre></td></tr></table></figure><h4 id="定义自签名证书扩展文件解决chrome安全告警新建privateext文件并写入以下内容ip为nginx服务器ip同nginxconf中的server_name"><a class="anchor" href="#定义自签名证书扩展文件解决chrome安全告警新建privateext文件并写入以下内容ip为nginx服务器ip同nginxconf中的server_name">#</a> 定义自签名证书扩展文件 (解决 chrome 安全告警),新建 private.ext 文件并写入以下内容(IP 为 nginx 服务器 ip,同 nginx.conf 中的 server_name)</h4>
|
||||
<figure class="highlight text"><figcaption data-lang="text"></figcaption><table><tr><td data-num="1"></td><td><pre>[ req ]</pre></td></tr><tr><td data-num="2"></td><td><pre>default_bits = 1024</pre></td></tr><tr><td data-num="3"></td><td><pre>distinguished_name = req_distinguished_name</pre></td></tr><tr><td data-num="4"></td><td><pre>req_extensions = san</pre></td></tr><tr><td data-num="5"></td><td><pre>extensions = san</pre></td></tr><tr><td data-num="6"></td><td><pre>[ req_distinguished_name ]</pre></td></tr><tr><td data-num="7"></td><td><pre>countryName = CN</pre></td></tr><tr><td data-num="8"></td><td><pre>stateOrProvinceName = Definesys</pre></td></tr><tr><td data-num="9"></td><td><pre>localityName = Definesys</pre></td></tr><tr><td data-num="10"></td><td><pre>organizationName = Definesys</pre></td></tr><tr><td data-num="11"></td><td><pre>[SAN]</pre></td></tr><tr><td data-num="12"></td><td><pre>authorityKeyIdentifier=keyid,issuer</pre></td></tr><tr><td data-num="13"></td><td><pre>basicConstraints=CA:FALSE</pre></td></tr><tr><td data-num="14"></td><td><pre>keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment</pre></td></tr><tr><td data-num="15"></td><td><pre>subjectAltName = IP:192.168.2.117</pre></td></tr></table></figure><h4 id="生成自签名证书有效期100年"><a class="anchor" href="#生成自签名证书有效期100年">#</a> 生成自签名证书(有效期 100 年)</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>openssl x509 <span class="token parameter variable">-req</span> <span class="token parameter variable">-days</span> <span class="token number">36500</span> <span class="token parameter variable">-in</span> private.csr <span class="token parameter variable">-CA</span> CA-certificate.crt <span class="token parameter variable">-CAkey</span> CA-private.key <span class="token parameter variable">-CAcreateserial</span> <span class="token parameter variable">-sha256</span> <span class="token parameter variable">-out</span> private.crt <span class="token parameter variable">-extfile</span> private.ext <span class="token parameter variable">-extensions</span> SAN</pre></td></tr></table></figure><h4 id="nginx的ssl证书配置"><a class="anchor" href="#nginx的ssl证书配置">#</a> nginx 的 ssl 证书配置</h4>
|
||||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>ssl_certificate_key /usr/local/nginx/ssl/private.key;</pre></td></tr><tr><td data-num="2"></td><td><pre>ssl_certificate /usr/local/nginx/ssl/private.crt;</pre></td></tr></table></figure><h4 id="证书安装"><a class="anchor" href="#证书安装">#</a> 证书安装</h4>
|
||||
<p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -subj <span class="string">&quot;/C=国家/ST=省/L=市/O=机构&quot;</span> -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca</span><br><span class="line"></span><br><span class="line"><span class="comment">#示例</span></span><br><span class="line">openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -subj <span class="string">&quot;/C=CN/ST=EZ/L=EZ/O=EZ&quot;</span> -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="生成自签名证书私钥"><a class="anchor" href="#生成自签名证书私钥">#</a> 生成自签名证书私钥</h4>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openssl genrsa -out private.key 2048</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="根据自签名证书私钥生成自签名证书申请文件"><a class="anchor" href="#根据自签名证书私钥生成自签名证书申请文件">#</a> 根据自签名证书私钥生成自签名证书申请文件</h4>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openssl req -new -key private.key -subj <span class="string">&quot;/C=CN/ST=EZ/L=EZ/O=EZ/CN=192.168.2.117&quot;</span> -sha256 -out private.csr</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="定义自签名证书扩展文件解决chrome安全告警新建privateext文件并写入以下内容ip为nginx服务器ip同nginxconf中的server_name"><a class="anchor" href="#定义自签名证书扩展文件解决chrome安全告警新建privateext文件并写入以下内容ip为nginx服务器ip同nginxconf中的server_name">#</a> 定义自签名证书扩展文件 (解决 chrome 安全告警),新建 private.ext 文件并写入以下内容(IP 为 nginx 服务器 ip,同 nginx.conf 中的 server_name)</h4>
|
||||
<p><figure class="highlight text"><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></pre></td><td class="code"><pre><span class="line">[ req ]</span><br><span class="line">default_bits = 1024</span><br><span class="line">distinguished_name = req_distinguished_name</span><br><span class="line">req_extensions = san</span><br><span class="line">extensions = san</span><br><span class="line">[ req_distinguished_name ]</span><br><span class="line">countryName = CN</span><br><span class="line">stateOrProvinceName = Definesys</span><br><span class="line">localityName = Definesys</span><br><span class="line">organizationName = Definesys</span><br><span class="line">[SAN]</span><br><span class="line">authorityKeyIdentifier=keyid,issuer</span><br><span class="line">basicConstraints=CA:FALSE</span><br><span class="line">keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment</span><br><span class="line">subjectAltName = IP:192.168.2.117</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="生成自签名证书有效期100年"><a class="anchor" href="#生成自签名证书有效期100年">#</a> 生成自签名证书(有效期 100 年)</h4>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openssl x509 -req -days 36500 -<span class="keyword">in</span> private.csr -CA CA-certificate.crt -CAkey CA-private.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="nginx的ssl证书配置"><a class="anchor" href="#nginx的ssl证书配置">#</a> nginx 的 ssl 证书配置</h4>
|
||||
<p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">ssl_certificate_key</span> <span class="string">/usr/local/nginx/ssl/private.key;</span></span><br><span class="line"><span class="string">ssl_certificate</span> <span class="string">/usr/local/nginx/ssl/private.crt;</span></span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="证书安装"><a class="anchor" href="#证书安装">#</a> 证书安装</h4>
|
||||
<p>需要安装 CA-certificate.crt 到受信任的根证书颁发机构下,即可从浏览器正常访问且不会报不安全警告。</p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment">#ssl 测试</span></pre></td></tr><tr><td data-num="2"></td><td><pre>openssl s_client <span class="token parameter variable">-connect</span> localhost:8080</pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token comment">#检查证书格式</span></pre></td></tr><tr><td data-num="4"></td><td><pre>openssl x509 <span class="token parameter variable">-in</span> private.crt <span class="token parameter variable">-text</span> <span class="token parameter variable">-noout</span></pre></td></tr><tr><td data-num="5"></td><td><pre>openssl rsa <span class="token parameter variable">-in</span> private.key <span class="token parameter variable">-check</span></pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token comment">#检查证书是否过期(确保 "notBefore" 小于当前日期,"notAfter" 大于当前日期)</span></pre></td></tr><tr><td data-num="7"></td><td><pre>openssl x509 <span class="token parameter variable">-in</span> private.crt <span class="token parameter variable">-noout</span> <span class="token parameter variable">-dates</span></pre></td></tr><tr><td data-num="8"></td><td><pre><span class="token comment">#查看证书链</span></pre></td></tr><tr><td data-num="9"></td><td><pre>openssl x509 <span class="token parameter variable">-in</span> private.crt <span class="token parameter variable">-noout</span> <span class="token parameter variable">-issuer</span> <span class="token parameter variable">-subject</span></pre></td></tr></table></figure> ]]></description>
|
||||
<p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#ssl测试</span></span><br><span class="line">openssl s_client -connect localhost:8080</span><br><span class="line"><span class="comment">#检查证书格式</span></span><br><span class="line">openssl x509 -<span class="keyword">in</span> private.crt -text -noout</span><br><span class="line">openssl rsa -<span class="keyword">in</span> private.key -check</span><br><span class="line"><span class="comment">#检查证书是否过期(确保 &quot;notBefore&quot; 小于当前日期,&quot;notAfter&quot; 大于当前日期)</span></span><br><span class="line">openssl x509 -<span class="keyword">in</span> private.crt -noout -dates</span><br><span class="line"><span class="comment">#查看证书链</span></span><br><span class="line">openssl x509 -<span class="keyword">in</span> private.crt -noout -issuer -subject</span><br></pre></td></tr></table></figure></p>
|
||||
]]></description>
|
||||
</item>
|
||||
<item>
|
||||
<guid isPermalink="true">https://hitoli.com/2024/01/03/Centos7%E7%BC%96%E8%AF%91%E5%8D%87%E7%BA%A7nginx/</guid>
|
||||
@@ -87,11 +94,15 @@
|
||||
# 设定 uwsgi 临时目录<br />
|
||||
--http-uwsgi-temp-path=/usr/local/nginx/uwsgi<br />
|
||||
# 设定 scgi 临时目录<br />
|
||||
--http-scgi-temp-path=/usr/local/nginx/scgi</p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>./configure <span class="token parameter variable">--prefix</span><span class="token operator">=</span>/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-openssl<span class="token operator">=</span>/home/openssl-3.2.0</pre></td></tr></table></figure><h4 id="编译"><a class="anchor" href="#编译">#</a> 编译</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>make(不要make install)</pre></td></tr></table></figure><h4 id="备份"><a class="anchor" href="#备份">#</a> 备份</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">cp</span> /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old</pre></td></tr></table></figure><h4 id="更新"><a class="anchor" href="#更新">#</a> 更新</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment">#关闭 nginx</span></pre></td></tr><tr><td data-num="2"></td><td><pre>nginx <span class="token parameter variable">-s</span> stop</pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token comment">#更新 nginx</span></pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token function">cp</span> /root/nginx-1.24.0/objs/nginx /usr/local/nginx/sbin/</pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token comment">#启动 nginx</span></pre></td></tr><tr><td data-num="6"></td><td><pre>nginx</pre></td></tr></table></figure> ]]></description>
|
||||
--http-scgi-temp-path=/usr/local/nginx/scgi<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-openssl=/home/openssl-3.2.0</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="编译"><a class="anchor" href="#编译">#</a> 编译</h4>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">make(不要make install)</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="备份"><a class="anchor" href="#备份">#</a> 备份</h4>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cp</span> /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="更新"><a class="anchor" href="#更新">#</a> 更新</h4>
|
||||
<p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#关闭nginx</span></span><br><span class="line">nginx -s stop</span><br><span class="line"><span class="comment">#更新nginx</span></span><br><span class="line"><span class="built_in">cp</span> /root/nginx-1.24.0/objs/nginx /usr/local/nginx/sbin/</span><br><span class="line"><span class="comment">#启动nginx</span></span><br><span class="line">nginx</span><br></pre></td></tr></table></figure></p>
|
||||
]]></description>
|
||||
</item>
|
||||
<item>
|
||||
<guid isPermalink="true">https://hitoli.com/2023/12/24/Docker-desktop%E9%83%A8%E7%BD%B2nacos/</guid>
|
||||
@@ -103,13 +114,18 @@
|
||||
<category term="nacos" scheme="https://hitoli.com/tags/nacos/" />
|
||||
<pubDate>Sun, 24 Dec 2023 21:37:00 +0800</pubDate>
|
||||
<description><![CDATA[ <h4 id="创建数据库"><a class="anchor" href="#创建数据库">#</a> 创建数据库</h4>
|
||||
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">create</span> <span class="token keyword">database</span> nacos</pre></td></tr></table></figure><h4 id="下载初始化脚本"><a class="anchor" href="#下载初始化脚本">#</a> 下载初始化脚本</h4>
|
||||
<p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">create</span> database nacos</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="下载初始化脚本"><a class="anchor" href="#下载初始化脚本">#</a> 下载初始化脚本</h4>
|
||||
<p><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2FsaWJhYmEvbmFjb3MvYmxvYi9tYXN0ZXIvZGlzdHJpYnV0aW9uL2NvbmYvbXlzcWwtc2NoZW1hLnNxbA==">脚本文件</span></p>
|
||||
<h4 id="以普通模式启动获取数据"><a class="anchor" href="#以普通模式启动获取数据">#</a> 以普通模式启动获取数据</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">docker</span> run <span class="token parameter variable">-d</span> <span class="token parameter variable">--restart</span><span class="token operator">=</span>always <span class="token parameter variable">--name</span><span class="token operator">=</span><span class="token string">"nacos"</span> <span class="token parameter variable">-e</span> <span class="token assign-left variable">MODE</span><span class="token operator">=</span>standalone <span class="token parameter variable">-p</span> <span class="token number">8848</span>:8848 <span class="token parameter variable">-p</span> <span class="token number">9848</span>:9848 nacos/nacos-server:latest</pre></td></tr></table></figure><h4 id="进入容器内修改文件权限"><a class="anchor" href="#进入容器内修改文件权限">#</a> 进入容器内修改文件权限</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">chmod</span> <span class="token number">777</span> /home/nacos/conf</pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token function">chmod</span> <span class="token number">777</span> /home/nacos/data</pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token function">chmod</span> <span class="token number">777</span> /home/nacos/logs</pre></td></tr></table></figure><h4 id="拷贝文件到本地"><a class="anchor" href="#拷贝文件到本地">#</a> 拷贝文件到本地</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">docker</span> <span class="token function">cp</span> nacos:/home/nacos/conf D:<span class="token punctuation">\</span>docker<span class="token punctuation">\</span>nacos<span class="token punctuation">\</span>data<span class="token punctuation">\</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token function">docker</span> <span class="token function">cp</span> nacos:/home/nacos/data D:<span class="token punctuation">\</span>docker<span class="token punctuation">\</span>nacos<span class="token punctuation">\</span>data<span class="token punctuation">\</span></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token function">docker</span> <span class="token function">cp</span> nacos:/home/nacos/logs D:<span class="token punctuation">\</span>docker<span class="token punctuation">\</span>nacos<span class="token punctuation">\</span>data<span class="token punctuation">\</span></pre></td></tr></table></figure><h4 id="创建正式容器"><a class="anchor" href="#创建正式容器">#</a> 创建正式容器</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">docker</span> run <span class="token parameter variable">-d</span> <span class="token parameter variable">--name</span> nacos <span class="token parameter variable">--restart</span><span class="token operator">=</span>always <span class="token parameter variable">--network</span> my-net <span class="token parameter variable">-p</span> <span class="token number">8848</span>:8848 <span class="token parameter variable">-p</span> <span class="token number">9848</span>:9848 <span class="token parameter variable">-p</span> <span class="token number">9849</span>:9849 <span class="token parameter variable">-e</span> <span class="token assign-left variable">MODE</span><span class="token operator">=</span>standalone <span class="token parameter variable">--privileged</span><span class="token operator">=</span>true <span class="token parameter variable">-e</span> <span class="token assign-left variable">SPRING_DATASOURCE_PLATFORM</span><span class="token operator">=</span>mysql <span class="token parameter variable">-e</span> <span class="token assign-left variable">MYSQL_SERVICE_HOST</span><span class="token operator">=</span>mysql地址 <span class="token parameter variable">-e</span> <span class="token assign-left variable">MYSQL_SERVICE_PORT</span><span class="token operator">=</span>mysql端口 <span class="token parameter variable">-e</span> <span class="token assign-left variable">MYSQL_SERVICE_USER</span><span class="token operator">=</span>mysql用户名 <span class="token parameter variable">-e</span> <span class="token assign-left variable">MYSQL_SERVICE_PASSWORD</span><span class="token operator">=</span>mysql密码 <span class="token parameter variable">-e</span> <span class="token assign-left variable">MYSQL_SERVICE_DB_NAME</span><span class="token operator">=</span>nacos <span class="token parameter variable">-e</span> <span class="token assign-left variable">TIME_ZONE</span><span class="token operator">=</span><span class="token string">'Asia/Shanghai'</span> <span class="token parameter variable">-v</span> D:<span class="token punctuation">\</span>docker<span class="token punctuation">\</span>nacos<span class="token punctuation">\</span>data<span class="token punctuation">\</span>logs:/home/nacos/logs <span class="token parameter variable">-v</span> D:<span class="token punctuation">\</span>docker<span class="token punctuation">\</span>nacos<span class="token punctuation">\</span>data<span class="token punctuation">\</span>data:/home/nacos/data <span class="token parameter variable">-v</span> D:<span class="token punctuation">\</span>docker<span class="token punctuation">\</span>nacos<span class="token punctuation">\</span>data<span class="token punctuation">\</span>conf:/home/nacos/conf nacos/nacos-server:latest</pre></td></tr></table></figure> ]]></description>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -d --restart=always --name=<span class="string">&quot;nacos&quot;</span> -e MODE=standalone -p 8848:8848 -p 9848:9848 nacos/nacos-server:latest</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="进入容器内修改文件权限"><a class="anchor" href="#进入容器内修改文件权限">#</a> 进入容器内修改文件权限</h4>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> 777 /home/nacos/conf</span><br><span class="line"><span class="built_in">chmod</span> 777 /home/nacos/data</span><br><span class="line"><span class="built_in">chmod</span> 777 /home/nacos/logs</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="拷贝文件到本地"><a class="anchor" href="#拷贝文件到本地">#</a> 拷贝文件到本地</h4>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">docker <span class="built_in">cp</span> nacos:/home/nacos/conf D:\docker\nacos\data\</span><br><span class="line">docker <span class="built_in">cp</span> nacos:/home/nacos/data D:\docker\nacos\data\</span><br><span class="line">docker <span class="built_in">cp</span> nacos:/home/nacos/logs D:\docker\nacos\data\</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="创建正式容器"><a class="anchor" href="#创建正式容器">#</a> 创建正式容器</h4>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -d --name nacos --restart=always --network my-net -p 8848:8848 -p 9848:9848 -p 9849:9849 -e MODE=standalone --privileged=<span class="literal">true</span> -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=mysql地址 -e MYSQL_SERVICE_PORT=mysql端口 -e MYSQL_SERVICE_USER=mysql用户名 -e MYSQL_SERVICE_PASSWORD=mysql密码 -e MYSQL_SERVICE_DB_NAME=nacos -e TIME_ZONE=<span class="string">&#x27;Asia/Shanghai&#x27;</span> -v D:\docker\nacos\data\logs:/home/nacos/logs -v D:\docker\nacos\data\data:/home/nacos/data -v D:\docker\nacos\data\conf:/home/nacos/conf nacos/nacos-server:latest</span><br></pre></td></tr></table></figure></p>
|
||||
]]></description>
|
||||
</item>
|
||||
<item>
|
||||
<guid isPermalink="true">https://hitoli.com/2023/12/02/fastjson%E5%BA%8F%E5%88%97%E5%8C%96%E5%8E%BB%E9%99%A4%E7%A9%BA%E5%AD%97%E7%AC%A6%E4%B8%B2/</guid>
|
||||
@@ -119,8 +135,9 @@
|
||||
<category term="解决问题" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98/" />
|
||||
<category term="fastjson" scheme="https://hitoli.com/tags/fastjson/" />
|
||||
<pubDate>Sat, 02 Dec 2023 21:47:00 +0800</pubDate>
|
||||
<description><![CDATA[ <p>今天在把对象转为 json 时需要去除 key 或者 value 为 null 或空字符串的属性,特此记录一下后续好复用。</p>
|
||||
<figure class="highlight java"><figcaption data-lang="java"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token class-name">String</span> <span class="token function">toJSONString</span><span class="token punctuation">(</span><span class="token class-name">Object</span> object<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre> <span class="token class-name">SerializerFeature</span><span class="token punctuation">[</span><span class="token punctuation">]</span> serializerFeatures <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">SerializerFeature</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="3"></td><td><pre> <span class="token comment">// 格式化时间</span></pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token class-name">SerializerFeature<span class="token punctuation">.</span>WriteDateUseDateFormat</span></pre></td></tr><tr><td data-num="5"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token keyword">return</span> <span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">toJSONString</span><span class="token punctuation">(</span>object<span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">ValueFilter</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token annotation punctuation">@Override</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token keyword">public</span> <span class="token class-name">Object</span> <span class="token function">process</span><span class="token punctuation">(</span><span class="token class-name">Object</span> object<span class="token punctuation">,</span> <span class="token class-name">String</span> name<span class="token punctuation">,</span> <span class="token class-name">Object</span> value<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token comment">// 如果名称或者值为 null 或空字符串,则不序列化该属性</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>name <span class="token operator">==</span> <span class="token keyword">null</span> <span class="token operator">||</span> <span class="token punctuation">(</span>name <span class="token keyword">instanceof</span> <span class="token class-name">String</span> <span class="token operator">&amp;&amp;</span> <span class="token punctuation">(</span><spanLine truncated
|
||||
<description><![CDATA[ <p>今天在把对象转为 json 时需要去除 key 或者 value 为 null 或空字符串的属性,特此记录一下后续好复用。<br />
|
||||
<figure class="highlight java"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">static</span> String <span class="title function_">toJSONString</span><span class="params">(Object object)</span> &#123;</span><br><span class="line"> SerializerFeature[] serializerFeatures = <span class="keyword">new</span> <span class="title class_">SerializerFeature</span>[] &#123;</span><br><span class="line"> <span class="comment">//格式化时间</span></span><br><span class="line"> SerializerFeature.WriteDateUseDateFormat</span><br><span class="line"> &#125;;</span><br><span class="line"> <span class="keyword">return</span> JSON.toJSONString(object, <span class="keyword">new</span> <span class="title class_">ValueFilter</span>() &#123;</span><br><span class="line"> <span class="meta">@Override</span></span><br><span class="line"> <span class="keyword">public</span> Object <span class="title function_">process</span><span class="params">(Object object, String name, Object value)</span> &#123;</span><br><span class="line"> <span class="comment">// 如果名称或者值为null或空字符串,则不序列化该属性</span></span><br><span class="line"> <span class="keyword">if</span> (name == <span class="literal">null</span> || (name <span class="keyword">instanceof</span> String &amp;&amp; ((String) name).isEmpty()) ||</span><br><span class="line"> value == <span class="literal">null</span> || (value <span class="keyword">instanceof</span> String &amp;&amp; ((String) value).isEmpty())) &#123;</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line"> &#125;</span><br><span class="line"> <span class="keyword">return</span> value;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;, serializerFeatures);</span><br><span class="line"> &#125;</span><br></pre></td></tr></table></figure></p>
|
||||
]]></description>
|
||||
</item>
|
||||
<item>
|
||||
<guid isPermalink="true">https://hitoli.com/2023/11/03/Linux%E4%B8%8B%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2SpringBoot%E9%A1%B9%E7%9B%AE%E7%9A%84%E8%84%9A%E6%9C%AC/</guid>
|
||||
@@ -138,10 +155,12 @@
|
||||
<div class="note info">
|
||||
<p>拷贝以下代码放入 txt 文本,<span class="exturl" data-url="aHR0cDovL3huLS1zdGFydC1kcTFoNzE2YXVzOGFldHcuc2g=">然后改为 start.sh</span></p>
|
||||
</div>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token shebang important">#!/bin/bash</span></pre></td></tr><tr><td data-num="2"></td><td><pre></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token builtin class-name">export</span> <span class="token assign-left variable">CLOUD_HOME</span><span class="token operator">=</span><span class="token variable"><span class="token variable">`</span><span class="token builtin class-name">pwd</span><span class="token variable">`</span></span></pre></td></tr><tr><td data-num="4"></td><td><pre></pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token comment"># 获取当前目录中的第一个 JAR 文件的名称</span></pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token assign-left variable">jar_file</span><span class="token operator">=</span><span class="token variable"><span class="token variable">$(</span><span class="token function">find</span> <span class="token builtin class-name">.</span> <span class="token parameter variable">-maxdepth</span> <span class="token number">1</span> <span class="token parameter variable">-type</span> f <span class="token parameter variable">-name</span> <span class="token string">"*.jar"</span> <span class="token operator">|</span> <span class="token function">head</span> <span class="token parameter variable">-n</span> <span class="token number">1</span><span class="token variable">)</span></span></pre></td></tr><tr><td data-num="7"></td><td><pre></pre></td></tr><tr><td data-num="8"></td><td><pre><span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token parameter variable">-n</span> <span class="token string">"<span class="token variable">$jar_file</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token assign-left variable">jar_file</span><span class="token operator">=</span><span class="token variable">$&#123;jar_file<span class="token operator">#</span>.<span class="token operator">/</span>&#125;</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token comment">#echo "JAR 文件的名称是: $jar_file"</span></pre></td></tr><tr><td data-num="11"></td><td><pre> <span class="token assign-left variable">jar_file_name</span><span class="token operator">=</span><span class="token variable"><span class="token variable">$(</span><span class="token function">basename</span> <span class="token string">"<span class="token variable">$jar_file</span>"</span> .jar<span class="token variable">)</span></span></pre></td></tr><tr><td data-num="12"></td><td><pre><span class="token keyword">else</span></pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token builtin class-name">echo</span> <span class="token string">"当前目录没有JAR文件."</span></pre></td></tr><tr><td data-num="14"></td><td><pre> <span class="token builtin class-name">exit</span&gLine truncated
|
||||
<p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">export</span> CLOUD_HOME=`<span class="built_in">pwd</span>`</span><br><span class="line"></span><br><span class="line"><span class="comment"># 获取当前目录中的第一个JAR文件的名称</span></span><br><span class="line">jar_file=$(find . -maxdepth 1 -<span class="built_in">type</span> f -name <span class="string">&quot;*.jar&quot;</span> | <span class="built_in">head</span> -n 1)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> [ -n <span class="string">&quot;<span class="variable">$jar_file</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line"> jar_file=<span class="variable">$&#123;jar_file#./&#125;</span></span><br><span class="line"> <span class="comment">#echo &quot;JAR文件的名称是: $jar_file&quot;</span></span><br><span class="line"> jar_file_name=$(<span class="built_in">basename</span> <span class="string">&quot;<span class="variable">$jar_file</span>&quot;</span> .jar)</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line"> <span class="built_in">echo</span> <span class="string">&quot;当前目录没有JAR文件.&quot;</span></span><br><span class="line"> <span cLine truncated
|
||||
<div class="note info">
|
||||
<p>拷贝以下代码放入 txt 文本,<span class="exturl" data-url="aHR0cDovL3huLS1zdG9wLXVoNWZ0MjJhOWs1YXBidS5zaA==">然后改为 stop.sh</span></p>
|
||||
</div>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token shebang important">#!/bin/bash</span></pre></td></tr><tr><td data-num="2"></td><td><pre></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token builtin class-name">export</span> <span class="token assign-left variable">CLOUD_HOME</span><span class="token operator">=</span><span class="token variable"><span class="token variable">`</span><span class="token builtin class-name">pwd</span><span class="token variable">`</span></span></pre></td></tr><tr><td data-num="4"></td><td><pre></pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token comment"># 获取当前目录中的第一个 JAR 文件的名称</span></pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token assign-left variable">jar_file</span><span class="token operator">=</span><span class="token variable"><span class="token variable">$(</span><span class="token function">find</span> <span class="token builtin class-name">.</span> <span class="token parameter variable">-maxdepth</span> <span class="token number">1</span> <span class="token parameter variable">-type</span> f <span class="token parameter variable">-name</span> <span class="token string">"*.jar"</span> <span class="token operator">|</span> <span class="token function">head</span> <span class="token parameter variable">-n</span> <span class="token number">1</span><span class="token variable">)</span></span></pre></td></tr><tr><td data-num="7"></td><td><pre></pre></td></tr><tr><td data-num="8"></td><td><pre><span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token parameter variable">-n</span> <span class="token string">"<span class="token variable">$jar_file</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token assign-left variable">jar_file</span><span class="token operator">=</span><span class="token variable">$&#123;jar_file<span class="token operator">#</span>.<span class="token operator">/</span>&#125;</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token comment">#echo "JAR 文件的名称是: $jar_file"</span></pre></td></tr><tr><td data-num="11"></td><td><pre> <span class="token assign-left variable">jar_file_name</span><span class="token operator">=</span><span class="token variable"><span class="token variable">$(</span><span class="token function">basename</span> <span class="token string">"<span class="token variable">$jar_file</span>"</span> .jar<span class="token variable">)</span></span></pre></td></tr><tr><td data-num="12"></td><td><pre><span class="token keyword">else</span></pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token builtin class-name">echo</span> <span class="token string">"当前目录没有JAR文件."</span></pre></td></tr><tr><td data-num="14"></td><td><pre> <span class="token builtin class-name">exit</span&gLine truncated
|
||||
<p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">export</span> CLOUD_HOME=`<span class="built_in">pwd</span>`</span><br><span class="line"></span><br><span class="line"><span class="comment"># 获取当前目录中的第一个JAR文件的名称</span></span><br><span class="line">jar_file=$(find . -maxdepth 1 -<span class="built_in">type</span> f -name <span class="string">&quot;*.jar&quot;</span> | <span class="built_in">head</span> -n 1)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> [ -n <span class="string">&quot;<span class="variable">$jar_file</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line"> jar_file=<span class="variable">$&#123;jar_file#./&#125;</span></span><br><span class="line"> <span class="comment">#echo &quot;JAR文件的名称是: $jar_file&quot;</span></span><br><span class="line"> jar_file_name=$(<span class="built_in">basename</span> <span class="string">&quot;<span class="variable">$jar_file</span>&quot;</span> .jar)</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line"> <span class="built_in">echo</span> <span class="string">&quot;当前目录没有JAR文件.&quot;</span></span><br><span class="line"> <span class="built_in">exit</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 获取当前目录中的第一个yml文件的名称</span></span><br><span class="line">yml_file=$(find . -maxdepth 1 -<span class="built_in">type</span> f -name <spaLine truncated
|
||||
]]></description>
|
||||
</item>
|
||||
<item>
|
||||
<guid isPermalink="true">https://hitoli.com/2023/10/29/%E7%BB%99%E6%88%91%E7%9A%84%E8%80%81%E7%AC%94%E8%AE%B0%E6%9C%AC%E6%B8%85%E7%90%86%E7%81%B0%E5%B0%98/</guid>
|
||||
@@ -178,10 +197,12 @@
|
||||
<div class="note info">
|
||||
<p>拷贝以下代码放入 txt 文本,然后改为 start.bat</p>
|
||||
</div>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>@ECHO OFF</pre></td></tr><tr><td data-num="2"></td><td><pre>setlocal enabledelayedexpansion</pre></td></tr><tr><td data-num="3"></td><td><pre></pre></td></tr><tr><td data-num="4"></td><td><pre>REM 关闭上次进程</pre></td></tr><tr><td data-num="5"></td><td><pre>SET <span class="token string">"pidFile=pid.txt"</span></pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token keyword">if</span> exist <span class="token string">"%pidFile%"</span> <span class="token punctuation">(</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token keyword">for</span> /f <span class="token string">"usebackq"</span> %%a <span class="token keyword">in</span> <span class="token punctuation">(</span><span class="token string">"pid.txt"</span><span class="token punctuation">)</span> <span class="token keyword">do</span> <span class="token punctuation">(</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token builtin class-name">set</span> <span class="token assign-left variable">PID</span><span class="token operator">=</span>%%a</pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token punctuation">)</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token keyword">if</span> not <span class="token string">"!PID!"</span><span class="token operator">==</span><span class="token string">""</span> <span class="token punctuation">(</span></pre></td></tr><tr><td data-num="11"></td><td><pre> taskkill /F /T /PID <span class="token operator">!</span>pid<span class="token operator">!</span></pre></td></tr><tr><td data-num="12"></td><td><pre> del pid.txt</pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token punctuation">)</span></pre></td></tr><tr><td data-num="14"></td><td><pre><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="15"></td><td><pre></pre></td></tr><tr><td data-num="16"></td><td><pre>REM 存储当前进程</pre></td></tr><tr><td data-num="17"></td><td><pre><span class="token keyword">for</span> /f %%i <span class="token keyword">in</span> <span class="token punctuation">(</span><span class="token string">'wmic process where "name='</span>cmd.exe<span class="token string">' and CommandLine like '</span>%%<span class="token operator">&lt;</span>scriptname<span class="token operator">></span>.bat%%<span class="token string">'" get ParentProcessId ^| findstr /r "[0-9]"'</span><span class="token punctuation">)</span> <span class="token keyword">do</span> <span class="token builtin class-name">set</span> <span class="token assign-left variable">pid</span><span class="token operator">=</span>%%i</pre></td></tr><tr><td data-num="18"></td><td><pre><span class="token builtin class-name">echo</span> %PID% <span class="token operator">></span> pid.txt</pre></td></tr><tr><td data-num="19"></td><td><pre></pre></td></tr><tr><tLine truncated
|
||||
<p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">@ECHO OFF</span><br><span class="line">setlocal enabledelayedexpansion</span><br><span class="line"></span><br><span class="line">REM 关闭上次进程</span><br><span class="line">SET <span class="string">&quot;pidFile=pid.txt&quot;</span></span><br><span class="line"><span class="keyword">if</span> exist <span class="string">&quot;%pidFile%&quot;</span> (</span><br><span class="line"> <span class="keyword">for</span> /f <span class="string">&quot;usebackq&quot;</span> %%a <span class="keyword">in</span> (<span class="string">&quot;pid.txt&quot;</span>) <span class="keyword">do</span> (</span><br><span class="line"> <span class="built_in">set</span> PID=%%a</span><br><span class="line"> )</span>&lLine truncated
|
||||
<div class="note info">
|
||||
<p>拷贝以下代码放入 txt 文本,然后改为 stop.bat</p>
|
||||
</div>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>@ECHO OFF</pre></td></tr><tr><td data-num="2"></td><td><pre>setlocal enabledelayedexpansion</pre></td></tr><tr><td data-num="3"></td><td><pre></pre></td></tr><tr><td data-num="4"></td><td><pre>REM 关闭上次进程</pre></td></tr><tr><td data-num="5"></td><td><pre>SET <span class="token string">"pidFile=pid.txt"</span></pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token keyword">if</span> exist <span class="token string">"%pidFile%"</span> <span class="token punctuation">(</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token keyword">for</span> /f <span class="token string">"usebackq"</span> %%a <span class="token keyword">in</span> <span class="token punctuation">(</span><span class="token string">"pid.txt"</span><span class="token punctuation">)</span> <span class="token keyword">do</span> <span class="token punctuation">(</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token builtin class-name">set</span> <span class="token assign-left variable">PID</span><span class="token operator">=</span>%%a</pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token punctuation">)</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token keyword">if</span> not <span class="token string">"!PID!"</span><span class="token operator">==</span><span class="token string">""</span> <span class="token punctuation">(</span></pre></td></tr><tr><td data-num="11"></td><td><pre> taskkill /F /T /PID <span class="token operator">!</span>pid<span class="token operator">!</span></pre></td></tr><tr><td data-num="12"></td><td><pre> del pid.txt</pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token punctuation">)</span></pre></td></tr><tr><td data-num="14"></td><td><pre><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="15"></td><td><pre></pre></td></tr><tr><td data-num="16"></td><td><pre><span class="token builtin class-name">exit</span></pre></td></tr></table></figure> ]]></description>
|
||||
<p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">@ECHO OFF</span><br><span class="line">setlocal enabledelayedexpansion</span><br><span class="line"></span><br><span class="line">REM 关闭上次进程</span><br><span class="line">SET <span class="string">&quot;pidFile=pid.txt&quot;</span></span><br><span class="line"><span class="keyword">if</span> exist <span class="string">&quot;%pidFile%&quot;</span> (</span><br><span class="line"> <span class="keyword">for</span> /f <span class="string">&quot;usebackq&quot;</span> %%a <span class="keyword">in</span> (<span class="string">&quot;pid.txt&quot;</span>) <span class="keyword">do</span> (</span><br><span class="line"> <span class="built_in">set</span> PID=%%a</span><br><span class="line"> )</span><br><span class="line"> <span class="keyword">if</span> not <span class="string">&quot;!PID!&quot;</span>==<span class="string">&quot;&quot;</span> (</span><br><span class="line"> taskkill /F /T /PID !pid!</span><br><span class="line"> del pid.txt</span><br><span class="line"> )</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="built_in">exit</span></span><br></pre></td></tr></table></figure></p>
|
||||
]]></description>
|
||||
</item>
|
||||
<item>
|
||||
<guid isPermalink="true">https://hitoli.com/2023/10/28/Centos%E6%8C%82%E8%BD%BD%E6%96%B0%E7%A1%AC%E7%9B%98/</guid>
|
||||
@@ -194,26 +215,39 @@
|
||||
<category term="Mount" scheme="https://hitoli.com/tags/Mount/" />
|
||||
<pubDate>Sat, 28 Oct 2023 19:26:00 +0800</pubDate>
|
||||
<description><![CDATA[ <h4 id="查看磁盘信息"><a class="anchor" href="#查看磁盘信息">#</a> 查看磁盘信息</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">fdisk</span> <span class="token parameter variable">-l</span> 查看当前磁盘的分区情况</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/10/28/4dc953fc5a5e.png" alt="" /><br />
|
||||
可从图中获取以下信息:<br />
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">fdisk -l 查看当前磁盘的分区情况</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/10/28/4dc953fc5a5e.png" alt="" /><br />
|
||||
可从图中获取以下信息:<br />
|
||||
/dev/vdb 数据盘容量为 60GB,包含 MBR 分区 /dev/vdb1,容量为 50GB。<br />
|
||||
/dev/vdc 数据盘容量为 60GB,包含 GPT 分区 /dev/vdc1,容量为 50GB。</p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">df</span> <span class="token parameter variable">-TH</span> 分区的文件系统类型</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/10/28/8996c9620632.png" alt="" /><br />
|
||||
可从图中获取以下信息:<br />
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">df</span> -TH 分区的文件系统类型</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/10/28/8996c9620632.png" alt="" /><br />
|
||||
可从图中获取以下信息:<br />
|
||||
/dev/vdb1 文件系统类型为 ext4,已挂载至 /mnt/disk1。<br />
|
||||
/dev/vdc1 文件系统类型为 xfs,已挂载至 /mnt/disk2。</p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">fdisk</span> /dev/vdb 查看新磁盘情况</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/10/28/0f1237aef57b.png" alt="" /></p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>lsbl 查看分区情况</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/10/28/8071a3832e29.png" alt="" /></p>
|
||||
/dev/vdc1 文件系统类型为 xfs,已挂载至 /mnt/disk2。<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">fdisk /dev/vdb 查看新磁盘情况</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/10/28/0f1237aef57b.png" alt="" /><br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">lsbl 查看分区情况</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/10/28/8071a3832e29.png" alt="" /></p>
|
||||
<h4 id="挂载新硬盘"><a class="anchor" href="#挂载新硬盘">#</a> 挂载新硬盘</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>mkfs.ext4 /dev/vdb 格式化磁盘</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/10/28/9353dd85579f.png" alt="" /></p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token builtin class-name">cd</span> /mnt</pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token function">mkdir</span> data 新建挂载点</pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token function">mount</span> /dev/vdb /mnt/data 挂载</pre></td></tr></table></figure><figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">df</span> <span class="token parameter variable">-h</span> 查看挂载情况</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/10/28/ead4f7b1323f.png" alt="" /><br />
|
||||
查看 UUID 有三种方式:</p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>blkid</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/10/28/236412bc1e3f.png" alt="" /></p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>lsblk <span class="token parameter variable">-f</span></pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/10/28/35d7182c5647.png" alt="" /></p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>ll /dev/disk/by-uuid/</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/10/28/3f9d4f69d8ea.png" alt="" /></p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>设置自动挂载:</pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token builtin class-name">echo</span> <span class="token string">"UUID=c8ac09ca-fd4d-4511-bd2c-4fdf96f08168 /data ext4 defaults 0 0"</span> <span class="token operator">>></span> /etc/fstab</pre></td></tr><tr><td data-num="3"></td><td><pre>自动挂载/etc/fstab里面的东西</pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token function">mount</span> <span class="token parameter variable">-a</span></pre></td></tr></table></figure><h4 id="临时卸载"><a class="anchor" href="#临时卸载">#</a> 临时卸载</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">umount</span> /dev/vdb 重启机器之后又恢复到挂载状态</pre></td></tr></table></figure><h4 id="永久卸载"><a class="anchor" href="#永久卸载">#</a> 永久卸载</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">vim</span> /etc/fstab 把添加的磁盘信息删除即可。</pre></td></tr></table></figure> ]]></description>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkfs.ext4 /dev/vdb 格式化磁盘</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/10/28/9353dd85579f.png" alt="" /><br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> /mnt</span><br><span class="line"><span class="built_in">mkdir</span> data 新建挂载点</span><br><span class="line">mount /dev/vdb /mnt/data 挂载</span><br></pre></td></tr></table></figure><br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">df</span> -h 查看挂载情况</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/10/28/ead4f7b1323f.png" alt="" /><br />
|
||||
查看 UUID 有三种方式:<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">blkid</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/10/28/236412bc1e3f.png" alt="" /><br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">lsblk -f</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/10/28/35d7182c5647.png" alt="" /><br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ll /dev/disk/by-uuid/</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/10/28/3f9d4f69d8ea.png" alt="" /><br />
|
||||
<figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">设置自动挂载:</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;UUID=c8ac09ca-fd4d-4511-bd2c-4fdf96f08168 /data ext4 defaults 0 0&quot;</span> &gt;&gt; /etc/fstab</span><br><span class="line">自动挂载/etc/fstab里面的东西</span><br><span class="line">mount -a</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="临时卸载"><a class="anchor" href="#临时卸载">#</a> 临时卸载</h4>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">umount /dev/vdb 重启机器之后又恢复到挂载状态</span><br></pre></td></tr></table></figure></p>
|
||||
<h4 id="永久卸载"><a class="anchor" href="#永久卸载">#</a> 永久卸载</h4>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim /etc/fstab 把添加的磁盘信息删除即可。</span><br></pre></td></tr></table></figure></p>
|
||||
]]></description>
|
||||
</item>
|
||||
<item>
|
||||
<guid isPermalink="true">https://hitoli.com/2023/09/09/squid-stunnel-%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91/</guid>
|
||||
@@ -234,29 +268,34 @@
|
||||
<ul>
|
||||
<li>1、安装</li>
|
||||
</ul>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">apt-get</span> <span class="token function">install</span> <span class="token parameter variable">-y</span> squid</pre></td></tr></table></figure><ul>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-get install -y squid</span><br></pre></td></tr></table></figure></p>
|
||||
<ul>
|
||||
<li>2、配置</li>
|
||||
</ul>
|
||||
<div class="note info">
|
||||
<p>生成用户文件</p>
|
||||
</div>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">apt-get</span> <span class="token function">install</span> apache2-utils</pre></td></tr><tr><td data-num="2"></td><td><pre>htpasswd <span class="token parameter variable">-c</span> /etc/squid/squid_user.txt 用户名</pre></td></tr></table></figure><div class="note info">
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">apt-get install apache2-utils</span><br><span class="line">htpasswd -c /etc/squid/squid_user.txt 用户名</span><br></pre></td></tr></table></figure></p>
|
||||
<div class="note info">
|
||||
<p>修改 squid 配置<br />
|
||||
1、直接修改 /etc/squid/squid.conf 文件<br />
|
||||
2、修改 /etc/squid/conf.d/debian.conf 文件<br />
|
||||
两种方式都一样,在底部加入以下代码</p>
|
||||
</div>
|
||||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment">#dns 服务器地址</span></pre></td></tr><tr><td data-num="2"></td><td><pre>dns_nameservers 8.8.8.8 8.8.4.4</pre></td></tr><tr><td data-num="3"></td><td><pre>dns_v4_first on</pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token comment"># 监听端口</span></pre></td></tr><tr><td data-num="5"></td><td><pre>http_port 3128</pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token comment"># 定义 squid 密码文件与 ncsa_auth 文件位置</span></pre></td></tr><tr><td data-num="7"></td><td><pre>auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/squid_user.txt</pre></td></tr><tr><td data-num="8"></td><td><pre><span class="token comment"># 认证进程的数量</span></pre></td></tr><tr><td data-num="9"></td><td><pre>auth_param basic children 15</pre></td></tr><tr><td data-num="10"></td><td><pre><span class="token comment"># 认证对话框显示提示信息</span></pre></td></tr><tr><td data-num="11"></td><td><pre>auth_param basic realm Squid proxy<span class="token punctuation">-</span>caching web server</pre></td></tr><tr><td data-num="12"></td><td><pre><span class="token comment"># 认证有效期</span></pre></td></tr><tr><td data-num="13"></td><td><pre>auth_param basic credentialsttl 24 hours</pre></td></tr><tr><td data-num="14"></td><td><pre><span class="token comment"># 是否区分用户名大小,off 为不区分</span></pre></td></tr><tr><td data-num="15"></td><td><pre>auth_param basic casesensitive off</pre></td></tr><tr><td data-num="16"></td><td><pre><span class="token comment"># 对定义的 squid_user 文件内的用户开启认证访问</span></pre></td></tr><tr><td data-num="17"></td><td><pre>acl 用户名 proxy_auth REQUIRED</pre></td></tr><tr><td data-num="18"></td><td><pre><span class="token comment"># 允许 squid_user 文件内用户进行代理</span></pre></td></tr><tr><td data-num="19"></td><td><pre>http_access allow 用户名</pre></td></tr><tr><td data-num="20"></td><td><pre><span class="token comment"># 顺序匹配,最后添加拒绝所有未允许的规则。不添加会发现,未匹配到的规则会被放行</span></pre></td></tr><tr><td data-num="21"></td><td><pre>http_access deny all</pre></td></tr><tr><td data-num="22"></td><td><pre><span class="token comment"># 缓存设置</span></pre></td></tr><tr><td data-num="23"></td><td><pre>cache_dir ufs /var/spool/squid 100 16 256 read<span class="token punctuation">-</span>only</pre></td></tr><tr><td data-num="24"></td><td><pre>cache_mem 0 MB</pre></td></tr><tr><td data-num="25"></td><td><pre>coredump_dir /var/spool/squid</pre></td></tr><tr><td data-num="26"></td><td><pre><span class="token comment"># 配置高匿,不允许设置任何多余头信息,保持原请求 header。</span></pre></td></tr><tr><td data-num="27"></td><td><pre>header_access Via deny all</pre></td></tr><tr><td data-num="28"></td><td><pre>header_access X<span class="token punctuation">-</span>Forwarded<span cLine truncated
|
||||
<p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#dns服务器地址</span></span><br><span class="line"><span class="string">dns_nameservers</span> <span class="number">8.8</span><span class="number">.8</span><span class="number">.8</span> <span class="number">8.8</span><span class="number">.4</span><span class="number">.4</span></span><br><span class="line"><span class="string">dns_v4_first</span> <span class="string">on</span></span><br><span class="line"><span class="comment"># 监听端口</span></span><br><span class="line"><span class="string">http_port</span> <span class="number">3128</span></span><br><span class="line"><span class="comment"># 定义squid密码文件与ncsa_auth文件位置</span></span><br><span class="line"><span class="string">auth_param</span> <span class="string">basic</span> <span class="string">program</span> <span class="string">/usr/lib/squid/basic_ncsa_auth</span> <span class="string">/etc/squid/squid_user.txt</span></span><br><span class="line"><span class="comment"># 认证进程的数量</span></span><br><span class="line"><span class="string">auth_param</span> <span class="string">basic</span> <span class="string">children</span> <span class="number">15</span></span><br><span class="line"><span class="comment"># 认证对话框显示提示信息</span></span><br><span class="line"><span class="string">auth_param</span> <span class="string">basic</span> <span class="string">realm</span> <span class="string">Squid</span> <span class="string">proxy-caching</span> <span class="string">web</span> <span class="string">server</span></sLine truncated
|
||||
<div class="note primary">
|
||||
<p>至次已经可以通过填写安装 squid 的服务器 ip 加端口 3128 加用户名密码进行代理访问了(通过访问<span class="blue"><span class="exturl" data-url="aHR0cHM6Ly93d3cuaXAuY24v"> https://www.ip.cn/</span></span> 查看 ip 就会发现自己的出口 ip 已经变成了 squid 服务器的 ip 了)。但是要想科学上网还必须对代理的数据进行加密,否则访问外网还是会被我国的长城防火墙阻挡,所以还需要安装 stunnel 来实现此目的。</p>
|
||||
</div>
|
||||
<h5 id="stunnel服务端部分"><a class="anchor" href="#stunnel服务端部分">#</a> stunnel 服务端部分</h5>
|
||||
<ul>
|
||||
<li>1、安装(和 squid 装在一起)</li>
|
||||
</ul>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">apt-get</span> <span class="token function">install</span> <span class="token parameter variable">-y</span> stunnel</pre></td></tr></table></figure><ul>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-get install -y stunnel</span><br></pre></td></tr></table></figure></p>
|
||||
<ul>
|
||||
<li>2、生成 TLS/SSL 证书</li>
|
||||
</ul>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>openssl req <span class="token parameter variable">-new</span> <span class="token parameter variable">-x509</span> <span class="token parameter variable">-days</span> <span class="token number">3650</span> <span class="token parameter variable">-nodes</span> <span class="token parameter variable">-out</span> stunnel.pem <span class="token parameter variable">-keyout</span> stunnel.pem</pre></td></tr></table></figure><ul>
|
||||
<p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openssl req -new -x509 -days 3650 -nodes -out stunnel.pem -keyout stunnel.pem</span><br></pre></td></tr></table></figure></p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>3、将证书 stunnel.pem 放到 /etc/stunnel/ 目录下</p>
|
||||
</li>
|
||||
@@ -264,7 +303,8 @@
|
||||
<p>4、修改 stunnel 配置 (/etc/stunnle/stunnle.conf)</p>
|
||||
</li>
|
||||
</ul>
|
||||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>; 设置stunnel的pid文件路径</pre></td></tr><tr><td data-num="2"></td><td><pre>pid = /etc/stunnel/stunnel.pid</pre></td></tr><tr><td data-num="3"></td><td><pre>; 设置stunnel工作的用户(组)</pre></td></tr><tr><td data-num="4"></td><td><pre>setuid = root</pre></td></tr><tr><td data-num="5"></td><td><pre>setgid = root</pre></td></tr><tr><td data-num="6"></td><td><pre></pre></td></tr><tr><td data-num="7"></td><td><pre>; 开启日志等级:emerg (0)<span class="token punctuation">,</span> alert (1)<span class="token punctuation">,</span> crit (2)<span class="token punctuation">,</span> err (3)<span class="token punctuation">,</span> warning (4)<span class="token punctuation">,</span> notice (5)<span class="token punctuation">,</span> info (6)<span class="token punctuation">,</span> or debug (7)</pre></td></tr><tr><td data-num="8"></td><td><pre>debug = 7</pre></td></tr><tr><td data-num="9"></td><td><pre>; 日志文件路径</pre></td></tr><tr><td data-num="10"></td><td><pre>output = /etc/stunnel/stunnel.log</pre></td></tr><tr><td data-num="11"></td><td><pre></pre></td></tr><tr><td data-num="12"></td><td><pre>; 证书文件</pre></td></tr><tr><td data-num="13"></td><td><pre>cert = /etc/stunnel/stunnel.pem</pre></td></tr><tr><td data-num="14"></td><td><pre>; 私钥文件</pre></td></tr><tr><td data-num="15"></td><td><pre>key = /etc/stunnel/stunnel.pem</pre></td></tr><tr><td data-num="16"></td><td><pre></pre></td></tr><tr><td data-num="17"></td><td><pre>; 自定义服务名squid<span class="token punctuation">-</span>proxy</pre></td></tr><tr><td data-num="18"></td><td><pre><span class="token punctuation">[</span>squid<span class="token punctuation">-</span>proxy<span class="token punctuation">]</span></pre></td></tr><tr><td data-num="19"></td><td><pre>; 服务监听的端口,client要连接这个端口与server通信</pre></td></tr><tr><td data-num="20"></td><td><pre>accept = 1234(自定义)</pre></td></tr><tr><td data-num="21"></td><td><pre>; 服务要连接的端口,连接到squid的3128端口,将数据发给squid</pre></td></tr><tr><td data-num="22"></td><td><pre>connect = 3128</pre></td></tr></table></figure><h5 id="stunnel客户端部分"><a class="anchor" href="#stunnel客户端部分">#</a> stunnel 客户端部分</h5>
|
||||
<p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line"><span class="string">;</span> <span class="string">设置stunnel的pid文件路径</span></span><br><span class="line"><span class="string">pid</span> <span class="string">=</span> <span class="string">/etc/stunnel/stunnel.pid</span></span><br><span class="line"><span class="string">;</span> <span class="string">设置stunnel工作的用户(组)</span></span><br><span class="line"><span class="string">setuid</span> <span class="string">=</span> <span class="string">root</span></span><br><span class="line"><span class="string">setgid</span> <span class="string">=</span> <span class="string">root</span></span><br><span class="line"></span><br><span class="line"><span class="string">;</span> <span class="string">开启日志等级:emerg</span> <span class="string">(0),</span> <span class="string">alert</span> <span class="string">(1),</span> <span class="string">crit</span> <span class="string">(2),</span> <span class="string">err</span> <span class="string">(3),</span> <span class="string">warning</span> <span class="string">(4),</span> <span class="string">notice</span> <span class="string">(5),</span> <span class="string">info</span> <span class="string">(6),</span> <span class="string">or</span> <span class="string">debug</span> <span class="string">(7)</span></span><br><span class="line"><span class="string">debug</span> <span class="string">=</span> <span class="number">7</span></span><br><span class="line"><span class="string">;</span> <span class="string">日志文件路径</span></span><br><span class="line"><span class="string">output</span> <span class="string">=</span> <span class="string">/etc/stunnel/stunnel.log</span></span><br><span class="line"></span><br><span class="line"><span class="string">;</span> <span class="string">证书文件</span></span><br><span class="line"><span class="string">cert</span> <span class="string">=</span> <span class="string">/etc/stunnel/stunnel.pem</span></span><br><span class="line"><span class="string">;</span> <span class="string">私钥文件</span></span><br><span class="line"><span class="string">key</span> <span class="string">=</span> <span class="string">/etc/stunnel/stunnel.pemLine truncated
|
||||
<h5 id="stunnel客户端部分"><a class="anchor" href="#stunnel客户端部分">#</a> stunnel 客户端部分</h5>
|
||||
<div class="note info">
|
||||
<p>可以安装在要代理的机器上,在需要代理的情况下再开启(代理地址填 127.0.0.1 加客户端监听端口)。也可以安装在国内的服务器上一直保持连接(代理信息填国内服务器 ip 加客户端监听端口)。本示例客户端为 windows 系统</p>
|
||||
</div>
|
||||
@@ -275,7 +315,8 @@
|
||||
<ul>
|
||||
<li>2、修改配置(C:\Program Files (x86)\stunnel\config\stunnel.conf)</li>
|
||||
</ul>
|
||||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token punctuation">[</span>squid<span class="token punctuation">-</span>proxy<span class="token punctuation">]</span></pre></td></tr><tr><td data-num="2"></td><td><pre>client = yes</pre></td></tr><tr><td data-num="3"></td><td><pre>; 监听3128端口,那么用户浏览器的代理设置就是 stunnel<span class="token punctuation">-</span>client<span class="token punctuation">-</span>ip<span class="token punctuation">:</span><span class="token number">3128</span></pre></td></tr><tr><td data-num="4"></td><td><pre>accept = 3128</pre></td></tr><tr><td data-num="5"></td><td><pre>; 要连接到的stunnel server的ip与端口</pre></td></tr><tr><td data-num="6"></td><td><pre>connect = stunnel服务端ip<span class="token punctuation">:</span>1234(服务端自定义端口)</pre></td></tr><tr><td data-num="7"></td><td><pre></pre></td></tr><tr><td data-num="8"></td><td><pre>; 需要验证对方发过来的证书</pre></td></tr><tr><td data-num="9"></td><td><pre>verify = 2</pre></td></tr><tr><td data-num="10"></td><td><pre>; 用来进行证书验证的文件(stunnel服务端生成的证书复制到以下目录并改名为stunnel<span class="token punctuation">-</span>server.pem)</pre></td></tr><tr><td data-num="11"></td><td><pre>CAfile = C<span class="token punctuation">:</span>\Program Files (x86)\stunnel\config\stunnel<span class="token punctuation">-</span>server.pem</pre></td></tr></table></figure><div class="note primary">
|
||||
<p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line">[<span class="string">squid-proxy</span>]</span><br><span class="line"><span class="string">client</span> <span class="string">=</span> <span class="literal">yes</span></span><br><span class="line"><span class="string">;</span> <span class="string">监听3128端口,那么用户浏览器的代理设置就是</span> <span class="string">stunnel-client-ip:3128</span></span><br><span class="line"><span class="string">accept</span> <span class="string">=</span> <span class="number">3128</span></span><br><span class="line"><span class="string">;</span> <span class="string">要连接到的stunnel</span> <span class="string">server的ip与端口</span></span><br><span class="line"><span class="string">connect</span> <span class="string">=</span> <span class="string">stunnel服务端ip:1234(服务端自定义端口)</span></span><br><span class="line"></span><br><span class="line"><span class="string">;</span> <span class="string">需要验证对方发过来的证书</span></span><br><span class="line"><span class="string">verify</span> <span class="string">=</span> <span class="number">2</span></span><br><span class="line"><span class="string">;</span> <span class="string">用来进行证书验证的文件(stunnel服务端生成的证书复制到以下目录并改名为stunnel-server.pem)</span></span><br><span class="line"><span class="string">CAfile</span> <span class="string">=</span> <span class="string">C:\Program</span> <span class="string">Files</span> <span class="string">(x86)\stunnel\config\stunnel-server.pem</span></span><br></pre></td></tr></table></figure></p>
|
||||
<div class="note primary">
|
||||
<p>至次配置好代理 ip 为 stunnel 客户端 ip 加端口 3128 就可以正式科学上网了。如果只想对需要科学的 url 进行代理,可以通过安装 Proxy SwitchyOmega 插件实现(规则地址可通过<span class="blue"><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2dmd2xpc3QvZ2Z3bGlzdA=="> https://github.com/gfwlist/gfwlist</span></span> 获取)。</p>
|
||||
</div>
|
||||
<p><img data-src="https://nas.hitoli.com:18014/images/2023/09/09/6a38fcb32752.png" alt="" /><br />
|
||||
@@ -325,10 +366,11 @@ Lombok supports: OpenJDK javac, ECJ</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>解决办法<br />
|
||||
在 IntelliJ IDEA 的全局配置 Compiler 中添加如下配置:</p>
|
||||
在 IntelliJ IDEA 的全局配置 Compiler 中添加如下配置:<br />
|
||||
<figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">-Djps.track.ap.dependencies=false</span></span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/07/08/34bac08a5d10.png" alt="" /></p>
|
||||
</li>
|
||||
</ol>
|
||||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token punctuation">-</span>Djps.track.ap.dependencies=false</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/07/08/34bac08a5d10.png" alt="" /></p>
|
||||
]]></description>
|
||||
</item>
|
||||
<item>
|
||||
@@ -355,20 +397,25 @@ Lombok supports: OpenJDK javac, ECJ</p>
|
||||
<li>更改模板</li>
|
||||
</ol>
|
||||
<p>打开 <span class="red">shoka\layout_partials\layout.njk</span>,找到第 144 行左右:</p>
|
||||
<figure class="highlight html"><figcaption data-lang="HTML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.polyfill.io/v3/polyfill.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></pre></td></tr><tr><td data-num="2"></td><td><pre>&#123;&#123; _vendor_js() &#125;&#125;</pre></td></tr><tr><td data-num="3"></td><td><pre>&#123;&#123; _js('app.js') &#125;&#125;</pre></td></tr><tr><td data-num="4"></td><td><pre>&#123;&#123; partial('_partials/third-party/baidu-analytics.njk', &#123;&#125;, &#123;cache: true&#125;) &#125;&#125;</pre></td></tr></table></figure><p>更改为如下内容:</p>
|
||||
<figure class="highlight html"><figcaption data-lang="HTML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.polyfill.io/v3/polyfill.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></pre></td></tr><tr><td data-num="2"></td><td><pre>&#123;%- if theme.advVendors.enable %&#125;</pre></td></tr><tr><td data-num="3"></td><td><pre> &#123;% for i in _list_vendor_js() %&#125;</pre></td></tr><tr><td data-num="4"></td><td><pre> &#123;&#123; _adv_vendor_js(i) &#125;&#125;</pre></td></tr><tr><td data-num="5"></td><td><pre> &#123;% endfor %&#125;</pre></td></tr><tr><td data-num="6"></td><td><pre>&#123;%- else %&#125;</pre></td></tr><tr><td data-num="7"></td><td><pre>&#123;&#123; _vendor_js() &#125;&#125;</pre></td></tr><tr><td data-num="8"></td><td><pre>&#123;%- endif %&#125;</pre></td></tr><tr><td data-num="9"></td><td><pre>&#123;&#123; _js('app.js')&#125;&#125;</pre></td></tr><tr><td data-num="10"></td><td><pre>&#123;&#123; partial('_partials/third-party/baidu-analytics.njk', &#123;&#125;, &#123;cache: true&#125;) &#125;&#125;</pre></td></tr></table></figure><ol start="2">
|
||||
<p><figure class="highlight html"><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></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;https://cdn.polyfill.io/v3/polyfill.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="symbol">&amp;#123;</span><span class="symbol">&amp;#123;</span> _vendor_js() <span class="symbol">&amp;#125;</span><span class="symbol">&amp;#125;</span></span><br><span class="line"><span class="symbol">&amp;#123;</span><span class="symbol">&amp;#123;</span> _js(&#x27;app.js&#x27;) <span class="symbol">&amp;#125;</span><span class="symbol">&amp;#125;</span></span><br><span class="line"><span class="symbol">&amp;#123;</span><span class="symbol">&amp;#123;</span> partial(&#x27;_partials/third-party/baidu-analytics.njk&#x27;, <span class="symbol">&amp;#123;</span><span class="symbol">&amp;#125;</span>, <span class="symbol">&amp;#123;</span>cache: true<span class="symbol">&amp;#125;</span>) <span class="symbol">&amp;#125;</span><span class="symbol">&amp;#125;</span></span><br></pre></td></tr></table></figure></p>
|
||||
<p>更改为如下内容:</p>
|
||||
<p><figure class="highlight html"><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></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;https://cdn.polyfill.io/v3/polyfill.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="symbol">&amp;#123;</span>%- if theme.advVendors.enable %<span class="symbol">&amp;#125;</span></span><br><span class="line"> <span class="symbol">&amp;#123;</span>% for i in _list_vendor_js() %<span class="symbol">&amp;#125;</span></span><br><span class="line"> <span class="symbol">&amp;#123;</span><span class="symbol">&amp;#123;</span> _adv_vendor_js(i) <span class="symbol">&amp;#125;</span><span class="symbol">&amp;#125;</span></span><br><span class="line"> <span class="symbol">&amp;#123;</span>% endfor %<span class="symbol">&amp;#125;</span></span><br><span class="line"><span class="symbol">&amp;#123;</span>%- else %<span class="symbol">&amp;#125;</span></span><br><span class="line"><span class="symbol">&amp;#123;</span><span class="symbol">&amp;#123;</span> _vendor_js() <span class="symbol">&amp;#125;</span><span class="symbol">&amp;#125;</span></span><br><span class="line"><span class="symbol">&amp;#123;</span>%- endif %<span class="symbol">&amp;#125;</span></span><br><span class="line"><span class="symbol">&amp;#123;</span><span class="symbol">&amp;#123;</span> _js(&#x27;app.js&#x27;)<span class="symbol">&amp;#125;</span><span class="symbol">&amp;#125;</span></span><br><span class="line"><span class="symbol">&amp;#123;</span><span class="symbol">&amp;#123;</span> partial(&#x27;_partials/third-party/baidu-analytics.njk&#x27;, <span class="symbol">&amp;#123;</span><span class="symbol">&amp;#125;</span>, <span class="symbol">&amp;#123;</span>cache: true<span class="symbol">&amp;#125;</span>) <span class="symbol">&amp;#125;</span><span class="symbol">&amp;#125;</span></span><br></pre></td></tr></table></figure></p>
|
||||
<ol start="2">
|
||||
<li>注册 helper</li>
|
||||
</ol>
|
||||
<p>打开 <span class="red">shoka\scripts\helpers\asset.js</span>, 最后一行新建空行,增加如下内容:</p>
|
||||
<figure class="highlight javascript"><figcaption data-lang="javascript"></figcaption><table><tr><td data-num="1"></td><td><pre>hexo<span class="token punctuation">.</span>extend<span class="token punctuation">.</span>helper<span class="token punctuation">.</span><span class="token function">register</span><span class="token punctuation">(</span><span class="token string">'_list_vendor_js'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre> <span class="token keyword">return</span> hexo<span class="token punctuation">.</span>theme<span class="token punctuation">.</span>config<span class="token punctuation">.</span>vendorsList<span class="token punctuation">.</span>js<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="4"></td><td><pre></pre></td></tr><tr><td data-num="5"></td><td><pre>hexo<span class="token punctuation">.</span>extend<span class="token punctuation">.</span>helper<span class="token punctuation">.</span><span class="token function">register</span><span class="token punctuation">(</span><span class="token string">'_adv_vendor_js'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">js_name</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token keyword">const</span> config <span class="token operator">=</span> hexo<span class="token punctuation">.</span>theme<span class="token punctuation">.</span>config<span class="token punctuation">.</span>advVendors<span class="token punctuation">.</span>js<span class="token punctuation">[</span>js_name<span class="token punctuation">]</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token keyword">const</span> src <span class="token operator">=</span> config<span class="token punctuation">[</span><span class="token string">"src"</span><span class="token punctuation">]</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token keyword">let</span> result<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>src<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">"http"</span><span class="token punctuation">)</span> <span class="token operator">!==</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr>Line truncated
|
||||
<p><figure class="highlight javascript"><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></pre></td><td class="code"><pre><span class="line">hexo.<span class="property">extend</span>.<span class="property">helper</span>.<span class="title function_">register</span>(<span class="string">&#x27;_list_vendor_js&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line"> <span class="keyword">return</span> hexo.<span class="property">theme</span>.<span class="property">config</span>.<span class="property">vendorsList</span>.<span class="property">js</span>;</span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line">hexo.<span class="property">extend</span>.<span class="property">helper</span>.<span class="title function_">register</span>(<span class="string">&#x27;_adv_vendor_js&#x27;</span>, <span class="keyword">function</span> (<span class="params">js_name</span>) &#123;</span><br><span class="line"> <span class="keyword">const</span> config = hexo.<span class="property">theme</span>.<span class="property">config</span>.<span class="property">advVendors</span>.<span class="property">js</span>[js_name];</span><br><span class="line"> <span class="keyword">const</span> src = config[<span class="string">&quot;src&quot;</span>];</span><br><span class="line"> <span class="keyword">let</span> result;</span><br><span class="line"> <span class="keyword">if</span> (src.<span class="title function_">indexOf</span>(<span class="string">&quot;http&quot;</span>) !== -<span class="number">1</span>) &#123;</span><br><span class="line"> result = src;</span><br><span class="line"> &#125; <span class="keyword">else</span> <span class="keyword">if</span> (src.<span class="title function_">indexOf</span>(<span class="string">&quot;combine&quot;</span>) !== -<span class="number">1</span>) &#123;</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&quot;The cLine truncated
|
||||
<ol start="3">
|
||||
<li>更改配置</li>
|
||||
</ol>
|
||||
<p>在 shoka 目录下 <span class="red">_config.yml</span> 增加如下内容:</p>
|
||||
<div class="note info">
|
||||
<p>推荐内容,可根据自己情况更改</p>
|
||||
</div>
|
||||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token key atrule">advVendors</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="2"></td><td><pre> <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span></pre></td></tr><tr><td data-num="3"></td><td><pre> <span class="token key atrule">github</span><span class="token punctuation">:</span> <span class="token string">"https://cdn.jsdelivr.net/gh/"</span></pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token key atrule">combine</span><span class="token punctuation">:</span> <span class="token string">"https://cdn.jsdelivr.net/"</span></pre></td></tr><tr><td data-num="5"></td><td><pre> <span class="token key atrule">npm</span><span class="token punctuation">:</span> <span class="token string">"https://unpkg.com/"</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token key atrule">js</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token key atrule">pace</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token key atrule">src</span><span class="token punctuation">:</span> https<span class="token punctuation">:</span>//lf9<span class="token punctuation">-</span>cdn<span class="token punctuation">-</span>tos.bytecdntp.com/cdn/expire<span class="token punctuation">-</span>1<span class="token punctuation">-</span>M/pace/1.0.2/pace.min.js</pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token key atrule">pjax</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token key atrule">src</span><span class="token punctuation">:</span> https<span class="token punctuation">:</span>//lib.baomitu.com/pjax/0.2.8/pjax.min.js</pre></td></tr><tr><td data-num="11"></td><td><pre> <span class="token key atrule">fetch</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="12"></td><td><pre> <span class="token key atrule">src</span><span class="token punctuation">:</span> npm/whatwg<span class="token punctuation">-</span>fetch@3.4.0/dist/fetch.umd.js</pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token key atrule">anime</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="14"></td><td><pre> <span class="token key atrule">src</span><span class="token punctuation">:</span> https<span class="token punctuation">:</span>//lf9<span class="token punctuation">-</span>cdn<span class="token punctuation">-</span>tos.bytecdntp.com/cdn/expire<span class="token punctuation">-</span>1<span class="token punctuation">-</span>M/animejs/3.2.0/anime.min.js</pre></td></tr><tr><td data-num="15"></td><td><pre> <span class="token key atrule">algolia</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="16"></td><td><pre> <span clasLine truncated
|
||||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token key atrule">advVendors</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="2"></td><td><pre> <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token comment">#是否开启,关闭使用主题默认加载</span></pre></td></tr><tr><td data-num="3"></td><td><pre> <span class="token key atrule">github</span><span class="token punctuation">:</span> <span class="token comment">#github 使用的加载源,需要协议头和末尾斜杠</span></pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token key atrule">combine</span><span class="token punctuation">:</span> <span class="token comment">#聚合 js 使用的加载源 (不建议使用)</span></pre></td></tr><tr><td data-num="5"></td><td><pre> <span class="token key atrule">npm</span><span class="token punctuation">:</span> <span class="token comment">#npm 的加载源</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token key atrule">js</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token key atrule">jspackage</span><span class="token punctuation">:</span> <span class="token comment">#js 名,可以与文件名不一致</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token key atrule">src</span><span class="token punctuation">:</span> <span class="token string">"资源地址,详情见后面"</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token comment"># async: true 异步加载此 js</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token comment"># data-pjax: true 在 pjax 加载时刷新此 js</span></pre></td></tr><tr><td data-num="11"></td><td><pre> <span class="token comment"># hash-value: 这个资源的 integrity 值,用于防 XXS</span></pre></td></tr><tr><td data-num="12"></td><td><pre> <span class="token comment"># deferLoad: true 使用动态 DOM 节点添加延迟 js 加载 (实验性)</span></pre></td></tr><tr><td data-num="13"></td><td><pre></pre></td></tr><tr><td data-num="14"></td><td><pre><span class="token key atrule">vendorsList</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="15"></td><td><pre> <span class="token key atrule">js</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="16"></td><td><pre> <span class="token punctuation">-</span> jspackage <span class="token comment">#与上方 jspackage 一致即可</span></pre></td></tr></table></figure><p>资源地址格式如下:</p>
|
||||
<p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line"><span class="attr">advVendors:</span></span><br><span class="line"> <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line"> <span class="attr">github:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/&quot;</span></span><br><span class="line"> <span class="attr">combine:</span> <span class="string">&quot;https://cdn.jsdelivr.net/&quot;</span></span><br><span class="line"> <span class="attr">npm:</span> <span class="string">&quot;https://unpkg.com/&quot;</span></span><br><span class="line"> <span class="attr">js:</span></span><br><span class="line"> <span class="attr">pace:</span></span><br><span class="line"> <span class="attr">src:</span> <span class="string">https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/pace/1.0.2/pace.min.js</span></span><br><span class="line"> <span class="attr">pjax:</span></span><br><span class="line"> <span class="attr">src:</span> <span class="string">https://lib.baomitu.com/pjax/0.2.8/pjax.min.js</span></span><br><span class="line"> <span class="attr">fetch:</span></span><br><span class="line"> <span class="attr">src:</span> <span class="string">npm/whatwg-fetch@3.4.0/dist/fetch.umd.js</span></span><br><span class="line"> <span class="attr">anime:</span></span><br><span class=&Line truncated
|
||||
<p>下面为结构详解:</p>
|
||||
<p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line"><span class="attr">advVendors:</span></span><br><span class="line"> <span class="attr">enable:</span> <span class="literal">true</span> <span class="comment">#是否开启,关闭使用主题默认加载</span></span><br><span class="line"> <span class="attr">github:</span> <span class="comment">#github 使用的加载源,需要协议头和末尾斜杠</span></span><br><span class="line"> <span class="attr">combine:</span> <span class="comment">#聚合 js 使用的加载源 (不建议使用)</span></span><br><span class="line"> <span class="attr">npm:</span> <span class="comment">#npm 的加载源</span></span><br><span class="line"> <span class="attr">js:</span></span><br><span class="line"> <span class="attr">jspackage:</span> <span class="comment">#js 名,可以与文件名不一致</span></span><br><span class="line"> <span class="attr">src:</span> <span class="string">&quot;资源地址,详情见后面&quot;</span></span><br><span class="line"> <span class="comment"># async: true 异步加载此 js</span></span><br><span class="line"> <span class="comment"># data-pjax: true 在 pjax 加载时刷新此 js</span></span><br><span class="line"> <span class="comment"># hash-value: 这个资源的 integrity 值,用于防 XXS</span></span><br><span class="line"> <span class="comment"># deferLoad: true 使用动态 DOM 节点添加延迟 js 加载 (实验性)</span></span><br><span class="line"></span><br><span class="line"><span class="attr">vendorsList:</span></span><br><span class="line"> <span class="attr">js:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">jspackage</span> <span class="comment">#与上方 jspackage 一致即可</span></span><br></pre></td></tr></table></figure></p>
|
||||
<p>资源地址格式如下:</p>
|
||||
<p><span class="red"><span class="exturl" data-url="aHR0cHM6Ly9leGFtcGxlLmNvbS94eHguanM=">https://example.com/xxx.js</span></span> 使用 http (s) 地址加载 js<br />
|
||||
<span class="red">combine/xxx.js,xxx.js</span> 使用 jsdelivr 的 combine 功能加载 (不推荐)<br />
|
||||
<span class="red">npm/xxx/xxx.js</span> 使用 npm 源加载 js<br />
|
||||
@@ -388,8 +435,9 @@ Lombok supports: OpenJDK javac, ECJ</p>
|
||||
<pubDate>Tue, 30 May 2023 17:20:00 +0800</pubDate>
|
||||
<description><![CDATA[ <h4 id="问题"><a class="anchor" href="#问题">#</a> 问题</h4>
|
||||
<p>http 请求发起后接收不到返回数据!!!【测试环境没出问题,发到正式环境就有问题】</p>
|
||||
<p>项目中通过 restTemplate 发起请求:</p>
|
||||
<figure class="highlight java"><figcaption data-lang="java"></figcaption><table><tr><td data-num="1"></td><td><pre>log<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">"请求入参:&#123;&#125;"</span><span class="token punctuation">,</span><span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">toJSONString</span><span class="token punctuation">(</span>request<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">// 打印日志 1</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token comment">// 配置 http 请求的连接超时时间和读取超时时间</span></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token class-name">HttpsClientRequestFactory</span> factory <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">HttpsClientRequestFactory</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="4"></td><td><pre>factory<span class="token punctuation">.</span><span class="token function">setConnectTimeout</span><span class="token punctuation">(</span><span class="token number">60</span> <span class="token operator">*</span> <span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="5"></td><td><pre>factory<span class="token punctuation">.</span><span class="token function">setReadTimeout</span><span class="token punctuation">(</span><span class="token number">5</span> <span class="token operator">*</span> <span class="token number">60</span> <span class="token operator">*</span> <span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token class-name">RestTemplate</span> restTemplate <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">RestTemplate</span><span class="token punctuation">(</span>factory<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="7"></td><td><pre><span class="token class-name">Result</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">InventoryResult</span><span class="token punctuation">></span></span> result <span class="token operator">=</span> restTemplate<span class="token punctuation">.</span><span class="token function">postForObject</span><span class="token punctuation">(</span>address<span class="token punctuation">.</span><span class="token function">concat</span><span class="token punctuation">(</span>inventoryUrl<span class="token punctuation">)</span><span class="token punctuation">,</span> request<span class="token punctuation">,</span> <span class="token class-name">Result</span><span class="token punctuation">.</span><span class="token keyword">class</span><spanLine truncated
|
||||
<p>项目中通过 restTemplate 发起请求:<br />
|
||||
<figure class="highlight java"><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></pre></td><td class="code"><pre><span class="line">log.info(<span class="string">&quot;请求入参:&#123;&#125;&quot;</span>,JSON.toJSONString(request));<span class="comment">//打印日志1</span></span><br><span class="line"><span class="comment">// 配置http请求的连接超时时间和读取超时时间</span></span><br><span class="line"><span class="type">HttpsClientRequestFactory</span> <span class="variable">factory</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">HttpsClientRequestFactory</span>();</span><br><span class="line">factory.setConnectTimeout(<span class="number">60</span> * <span class="number">1000</span>);</span><br><span class="line">factory.setReadTimeout(<span class="number">5</span> * <span class="number">60</span> * <span class="number">1000</span>);</span><br><span class="line"><span class="type">RestTemplate</span> <span class="variable">restTemplate</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">RestTemplate</span>(factory);</span><br><span class="line">Result&lt;InventoryResult&gt; result = restTemplate.postForObject(address.concat(inventoryUrl), request, Result.class);</span><br><span class="line">log.info(<span class="string">&quot;库存同步,返回数据: &#123;&#125;&quot;</span>, result);<span class="comment">//打印日志2</span></span><br></pre></td></tr></table></figure></p>
|
||||
<ul>
|
||||
<li>打印日志 1 内容为:</li>
|
||||
</ul>
|
||||
<p>http 请求入参:{data=[{ productStatus=10,skuCode=null}], messageId=ewpfpr1t6ey5r6qj0su0w1h6rt73hr,token=vgvU5EJKuZbuHii7WH6pTINp40ZRicaqLz4dq5P7L6pDzWir8EEGZhCKPucQjljsw69EHasEy+iJfdTofDg==}</p>
|
||||
@@ -404,14 +452,21 @@ Lombok supports: OpenJDK javac, ECJ</p>
|
||||
<h4 id="解决方式"><a class="anchor" href="#解决方式">#</a> 解决方式</h4>
|
||||
<h6 id="第一种"><a class="anchor" href="#第一种">#</a> 第一种</h6>
|
||||
<ol>
|
||||
<li>添加 HttpsClientRequestFactory 类,并继承 SimpleClientHttpRequestFactory</li>
|
||||
<li>
|
||||
<p>添加 HttpsClientRequestFactory 类,并继承 SimpleClientHttpRequestFactory<br />
|
||||
<figure class="highlight java"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 兼容调Https接口</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">HttpsClientRequestFactory</span> <span class="keyword">extends</span> <span class="title class_">SimpleClientHttpRequestFactory</span> &#123;</span><br><span class="line"> </span><br><span class="line"> <span class="meta">@Override</span></span><br><span class="line"> <span class="keyword">protected</span> <span class="keyword">void</span> <span class="title function_">prepareConnection</span><span class="params">(HttpURLConnection connection, String httpMethod)</span></span><br><span class="line"> <span class="keyword">throws</span> IOException &#123;</span><br><span class="line"> <span class="keyword">if</span> (connection <span class=Line truncated
|
||||
</li>
|
||||
<li>
|
||||
<p>使用 restTemplate 发起请求前先设置连接和超时时间或者通过容器加载配置类然后设置超时时间<br />
|
||||
<figure class="highlight java"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">//配置http请求的连接超时时间和读取超时时间</span></span><br><span class="line"><span class="type">HttpsClientRequestFactory</span> <span class="variable">factory</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">HttpsClientRequestFactory</span>();</span><br><span class="line">factory.setConnectTimeout(<span class="number">60</span> * <span class="number">1000</span>);</span><br><span class="line">factory.setReadTimeout(<span class="number">5</span> * <span class="number">60</span> * <span class="number">1000</span>);</span><br><span class="line"><span class="type">RestTemplate</span> <span class="variable">restTemplate</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">RestTemplate</span>(factory);</span><br><span class="line">BaseResult&lt;QueryInventoryResult&gt; result = restTemplate.postForObject(address.concat(inventoryUrl), request, Result.class);</span><br></pre></td></tr></table></figure><br />
|
||||
<figure class="highlight java"><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></pre></td><td class="code"><pre><span class="line"><span class="meta">@Configuration</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">RestConfig</span> &#123;</span><br><span class="line"> </span><br><span class="line"> <span class="comment">//60 * 1000</span></span><br><span class="line"> <span class="meta">@Value(&quot;$&#123;rest.connectTimeout:60000&#125;&quot;)</span></span><br><span class="line"> <span class="keyword">private</span> <span class="type">int</span> connectTimeout;</span><br><span class="line"> </span><br><span class="line"> <span class="comment">//5 * 60 * 1000</span></span><br><span class="line"> <span class="meta">@Value(&quot;$&#123;rest.readTimeout:300000&#125;&quot;)</span></span><br><span class="line"> <span class="keyword">private</span> <span class="type">int</span> readTimeout;</span><br><span class="line"> </span><br><span class="line"> <span class="meta">@Bean</span></span><br><span class="line"> <span class="keyword">public</span> RestTemplate <span class="title function_">restTemplate</span><span class="params">()</span> &#123;</span><br><span class="line"> <span class="type">SimpleClientHttpRequestFactory</span> <span class="variable">simpleClientHttpRequestFactory</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">SimpleClientHttpRequestFactory</span>();</span><br><span class="line"> simpleClientHttpRequestFactory.setConnectTimeout(connectTimeout);</span><br><span class="line"> simpleClientHttpRequestFactory.setReadTimeout(readTimeout);</span><br><span class="line"> <span class="type">RestTemplate</span> <span class="variable">restTemplate</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">RestTemplate</span>(simpleClientHttpRequestFactory);</span><br><span class="line"> <span class="keyword">return</span> restTemplate;</span><br><span class="line"> &#125;</span><br></pre></td></tr></table></figure></p>
|
||||
</li>
|
||||
</ol>
|
||||
<figure class="highlight java"><figcaption data-lang="java"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment">/**</pre></td></tr><tr><td data-num="2"></td><td><pre> * 兼容调 Https 接口</pre></td></tr><tr><td data-num="3"></td><td><pre> */</span></pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">HttpsClientRequestFactory</span> <span class="token keyword">extends</span> <span class="token class-name">SimpleClientHttpRequestFactory</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="5"></td><td><pre> </pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token annotation punctuation">@Override</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token keyword">protected</span> <span class="token keyword">void</span> <span class="token function">prepareConnection</span><span class="token punctuation">(</span><span class="token class-name">HttpURLConnection</span> connection<span class="token punctuation">,</span> <span class="token class-name">String</span> httpMethod<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token keyword">throws</span> <span class="token class-name">IOException</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>connection <span class="token keyword">instanceof</span> <span class="token class-name">HttpsURLConnection</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token function">prepareHttpsConnection</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token class-name">HttpsURLConnection</span><span class="token punctuation">)</span> connection<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="11"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="12"></td><td><pre> <span class="token keyword">super</span><span class="token punctuation">.</span><span class="token function">prepareConnection</span><span class="token punctuation">(</span>connection<span class="token punctuation">,</span> httpMethod<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="14"></td><td><pre> </pre></td></tr><tr><td data-num="15"></td><td><pre> <span class="token keyword">private</span> <span class="token keyword">void</span> <span class="token function">prepareHttpsConnection</span><span class="token punctuation">(</span><span class="token class-name">HttpsURLConnection</span> connection<span class="token punctuation">)</span> <span class="token punctuatiLine truncated
|
||||
<li>使用 restTemplate 发起请求前先设置连接和超时时间或者通过容器加载配置类然后设置超时时间</li>
|
||||
</ol>
|
||||
<figure class="highlight java"><figcaption data-lang="java"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment">// 配置 http 请求的连接超时时间和读取超时时间</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token class-name">HttpsClientRequestFactory</span> factory <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">HttpsClientRequestFactory</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="3"></td><td><pre>factory<span class="token punctuation">.</span><span class="token function">setConnectTimeout</span><span class="token punctuation">(</span><span class="token number">60</span> <span class="token operator">*</span> <span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="4"></td><td><pre>factory<span class="token punctuation">.</span><span class="token function">setReadTimeout</span><span class="token punctuation">(</span><span class="token number">5</span> <span class="token operator">*</span> <span class="token number">60</span> <span class="token operator">*</span> <span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token class-name">RestTemplate</span> restTemplate <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">RestTemplate</span><span class="token punctuation">(</span>factory<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token class-name">BaseResult</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">QueryInventoryResult</span><span class="token punctuation">></span></span> result <span class="token operator">=</span> restTemplate<span class="token punctuation">.</span><span class="token function">postForObject</span><span class="token punctuation">(</span>address<span class="token punctuation">.</span><span class="token function">concat</span><span class="token punctuation">(</span>inventoryUrl<span class="token punctuation">)</span><span class="token punctuation">,</span> request<span class="token punctuation">,</span> <span class="token class-name">Result</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr></table></figure><figure class="highlight java"><figcaption data-lang="java"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token annotation punctuation">@Configuration</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">RestConfig</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="3"></td><td><pre> </pre></Line truncated
|
||||
<figure class="highlight java"><figcaption data-lang="java"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token annotation punctuation">@Configuration</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">RestConfig</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="3"></td><td><pre> </pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token comment">//60 * 1000</span></pre></td></tr><tr><td data-num="5"></td><td><pre> <span class="token annotation punctuation">@Value</span><span class="token punctuation">(</span><span class="token string">"$&#123;rest.connectTimeout:60000&#125;"</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token keyword">private</span> <span class="token keyword">int</span> connectTimeout<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="7"></td><td><pre> </pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token comment">//5 * 60 * 1000</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token annotation punctuation">@Value</span><span class="token punctuation">(</span><span class="token string">"$&#123;rest.readTimeout:300000&#125;"</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token keyword">private</span> <span class="token keyword">int</span> readTimeout<span class="token punctuation">;</span> </pre></td></tr><tr><td data-num="11"></td><td><pre> </pre></td></tr><tr><td data-num="12"></td><td><pre> <span class="token annotation punctuation">@Value</span><span class="token punctuation">(</span><span class="token string">"$&#123;rest.connectionRequestTimeout:300000&#125;"</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token keyword">private</span> <span class="token keyword">int</span> connectionRequestTimeout<span class="token punctuation">;</span> </pre></td></tr><tr><td data-num="14"></td><td><pre> </pre></td></tr><tr><td data-num="15"></td><td><pre> <span class="token comment">/**</pre></td></tr><tr><td data-num="16"></td><td><pre> * 使用 HttpComponentsClientHttpRequestFactory 创建 http 请求(推荐)</pre></td></tr><tr><td data-num="17"></td><td><pre> */</span></pre></td></tr><tr><td data-num="18"></td><td><pre> <span class="token annotation punctuation">@Bean</span></pre></td></tr><tr><td data-num="19"></td><td><pre> <span class="token keyword">public</span> <span class="token class-name">RestTemplate</span> <span class="token function">restTemplate</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="20"></td><td><pre> <span class="token class-name">HttpComponentsClientHttpRequestFactory<Line truncated
|
||||
<figure class="highlight java"><figcaption data-lang="java"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token annotation punctuation">@Configuration</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">RestConfig</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="3"></td><td><pre> </pre></td></tr><tr><td data-num="4"></td><td><pre> </pre></td></tr><tr><td data-num="5"></td><td><pre> <span class="token comment">/**</pre></td></tr><tr><td data-num="6"></td><td><pre> * 高并发采用 HttpClient 连接池</pre></td></tr><tr><td data-num="7"></td><td><pre> */</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token annotation punctuation">@Bean</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token keyword">public</span> <span class="token class-name">RestTemplate</span> <span class="token function">restTemplate</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">RestTemplate</span><span class="token punctuation">(</span><span class="token function">httpRequestFactory</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="11"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="12"></td><td><pre> </pre></td></tr><tr><td data-num="13"></td><td><pre> </pre></td></tr><tr><td data-num="14"></td><td><pre> <span class="token annotation punctuation">@Bean</span></pre></td></tr><tr><td data-num="15"></td><td><pre> <span class="token keyword">public</span> <span class="token class-name">ClientHttpRequestFactory</span> <span class="token function">httpRequestFactory</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="16"></td><td><pre> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">HttpComponentsClientHttpRequestFactory</span><span class="token punctuation">(</span><span class="token function">httpClient</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="17"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="18"></td><td><pre> </pre></td></tr><tr><td data-num="19"></td><td><pre> </pre></td></tr><tr><td data-num="20"></td><td><pre> <span class=Line truncated
|
||||
<h6 id="第二种"><a class="anchor" href="#第二种">#</a> 第二种</h6>
|
||||
<p><figure class="highlight java"><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></pre></td><td class="code"><pre><span class="line"><span class="meta">@Configuration</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">RestConfig</span> &#123;</span><br><span class="line"> </span><br><span class="line"> <span class="comment">//60 * 1000</span></span><br><span class="line"> <span class="meta">@Value(&quot;$&#123;rest.connectTimeout:60000&#125;&quot;)</span></span><br><span class="line"> <span class="keyword">private</span> <span class="type">int</span> connectTimeout;</span><br><span class="line"> </span><br><span class="line"> <span class="comment">//5 * 60 * 1000</span></span><br><span class="line"> <span class="meta">@Value(&quot;$&#123;rest.readTimeout:300000&#125;&quot;)</span></span><br><span class="line"> <span class="keyword">private</span> <span class="type">int</span> readTimeout; </span><br><span class="line"> </span><br><span class="line"> <span class="meta">@Value(&quot;$&#123;rest.connectionRequestTimeout:300000&#125;&quot;)</span></span><br><span class="line"> <span class="keyword">private</span> <span class="type">int</span> connectionRequestTimeout; </span><br><span class="line"> </span><br><span class="line"> <span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 使用 HttpComponentsClientHttpRequestFactory创建http请求(推荐)</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"> <span class="meta">@Bean</span></span><br><span class="line"> <span class="keyword">public</span> RestTemplate <span class="title function_">restTemplate</span><span class="params">()</span> &#123;</span><br><span class="line"> <span class="type">HttpComponentsClientHttpRequestFactory</span> <span class="variable">httpRequestFactory</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">HttpComponentsClientHttpRequestFactory</span>();</span><br><span class="line"> httpRequestFactory.setConnectionRequestTimeout(connectionRequestTimeout);</span&gLine truncated
|
||||
<h6 id="第三种基于第二种升级"><a class="anchor" href="#第三种基于第二种升级">#</a> 第三种(基于第二种升级)</h6>
|
||||
<p><figure class="highlight java"><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></pre></td><td class="code"><pre><span class="line"><span class="meta">@Configuration</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">RestConfig</span> &#123;</span><br><span class="line"> </span><br><span class="line"> </span><br><span class="line"> <span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 高并发采用HttpClient连接池</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"> <span class="meta">@Bean</span></span><br><span class="line"> <span class="keyword">public</span> RestTemplate <span class="title function_">restTemplate</span><span class="params">()</span> &#123;</span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">new</span> <span class="title class_">RestTemplate</span>(httpRequestFactory());</span><br><span class="line"> &#125;</span><br><span class="line"> </span><br><span class="line"> </span><br><span class="line"> <span class="meta">@Bean</span></span><br><span class="line"> <span class="keyword">public</span> ClientHttpRequestFactory <span class="title function_">httpRequestFactory</span><span class="params">()</span> &#123;</span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">new</span> <span class="title class_">HttpComponentsClientHttpRequestFLine truncated
|
||||
]]></description>
|
||||
</item>
|
||||
<item>
|
||||
<guid isPermalink="true">https://hitoli.com/2023/05/25/%E8%A7%A3%E5%86%B3MySQL%E6%8A%A5only-full-group-by%E9%94%99%E8%AF%AF/</guid>
|
||||
@@ -426,9 +481,8 @@ Lombok supports: OpenJDK javac, ECJ</p>
|
||||
<h4 id="解决方法"><a class="anchor" href="#解决方法">#</a> 解决方法</h4>
|
||||
<ol>
|
||||
<li>重写 sql</li>
|
||||
<li>返回宽松模式</li>
|
||||
</ol>
|
||||
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment">#查询 sql_mode</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token keyword">select</span> @<span class="token variable">@GLOBAL.sql_mode</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token comment">#删除 ONLY_FULL_GROUP_BY</span></pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token comment">#设置 sql_mode</span></pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token keyword">set</span> @<span class="token variable">@GLOBAL.sql_mode</span><span class="token operator">=</span><span class="token string">'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'</span><span class="token punctuation">;</span></pre></td></tr></table></figure><ol start="3">
|
||||
<li>返回宽松模式<br />
|
||||
<figure class="highlight sql"><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></pre></td><td class="code"><pre><span class="line">#查询sql_mode</span><br><span class="line"><span class="keyword">select</span> @<span class="variable">@GLOBAL</span>.sql_mode;</span><br><span class="line">#删除ONLY_FULL_GROUP_BY</span><br><span class="line">#设置sql_mode</span><br><span class="line"><span class="keyword">set</span> @<span class="variable">@GLOBAL</span>.sql_mode<span class="operator">=</span><span class="string">&#x27;STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION&#x27;</span>;</span><br></pre></td></tr></table></figure></li>
|
||||
<li>使用聚合函数<br />
|
||||
如果某些特别的原因就是要查询未分组字段,但你又没空改代码,那么我们可使用聚合函数来规避这类错误,算是一种折中的方案了,语法改严谨了,代码又不需要大动。如 ANY_VALUE ()、MAX ()、MIN () 或者 GROUP_CONCAT () 等聚合函数。</li>
|
||||
</ol>
|
||||
@@ -447,13 +501,18 @@ Lombok supports: OpenJDK javac, ECJ</p>
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/05/25/778f34f5670d.png" alt="" /></p>
|
||||
<h4 id="方法"><a class="anchor" href="#方法">#</a> 方法</h4>
|
||||
<ol>
|
||||
<li>distinct 排除重复</li>
|
||||
<li>
|
||||
<p>distinct 排除重复<br />
|
||||
<figure class="highlight sql"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span></span><br><span class="line"> <span class="keyword">DISTINCT</span>(province_code),</span><br><span class="line"> province_name</span><br><span class="line"><span class="keyword">FROM</span></span><br><span class="line"> t_mip_base_area</span><br></pre></td></tr></table></figure></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>group by 根据身份编码分组<br />
|
||||
<figure class="highlight sql"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> </span><br><span class="line"> province_code,</span><br><span class="line"> any_value(province_name)</span><br><span class="line"><span class="keyword">FROM</span> t_mip_base_area</span><br><span class="line"><span class="keyword">GROUP</span> <span class="keyword">BY</span> province_code</span><br></pre></td></tr></table></figure></p>
|
||||
</li>
|
||||
</ol>
|
||||
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">SELECT</span></pre></td></tr><tr><td data-num="2"></td><td><pre> <span class="token keyword">DISTINCT</span><span class="token punctuation">(</span>province_code<span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> province_name</pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token keyword">FROM</span></pre></td></tr><tr><td data-num="5"></td><td><pre> t_mip_base_area</pre></td></tr></table></figure><ol start="2">
|
||||
<li>group by 根据身份编码分组</li>
|
||||
</ol>
|
||||
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">SELECT</span> </pre></td></tr><tr><td data-num="2"></td><td><pre> province_code<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> any_value<span class="token punctuation">(</span>province_name<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token keyword">FROM</span> t_mip_base_area</pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token keyword">GROUP</span> <span class="token keyword">BY</span> province_code</pre></td></tr></table></figure><h6 id="若这样写"><a class="anchor" href="#若这样写">#</a> 若这样写</h6>
|
||||
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">SELECT</span> </pre></td></tr><tr><td data-num="2"></td><td><pre> province_code<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> province_name</pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token keyword">FROM</span> t_mip_base_area</pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token keyword">GROUP</span> <span class="token keyword">BY</span> province_code</pre></td></tr></table></figure><p>则会报错<br />
|
||||
<h6 id="若这样写"><a class="anchor" href="#若这样写">#</a> 若这样写</h6>
|
||||
<p><figure class="highlight sql"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> </span><br><span class="line"> province_code,</span><br><span class="line"> province_name</span><br><span class="line"><span class="keyword">FROM</span> t_mip_base_area</span><br><span class="line"><span class="keyword">GROUP</span> <span class="keyword">BY</span> province_code</span><br></pre></td></tr></table></figure><br />
|
||||
则会报错<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/05/25/c57a8e811928.png" alt="" /></p>
|
||||
<h4 id="总结"><a class="anchor" href="#总结">#</a> 总结:</h4>
|
||||
<ol>
|
||||
@@ -481,7 +540,8 @@ Lombok supports: OpenJDK javac, ECJ</p>
|
||||
<category term="命令" scheme="https://hitoli.com/tags/%E5%91%BD%E4%BB%A4/" />
|
||||
<pubDate>Sun, 16 Apr 2023 13:32:00 +0800</pubDate>
|
||||
<description><![CDATA[ <h4 id="日常命令记录"><a class="anchor" href="#日常命令记录">#</a> 日常命令记录</h4>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment">#windows 系统修复</span></pre></td></tr><tr><td data-num="2"></td><td><pre>DISM.exe /Online /Cleanup-image /Scanhealth</pre></td></tr><tr><td data-num="3"></td><td><pre>DISM.exe /Online /Cleanup-image /Restorehealth </pre></td></tr><tr><td data-num="4"></td><td><pre>sfc /scannow</pre></td></tr><tr><td data-num="5"></td><td><pre></pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token comment">#windows 网络修复</span></pre></td></tr><tr><td data-num="7"></td><td><pre>netsh winsock reset</pre></td></tr><tr><td data-num="8"></td><td><pre></pre></td></tr><tr><td data-num="9"></td><td><pre><span class="token comment">#合并 ts 文件</span></pre></td></tr><tr><td data-num="10"></td><td><pre>copy /b c:<span class="token punctuation">\</span>Users<span class="token punctuation">\</span>hito<span class="token punctuation">\</span>Downloads<span class="token punctuation">\</span>*.ts d:<span class="token punctuation">\</span><span class="token number">50</span>.mp4</pre></td></tr><tr><td data-num="11"></td><td><pre></pre></td></tr><tr><td data-num="12"></td><td><pre><span class="token comment">#windows11 家庭版安装 Hyper-V(以下命令拷贝到 txt 文本后重命名为 bat 文件然后用管理员权限运行)</span></pre></td></tr><tr><td data-num="13"></td><td><pre><span class="token function">pushd</span> <span class="token string">"%~dp0"</span></pre></td></tr><tr><td data-num="14"></td><td><pre><span class="token function">dir</span> /b %SystemRoot%<span class="token punctuation">\</span>servicing<span class="token punctuation">\</span>Packages<span class="token punctuation">\</span>*Hyper-V*.mum <span class="token operator">>></span> hyper-v.txt</pre></td></tr><tr><td data-num="15"></td><td><pre><span class="token keyword">for</span> /f %%i <span class="token keyword">in</span> <span class="token punctuation">(</span><span class="token string">'findstr /i . hyper-v.txt 2^>nul'</span><span class="token punctuation">)</span> <span class="token keyword">do</span> dism /online /norestart /add-package:<span class="token string">"%SystemRoot%\servicing\Packages\%%i"</span></pre></td></tr><tr><td data-num="16"></td><td><pre>del hyper-v.txt</pre></td></tr><tr><td data-num="17"></td><td><pre>Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL</pre></td></tr><tr><td data-num="18"></td><td><pre></pre></td></tr><tr><td data-num="19"></td><td><pre><span class="token comment">#mysql 查看索引使用情况</span></pre></td></tr><tr><td data-num="20"></td><td><pre>EXPLAIN SELECT A.XXX, B.XXX FROM TABLE1 A, TABLE2 B ON A.XXX <span class="token operator">=</span> B.XXX<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="21"></td><td><pre></pre></td></tr><tr><td data-num="22"></td><td><pre><span class="token comment">#mysql 使用触发器插入数据自动生产 uuid 主键</span></pre></td></tr><tr><td data-num="23"></td><td><pre>inLine truncated
|
||||
<p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#windows系统修复</span></span><br><span class="line">DISM.exe /Online /Cleanup-image /Scanhealth</span><br><span class="line">DISM.exe /Online /Cleanup-image /Restorehealth </span><br><span class="line">sfc /scannow</span><br><span class="line"></span><br><span class="line"><span class="comment">#windows网络修复</span></span><br><span class="line">netsh winsock reset</span><br><span class="line"></span><br><span class="line"><span class="comment">#合并ts文件</span></span><br><span class="line">copy /b c:\Users\hito\Downloads\*.ts d:\50.mp4</span><br><span class="line"></span><br><span class="line"><span class="comment">#windows11家庭版安装Hyper-V(以下命令拷贝到txt文本后重命名为bat文件然后用管理员权限运行)</span></span><br><span class="line"><span class="built_in">pushd</span> <span class="string">&quot;%~dp0&quot;</span></span><br><span class="line"><span class="built_in">dir</span> /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum &gt;&gt; hyper-v.txt</span><br><span class="line"><span class="keyword">for</span> /f %%i <span class="keyword">in</span> (<span class="string">&#x27;findstr /i . hyper-v.txt 2^&gt;nul&#x27;</span>) <span class="keyword">do</span> dism /online /norestart /add-package:<span class="string">&quot;%SystemRoot%\servicing\Packages\%%i&quot;</span></span><br><span class="line">del hyper-v.txt</span><br><span class="line">Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL</span><br><span class="line"></span><br><span class="line"><span class="comment">#mysql查看索引使用情况</span></span><br><span class="line">EXPLAIN SELECT A.XXX, B.XXX FROM TABLE1 A, TABLE2 B ON A.XXX = B.XXX;</span><br><span class="line"></span><br><span class="line"><span class="comment">#mysql使用触发器插入Line truncated
|
||||
]]></description>
|
||||
</item>
|
||||
<item>
|
||||
<guid isPermalink="true">https://hitoli.com/2023/04/16/K8S%E9%A1%B9%E7%9B%AE%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2%E6%AD%A5%E9%AA%A4/</guid>
|
||||
@@ -498,23 +558,27 @@ Lombok supports: OpenJDK javac, ECJ</p>
|
||||
<li>本机安装 Docker Desktop Installer.exe (已安装可忽略)</li>
|
||||
<li>安装成功后,打开设置<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/ab557bae79bf.png" alt="" /></li>
|
||||
<li>选择 Docker Engine,粘贴进如下配置后重启</li>
|
||||
</ol>
|
||||
<figure class="highlight json"><figcaption data-lang="JSON"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre> <span class="token property">"builder"</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="3"></td><td><pre> <span class="token property">"gc"</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token property">"defaultKeepStorage"</span><span class="token operator">:</span> <span class="token string">"20GB"</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="5"></td><td><pre> <span class="token property">"enabled"</span><span class="token operator">:</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token property">"experimental"</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token property">"features"</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token property">"buildkit"</span><span class="token operator">:</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="11"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="12"></td><td><pre> <span class="token property">"insecure-registries"</span><span class="token operator">:</span> <span class="token punctuation">[</span></pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token string">"http://192.168.86.117"</span></pre></td></tr><tr><td data-num="14"></td><td><pre> <span class="token punctuation">]</span></pre></td></tr><tr><td data-num="15"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/04/16/93533dd8e043.png" alt="" /><br />
|
||||
5. 本项目 clean、compile、package<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/c14b2405a234.jpg" alt="" /><br />
|
||||
6. 添加一个 DockerFile 的启动配置<br />
|
||||
<li>选择 Docker Engine,粘贴进如下配置后重启<br />
|
||||
<figure class="highlight json"><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></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line"> <span class="attr">&quot;builder&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line"> <span class="attr">&quot;gc&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line"> <span class="attr">&quot;defaultKeepStorage&quot;</span><span class="punctuation">:</span> <span class="string">&quot;20GB&quot;</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">&quot;enabled&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"> <span class="punctuation">&#125;</span></span><br><span class="line"> <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">&quot;experimental&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">&quot;features&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line"> <span class="attr">&quot;buildkit&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"> <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">&quot;insecure-registries&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line"> <span class="string">&quot;http://192.168.86.117&quot;</span></span><br><span class="line"> <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/93533dd8e043.png" alt="" /></li>
|
||||
<li>本项目 clean、compile、package<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/c14b2405a234.jpg" alt="" /></li>
|
||||
<li>添加一个 DockerFile 的启动配置<br />
|
||||
192.168.86.117/zhsl/ys-zhslsgcgl:0.0.1<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/66f152c95d6e.png" alt="" /><br />
|
||||
7. 保证代码是最新的之后,运行上步的配置,会把刚才 install 生成的 jar 包上传到本机 Docker 生成一个本机 docker 镜像<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/4b915691271f.png" alt="" /><br />
|
||||
8. 命令行登录本地的 KUBESPHERE,把本机 docker 镜像上传到 KUBESPHERE</p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">docker</span> login <span class="token number">192.168</span>.86.117</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/04/16/d1acb4e8e336.png" alt="" /></p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">docker</span> images命令也可以看到本机docker镜像</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/04/16/2b22d19f4649.png" alt="" /></p>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>把本机docker镜像上传到KUBESPHERE</pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token function">docker</span> push <span class="token number">192.168</span>.86.117/zhsl/ys-zhslsgcgl:0.0.1</pre></td></tr></table></figure><p><img data-src="https://nas.hitoli.com:18014/images/2023/04/16/f1d792024e54.png" alt="" /><br />
|
||||
9. 网页登录本地的 KUBESPHERE。<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/66f152c95d6e.png" alt="" /></li>
|
||||
<li>保证代码是最新的之后,运行上步的配置,会把刚才 install 生成的 jar 包上传到本机 Docker 生成一个本机 docker 镜像<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/4b915691271f.png" alt="" /></li>
|
||||
<li>命令行登录本地的 KUBESPHERE,把本机 docker 镜像上传到 KUBESPHERE<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker login 192.168.86.117</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/d1acb4e8e336.png" alt="" /><br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker images命令也可以看到本机docker镜像</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/2b22d19f4649.png" alt="" /><br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">把本机docker镜像上传到KUBESPHERE</span><br><span class="line">docker push 192.168.86.117/zhsl/ys-zhslsgcgl:0.0.1</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/f1d792024e54.png" alt="" /></li>
|
||||
<li>网页登录本地的 KUBESPHERE。<br />
|
||||
<span class="exturl" data-url="aHR0cDovLzE5Mi4xNjguODYuMTE3OjMwODgwLyVFRiVCQyU4QyVFOCVCRiU5QiVFNSU4NSVBNSVFMiU4MCU5QyVFNSVCNyVBNSVFNCVCRCU5QyVFOCVCNCU5RiVFOCVCRCVCRCVFMiU4MCU5RCVFNiU4OSVCRSVFNSU4OCVCMCVFNSU4OCU5QSVFNCVCOCU4QSVFNCVCQyVBMERvY2tlciVFNiU5QyU4RCVFNSU4QSVBMSVFOSU5NSU5QyVFNSU4MyU4RiVFRiVCQyU4QyVFNSVCOSVCNiVFNSU5MCVBRiVFNSU4QSVBOCVFMyU4MCU4Mg==">http://192.168.86.117:30880/,进入 “工作负载” 找到刚上传 Docker 服务镜像,并启动。</span><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/fcd7e6459555.png" alt="" /></p>
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/fcd7e6459555.png" alt="" /></li>
|
||||
</ol>
|
||||
<h4 id="通过导出镜像部署"><a class="anchor" href="#通过导出镜像部署">#</a> 通过导出镜像部署</h4>
|
||||
<ol>
|
||||
<li>docker images 查看要导出的镜像 id<br />
|
||||
@@ -545,70 +609,56 @@ Lombok supports: OpenJDK javac, ECJ</p>
|
||||
<li>执行 http://192.168.X.X:8080/cgi-bin/telnetenable.cgi?key=54XXXXXXXXC8&amp;telnetenable=1</li>
|
||||
<li>用 telent 命令登陆<br />
|
||||
用户名:telecom 密码:nE7jA%5m</li>
|
||||
<li>获取 telnet 用户名密码</li>
|
||||
<li>获取 telnet 用户名密码<br />
|
||||
<figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">获取telnet的用户名</span><br><span class="line">cfg_cmd get InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetUserName</span><br><span class="line">获取telnet的密码</span><br><span class="line">cfg_cmd get InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetPassword</span><br></pre></td></tr></table></figure></li>
|
||||
<li>转为 root 用户<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">su</span><br><span class="line">密码:Fh@XXXXXX(X为mac地址的后6位)</span><br></pre></td></tr></table></figure></li>
|
||||
<li>获取 web 超级密码<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cfg_cmd get InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Password | grep <span class="string">&#x27;get success&#x27;</span> | <span class="built_in">cut</span> -d = -f 2</span><br></pre></td></tr></table></figure><br />
|
||||
7、访问 http://192.168.1.1:8080/html/logoffaccount.html 把隐藏用户打开,其它选项改为可修改</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>获取telnet的用户名</pre></td></tr><tr><td data-num="2"></td><td><pre>cfg_cmd get InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetUserName</pre></td></tr><tr><td data-num="3"></td><td><pre>获取telnet的密码</pre></td></tr><tr><td data-num="4"></td><td><pre>cfg_cmd get InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetPassword</pre></td></tr></table></figure><ol start="5">
|
||||
<li>转为 root 用户</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">su</span></pre></td></tr><tr><td data-num="2"></td><td><pre>密码:Fh@XXXXXX<span class="token punctuation">(</span>X为mac地址的后6位<span class="token punctuation">)</span></pre></td></tr></table></figure><ol start="6">
|
||||
<li>获取 web 超级密码</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd get InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Password <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">'get success'</span> <span class="token operator">|</span> <span class="token function">cut</span> <span class="token parameter variable">-d</span> <span class="token operator">=</span> <span class="token parameter variable">-f</span> <span class="token number">2</span></pre></td></tr></table></figure><p>7、访问 http://192.168.1.1:8080/html/logoffaccount.html 把隐藏用户打开,其它选项改为可修改</p>
|
||||
<p>两种命令模式:</p>
|
||||
<h4 id="工厂模式"><a class="anchor" href="#工厂模式">#</a> 工厂模式</h4>
|
||||
<ol>
|
||||
<li>进入工厂模式</li>
|
||||
<li>进入工厂模式<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">load_cli factory</span><br></pre></td></tr></table></figure></li>
|
||||
<li>显示管理员密码<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">show admin_pwd</span><br></pre></td></tr></table></figure></li>
|
||||
<li>显示所有命令<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">?</span><br></pre></td></tr></table></figure></li>
|
||||
<li>显示所有 show 命令<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">show ?</span><br></pre></td></tr></table></figure></li>
|
||||
<li>显示所有 set 命令<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">set</span> ?</span><br></pre></td></tr></table></figure></li>
|
||||
<li>显示所有信息<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">show allinfo</span><br></pre></td></tr></table></figure></li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>load_cli factory</pre></td></tr></table></figure><ol start="2">
|
||||
<li>显示管理员密码</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>show admin_pwd</pre></td></tr></table></figure><ol start="3">
|
||||
<li>显示所有命令</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>?</pre></td></tr></table></figure><ol start="4">
|
||||
<li>显示所有 show 命令</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>show ?</pre></td></tr></table></figure><ol start="5">
|
||||
<li>显示所有 set 命令</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token builtin class-name">set</span> ?</pre></td></tr></table></figure><ol start="6">
|
||||
<li>显示所有信息</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>show allinfo</pre></td></tr></table></figure><h4 id="cfg_cmd命令模式"><a class="anchor" href="#cfg_cmd命令模式">#</a> cfg_cmd 命令模式</h4>
|
||||
<h4 id="cfg_cmd命令模式"><a class="anchor" href="#cfg_cmd命令模式">#</a> cfg_cmd 命令模式</h4>
|
||||
<ol>
|
||||
<li>开启 TELNET</li>
|
||||
<li>开启 TELNET<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetEnable 1</span><br><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetUserName 用户名</span><br><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetPassword 密码</span><br></pre></td></tr></table></figure></li>
|
||||
<li>打开 FTP 功能<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.FtpEnable 1</span><br><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.FtpUserName 用户名</span><br><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.FtpPassword 密码</span><br></pre></td></tr></table></figure></li>
|
||||
<li>获取 LOID<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cfg_cmd get InternetGatewayDevice.X_CT-COM_UserInfo.UserName |grep <span class="string">&#x27;value&#x27;</span> |<span class="built_in">cut</span> -d <span class="string">&#x27;=&#x27;</span> -f 2</span><br></pre></td></tr></table></figure></li>
|
||||
<li>TR069<br />
|
||||
<figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">cfg_cmd get InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.Enable</span><br><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.Enable 0 <span class="comment">#0禁用,1启用</span></span><br><span class="line">cfg_cmd get InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.VLANIDMark</span><br><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.VLANIDMark 99 <span class="comment">#默认46</span></span><br><span class="line">cfg_cmd get InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.Mode</span><br><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.Mode 2 <span class="comment">#默认2</span></span><br><span class="line">cfg_cmd get InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_AccessControl.Enabled</span><br><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_AccessControl.Enabled 0 <span class="comment">#0禁用,1启用</span></span><br><span class="line">cfg_cmd get InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.Enable</span><br><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.Enable 0 <span class="comment">#0禁用,1启用</span></span><br></pre></td></tr></table></figure></li>
|
||||
<li>关闭 TR069 中间件<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_MiddlewareMgt.Tr069Enable 0</span><br></pre></td></tr></table></figure></li>
|
||||
<li>删除 1_TR069_R_VID_46<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.IP_Routed=<span class="string">&#x27;&#x27;</span></span><br></pre></td></tr></table></figure></li>
|
||||
<li>查看设备目前的连接数<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cfg_cmd get InternetGatewayDevice.Services.X_CT-COM_MWBAND.TotalTerminalNumber</span><br></pre></td></tr></table></figure></li>
|
||||
<li>设置设备连接数<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cfg_cmd <span class="built_in">set</span> InternetGatewayDevice.Services.X_CT-COM_MWBAND.TotalTerminalNumber 255</span><br></pre></td></tr></table></figure></li>
|
||||
<li>用户信息<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cfg_cmd get InternetGatewayDevice.X_CT-COM_UserInfo.UserName</span><br></pre></td></tr></table></figure></li>
|
||||
<li>获取 cfg_cmd 帮助<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cfg_cmd <span class="built_in">help</span></span><br></pre></td></tr></table></figure></li>
|
||||
<li>获取指定节点后的节点<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cfg_cmd shownode InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1. [0|1] </span><br><span class="line">(如cfg_cmd shownode InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1. [0])</span><br></pre></td></tr></table></figure></li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetEnable <span class="token number">1</span></pre></td></tr><tr><td data-num="2"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetUserName 用户名</pre></td></tr><tr><td data-num="3"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetPassword 密码</pre></td></tr></table></figure><ol start="2">
|
||||
<li>打开 FTP 功能</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.FtpEnable <span class="token number">1</span></pre></td></tr><tr><td data-num="2"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.FtpUserName 用户名</pre></td></tr><tr><td data-num="3"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.FtpPassword 密码</pre></td></tr></table></figure><ol start="3">
|
||||
<li>获取 LOID</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd get InternetGatewayDevice.X_CT-COM_UserInfo.UserName <span class="token operator">|</span><span class="token function">grep</span> <span class="token string">'value'</span> <span class="token operator">|</span><span class="token function">cut</span> <span class="token parameter variable">-d</span> <span class="token string">'='</span> <span class="token parameter variable">-f</span> <span class="token number">2</span></pre></td></tr></table></figure><ol start="4">
|
||||
<li>TR069</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd get InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.Enable</pre></td></tr><tr><td data-num="2"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.Enable <span class="token number">0</span> <span class="token comment">#0 禁用,1 启用</span></pre></td></tr><tr><td data-num="3"></td><td><pre>cfg_cmd get InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.VLANIDMark</pre></td></tr><tr><td data-num="4"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.VLANIDMark <span class="token number">99</span> <span class="token comment">#默认 46</span></pre></td></tr><tr><td data-num="5"></td><td><pre>cfg_cmd get InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.Mode</pre></td></tr><tr><td data-num="6"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.Mode <span class="token number">2</span> <span class="token comment">#默认 2</span></pre></td></tr><tr><td data-num="7"></td><td><pre>cfg_cmd get InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_AccessControl.Enabled</pre></td></tr><tr><td data-num="8"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_AccessControl.Enabled <span class="token number">0</span> <span class="token comment">#0 禁用,1 启用</span></pre></td></tr><tr><td data-num="9"></td><td><pre>cfg_cmd get InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.Enable</pre></td></tr><tr><td data-num="10"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.Enable <span class="token number">0</span> <span class="token comment">#0 禁用,1 启用</span></pre></td></tr></table></figure><ol start="5">
|
||||
<li>关闭 TR069 中间件</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_MiddlewareMgt.Tr069Enable <span class="token number">0</span></pre></td></tr></table></figure><ol start="6">
|
||||
<li>删除 1_TR069_R_VID_46</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.X_CT-COM_WANEponLinkConfig.IP_Routed<span class="token operator">=</span><span class="token string">''</span></pre></td></tr></table></figure><ol start="7">
|
||||
<li>查看设备目前的连接数</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd get InternetGatewayDevice.Services.X_CT-COM_MWBAND.TotalTerminalNumber</pre></td></tr></table></figure><ol start="8">
|
||||
<li>设置设备连接数</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd <span class="token builtin class-name">set</span> InternetGatewayDevice.Services.X_CT-COM_MWBAND.TotalTerminalNumber <span class="token number">255</span></pre></td></tr></table></figure><ol start="9">
|
||||
<li>用户信息</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd get InternetGatewayDevice.X_CT-COM_UserInfo.UserName</pre></td></tr></table></figure><ol start="10">
|
||||
<li>获取 cfg_cmd 帮助</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd <span class="token builtin class-name">help</span></pre></td></tr></table></figure><ol start="11">
|
||||
<li>获取指定节点后的节点</li>
|
||||
</ol>
|
||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>cfg_cmd shownode InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1. <span class="token punctuation">[</span><span class="token number">0</span><span class="token operator">|</span><span class="token number">1</span><span class="token punctuation">]</span> </pre></td></tr><tr><td data-num="2"></td><td><pre>(如cfg_cmd shownode InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1. <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>)</pre></td></tr></table></figure> ]]></description>
|
||||
]]></description>
|
||||
</item>
|
||||
<item>
|
||||
<guid isPermalink="true">https://hitoli.com/2023/02/18/%E4%BF%AE%E6%94%B9IntellIJ-IDE%E8%83%8C%E6%99%AF%E8%89%B2%E5%92%8C%E5%AD%97%E4%BD%93%E5%A4%A7%E5%B0%8F/</guid>
|
||||
@@ -664,7 +714,8 @@ Lombok supports: OpenJDK javac, ECJ</p>
|
||||
<p>使用指定数据方式得到的线条总是不能达到想要的效果,一是阶梯线在价格发生变化的点存在倾斜,二是高低价的线很难完美显示,所以只能自己动手画了。代码仅供参考,如有错误的地方请指正!<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/01/31/ee3c75b472c5869794e205747703d888.png" alt="ee3c75b472c5869794e205747703d888.png" /></p>
|
||||
<h4 id="模版代码"><a class="anchor" href="#模版代码">#</a> 模版代码</h4>
|
||||
<figure class="highlight js"><figcaption data-lang="JavaScript"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">this</span><span class="token punctuation">.</span>chart<span class="token punctuation">.</span><span class="token function">addTechnicalIndicatorTemplate</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'BandHighLowInd'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> <span class="token literal-property property">shortName</span><span class="token operator">:</span> <span class="token string">'波段高低价'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token literal-property property">calcParams</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">&#123;</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">10</span> <span class="token punctuation">&#125;</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="5"></td><td><pre> <span class="token literal-property property">precision</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token literal-property property">plots</span><span class="token operator">:</span> <span class="token punctuation">[</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token punctuation">&#123;</span> <span class="token literal-property property">key</span><span class="token operator">:</span> <span class="token string">'high'</span><span class="token punctuation">,</span> <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token string">'高: '</span><span class="token punctuation">,</span> <span class="token function-variable function">color</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token parameter">data<span class="token punctuation">,</span> options</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span> <span class="token keyword">return</span> options<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token punctuation">&#125;</span> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token punctuation">&#123;</span> <span class="token literal-property property">key</span><span class="token operator">:</span> <span class="token string">'low'</span><spaLine truncated
|
||||
<p><figure class="highlight js"><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><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class=&#Line truncated
|
||||
]]></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
Reference in new issue
Block a user