708 lines
517 KiB
XML
708 lines
517 KiB
XML
<?xml version="1.0"?>
|
||
<rss version="2.0">
|
||
<channel>
|
||
<title>涛声依旧</title>
|
||
<subtitle>天下事有难易乎?为之,则难者亦易矣</subtitle>
|
||
<icon>https://hitoli.com/images/favicon.ico</icon>
|
||
<link>https://hitoli.com</link>
|
||
<author>
|
||
<name>Hito Li</name>
|
||
</author>
|
||
<description>天生我材必有用</description>
|
||
<language>zh-CN</language>
|
||
<pubDate>Sun, 16 Apr 2023 13:32:00 +0800</pubDate>
|
||
<lastBuildDate>Sun, 16 Apr 2023 13:32:00 +0800</lastBuildDate>
|
||
<category term="hito" />
|
||
<category term="無言" />
|
||
<category term="博客" />
|
||
<category term="公告栏" />
|
||
<category term="笔记" />
|
||
<category term="心得体会" />
|
||
<category term="技术分享" />
|
||
<category term="踩坑" />
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2023/04/16/%E5%91%BD%E4%BB%A4%E5%A4%A7%E6%9D%82%E7%83%A9/</guid>
|
||
<title>命令大杂烩</title>
|
||
<link>https://hitoli.com/2023/04/16/%E5%91%BD%E4%BB%A4%E5%A4%A7%E6%9D%82%E7%83%A9/</link>
|
||
<category term="生活" scheme="https://hitoli.com/categories/%E7%94%9F%E6%B4%BB/" />
|
||
<category term="技术分享" scheme="https://hitoli.com/categories/%E7%94%9F%E6%B4%BB/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/" />
|
||
<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></table></figure> ]]></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>
|
||
<title>K8S项目本地部署步骤</title>
|
||
<link>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/</link>
|
||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||
<category term="项目部署" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/" />
|
||
<category term="项目部署" scheme="https://hitoli.com/tags/%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/" />
|
||
<category term="K8S" scheme="https://hitoli.com/tags/K8S/" />
|
||
<pubDate>Sun, 16 Apr 2023 12:39:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="本地部署步骤"><a class="anchor" href="#本地部署步骤">#</a> 本地部署步骤</h4>
|
||
<ol>
|
||
<li>本机安装 wsl_update_x64.msi (已安装可忽略)</li>
|
||
<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 />
|
||
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 />
|
||
<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>
|
||
<h4 id="通过导出镜像部署"><a class="anchor" href="#通过导出镜像部署">#</a> 通过导出镜像部署</h4>
|
||
<ol>
|
||
<li>docker images 查看要导出的镜像 id<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/1edd4bacf81c.png" alt="" /></li>
|
||
<li>docker save 58310865054f &gt; szy.tar 导出到用户目录下 C:\Users\hito</li>
|
||
<li>docker load -i szy.tar 载入镜像<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/32154204eff2.png" alt="" /></li>
|
||
<li>docker tag 58310865054f harbor.zhsl.local:30881/zhsl/ys-zhslszy:0.0.1 标记镜像</li>
|
||
<li>docker push harbor.zhsl.local:30881/zhsl/ys-zhslszy:0.0.1 上传镜像</li>
|
||
</ol>
|
||
]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2023/04/16/%E7%83%BD%E7%81%AB10G-ONU%E5%A4%A9%E7%BF%BC%E7%BD%91%E5%85%B34-0%E7%A0%B4%E8%A7%A3%EF%BC%88HG5143F/</guid>
|
||
<title>烽火10G-ONU天翼网关4.0破解(HG5143F)</title>
|
||
<link>https://hitoli.com/2023/04/16/%E7%83%BD%E7%81%AB10G-ONU%E5%A4%A9%E7%BF%BC%E7%BD%91%E5%85%B34-0%E7%A0%B4%E8%A7%A3%EF%BC%88HG5143F/</link>
|
||
<category term="生活" scheme="https://hitoli.com/categories/%E7%94%9F%E6%B4%BB/" />
|
||
<category term="技术分享" scheme="https://hitoli.com/categories/%E7%94%9F%E6%B4%BB/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/" />
|
||
<category term="烽火" scheme="https://hitoli.com/tags/%E7%83%BD%E7%81%AB/" />
|
||
<category term="天翼网关" scheme="https://hitoli.com/tags/%E5%A4%A9%E7%BF%BC%E7%BD%91%E5%85%B3/" />
|
||
<category term="破解" scheme="https://hitoli.com/tags/%E7%A0%B4%E8%A7%A3/" />
|
||
<category term="HG5143F" scheme="https://hitoli.com/tags/HG5143F/" />
|
||
<pubDate>Sun, 16 Apr 2023 11:03:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="开启telent"><a class="anchor" href="#开启telent">#</a> 开启 telent</h4>
|
||
<p>注意:54XXXXXXXXC8 为光猫背后 ONU MAC:54-XX-XX-XX-XX-C8</p>
|
||
<ol>
|
||
<li>打开 http://192.168.X.X:8080 (网关地址) 使用密码登陆</li>
|
||
<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>
|
||
</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>
|
||
</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>
|
||
<ol>
|
||
<li>开启 TELNET</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>
|
||
</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>
|
||
<title>修改IntellIJ IDE背景色和字体大小</title>
|
||
<link>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/</link>
|
||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||
<category term="IDE" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/IDE/" />
|
||
<category term="IDE" scheme="https://hitoli.com/tags/IDE/" />
|
||
<category term="intellIJ" scheme="https://hitoli.com/tags/intellIJ/" />
|
||
<pubDate>Sat, 18 Feb 2023 17:42:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||
<p>网上搜索了几个修改 IDE 背景色和字体大小的方法,记录一下方便以后查看。</p>
|
||
<h4 id="操作截图"><a class="anchor" href="#操作截图">#</a> 操作截图</h4>
|
||
<ol>
|
||
<li>
|
||
<p>修改代码区颜色<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2023/02/18/bb050e7e4c3b3ff2968b0a1be311d31f.png" alt="bb050e7e4c3b3ff2968b0a1be311d31f.png" /></p>
|
||
</li>
|
||
<li>
|
||
<p>修改代码区字体大小<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2023/02/18/af92e69249a74978f56a5b2f8bf792a8.png" alt="af92e69249a74978f56a5b2f8bf792a8.png" /></p>
|
||
</li>
|
||
<li>
|
||
<p>修改控制台背景色<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2023/02/18/80dd5d82bfc6d0380ce34a590d8beeb4.png" alt="80dd5d82bfc6d0380ce34a590d8beeb4.png" /></p>
|
||
</li>
|
||
<li>
|
||
<p>修改控制台字体大小<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2023/02/18/86bd97d1937b77faa27d31db7c2abb91.png" alt="86bd97d1937b77faa27d31db7c2abb91.png" /></p>
|
||
</li>
|
||
<li>
|
||
<p>修改左侧背景色<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2023/02/18/4875f8006144733c0e6710a2b04bc2be.jpg" alt="4875f8006144733c0e6710a2b04bc2be.jpg" /></p>
|
||
</li>
|
||
<li>
|
||
<p>修改 UI 字体大小<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2023/03/02/UI.png" alt="UI.png" /></p>
|
||
</li>
|
||
</ol>
|
||
]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2023/01/31/KLineChart%E7%94%BB%E6%B3%A2%E6%AE%B5%E9%AB%98%E4%BD%8E%E4%BB%B7%E5%9B%BE/</guid>
|
||
<title>KLineChart画波段高低价图</title>
|
||
<link>https://hitoli.com/2023/01/31/KLineChart%E7%94%BB%E6%B3%A2%E6%AE%B5%E9%AB%98%E4%BD%8E%E4%BB%B7%E5%9B%BE/</link>
|
||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||
<category term="KLineChart" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/KLineChart/" />
|
||
<category term="KLineChart" scheme="https://hitoli.com/tags/KLineChart/" />
|
||
<category term="K线" scheme="https://hitoli.com/tags/K%E7%BA%BF/" />
|
||
<category term="自定义指标" scheme="https://hitoli.com/tags/%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8C%87%E6%A0%87/" />
|
||
<pubDate>Tue, 31 Jan 2023 09:44:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||
<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><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">1</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="9"></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">'highLow'</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">2</span><span class="token punctuation">]</span> <span class="token punctuation">&#125;</span> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="11"></td><td><pre> <span class="token function-variable function">calcTechnicalIndicator</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token parameter">dataList<span class="token punctuation">,</span> <span class="token punctuation">&#123;</span> params <span class="token punctuation">&#125;</span></span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="12"></td><td><pre> <span class="token keyword">let</span> compareKlineSize <span class="token operator">=</span> params<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token comment">// 取前后 k 的范围</span></pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token keyword">let</span> highs <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="14"></td><td><pre> <span class="token keyword">let</span> lows <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="15"></td><td><pre> <span class="token keyword">let</span> highLows <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="16"></td><td><pre> <span class="token keyword">let</span> findHigh <span class="token comment">// 高低价当前查找标识</span></pre></td></tr><tr><td data-num="17"></td><td><pre> dataList<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">kLineData<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="18"></td><td><pre> <span class="token keyword">let</span> frontIndex <span class="token operator">=</span> i <span class="token operator">-</span> compareKlineSize</pre></td></tr><tr><td data-num="19"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>frontIndex <span class="token operator">&lt;=</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="20"></td><td><pre> frontIndex <span class="token operator">=</span> <span class="token number">0</span></pre></td></tr><tr><td data-num="21"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="22"></td><td><pre> <span class="token keyword">let</span> frontDatas <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="23"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>frontIndex <span class="token operator">&lt;</span> i<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="24"></td><td><pre> frontDatas <span class="token operator">=</span> dataList<span class="token punctuation">.</span><span class="token function">slice</span><span class="token punctuation">(</span>frontIndex<span class="token punctuation">,</span> i<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="25"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="26"></td><td><pre> <span class="token keyword">let</span> afterIndex <span class="token operator">=</span> i <span class="token operator">+</span> compareKlineSize <span class="token operator">+</span> <span class="token number">1</span></pre></td></tr><tr><td data-num="27"></td><td><pre> <span class="token keyword">let</span> afterDatas <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="28"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">&lt;</span> dataList<span class="token punctuation">.</span>length <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><tr><td data-num="29"></td><td><pre> afterDatas <span class="token operator">=</span> dataList<span class="token punctuation">.</span><span class="token function">slice</span><span class="token punctuation">(</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">,</span> afterIndex<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="30"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="31"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>frontDatas<span class="token punctuation">.</span>length <span class="token operator">===</span> compareKlineSize <span class="token operator">&amp;&amp;</span> afterDatas<span class="token punctuation">.</span>length <span class="token operator">===</span> compareKlineSize<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 前后 K 线数据必须都找到要比较的条数</span></pre></td></tr><tr><td data-num="32"></td><td><pre> <span class="token keyword">let</span> high <span class="token operator">=</span> <span class="token keyword">null</span></pre></td></tr><tr><td data-num="33"></td><td><pre> <span class="token keyword">let</span> low <span class="token operator">=</span> <span class="token keyword">null</span></pre></td></tr><tr><td data-num="34"></td><td><pre> frontDatas<span class="token punctuation">.</span><span class="token function">concat</span><span class="token punctuation">(</span>afterDatas<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">kLineData<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 找出前后 k 线中的最高和最低价</span></pre></td></tr><tr><td data-num="35"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>high <span class="token operator">===</span> <span class="token keyword">null</span> <span class="token operator">||</span> kLineData<span class="token punctuation">.</span>high <span class="token operator">></span> high<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="36"></td><td><pre> high <span class="token operator">=</span> kLineData<span class="token punctuation">.</span>high</pre></td></tr><tr><td data-num="37"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="38"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>low <span class="token operator">===</span> <span class="token keyword">null</span> <span class="token operator">||</span> kLineData<span class="token punctuation">.</span>low <span class="token operator">&lt;</span> low<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="39"></td><td><pre> low <span class="token operator">=</span> kLineData<span class="token punctuation">.</span>low</pre></td></tr><tr><td data-num="40"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="41"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="42"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>kLineData<span class="token punctuation">.</span>high <span class="token operator">></span> high<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 当前 k 的高大于前后 k 中找出的高,则放入高价集合中</span></pre></td></tr><tr><td data-num="43"></td><td><pre> highs<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="44"></td><td><pre> <span class="token literal-property property">time</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>timestamp<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="45"></td><td><pre> <span class="token literal-property property">value</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>high<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="46"></td><td><pre> <span class="token literal-property property">index</span><span class="token operator">:</span> i</pre></td></tr><tr><td data-num="47"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="48"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">isNotEmpty</span><span class="token punctuation">(</span>findHigh<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="49"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>findHigh <span class="token operator">&amp;&amp;</span> highLows<span class="token punctuation">[</span>highLows<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span>value <span class="token operator">!==</span> kLineData<span class="token punctuation">.</span>high<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="50"></td><td><pre> highLows<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="51"></td><td><pre> <span class="token literal-property property">time</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>timestamp<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="52"></td><td><pre> <span class="token literal-property property">value</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>high<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="53"></td><td><pre> <span class="token literal-property property">index</span><span class="token operator">:</span> i</pre></td></tr><tr><td data-num="54"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="55"></td><td><pre> findHigh <span class="token operator">=</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="56"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="57"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="58"></td><td><pre> highLows<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="59"></td><td><pre> <span class="token literal-property property">time</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>timestamp<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="60"></td><td><pre> <span class="token literal-property property">value</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>high<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="61"></td><td><pre> <span class="token literal-property property">index</span><span class="token operator">:</span> i</pre></td></tr><tr><td data-num="62"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="63"></td><td><pre> findHigh <span class="token operator">=</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="64"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="65"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="66"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>kLineData<span class="token punctuation">.</span>low <span class="token operator">&lt;</span> low<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 当前 k 的低小于前后 k 中找出的低,则放入低价集合中</span></pre></td></tr><tr><td data-num="67"></td><td><pre> lows<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="68"></td><td><pre> <span class="token literal-property property">time</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>timestamp<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="69"></td><td><pre> <span class="token literal-property property">value</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>low<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="70"></td><td><pre> <span class="token literal-property property">index</span><span class="token operator">:</span> i</pre></td></tr><tr><td data-num="71"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="72"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">isNotEmpty</span><span class="token punctuation">(</span>findHigh<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="73"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>findHigh <span class="token operator">&amp;&amp;</span> highLows<span class="token punctuation">[</span>highLows<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span>value <span class="token operator">!==</span> kLineData<span class="token punctuation">.</span>low<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="74"></td><td><pre> highLows<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="75"></td><td><pre> <span class="token literal-property property">time</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>timestamp<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="76"></td><td><pre> <span class="token literal-property property">value</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>low<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="77"></td><td><pre> <span class="token literal-property property">index</span><span class="token operator">:</span> i</pre></td></tr><tr><td data-num="78"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="79"></td><td><pre> findHigh <span class="token operator">=</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="80"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="81"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="82"></td><td><pre> highLows<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="83"></td><td><pre> <span class="token literal-property property">time</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>timestamp<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="84"></td><td><pre> <span class="token literal-property property">value</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>low<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="85"></td><td><pre> <span class="token literal-property property">index</span><span class="token operator">:</span> i</pre></td></tr><tr><td data-num="86"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="87"></td><td><pre> findHigh <span class="token operator">=</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="88"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="89"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="90"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="91"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="92"></td><td><pre> <span class="token keyword">let</span> high<span class="token punctuation">,</span> low<span class="token punctuation">,</span> highLow</pre></td></tr><tr><td data-num="93"></td><td><pre> <span class="token keyword">return</span> dataList<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">kLineData<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="94"></td><td><pre> <span class="token keyword">let</span> item <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="95"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="96"></td><td><pre> highs<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="97"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>kLineData<span class="token punctuation">.</span>timestamp <span class="token operator">===</span> data<span class="token punctuation">.</span>time<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="98"></td><td><pre> high <span class="token operator">=</span> data<span class="token punctuation">.</span>value</pre></td></tr><tr><td data-num="99"></td><td><pre> item<span class="token punctuation">.</span>highOrigin <span class="token operator">=</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="100"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="101"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="102"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">isNotEmpty</span><span class="token punctuation">(</span>high<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 持续先前的高,画出阶梯线</span></pre></td></tr><tr><td data-num="103"></td><td><pre> item<span class="token punctuation">.</span>timestamp <span class="token operator">=</span> kLineData<span class="token punctuation">.</span>timestamp</pre></td></tr><tr><td data-num="104"></td><td><pre> item<span class="token punctuation">.</span>high <span class="token operator">=</span> high</pre></td></tr><tr><td data-num="105"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="106"></td><td><pre> lows<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="107"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>kLineData<span class="token punctuation">.</span>timestamp <span class="token operator">===</span> data<span class="token punctuation">.</span>time<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="108"></td><td><pre> low <span class="token operator">=</span> data<span class="token punctuation">.</span>value</pre></td></tr><tr><td data-num="109"></td><td><pre> item<span class="token punctuation">.</span>lowOrigin <span class="token operator">=</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="110"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="111"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="112"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">isNotEmpty</span><span class="token punctuation">(</span>low<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 持续先前的低,画出阶梯线</span></pre></td></tr><tr><td data-num="113"></td><td><pre> item<span class="token punctuation">.</span>timestamp <span class="token operator">=</span> kLineData<span class="token punctuation">.</span>timestamp</pre></td></tr><tr><td data-num="114"></td><td><pre> item<span class="token punctuation">.</span>low <span class="token operator">=</span> low</pre></td></tr><tr><td data-num="115"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="116"></td><td><pre> highLows<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="117"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>kLineData<span class="token punctuation">.</span>timestamp <span class="token operator">===</span> data<span class="token punctuation">.</span>time<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="118"></td><td><pre> highLow <span class="token operator">=</span> data<span class="token punctuation">.</span>value</pre></td></tr><tr><td data-num="119"></td><td><pre> item<span class="token punctuation">.</span>highLowOrigin <span class="token operator">=</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="120"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="121"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="122"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">isNotEmpty</span><span class="token punctuation">(</span>highLow<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 持续先前的高低,方便 title 显示</span></pre></td></tr><tr><td data-num="123"></td><td><pre> item<span class="token punctuation">.</span>timestamp <span class="token operator">=</span> kLineData<span class="token punctuation">.</span>timestamp</pre></td></tr><tr><td data-num="124"></td><td><pre> item<span class="token punctuation">.</span>highLow <span class="token operator">=</span> highLow</pre></td></tr><tr><td data-num="125"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="126"></td><td><pre> <span class="token keyword">return</span> item</pre></td></tr><tr><td data-num="127"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="128"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="129"></td><td><pre> <span class="token function-variable function">render</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token parameter"><span class="token punctuation">&#123;</span> ctx<span class="token punctuation">,</span> dataSource<span class="token punctuation">,</span> viewport<span class="token punctuation">,</span> styles<span class="token punctuation">,</span> xAxis<span class="token punctuation">,</span> yAxis <span class="token punctuation">&#125;</span></span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="130"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>dataSource<span class="token punctuation">.</span>technicalIndicatorDataList<span class="token punctuation">.</span>length <span class="token operator">&lt;=</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="131"></td><td><pre> <span class="token keyword">return</span></pre></td></tr><tr><td data-num="132"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="133"></td><td><pre> <span class="token keyword">let</span> x <span class="token operator">=</span> xAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="134"></td><td><pre> <span class="token keyword">let</span> high<span class="token punctuation">,</span> low<span class="token punctuation">,</span> highLow<span class="token punctuation">,</span> highLowX</pre></td></tr><tr><td data-num="135"></td><td><pre> dataSource<span class="token punctuation">.</span>technicalIndicatorDataList<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">data<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="136"></td><td><pre> <span class="token comment">// 画高线</span></pre></td></tr><tr><td data-num="137"></td><td><pre> ctx<span class="token punctuation">.</span>textBaseline <span class="token operator">=</span> <span class="token string">'middle'</span></pre></td></tr><tr><td data-num="138"></td><td><pre> ctx<span class="token punctuation">.</span>textAlign <span class="token operator">=</span> <span class="token string">'center'</span></pre></td></tr><tr><td data-num="139"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> <span class="token string">'#fff'</span></pre></td></tr><tr><td data-num="140"></td><td><pre> ctx<span class="token punctuation">.</span>strokeStyle <span class="token operator">=</span> <span class="token string">'#fff'</span></pre></td></tr><tr><td data-num="141"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>styles<span class="token punctuation">.</span>line <span class="token operator">&amp;&amp;</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors <span class="token operator">&amp;&amp;</span> styles<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">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="142"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> styles<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></pre></td></tr><tr><td data-num="143"></td><td><pre> ctx<span class="token punctuation">.</span>strokeStyle <span class="token operator">=</span> styles<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></pre></td></tr><tr><td data-num="144"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="145"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">isNotEmpty</span><span class="token punctuation">(</span>high<span class="token punctuation">)</span> <span class="token operator">&amp;&amp;</span> data<span class="token punctuation">.</span>high <span class="token operator">!==</span> high<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="146"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">beginPath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="147"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>high<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="148"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>data<span class="token punctuation">.</span>high<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="149"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">stroke</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="150"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">closePath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="151"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="152"></td><td><pre> high <span class="token operator">=</span> data<span class="token punctuation">.</span>high</pre></td></tr><tr><td data-num="153"></td><td><pre> <span class="token keyword">let</span> y <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>high<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="154"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">beginPath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="155"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> y<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="156"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>dataSpace<span class="token punctuation">,</span> y<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="157"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">stroke</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="158"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">closePath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="159"></td><td><pre> <span class="token comment">// 画低线</span></pre></td></tr><tr><td data-num="160"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> <span class="token string">'#fff'</span></pre></td></tr><tr><td data-num="161"></td><td><pre> ctx<span class="token punctuation">.</span>strokeStyle <span class="token operator">=</span> <span class="token string">'#fff'</span></pre></td></tr><tr><td data-num="162"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>styles<span class="token punctuation">.</span>line <span class="token operator">&amp;&amp;</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors <span class="token operator">&amp;&amp;</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="163"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="164"></td><td><pre> ctx<span class="token punctuation">.</span>strokeStyle <span class="token operator">=</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="165"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="166"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">isNotEmpty</span><span class="token punctuation">(</span>low<span class="token punctuation">)</span> <span class="token operator">&amp;&amp;</span> data<span class="token punctuation">.</span>low <span class="token operator">!==</span> low<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="167"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">beginPath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="168"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>low<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="169"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>data<span class="token punctuation">.</span>low<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="170"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">stroke</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="171"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">closePath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="172"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="173"></td><td><pre> low <span class="token operator">=</span> data<span class="token punctuation">.</span>low</pre></td></tr><tr><td data-num="174"></td><td><pre> y <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>low<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="175"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">beginPath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="176"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> y<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="177"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>dataSpace<span class="token punctuation">,</span> y<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="178"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">stroke</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="179"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">closePath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="180"></td><td><pre> <span class="token comment">// 画高低线</span></pre></td></tr><tr><td data-num="181"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">isNotEmpty</span><span class="token punctuation">(</span>data<span class="token punctuation">.</span>highLow<span class="token punctuation">)</span> <span class="token operator">&amp;&amp;</span> data<span class="token punctuation">.</span>highLowOrigin <span class="token operator">===</span> <span class="token boolean">true</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="182"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">isNotEmpty</span><span class="token punctuation">(</span>highLow<span class="token punctuation">)</span> <span class="token operator">&amp;&amp;</span> <span class="token function">isNotEmpty</span><span class="token punctuation">(</span>highLowX<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="183"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> <span class="token string">'#fff'</span></pre></td></tr><tr><td data-num="184"></td><td><pre> ctx<span class="token punctuation">.</span>strokeStyle <span class="token operator">=</span> <span class="token string">'#fff'</span></pre></td></tr><tr><td data-num="185"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>styles<span class="token punctuation">.</span>line <span class="token operator">&amp;&amp;</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors <span class="token operator">&amp;&amp;</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="186"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="187"></td><td><pre> ctx<span class="token punctuation">.</span>strokeStyle <span class="token operator">=</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="188"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="189"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">beginPath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="190"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>highLowX<span class="token punctuation">,</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>highLow<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="191"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>data<span class="token punctuation">.</span>highLow<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="192"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">stroke</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="193"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">closePath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="194"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="195"></td><td><pre> highLow <span class="token operator">=</span> data<span class="token punctuation">.</span>highLow</pre></td></tr><tr><td data-num="196"></td><td><pre> highLowX <span class="token operator">=</span> x</pre></td></tr><tr><td data-num="197"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="198"></td><td><pre> <span class="token comment">// 画价格</span></pre></td></tr><tr><td data-num="199"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>data<span class="token punctuation">.</span>high <span class="token operator">!==</span> <span class="token keyword">undefined</span> <span class="token operator">&amp;&amp;</span> data<span class="token punctuation">.</span>highOrigin <span class="token operator">===</span> <span class="token boolean">true</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 画高价</span></pre></td></tr><tr><td data-num="200"></td><td><pre> <span class="token keyword">let</span> text <span class="token operator">=</span> Number<span class="token punctuation">.</span><span class="token function">parseFloat</span><span class="token punctuation">(</span>data<span class="token punctuation">.</span>high<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="201"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> <span class="token string">'#fff'</span></pre></td></tr><tr><td data-num="202"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>styles<span class="token punctuation">.</span>line <span class="token operator">&amp;&amp;</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors <span class="token operator">&amp;&amp;</span> styles<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">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="203"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> styles<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></pre></td></tr><tr><td data-num="204"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="205"></td><td><pre> <span class="token keyword">let</span> offset <span class="token operator">=</span> <span class="token number">10</span></pre></td></tr><tr><td data-num="206"></td><td><pre> <span class="token keyword">let</span> y <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>data<span class="token punctuation">.</span>high<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="207"></td><td><pre> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> offset <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">+=</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="208"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillText</span><span class="token punctuation">(</span><span class="token string">'.'</span><span class="token punctuation">,</span> x<span class="token punctuation">,</span> y <span class="token operator">-</span> i<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="209"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="210"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillText</span><span class="token punctuation">(</span>text<span class="token punctuation">,</span> x<span class="token punctuation">,</span> y <span class="token operator">-</span> offset<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="211"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="212"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>data<span class="token punctuation">.</span>low <span class="token operator">!==</span> <span class="token keyword">undefined</span> <span class="token operator">&amp;&amp;</span> data<span class="token punctuation">.</span>lowOrigin <span class="token operator">===</span> <span class="token boolean">true</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 画低价</span></pre></td></tr><tr><td data-num="213"></td><td><pre> <span class="token keyword">let</span> text <span class="token operator">=</span> Number<span class="token punctuation">.</span><span class="token function">parseFloat</span><span class="token punctuation">(</span>data<span class="token punctuation">.</span>low<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="214"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> <span class="token string">'#fff'</span></pre></td></tr><tr><td data-num="215"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>styles<span class="token punctuation">.</span>line <span class="token operator">&amp;&amp;</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors <span class="token operator">&amp;&amp;</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="216"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> styles<span class="token punctuation">.</span>line<span class="token punctuation">.</span>colors<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="217"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="218"></td><td><pre> <span class="token keyword">let</span> offset <span class="token operator">=</span> <span class="token number">15</span></pre></td></tr><tr><td data-num="219"></td><td><pre> <span class="token keyword">let</span> y <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>data<span class="token punctuation">.</span>low<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="220"></td><td><pre> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> offset <span class="token operator">-</span> <span class="token number">5</span><span class="token punctuation">;</span> i <span class="token operator">+=</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="221"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillText</span><span class="token punctuation">(</span><span class="token string">'.'</span><span class="token punctuation">,</span> x<span class="token punctuation">,</span> y <span class="token operator">+</span> i<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="222"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="223"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillText</span><span class="token punctuation">(</span>text<span class="token punctuation">,</span> x<span class="token punctuation">,</span> y <span class="token operator">+</span> offset<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="224"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="225"></td><td><pre> x <span class="token operator">+=</span> viewport<span class="token punctuation">.</span>dataSpace</pre></td></tr><tr><td data-num="226"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="227"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="228"></td><td><pre><span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr></table></figure> ]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2023/01/10/Vue%E6%A0%B9%E6%8D%AE%E8%B7%AF%E7%94%B1%E4%BC%A0%E5%8F%82%E4%BF%AE%E6%94%B9%E9%A1%B5%E9%9D%A2%E6%95%B0%E6%8D%AE/</guid>
|
||
<title>Vue根据路由传参修改页面数据</title>
|
||
<link>https://hitoli.com/2023/01/10/Vue%E6%A0%B9%E6%8D%AE%E8%B7%AF%E7%94%B1%E4%BC%A0%E5%8F%82%E4%BF%AE%E6%94%B9%E9%A1%B5%E9%9D%A2%E6%95%B0%E6%8D%AE/</link>
|
||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||
<category term="Vue" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/Vue/" />
|
||
<category term="Vue" scheme="https://hitoli.com/tags/Vue/" />
|
||
<pubDate>Tue, 10 Jan 2023 10:19:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||
<p>在开发前端页面时会存在相同的页面展示,只是菜单名称不同、数据类型不同的情况。如果再拷贝一个页面来展示后期就需要维护两个页面,同时也增加了工作量。但是只使用一个页面通过传参来改变数据就方便多了。</p>
|
||
<h4 id="路由配置"><a class="anchor" href="#路由配置">#</a> 路由配置</h4>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></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 key atrule">path</span><span class="token punctuation">:</span> <span class="token string">'/test/:type/:menuIndex'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">'Test'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token key atrule">component</span><span class="token punctuation">:</span> _import('xxx/Test.vue')</pre></td></tr><tr><td data-num="5"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr></table></figure><h4 id="菜单配置"><a class="anchor" href="#菜单配置">#</a> 菜单配置</h4>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>&lt;template<span class="token punctuation">></span></pre></td></tr><tr><td data-num="2"></td><td><pre> &lt;el<span class="token punctuation">-</span>menu</pre></td></tr><tr><td data-num="3"></td><td><pre> class="aside<span class="token punctuation">-</span>menu"</pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token punctuation">:</span>default<span class="token punctuation">-</span>active="menuIndex.toString()"</pre></td></tr><tr><td data-num="5"></td><td><pre> @select="handleSelect"</pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token punctuation">></span></pre></td></tr><tr><td data-num="7"></td><td><pre> &lt;el<span class="token punctuation">-</span>menu<span class="token punctuation">-</span>item</pre></td></tr><tr><td data-num="8"></td><td><pre> index="1"</pre></td></tr><tr><td data-num="9"></td><td><pre> class="aside<span class="token punctuation">-</span>menu<span class="token punctuation">-</span>item"</pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token punctuation">></span></pre></td></tr><tr><td data-num="11"></td><td><pre> &lt;template <span class="token comment">#title></span></pre></td></tr><tr><td data-num="12"></td><td><pre> &lt;span<span class="token punctuation">></span>TEST1&lt;/span<span class="token punctuation">></span></pre></td></tr><tr><td data-num="13"></td><td><pre> &lt;el<span class="token punctuation">-</span>icon <span class="token punctuation">:</span>size="20"<span class="token punctuation">></span>&lt;TrendCharts /<span class="token punctuation">></span>&lt;/el<span class="token punctuation">-</span>icon<span class="token punctuation">></span></pre></td></tr><tr><td data-num="14"></td><td><pre> &lt;/template<span class="token punctuation">></span></pre></td></tr><tr><td data-num="15"></td><td><pre> &lt;/el<span class="token punctuation">-</span>menu<span class="token punctuation">-</span>item<span class="token punctuation">></span></pre></td></tr><tr><td data-num="16"></td><td><pre> &lt;el<span class="token punctuation">-</span>menu<span class="token punctuation">-</span>item</pre></td></tr><tr><td data-num="17"></td><td><pre> index="2"</pre></td></tr><tr><td data-num="18"></td><td><pre> class="aside<span class="token punctuation">-</span>menu<span class="token punctuation">-</span>item"</pre></td></tr><tr><td data-num="19"></td><td><pre> <span class="token punctuation">></span></pre></td></tr><tr><td data-num="20"></td><td><pre> &lt;template <span class="token comment">#title></span></pre></td></tr><tr><td data-num="21"></td><td><pre> &lt;span<span class="token punctuation">></span>TEST2&lt;/span<span class="token punctuation">></span></pre></td></tr><tr><td data-num="22"></td><td><pre> &lt;el<span class="token punctuation">-</span>icon <span class="token punctuation">:</span>size="20"<span class="token punctuation">></span>&lt;Orange /<span class="token punctuation">></span>&lt;/el<span class="token punctuation">-</span>icon<span class="token punctuation">></span></pre></td></tr><tr><td data-num="23"></td><td><pre> &lt;/template<span class="token punctuation">></span></pre></td></tr><tr><td data-num="24"></td><td><pre> &lt;/el<span class="token punctuation">-</span>menu<span class="token punctuation">-</span>item<span class="token punctuation">></span></pre></td></tr><tr><td data-num="25"></td><td><pre> &lt;/el<span class="token punctuation">-</span>menu<span class="token punctuation">></span></pre></td></tr><tr><td data-num="26"></td><td><pre>&lt;/template<span class="token punctuation">></span></pre></td></tr><tr><td data-num="27"></td><td><pre></pre></td></tr><tr><td data-num="28"></td><td><pre><span class="token key atrule">methods</span><span class="token punctuation">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="29"></td><td><pre> handleSelect (val) <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="30"></td><td><pre> if (val === '1') <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="31"></td><td><pre> this.$router.push(<span class="token punctuation">&#123;</span> <span class="token key atrule">path</span><span class="token punctuation">:</span> '/test/type1/' + val <span class="token punctuation">&#125;</span>)</pre></td></tr><tr><td data-num="32"></td><td><pre> <span class="token punctuation">&#125;</span> else if (val === '2') <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="33"></td><td><pre> this.$router.push(<span class="token punctuation">&#123;</span> <span class="token key atrule">path</span><span class="token punctuation">:</span> '/test/type2/' + val <span class="token punctuation">&#125;</span>)</pre></td></tr><tr><td data-num="34"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="35"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="36"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><h4 id="页面"><a class="anchor" href="#页面">#</a> 页面</h4>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>created () <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre> this.$watch(</pre></td></tr><tr><td data-num="3"></td><td><pre> () =<span class="token punctuation">></span> this.$route.params<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="4"></td><td><pre> (toParams<span class="token punctuation">,</span> previousParams) =<span class="token punctuation">></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="5"></td><td><pre> if (isNotEmpty(toParams.menuIndex)) <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="6"></td><td><pre> this.menuIndex = toParams.menuIndex</pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="8"></td><td><pre> if (isNotEmpty(toParams.type)) <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="9"></td><td><pre> this.type = toParams.type</pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="11"></td><td><pre> // 根据type查询数据</pre></td></tr><tr><td data-num="12"></td><td><pre> <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> if (isNotEmpty(this.$route.params.menuIndex)) <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="16"></td><td><pre> this.menuIndex = this.$route.params.menuIndex</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> if (isNotEmpty(this.$route.params.type)) <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="19"></td><td><pre> this.type = this.$route.params.type</pre></td></tr><tr><td data-num="20"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="21"></td><td><pre><span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="22"></td><td><pre>mounted () <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="23"></td><td><pre> // 根据type查询数据</pre></td></tr><tr><td data-num="24"></td><td><pre> <span class="token punctuation">...</span></pre></td></tr><tr><td data-num="25"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure> ]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2023/01/10/Highcharts%E7%94%BB%E6%94%B6%E7%9B%8A%E6%A6%82%E8%A7%88/</guid>
|
||
<title>Highcharts画收益概览</title>
|
||
<link>https://hitoli.com/2023/01/10/Highcharts%E7%94%BB%E6%94%B6%E7%9B%8A%E6%A6%82%E8%A7%88/</link>
|
||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||
<category term="Highcharts" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/Highcharts/" />
|
||
<category term="Highcharts" scheme="https://hitoli.com/tags/Highcharts/" />
|
||
<pubDate>Tue, 10 Jan 2023 09:51:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||
<p>项目中需要画一幅收益概览图,研究了一下 Highcharts 的用法。特此收录方便以后再次使用时查阅。<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2023/01/10/1ef80bfe8b5ee82aec0e2549e8c68e2c.png" alt="1ef80bfe8b5ee82aec0e2549e8c68e2c.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 comment">//x 轴时间集合</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token keyword">var</span> chartXAxisDateTimes <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">'2022-01-01 00:00:00'</span><span class="token punctuation">,</span> <span class="token string">'2022-02-01 00:00:00'</span><span class="token punctuation">,</span> <span class="token string">'2022-03-01 00:00:00'</span><span class="token punctuation">,</span> <span class="token string">'2022-04-01 00:00:00'</span><span class="token punctuation">,</span> <span class="token string">'2022-05-01 00:00:00'</span><span class="token punctuation">]</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">//y 轴数据集合</span></pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token keyword">var</span> chartYAxisDatas <span class="token operator">=</span> <span class="token punctuation">[</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token string">'累计收益'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'我的策略累计收益'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'spline'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token literal-property property">unit</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> <span class="token literal-property property">valueDecimals</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="12"></td><td><pre> <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token string">'28%'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token comment">//y 轴分区 index(从上到下,默认从 0 开始)</span></pre></td></tr><tr><td data-num="14"></td><td><pre> <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="15"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-01-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="16"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="17"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="18"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="19"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="20"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-02-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="21"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="22"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="23"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="24"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="25"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-03-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="26"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="27"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="28"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="29"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="30"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-04-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="31"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="32"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="33"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="34"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="35"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-05-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="36"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="37"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="38"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="39"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="40"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="41"></td><td><pre> <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token string">'每月盈亏'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="42"></td><td><pre> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'当月盈利'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="43"></td><td><pre> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'column'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="44"></td><td><pre> <span class="token literal-property property">unit</span><span class="token operator">:</span> <span class="token string">'k'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="45"></td><td><pre> <span class="token literal-property property">valueDecimals</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="46"></td><td><pre> <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'34%'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="47"></td><td><pre> <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token string">'28%'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="48"></td><td><pre> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token comment">//y 轴分区 index(从上到下,默认从 0 开始)</span></pre></td></tr><tr><td data-num="49"></td><td><pre> <span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="50"></td><td><pre> <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">.</span>value <span class="token operator">&lt;</span> <span class="token number">0</span> <span class="token operator">?</span> <span class="token punctuation">(</span><span class="token operator">-</span><span class="token keyword">this</span><span class="token punctuation">.</span>value<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'k'</span> <span class="token operator">:</span> <span class="token keyword">this</span><span class="token punctuation">.</span>value <span class="token operator">+</span> <span class="token string">'k'</span></pre></td></tr><tr><td data-num="51"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="52"></td><td><pre> <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="53"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-01-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="54"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="55"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="56"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="57"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="58"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-02-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="59"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="60"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="61"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="62"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="63"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-03-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="64"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="65"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="66"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="67"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="68"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-04-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="69"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="70"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="71"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="72"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="73"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-05-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="74"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="75"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="76"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="77"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="78"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="79"></td><td><pre> <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token string">'成交记录'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="80"></td><td><pre> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'当月买入'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="81"></td><td><pre> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'column'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="82"></td><td><pre> <span class="token literal-property property">unit</span><span class="token operator">:</span> <span class="token string">'k'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="83"></td><td><pre> <span class="token literal-property property">valueDecimals</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="84"></td><td><pre> <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'68%'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="85"></td><td><pre> <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token string">'28%'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="86"></td><td><pre> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token comment">//y 轴分区 index(从上到下,默认从 0 开始)</span></pre></td></tr><tr><td data-num="87"></td><td><pre> <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="88"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-01-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="89"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="90"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'red'</span></pre></td></tr><tr><td data-num="91"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="92"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="93"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-02-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="94"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="95"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'red'</span></pre></td></tr><tr><td data-num="96"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="97"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="98"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-03-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="99"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="100"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'red'</span></pre></td></tr><tr><td data-num="101"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="102"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="103"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-04-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="104"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="105"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'red'</span></pre></td></tr><tr><td data-num="106"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="107"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="108"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-05-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="109"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="110"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'red'</span></pre></td></tr><tr><td data-num="111"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="112"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="113"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="114"></td><td><pre> <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token string">'成交记录'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="115"></td><td><pre> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'当月卖出'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="116"></td><td><pre> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'column'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="117"></td><td><pre> <span class="token literal-property property">unit</span><span class="token operator">:</span> <span class="token string">'k'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="118"></td><td><pre> <span class="token literal-property property">valueDecimals</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="119"></td><td><pre> <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'68%'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="120"></td><td><pre> <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token string">'28%'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="121"></td><td><pre> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token comment">//y 轴分区 index(从上到下,默认从 0 开始)</span></pre></td></tr><tr><td data-num="122"></td><td><pre> <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="123"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-01-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="124"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="125"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'green'</span></pre></td></tr><tr><td data-num="126"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="127"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="128"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-02-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="129"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="130"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'green'</span></pre></td></tr><tr><td data-num="131"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="132"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="133"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-03-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="134"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="135"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'green'</span></pre></td></tr><tr><td data-num="136"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="137"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="138"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-04-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="139"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="140"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'green'</span></pre></td></tr><tr><td data-num="141"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="142"></td><td><pre> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="143"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-05-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="144"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="145"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'green'</span></pre></td></tr><tr><td data-num="146"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="147"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="148"></td><td><pre> <span class="token punctuation">]</span></pre></td></tr><tr><td data-num="149"></td><td><pre> </pre></td></tr><tr><td data-num="150"></td><td><pre><span class="token comment">// 最大回测范围</span></pre></td></tr><tr><td data-num="151"></td><td><pre><span class="token keyword">var</span> plotBandScope <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-02-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token string">'2022-04-01 00:00:00'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="152"></td><td><pre></pre></td></tr><tr><td data-num="153"></td><td><pre><span class="token comment">// 图表配置</span></pre></td></tr><tr><td data-num="154"></td><td><pre><span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="155"></td><td><pre> <span class="token literal-property property">chart</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="156"></td><td><pre> <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">600</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="157"></td><td><pre> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'spline'</span> <span class="token comment">// 指定图表的类型,默认是折线图(line)</span></pre></td></tr><tr><td data-num="158"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="159"></td><td><pre> <span class="token literal-property property">plotOptions</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="160"></td><td><pre> <span class="token literal-property property">spline</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="161"></td><td><pre> <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="162"></td><td><pre> <span class="token literal-property property">lineWidth</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="163"></td><td><pre> <span class="token literal-property property">states</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="164"></td><td><pre> <span class="token literal-property property">hover</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="165"></td><td><pre> <span class="token literal-property property">lineWidth</span><span class="token operator">:</span> <span class="token number">2</span></pre></td></tr><tr><td data-num="166"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="167"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="168"></td><td><pre> <span class="token comment">//pointWidth: 4, // 柱子内宽度容</span></pre></td></tr><tr><td data-num="169"></td><td><pre> <span class="token literal-property property">dataLabels</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="170"></td><td><pre> <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="171"></td><td><pre> <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">11</span></pre></td></tr><tr><td data-num="172"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="173"></td><td><pre> <span class="token literal-property property">enabled</span><span class="token operator">:</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="174"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="175"></td><td><pre> <span class="token literal-property property">showInLegend</span><span class="token operator">:</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="176"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="177"></td><td><pre> <span class="token literal-property property">column</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="178"></td><td><pre> <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="179"></td><td><pre> <span class="token literal-property property">pointWidth</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token comment">// 柱子内宽度容</span></pre></td></tr><tr><td data-num="180"></td><td><pre> <span class="token literal-property property">dataLabels</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="181"></td><td><pre> <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="182"></td><td><pre> <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">11</span></pre></td></tr><tr><td data-num="183"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="184"></td><td><pre> <span class="token literal-property property">enabled</span><span class="token operator">:</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="185"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="186"></td><td><pre> <span class="token literal-property property">showInLegend</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="187"></td><td><pre> <span class="token literal-property property">grouping</span><span class="token operator">:</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="188"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="189"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="190"></td><td><pre> <span class="token literal-property property">rangeSelector</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="191"></td><td><pre> <span class="token literal-property property">enabled</span><span class="token operator">:</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="192"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="193"></td><td><pre> <span class="token literal-property property">credits</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="194"></td><td><pre> <span class="token literal-property property">enabled</span><span class="token operator">:</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="195"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="196"></td><td><pre> <span class="token comment">// legend: &#123;</span></pre></td></tr><tr><td data-num="197"></td><td><pre> <span class="token comment">// enabled: true,</span></pre></td></tr><tr><td data-num="198"></td><td><pre> <span class="token comment">// verticalAlign: 'top'</span></pre></td></tr><tr><td data-num="199"></td><td><pre> <span class="token comment">// &#125;,</span></pre></td></tr><tr><td data-num="200"></td><td><pre> <span class="token literal-property property">navigator</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 导航器样式</span></pre></td></tr><tr><td data-num="201"></td><td><pre> <span class="token literal-property property">enabled</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="202"></td><td><pre> <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">20</span></pre></td></tr><tr><td data-num="203"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="204"></td><td><pre> <span class="token literal-property property">scrollbar</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 滚动条样式</span></pre></td></tr><tr><td data-num="205"></td><td><pre> <span class="token literal-property property">barBackgroundColor</span><span class="token operator">:</span> <span class="token string">'rgb(209, 218, 237)'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="206"></td><td><pre> <span class="token literal-property property">barBorderRadius</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="207"></td><td><pre> <span class="token literal-property property">barBorderWidth</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="208"></td><td><pre> <span class="token literal-property property">buttonBackgroundColor</span><span class="token operator">:</span> <span class="token string">'rgb(242, 242, 242)'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="209"></td><td><pre> <span class="token literal-property property">buttonBorderWidth</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="210"></td><td><pre> <span class="token literal-property property">buttonBorderRadius</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="211"></td><td><pre> <span class="token literal-property property">trackBackgroundColor</span><span class="token operator">:</span> <span class="token string">'none'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="212"></td><td><pre> <span class="token literal-property property">trackBorderWidth</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="213"></td><td><pre> <span class="token literal-property property">trackBorderRadius</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="214"></td><td><pre> <span class="token literal-property property">trackBorderColor</span><span class="token operator">:</span> <span class="token string">'#CCC'</span></pre></td></tr><tr><td data-num="215"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="216"></td><td><pre> <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="217"></td><td><pre> <span class="token literal-property property">lineWidth</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="218"></td><td><pre> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'datetime'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="219"></td><td><pre> <span class="token literal-property property">categories</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="220"></td><td><pre> <span class="token literal-property property">dateTimeLabelFormats</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="221"></td><td><pre> <span class="token comment">// millisecond: '%H:%M:%S.%L',</span></pre></td></tr><tr><td data-num="222"></td><td><pre> <span class="token comment">// second: '%H:%M:%S',</span></pre></td></tr><tr><td data-num="223"></td><td><pre> <span class="token comment">// minute: '%H:%M',</span></pre></td></tr><tr><td data-num="224"></td><td><pre> <span class="token comment">// hour: '%m-%d %H:%M',</span></pre></td></tr><tr><td data-num="225"></td><td><pre> <span class="token literal-property property">day</span><span class="token operator">:</span> <span class="token string">'%m-%d'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="226"></td><td><pre> <span class="token literal-property property">week</span><span class="token operator">:</span> <span class="token string">'%m-%d'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="227"></td><td><pre> <span class="token literal-property property">month</span><span class="token operator">:</span> <span class="token string">'%Y-%m'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="228"></td><td><pre> <span class="token literal-property property">year</span><span class="token operator">:</span> <span class="token string">'%Y'</span></pre></td></tr><tr><td data-num="229"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="230"></td><td><pre> <span class="token literal-property property">gridLineWidth</span><span class="token operator">:</span> <span class="token number">1</span></pre></td></tr><tr><td data-num="231"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="232"></td><td><pre> <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="233"></td><td><pre> <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="234"></td><td><pre> <span class="token literal-property property">xDateFormat</span><span class="token operator">:</span> <span class="token string">'%Y-%m-%d %H:%M:%S'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="235"></td><td><pre> <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="236"></td><td><pre> <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="237"></td><td><pre> <span class="token literal-property property">fontFamily</span><span class="token operator">:</span> <span class="token string">'微软雅黑'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="238"></td><td><pre> <span class="token literal-property property">fontWeight</span><span class="token operator">:</span> <span class="token string">'normal'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="239"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#666'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="240"></td><td><pre> <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="241"></td><td><pre> <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="242"></td><td><pre> <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#ddd'</span></pre></td></tr><tr><td data-num="243"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="244"></td><td><pre> <span class="token literal-property property">shared</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="245"></td><td><pre> <span class="token literal-property property">useHTML</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="246"></td><td><pre> <span class="token literal-property property">headerFormat</span><span class="token operator">:</span> <span class="token string">'&lt;small style="font-size: 12px">&#123;point.key&#125;&lt;/small>&lt;table>'</span><span class="token punctuation">,</span> <span class="token comment">// 标题格式,</span></pre></td></tr><tr><td data-num="247"></td><td><pre> <span class="token literal-property property">pointFormat</span><span class="token operator">:</span> <span class="token string">'&lt;tr>&lt;td>&lt;li style="color:&#123;series.color&#125;;padding:0px">&#123;series.name&#125;: &lt;/li>'</span> <span class="token operator">+</span></pre></td></tr><tr><td data-num="248"></td><td><pre> <span class="token string">'&lt;div style="float: right;">&#123;point.y&#125; &#123;series.tooltip.valueDecimals&#125;&lt;/div>&lt;/td>&lt;/tr>'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="249"></td><td><pre> <span class="token literal-property property">footerFormat</span><span class="token operator">:</span> <span class="token string">'&lt;/table>'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="250"></td><td><pre> <span class="token literal-property property">shadow</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="251"></td><td><pre> <span class="token literal-property property">followPointer</span><span class="token operator">:</span> <span class="token boolean">true</span> <span class="token comment">// 跟随鼠标</span></pre></td></tr><tr><td data-num="252"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="253"></td><td><pre> <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="254"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="255"></td><td><pre></pre></td></tr><tr><td data-num="256"></td><td><pre><span class="token comment">// 根据最大回测范围修改图表配置</span></pre></td></tr><tr><td data-num="257"></td><td><pre><span class="token keyword">if</span> <span class="token punctuation">(</span>plotBandScope <span class="token operator">&amp;&amp;</span> plotBandScope<span class="token punctuation">.</span>length <span class="token operator">===</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="258"></td><td><pre> option<span class="token punctuation">.</span>xAxis<span class="token punctuation">.</span>plotBands <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="259"></td><td><pre> <span class="token literal-property property">from</span><span class="token operator">:</span> plotBandScope<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="260"></td><td><pre> <span class="token literal-property property">to</span><span class="token operator">:</span> plotBandScope<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="261"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#FCFFC5'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="262"></td><td><pre> <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="263"></td><td><pre> <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'最大回测区间'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="264"></td><td><pre> <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="265"></td><td><pre> <span class="token literal-property property">verticalAlign</span><span class="token operator">:</span> <span class="token string">'top'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="266"></td><td><pre> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">14</span></pre></td></tr><tr><td data-num="267"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="268"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="269"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="270"></td><td><pre></pre></td></tr><tr><td data-num="271"></td><td><pre><span class="token comment">// 根据 x 轴时间集合修改图表配置</span></pre></td></tr><tr><td data-num="272"></td><td><pre><span class="token keyword">if</span> <span class="token punctuation">(</span>chartXAxisDateTimes <span class="token operator">&amp;&amp;</span> chartXAxisDateTimes<span class="token punctuation">.</span>length <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="273"></td><td><pre> option<span class="token punctuation">.</span>categories <span class="token operator">=</span> chartXAxisDateTimes</pre></td></tr><tr><td data-num="274"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="275"></td><td><pre></pre></td></tr><tr><td data-num="276"></td><td><pre><span class="token comment">// 根据 y 轴数据集合修改图表配置</span></pre></td></tr><tr><td data-num="277"></td><td><pre><span class="token keyword">if</span> <span class="token punctuation">(</span>chartYAxisDatas <span class="token operator">&amp;&amp;</span> chartYAxisDatas<span class="token punctuation">.</span>length <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="278"></td><td><pre> chartYAxisDatas<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="279"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>type <span class="token operator">===</span> <span class="token string">'spline'</span> <span class="token operator">||</span> item<span class="token punctuation">.</span>type <span class="token operator">===</span> <span class="token string">'line'</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="280"></td><td><pre> option<span class="token punctuation">.</span>yAxis<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="281"></td><td><pre> <span class="token literal-property property">plotLines</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="282"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'black'</span><span class="token punctuation">,</span> <span class="token comment">// 线的颜色,定义为红色</span></pre></td></tr><tr><td data-num="283"></td><td><pre> <span class="token literal-property property">dashStyle</span><span class="token operator">:</span> <span class="token string">'solid'</span><span class="token punctuation">,</span> <span class="token comment">// 默认值,这里定义为实线</span></pre></td></tr><tr><td data-num="284"></td><td><pre> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token comment">// 定义在那个值上显示标示线,这里是在 x 轴上刻度为 3 的值处垂直化一条线</span></pre></td></tr><tr><td data-num="285"></td><td><pre> <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token number">2</span> <span class="token comment">// 标示线的宽度,2px</span></pre></td></tr><tr><td data-num="286"></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="287"></td><td><pre> <span class="token literal-property property">tickAmount</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token comment">// 规定坐标轴上的刻度总数</span></pre></td></tr><tr><td data-num="288"></td><td><pre> <span class="token literal-property property">gridLineColor</span><span class="token operator">:</span> <span class="token string">'#ddd'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="289"></td><td><pre> <span class="token literal-property property">gridLineDashStyle</span><span class="token operator">:</span> <span class="token string">'Solid'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="290"></td><td><pre> <span class="token literal-property property">labels</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 坐标轴上刻度的样式及单位</span></pre></td></tr><tr><td data-num="291"></td><td><pre> <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'right'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="292"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">6</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="293"></td><td><pre> <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="294"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#999999'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="295"></td><td><pre> <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">12</span></pre></td></tr><tr><td data-num="296"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="297"></td><td><pre> <span class="token literal-property property">format</span><span class="token operator">:</span> <span class="token string">'&#123;value&#125;'</span> <span class="token operator">+</span> item<span class="token punctuation">.</span>unit <span class="token comment">// 坐标轴上的单位</span></pre></td></tr><tr><td data-num="298"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="299"></td><td><pre> <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="300"></td><td><pre> <span class="token literal-property property">text</span><span class="token operator">:</span> item<span class="token punctuation">.</span>title<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="301"></td><td><pre> <span class="token literal-property property">margin</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="302"></td><td><pre> <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="303"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#999999'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="304"></td><td><pre> <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">12</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="305"></td><td><pre> <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'middle'</span> <span class="token comment">// 坐标轴对齐方式(相对于坐标轴的值) 默认是:middle 居中对齐</span></pre></td></tr><tr><td data-num="306"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="307"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="308"></td><td><pre> <span class="token literal-property property">height</span><span class="token operator">:</span> item<span class="token punctuation">.</span>height<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="309"></td><td><pre> <span class="token literal-property property">lineWidth</span><span class="token operator">:</span> <span class="token number">0</span></pre></td></tr><tr><td data-num="310"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="311"></td><td><pre> option<span class="token punctuation">.</span>series<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="312"></td><td><pre> <span class="token literal-property property">name</span><span class="token operator">:</span> item<span class="token punctuation">.</span>name<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="313"></td><td><pre> <span class="token literal-property property">data</span><span class="token operator">:</span> item<span class="token punctuation">.</span>data<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="314"></td><td><pre> <span class="token literal-property property">type</span><span class="token operator">:</span> item<span class="token punctuation">.</span>type<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="315"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgb(170, 70, 67)'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="316"></td><td><pre> <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="317"></td><td><pre> <span class="token literal-property property">valueSuffix</span><span class="token operator">:</span> item<span class="token punctuation">.</span>unit<span class="token punctuation">,</span> <span class="token comment">// 数值后缀</span></pre></td></tr><tr><td data-num="318"></td><td><pre> <span class="token literal-property property">valueDecimals</span><span class="token operator">:</span> item<span class="token punctuation">.</span>valueDecimals <span class="token comment">// 提示框数据精度 (保留小数点后 3 位)</span></pre></td></tr><tr><td data-num="319"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="320"></td><td><pre> <span class="token literal-property property">yAxis</span><span class="token operator">:</span> item<span class="token punctuation">.</span>yAxisIndex<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="321"></td><td><pre> <span class="token literal-property property">showInNavigator</span><span class="token operator">:</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="322"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="323"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>type <span class="token operator">===</span> <span class="token string">'column'</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="324"></td><td><pre> option<span class="token punctuation">.</span>yAxis<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="325"></td><td><pre> <span class="token literal-property property">type</span><span class="token operator">:</span> item<span class="token punctuation">.</span>type<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="326"></td><td><pre> <span class="token literal-property property">tickAmount</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token comment">// 规定坐标轴上的刻度总数</span></pre></td></tr><tr><td data-num="327"></td><td><pre> <span class="token literal-property property">startOnTick</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="328"></td><td><pre> <span class="token literal-property property">reversed</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token comment">//y 轴刻度反转</span></pre></td></tr><tr><td data-num="329"></td><td><pre> <span class="token literal-property property">showFirstLabel</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="330"></td><td><pre> <span class="token literal-property property">showLastLabel</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="331"></td><td><pre> <span class="token literal-property property">gridLineColor</span><span class="token operator">:</span> <span class="token string">'#ddd'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="332"></td><td><pre> <span class="token literal-property property">gridLineDashStyle</span><span class="token operator">:</span> <span class="token string">'Solid'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="333"></td><td><pre> <span class="token literal-property property">labels</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="334"></td><td><pre> <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'right'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="335"></td><td><pre> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">12</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="336"></td><td><pre> <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="337"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#999999'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="338"></td><td><pre> <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">12</span></pre></td></tr><tr><td data-num="339"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="340"></td><td><pre> <span class="token literal-property property">formatter</span><span class="token operator">:</span> item<span class="token punctuation">.</span>formatter<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="341"></td><td><pre> <span class="token literal-property property">format</span><span class="token operator">:</span> <span class="token string">'&#123;value&#125;'</span> <span class="token operator">+</span> item<span class="token punctuation">.</span>unit <span class="token comment">// 坐标轴上的单位</span></pre></td></tr><tr><td data-num="342"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="343"></td><td><pre> <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="344"></td><td><pre> <span class="token literal-property property">text</span><span class="token operator">:</span> item<span class="token punctuation">.</span>title<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="345"></td><td><pre> <span class="token literal-property property">margin</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="346"></td><td><pre> <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="347"></td><td><pre> <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#999999'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="348"></td><td><pre> <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">12</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="349"></td><td><pre> <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'middle'</span> <span class="token comment">// 坐标轴对齐方式(相对于坐标轴的值) 默认是:middle 居中对齐</span></pre></td></tr><tr><td data-num="350"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="351"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="352"></td><td><pre> <span class="token literal-property property">top</span><span class="token operator">:</span> item<span class="token punctuation">.</span>top<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="353"></td><td><pre> <span class="token literal-property property">height</span><span class="token operator">:</span> item<span class="token punctuation">.</span>height<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="354"></td><td><pre> <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="355"></td><td><pre> <span class="token literal-property property">lineWidth</span><span class="token operator">:</span> <span class="token number">0</span></pre></td></tr><tr><td data-num="356"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="357"></td><td><pre> option<span class="token punctuation">.</span>series<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="358"></td><td><pre> <span class="token literal-property property">name</span><span class="token operator">:</span> item<span class="token punctuation">.</span>name<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="359"></td><td><pre> <span class="token literal-property property">type</span><span class="token operator">:</span> item<span class="token punctuation">.</span>type<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="360"></td><td><pre> <span class="token literal-property property">data</span><span class="token operator">:</span> item<span class="token punctuation">.</span>data<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="361"></td><td><pre> <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="362"></td><td><pre> <span class="token function-variable function">pointFormatter</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="363"></td><td><pre> <span class="token keyword">return</span> <span class="token string">'&lt;tr>&lt;td>&lt;li style="color: '</span> <span class="token operator">+</span> <span class="token keyword">this</span><span class="token punctuation">.</span>color <span class="token operator">+</span> <span class="token string">';padding:0px;">&lt;/span> '</span> <span class="token operator">+</span> item<span class="token punctuation">.</span>name <span class="token operator">+</span></pre></td></tr><tr><td data-num="364"></td><td><pre> <span class="token string">': &lt;/li>&lt;div style="float: right;">'</span> <span class="token operator">+</span> <span class="token keyword">this</span><span class="token punctuation">.</span>y<span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>valueDecimals<span class="token punctuation">)</span> <span class="token operator">+</span> item<span class="token punctuation">.</span>unit <span class="token operator">+</span> <span class="token string">'&lt;/div>&lt;/td>&lt;/tr>'</span></pre></td></tr><tr><td data-num="365"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="366"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="367"></td><td><pre> <span class="token literal-property property">yAxis</span><span class="token operator">:</span> item<span class="token punctuation">.</span>yAxisIndex<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="368"></td><td><pre> <span class="token literal-property property">showInNavigator</span><span class="token operator">:</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="369"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="370"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="371"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="372"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="373"></td><td><pre></pre></td></tr><tr><td data-num="374"></td><td><pre><span class="token comment">// 画图(container 为 div 的 id)</span></pre></td></tr><tr><td data-num="375"></td><td><pre>Highcharts<span class="token punctuation">.</span><span class="token function">stockChart</span><span class="token punctuation">(</span><span class="token string">'container'</span><span class="token punctuation">,</span> option<span class="token punctuation">)</span></pre></td></tr></table></figure> ]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/12/05/Win10%E5%BD%BB%E5%BA%95%E5%85%B3%E9%97%ADwsappx%E8%BF%9B%E7%A8%8B/</guid>
|
||
<title>Win10彻底关闭wsappx进程</title>
|
||
<link>https://hitoli.com/2022/12/05/Win10%E5%BD%BB%E5%BA%95%E5%85%B3%E9%97%ADwsappx%E8%BF%9B%E7%A8%8B/</link>
|
||
<category term="Windows" scheme="https://hitoli.com/categories/Windows/" />
|
||
<category term="win10" scheme="https://hitoli.com/tags/win10/" />
|
||
<category term="wsappx" scheme="https://hitoli.com/tags/wsappx/" />
|
||
<pubDate>Mon, 05 Dec 2022 12:23:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||
<p>最近重装了家里一台 mini 电脑,把系统升级成了最新的 win10 系统。但是使用起来却异常卡顿,查看任务管理器发现有个 wsappx 进程占用 cpu 严重。于是百度搜索得知它是微软商店的依赖进程,而我根本就用不上,所以直接禁用。</p>
|
||
<h4 id="方法一"><a class="anchor" href="#方法一">#</a> 方法一</h4>
|
||
<ol>
|
||
<li>开始菜单点击 “开始 / 应用商店” 菜单项。</li>
|
||
<li>接着就会打开应用商店窗口,在窗口中点击个人头像的图标。</li>
|
||
<li>在弹出的菜单中点击 “设置” 菜单项。</li>
|
||
<li>在打开的应用商店设置窗口中,找到自动更新应用一项。</li>
|
||
<li>点击该项下面的开关,把该项下面的开关设置为关即可。</li>
|
||
</ol>
|
||
<h4 id="方法二"><a class="anchor" href="#方法二">#</a> 方法二</h4>
|
||
<ol>
|
||
<li>win 键 + r,输入 regedit</li>
|
||
<li>计算机 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AppXSvc 将 3 改为 4<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/12/05/2022061711420518.jpg" alt="" /></li>
|
||
<li>计算机 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClipSVC 将 3 改为 4<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/12/05/2022061711420619.jpg" alt="" /></li>
|
||
<li>重启电脑</li>
|
||
</ol>
|
||
]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/12/02/KLineChart%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8C%87%E6%A0%87%E7%94%BB%E5%9B%BE/</guid>
|
||
<title>KLineChart实现自定义指标画图</title>
|
||
<link>https://hitoli.com/2022/12/02/KLineChart%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8C%87%E6%A0%87%E7%94%BB%E5%9B%BE/</link>
|
||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||
<category term="KLineChart" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/KLineChart/" />
|
||
<category term="KLineChart" scheme="https://hitoli.com/tags/KLineChart/" />
|
||
<category term="K线" scheme="https://hitoli.com/tags/K%E7%BA%BF/" />
|
||
<category term="自定义指标" scheme="https://hitoli.com/tags/%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8C%87%E6%A0%87/" />
|
||
<pubDate>Fri, 02 Dec 2022 15:16:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||
<p>本次任务是需要在一个指标图上通过点击标记画出此标记参与计算的数据范围、最高最低值、参考线等等,于是有了以下代码。代码仅供参考,如有错误的地方请指正!<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/12/02/7fd440be0502d0099427e7c74c4ebf29.jpg" alt="7fd440be0502d0099427e7c74c4ebf29.jpg" /></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 comment">// 箱体指标</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token keyword">const</span> boxDataScope <span class="token operator">=</span> <span class="token number">300</span> <span class="token comment">// 箱体范围</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 keyword">const</span> goldenSectionA <span class="token operator">=</span> <span class="token number">0.191</span></pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token keyword">const</span> goldenSectionB <span class="token operator">=</span> <span class="token number">0.382</span></pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token keyword">const</span> goldenSectionC <span class="token operator">=</span> <span class="token number">0.5</span></pre></td></tr><tr><td data-num="7"></td><td><pre><span class="token keyword">const</span> goldenSectionD <span class="token operator">=</span> <span class="token number">0.618</span></pre></td></tr><tr><td data-num="8"></td><td><pre><span class="token keyword">const</span> goldenSectionE <span class="token operator">=</span> <span class="token number">0.809</span></pre></td></tr><tr><td data-num="9"></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="10"></td><td><pre> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'custom_box_solid'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="11"></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="12"></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="13"></td><td><pre> <span class="token literal-property property">plots</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token comment">//key 属性的值最好在主图数据范围内,否则 Y 轴的值会跟着变大可能会导致主图变成一条线</span></pre></td></tr><tr><td data-num="14"></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">'max'</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">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="15"></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">'min'</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">&#125;</span></pre></td></tr><tr><td data-num="16"></td><td><pre> <span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="17"></td><td><pre> <span class="token literal-property property">calcParams</span><span class="token operator">:</span> <span class="token punctuation">[</span>boxDataScope<span class="token punctuation">,</span> goldenSectionA<span class="token punctuation">,</span> goldenSectionB<span class="token punctuation">,</span> goldenSectionC<span class="token punctuation">,</span> goldenSectionD<span class="token punctuation">,</span> goldenSectionE<span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="18"></td><td><pre> <span class="token function-variable function">calcTechnicalIndicator</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token parameter">dataList<span class="token punctuation">,</span> <span class="token punctuation">&#123;</span> params<span class="token punctuation">,</span> plots <span class="token punctuation">&#125;</span></span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="19"></td><td><pre> <span class="token keyword">let</span> allDatas <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token comment">// 所有数据</span></pre></td></tr><tr><td data-num="20"></td><td><pre> <span class="token keyword">let</span> selectedDatas <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token comment">// 选中的数据</span></pre></td></tr><tr><td data-num="21"></td><td><pre> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> dataList<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="22"></td><td><pre> <span class="token keyword">let</span> kLineData <span class="token operator">=</span> dataList<span class="token punctuation">[</span>i<span class="token punctuation">]</span></pre></td></tr><tr><td data-num="23"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token function">dateConvert</span><span class="token punctuation">(</span>kLineData<span class="token punctuation">.</span>timestamp<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">===</span> <span class="token function">getGlobalObject</span><span class="token punctuation">(</span><span class="token string">'boxId'</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="24"></td><td><pre> <span class="token keyword">const</span> size <span class="token operator">=</span> params<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="25"></td><td><pre> <span class="token comment">// 找出当前数据往前的 size 条数据(包含自己)</span></pre></td></tr><tr><td data-num="26"></td><td><pre> <span class="token keyword">let</span> startData <span class="token operator">=</span> i <span class="token operator">-</span> size <span class="token operator">+</span> <span class="token number">1</span></pre></td></tr><tr><td data-num="27"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>startData <span class="token operator">&lt;</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="28"></td><td><pre> startData <span class="token operator">=</span> <span class="token number">0</span></pre></td></tr><tr><td data-num="29"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="30"></td><td><pre> <span class="token keyword">let</span> endData <span class="token operator">=</span> i <span class="token operator">+</span> <span class="token number">1</span></pre></td></tr><tr><td data-num="31"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>endData <span class="token operator">></span> dataList<span class="token punctuation">.</span>length<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="32"></td><td><pre> endData <span class="token operator">=</span> dataList<span class="token punctuation">.</span>length</pre></td></tr><tr><td data-num="33"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="34"></td><td><pre> selectedDatas <span class="token operator">=</span> dataList<span class="token punctuation">.</span><span class="token function">slice</span><span class="token punctuation">(</span>startData<span class="token punctuation">,</span> endData<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="35"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="36"></td><td><pre> allDatas<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="37"></td><td><pre> <span class="token literal-property property">timestamp</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>timestamp</pre></td></tr><tr><td data-num="38"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="39"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="40"></td><td><pre> <span class="token comment">// 找出选中数据中最高最低差价</span></pre></td></tr><tr><td data-num="41"></td><td><pre> <span class="token keyword">let</span> max<span class="token punctuation">,</span> min</pre></td></tr><tr><td data-num="42"></td><td><pre> selectedDatas<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">item</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="43"></td><td><pre> <span class="token keyword">let</span> value <span class="token operator">=</span> item<span class="token punctuation">.</span>close <span class="token operator">-</span> item<span class="token punctuation">.</span>close2</pre></td></tr><tr><td data-num="44"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>max <span class="token operator">||</span> value <span class="token operator">></span> max<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="45"></td><td><pre> max <span class="token operator">=</span> value</pre></td></tr><tr><td data-num="46"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="47"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>min <span class="token operator">||</span> value <span class="token operator">&lt;</span> min<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="48"></td><td><pre> min <span class="token operator">=</span> value</pre></td></tr><tr><td data-num="49"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="50"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="51"></td><td><pre> <span class="token comment">// 返回指标最终数据(未选中的数据用空对象替换)</span></pre></td></tr><tr><td data-num="52"></td><td><pre> <span class="token comment">// 必须返回和 dataList 一样条数的数据,否则 title 不会显示</span></pre></td></tr><tr><td data-num="53"></td><td><pre> <span class="token keyword">return</span> allDatas<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">data<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="54"></td><td><pre> <span class="token keyword">let</span> item <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="55"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="56"></td><td><pre> selectedDatas<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">selected<span class="token punctuation">,</span> j</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="57"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>data<span class="token punctuation">.</span>timestamp <span class="token operator">===</span> selected<span class="token punctuation">.</span>timestamp<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="58"></td><td><pre> item<span class="token punctuation">.</span>timestamp <span class="token operator">=</span> selected<span class="token punctuation">.</span>timestamp</pre></td></tr><tr><td data-num="59"></td><td><pre> item<span class="token punctuation">.</span>max <span class="token operator">=</span> max</pre></td></tr><tr><td data-num="60"></td><td><pre> item<span class="token punctuation">.</span>min <span class="token operator">=</span> min</pre></td></tr><tr><td data-num="61"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="62"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="63"></td><td><pre> <span class="token keyword">return</span> item</pre></td></tr><tr><td data-num="64"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="65"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="66"></td><td><pre> <span class="token function-variable function">render</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token parameter"><span class="token punctuation">&#123;</span> ctx<span class="token punctuation">,</span> dataSource<span class="token punctuation">,</span> viewport<span class="token punctuation">,</span> styles<span class="token punctuation">,</span> xAxis<span class="token punctuation">,</span> yAxis <span class="token punctuation">&#125;</span></span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="67"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>dataSource<span class="token punctuation">.</span>technicalIndicatorDataList<span class="token punctuation">.</span>length <span class="token operator">&lt;=</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 无指标数据则不处理</span></pre></td></tr><tr><td data-num="68"></td><td><pre> <span class="token keyword">return</span></pre></td></tr><tr><td data-num="69"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="70"></td><td><pre> <span class="token comment">// X 轴起始像素</span></pre></td></tr><tr><td data-num="71"></td><td><pre> <span class="token keyword">let</span> x <span class="token operator">=</span> xAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="72"></td><td><pre> <span class="token comment">// 标记选中数据的起止位置</span></pre></td></tr><tr><td data-num="73"></td><td><pre> <span class="token keyword">let</span> start</pre></td></tr><tr><td data-num="74"></td><td><pre> <span class="token keyword">let</span> end <span class="token operator">=</span> dataSource<span class="token punctuation">.</span>technicalIndicatorDataList<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span></pre></td></tr><tr><td data-num="75"></td><td><pre> dataSource<span class="token punctuation">.</span>technicalIndicatorDataList<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">kLineData<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="76"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>kLineData<span class="token punctuation">.</span>timestamp<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="77"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>start<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="78"></td><td><pre> start <span class="token operator">=</span> i</pre></td></tr><tr><td data-num="79"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="80"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">&lt;</span> end <span class="token operator">&amp;&amp;</span> <span class="token operator">!</span>dataSource<span class="token punctuation">.</span>technicalIndicatorDataList<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span>timestamp<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="81"></td><td><pre> end <span class="token operator">=</span> i</pre></td></tr><tr><td data-num="82"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="83"></td><td><pre> <span class="token keyword">let</span> max <span class="token operator">=</span> kLineData<span class="token punctuation">.</span>max</pre></td></tr><tr><td data-num="84"></td><td><pre> <span class="token keyword">let</span> min <span class="token operator">=</span> kLineData<span class="token punctuation">.</span>min</pre></td></tr><tr><td data-num="85"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> <span class="token string">'#fff'</span></pre></td></tr><tr><td data-num="86"></td><td><pre> ctx<span class="token punctuation">.</span>textBaseline <span class="token operator">=</span> <span class="token string">'middle'</span></pre></td></tr><tr><td data-num="87"></td><td><pre> ctx<span class="token punctuation">.</span>textAlign <span class="token operator">=</span> <span class="token string">'center'</span></pre></td></tr><tr><td data-num="88"></td><td><pre> <span class="token comment">// 画箱体</span></pre></td></tr><tr><td data-num="89"></td><td><pre> <span class="token comment">// 箱体颜色</span></pre></td></tr><tr><td data-num="90"></td><td><pre> ctx<span class="token punctuation">.</span>strokeStyle <span class="token operator">=</span> <span class="token string">'#DC143C'</span></pre></td></tr><tr><td data-num="91"></td><td><pre> <span class="token comment">//y 轴最高点位置</span></pre></td></tr><tr><td data-num="92"></td><td><pre> <span class="token keyword">let</span> yHigh <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>max<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="93"></td><td><pre> <span class="token comment">//y 轴最低点位置</span></pre></td></tr><tr><td data-num="94"></td><td><pre> <span class="token keyword">let</span> yLow <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>min<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="95"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">beginPath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="96"></td><td><pre> <span class="token comment">// 画笔移动到数据的 x 轴起始点,y 轴最高点</span></pre></td></tr><tr><td data-num="97"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yHigh<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="98"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">===</span> start<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 如果是第一条数据则需要画一条竖线</span></pre></td></tr><tr><td data-num="99"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yLow<span class="token punctuation">)</span> <span class="token comment">// 画竖线</span></pre></td></tr><tr><td data-num="100"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yHigh<span class="token punctuation">)</span> <span class="token comment">// 画笔移回</span></pre></td></tr><tr><td data-num="101"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="102"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">===</span> end<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 如果是最后一条数据则需要画一条竖线</span></pre></td></tr><tr><td data-num="103"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yLow<span class="token punctuation">)</span> <span class="token comment">// 画竖线</span></pre></td></tr><tr><td data-num="104"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillText</span><span class="token punctuation">(</span>max<span class="token punctuation">,</span> x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>dataSpace<span class="token punctuation">,</span> yHigh<span class="token punctuation">)</span> <span class="token comment">// 标识箱体最高点的值</span></pre></td></tr><tr><td data-num="105"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yLow<span class="token punctuation">)</span> <span class="token comment">// 画笔移动到 Y 轴最低点</span></pre></td></tr><tr><td data-num="106"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillText</span><span class="token punctuation">(</span>min<span class="token punctuation">,</span> x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>dataSpace<span class="token punctuation">,</span> yLow<span class="token punctuation">)</span> <span class="token comment">// 标识箱体最低点的值</span></pre></td></tr><tr><td data-num="107"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 画两条横线,一条在 y 轴最高点,一条在 y 轴最低点</span></pre></td></tr><tr><td data-num="108"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>dataSpace<span class="token punctuation">,</span> yHigh<span class="token punctuation">)</span> <span class="token comment">//y 轴最高点横线</span></pre></td></tr><tr><td data-num="109"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yLow<span class="token punctuation">)</span> <span class="token comment">// 画笔移动到 y 轴最低点</span></pre></td></tr><tr><td data-num="110"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>dataSpace<span class="token punctuation">,</span> yLow<span class="token punctuation">)</span> <span class="token comment">//y 轴最低点横线</span></pre></td></tr><tr><td data-num="111"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="112"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">stroke</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="113"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">closePath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="114"></td><td><pre> <span class="token comment">// 画黄金线</span></pre></td></tr><tr><td data-num="115"></td><td><pre> <span class="token comment">// 黄金线颜色</span></pre></td></tr><tr><td data-num="116"></td><td><pre> ctx<span class="token punctuation">.</span>strokeStyle <span class="token operator">=</span> <span class="token string">'#ffffff'</span></pre></td></tr><tr><td data-num="117"></td><td><pre> <span class="token comment">// 根据黄金线参数计算黄金线的值</span></pre></td></tr><tr><td data-num="118"></td><td><pre> <span class="token keyword">let</span> goldenSectionLineA <span class="token operator">=</span> <span class="token punctuation">(</span>max <span class="token operator">-</span> min<span class="token punctuation">)</span> <span class="token operator">*</span> goldenSectionA <span class="token operator">+</span> min</pre></td></tr><tr><td data-num="119"></td><td><pre> <span class="token keyword">let</span> goldenSectionLineB <span class="token operator">=</span> <span class="token punctuation">(</span>max <span class="token operator">-</span> min<span class="token punctuation">)</span> <span class="token operator">*</span> goldenSectionB <span class="token operator">+</span> min</pre></td></tr><tr><td data-num="120"></td><td><pre> <span class="token keyword">let</span> goldenSectionLineC <span class="token operator">=</span> <span class="token punctuation">(</span>max <span class="token operator">-</span> min<span class="token punctuation">)</span> <span class="token operator">*</span> goldenSectionC <span class="token operator">+</span> min</pre></td></tr><tr><td data-num="121"></td><td><pre> <span class="token keyword">let</span> goldenSectionLineD <span class="token operator">=</span> <span class="token punctuation">(</span>max <span class="token operator">-</span> min<span class="token punctuation">)</span> <span class="token operator">*</span> goldenSectionD <span class="token operator">+</span> min</pre></td></tr><tr><td data-num="122"></td><td><pre> <span class="token keyword">let</span> goldenSectionLineE <span class="token operator">=</span> <span class="token punctuation">(</span>max <span class="token operator">-</span> min<span class="token punctuation">)</span> <span class="token operator">*</span> goldenSectionE <span class="token operator">+</span> min</pre></td></tr><tr><td data-num="123"></td><td><pre> <span class="token comment">// 根据黄金线的值获取 Y 轴高度</span></pre></td></tr><tr><td data-num="124"></td><td><pre> <span class="token keyword">let</span> yA <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>goldenSectionLineA<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="125"></td><td><pre> <span class="token keyword">let</span> yB <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>goldenSectionLineB<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="126"></td><td><pre> <span class="token keyword">let</span> yC <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>goldenSectionLineC<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="127"></td><td><pre> <span class="token keyword">let</span> yD <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>goldenSectionLineD<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="128"></td><td><pre> <span class="token keyword">let</span> yE <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>goldenSectionLineE<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="129"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">beginPath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="130"></td><td><pre> <span class="token comment">// 画第一条黄金线</span></pre></td></tr><tr><td data-num="131"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yA<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="132"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>barSpace <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">,</span> yA<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="133"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">===</span> end<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 是否最后一条数据,如果是则需要标识黄金线的值</span></pre></td></tr><tr><td data-num="134"></td><td><pre> <span class="token comment">// 标识第一条黄金线的值</span></pre></td></tr><tr><td data-num="135"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillText</span><span class="token punctuation">(</span>goldenSectionLineA<span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span> x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>dataSpace<span class="token punctuation">,</span> yA<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="136"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="137"></td><td><pre> <span class="token comment">// 画第二条黄金线</span></pre></td></tr><tr><td data-num="138"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yB<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="139"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>barSpace <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">,</span> yB<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="140"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">===</span> end<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="141"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillText</span><span class="token punctuation">(</span>goldenSectionLineB<span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span> x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>dataSpace<span class="token punctuation">,</span> yB<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="142"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="143"></td><td><pre> <span class="token comment">// 画第三条黄金线</span></pre></td></tr><tr><td data-num="144"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yC<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="145"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>barSpace <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">,</span> yC<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="146"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">===</span> end<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="147"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillText</span><span class="token punctuation">(</span>goldenSectionLineC<span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span> x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>dataSpace<span class="token punctuation">,</span> yC<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="148"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="149"></td><td><pre> <span class="token comment">// 画第四条黄金线</span></pre></td></tr><tr><td data-num="150"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yD<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="151"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>barSpace <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">,</span> yD<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="152"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">===</span> end<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="153"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillText</span><span class="token punctuation">(</span>goldenSectionLineD<span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span> x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>dataSpace<span class="token punctuation">,</span> yD<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="154"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="155"></td><td><pre> <span class="token comment">// 画第五条黄金线</span></pre></td></tr><tr><td data-num="156"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">moveTo</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> yE<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="157"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">lineTo</span><span class="token punctuation">(</span>x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>barSpace <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">,</span> yE<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="158"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">===</span> end<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="159"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillText</span><span class="token punctuation">(</span>goldenSectionLineE<span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span> x <span class="token operator">+</span> viewport<span class="token punctuation">.</span>dataSpace<span class="token punctuation">,</span> yE<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="160"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="161"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">stroke</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="162"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">closePath</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="163"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="164"></td><td><pre> <span class="token comment">// 计算 X 轴的下一个位置</span></pre></td></tr><tr><td data-num="165"></td><td><pre> x <span class="token operator">+=</span> viewport<span class="token punctuation">.</span>dataSpace</pre></td></tr><tr><td data-num="166"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="167"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="168"></td><td><pre><span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr></table></figure><h4 id="结语"><a class="anchor" href="#结语">#</a> 结语</h4>
|
||
<div class="note info">
|
||
<p>以上代码只是箱体的指标模版,还需要根据业务逻辑在标记上实现点击事件,然后通过事件动态添加移除箱体指标。</p>
|
||
</div>
|
||
]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/11/30/%E5%B0%86nginx%E6%9B%BF%E6%8D%A2%E4%B8%BAtengine/</guid>
|
||
<title>将nginx替换为tengine</title>
|
||
<link>https://hitoli.com/2022/11/30/%E5%B0%86nginx%E6%9B%BF%E6%8D%A2%E4%B8%BAtengine/</link>
|
||
<category term="Linux" scheme="https://hitoli.com/categories/Linux/" />
|
||
<category term="服务" scheme="https://hitoli.com/categories/Linux/%E6%9C%8D%E5%8A%A1/" />
|
||
<category term="Nginx" scheme="https://hitoli.com/categories/Linux/%E6%9C%8D%E5%8A%A1/Nginx/" />
|
||
<category term="Nginx" scheme="https://hitoli.com/tags/Nginx/" />
|
||
<category term="Tengine" scheme="https://hitoli.com/tags/Tengine/" />
|
||
<pubDate>Wed, 30 Nov 2022 17:05:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="介绍"><a class="anchor" href="#介绍">#</a> 介绍</h4>
|
||
<div class="note info">
|
||
<p>Tengine 的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的 Web 平台。从 2011 年 12 月开始,Tengine 成为一个开源项目。现在,它由 Tengine 团队开发和维护。Tengine 团队的核心成员来自于淘宝、搜狗等互联网企业。</p>
|
||
</div>
|
||
<p>tengine 简单来说就是淘宝自己基于 nginx 优化的网页引擎,在 nginx 原先基础上继续保持兼容,同时功能扩展,效率提高,可以看到目前淘宝网在这么多人同时使用的情况下依然稳定,我们足以相信 tengine,由于它是 nginx 的一个分生版本,所以几乎完全兼容 nginx,所以我认为 tengine 是搭建 lnmp 环境的不二之选。</p>
|
||
<h4 id="下载"><a class="anchor" href="#下载">#</a> 下载</h4>
|
||
<p>首先访问<span class="exturl" data-url="aHR0cDovL3RlbmdpbmUudGFvYmFvLm9yZy8="> tengine 官方网站</span>,获取最新的下载地址。<br />
|
||
<code>wget http://tengine.taobao.org/download/tengine-2.3.3.tar.gz</code></p>
|
||
<h4 id="获取编译参数"><a class="anchor" href="#获取编译参数">#</a> 获取编译参数</h4>
|
||
<p><code>nginx -V</code></p>
|
||
<h4 id="编译"><a class="anchor" href="#编译">#</a> 编译</h4>
|
||
<p><code>./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-http_uwsgi_module --without-http_scgi_module</code> <br />
|
||
./configure 后面的参数是上一步获取的</p>
|
||
<h4 id="make"><a class="anchor" href="#make">#</a> Make</h4>
|
||
<p><code>make 或者 make -j 内核数</code> <br />
|
||
生成的文件在 objs 目录下</p>
|
||
<h4 id="替换"><a class="anchor" href="#替换">#</a> 替换</h4>
|
||
<p>停止 nginx 服务 <code>service nginx stop</code> <br />
|
||
查看 nginx 目录 <code>whereis nginx</code> <br />
|
||
备份旧 nginx <code>mv /usr/sbin/nginx /usr/sbin/nginx.old</code> <br />
|
||
拷贝 objs 下的 nginx 替换旧 nginx <code>cp ./objs/nginx /usr/sbin/</code> <br />
|
||
备份旧 so 文件<br />
|
||
拷贝 objs 下的 so 文件替换旧的 so 文件 <code>cp ./objs/*.so /usr/lib/nginx/modules/</code></p>
|
||
<h4 id="测试"><a class="anchor" href="#测试">#</a> 测试</h4>
|
||
<p><code>nginx -t</code> 如果打印 test is successful 则表示替换成功。<br />
|
||
然后执行 service nginx start 进行启动即可</p>
|
||
]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/11/30/Nginx%E5%8A%A8%E6%80%81%E8%A7%A3%E6%9E%90%E5%9F%9F%E5%90%8D%E6%96%B9%E6%A1%88/</guid>
|
||
<title>Nginx动态解析域名方案</title>
|
||
<link>https://hitoli.com/2022/11/30/Nginx%E5%8A%A8%E6%80%81%E8%A7%A3%E6%9E%90%E5%9F%9F%E5%90%8D%E6%96%B9%E6%A1%88/</link>
|
||
<category term="Linux" scheme="https://hitoli.com/categories/Linux/" />
|
||
<category term="服务" scheme="https://hitoli.com/categories/Linux/%E6%9C%8D%E5%8A%A1/" />
|
||
<category term="Nginx" scheme="https://hitoli.com/categories/Linux/%E6%9C%8D%E5%8A%A1/Nginx/" />
|
||
<category term="Nginx" scheme="https://hitoli.com/tags/Nginx/" />
|
||
<category term="Tengine" scheme="https://hitoli.com/tags/Tengine/" />
|
||
<category term="动态域名解析" scheme="https://hitoli.com/tags/%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90/" />
|
||
<pubDate>Wed, 30 Nov 2022 16:35:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="应用场景"><a class="anchor" href="#应用场景">#</a> 应用场景:</h4>
|
||
<p>由于有时候 nginx 代理的时候,第三方域名对应的 ip 可能发生变化,然而没有提前通知,然而如果不配置什么,nginx 又不能智能解析,因此 nginx 动态解析域名就比较重要。</p>
|
||
<h4 id="使用模块nginx-upstream-dynamic-servers"><a class="anchor" href="#使用模块nginx-upstream-dynamic-servers">#</a> 使用模块 nginx-upstream-dynamic-servers</h4>
|
||
<p>该模块在启动 nginx 的时候会对域名进行一次解析,解析完成后,在 DNS 服务器设定的 TTL 过期时间内不会再次更新,在 TTL 过期后则会再次发起域名解析请求更新域名所对应的 IP 地址。</p>
|
||
<p>需要在 nginx 的配置文件中的 http 配置域内指定使用的 DNS 服务器,在 upstream 中需要进行域名解析的 server 后面添加 resolve 参数。</p>
|
||
<p>例:</p>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>http <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre></pre></td></tr><tr><td data-num="3"></td><td><pre> resolver ip;</pre></td></tr><tr><td data-num="4"></td><td><pre></pre></td></tr><tr><td data-num="5"></td><td><pre> upstream test <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="6"></td><td><pre></pre></td></tr><tr><td data-num="7"></td><td><pre> server www.xxx.com<span class="token punctuation">:</span>8080 resolve;</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 punctuation">&#125;</span></pre></td></tr><tr><td data-num="10"></td><td><pre></pre></td></tr><tr><td data-num="11"></td><td><pre> server <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="12"></td><td><pre></pre></td></tr><tr><td data-num="13"></td><td><pre> listen 8080;</pre></td></tr><tr><td data-num="14"></td><td><pre></pre></td></tr><tr><td data-num="15"></td><td><pre> client_body_buffer_size 10m;</pre></td></tr><tr><td data-num="16"></td><td><pre></pre></td></tr><tr><td data-num="17"></td><td><pre> server_name localhost;</pre></td></tr><tr><td data-num="18"></td><td><pre></pre></td></tr><tr><td data-num="19"></td><td><pre> location / <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="20"></td><td><pre> </pre></td></tr><tr><td data-num="21"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//test;</pre></td></tr><tr><td data-num="22"></td><td><pre> </pre></td></tr><tr><td data-num="23"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="24"></td><td><pre> </pre></td></tr><tr><td data-num="25"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="26"></td><td><pre></pre></td></tr><tr><td data-num="27"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><p>缺点:</p>
|
||
<p>1、每次解析域名之后,会从 DNS 服务器获取到改 DNS 的 TTL,在 TTL 期限内不会再次解析,所以如果目标域名发生改变,nginx 不会更新解析,知道 TTL 过期。</p>
|
||
<p>2、DNS 服务器在 http 配置域配置全,不能在 location 中细分指定。</p>
|
||
<h4 id="使用模块ngx_upstream_jdomain"><a class="anchor" href="#使用模块ngx_upstream_jdomain">#</a> 使用模块 ngx_upstream_jdomain</h4>
|
||
<p>在 http 配置域中配置 DNS 服务器,在 upstream 中按照这个模块的格式配置,支持设置每隔多少秒进行一次解析(抓包分析过设置 interval 可指定解析间隔),如果解析失败则使用缓存中的上一次解析结果的 IP 地址访问。</p>
|
||
<p>例:</p>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>http <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre></pre></td></tr><tr><td data-num="3"></td><td><pre> resolver ip;</pre></td></tr><tr><td data-num="4"></td><td><pre></pre></td></tr><tr><td data-num="5"></td><td><pre> upstream test <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="6"></td><td><pre></pre></td></tr><tr><td data-num="7"></td><td><pre> jdomain www.xxx.com port=8080 interval=10; <span class="token comment">#指定域名和端口,每隔 10 秒进行一次解析</span></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 punctuation">&#125;</span></pre></td></tr><tr><td data-num="10"></td><td><pre></pre></td></tr><tr><td data-num="11"></td><td><pre> server <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="12"></td><td><pre></pre></td></tr><tr><td data-num="13"></td><td><pre> listen 8080;</pre></td></tr><tr><td data-num="14"></td><td><pre></pre></td></tr><tr><td data-num="15"></td><td><pre> client_body_buffer_size 10m;</pre></td></tr><tr><td data-num="16"></td><td><pre></pre></td></tr><tr><td data-num="17"></td><td><pre> server_name localhost;</pre></td></tr><tr><td data-num="18"></td><td><pre></pre></td></tr><tr><td data-num="19"></td><td><pre> location / <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="20"></td><td><pre></pre></td></tr><tr><td data-num="21"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//test;</pre></td></tr><tr><td data-num="22"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="23"></td><td><pre> </pre></td></tr><tr><td data-num="24"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="25"></td><td><pre></pre></td></tr><tr><td data-num="26"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><p>缺点:DNS 服务器只能在 http 配域中全局配置</p>
|
||
<h4 id="原生nginx使用set命令使用变量"><a class="anchor" href="#原生nginx使用set命令使用变量">#</a> 原生 nginx 使用 set 命令使用变量</h4>
|
||
<p>将域名置于变量中,在对 proxy_pass 进行转发的时候域名调用变量,可以按照 valid,设置的时间参数间隔地对变量中的域名进行解析。</p>
|
||
<p>例:</p>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>server <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre></pre></td></tr><tr><td data-num="3"></td><td><pre> listen 8080;</pre></td></tr><tr><td data-num="4"></td><td><pre></pre></td></tr><tr><td data-num="5"></td><td><pre> client_body_buffer_size 10m;</pre></td></tr><tr><td data-num="6"></td><td><pre></pre></td></tr><tr><td data-num="7"></td><td><pre> server_name localhost;</pre></td></tr><tr><td data-num="8"></td><td><pre></pre></td></tr><tr><td data-num="9"></td><td><pre> location / <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="10"></td><td><pre></pre></td></tr><tr><td data-num="11"></td><td><pre> resolver ip valid=3s;</pre></td></tr><tr><td data-num="12"></td><td><pre></pre></td></tr><tr><td data-num="13"></td><td><pre> set $five "www.xxx.com<span class="token punctuation">:</span>8080";</pre></td></tr><tr><td data-num="14"></td><td><pre></pre></td></tr><tr><td data-num="15"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//$<span class="token punctuation">&#123;</span>five<span class="token punctuation">&#125;</span>;</pre></td></tr><tr><td data-num="16"></td><td><pre></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><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><p>缺点:upstream 中不支持设置变量,因此后端有多台的时候该方案不可行。</p>
|
||
<h4 id="tengine"><a class="anchor" href="#tengine">#</a> Tengine</h4>
|
||
<p>在 upstream 中配置 dynamic_resolve,在 location 配置域中指定 NDS 服务器,按照 valid 设置的时间间隔地进行地址解析。<span class="label danger">只支持 http 模块的动态域名解析</span></p>
|
||
<p>例:</p>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>http <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre></pre></td></tr><tr><td data-num="3"></td><td><pre> upstream test <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="4"></td><td><pre></pre></td></tr><tr><td data-num="5"></td><td><pre> dynamic_resolve fallback=stale fail_timeout=30s;</pre></td></tr><tr><td data-num="6"></td><td><pre></pre></td></tr><tr><td data-num="7"></td><td><pre> server www.xxx.com<span class="token punctuation">:</span>8080;</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 punctuation">&#125;</span></pre></td></tr><tr><td data-num="10"></td><td><pre></pre></td></tr><tr><td data-num="11"></td><td><pre> server <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="12"></td><td><pre></pre></td></tr><tr><td data-num="13"></td><td><pre> listen 8080;</pre></td></tr><tr><td data-num="14"></td><td><pre></pre></td></tr><tr><td data-num="15"></td><td><pre> location / <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="16"></td><td><pre></pre></td></tr><tr><td data-num="17"></td><td><pre> resolver ip valid=3s;</pre></td></tr><tr><td data-num="18"></td><td><pre></pre></td></tr><tr><td data-num="19"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//test;</pre></td></tr><tr><td data-num="20"></td><td><pre></pre></td></tr><tr><td data-num="21"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="22"></td><td><pre></pre></td></tr><tr><td data-num="23"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="24"></td><td><pre></pre></td></tr><tr><td data-num="25"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><p>缺点:需要将 nginx 的 bin 文件替换为 tengine 的 bin 文件。</p>
|
||
]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/11/30/Nginx%E9%85%8D%E7%BD%AEstream%E8%B8%A9%E5%9D%91/</guid>
|
||
<title>Nginx配置stream踩坑</title>
|
||
<link>https://hitoli.com/2022/11/30/Nginx%E9%85%8D%E7%BD%AEstream%E8%B8%A9%E5%9D%91/</link>
|
||
<category term="Linux" scheme="https://hitoli.com/categories/Linux/" />
|
||
<category term="服务" scheme="https://hitoli.com/categories/Linux/%E6%9C%8D%E5%8A%A1/" />
|
||
<category term="Nginx" scheme="https://hitoli.com/categories/Linux/%E6%9C%8D%E5%8A%A1/Nginx/" />
|
||
<category term="Nginx" scheme="https://hitoli.com/tags/Nginx/" />
|
||
<category term="stream" scheme="https://hitoli.com/tags/stream/" />
|
||
<category term="Tengine" scheme="https://hitoli.com/tags/Tengine/" />
|
||
<pubDate>Wed, 30 Nov 2022 16:09:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||
<p>stream 模块一般用于 TCP/UDP 数据流的代理和负载均衡,可以通过 stream 模块代理转发 TCP 消息。我是用来转发 mysql、gitee 等连接的,有天 ip 发生了变动导致连接不上。前期试过配置<span class="blue"> resolver 114.114.114.114 valid=60s;</span> 来动态解析域名,结果 stream 模块不支持 set 函数,这就导致 ip 变动后必须手动重启或者 reload 一下 nginx 才能正常连接。后面经过搜索发现有人说用 Tengine 替代 nginx 可以实现就试了试,结果发现<span class="red"> Tengine 只能实现 http 下的动态域名解析</span>,至此问题依旧。没办法,我只能通过定时任务加脚本判断 ip 是否变动,如果变动就 reload 一下 nginx。</p>
|
||
<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><span class="token comment">#使用 crontab -e 命令添加定时任务 */1 * * * * sh /home/xxx/autoReloadNginx.sh</span></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token assign-left variable">home</span><span class="token operator">=</span><span class="token string">"/home/xxx"</span> <span class="token comment">#指定 home 路径,如果使用 `pwd` 则 domainIP.txt 生成在当前用户目录下</span></pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token assign-left variable">domain</span><span class="token operator">=</span>xxx.xxx.cn</pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token assign-left variable">IP</span><span class="token operator">=</span><span class="token variable"><span class="token variable">`</span><span class="token function">ping</span> <span class="token parameter variable">-4</span> <span class="token parameter variable">-c</span> <span class="token number">4</span> $domain <span class="token operator">|</span> <span class="token function">grep</span> from <span class="token operator">|</span> <span class="token function">tail</span> <span class="token parameter variable">-n</span> <span class="token number">1</span> <span class="token operator">|</span> <span class="token function">awk</span> <span class="token parameter variable">-F</span> <span class="token string">' '</span> <span class="token string">'&#123;print $4&#125;'</span><span class="token variable">`</span></span></pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token assign-left variable">regex</span><span class="token operator">=</span><span class="token string">"<span class="token entity" title="\b">\b</span>(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])<span class="token entity" title="\b">\b</span>"</span></pre></td></tr><tr><td data-num="7"></td><td><pre><span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token variable"><span class="token variable">`</span><span class="token builtin class-name">echo</span> $IP <span class="token operator">|</span> <span class="token function">egrep</span> $regex <span class="token operator">|</span> <span class="token function">wc</span> <span class="token parameter variable">-l</span><span class="token variable">`</span></span> <span class="token parameter variable">-eq</span> <span class="token number">1</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></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 operator">!</span> <span class="token parameter variable">-f</span> <span class="token string">"<span class="token variable">$home</span>/domainIP.txt"</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 function">touch</span> <span class="token variable">$home</span>/domainIP.txt</pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token builtin class-name">echo</span> <span class="token variable">$IP</span> <span class="token operator">></span> <span class="token variable">$home</span>/domainIP.txt</pre></td></tr><tr><td data-num="11"></td><td><pre> <span class="token keyword">else</span></pre></td></tr><tr><td data-num="12"></td><td><pre> <span class="token assign-left variable">oldIP</span><span class="token operator">=</span><span class="token variable"><span class="token variable">`</span><span class="token function">cat</span> $home/domainIP.txt<span class="token variable">`</span></span></pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$IP</span>"</span> <span class="token operator">!=</span> <span class="token string">"<span class="token variable">$oldIP</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="14"></td><td><pre> nginx <span class="token parameter variable">-s</span> reload</pre></td></tr><tr><td data-num="15"></td><td><pre> <span class="token builtin class-name">echo</span> <span class="token variable">$IP</span> <span class="token operator">></span> <span class="token variable">$home</span>/domainIP.txt</pre></td></tr><tr><td data-num="16"></td><td><pre> <span class="token keyword">else</span></pre></td></tr><tr><td data-num="17"></td><td><pre> <span class="token builtin class-name">echo</span> <span class="token string">"The domain name ip has not changed"</span></pre></td></tr><tr><td data-num="18"></td><td><pre> <span class="token keyword">fi</span></pre></td></tr><tr><td data-num="19"></td><td><pre> <span class="token keyword">fi</span></pre></td></tr><tr><td data-num="20"></td><td><pre><span class="token keyword">else</span></pre></td></tr><tr><td data-num="21"></td><td><pre> <span class="token builtin class-name">echo</span> <span class="token string">"The domain name resolution is incorrect"</span></pre></td></tr><tr><td data-num="22"></td><td><pre><span class="token keyword">fi</span></pre></td></tr></table></figure> ]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/11/24/KLineChart%E5%AE%9E%E7%8E%B0%E4%B8%80%E5%B9%85%E5%9B%BE%E4%B8%8A%E7%94%BB%E5%A4%9A%E4%B8%AA%E8%9C%A1%E7%83%9BK%E7%BA%BF/</guid>
|
||
<title>KLineChart实现一幅图上画多个蜡烛K线</title>
|
||
<link>https://hitoli.com/2022/11/24/KLineChart%E5%AE%9E%E7%8E%B0%E4%B8%80%E5%B9%85%E5%9B%BE%E4%B8%8A%E7%94%BB%E5%A4%9A%E4%B8%AA%E8%9C%A1%E7%83%9BK%E7%BA%BF/</link>
|
||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||
<category term="KLineChart" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/KLineChart/" />
|
||
<category term="KLineChart" scheme="https://hitoli.com/tags/KLineChart/" />
|
||
<category term="K线" scheme="https://hitoli.com/tags/K%E7%BA%BF/" />
|
||
<category term="蜡烛图" scheme="https://hitoli.com/tags/%E8%9C%A1%E7%83%9B%E5%9B%BE/" />
|
||
<pubDate>Thu, 24 Nov 2022 08:53:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||
<p>最近接到一个任务是通过<span class="exturl" data-url="aHR0cHM6Ly9rbGluZWNoYXJ0cy5jb20vemgtQ04vZ3VpZGU="> KLineChart</span><span class="label info">✔️8.6.1</span> 实现在一幅图上画两个合约的蜡烛图。研究 api 发现并没有通过配置实现的方法,于是联系作者沟通得知需要自己画图实现。于是有了本篇文章。<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/24/KLineChart.jpg" alt="KLineChart.jpg" /></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">let</span> shortName <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>constant<span class="token punctuation">.</span>periodTypeEnum<span class="token punctuation">.</span><span class="token function">getNameByCode</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>klineType<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">' 合约2:'</span> <span class="token operator">+</span> <span class="token keyword">this</span><span class="token punctuation">.</span>currentInstrumentId</pre></td></tr><tr><td data-num="2"></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="3"></td><td><pre> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'custom_candle_solid'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token literal-property property">shortName</span><span class="token operator">:</span> shortName<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">bar</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token literal-property property">upColor</span><span class="token operator">:</span> <span class="token string">'#EF5350'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token literal-property property">downColor</span><span class="token operator">:</span> <span class="token string">'#26A69A'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token literal-property property">noChangeColor</span><span class="token operator">:</span> <span class="token string">'#888889'</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="11"></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="12"></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">'open'</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">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="13"></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">'close'</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">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="14"></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">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="15"></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><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">&#125;</span></pre></td></tr><tr><td data-num="16"></td><td><pre> <span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="17"></td><td><pre> <span class="token function-variable function">calcTechnicalIndicator</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token parameter">dataList<span class="token punctuation">,</span> <span class="token punctuation">&#123;</span> params<span class="token punctuation">,</span> plots <span class="token punctuation">&#125;</span></span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="18"></td><td><pre> <span class="token keyword">return</span> dataList<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">kLineData<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="19"></td><td><pre> <span class="token keyword">return</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="20"></td><td><pre> <span class="token literal-property property">instrumentId</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>instrumentId<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="21"></td><td><pre> <span class="token literal-property property">timestamp</span><span class="token operator">:</span> <span class="token function">getDateTime</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span>kLineData<span class="token punctuation">.</span>timestamp<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="22"></td><td><pre> <span class="token literal-property property">open</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>open<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="23"></td><td><pre> <span class="token literal-property property">close</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>close<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="24"></td><td><pre> <span class="token literal-property property">high</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>high<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="25"></td><td><pre> <span class="token literal-property property">low</span><span class="token operator">:</span> kLineData<span class="token punctuation">.</span>low</pre></td></tr><tr><td data-num="26"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="27"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="28"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="29"></td><td><pre> <span class="token function-variable function">render</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token parameter"><span class="token punctuation">&#123;</span> ctx<span class="token punctuation">,</span> dataSource<span class="token punctuation">,</span> viewport<span class="token punctuation">,</span> styles<span class="token punctuation">,</span> xAxis<span class="token punctuation">,</span> yAxis <span class="token punctuation">&#125;</span></span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="30"></td><td><pre> <span class="token comment">// X 轴起始像素</span></pre></td></tr><tr><td data-num="31"></td><td><pre> <span class="token keyword">let</span> x <span class="token operator">=</span> xAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="32"></td><td><pre> dataSource<span class="token punctuation">.</span>technicalIndicatorDataList<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">kLineData<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="33"></td><td><pre> <span class="token keyword">let</span> open <span class="token operator">=</span> kLineData<span class="token punctuation">.</span>open</pre></td></tr><tr><td data-num="34"></td><td><pre> <span class="token keyword">let</span> close <span class="token operator">=</span> kLineData<span class="token punctuation">.</span>close</pre></td></tr><tr><td data-num="35"></td><td><pre> <span class="token keyword">let</span> high <span class="token operator">=</span> kLineData<span class="token punctuation">.</span>high</pre></td></tr><tr><td data-num="36"></td><td><pre> <span class="token keyword">let</span> low <span class="token operator">=</span> kLineData<span class="token punctuation">.</span>low</pre></td></tr><tr><td data-num="37"></td><td><pre> <span class="token comment">// 给蜡烛柱设置颜色</span></pre></td></tr><tr><td data-num="38"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>close <span class="token operator">></span> open<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 涨</span></pre></td></tr><tr><td data-num="39"></td><td><pre> ctx<span class="token punctuation">.</span>strokeStyle <span class="token operator">=</span> <span class="token string">'#EF5350'</span></pre></td></tr><tr><td data-num="40"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> <span class="token string">'#EF5350'</span></pre></td></tr><tr><td data-num="41"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>close <span class="token operator">&lt;</span> open<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 跌</span></pre></td></tr><tr><td data-num="42"></td><td><pre> ctx<span class="token punctuation">.</span>strokeStyle <span class="token operator">=</span> <span class="token string">'#26A69A'</span></pre></td></tr><tr><td data-num="43"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> <span class="token string">'#26A69A'</span></pre></td></tr><tr><td data-num="44"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span> <span class="token comment">// 未变动</span></pre></td></tr><tr><td data-num="45"></td><td><pre> ctx<span class="token punctuation">.</span>strokeStyle <span class="token operator">=</span> <span class="token string">'#888889'</span></pre></td></tr><tr><td data-num="46"></td><td><pre> ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> <span class="token string">'#888889'</span></pre></td></tr><tr><td data-num="47"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="48"></td><td><pre> <span class="token comment">// 获取开盘价 Y 轴像素</span></pre></td></tr><tr><td data-num="49"></td><td><pre> <span class="token keyword">let</span> openY <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>open<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="50"></td><td><pre> <span class="token comment">// 获取收盘价 Y 轴像素</span></pre></td></tr><tr><td data-num="51"></td><td><pre> <span class="token keyword">let</span> closeY <span class="token operator">=</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>close<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="52"></td><td><pre> <span class="token comment">// 开、收、高、低的 Y 轴像素</span></pre></td></tr><tr><td data-num="53"></td><td><pre> <span class="token keyword">let</span> priceY <span class="token operator">=</span> <span class="token punctuation">[</span>openY<span class="token punctuation">,</span> closeY<span class="token punctuation">,</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>high<span class="token punctuation">)</span><span class="token punctuation">,</span> yAxis<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span>low<span class="token punctuation">)</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="54"></td><td><pre> <span class="token comment">// 从低到高排序</span></pre></td></tr><tr><td data-num="55"></td><td><pre> priceY<span class="token punctuation">.</span><span class="token function">sort</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">a<span class="token punctuation">,</span> b</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="56"></td><td><pre> <span class="token keyword">return</span> a <span class="token operator">-</span> b</pre></td></tr><tr><td data-num="57"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="58"></td><td><pre> <span class="token comment">// 画蜡烛柱上部</span></pre></td></tr><tr><td data-num="59"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillRect</span><span class="token punctuation">(</span>x <span class="token operator">-</span> <span class="token number">0.5</span><span class="token punctuation">,</span> priceY<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> priceY<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">-</span> priceY<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="60"></td><td><pre> <span class="token comment">// 画蜡烛柱下部</span></pre></td></tr><tr><td data-num="61"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillRect</span><span class="token punctuation">(</span>x <span class="token operator">-</span> <span class="token number">0.5</span><span class="token punctuation">,</span> priceY<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> priceY<span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span> <span class="token operator">-</span> priceY<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="62"></td><td><pre> <span class="token comment">// 蜡烛柱高度</span></pre></td></tr><tr><td data-num="63"></td><td><pre> <span class="token keyword">var</span> barHeight <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">max</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> priceY<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">-</span> priceY<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="64"></td><td><pre> <span class="token comment">// 画蜡烛柱中部 (viewport.barSpace 蜡烛柱的宽度,随放大缩小操作而变化)</span></pre></td></tr><tr><td data-num="65"></td><td><pre> ctx<span class="token punctuation">.</span><span class="token function">fillRect</span><span class="token punctuation">(</span>x <span class="token operator">-</span> <span class="token punctuation">(</span>viewport<span class="token punctuation">.</span>barSpace <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span> priceY<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> viewport<span class="token punctuation">.</span>barSpace<span class="token punctuation">,</span> barHeight<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="66"></td><td><pre> <span class="token comment">// 下一蜡烛柱 X 轴的起始位置(viewport.dataSpace 蜡烛柱的宽度加蜡烛柱之间的间隔,随放大缩小操作而变化)</span></pre></td></tr><tr><td data-num="67"></td><td><pre> x <span class="token operator">+=</span> viewport<span class="token punctuation">.</span>dataSpace</pre></td></tr><tr><td data-num="68"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="69"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="70"></td><td><pre><span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr></table></figure><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">createTechnicalIndicator</span><span class="token punctuation">(</span><span class="token string">'custom_candle_solid'</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span> <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'paneId10'</span><span class="token punctuation">,</span> <span class="token literal-property property">dragEnabled</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token keyword">this</span><span class="token punctuation">.</span>height <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr></table></figure> ]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/11/21/mysql%E6%95%B0%E6%8D%AE%E5%BA%93auto-increment%E8%87%AA%E5%A2%9E%E9%95%BF%E4%B8%8D%E5%8F%98%E7%9A%84%E5%A4%84%E7%90%86%E6%96%B9%E6%B3%95/</guid>
|
||
<title>mysql数据库auto_increment自增长不变的处理方法</title>
|
||
<link>https://hitoli.com/2022/11/21/mysql%E6%95%B0%E6%8D%AE%E5%BA%93auto-increment%E8%87%AA%E5%A2%9E%E9%95%BF%E4%B8%8D%E5%8F%98%E7%9A%84%E5%A4%84%E7%90%86%E6%96%B9%E6%B3%95/</link>
|
||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||
<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="mysql" scheme="https://hitoli.com/tags/mysql/" />
|
||
<pubDate>Mon, 21 Nov 2022 14:15:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="问题描述"><a class="anchor" href="#问题描述">#</a> 问题描述</h4>
|
||
<p>今天无意中发现原本能正常增加的 id 突然不变了,查看 sql 发现是取的对应表的自增 id。虽然存到表中的新数据自增 id 变化了,但返回的 id 总是不变。经过查询发现表的自增 id 是存在 information_schema 库中的 tables 表中。tables 表中存储了所有表的对应信息,其中有个 auto_increment 字段存储的就是对应表的下一个自增值。但是 mysql 在新版本中修改了此值的更新规则,老版本中是实时更新,新版本修改为 24 小时更新一次。为了不修改原代码中的逻辑,只能通过修改 mysql 配置使项目正常工作了。</p>
|
||
<h4 id="解决办法"><a class="anchor" href="#解决办法">#</a> 解决办法</h4>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>mysql数据库auto_increment自增长不变的处理方法</pre></td></tr><tr><td data-num="2"></td><td><pre>修改/etc/mysql/mysql.conf.d/mysqld.cnf</pre></td></tr><tr><td data-num="3"></td><td><pre>增加一行information_schema_stats_expiry = 0</pre></td></tr><tr><td data-num="4"></td><td><pre>保存后重启mysql</pre></td></tr><tr><td data-num="5"></td><td><pre>sudo systemctl restart mysql.service</pre></td></tr><tr><td data-num="6"></td><td><pre></pre></td></tr><tr><td data-num="7"></td><td><pre>查询是否生效</pre></td></tr><tr><td data-num="8"></td><td><pre>show global variables like 'information_schema_stats_expiry';</pre></td></tr><tr><td data-num="9"></td><td><pre>show session variables like 'information_schema_stats_expiry';</pre></td></tr></table></figure> ]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/11/13/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7/</guid>
|
||
<title>数据库管理工具</title>
|
||
<link>https://hitoli.com/2022/11/13/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7/</link>
|
||
<category term="Windows" scheme="https://hitoli.com/categories/Windows/" />
|
||
<category term="工具" scheme="https://hitoli.com/categories/Windows/%E5%B7%A5%E5%85%B7/" />
|
||
<category term="mysql" scheme="https://hitoli.com/tags/mysql/" />
|
||
<category term="数据库工具" scheme="https://hitoli.com/tags/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%B7%A5%E5%85%B7/" />
|
||
<pubDate>Sun, 13 Nov 2022 17:31:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||
<ul>
|
||
<li>很多朋友安装了 mysql 后不知道可以用工具管理,所以专门找了两个数据库管理工具方便大家使用。</li>
|
||
</ul>
|
||
<h4 id="navicat"><a class="anchor" href="#navicat">#</a> Navicat</h4>
|
||
<ol>
|
||
<li><span class="exturl" data-url="aHR0cHM6Ly9uYXMuaGl0b2xpLmNvbToxODAwNy8lRTglQkQlQUYlRTQlQkIlQjYvTXlTUUwlRTUlQjclQTUlRTUlODUlQjcvTmF2aWNhdC56aXA=">下载</span></li>
|
||
<li>安装一路下一步即可 (<span class="red">注意:</span>安装完成后先不要运行)<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/13/navicat.jpg" alt="" /></li>
|
||
<li>注册<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/13/88f1592aed1ffbf3dbfeadda4fa4773f.jpg" alt="" /></li>
|
||
</ol>
|
||
<div class="note info">
|
||
<p>1、运行注册机<br />
|
||
2、修改 Your Name(可不改)<br />
|
||
3、点击 Patch(<span class="blue">此时会提示:navicat.exe - x64 -&gt; Cracked</span>)<br />
|
||
4、运行 navicat<br />
|
||
5、点击第一个 Generate 获取注册码 (<span class="yellow">Your Name 上一行</span>)<br />
|
||
6、点击 Copy 然后粘贴到 navicat 窗口上(也可能会自动粘贴进去)<br />
|
||
7、点击 navicat 上的激活按钮,等待一会,失败后会弹出手动激活按钮<br />
|
||
8、点击手动激活,窗口上会有一个 request code,把框里的值复制到注册机对应的 request code 框内。<br />
|
||
9、点击第二个 Generate 获取 Activation Code(激活码),把码复制到 navicat 对应的框内。<br />
|
||
10、点击激活完成激活。</p>
|
||
</div>
|
||
<ol start="4">
|
||
<li>查看注册信息<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/13/025adbe8193bc597a06d70eb8691c82c.jpg" alt="" /></li>
|
||
<li>测试连接<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/13/19b7ff68e8bd4471aa398c04fc989299.jpg" alt="" /></li>
|
||
<li>新建库<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/13/38a3f946af40173bdc114208fc3b50bc.jpg" alt="" /></li>
|
||
</ol>
|
||
<h4 id="dbeaver"><a class="anchor" href="#dbeaver">#</a> DBeaver</h4>
|
||
<ol>
|
||
<li><span class="exturl" data-url="aHR0cHM6Ly9uYXMuaGl0b2xpLmNvbToxODAwNy8lRTglQkQlQUYlRTQlQkIlQjYvTXlTUUwlRTUlQjclQTUlRTUlODUlQjcvZGJlYXZlci1lZS0yMS4zLnppcA==">下载</span></li>
|
||
<li><span class="exturl" data-url="aHR0cHM6Ly9uYXMuaGl0b2xpLmNvbToxODAwNy8lRTglQkQlQUYlRTQlQkIlQjYvTXlTUUwlRTUlQjclQTUlRTUlODUlQjcvamRrLTExLjAuMTEuemlw">下载 jdk</span><span class="label danger">✔️有 JAVA 环境的不用下载</span></li>
|
||
<li>修改<span class="red"> dbeaver.ini</span> 配置文件</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>vm</pre></td></tr><tr><td data-num="2"></td><td><pre>D<span class="token punctuation">:</span>\jdk<span class="token punctuation">-</span>11.0.11\bin</pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token punctuation">-</span>startup</pre></td></tr><tr><td data-num="4"></td><td><pre>plugins/org.eclipse.equinox.launcher_1.6.300.v20210813<span class="token punctuation">-</span>1054.jar</pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token punctuation">-</span><span class="token punctuation">-</span>launcher.library</pre></td></tr><tr><td data-num="6"></td><td><pre>plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.300.v20210828<span class="token punctuation">-</span><span class="token number">0802</span></pre></td></tr><tr><td data-num="7"></td><td><pre><span class="token punctuation">-</span>vmargs</pre></td></tr><tr><td data-num="8"></td><td><pre><span class="token punctuation">-</span>XX<span class="token punctuation">:</span>+IgnoreUnrecognizedVMOptions</pre></td></tr><tr><td data-num="9"></td><td><pre><span class="token punctuation">-</span><span class="token punctuation">-</span>add<span class="token punctuation">-</span>modules=ALL<span class="token punctuation">-</span>SYSTEM</pre></td></tr><tr><td data-num="10"></td><td><pre><span class="token punctuation">-</span>Dosgi.requiredJavaVersion=11</pre></td></tr><tr><td data-num="11"></td><td><pre><span class="token punctuation">-</span>Xms128m</pre></td></tr><tr><td data-num="12"></td><td><pre><span class="token punctuation">-</span>Xmx2048m</pre></td></tr><tr><td data-num="13"></td><td><pre><span class="token punctuation">-</span>Djavax.net.ssl.trustStoreType=WINDOWS<span class="token punctuation">-</span>ROOT</pre></td></tr><tr><td data-num="14"></td><td><pre><span class="token punctuation">-</span>Ddbeaver.distribution.type=zip</pre></td></tr><tr><td data-num="15"></td><td><pre><span class="token punctuation">-</span>javaagent<span class="token punctuation">:</span>F<span class="token punctuation">:</span>\green program\dbeaver\dbeaver<span class="token punctuation">-</span>agent\dbeaver<span class="token punctuation">-</span>agent.jar</pre></td></tr></table></figure><div class="note info">
|
||
<p>第一二行指定<span class="red"> jdk</span> 地址<br />
|
||
最后一行指定<span class="red"> dbeaver-agent.jar 注册工具</span>的位置</p>
|
||
</div>
|
||
<ol start="4">
|
||
<li>启动<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/13/f9c6b3b245e93698b1331b9e0bdc26f3.jpg" alt="" /></li>
|
||
<li>注册成功<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/13/e16dea0c920dfbbf9138c22f5b86a050.jpg" alt="" /></li>
|
||
<li>测试连接<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/13/cf0094eb3183006c459c8996c403527e.jpg" alt="" /></li>
|
||
</ol>
|
||
]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/11/09/Vue%E6%8C%89%E7%8E%AF%E5%A2%83%E8%AE%BE%E7%BD%AE%E7%BC%96%E8%AF%91%E9%A1%B9%E7%9B%AE/</guid>
|
||
<title>Vue按环境设置编译项目</title>
|
||
<link>https://hitoli.com/2022/11/09/Vue%E6%8C%89%E7%8E%AF%E5%A2%83%E8%AE%BE%E7%BD%AE%E7%BC%96%E8%AF%91%E9%A1%B9%E7%9B%AE/</link>
|
||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||
<category term="Vue" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/Vue/" />
|
||
<category term="项目部署" scheme="https://hitoli.com/tags/%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/" />
|
||
<category term="Vue" scheme="https://hitoli.com/tags/Vue/" />
|
||
<pubDate>Wed, 09 Nov 2022 09:47:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||
<ul>
|
||
<li>今天在部署 vue 项目时发现生产环境的端口只有一个,而且被多个项目公用了,刚好此项目又没有配置服务名而是直接使用的根路径。没办法只有修改项目配置重新编译了!</li>
|
||
</ul>
|
||
<h4 id="配置"><a class="anchor" href="#配置">#</a> 配置</h4>
|
||
<ul>
|
||
<li>在项目根目录添加两个文件。</li>
|
||
</ul>
|
||
<p><span class="blue">.env.alpha</span></p>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>NODE_ENV = 'production'</pre></td></tr><tr><td data-num="2"></td><td><pre>VUE_APP_BASE_URL = '/'</pre></td></tr></table></figure><p><span class="blue">.env.prod</span></p>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>NODE_ENV = 'production'</pre></td></tr><tr><td data-num="2"></td><td><pre>VUE_APP_BASE_URL = '/projectName'</pre></td></tr></table></figure><ul>
|
||
<li>在<span class="label success"> package.json</span> 文件内添加不同环境的打包指令</li>
|
||
</ul>
|
||
<figure class="highlight json"><figcaption data-lang="JSON"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token property">"scripts"</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 property">"serve"</span><span class="token operator">:</span> <span class="token string">"vue-cli-service serve"</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> <span class="token property">"build"</span><span class="token operator">:</span> <span class="token string">"vue-cli-service build"</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token property">"build-test"</span><span class="token operator">:</span> <span class="token string">"vue-cli-service build --mode alpha"</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="5"></td><td><pre> <span class="token property">"build-prod"</span><span class="token operator">:</span> <span class="token string">"vue-cli-service build --mode prod"</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token property">"lint"</span><span class="token operator">:</span> <span class="token string">"vue-cli-service lint"</span></pre></td></tr><tr><td data-num="7"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><ul>
|
||
<li>
|
||
<p>项目中<span class="yellow"> base_url</span> 需要使用<span class="red"> process.env.VUE_APP_BASE_URL</span> 替换</p>
|
||
</li>
|
||
<li>
|
||
<p>编译命令</p>
|
||
</li>
|
||
</ul>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">yarn</span> build-test <span class="token comment">#使用.env.alpha 配置文件中的参数</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token function">yarn</span> build-prod <span class="token comment">#使用.env.prod 配置文件中的参数</span></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token function">yarn</span> build <span class="token parameter variable">--mode</span> alpha <span class="token comment">#使用.env.alpha 配置文件中的参数</span></pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token function">yarn</span> build <span class="token parameter variable">--mode</span> prod <span class="token comment">#使用.env.prod 配置文件中的参数</span></pre></td></tr></table></figure> ]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/11/08/Nginx%E9%85%8D%E7%BD%AE-%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/</guid>
|
||
<title>Nginx配置-反向代理</title>
|
||
<link>https://hitoli.com/2022/11/08/Nginx%E9%85%8D%E7%BD%AE-%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/</link>
|
||
<category term="Linux" scheme="https://hitoli.com/categories/Linux/" />
|
||
<category term="服务" scheme="https://hitoli.com/categories/Linux/%E6%9C%8D%E5%8A%A1/" />
|
||
<category term="Nginx" scheme="https://hitoli.com/categories/Linux/%E6%9C%8D%E5%8A%A1/Nginx/" />
|
||
<category term="Nginx" scheme="https://hitoli.com/tags/Nginx/" />
|
||
<category term="反向代理" scheme="https://hitoli.com/tags/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/" />
|
||
<pubDate>Tue, 08 Nov 2022 10:05:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||
<ul>
|
||
<li>所有配置方法和介绍均来至于网络搜索汇总,主要用于方便后期巩固学习。</li>
|
||
</ul>
|
||
<h4 id="何为反向代理"><a class="anchor" href="#何为反向代理">#</a> 何为反向代理</h4>
|
||
<ul>
|
||
<li>在介绍反向代理之前,先来了解一下正向代理。</li>
|
||
</ul>
|
||
<p><span class="blue">正向代理:</span>如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理,下面是正向代理的原理图。<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/08/991a203be1ec82b36e1f326376617d40.png" alt="991a203be1ec82b36e1f326376617d40.png" /><br />
|
||
<span class="blue"> 反向代理:</span>看下面原理图,就一目了然。其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/08/1c87e386a0ce624a3949bda443cf346d.png" alt="1c87e386a0ce624a3949bda443cf346d.png" /></p>
|
||
<blockquote>
|
||
<p>正向代理和反向代理的区别,一句话就是:如果我们客户端自己用,就是正向代理。如果是在服务器用,用户无感知,就是反向代理。</p>
|
||
</blockquote>
|
||
<h4 id="nginx配置文件"><a class="anchor" href="#nginx配置文件">#</a> Nginx 配置文件</h4>
|
||
<ul>
|
||
<li>
|
||
<p>在学习 Nginx 之前,要熟知它的配置文件,毕竟,下面需要做的所有配置(反向代理、负载均衡、动静分离等),都是基于它的配置文件。</p>
|
||
</li>
|
||
<li>
|
||
<p>Nginx 默认的配置文件是在安装目录下的 conf 目录下,后续对 Nginx 的使用基本上都是对此配置文件进行相应的修改。完整的配置文件,可以看一下文章最后。修改过 nginx.conf 配置文件,记得要<span class="label success">✔️重启 Nginx 服务</span>(☆☆☆☆☆)</p>
|
||
</li>
|
||
<li>
|
||
<p>配置文件中有很多 #号,该符号表示注释内容,去掉所有以 #开头的段落,精简之后的配置文件内容如下(PS:其实注释掉的地方,都是一些功能的使用代码,需要用到的时候,取消注释即可):</p>
|
||
</li>
|
||
</ul>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment"># 主进程叫 master,负责管理子进程,子进程叫 worker</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token comment"># worker_processes 配置项表示开启几个业务进程,一般和 cpu 核数有关</span></pre></td></tr><tr><td data-num="3"></td><td><pre>worker_processes 1;</pre></td></tr><tr><td data-num="4"></td><td><pre></pre></td></tr><tr><td data-num="5"></td><td><pre>events <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="6"></td><td><pre> worker_connections 1024;</pre></td></tr><tr><td data-num="7"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="8"></td><td><pre></pre></td></tr><tr><td data-num="9"></td><td><pre>http <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token comment"># include 表示可以引入其他文件,此处表示引入 http mime 类型</span></pre></td></tr><tr><td data-num="11"></td><td><pre> include mime.types;</pre></td></tr><tr><td data-num="12"></td><td><pre> default_type application/octet<span class="token punctuation">-</span>stream;</pre></td></tr><tr><td data-num="13"></td><td><pre> sendfile on;</pre></td></tr><tr><td data-num="14"></td><td><pre> keepalive_timeout 65;</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 comment"># 虚拟主机,可以配置多个</span></pre></td></tr><tr><td data-num="17"></td><td><pre> server <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="18"></td><td><pre> listen 80;</pre></td></tr><tr><td data-num="19"></td><td><pre> server_name localhost;</pre></td></tr><tr><td data-num="20"></td><td><pre></pre></td></tr><tr><td data-num="21"></td><td><pre> location / <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="22"></td><td><pre> <span class="token comment"># 路径匹配之后,哪个目录下去匹配相应的网页,html 是相对路径</span></pre></td></tr><tr><td data-num="23"></td><td><pre> root html;</pre></td></tr><tr><td data-num="24"></td><td><pre> index index.html index.htm;</pre></td></tr><tr><td data-num="25"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="26"></td><td><pre></pre></td></tr><tr><td data-num="27"></td><td><pre> error_page 500 502 503 504 /50x.html;</pre></td></tr><tr><td data-num="28"></td><td><pre> location = /50x.html <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="29"></td><td><pre> root html;</pre></td></tr><tr><td data-num="30"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="31"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="32"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><blockquote>
|
||
<p>去掉注释信息后,可以将 nginx.conf 配置文件分为三部分:</p>
|
||
</blockquote>
|
||
<ol>
|
||
<li>全局块</li>
|
||
</ol>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>worker_processes 1;</pre></td></tr></table></figure><ul>
|
||
<li>
|
||
<p>从配置文件开始到 events 块之间的内容,主要会设置一些影响 Nginx 服务器整体运行的配置指令,主要包括:配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。</p>
|
||
</li>
|
||
<li>
|
||
<p>上面这行 worker_processes 配置,是 Nginx 服务器并发处理服务的关键配置,该值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的约束。</p>
|
||
</li>
|
||
</ul>
|
||
<ol start="2">
|
||
<li>events 块</li>
|
||
</ol>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>events <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre> worker_connections 1024;</pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><ul>
|
||
<li>events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括:是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 work process 可以同时支持的最大连接数等</li>
|
||
</ul>
|
||
<blockquote>
|
||
<p>上述例子就表示每个 work process 支持的最大连接数为 1024。这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。</p>
|
||
</blockquote>
|
||
<ol start="3">
|
||
<li>http 块</li>
|
||
</ol>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>http <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre> include mime.types;</pre></td></tr><tr><td data-num="3"></td><td><pre> default_type application/octet<span class="token punctuation">-</span>stream;</pre></td></tr><tr><td data-num="4"></td><td><pre> sendfile on;</pre></td></tr><tr><td data-num="5"></td><td><pre> keepalive_timeout 65;</pre></td></tr><tr><td data-num="6"></td><td><pre></pre></td></tr><tr><td data-num="7"></td><td><pre> server <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="8"></td><td><pre> listen 80;</pre></td></tr><tr><td data-num="9"></td><td><pre> server_name localhost;</pre></td></tr><tr><td data-num="10"></td><td><pre></pre></td></tr><tr><td data-num="11"></td><td><pre> location / <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="12"></td><td><pre> root html;</pre></td></tr><tr><td data-num="13"></td><td><pre> index index.html index.htm;</pre></td></tr><tr><td data-num="14"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="15"></td><td><pre></pre></td></tr><tr><td data-num="16"></td><td><pre> error_page 500 502 503 504 /50x.html;</pre></td></tr><tr><td data-num="17"></td><td><pre> location = /50x.html <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="18"></td><td><pre> root html;</pre></td></tr><tr><td data-num="19"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="20"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><ul>
|
||
<li>这部分是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是:http 块也可以包括 http 全局块、server 块。下面的反向代理、<a href="https://hitoli.com/2022/09/27/nginx%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E9%85%8D%E7%BD%AE/">动静分离、负载均衡</a>都是在这部分中配置</li>
|
||
</ul>
|
||
<p><span class="blue">http 全局块:</span>http 全局块配置的指令包括:文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。</p>
|
||
<p><span class="blue">server 块:</span>这块和虚拟主机有密切关系,从用户角度看,虚拟主机和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。</p>
|
||
<p><span class="blue">location 块:</span>这块的主要作用是:基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。</p>
|
||
<div class="note info">
|
||
<p>每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。(☆☆☆☆☆)</p>
|
||
</div>
|
||
<h4 id="反向代理配置"><a class="anchor" href="#反向代理配置">#</a> 反向代理配置</h4>
|
||
<ol>
|
||
<li>location 配置规则</li>
|
||
</ol>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>location <span class="token punctuation">[</span> = <span class="token punctuation">|</span> ~ <span class="token punctuation">|</span> ~* <span class="token punctuation">|</span> ^~ <span class="token punctuation">|</span> @ <span class="token punctuation">]</span> /uri <span class="token punctuation">&#123;</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 punctuation">&#125;</span></pre></td></tr><tr><td data-num="4"></td><td><pre></pre></td></tr><tr><td data-num="5"></td><td><pre>= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。</pre></td></tr><tr><td data-num="6"></td><td><pre>~ :用于表示 uri 包含正则表达式,并且区分大小写。</pre></td></tr><tr><td data-num="7"></td><td><pre>~* :用于表示 uri 包含正则表达式,并且不区分大小写。</pre></td></tr><tr><td data-num="8"></td><td><pre>^~ :用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的location后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。</pre></td></tr><tr><td data-num="9"></td><td><pre>@ <span class="token punctuation">:</span> "@" 定义一个命名的 location,使用在内部定向时,例如 error_page</pre></td></tr><tr><td data-num="10"></td><td><pre>/uri :不带任何修饰符,也表示前缀匹配,但是在正则匹配之后,如果没有正则命中,命中最长的规则</pre></td></tr><tr><td data-num="11"></td><td><pre>/ :通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default</pre></td></tr></table></figure><p><span class="red">uri 没有 “/” 结尾时</span>,<ins class="wavy">location /abc/def 可以匹配 /abc/defghi 请求,也可以匹配 /abc/def/ghi 等</ins>。<br />
|
||
<span class="red">uri 有 “/” 结尾时</span>,<ins class="dot">location /abc/def/ 不能匹配 /abc/defghi 请求</ins>,<ins class="wavy">只能匹配 /abc/def/anything 这样的请求</ins>☆☆☆☆☆</p>
|
||
<ol start="2">
|
||
<li>proxy_pass 配置规则</li>
|
||
</ol>
|
||
<p><span class="red">url 结尾加上了 /</span>,<ins class="wavy">相当于是绝对路径</ins>,<ins class="dot">则 Nginx 不会把 location 中匹配的路径部分加入代理 url</ins>。<br />
|
||
<span class="red">url 结尾不加 /</span>,<ins class="dot">Nginx 则会把匹配的路径部分加入代理 uri</ins>。</p>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token key atrule">情景1</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="2"></td><td><pre>proxy_pass后有/ </pre></td></tr><tr><td data-num="3"></td><td><pre>访问地址:http<span class="token punctuation">:</span>//localhost<span class="token punctuation">:</span>8081/WCP.Service/wcp/modeladapter/download/asc.shtml</pre></td></tr><tr><td data-num="4"></td><td><pre>最终代理:http<span class="token punctuation">:</span>//10.194.171.7<span class="token punctuation">:</span>13082/modeladapter/download/asc.shtml</pre></td></tr><tr><td data-num="5"></td><td><pre>location /WCP.Service/wcp/modeladapter/download/ <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="6"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//10.194.171.7<span class="token punctuation">:</span>13082/modeladapter/download/;</pre></td></tr><tr><td data-num="7"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="8"></td><td><pre>访问地址:http<span class="token punctuation">:</span>//localhost<span class="token punctuation">:</span>8081/model/asc.shtml</pre></td></tr><tr><td data-num="9"></td><td><pre>最终代理:http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082/model/asc.shtml</pre></td></tr><tr><td data-num="10"></td><td><pre>location /model/ <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="11"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082/model/;</pre></td></tr><tr><td data-num="12"></td><td><pre><span class="token punctuation">&#125;</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">情景2</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="15"></td><td><pre>proxy_pass后有/</pre></td></tr><tr><td data-num="16"></td><td><pre>访问地址:http<span class="token punctuation">:</span>//localhost<span class="token punctuation">:</span>8081/model/asc.shtml</pre></td></tr><tr><td data-num="17"></td><td><pre>最终代理:http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082/asc.shtml</pre></td></tr><tr><td data-num="18"></td><td><pre>location /model/ <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="19"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082/;</pre></td></tr><tr><td data-num="20"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="21"></td><td><pre></pre></td></tr><tr><td data-num="22"></td><td><pre>情景3:</pre></td></tr><tr><td data-num="23"></td><td><pre>proxy_pass后没有/ </pre></td></tr><tr><td data-num="24"></td><td><pre>访问地址:http<span class="token punctuation">:</span>//localhost<span class="token punctuation">:</span>8081/model/asc.shtml</pre></td></tr><tr><td data-num="25"></td><td><pre>最终代理:http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082/model/asc.shtml</pre></td></tr><tr><td data-num="26"></td><td><pre>location /model/ <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="27"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082;</pre></td></tr><tr><td data-num="28"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="29"></td><td><pre></pre></td></tr><tr><td data-num="30"></td><td><pre>情景4</pre></td></tr><tr><td data-num="31"></td><td><pre>proxy_pass后没有/ </pre></td></tr><tr><td data-num="32"></td><td><pre>访问地址:http<span class="token punctuation">:</span>//localhost<span class="token punctuation">:</span>8081/model/asc.shtml</pre></td></tr><tr><td data-num="33"></td><td><pre>最终代理:http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082/AAAmodel/asc.shtml</pre></td></tr><tr><td data-num="34"></td><td><pre>location /model/ <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="35"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082/AAA;</pre></td></tr><tr><td data-num="36"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="37"></td><td><pre></pre></td></tr><tr><td data-num="38"></td><td><pre>情景5</pre></td></tr><tr><td data-num="39"></td><td><pre>proxy_pass后有/</pre></td></tr><tr><td data-num="40"></td><td><pre>访问地址:http<span class="token punctuation">:</span>//localhost<span class="token punctuation">:</span>8081/model/asc.shtml</pre></td></tr><tr><td data-num="41"></td><td><pre>最终代理:http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082/asc.shtml</pre></td></tr><tr><td data-num="42"></td><td><pre>location /model <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="43"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082/;</pre></td></tr><tr><td data-num="44"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="45"></td><td><pre></pre></td></tr><tr><td data-num="46"></td><td><pre>情景6</pre></td></tr><tr><td data-num="47"></td><td><pre>proxy_pass后有/</pre></td></tr><tr><td data-num="48"></td><td><pre>访问地址:http<span class="token punctuation">:</span>//localhost<span class="token punctuation">:</span>8081/modelBBB/asc.shtml</pre></td></tr><tr><td data-num="49"></td><td><pre>最终代理:http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082/asc.shtml</pre></td></tr><tr><td data-num="50"></td><td><pre>location /model <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="51"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>8082/;</pre></td></tr><tr><td data-num="52"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><h4 id="nginx完整配置文件"><a class="anchor" href="#nginx完整配置文件">#</a> Nginx 完整配置文件</h4>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment">#user nobody;</span></pre></td></tr><tr><td data-num="2"></td><td><pre>worker_processes 1;</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">#error_log logs/error.log;</span></pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token comment">#error_log logs/error.log notice;</span></pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token comment">#error_log logs/error.log info;</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">#pid logs/nginx.pid;</span></pre></td></tr><tr><td data-num="9"></td><td><pre></pre></td></tr><tr><td data-num="10"></td><td><pre>events <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="11"></td><td><pre> worker_connections 1024;</pre></td></tr><tr><td data-num="12"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="13"></td><td><pre></pre></td></tr><tr><td data-num="14"></td><td><pre>http <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="15"></td><td><pre> include mime.types;</pre></td></tr><tr><td data-num="16"></td><td><pre> default_type application/octet<span class="token punctuation">-</span>stream;</pre></td></tr><tr><td data-num="17"></td><td><pre></pre></td></tr><tr><td data-num="18"></td><td><pre> <span class="token comment">#log_format main '$remote_addr - $remote_user [$time_local] "$request" '</span></pre></td></tr><tr><td data-num="19"></td><td><pre> <span class="token comment"># '$status $body_bytes_sent "$http_referer" '</span></pre></td></tr><tr><td data-num="20"></td><td><pre> <span class="token comment"># '"$http_user_agent" "$http_x_forwarded_for"';</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">#access_log logs/access.log main;</span></pre></td></tr><tr><td data-num="23"></td><td><pre></pre></td></tr><tr><td data-num="24"></td><td><pre> sendfile on;</pre></td></tr><tr><td data-num="25"></td><td><pre> <span class="token comment">#tcp_nopush on;</span></pre></td></tr><tr><td data-num="26"></td><td><pre></pre></td></tr><tr><td data-num="27"></td><td><pre> <span class="token comment">#keepalive_timeout 0;</span></pre></td></tr><tr><td data-num="28"></td><td><pre> keepalive_timeout 65;</pre></td></tr><tr><td data-num="29"></td><td><pre></pre></td></tr><tr><td data-num="30"></td><td><pre> <span class="token comment">#gzip on;</span></pre></td></tr><tr><td data-num="31"></td><td><pre></pre></td></tr><tr><td data-num="32"></td><td><pre> server <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="33"></td><td><pre> listen 80;</pre></td></tr><tr><td data-num="34"></td><td><pre> server_name localhost;</pre></td></tr><tr><td data-num="35"></td><td><pre></pre></td></tr><tr><td data-num="36"></td><td><pre> <span class="token comment">#charset koi8-r;</span></pre></td></tr><tr><td data-num="37"></td><td><pre></pre></td></tr><tr><td data-num="38"></td><td><pre> <span class="token comment">#access_log logs/host.access.log main;</span></pre></td></tr><tr><td data-num="39"></td><td><pre></pre></td></tr><tr><td data-num="40"></td><td><pre> location / <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="41"></td><td><pre> root html;</pre></td></tr><tr><td data-num="42"></td><td><pre> index index.html index.htm;</pre></td></tr><tr><td data-num="43"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="44"></td><td><pre></pre></td></tr><tr><td data-num="45"></td><td><pre> <span class="token comment">#error_page 404 /404.html;</span></pre></td></tr><tr><td data-num="46"></td><td><pre></pre></td></tr><tr><td data-num="47"></td><td><pre> <span class="token comment"># redirect server error pages to the static page /50x.html</span></pre></td></tr><tr><td data-num="48"></td><td><pre> <span class="token comment">#</span></pre></td></tr><tr><td data-num="49"></td><td><pre> error_page 500 502 503 504 /50x.html;</pre></td></tr><tr><td data-num="50"></td><td><pre> location = /50x.html <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="51"></td><td><pre> root html;</pre></td></tr><tr><td data-num="52"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="53"></td><td><pre></pre></td></tr><tr><td data-num="54"></td><td><pre> <span class="token comment"># proxy the PHP scripts to Apache listening on 127.0.0.1:80</span></pre></td></tr><tr><td data-num="55"></td><td><pre> <span class="token comment">#</span></pre></td></tr><tr><td data-num="56"></td><td><pre> <span class="token comment">#location ~ \.php$ &#123;</span></pre></td></tr><tr><td data-num="57"></td><td><pre> <span class="token comment"># proxy_pass http://127.0.0.1;</span></pre></td></tr><tr><td data-num="58"></td><td><pre> <span class="token comment">#&#125;</span></pre></td></tr><tr><td data-num="59"></td><td><pre></pre></td></tr><tr><td data-num="60"></td><td><pre> <span class="token comment"># pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000</span></pre></td></tr><tr><td data-num="61"></td><td><pre> <span class="token comment">#</span></pre></td></tr><tr><td data-num="62"></td><td><pre> <span class="token comment">#location ~ \.php$ &#123;</span></pre></td></tr><tr><td data-num="63"></td><td><pre> <span class="token comment"># root html;</span></pre></td></tr><tr><td data-num="64"></td><td><pre> <span class="token comment"># fastcgi_pass 127.0.0.1:9000;</span></pre></td></tr><tr><td data-num="65"></td><td><pre> <span class="token comment"># fastcgi_index index.php;</span></pre></td></tr><tr><td data-num="66"></td><td><pre> <span class="token comment"># fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;</span></pre></td></tr><tr><td data-num="67"></td><td><pre> <span class="token comment"># include fastcgi_params;</span></pre></td></tr><tr><td data-num="68"></td><td><pre> <span class="token comment">#&#125;</span></pre></td></tr><tr><td data-num="69"></td><td><pre></pre></td></tr><tr><td data-num="70"></td><td><pre> <span class="token comment"># deny access to .htaccess files, if Apache's document root</span></pre></td></tr><tr><td data-num="71"></td><td><pre> <span class="token comment"># concurs with nginx's one</span></pre></td></tr><tr><td data-num="72"></td><td><pre> <span class="token comment">#</span></pre></td></tr><tr><td data-num="73"></td><td><pre> <span class="token comment">#location ~ /\.ht &#123;</span></pre></td></tr><tr><td data-num="74"></td><td><pre> <span class="token comment"># deny all;</span></pre></td></tr><tr><td data-num="75"></td><td><pre> <span class="token comment">#&#125;</span></pre></td></tr><tr><td data-num="76"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="77"></td><td><pre> <span class="token comment"># another virtual host using mix of IP-, name-, and port-based configuration</span></pre></td></tr><tr><td data-num="78"></td><td><pre> <span class="token comment">#</span></pre></td></tr><tr><td data-num="79"></td><td><pre> <span class="token comment">#server &#123;</span></pre></td></tr><tr><td data-num="80"></td><td><pre> <span class="token comment"># listen 8000;</span></pre></td></tr><tr><td data-num="81"></td><td><pre> <span class="token comment"># listen somename:8080;</span></pre></td></tr><tr><td data-num="82"></td><td><pre> <span class="token comment"># server_name somename alias another.alias;</span></pre></td></tr><tr><td data-num="83"></td><td><pre> <span class="token comment"># location / &#123;</span></pre></td></tr><tr><td data-num="84"></td><td><pre> <span class="token comment"># root html;</span></pre></td></tr><tr><td data-num="85"></td><td><pre> <span class="token comment"># index index.html index.htm;</span></pre></td></tr><tr><td data-num="86"></td><td><pre> <span class="token comment"># &#125;</span></pre></td></tr><tr><td data-num="87"></td><td><pre> <span class="token comment">#&#125;</span></pre></td></tr><tr><td data-num="88"></td><td><pre> <span class="token comment"># HTTPS server</span></pre></td></tr><tr><td data-num="89"></td><td><pre> <span class="token comment">#</span></pre></td></tr><tr><td data-num="90"></td><td><pre> <span class="token comment">#server &#123;</span></pre></td></tr><tr><td data-num="91"></td><td><pre> <span class="token comment"># listen 443 ssl;</span></pre></td></tr><tr><td data-num="92"></td><td><pre> <span class="token comment"># server_name localhost;</span></pre></td></tr><tr><td data-num="93"></td><td><pre> <span class="token comment"># ssl_certificate cert.pem;</span></pre></td></tr><tr><td data-num="94"></td><td><pre> <span class="token comment"># ssl_certificate_key cert.key;</span></pre></td></tr><tr><td data-num="95"></td><td><pre></pre></td></tr><tr><td data-num="96"></td><td><pre> <span class="token comment"># ssl_session_cache shared:SSL:1m;</span></pre></td></tr><tr><td data-num="97"></td><td><pre> <span class="token comment"># ssl_session_timeout 5m;</span></pre></td></tr><tr><td data-num="98"></td><td><pre></pre></td></tr><tr><td data-num="99"></td><td><pre> <span class="token comment"># ssl_ciphers HIGH:!aNULL:!MD5;</span></pre></td></tr><tr><td data-num="100"></td><td><pre> <span class="token comment"># ssl_prefer_server_ciphers on;</span></pre></td></tr><tr><td data-num="101"></td><td><pre></pre></td></tr><tr><td data-num="102"></td><td><pre> <span class="token comment"># location / &#123;</span></pre></td></tr><tr><td data-num="103"></td><td><pre> <span class="token comment"># root html;</span></pre></td></tr><tr><td data-num="104"></td><td><pre> <span class="token comment"># index index.html index.htm;</span></pre></td></tr><tr><td data-num="105"></td><td><pre> <span class="token comment"># &#125;</span></pre></td></tr><tr><td data-num="106"></td><td><pre> <span class="token comment">#&#125;</span></pre></td></tr><tr><td data-num="107"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure> ]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/11/04/%E8%AE%B0%E4%B8%80%E6%AC%A1Vue%E9%A1%B9%E7%9B%AE%E7%9A%84%E9%83%A8%E7%BD%B2/</guid>
|
||
<title>记一次Vue项目的部署</title>
|
||
<link>https://hitoli.com/2022/11/04/%E8%AE%B0%E4%B8%80%E6%AC%A1Vue%E9%A1%B9%E7%9B%AE%E7%9A%84%E9%83%A8%E7%BD%B2/</link>
|
||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||
<category term="Vue" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/Vue/" />
|
||
<category term="vue" scheme="https://hitoli.com/tags/vue/" />
|
||
<category term="NodeJS" scheme="https://hitoli.com/tags/NodeJS/" />
|
||
<category term="yarn" scheme="https://hitoli.com/tags/yarn/" />
|
||
<pubDate>Fri, 04 Nov 2022 15:21:00 +0800</pubDate>
|
||
<description><![CDATA[ <h4 id="描述"><a class="anchor" href="#描述">#</a> 描述</h4>
|
||
<ul>
|
||
<li>今天需要把一个 web 项目部署到 ubuntu 服务器上,结果直接使用 apt install nodejs 安装的 nodejs 版本过低,导致编译失败。最后通过查看官网文档获取到了 ubuntu 最新 nodejs 的安装命令。</li>
|
||
</ul>
|
||
<h4 id="过程"><a class="anchor" href="#过程">#</a> 过程</h4>
|
||
<ul>
|
||
<li>卸载旧的 nodejs(此命令会卸载掉相关依赖包)</li>
|
||
</ul>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">sudo</span> <span class="token function">apt</span> autoremove <span class="token parameter variable">--purge</span> nodejs</pre></td></tr></table></figure><ul>
|
||
<li>安装 NodeJS</li>
|
||
</ul>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">curl</span> <span class="token parameter variable">-fsSL</span> https://deb.nodesource.com/setup_16.x <span class="token operator">|</span> <span class="token function">sudo</span> <span class="token parameter variable">-E</span> <span class="token function">bash</span> - <span class="token operator">&amp;&amp;</span> <span class="token function">sudo</span> <span class="token function">apt-get</span> <span class="token function">install</span> <span class="token parameter variable">-y</span> nodejs</pre></td></tr></table></figure><ul>
|
||
<li>安装 yarn</li>
|
||
</ul>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">curl</span> <span class="token parameter variable">-sL</span> https://dl.yarnpkg.com/debian/pubkey.gpg <span class="token operator">|</span> gpg <span class="token parameter variable">--dearmor</span> <span class="token operator">|</span> <span class="token function">sudo</span> <span class="token function">tee</span> /usr/share/keyrings/yarnkey.gpg <span class="token operator">></span>/dev/null</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">echo</span> <span class="token string">"deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main"</span> <span class="token operator">|</span> <span class="token function">sudo</span> <span class="token function">tee</span> /etc/apt/sources.list.d/yarn.list</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 function">sudo</span> <span class="token function">apt-get</span> update <span class="token operator">&amp;&amp;</span> <span class="token function">sudo</span> <span class="token function">apt-get</span> <span class="token function">install</span> <span class="token function">yarn</span></pre></td></tr></table></figure><ul>
|
||
<li>初始化 (到项目根目录执行)</li>
|
||
</ul>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">yarn</span> <span class="token function">install</span></pre></td></tr></table></figure><ul>
|
||
<li>编译(到项目根目录执行,完成后会生成 dist 目录)</li>
|
||
</ul>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">yarn</span> build</pre></td></tr></table></figure><ul>
|
||
<li>安装 nginx</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</span> <span class="token function">install</span> nginx</pre></td></tr></table></figure><ul>
|
||
<li>配置 nginx (编译 /etc/nginx/sites-available/default)</li>
|
||
</ul>
|
||
<figure class="highlight yaml"><figcaption data-lang="YAML"></figcaption><table><tr><td data-num="1"></td><td><pre>server <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre> listen 80 default_server;</pre></td></tr><tr><td data-num="3"></td><td><pre> listen <span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token punctuation">]</span><span class="token punctuation">:</span>80 default_server;</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"># SSL configuration</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token comment">#</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token comment"># listen 443 ssl default_server;</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token comment"># listen [::]:443 ssl default_server;</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token comment">#</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token comment"># Note: You should disable gzip for SSL traffic.</span></pre></td></tr><tr><td data-num="11"></td><td><pre> <span class="token comment"># See: https://bugs.debian.org/773332</span></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> <span class="token comment"># Read up on ssl_ciphers to ensure a secure configuration.</span></pre></td></tr><tr><td data-num="14"></td><td><pre> <span class="token comment"># See: https://bugs.debian.org/765782</span></pre></td></tr><tr><td data-num="15"></td><td><pre> <span class="token comment">#</span></pre></td></tr><tr><td data-num="16"></td><td><pre> <span class="token comment"># Self signed certs generated by the ssl-cert package</span></pre></td></tr><tr><td data-num="17"></td><td><pre> <span class="token comment"># Don't use them in a production server!</span></pre></td></tr><tr><td data-num="18"></td><td><pre> <span class="token comment">#</span></pre></td></tr><tr><td data-num="19"></td><td><pre> <span class="token comment"># include snippets/snakeoil.conf;</span></pre></td></tr><tr><td data-num="20"></td><td><pre></pre></td></tr><tr><td data-num="21"></td><td><pre> root /var/www/html;</pre></td></tr><tr><td data-num="22"></td><td><pre></pre></td></tr><tr><td data-num="23"></td><td><pre> <span class="token comment"># Add index.php to the list if you are using PHP</span></pre></td></tr><tr><td data-num="24"></td><td><pre> index index.html index.htm index.nginx<span class="token punctuation">-</span>debian.html;</pre></td></tr><tr><td data-num="25"></td><td><pre></pre></td></tr><tr><td data-num="26"></td><td><pre> server_name _;</pre></td></tr><tr><td data-num="27"></td><td><pre></pre></td></tr><tr><td data-num="28"></td><td><pre> location /api <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="29"></td><td><pre> proxy_pass http<span class="token punctuation">:</span>//localhost<span class="token punctuation">:</span>8080;</pre></td></tr><tr><td data-num="30"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="31"></td><td><pre></pre></td></tr><tr><td data-num="32"></td><td><pre> location / <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="33"></td><td><pre> <span class="token comment"># First attempt to serve request as file, then</span></pre></td></tr><tr><td data-num="34"></td><td><pre> <span class="token comment"># as directory, then fall back to displaying a 404.</span></pre></td></tr><tr><td data-num="35"></td><td><pre> <span class="token comment">#try_files $uri $uri/ =404;</span></pre></td></tr><tr><td data-num="36"></td><td><pre> alias /opt/codes/dayu<span class="token punctuation">-</span>tools<span class="token punctuation">-</span>arbitrage<span class="token punctuation">-</span>web/dist/;</pre></td></tr><tr><td data-num="37"></td><td><pre> index index.html index.htm;</pre></td></tr><tr><td data-num="38"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="39"></td><td><pre>}</pre></td></tr></table></figure><h4 id="其它"><a class="anchor" href="#其它">#</a> 其它</h4>
|
||
<ul>
|
||
<li>重新编译前需要先删除 dist 目录</li>
|
||
</ul>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">rm</span> dist <span class="token parameter variable">-fr</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 function">yarn</span> build</pre></td></tr></table></figure> ]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/11/03/%E4%B8%8A%E7%8F%AD%E4%BA%86/</guid>
|
||
<title>上班了</title>
|
||
<link>https://hitoli.com/2022/11/03/%E4%B8%8A%E7%8F%AD%E4%BA%86/</link>
|
||
<category term="生活" scheme="https://hitoli.com/categories/%E7%94%9F%E6%B4%BB/" />
|
||
<category term="心情" scheme="https://hitoli.com/categories/%E7%94%9F%E6%B4%BB/%E5%BF%83%E6%83%85/" />
|
||
<category term="心情" scheme="https://hitoli.com/tags/%E5%BF%83%E6%83%85/" />
|
||
<pubDate>Thu, 03 Nov 2022 11:25:00 +0800</pubDate>
|
||
<description><![CDATA[ <ul>
|
||
<li>终于又上班了。O (∩_∩) O~</li>
|
||
</ul>
|
||
]]></description>
|
||
</item>
|
||
<item>
|
||
<guid isPermalink="true">https://hitoli.com/2022/11/02/2-dev-null%E5%92%8C-dev-null-2-1%E5%92%8C2-1-dev-null%E7%9A%84%E5%8C%BA%E5%88%AB/</guid>
|
||
<title>2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的区别</title>
|
||
<link>https://hitoli.com/2022/11/02/2-dev-null%E5%92%8C-dev-null-2-1%E5%92%8C2-1-dev-null%E7%9A%84%E5%8C%BA%E5%88%AB/</link>
|
||
<category term="Linux" scheme="https://hitoli.com/categories/Linux/" />
|
||
<category term="Shell" scheme="https://hitoli.com/categories/Linux/Shell/" />
|
||
<category term="Shell" scheme="https://hitoli.com/tags/Shell/" />
|
||
<category term="2>&1" scheme="https://hitoli.com/tags/2-1/" />
|
||
<pubDate>Wed, 02 Nov 2022 16:29: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 operator"><span class="token file-descriptor important">2</span>></span>/dev/null</pre></td></tr></table></figure><p>意思就是把错误输出到 “黑洞”</p>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token operator">></span>/dev/null <span class="token operator"><span class="token file-descriptor important">2</span>></span><span class="token file-descriptor important">&amp;1</span></pre></td></tr></table></figure><p>默认情况是 1,也就是等同于 1&gt;/dev/null 2&gt;&amp;1。意思就是把标准输出重定向到 “黑洞”,还把错误输出 2 重定向到标准输出 1,也就是标准输出和错误输出都进了 “黑洞”</p>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token operator"><span class="token file-descriptor important">2</span>></span><span class="token file-descriptor important">&amp;1</span> <span class="token operator">></span>/dev/null</pre></td></tr></table></figure><p>意思就是把错误输出 2 重定向到标准出书 1,也就是屏幕,标准输出进了 “黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕</p>
|
||
<h4 id="解释"><a class="anchor" href="#解释">#</a> 解释:</h4>
|
||
<ol>
|
||
<li>
|
||
<p>文件描述符<br />
|
||
Linux 系统预留三个文件描述符:0、1 和 2,他们的意义如下所示:<br />
|
||
0—— 标准输入(stdin)<br />
|
||
略...<br />
|
||
1—— 标准输出(stdout)<br />
|
||
在当前目录下,有且只有一个文件名称为 a.txt 的文件,这时我们运行这个命令【ls a.txt】, 就会获得一个标准输出 stdout 的输出结果:a.txt<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen629761046.jpg" alt="" /><br />
|
||
2—— 标准错误(stderr)<br />
|
||
在当前目录下,有且只有一个文件名称为 a.txt 的文件,我们运行命令【ls b.txt】,我们就会获得一个标准错误 stderr 的输出结果 “ls:无法访问 b.txt:没有这样的文件或目录”。<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen629793578.jpg" alt="" /></p>
|
||
</li>
|
||
<li>
|
||
<p>重定向<br />
|
||
重定向的符号有两个:&gt; 或 &gt;&gt;,两者的区别是:前者会先清空文件,然后再写入内容,后者会将重定向的内容追加到现有文件的尾部。举例如下:</p>
|
||
</li>
|
||
</ol>
|
||
<ul>
|
||
<li>
|
||
<p>重定向标准输出 stdout<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen630033531.jpg" alt="" /><br />
|
||
如上图所示,对比没有添加重定向的操作,这条命令在使用之后并没有将 a.txt 打印到屏幕。在紧接的 cat 操作后,可以发现本来应该被输出的内容被记录到 stdout.txt 中。</p>
|
||
</li>
|
||
<li>
|
||
<p>重定向标准错误 stderr<br />
|
||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen630256640.jpg" alt="" /><br />
|
||
如上图所示,文件描述符 2,标准错误的重定向也是同样的原理被记录在了文件 stderr.txt 这个文件里面了。</p>
|
||
</li>
|
||
<li>
|
||
<p>可以将 stderr 单独定向到一个文件,stdout 重定向到另一个文件</p>
|
||
</li>
|
||
</ul>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator"><span class="token file-descriptor important">2</span>></span> stderr.txt <span class="token operator"><span class="token file-descriptor important">1</span>></span>stdout.txt</pre></td></tr></table></figure><ul>
|
||
<li>也可以将 stderr 和 stdout 重定向到同一个文件</li>
|
||
</ul>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator">></span> output.txt <span class="token operator"><span class="token file-descriptor important">2</span>></span><span class="token file-descriptor important">&amp;1</span></pre></td></tr></table></figure><ul>
|
||
<li>或采用下面的方法,可以少写几个字,能达到同样的效果</li>
|
||
</ul>
|
||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator">&amp;></span> output.txt</pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator">>&amp;</span> output.txt <span class="token comment">#两个表达式效果一样的</span></pre></td></tr></table></figure><ol start="3">
|
||
<li>Linux 特殊文件<br />
|
||
/dev/null 是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃。因此,null 这个设备通常也被称为位桶(bit bucket)或黑洞。<br />
|
||
所以,2&gt;/dev/null 的意思就是将标准错误 stderr 删掉。</li>
|
||
</ol>
|
||
]]></description>
|
||
</item>
|
||
</channel>
|
||
</rss>
|