Site updated: 2024-01-07 00:31:53
This commit is contained in:
1 parent
2819cb9914
commit
f1be14c46e
204 files changed
+610
-508
No files matched your search
@@ -11,7 +11,7 @@
|
||||
"url": "https://hitoli.com/2024/01/03/%E8%A7%A3%E5%86%B3Nginx%E8%AE%BF%E9%97%AE%E8%87%AA%E7%AD%BEssl%E8%AF%81%E4%B9%A6%E6%8A%A5%E4%B8%8D%E5%AE%89%E5%85%A8%E5%91%8A%E8%AD%A6/",
|
||||
"title": "解决Nginx访问自签ssl证书报不安全告警",
|
||||
"date_published": "2024-01-03T10:01:00.000Z",
|
||||
"content_html": "<h4 id=\"生成根证书私钥和根证书\"><a class=\"anchor\" href=\"#生成根证书私钥和根证书\">#</a> 生成根证书私钥和根证书</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>openssl req <span class=\"token parameter variable\">-x509</span> <span class=\"token parameter variable\">-nodes</span> <span class=\"token parameter variable\">-days</span> <span class=\"token number\">36500</span> <span class=\"token parameter variable\">-newkey</span> rsa:2048 <span class=\"token parameter variable\">-subj</span> <span class=\"token string\">\"/C=国家/ST=省/L=市/O=机构\"</span> <span class=\"token parameter variable\">-keyout</span> CA-private.key <span class=\"token parameter variable\">-out</span> CA-certificate.crt <span class=\"token parameter variable\">-reqexts</span> v3_req <span class=\"token parameter variable\">-extensions</span> v3_ca</pre></td></tr><tr><td data-num=\"2\"></td><td><pre></pre></td></tr><tr><td data-num=\"3\"></td><td><pre><span class=\"token comment\">#示例</span></pre></td></tr><tr><td data-num=\"4\"></td><td><pre>openssl req <span class=\"token parameter variable\">-x509</span> <span class=\"token parameter variable\">-nodes</span> <span class=\"token parameter variable\">-days</span> <span class=\"token number\">36500</span> <span class=\"token parameter variable\">-newkey</span> rsa:2048 <span class=\"token parameter variable\">-subj</span> <span class=\"token string\">\"/C=CN/ST=EZ/L=EZ/O=EZ\"</span> <span class=\"token parameter variable\">-keyout</span> CA-private.key <span class=\"token parameter variable\">-out</span> CA-certificate.crt <span class=\"token parameter variable\">-reqexts</span> v3_req <span class=\"token parameter variable\">-extensions</span> v3_ca</pre></td></tr></table></figure><h4 id=\"生成自签名证书私钥\"><a class=\"anchor\" href=\"#生成自签名证书私钥\">#</a> 生成自签名证书私钥</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>openssl genrsa <span class=\"token parameter variable\">-out</span> private.key <span class=\"token number\">2048</span></pre></td></tr></table></figure><h4 id=\"根据自签名证书私钥生成自签名证书申请文件\"><a class=\"anchor\" href=\"#根据自签名证书私钥生成自签名证书申请文件\">#</a> 根据自签名证书私钥生成自签名证书申请文件</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>openssl req <span class=\"token parameter variable\">-new</span> <span class=\"token parameter variable\">-key</span> private.key <span class=\"token parameter variable\">-subj</span> <span class=\"token string\">\"/C=CN/ST=EZ/L=EZ/O=EZ/CN=192.168.2.117\"</span> <span class=\"token parameter variable\">-sha256</span> <span class=\"token parameter variable\">-out</span> private.csr</pre></td></tr></table></figure><h4 id=\"定义自签名证书扩展文件解决chrome安全告警新建privateext文件并写入以下内容ip为nginx服务器ip同nginxconf中的server_name\"><a class=\"anchor\" href=\"#定义自签名证书扩展文件解决chrome安全告警新建privateext文件并写入以下内容ip为nginx服务器ip同nginxconf中的server_name\">#</a> 定义自签名证书扩展文件 (解决 chrome 安全告警),新建 private.ext 文件并写入以下内容(IP 为 nginx 服务器 ip,同 nginx.conf 中的 server_name)</h4>\n<figure class=\"highlight text\"><figcaption data-lang=\"text\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>[ req ]</pre></td></tr><tr><td data-num=\"2\"></td><td><pre>default_bits = 1024</pre></td></tr><tr><td data-num=\"3\"></td><td><pre>distinguished_name = req_distinguished_name</pre></td></tr><tr><td data-num=\"4\"></td><td><pre>req_extensions = san</pre></td></tr><tr><td data-num=\"5\"></td><td><pre>extensions = san</pre></td></tr><tr><td data-num=\"6\"></td><td><pre>[ req_distinguished_name ]</pre></td></tr><tr><td data-num=\"7\"></td><td><pre>countryName = CN</pre></td></tr><tr><td data-num=\"8\"></td><td><pre>stateOrProvinceName = Definesys</pre></td></tr><tr><td data-num=\"9\"></td><td><pre>localityName = Definesys</pre></td></tr><tr><td data-num=\"10\"></td><td><pre>organizationName = Definesys</pre></td></tr><tr><td data-num=\"11\"></td><td><pre>[SAN]</pre></td></tr><tr><td data-num=\"12\"></td><td><pre>authorityKeyIdentifier=keyid,issuer</pre></td></tr><tr><td data-num=\"13\"></td><td><pre>basicConstraints=CA:FALSE</pre></td></tr><tr><td data-num=\"14\"></td><td><pre>keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment</pre></td></tr><tr><td data-num=\"15\"></td><td><pre>subjectAltName = IP:192.168.2.117</pre></td></tr></table></figure><h4 id=\"生成自签名证书有效期100Line truncated
|
||||
"content_html": "<h4 id=\"生成根证书私钥和根证书\"><a class=\"anchor\" href=\"#生成根证书私钥和根证书\">#</a> 生成根证书私钥和根证书</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -subj <span class=\"string\">"/C=国家/ST=省/L=市/O=机构"</span> -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\">#示例</span></span><br><span class=\"line\">openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -subj <span class=\"string\">"/C=CN/ST=EZ/L=EZ/O=EZ"</span> -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"生成自签名证书私钥\"><a class=\"anchor\" href=\"#生成自签名证书私钥\">#</a> 生成自签名证书私钥</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">openssl genrsa -out private.key 2048</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"根据自签名证书私钥生成自签名证书申请文件\"><a class=\"anchor\" href=\"#根据自签名证书私钥生成自签名证书申请文件\">#</a> 根据自签名证书私钥生成自签名证书申请文件</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">openssl req -new -key private.key -subj <span class=\"string\">"/C=CN/ST=EZ/L=EZ/O=EZ/CN=192.168.2.117"</span> -sha256 -out private.csr</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"定义自签名证书扩展文件解决chrome安全告警新建privateext文件并写入以下内容ip为nginx服务器ip同nginxconf中的server_name\"><a class=\"anchor\" href=\"#定义自签名证书扩展文件解决chrome安全告警新建privateext文件并写入以下内容ip为nginx服务器ip同nginxconf中的server_name\">#</a> 定义自签名证书扩展文件 (解决 chrome 安全告警),新建 private.ext 文件并写入以下内容(IP 为 nginx 服务器 ip,同 nginx.conf 中的 server_name)</h4>\n<p><figure class=\"highlight text\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">[ req ]</span><br><span class=\"line\">default_bits = 1024</span><br><span class=\"line\">distinguished_name = req_distinguished_name</span><br><span class=\"line\">req_extensions = san</span><br><span class=\"line\">extensions = san</span><br><span class=\"line\">[ req_distinguished_name ]</span><br><span class=\"line\">countryName = CN</span><br><span class=\"line\">stateOrProvinceName = Definesys</span><br><span class=\"line\">localityName = Definesys</span><br><span class=\"line\">organizationName = Definesys</span><br><span class=\"line\">[SAN]</span><br><span class=\"line\">authorityKeyIdentifier=keyid,issuer</span><br><span class=\"line\">basicConstraints=CA:FALSE</span><br><span class=\"line\">keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment</span><br><span class=\"line\">subjectAltName = IP:192.168.2.117</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"生成自签名证书有效期100年\"><a class=\"anchor\" href=\"#生成自签名证书有效期100年\">#</a> 生成自签名证书(有效期 100 年)</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">openssl x509 -req -days 36500 -<span class=\"keyword\">in</span> private.csr -CA CA-certificate.crt -CAkey CA-private.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"nginx的ssl证书配置\"><a class=\"anchor\" href=\"#nginx的ssl证书配置\">#</a> nginx 的 ssl 证书配置</h4>\n<p><figure class=\"highlight yaml\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td cLine truncated
|
||||
"tags": [
|
||||
"工作",
|
||||
"解决问题",
|
||||
@@ -26,7 +26,7 @@
|
||||
"url": "https://hitoli.com/2024/01/03/Centos7%E7%BC%96%E8%AF%91%E5%8D%87%E7%BA%A7nginx/",
|
||||
"title": "Centos7编译升级nginx",
|
||||
"date_published": "2024-01-03T09:40:00.000Z",
|
||||
"content_html": "<h4 id=\"配置\"><a class=\"anchor\" href=\"#配置\">#</a> 配置</h4>\n<p>./configure<br />\n# 安装目录<br />\n --prefix=/usr/local/nginx<br />\n#nginx 运行时的非特权用户<br />\n --user=nginx<br />\n#nginx 运行时的非特权用户组<br />\n --group=nginx<br />\n#nginx 运行时 pid 的目录<br />\n --pid-path=/var/run/nginx/nginx.pid<br />\n# 锁定文件目录,防止误操作,或其他使用<br />\n --lock-path=/var/lock/nginx.lock<br />\n#nginx 错误日志目录<br />\n --error-log-path=/var/log/nginx/error.log<br />\n#nginx 运行日志目录<br />\n --http-log-path=/var/log/nginx/access.log<br />\n# 开启 gz 模块,压缩静态页面<br />\n --with-http_gzip_static_module<br />\n--with-http_gunzip_module<br />\n# 开启 ssl 模块<br />\n --with-http_ssl_module<br />\n# 开启 http2 模块<br />\n --with-http_v2_module<br />\n#openssl 目录<br />\n --with-openssl=/home/openssl-3.2.0<br />\n#nginx 的客户端状态<br />\n --with-http_stub_status_module<br />\n--with-http_realip_module<br />\n# 设定客户端请求的临时目录<br />\n --http-client-body-temp-path=/usr/local/nginx/client<br />\n# 设定 http 代理临时目录<br />\n --http-proxy-temp-path=/usr/local/nginx/proxy<br />\n# 设定 fastcgi 临时目录<br />\n --http-fastcgi-temp-path=/usr/local/nginx/fastcgi<br />\n# 设定 uwsgi 临时目录<br />\n --http-uwsgi-temp-path=/usr/local/nginx/uwsgi<br />\n# 设定 scgi 临时目录<br />\n --http-scgi-temp-path=/usr/local/nginx/scgi</p>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>./configure <span class=\"token parameter variable\">--prefix</span><span class=\"token operator\">=</span>/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-openssl<span class=\"token operator\">=</span>/home/openssl-3.2.0</pre></td></tr></table></figure><h4 id=\"编译\"><a class=\"anchor\" href=\"#编译\">#</a> 编译</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>make(不要make install)</pre></td></tr></table></figure><h4 id=\"备份\"><a class=\"anchor\" href=\"#备份\">#</a> 备份</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">cp</span> /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old</pre></td></tr></table></figure><h4 id=\"更新\"><a class=\"anchor\" href=\"#更新\">#</a> 更新</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token comment\">#关闭 nginx</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre>nginx <span class=\"token parameter variable\">-s</span> stop</pre></td></tr><tr><td data-num=\"3\"></td><td><pre><span class=\"token comment\">#更新 nginx</span></pre></td></tr><tr><td data-num=\"4\"></td><td><pre><span class=\"token function\">cp</span> /root/nginx-1.24.0/objs/nginx /usr/local/nginx/sbin/</pre></td></tr><tr><td data-num=\"5\"></td><td><pre><span class=\"token comment\">#启动 nginx</span></pre></td></tr><tr><td data-num=\"6\"></td><td><pre>nginx</pre></td></tr></table></figure>",
|
||||
"content_html": "<h4 id=\"配置\"><a class=\"anchor\" href=\"#配置\">#</a> 配置</h4>\n<p>./configure<br />\n# 安装目录<br />\n --prefix=/usr/local/nginx<br />\n#nginx 运行时的非特权用户<br />\n --user=nginx<br />\n#nginx 运行时的非特权用户组<br />\n --group=nginx<br />\n#nginx 运行时 pid 的目录<br />\n --pid-path=/var/run/nginx/nginx.pid<br />\n# 锁定文件目录,防止误操作,或其他使用<br />\n --lock-path=/var/lock/nginx.lock<br />\n#nginx 错误日志目录<br />\n --error-log-path=/var/log/nginx/error.log<br />\n#nginx 运行日志目录<br />\n --http-log-path=/var/log/nginx/access.log<br />\n# 开启 gz 模块,压缩静态页面<br />\n --with-http_gzip_static_module<br />\n--with-http_gunzip_module<br />\n# 开启 ssl 模块<br />\n --with-http_ssl_module<br />\n# 开启 http2 模块<br />\n --with-http_v2_module<br />\n#openssl 目录<br />\n --with-openssl=/home/openssl-3.2.0<br />\n#nginx 的客户端状态<br />\n --with-http_stub_status_module<br />\n--with-http_realip_module<br />\n# 设定客户端请求的临时目录<br />\n --http-client-body-temp-path=/usr/local/nginx/client<br />\n# 设定 http 代理临时目录<br />\n --http-proxy-temp-path=/usr/local/nginx/proxy<br />\n# 设定 fastcgi 临时目录<br />\n --http-fastcgi-temp-path=/usr/local/nginx/fastcgi<br />\n# 设定 uwsgi 临时目录<br />\n --http-uwsgi-temp-path=/usr/local/nginx/uwsgi<br />\n# 设定 scgi 临时目录<br />\n --http-scgi-temp-path=/usr/local/nginx/scgi<br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-openssl=/home/openssl-3.2.0</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"编译\"><a class=\"anchor\" href=\"#编译\">#</a> 编译</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">make(不要make install)</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"备份\"><a class=\"anchor\" href=\"#备份\">#</a> 备份</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"built_in\">cp</span> /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"更新\"><a class=\"anchor\" href=\"#更新\">#</a> 更新</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">#关闭nginx</span></span><br><span class=\"line\">nginx -s stop</span><br><span class=\"line\"><span class=\"comment\">#更新nginx</span></span><br><span class=\"line\"><span class=\"built_in\">cp</span> /root/nginx-1.24.0/objs/nginx /usr/local/nginx/sbin/</span><br><span class=\"line\"><span class=\"comment\">#启动nginx</span></span><br><span class=\"line\">nginx</span><br></pre></td></tr></table></figure></p>\n",
|
||||
"tags": [
|
||||
"工作",
|
||||
"解决问题",
|
||||
@@ -39,7 +39,7 @@
|
||||
"url": "https://hitoli.com/2023/12/24/Docker-desktop%E9%83%A8%E7%BD%B2nacos/",
|
||||
"title": "Docker desktop部署nacos",
|
||||
"date_published": "2023-12-24T13:37:00.000Z",
|
||||
"content_html": "<h4 id=\"创建数据库\"><a class=\"anchor\" href=\"#创建数据库\">#</a> 创建数据库</h4>\n<figure class=\"highlight sql\"><figcaption data-lang=\"SQL\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token keyword\">create</span> <span class=\"token keyword\">database</span> nacos</pre></td></tr></table></figure><h4 id=\"下载初始化脚本\"><a class=\"anchor\" href=\"#下载初始化脚本\">#</a> 下载初始化脚本</h4>\n<p><span class=\"exturl\" data-url=\"aHR0cHM6Ly9naXRodWIuY29tL2FsaWJhYmEvbmFjb3MvYmxvYi9tYXN0ZXIvZGlzdHJpYnV0aW9uL2NvbmYvbXlzcWwtc2NoZW1hLnNxbA==\">脚本文件</span></p>\n<h4 id=\"以普通模式启动获取数据\"><a class=\"anchor\" href=\"#以普通模式启动获取数据\">#</a> 以普通模式启动获取数据</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">docker</span> run <span class=\"token parameter variable\">-d</span> <span class=\"token parameter variable\">--restart</span><span class=\"token operator\">=</span>always <span class=\"token parameter variable\">--name</span><span class=\"token operator\">=</span><span class=\"token string\">\"nacos\"</span> <span class=\"token parameter variable\">-e</span> <span class=\"token assign-left variable\">MODE</span><span class=\"token operator\">=</span>standalone <span class=\"token parameter variable\">-p</span> <span class=\"token number\">8848</span>:8848 <span class=\"token parameter variable\">-p</span> <span class=\"token number\">9848</span>:9848 nacos/nacos-server:latest</pre></td></tr></table></figure><h4 id=\"进入容器内修改文件权限\"><a class=\"anchor\" href=\"#进入容器内修改文件权限\">#</a> 进入容器内修改文件权限</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">chmod</span> <span class=\"token number\">777</span> /home/nacos/conf</pre></td></tr><tr><td data-num=\"2\"></td><td><pre><span class=\"token function\">chmod</span> <span class=\"token number\">777</span> /home/nacos/data</pre></td></tr><tr><td data-num=\"3\"></td><td><pre><span class=\"token function\">chmod</span> <span class=\"token number\">777</span> /home/nacos/logs</pre></td></tr></table></figure><h4 id=\"拷贝文件到本地\"><a class=\"anchor\" href=\"#拷贝文件到本地\">#</a> 拷贝文件到本地</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">docker</span> <span class=\"token function\">cp</span> nacos:/home/nacos/conf D:<span class=\"token punctuation\">\\</span>docker<span class=\"token punctuation\">\\</span>nacos<span class=\"token punctuation\">\\</span>data<span class=\"token punctuation\">\\</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre><span class=\"token function\">docker</span> <span class=\"token function\">cp</span> nacos:/home/nacos/data D:<span class=\"token punctuation\">\\</span>docker<span class=\"token punctuation\">\\</span>nacos<span class=\"token punctuation\">\\</span>data<span class=\"token punctuation\">\\</span></pre></td></tr><tr><td data-num=\"3\"></td><td><pre><span class=\"token function\">docker</span> <span class=\"token function\">cp</span> nacos:/home/nacos/logs D:<span class=\"token punctuation\">\\</span>docker<span class=\"token punctuation\">\\</span>nacos<span class=\"token punctuation\">\\</span>data<span class=\"token punctuation\">\\</span></pre></td></tr></table></figure><h4 id=\"创建正式容器\"><a class=\"anchor\" href=\"#创建正式容器\">#</a> 创建正式容器</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">docker</span> run <span class=\"token parameter variable\">-d</span> <span class=\"token parameter variable\">--name</span> nacos <span class=\"token parameter variable\">--restart</span><span class=\"token operator\">=</span>always <span class=\"token parameter variable\">--network</span> my-net <span class=\"token parameter variable\">-p</span> <span class=\"token number\">8848</span>:8848 <span class=\"token parameter variable\">-p</span> <span class=\"token number\">9848</span>:9848 <span class=\"token parameter variable\">-p</span> <span class=\"token number\">9849</span>:9849 <span class=\"token parameter variable\">-e</span> <span class=\"token assign-left variable\">MODE</span><span class=\"token operator\">=</span>standalone <span class=\"token parameter variable\">--privileged</span><span class=\"token operator\">=</span>true <span class=\"token parameter variable\">-e</span> <span class=\"token assign-left variable\">SPRING_DATASOURCE_PLATFORM</span><span class=\"token operator\">=</span>mysql <span class=\"token parameter variaLine truncated
|
||||
"content_html": "<h4 id=\"创建数据库\"><a class=\"anchor\" href=\"#创建数据库\">#</a> 创建数据库</h4>\n<p><figure class=\"highlight sql\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">create</span> database nacos</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"下载初始化脚本\"><a class=\"anchor\" href=\"#下载初始化脚本\">#</a> 下载初始化脚本</h4>\n<p><span class=\"exturl\" data-url=\"aHR0cHM6Ly9naXRodWIuY29tL2FsaWJhYmEvbmFjb3MvYmxvYi9tYXN0ZXIvZGlzdHJpYnV0aW9uL2NvbmYvbXlzcWwtc2NoZW1hLnNxbA==\">脚本文件</span></p>\n<h4 id=\"以普通模式启动获取数据\"><a class=\"anchor\" href=\"#以普通模式启动获取数据\">#</a> 以普通模式启动获取数据</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">docker run -d --restart=always --name=<span class=\"string\">"nacos"</span> -e MODE=standalone -p 8848:8848 -p 9848:9848 nacos/nacos-server:latest</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"进入容器内修改文件权限\"><a class=\"anchor\" href=\"#进入容器内修改文件权限\">#</a> 进入容器内修改文件权限</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"built_in\">chmod</span> 777 /home/nacos/conf</span><br><span class=\"line\"><span class=\"built_in\">chmod</span> 777 /home/nacos/data</span><br><span class=\"line\"><span class=\"built_in\">chmod</span> 777 /home/nacos/logs</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"拷贝文件到本地\"><a class=\"anchor\" href=\"#拷贝文件到本地\">#</a> 拷贝文件到本地</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">docker <span class=\"built_in\">cp</span> nacos:/home/nacos/conf D:\\docker\\nacos\\data\\</span><br><span class=\"line\">docker <span class=\"built_in\">cp</span> nacos:/home/nacos/data D:\\docker\\nacos\\data\\</span><br><span class=\"line\">docker <span class=\"built_in\">cp</span> nacos:/home/nacos/logs D:\\docker\\nacos\\data\\</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"创建正式容器\"><a class=\"anchor\" href=\"#创建正式容器\">#</a> 创建正式容器</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">docker run -d --name nacos --restart=always --network my-net -p 8848:8848 -p 9848:9848 -p 9849:9849 -e MODE=standalone --privileged=<span class=\"literal\">true</span> -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=mysql地址 -e MYSQL_SERVICE_PORT=mysql端口 -e MYSQL_SERVICE_USER=mysql用户名 -e MYSQL_SERVICE_PASSWORD=mysql密码 -e MYSQL_SERVICE_DB_NAME=nacos -e TIME_ZONE=<span class=\"string\">'Asia/Shanghai'</span> -v D:\\docker\\nacos\\data\\logs:/home/nacos/logs -v D:\\docker\\nacos\\data\\data:/home/nacos/data -v D:\\docker\\nacos\\data\\conf:/home/nacos/conf nacos/nacos-server:latest</span><br></pre></td></tr></table></figure></p>\n",
|
||||
"tags": [
|
||||
"Windows",
|
||||
"工具",
|
||||
@@ -52,7 +52,7 @@
|
||||
"url": "https://hitoli.com/2023/12/02/fastjson%E5%BA%8F%E5%88%97%E5%8C%96%E5%8E%BB%E9%99%A4%E7%A9%BA%E5%AD%97%E7%AC%A6%E4%B8%B2/",
|
||||
"title": "fastjson序列化去除空字符串属性",
|
||||
"date_published": "2023-12-02T13:47:00.000Z",
|
||||
"content_html": "<p>今天在把对象转为 json 时需要去除 key 或者 value 为 null 或空字符串的属性,特此记录一下后续好复用。</p>\n<figure class=\"highlight java\"><figcaption data-lang=\"java\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">String</span> <span class=\"token function\">toJSONString</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Object</span> object<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre> <span class=\"token class-name\">SerializerFeature</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> serializerFeatures <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">SerializerFeature</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"3\"></td><td><pre> <span class=\"token comment\">// 格式化时间</span></pre></td></tr><tr><td data-num=\"4\"></td><td><pre> <span class=\"token class-name\">SerializerFeature<span class=\"token punctuation\">.</span>WriteDateUseDateFormat</span></pre></td></tr><tr><td data-num=\"5\"></td><td><pre> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"6\"></td><td><pre> <span class=\"token keyword\">return</span> <span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">toJSONString</span><span class=\"token punctuation\">(</span>object<span class=\"token punctuation\">,</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">ValueFilter</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"7\"></td><td><pre> <span class=\"token annotation punctuation\">@Override</span></pre></td></tr><tr><td data-num=\"8\"></td><td><pre> <span class=\"token keyword\">public</span> <span class=\"token class-name\">Object</span> <span class=\"token function\">process</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Object</span> object<span class=\"token punctuation\">,</span> <span class=\"token class-name\">String</span> name<span class=\"token punctuation\">,</span> <span class=\"token class-name\">Object</span> value<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"9\"></td><td><pre> <span class=\"token comment\">// 如果名称或者值为 null 或空字符串,则不序列化该属性</span></pre></td></tr><tr><td data-num=\"10\"></td><td><pre> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>name <span class=\"token operator\">==</span> <span class=\"token keyword\">null</span> <span class=\"token operator\">||</span> <span class=\"token punctuation\">(</span>name <span class=\"token keyword\">instanceof</span> <span class=\"token class-name\">String</span> <span class=\"token operator\">&&</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">)</span> name<span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">isEmpty</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span></pre></td></tr><tr><td data-num=\"11\"></td><td><pre> value <span class=\"token operator\">==</span> <span class=\"token keyword\">null</span> <span class=\"token operator\">||</span> <span class=\"token punctuation\">(</span>value <span class=\"token keyword\">instanceof</span> <span class=\"token class-name\">String</span> <span class=\"token operator\">&&</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">)</span> value<span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">isEmpty</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></pre></td></tr><tr><td data-num=\"12\"></td><td><pre> <Line truncated
|
||||
"content_html": "<p>今天在把对象转为 json 时需要去除 key 或者 value 为 null 或空字符串的属性,特此记录一下后续好复用。<br />\n<figure class=\"highlight java\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"keyword\">static</span> String <span class=\"title function_\">toJSONString</span><span class=\"params\">(Object object)</span> {</span><br><span class=\"line\"> SerializerFeature[] serializerFeatures = <span class=\"keyword\">new</span> <span class=\"title class_\">SerializerFeature</span>[] {</span><br><span class=\"line\"> <span class=\"comment\">//格式化时间</span></span><br><span class=\"line\"> SerializerFeature.WriteDateUseDateFormat</span><br><span class=\"line\"> };</span><br><span class=\"line\"> <span class=\"keyword\">return</span> JSON.toJSONString(object, <span class=\"keyword\">new</span> <span class=\"title class_\">ValueFilter</span>() {</span><br><span class=\"line\"> <span class=\"meta\">@Override</span></span><br><span class=\"line\"> <span class=\"keyword\">public</span> Object <span class=\"title function_\">process</span><span class=\"params\">(Object object, String name, Object value)</span> {</span><br><span class=\"line\"> <span class=\"comment\">// 如果名称或者值为null或空字符串,则不序列化该属性</span></span><br><span class=\"line\"> <span class=\"keyword\">if</span> (name == <span class=\"literal\">null</span> || (name <span class=\"keyword\">instanceof</span> String && ((String) name).isEmpty()) ||</span><br><span class=\"line\"> value == <span class=\"literal\">null</span> || (value <span class=\"keyword\">instanceof</span> String && ((String) value).isEmpty())) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"literal\">null</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">return</span> value;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> }, serializerFeatures);</span><br><span class=\"line\"> }</span><br></pre></td></tr></table></figure></p>\n",
|
||||
"tags": [
|
||||
"工作",
|
||||
"解决问题",
|
||||
@@ -64,7 +64,7 @@
|
||||
"url": "https://hitoli.com/2023/11/03/Linux%E4%B8%8B%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2SpringBoot%E9%A1%B9%E7%9B%AE%E7%9A%84%E8%84%9A%E6%9C%AC/",
|
||||
"title": "Linux下快速部署SpringBoot项目的脚本",
|
||||
"date_published": "2023-11-03T13:35:00.000Z",
|
||||
"content_html": "<h4 id=\"windows部署脚本\"><a class=\"anchor\" href=\"#windows部署脚本\">#</a> Windows 部署脚本</h4>\n<p>只需要把 jar 和 yml 跟脚本放在同一目录下即可快速启动。</p>\n<div class=\"note info\">\n<p>拷贝以下代码放入 txt 文本,<span class=\"exturl\" data-url=\"aHR0cDovL3huLS1zdGFydC1kcTFoNzE2YXVzOGFldHcuc2g=\">然后改为 start.sh</span></p>\n</div>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token shebang important\">#!/bin/bash</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre></pre></td></tr><tr><td data-num=\"3\"></td><td><pre><span class=\"token builtin class-name\">export</span> <span class=\"token assign-left variable\">CLOUD_HOME</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">`</span><span class=\"token builtin class-name\">pwd</span><span class=\"token variable\">`</span></span></pre></td></tr><tr><td data-num=\"4\"></td><td><pre></pre></td></tr><tr><td data-num=\"5\"></td><td><pre><span class=\"token comment\"># 获取当前目录中的第一个 JAR 文件的名称</span></pre></td></tr><tr><td data-num=\"6\"></td><td><pre><span class=\"token assign-left variable\">jar_file</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token function\">find</span> <span class=\"token builtin class-name\">.</span> <span class=\"token parameter variable\">-maxdepth</span> <span class=\"token number\">1</span> <span class=\"token parameter variable\">-type</span> f <span class=\"token parameter variable\">-name</span> <span class=\"token string\">\"*.jar\"</span> <span class=\"token operator\">|</span> <span class=\"token function\">head</span> <span class=\"token parameter variable\">-n</span> <span class=\"token number\">1</span><span class=\"token variable\">)</span></span></pre></td></tr><tr><td data-num=\"7\"></td><td><pre></pre></td></tr><tr><td data-num=\"8\"></td><td><pre><span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token parameter variable\">-n</span> <span class=\"token string\">\"<span class=\"token variable\">$jar_file</span>\"</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span></pre></td></tr><tr><td data-num=\"9\"></td><td><pre> <span class=\"token assign-left variable\">jar_file</span><span class=\"token operator\">=</span><span class=\"token variable\">${jar_file<span class=\"token operator\">#</span>.<span class=\"token operator\">/</span>}</span></pre></td></tr><tr><td data-num=\"10\"></td><td><pre> <span class=\"token comment\">#echo \"JAR 文件的名称是: $jar_file\"</span></pre></td></tr><tr><td data-num=\"11\"></td><td><pre> <span class=\"token assign-left variable\">jar_file_name</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token function\">basename</span> <span class=\"token string\">\"<span class=\"token variable\">$jar_file</span>\"</span> .jar<span class=\"token variable\">)</span></span></pre></td></tr><tr><td data-num=\"12\"></td><td><pre><span class=\"token keyword\">else</span></pre></td></tr><tr><td data-num=\"13\"></td><td><pre> <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"当前目录没有JAR文件.\"</span></pre></td></tr><tr><td data-num=\"14\"></td><td><pre> <span class=\"token builtin class-name\">exit</span></pre></td></tr><tr><td data-num=\"15\"></td><td><pre><span class=\"token keyword\">fi</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 comment\"># 获取当前目录中的第一个 yml 文件的名称</span></pre></td></tr><tr><td data-num=\"18\"></td><td><pre><span class=\"token assign-left variable\">yml_file</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token function\">find</span> <span class=\"token builtin class-name\">.</span> <span class=\"token parameter variable\">-maxdepth</span> <span class=\"token number\">1</span> <span class=\"token parameter variable\">-type</span> f <span class=\"token parameter variable\">-name</span> <span class=\"token string\">\"*.yml\"</span> <span class=\"token operator\">|</span> <span class=\"token function\">head</span> <span class=\"token parameter variable\">-n</span> <span class=\"token number\">1</span><span class=\"token variable\">)</span></span></pre></td></tr><tr><td data-num=\"19\"></td><td><pre></pre></td></tr><tr><td data-num=\"20\"></td><td><pre><span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token parameter variablLine truncated
|
||||
"content_html": "<h4 id=\"windows部署脚本\"><a class=\"anchor\" href=\"#windows部署脚本\">#</a> Windows 部署脚本</h4>\n<p>只需要把 jar 和 yml 跟脚本放在同一目录下即可快速启动。</p>\n<div class=\"note info\">\n<p>拷贝以下代码放入 txt 文本,<span class=\"exturl\" data-url=\"aHR0cDovL3huLS1zdGFydC1kcTFoNzE2YXVzOGFldHcuc2g=\">然后改为 start.sh</span></p>\n</div>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\">#!/bin/bash</span></span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"built_in\">export</span> CLOUD_HOME=`<span class=\"built_in\">pwd</span>`</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 获取当前目录中的第一个JAR文件的名称</span></span><br><span class=\"line\">jar_file=$(find . -maxdepth 1 -<span class=\"built_in\">type</span> f -name <span class=\"string\">"*.jar"</span> | <span class=\"built_in\">head</span> -n 1)</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"keyword\">if</span> [ -n <span class=\"string\">"<span class=\"variable\">$jar_file</span>"</span> ]; <span class=\"keyword\">then</span></span><br><span class=\"line\"> jar_file=<span class=\"variable\">${jar_file#./}</span></span><br><span class=\"line\"> <span class=\"comment\">#echo "JAR文件的名称是: $jar_file"</span></span><br><span class=\"line\"> jar_file_name=$(<span class=\"built_in\">basename</span> <span class=\"string\">"<span class=\"variable\">$jar_file</span>"</span> .jar)</span><br><span class=\"line\"><span class=\"keyword\">else</span></span><br><span class=\"line\"> <span class=\"built_in\">echo</span> <span class=\"string\">"当前目录没有JAR文件."</span></span><br><span class=\"line\"> <span class=\"built_in\">exit</span></span><br><span class=\"line\"><span class=\"keyword\">fi</span></span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 获取当前目录中的第一个yml文件的名称</span></span><br><span class=\"line\">yml_file=$(find . -maxdepth 1 -<span class=\"built_in\">type</span> f -name <span class=\"string\">"*.yml"</span> | <span class=\"built_in\">head</span> -n 1)</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"keyword\">if</span> [ -n <span class=\"string\">"<span class=\"variable\">$yml_file</span>"</span> ]; <span class=\"keyword\">then</span></span><br><span class=\"line\"> yml_file=<span class=\"variable\">${yml_file#./}</span></span><br><span class=\"line\"> <span class=\"comment\">#echo "YML文件的名称是: $yml_file"</span></span><br><span class=\"line\"><span class=\"keyword\">else</span></span><br><span class=\"line\"> <span class=\"built_in\">echo</span> <span class=\"string\">"当前目录中没有YML文件."</span></span><br><span class=\"line\"><span class=\"keyword\">fi</span></span><br><span class=\"line\"></span><br><span class=\"line\">pids=$(ps -ef | grep java | grep <span class=\"variable\">$jar_file_name</span> | grep -v grep | awk <span class=\"string\">'{print $2}'</span>)</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"keywordLine truncated
|
||||
"tags": [
|
||||
"Linux",
|
||||
"工具",
|
||||
@@ -92,7 +92,7 @@
|
||||
"url": "https://hitoli.com/2023/10/28/Windows%E4%B8%8B%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2SpringBoot%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%89%B9%E5%A4%84%E7%90%86/",
|
||||
"title": "Windows下快速部署SpringBoot项目的批处理",
|
||||
"date_published": "2023-10-28T11:56:00.000Z",
|
||||
"content_html": "<h4 id=\"windows部署脚本\"><a class=\"anchor\" href=\"#windows部署脚本\">#</a> Windows 部署脚本</h4>\n<p>只需要把 jar 和 yml 跟批处理放在同一目录下即可点击快速启动。启动后再次点击会关闭上次启动的窗口并重新启动。</p>\n<div class=\"note info\">\n<p>拷贝以下代码放入 txt 文本,然后改为 start.bat</p>\n</div>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>@ECHO OFF</pre></td></tr><tr><td data-num=\"2\"></td><td><pre>setlocal enabledelayedexpansion</pre></td></tr><tr><td data-num=\"3\"></td><td><pre></pre></td></tr><tr><td data-num=\"4\"></td><td><pre>REM 关闭上次进程</pre></td></tr><tr><td data-num=\"5\"></td><td><pre>SET <span class=\"token string\">\"pidFile=pid.txt\"</span></pre></td></tr><tr><td data-num=\"6\"></td><td><pre><span class=\"token keyword\">if</span> exist <span class=\"token string\">\"%pidFile%\"</span> <span class=\"token punctuation\">(</span></pre></td></tr><tr><td data-num=\"7\"></td><td><pre>\t<span class=\"token keyword\">for</span> /f <span class=\"token string\">\"usebackq\"</span> %%a <span class=\"token keyword\">in</span> <span class=\"token punctuation\">(</span><span class=\"token string\">\"pid.txt\"</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">do</span> <span class=\"token punctuation\">(</span></pre></td></tr><tr><td data-num=\"8\"></td><td><pre>\t\t<span class=\"token builtin class-name\">set</span> <span class=\"token assign-left variable\">PID</span><span class=\"token operator\">=</span>%%a</pre></td></tr><tr><td data-num=\"9\"></td><td><pre>\t<span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"10\"></td><td><pre>\t<span class=\"token keyword\">if</span> not <span class=\"token string\">\"!PID!\"</span><span class=\"token operator\">==</span><span class=\"token string\">\"\"</span> <span class=\"token punctuation\">(</span></pre></td></tr><tr><td data-num=\"11\"></td><td><pre>\t\ttaskkill /F /T /PID <span class=\"token operator\">!</span>pid<span class=\"token operator\">!</span></pre></td></tr><tr><td data-num=\"12\"></td><td><pre>\t\tdel pid.txt</pre></td></tr><tr><td data-num=\"13\"></td><td><pre>\t<span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"14\"></td><td><pre><span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"15\"></td><td><pre></pre></td></tr><tr><td data-num=\"16\"></td><td><pre>REM 存储当前进程</pre></td></tr><tr><td data-num=\"17\"></td><td><pre><span class=\"token keyword\">for</span> /f %%i <span class=\"token keyword\">in</span> <span class=\"token punctuation\">(</span><span class=\"token string\">'wmic process where \"name='</span>cmd.exe<span class=\"token string\">' and CommandLine like '</span>%%<span class=\"token operator\"><</span>scriptname<span class=\"token operator\">></span>.bat%%<span class=\"token string\">'\" get ParentProcessId ^| findstr /r \"[0-9]\"'</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">do</span> <span class=\"token builtin class-name\">set</span> <span class=\"token assign-left variable\">pid</span><span class=\"token operator\">=</span>%%i</pre></td></tr><tr><td data-num=\"18\"></td><td><pre><span class=\"token builtin class-name\">echo</span> %PID% <span class=\"token operator\">></span> pid.txt</pre></td></tr><tr><td data-num=\"19\"></td><td><pre></pre></td></tr><tr><td data-num=\"20\"></td><td><pre>REM 设置title</pre></td></tr><tr><td data-num=\"21\"></td><td><pre><span class=\"token keyword\">for</span> /f <span class=\"token string\">\"tokens=2\"</span> %%i <span class=\"token keyword\">in</span> <span class=\"token punctuation\">(</span><span class=\"token string\">'chcp'</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">do</span> <span class=\"token builtin class-name\">set</span> <span class=\"token assign-left variable\">codepage</span><span class=\"token operator\">=</span>%%i</pre></td></tr><tr><td data-num=\"22\"></td><td><pre>chcp <span class=\"token number\">65001</span> <span class=\"token operator\">></span> nul</pre></td></tr><tr><td data-num=\"23\"></td><td><pre>title 我的SpringBoot项目</pre></td></tr><tr><td data-num=\"24\"></td><td><pre>chcp %codepage% <span class=\"token operator\">></span> nul</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 builtin class-name\">cd</span> %~dp0</pre></td></tr><tr><td data-num=\"27\"></td><td><pre></pre></td></tr><tr><td data-num=\"28\"></td><td><pre>REM 获取jar</pre></td></tr><tr><td data-num=\"29\"></td><td><pre><span class=\"token builtin class-name\">set</span> <span class=\"token string\">\"jarFile=\"</span></pre></td></tr><tr><td data-num=\"30\"></td><td><pre><span class=\"token keyword\">for</span> %%i <span class=\"tokenLine truncated
|
||||
"content_html": "<h4 id=\"windows部署脚本\"><a class=\"anchor\" href=\"#windows部署脚本\">#</a> Windows 部署脚本</h4>\n<p>只需要把 jar 和 yml 跟批处理放在同一目录下即可点击快速启动。启动后再次点击会关闭上次启动的窗口并重新启动。</p>\n<div class=\"note info\">\n<p>拷贝以下代码放入 txt 文本,然后改为 start.bat</p>\n</div>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br><span class=\"line\">58</span><br><span class=\"line\">59</span><br><span class=\"line\">60</span><br><span class=\"line\">61</span><br><span class=\"line\">62</span><br><span class=\"line\">63</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">@ECHO OFF</span><br><span class=\"line\">setlocal enabledelayedexpansion</span><br><span class=\"line\"></span><br><span class=\"line\">REM 关闭上次进程</span><br><span class=\"line\">SET <span class=\"string\">"pidFile=pid.txt"</span></span><br><span class=\"line\"><span class=\"keyword\">if</span> exist <span class=\"string\">"%pidFile%"</span> (</span><br><span class=\"line\">\t<span class=\"keyword\">for</span> /f <span class=\"string\">"usebackq"</span> %%a <span class=\"keyword\">in</span> (<span class=\"string\">"pid.txt"</span>) <span class=\"keyword\">do</span> (</span><br><span class=\"line\">\t\t<span class=\"built_in\">set</span> PID=%%a</span><br><span class=\"line\">\t)</span><br><span class=\"line\">\t<span class=\"keyword\">if</span> not <span class=\"string\">"!PID!"</span>==<span class=\"string\">""</span> (</span><br><span class=\"line\">\t\ttaskkill /F /T /PID !pid!</span><br><span class=\"line\">\t\tdel pid.txt</span><br><span class=\"line\">\t)</span><br><span class=\"line\">)</span><br><span class=\"line\"></span><br><span class=\"line\">REM 存储当前进程</span><br><span class=\"line\"><span class=\"keyword\">for</span> /f %%i <span class=\"keyword\">in</span> (<span class=\"string\">'wmic process where "name='</span>cmd.exe<span class=\"string\">' and CommandLine like '</span>%%<scriptname>.bat%%<span class=\"string\">'" get ParentProcessId ^| findstr /r "[0-9]"'</span>) <span class=\"keyword\">do</span> <span class=\"built_in\">set</span> pid=%%i</span><br><span class=\"line\"><span class=\"built_in\">echo</span> %PID% > pid.txt</span><br><span class=\"line\"></span><br><span class=\"line\">REM 设置title</span><br><span class=\"line\"><span class=\"keyword\">for</span> /f <span class=\"string\">"tokens=2"</span> %%i <span class=\"keyword\">in</span> (<span class=\"string\">'chcp'</span>) <span class=\"keyword\">do</span> <span class=\"built_in\">set</span> codepage=%%i</span><br><span class=\"line\">chcp 65001 > nul</span><br><span class=\"line\">title 我的SpringBoot项目</span><br><span class=\"line\">chcp %codepage% > nul</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"builLine truncated
|
||||
"tags": [
|
||||
"Windows",
|
||||
"工具",
|
||||
@@ -107,7 +107,7 @@
|
||||
"url": "https://hitoli.com/2023/10/28/Centos%E6%8C%82%E8%BD%BD%E6%96%B0%E7%A1%AC%E7%9B%98/",
|
||||
"title": "Centos挂载新硬盘",
|
||||
"date_published": "2023-10-28T11:26:00.000Z",
|
||||
"content_html": "<h4 id=\"查看磁盘信息\"><a class=\"anchor\" href=\"#查看磁盘信息\">#</a> 查看磁盘信息</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">fdisk</span> <span class=\"token parameter variable\">-l</span> 查看当前磁盘的分区情况</pre></td></tr></table></figure><p><img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/4dc953fc5a5e.png\" alt=\"\" /><br />\n可从图中获取以下信息:<br />\n/dev/vdb 数据盘容量为 60GB,包含 MBR 分区 /dev/vdb1,容量为 50GB。<br />\n/dev/vdc 数据盘容量为 60GB,包含 GPT 分区 /dev/vdc1,容量为 50GB。</p>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">df</span> <span class=\"token parameter variable\">-TH</span> 分区的文件系统类型</pre></td></tr></table></figure><p><img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/8996c9620632.png\" alt=\"\" /><br />\n可从图中获取以下信息:<br />\n/dev/vdb1 文件系统类型为 ext4,已挂载至 /mnt/disk1。<br />\n/dev/vdc1 文件系统类型为 xfs,已挂载至 /mnt/disk2。</p>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">fdisk</span> /dev/vdb 查看新磁盘情况</pre></td></tr></table></figure><p><img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/0f1237aef57b.png\" alt=\"\" /></p>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>lsbl 查看分区情况</pre></td></tr></table></figure><p><img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/8071a3832e29.png\" alt=\"\" /></p>\n<h4 id=\"挂载新硬盘\"><a class=\"anchor\" href=\"#挂载新硬盘\">#</a> 挂载新硬盘</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>mkfs.ext4 /dev/vdb 格式化磁盘</pre></td></tr></table></figure><p><img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/9353dd85579f.png\" alt=\"\" /></p>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token builtin class-name\">cd</span> /mnt</pre></td></tr><tr><td data-num=\"2\"></td><td><pre><span class=\"token function\">mkdir</span> data 新建挂载点</pre></td></tr><tr><td data-num=\"3\"></td><td><pre><span class=\"token function\">mount</span> /dev/vdb /mnt/data 挂载</pre></td></tr></table></figure><figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">df</span> <span class=\"token parameter variable\">-h</span> 查看挂载情况</pre></td></tr></table></figure><p><img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/ead4f7b1323f.png\" alt=\"\" /><br />\n查看 UUID 有三种方式:</p>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>blkid</pre></td></tr></table></figure><p><img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/236412bc1e3f.png\" alt=\"\" /></p>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>lsblk <span class=\"token parameter variable\">-f</span></pre></td></tr></table></figure><p><img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/35d7182c5647.png\" alt=\"\" /></p>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>ll /dev/disk/by-uuid/</pre></td></tr></table></figure><p><img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/3f9d4f69d8ea.png\" alt=\"\" /></p>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>设置自动挂载:</pre></td></tr><tr><td data-num=\"2\"></td><td><pre><span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"UUID=c8ac09ca-fd4d-4511-bd2c-4fdf96f08168 /data ext4 defaults 0 0\"</span> <span class=\"token operator\">>></span> /etc/fstab</pre></td></tr><tr><td data-num=\"3\"></td><td><pre>自动挂载/etc/fstab里面的东西</pre></td></tr><tr><td data-num=\"4\"></td><td><pre><span class=\"token function\">mount</span> <span class=\"token parameter variable\">-a</span></pre></td></tr></table></figure><h4 id=\"临时卸载\"><a class=\"anchor\" href=\"#临时卸载\">#</a> 临时卸载</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">umount</span> /dev/vdb 重启机器之后又Line truncated
|
||||
"content_html": "<h4 id=\"查看磁盘信息\"><a class=\"anchor\" href=\"#查看磁盘信息\">#</a> 查看磁盘信息</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">fdisk -l 查看当前磁盘的分区情况</span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/4dc953fc5a5e.png\" alt=\"\" /><br />\n 可从图中获取以下信息:<br />\n/dev/vdb 数据盘容量为 60GB,包含 MBR 分区 /dev/vdb1,容量为 50GB。<br />\n/dev/vdc 数据盘容量为 60GB,包含 GPT 分区 /dev/vdc1,容量为 50GB。</p>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"built_in\">df</span> -TH 分区的文件系统类型</span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/8996c9620632.png\" alt=\"\" /><br />\n 可从图中获取以下信息:<br />\n/dev/vdb1 文件系统类型为 ext4,已挂载至 /mnt/disk1。<br />\n/dev/vdc1 文件系统类型为 xfs,已挂载至 /mnt/disk2。<br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">fdisk /dev/vdb 查看新磁盘情况</span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/0f1237aef57b.png\" alt=\"\" /><br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">lsbl 查看分区情况</span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/8071a3832e29.png\" alt=\"\" /></p>\n<h4 id=\"挂载新硬盘\"><a class=\"anchor\" href=\"#挂载新硬盘\">#</a> 挂载新硬盘</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">mkfs.ext4 /dev/vdb 格式化磁盘</span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/9353dd85579f.png\" alt=\"\" /><br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"built_in\">cd</span> /mnt</span><br><span class=\"line\"><span class=\"built_in\">mkdir</span> data 新建挂载点</span><br><span class=\"line\">mount /dev/vdb /mnt/data 挂载</span><br></pre></td></tr></table></figure><br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"built_in\">df</span> -h 查看挂载情况</span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/ead4f7b1323f.png\" alt=\"\" /><br />\n 查看 UUID 有三种方式:<br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">blkid</span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/236412bc1e3f.png\" alt=\"\" /><br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">lsblk -f</span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/35d7182c5647.png\" alt=\"\" /><br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">ll /dev/disk/by-uuid/</span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/10/28/3f9d4f69d8ea.png\" alt=\"\" /><br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">设置自动挂载:</span><br><span class=\"line\"><span class=\"built_in\">echo</span> <span class=\"string\">"UUID=c8ac09ca-fd4d-4511-bd2c-4fdf96f08168 /data ext4 defaults 0 0"</span> >> /etc/fstab</span><br><span class=\"line\">自动挂载/etc/fstab里面的东西</span><br><span class=\"line\">mount -a</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"临时卸载\"><a class=\"anchor\" href=\"#临时卸载\">#</a> 临Line truncated
|
||||
"tags": [
|
||||
"Linux",
|
||||
"Centos",
|
||||
@@ -121,7 +121,7 @@
|
||||
"url": "https://hitoli.com/2023/09/09/squid-stunnel-%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91/",
|
||||
"title": "squid+stunnel 科学上网",
|
||||
"date_published": "2023-09-09T08:48:00.000Z",
|
||||
"content_html": "<h4 id=\"前言\"><a class=\"anchor\" href=\"#前言\">#</a> 前言</h4>\n<p>科学上网的方法有多种,有很多第三方提供的免费方案,这些方案优缺点暂时不予讨论。实际工作生活中还是会有需要自己搭建的情况,这次介绍的是使用 squid+stunnel 方案进行搭建。</p>\n<h4 id=\"准备\"><a class=\"anchor\" href=\"#准备\">#</a> 准备</h4>\n<p>一台可以访问外网的服务器,如香港的云主机并安装 Ubuntu 系统。</p>\n<h5 id=\"squid部分\"><a class=\"anchor\" href=\"#squid部分\">#</a> squid 部分</h5>\n<ul>\n<li>1、安装</li>\n</ul>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">apt-get</span> <span class=\"token function\">install</span> <span class=\"token parameter variable\">-y</span> squid</pre></td></tr></table></figure><ul>\n<li>2、配置</li>\n</ul>\n<div class=\"note info\">\n<p>生成用户文件</p>\n</div>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function\">apt-get</span> <span class=\"token function\">install</span> apache2-utils</pre></td></tr><tr><td data-num=\"2\"></td><td><pre>htpasswd <span class=\"token parameter variable\">-c</span> /etc/squid/squid_user.txt 用户名</pre></td></tr></table></figure><div class=\"note info\">\n<p>修改 squid 配置<br />\n 1、直接修改 /etc/squid/squid.conf 文件<br />\n 2、修改 /etc/squid/conf.d/debian.conf 文件<br />\n两种方式都一样,在底部加入以下代码</p>\n</div>\n<figure class=\"highlight yaml\"><figcaption data-lang=\"YAML\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token comment\">#dns 服务器地址</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre>dns_nameservers 8.8.8.8 8.8.4.4</pre></td></tr><tr><td data-num=\"3\"></td><td><pre>dns_v4_first on</pre></td></tr><tr><td data-num=\"4\"></td><td><pre><span class=\"token comment\"># 监听端口</span></pre></td></tr><tr><td data-num=\"5\"></td><td><pre>http_port 3128</pre></td></tr><tr><td data-num=\"6\"></td><td><pre><span class=\"token comment\"># 定义 squid 密码文件与 ncsa_auth 文件位置</span></pre></td></tr><tr><td data-num=\"7\"></td><td><pre>auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/squid_user.txt</pre></td></tr><tr><td data-num=\"8\"></td><td><pre><span class=\"token comment\"># 认证进程的数量</span></pre></td></tr><tr><td data-num=\"9\"></td><td><pre>auth_param basic children 15</pre></td></tr><tr><td data-num=\"10\"></td><td><pre><span class=\"token comment\"># 认证对话框显示提示信息</span></pre></td></tr><tr><td data-num=\"11\"></td><td><pre>auth_param basic realm Squid proxy<span class=\"token punctuation\">-</span>caching web server</pre></td></tr><tr><td data-num=\"12\"></td><td><pre><span class=\"token comment\"># 认证有效期</span></pre></td></tr><tr><td data-num=\"13\"></td><td><pre>auth_param basic credentialsttl 24 hours</pre></td></tr><tr><td data-num=\"14\"></td><td><pre><span class=\"token comment\"># 是否区分用户名大小,off 为不区分</span></pre></td></tr><tr><td data-num=\"15\"></td><td><pre>auth_param basic casesensitive off</pre></td></tr><tr><td data-num=\"16\"></td><td><pre><span class=\"token comment\"># 对定义的 squid_user 文件内的用户开启认证访问</span></pre></td></tr><tr><td data-num=\"17\"></td><td><pre>acl 用户名 proxy_auth REQUIRED</pre></td></tr><tr><td data-num=\"18\"></td><td><pre><span class=\"token comment\"># 允许 squid_user 文件内用户进行代理</span></pre></td></tr><tr><td data-num=\"19\"></td><td><pre>http_access allow 用户名</pre></td></tr><tr><td data-num=\"20\"></td><td><pre><span class=\"token comment\"># 顺序匹配,最后添加拒绝所有未允许的规则。不添加会发现,未匹配到的规则会被放行</span></pre></td></tr><tr><td data-num=\"21\"></td><td><pre>http_access deny all</pre></td></tr><tr><td data-num=\"22\"></td><td><pre><span class=\"token comment\"># 缓存设置</span></pre></td></tr><tr><td data-num=\"23\"></td><td><pre>cache_dir ufs /var/spool/squid 100 16 256 read<span class=\"token punctuation\">-</span>only</pre></td></tr><tr><td data-num=\"24\"></td><td><pre>cache_mem 0 MB</pre></td></tr><tr><td data-num=\"25\"></td><td><pre>coredump_dir /var/spool/squid</pre></td></tr><tr><td data-num=\"26\"></td><td><pre><span class=\"token comment\"># 配置高匿,不允许设置任何多余头信息,保持原请求 header。</span></pre></td></tr><tr><td data-num=\"27\"></td><td><pre>header_access Via deny all</pre></td></tr><tr><td data-num=\"28\"></td><td><pre>header_access X<span class=\"token punctuation\">-</span>Forwarded<span class=\"token punctuation\">-</span>For deny all</pre></td></tr><tr><td data-num=\"29\"></td><td><pre>header_access ServerLine truncated
|
||||
"content_html": "<h4 id=\"前言\"><a class=\"anchor\" href=\"#前言\">#</a> 前言</h4>\n<p>科学上网的方法有多种,有很多第三方提供的免费方案,这些方案优缺点暂时不予讨论。实际工作生活中还是会有需要自己搭建的情况,这次介绍的是使用 squid+stunnel 方案进行搭建。</p>\n<h4 id=\"准备\"><a class=\"anchor\" href=\"#准备\">#</a> 准备</h4>\n<p>一台可以访问外网的服务器,如香港的云主机并安装 Ubuntu 系统。</p>\n<h5 id=\"squid部分\"><a class=\"anchor\" href=\"#squid部分\">#</a> squid 部分</h5>\n<ul>\n<li>1、安装</li>\n</ul>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">apt-get install -y squid</span><br></pre></td></tr></table></figure></p>\n<ul>\n<li>2、配置</li>\n</ul>\n<div class=\"note info\">\n<p>生成用户文件</p>\n</div>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">apt-get install apache2-utils</span><br><span class=\"line\">htpasswd -c /etc/squid/squid_user.txt 用户名</span><br></pre></td></tr></table></figure></p>\n<div class=\"note info\">\n<p>修改 squid 配置<br />\n 1、直接修改 /etc/squid/squid.conf 文件<br />\n 2、修改 /etc/squid/conf.d/debian.conf 文件<br />\n两种方式都一样,在底部加入以下代码</p>\n</div>\n<p><figure class=\"highlight yaml\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">#dns服务器地址</span></span><br><span class=\"line\"><span class=\"string\">dns_nameservers</span> <span class=\"number\">8.8</span><span class=\"number\">.8</span><span class=\"number\">.8</span> <span class=\"number\">8.8</span><span class=\"number\">.4</span><span class=\"number\">.4</span></span><br><span class=\"line\"><span class=\"string\">dns_v4_first</span> <span class=\"string\">on</span></span><br><span class=\"line\"><span class=\"comment\"># 监听端口</span></span><br><span class=\"line\"><span class=\"string\">http_port</span> <span class=\"number\">3128</span></span><br><span class=\"line\"><span class=\"comment\"># 定义squid密码文件与ncsa_auth文件位置</span></span><br><span class=\"line\"><span class=\"string\">auth_param</span> <span class=\"string\">basic</span> <span class=\"string\">program</span> <span class=\"string\">/usr/lib/squid/basic_ncsa_auth</span> <span class=\"string\">/etc/squid/squid_user.txt</span></span><br><span class=\"line\"><span class=\"comment\"># 认证进程的数量</span></span><br><span class=\"line\"><span class=\"string\">auth_param</span> <span class=\"string\">basic</span> <span class=\"string\">children</span> <span class=\"number\">15</span></span><br><span class=\"line\"><span class=\"comment\"># 认证对话框显示提示信息</span></span><br><span class=\"line\"><span class=\"string\">auth_param</span> <span class=\"string\">basic</span> <span class=\"string\">realm</span> <span class=\"string\">Squid</span> <span class=\"string\">proxy-caching</span> <span class=\"string\">web</span> <span class=\"string\">server</span></span><br><span class=\"line\"><span class=\"comment\"># 认证有效期</span></span><br><span class=\"line\"><span class=\"string\">auth_param</span> <span class=\"string\">basic</span> <span class=\"string\">credentialsttl</span> <span class=\"number\">24</span> <span class=\"string\">hours</span></span><Line truncated
|
||||
"tags": [
|
||||
"生活",
|
||||
"技术分享",
|
||||
@@ -148,7 +148,7 @@
|
||||
"url": "https://hitoli.com/2023/07/08/%E8%A7%A3%E5%86%B3Lombok%E6%8A%A5%E9%94%99/",
|
||||
"title": "解决Lombok报错",
|
||||
"date_published": "2023-07-08T02:51:00.000Z",
|
||||
"content_html": "<h4 id=\"问题描述\"><a class=\"anchor\" href=\"#问题描述\">#</a> 问题描述</h4>\n<ol>\n<li>报错详情</li>\n</ol>\n<div class=\"note info\">\n<p>java: You aren’t using a compiler supported by lombok, so lombok will not work and has been disabled.<br />\nYour processor is: com.sun.proxy.$Proxy26<br />\nLombok supports: OpenJDK javac, ECJ</p>\n</div>\n<p><img data-src=\"https://nas.hitoli.com:18014/images/2023/07/08/393a238856e4.png\" alt=\"\" /></p>\n<ol start=\"2\">\n<li>\n<p>问题分析<br />\n属于 lombok 编译不通过,原因可能是因为依赖没有更到最新版本</p>\n</li>\n<li>\n<p>解决办法<br />\n在 IntelliJ IDEA 的全局配置 Compiler 中添加如下配置:</p>\n</li>\n</ol>\n<figure class=\"highlight yaml\"><figcaption data-lang=\"YAML\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token punctuation\">-</span>Djps.track.ap.dependencies=false</pre></td></tr></table></figure><p><img data-src=\"https://nas.hitoli.com:18014/images/2023/07/08/34bac08a5d10.png\" alt=\"\" /></p>\n",
|
||||
"content_html": "<h4 id=\"问题描述\"><a class=\"anchor\" href=\"#问题描述\">#</a> 问题描述</h4>\n<ol>\n<li>报错详情</li>\n</ol>\n<div class=\"note info\">\n<p>java: You aren’t using a compiler supported by lombok, so lombok will not work and has been disabled.<br />\nYour processor is: com.sun.proxy.$Proxy26<br />\nLombok supports: OpenJDK javac, ECJ</p>\n</div>\n<p><img data-src=\"https://nas.hitoli.com:18014/images/2023/07/08/393a238856e4.png\" alt=\"\" /></p>\n<ol start=\"2\">\n<li>\n<p>问题分析<br />\n属于 lombok 编译不通过,原因可能是因为依赖没有更到最新版本</p>\n</li>\n<li>\n<p>解决办法<br />\n在 IntelliJ IDEA 的全局配置 Compiler 中添加如下配置:<br />\n<figure class=\"highlight yaml\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"string\">-Djps.track.ap.dependencies=false</span></span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/07/08/34bac08a5d10.png\" alt=\"\" /></p>\n</li>\n</ol>\n",
|
||||
"tags": [
|
||||
"工作",
|
||||
"解决问题",
|
||||
@@ -162,7 +162,7 @@
|
||||
"url": "https://hitoli.com/2023/07/01/shoka%E4%B8%BB%E9%A2%98%E9%80%9F%E5%BA%A6%E4%BC%98%E5%8C%96-%E6%8B%86%E5%88%86jsdelivr/",
|
||||
"title": "shoka主题速度优化-拆分jsdelivr",
|
||||
"date_published": "2023-06-30T17:15:00.000Z",
|
||||
"content_html": "<h4 id=\"前言\"><a class=\"anchor\" href=\"#前言\">#</a> 前言</h4>\n<div class=\"note primary\">\n<p>该篇文章介绍了如何对 shoka 主题进行 jsdelivr 聚合拆分,以便使用国内镜像源和异步加载,从而优化网站速度。具体操作包括更改模板、注册 helper 和更改配置。其中,推荐使用 advVendors 配置,可自定义加载源和 js 文件名,同时支持异步加载、pjax 刷新和 integrity 防 XXS 等特性。</p>\n</div>\n<p>众所周知,jsdelivr 在国内的速度可以用慢的一批来形容而 shoka 主题使用了 jsdelivr 的 combine 功能加载第三方 js, 而 combine 在国内没有镜像源并且阻断了使用 CDN 并发加速的道路,本篇博文会将 jsdelivr 聚合拆分为几个独立的 js, 以便使用国内镜像源和异步加载。</p>\n<div class=\"note info\">\n<p>此方案相较于本地化而言有较大速度优势,尤其在 CDN 并发加持下</p>\n</div>\n<h4 id=\"拆分-jsdelivr\"><a class=\"anchor\" href=\"#拆分-jsdelivr\">#</a> 拆分 jsdelivr</h4>\n<ol>\n<li>更改模板</li>\n</ol>\n<p>打开 <span class=\"red\">shoka\\layout_partials\\layout.njk</span>,找到第 144 行左右:</p>\n<figure class=\"highlight html\"><figcaption data-lang=\"HTML\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://cdn.polyfill.io/v3/polyfill.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>script</span><span class=\"token punctuation\">></span></span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre>{{ _vendor_js() }}</pre></td></tr><tr><td data-num=\"3\"></td><td><pre>{{ _js('app.js') }}</pre></td></tr><tr><td data-num=\"4\"></td><td><pre>{{ partial('_partials/third-party/baidu-analytics.njk', {}, {cache: true}) }}</pre></td></tr></table></figure><p>更改为如下内容:</p>\n<figure class=\"highlight html\"><figcaption data-lang=\"HTML\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://cdn.polyfill.io/v3/polyfill.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>script</span><span class=\"token punctuation\">></span></span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre>{%- if theme.advVendors.enable %}</pre></td></tr><tr><td data-num=\"3\"></td><td><pre>\t{% for i in _list_vendor_js() %}</pre></td></tr><tr><td data-num=\"4\"></td><td><pre>\t\t{{ _adv_vendor_js(i) }}</pre></td></tr><tr><td data-num=\"5\"></td><td><pre>\t{% endfor %}</pre></td></tr><tr><td data-num=\"6\"></td><td><pre>{%- else %}</pre></td></tr><tr><td data-num=\"7\"></td><td><pre>{{ _vendor_js() }}</pre></td></tr><tr><td data-num=\"8\"></td><td><pre>{%- endif %}</pre></td></tr><tr><td data-num=\"9\"></td><td><pre>{{ _js('app.js')}}</pre></td></tr><tr><td data-num=\"10\"></td><td><pre>{{ partial('_partials/third-party/baidu-analytics.njk', {}, {cache: true}) }}</pre></td></tr></table></figure><ol start=\"2\">\n<li>注册 helper</li>\n</ol>\n<p>打开 <span class=\"red\">shoka\\scripts\\helpers\\asset.js</span>, 最后一行新建空行,增加如下内容:</p>\n<figure class=\"highlight javascript\"><figcaption data-lang=\"javascript\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>hexo<span class=\"token punctuation\">.</span>extend<span class=\"token punctuation\">.</span>helper<span class=\"token punctuation\">.</span><span class=\"token function\">register</span><span class=\"token punctuation\">(</span><span class=\"token string\">'_list_vendor_js'</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre> <span class=\"token keyword\">return</span> hexo<span class=\"token punctuation\">.</span>theme<span class=Line truncated
|
||||
"content_html": "<h4 id=\"前言\"><a class=\"anchor\" href=\"#前言\">#</a> 前言</h4>\n<div class=\"note primary\">\n<p>该篇文章介绍了如何对 shoka 主题进行 jsdelivr 聚合拆分,以便使用国内镜像源和异步加载,从而优化网站速度。具体操作包括更改模板、注册 helper 和更改配置。其中,推荐使用 advVendors 配置,可自定义加载源和 js 文件名,同时支持异步加载、pjax 刷新和 integrity 防 XXS 等特性。</p>\n</div>\n<p>众所周知,jsdelivr 在国内的速度可以用慢的一批来形容而 shoka 主题使用了 jsdelivr 的 combine 功能加载第三方 js, 而 combine 在国内没有镜像源并且阻断了使用 CDN 并发加速的道路,本篇博文会将 jsdelivr 聚合拆分为几个独立的 js, 以便使用国内镜像源和异步加载。</p>\n<div class=\"note info\">\n<p>此方案相较于本地化而言有较大速度优势,尤其在 CDN 并发加持下</p>\n</div>\n<h4 id=\"拆分-jsdelivr\"><a class=\"anchor\" href=\"#拆分-jsdelivr\">#</a> 拆分 jsdelivr</h4>\n<ol>\n<li>更改模板</li>\n</ol>\n<p>打开 <span class=\"red\">shoka\\layout_partials\\layout.njk</span>,找到第 144 行左右:</p>\n<p><figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"tag\"><<span class=\"name\">script</span> <span class=\"attr\">src</span>=<span class=\"string\">"https://cdn.polyfill.io/v3/polyfill.js"</span>></span><span class=\"tag\"></<span class=\"name\">script</span>></span></span><br><span class=\"line\"><span class=\"symbol\">&#123;</span><span class=\"symbol\">&#123;</span> _vendor_js() <span class=\"symbol\">&#125;</span><span class=\"symbol\">&#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&#123;</span><span class=\"symbol\">&#123;</span> _js('app.js') <span class=\"symbol\">&#125;</span><span class=\"symbol\">&#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&#123;</span><span class=\"symbol\">&#123;</span> partial('_partials/third-party/baidu-analytics.njk', <span class=\"symbol\">&#123;</span><span class=\"symbol\">&#125;</span>, <span class=\"symbol\">&#123;</span>cache: true<span class=\"symbol\">&#125;</span>) <span class=\"symbol\">&#125;</span><span class=\"symbol\">&#125;</span></span><br></pre></td></tr></table></figure></p>\n<p>更改为如下内容:</p>\n<p><figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"tag\"><<span class=\"name\">script</span> <span class=\"attr\">src</span>=<span class=\"string\">"https://cdn.polyfill.io/v3/polyfill.js"</span>></span><span class=\"tag\"></<span class=\"name\">script</span>></span></span><br><span class=\"line\"><span class=\"symbol\">&#123;</span>%- if theme.advVendors.enable %<span class=\"symbol\">&#125;</span></span><br><span class=\"line\">\t<span class=\"symbol\">&#123;</span>% for i in _list_vendor_js() %<span class=\"symbol\">&#125;</span></span><br><span class=\"line\">\t\t<span class=\"symbol\">&#123;</span><span class=\"symbol\">&#123;</span> _adv_vendor_js(i) <span class=\"symbol\">&#125;</span><span class=\"symbol\">&#125;</span></span><br><span class=\"line\">\t<span class=\"symbol\">&#123;</span>% endfor %<span class=\"symbol\">&#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&#123;</span>%- else %<span class=\"symbol\">&#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&#123;</span><span class=\"symbol\">&#123;</span> _vendor_js() <span class=\"symbol\">&#125;</span><span class=\"symbol\">&#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&#123;</span>%- endif %<span class=\"symbol\">&#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&#123;</span><span class=\"symbol\">&#123;</span> _js('app.js')<span class=\"symbol\">&#125;</span><span class=\"symbol\">&#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&#123;</span><span class=\"symbol\">&#123;</span> partial('_partials/third-party/baidu-analytics.njk', <span class=\"symbol\">&#123;</span><span class=\"symbol\">&#125;</span>, <span class=\"symbol\">&#123;</span>cache: true<spanLine truncated
|
||||
"tags": [
|
||||
"极空间",
|
||||
"Docker",
|
||||
@@ -177,7 +177,7 @@
|
||||
"url": "https://hitoli.com/2023/05/30/http%E8%AF%B7%E6%B1%82%E4%B9%8BrestTemplate%E9%85%8D%E7%BD%AE%E8%B6%85%E6%97%B6%E6%97%B6%E9%97%B4/",
|
||||
"title": "http请求之restTemplate配置超时时间",
|
||||
"date_published": "2023-05-30T09:20:00.000Z",
|
||||
"content_html": "<h4 id=\"问题\"><a class=\"anchor\" href=\"#问题\">#</a> 问题</h4>\n<p>http 请求发起后接收不到返回数据!!!【测试环境没出问题,发到正式环境就有问题】</p>\n<p>项目中通过 restTemplate 发起请求:</p>\n<figure class=\"highlight java\"><figcaption data-lang=\"java\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>log<span class=\"token punctuation\">.</span><span class=\"token function\">info</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"请求入参:{}\"</span><span class=\"token punctuation\">,</span><span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">toJSONString</span><span class=\"token punctuation\">(</span>request<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span><span class=\"token comment\">// 打印日志 1</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre><span class=\"token comment\">// 配置 http 请求的连接超时时间和读取超时时间</span></pre></td></tr><tr><td data-num=\"3\"></td><td><pre><span class=\"token class-name\">HttpsClientRequestFactory</span> factory <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">HttpsClientRequestFactory</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"4\"></td><td><pre>factory<span class=\"token punctuation\">.</span><span class=\"token function\">setConnectTimeout</span><span class=\"token punctuation\">(</span><span class=\"token number\">60</span> <span class=\"token operator\">*</span> <span class=\"token number\">1000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"5\"></td><td><pre>factory<span class=\"token punctuation\">.</span><span class=\"token function\">setReadTimeout</span><span class=\"token punctuation\">(</span><span class=\"token number\">5</span> <span class=\"token operator\">*</span> <span class=\"token number\">60</span> <span class=\"token operator\">*</span> <span class=\"token number\">1000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"6\"></td><td><pre><span class=\"token class-name\">RestTemplate</span> restTemplate <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">RestTemplate</span><span class=\"token punctuation\">(</span>factory<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"7\"></td><td><pre><span class=\"token class-name\">Result</span><span class=\"token generics\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">InventoryResult</span><span class=\"token punctuation\">></span></span> result <span class=\"token operator\">=</span> restTemplate<span class=\"token punctuation\">.</span><span class=\"token function\">postForObject</span><span class=\"token punctuation\">(</span>address<span class=\"token punctuation\">.</span><span class=\"token function\">concat</span><span class=\"token punctuation\">(</span>inventoryUrl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> request<span class=\"token punctuation\">,</span> <span class=\"token class-name\">Result</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"8\"></td><td><pre>log<span class=\"token punctuation\">.</span><span class=\"token function\">info</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"库存同步,返回数据: {}\"</span><span class=\"token punctuation\">,</span> result<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span><span class=\"token comment\">// 打印日志 2</span></pre></td></tr></table></figure><ul>\n<li>打印日志 1 内容为:</li>\n</ul>\n<p>http 请求入参:{data=[{ productStatus=10,skuCode=null}], messageId=ewpfpr1t6ey5r6qj0su0w1h6rt73hr,token=vgvU5EJKuZbuHii7WH6pTINp40ZRicaqLz4dq5P7L6pDzWir8EEGZhCKPucQjljsw69EHasEy+iJfdTofDg==}</p>\n<ul>\n<li>\n<p>打印日志 2 内容为:没有打印内容!!!</p>\n</li>\n<li>\n<p>最后发现是因为测试环境中数据量较小,http 请求后,很快能得到相应,而正式环境数据量较大,没有及时得到响应,连接或者读取超时!!!</p>\n</li>\n</ul>\n<h4 id=\"解决方式\"><a class=\"anchor\" href=\"#解决方式\">#</a> 解决方式</h4>\n<h6 id=\"第一种\"><a class=\"anchor\" href=\"#第一种\">#</a> 第一种</h6>\n<oLine truncated
|
||||
"content_html": "<h4 id=\"问题\"><a class=\"anchor\" href=\"#问题\">#</a> 问题</h4>\n<p>http 请求发起后接收不到返回数据!!!【测试环境没出问题,发到正式环境就有问题】</p>\n<p>项目中通过 restTemplate 发起请求:<br />\n<figure class=\"highlight java\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">log.info(<span class=\"string\">"请求入参:{}"</span>,JSON.toJSONString(request));<span class=\"comment\">//打印日志1</span></span><br><span class=\"line\"><span class=\"comment\">// 配置http请求的连接超时时间和读取超时时间</span></span><br><span class=\"line\"><span class=\"type\">HttpsClientRequestFactory</span> <span class=\"variable\">factory</span> <span class=\"operator\">=</span> <span class=\"keyword\">new</span> <span class=\"title class_\">HttpsClientRequestFactory</span>();</span><br><span class=\"line\">factory.setConnectTimeout(<span class=\"number\">60</span> * <span class=\"number\">1000</span>);</span><br><span class=\"line\">factory.setReadTimeout(<span class=\"number\">5</span> * <span class=\"number\">60</span> * <span class=\"number\">1000</span>);</span><br><span class=\"line\"><span class=\"type\">RestTemplate</span> <span class=\"variable\">restTemplate</span> <span class=\"operator\">=</span> <span class=\"keyword\">new</span> <span class=\"title class_\">RestTemplate</span>(factory);</span><br><span class=\"line\">Result<InventoryResult> result = restTemplate.postForObject(address.concat(inventoryUrl), request, Result.class);</span><br><span class=\"line\">log.info(<span class=\"string\">"库存同步,返回数据: {}"</span>, result);<span class=\"comment\">//打印日志2</span></span><br></pre></td></tr></table></figure></p>\n<ul>\n<li>打印日志 1 内容为:</li>\n</ul>\n<p>http 请求入参:{data=[{ productStatus=10,skuCode=null}], messageId=ewpfpr1t6ey5r6qj0su0w1h6rt73hr,token=vgvU5EJKuZbuHii7WH6pTINp40ZRicaqLz4dq5P7L6pDzWir8EEGZhCKPucQjljsw69EHasEy+iJfdTofDg==}</p>\n<ul>\n<li>\n<p>打印日志 2 内容为:没有打印内容!!!</p>\n</li>\n<li>\n<p>最后发现是因为测试环境中数据量较小,http 请求后,很快能得到相应,而正式环境数据量较大,没有及时得到响应,连接或者读取超时!!!</p>\n</li>\n</ul>\n<h4 id=\"解决方式\"><a class=\"anchor\" href=\"#解决方式\">#</a> 解决方式</h4>\n<h6 id=\"第一种\"><a class=\"anchor\" href=\"#第一种\">#</a> 第一种</h6>\n<ol>\n<li>\n<p>添加 HttpsClientRequestFactory 类,并继承 SimpleClientHttpRequestFactory<br />\n<figure class=\"highlight java\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br></pre></td><td class=\"code\"><pre><span class=\"Line truncated
|
||||
"tags": [
|
||||
"工作",
|
||||
"解决问题",
|
||||
@@ -189,7 +189,7 @@
|
||||
"url": "https://hitoli.com/2023/05/25/%E8%A7%A3%E5%86%B3MySQL%E6%8A%A5only-full-group-by%E9%94%99%E8%AF%AF/",
|
||||
"title": "解决MySQL报only_full_group_by错误",
|
||||
"date_published": "2023-05-25T10:25:00.000Z",
|
||||
"content_html": "<h4 id=\"问题描述\"><a class=\"anchor\" href=\"#问题描述\">#</a> 问题描述</h4>\n<p>当我们迁移到 MySQL 5.7+ 的版本时,常会碰到 ERROR 1055 only_full_group_by 错误,这是 5.7 之后 SQL_MODE 默认打开了严格模式导致的错误。说明你代码里有地方写的不严谨。</p>\n<h4 id=\"解决方法\"><a class=\"anchor\" href=\"#解决方法\">#</a> 解决方法</h4>\n<ol>\n<li>重写 sql</li>\n<li>返回宽松模式</li>\n</ol>\n<figure class=\"highlight sql\"><figcaption data-lang=\"SQL\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token comment\">#查询 sql_mode</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre><span class=\"token keyword\">select</span> @<span class=\"token variable\">@GLOBAL.sql_mode</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"3\"></td><td><pre><span class=\"token comment\">#删除 ONLY_FULL_GROUP_BY</span></pre></td></tr><tr><td data-num=\"4\"></td><td><pre><span class=\"token comment\">#设置 sql_mode</span></pre></td></tr><tr><td data-num=\"5\"></td><td><pre><span class=\"token keyword\">set</span> @<span class=\"token variable\">@GLOBAL.sql_mode</span><span class=\"token operator\">=</span><span class=\"token string\">'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'</span><span class=\"token punctuation\">;</span></pre></td></tr></table></figure><ol start=\"3\">\n<li>使用聚合函数<br />\n如果某些特别的原因就是要查询未分组字段,但你又没空改代码,那么我们可使用聚合函数来规避这类错误,算是一种折中的方案了,语法改严谨了,代码又不需要大动。如 ANY_VALUE ()、MAX ()、MIN () 或者 GROUP_CONCAT () 等聚合函数。</li>\n</ol>\n",
|
||||
"content_html": "<h4 id=\"问题描述\"><a class=\"anchor\" href=\"#问题描述\">#</a> 问题描述</h4>\n<p>当我们迁移到 MySQL 5.7+ 的版本时,常会碰到 ERROR 1055 only_full_group_by 错误,这是 5.7 之后 SQL_MODE 默认打开了严格模式导致的错误。说明你代码里有地方写的不严谨。</p>\n<h4 id=\"解决方法\"><a class=\"anchor\" href=\"#解决方法\">#</a> 解决方法</h4>\n<ol>\n<li>重写 sql</li>\n<li>返回宽松模式<br />\n <figure class=\"highlight sql\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">#查询sql_mode</span><br><span class=\"line\"><span class=\"keyword\">select</span> @<span class=\"variable\">@GLOBAL</span>.sql_mode;</span><br><span class=\"line\">#删除ONLY_FULL_GROUP_BY</span><br><span class=\"line\">#设置sql_mode</span><br><span class=\"line\"><span class=\"keyword\">set</span> @<span class=\"variable\">@GLOBAL</span>.sql_mode<span class=\"operator\">=</span><span class=\"string\">'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'</span>;</span><br></pre></td></tr></table></figure></li>\n<li>使用聚合函数<br />\n如果某些特别的原因就是要查询未分组字段,但你又没空改代码,那么我们可使用聚合函数来规避这类错误,算是一种折中的方案了,语法改严谨了,代码又不需要大动。如 ANY_VALUE ()、MAX ()、MIN () 或者 GROUP_CONCAT () 等聚合函数。</li>\n</ol>\n",
|
||||
"tags": [
|
||||
"工作",
|
||||
"解决问题",
|
||||
@@ -201,7 +201,7 @@
|
||||
"url": "https://hitoli.com/2023/05/25/MySQL%E4%B8%AD%E7%9A%84any-value-%E5%87%BD%E6%95%B0/",
|
||||
"title": "MySQL中的any_value()函数",
|
||||
"date_published": "2023-05-25T10:07:00.000Z",
|
||||
"content_html": "<h4 id=\"问题\"><a class=\"anchor\" href=\"#问题\">#</a> 问题</h4>\n<p>业务要求:查询所有省份:<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/05/25/778f34f5670d.png\" alt=\"\" /></p>\n<h4 id=\"方法\"><a class=\"anchor\" href=\"#方法\">#</a> 方法</h4>\n<ol>\n<li>distinct 排除重复</li>\n</ol>\n<figure class=\"highlight sql\"><figcaption data-lang=\"SQL\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token keyword\">SELECT</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre>\t<span class=\"token keyword\">DISTINCT</span><span class=\"token punctuation\">(</span>province_code<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span></pre></td></tr><tr><td data-num=\"3\"></td><td><pre>\tprovince_name</pre></td></tr><tr><td data-num=\"4\"></td><td><pre><span class=\"token keyword\">FROM</span></pre></td></tr><tr><td data-num=\"5\"></td><td><pre>\tt_mip_base_area</pre></td></tr></table></figure><ol start=\"2\">\n<li>group by 根据身份编码分组</li>\n</ol>\n<figure class=\"highlight sql\"><figcaption data-lang=\"SQL\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token keyword\">SELECT</span> </pre></td></tr><tr><td data-num=\"2\"></td><td><pre>\tprovince_code<span class=\"token punctuation\">,</span></pre></td></tr><tr><td data-num=\"3\"></td><td><pre>\tany_value<span class=\"token punctuation\">(</span>province_name<span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"4\"></td><td><pre><span class=\"token keyword\">FROM</span> t_mip_base_area</pre></td></tr><tr><td data-num=\"5\"></td><td><pre><span class=\"token keyword\">GROUP</span> <span class=\"token keyword\">BY</span> province_code</pre></td></tr></table></figure><h6 id=\"若这样写\"><a class=\"anchor\" href=\"#若这样写\">#</a> 若这样写</h6>\n<figure class=\"highlight sql\"><figcaption data-lang=\"SQL\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token keyword\">SELECT</span> </pre></td></tr><tr><td data-num=\"2\"></td><td><pre> province_code<span class=\"token punctuation\">,</span></pre></td></tr><tr><td data-num=\"3\"></td><td><pre> province_name</pre></td></tr><tr><td data-num=\"4\"></td><td><pre><span class=\"token keyword\">FROM</span> t_mip_base_area</pre></td></tr><tr><td data-num=\"5\"></td><td><pre><span class=\"token keyword\">GROUP</span> <span class=\"token keyword\">BY</span> province_code</pre></td></tr></table></figure><p>则会报错<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/05/25/c57a8e811928.png\" alt=\"\" /></p>\n<h4 id=\"总结\"><a class=\"anchor\" href=\"#总结\">#</a> 总结:</h4>\n<ol>\n<li>\n<p>MySQL5.7 之后,sql_mode 中 ONLY_FULL_GROUP_BY 模式默认设置为打开状态。</p>\n</li>\n<li>\n<p>ONLY_FULL_GROUP_BY 的语义就是确定 select target list 中的所有列的值都是明确语义,简单的说来,在此模式下,target list 中的值要么是来自于聚合函数(sum、avg、max 等)的结果,要么是来自于 group by list 中的表达式的值</p>\n</li>\n<li>\n<p>MySQL 提供了 any_value () 函数来抑制 ONLY_FULL_GROUP_BY 值被拒绝</p>\n</li>\n<li>\n<p>any_value () 会选择被分到同一组的数据里第一条数据的指定列值作为返回数据</p>\n</li>\n</ol>\n",
|
||||
"content_html": "<h4 id=\"问题\"><a class=\"anchor\" href=\"#问题\">#</a> 问题</h4>\n<p>业务要求:查询所有省份:<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/05/25/778f34f5670d.png\" alt=\"\" /></p>\n<h4 id=\"方法\"><a class=\"anchor\" href=\"#方法\">#</a> 方法</h4>\n<ol>\n<li>\n<p>distinct 排除重复<br />\n <figure class=\"highlight sql\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">SELECT</span></span><br><span class=\"line\">\t<span class=\"keyword\">DISTINCT</span>(province_code),</span><br><span class=\"line\">\tprovince_name</span><br><span class=\"line\"><span class=\"keyword\">FROM</span></span><br><span class=\"line\">\tt_mip_base_area</span><br></pre></td></tr></table></figure></p>\n</li>\n<li>\n<p>group by 根据身份编码分组<br />\n <figure class=\"highlight sql\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">SELECT</span> </span><br><span class=\"line\">\tprovince_code,</span><br><span class=\"line\">\tany_value(province_name)</span><br><span class=\"line\"><span class=\"keyword\">FROM</span> t_mip_base_area</span><br><span class=\"line\"><span class=\"keyword\">GROUP</span> <span class=\"keyword\">BY</span> province_code</span><br></pre></td></tr></table></figure></p>\n</li>\n</ol>\n<h6 id=\"若这样写\"><a class=\"anchor\" href=\"#若这样写\">#</a> 若这样写</h6>\n<p><figure class=\"highlight sql\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">SELECT</span> </span><br><span class=\"line\"> province_code,</span><br><span class=\"line\"> province_name</span><br><span class=\"line\"><span class=\"keyword\">FROM</span> t_mip_base_area</span><br><span class=\"line\"><span class=\"keyword\">GROUP</span> <span class=\"keyword\">BY</span> province_code</span><br></pre></td></tr></table></figure><br />\n 则会报错<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/05/25/c57a8e811928.png\" alt=\"\" /></p>\n<h4 id=\"总结\"><a class=\"anchor\" href=\"#总结\">#</a> 总结:</h4>\n<ol>\n<li>\n<p>MySQL5.7 之后,sql_mode 中 ONLY_FULL_GROUP_BY 模式默认设置为打开状态。</p>\n</li>\n<li>\n<p>ONLY_FULL_GROUP_BY 的语义就是确定 select target list 中的所有列的值都是明确语义,简单的说来,在此模式下,target list 中的值要么是来自于聚合函数(sum、avg、max 等)的结果,要么是来自于 group by list 中的表达式的值</p>\n</li>\n<li>\n<p>MySQL 提供了 any_value () 函数来抑制 ONLY_FULL_GROUP_BY 值被拒绝</p>\n</li>\n<li>\n<p>any_value () 会选择被分到同一组的数据里第一条数据的指定列值作为返回数据</p>\n</li>\n</ol>\n",
|
||||
"tags": [
|
||||
"工作",
|
||||
"解决问题",
|
||||
@@ -213,7 +213,7 @@
|
||||
"url": "https://hitoli.com/2023/04/16/%E5%91%BD%E4%BB%A4%E5%A4%A7%E6%9D%82%E7%83%A9/",
|
||||
"title": "命令大杂烩",
|
||||
"date_published": "2023-04-16T05:32:00.000Z",
|
||||
"content_html": "<h4 id=\"日常命令记录\"><a class=\"anchor\" href=\"#日常命令记录\">#</a> 日常命令记录</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token comment\">#windows 系统修复</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre>DISM.exe /Online /Cleanup-image /Scanhealth</pre></td></tr><tr><td data-num=\"3\"></td><td><pre>DISM.exe /Online /Cleanup-image /Restorehealth </pre></td></tr><tr><td data-num=\"4\"></td><td><pre>sfc /scannow</pre></td></tr><tr><td data-num=\"5\"></td><td><pre></pre></td></tr><tr><td data-num=\"6\"></td><td><pre><span class=\"token comment\">#windows 网络修复</span></pre></td></tr><tr><td data-num=\"7\"></td><td><pre>netsh winsock reset</pre></td></tr><tr><td data-num=\"8\"></td><td><pre></pre></td></tr><tr><td data-num=\"9\"></td><td><pre><span class=\"token comment\">#合并 ts 文件</span></pre></td></tr><tr><td data-num=\"10\"></td><td><pre>copy /b c:<span class=\"token punctuation\">\\</span>Users<span class=\"token punctuation\">\\</span>hito<span class=\"token punctuation\">\\</span>Downloads<span class=\"token punctuation\">\\</span>*.ts d:<span class=\"token punctuation\">\\</span><span class=\"token number\">50</span>.mp4</pre></td></tr><tr><td data-num=\"11\"></td><td><pre></pre></td></tr><tr><td data-num=\"12\"></td><td><pre><span class=\"token comment\">#windows11 家庭版安装 Hyper-V(以下命令拷贝到 txt 文本后重命名为 bat 文件然后用管理员权限运行)</span></pre></td></tr><tr><td data-num=\"13\"></td><td><pre><span class=\"token function\">pushd</span> <span class=\"token string\">\"%~dp0\"</span></pre></td></tr><tr><td data-num=\"14\"></td><td><pre><span class=\"token function\">dir</span> /b %SystemRoot%<span class=\"token punctuation\">\\</span>servicing<span class=\"token punctuation\">\\</span>Packages<span class=\"token punctuation\">\\</span>*Hyper-V*.mum <span class=\"token operator\">>></span> hyper-v.txt</pre></td></tr><tr><td data-num=\"15\"></td><td><pre><span class=\"token keyword\">for</span> /f %%i <span class=\"token keyword\">in</span> <span class=\"token punctuation\">(</span><span class=\"token string\">'findstr /i . hyper-v.txt 2^>nul'</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">do</span> dism /online /norestart /add-package:<span class=\"token string\">\"%SystemRoot%\\servicing\\Packages\\%%i\"</span></pre></td></tr><tr><td data-num=\"16\"></td><td><pre>del hyper-v.txt</pre></td></tr><tr><td data-num=\"17\"></td><td><pre>Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL</pre></td></tr><tr><td data-num=\"18\"></td><td><pre></pre></td></tr><tr><td data-num=\"19\"></td><td><pre><span class=\"token comment\">#mysql 查看索引使用情况</span></pre></td></tr><tr><td data-num=\"20\"></td><td><pre>EXPLAIN SELECT A.XXX, B.XXX FROM TABLE1 A, TABLE2 B ON A.XXX <span class=\"token operator\">=</span> B.XXX<span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"21\"></td><td><pre></pre></td></tr><tr><td data-num=\"22\"></td><td><pre><span class=\"token comment\">#mysql 使用触发器插入数据自动生产 uuid 主键</span></pre></td></tr><tr><td data-num=\"23\"></td><td><pre>insert_before BEFORE 插入</pre></td></tr><tr><td data-num=\"24\"></td><td><pre>BEGIN</pre></td></tr><tr><td data-num=\"25\"></td><td><pre>\t\t\tSET NEW.ID <span class=\"token operator\">=</span> REPLACE<span class=\"token punctuation\">(</span>UUID<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>,<span class=\"token string\">\"-\"</span>,<span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"26\"></td><td><pre>END</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 comment\">#excel</span></pre></td></tr><tr><td data-num=\"29\"></td><td><pre><span class=\"token comment\">#合并</span></pre></td></tr><tr><td data-num=\"30\"></td><td><pre><span class=\"token operator\">=</span>CONCATENATE<span class=\"token punctuation\">(</span><span class=\"token string\">\"EX010\"</span>,D2,C2,<span class=\"token string\">\"1\"</span><span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"31\"></td><td><pre><span class=\"token comment\">#截断</span></pre></td></tr><tr><td data-num=\"32\"></td><td><pre><span class=\"token operator\">=</span>LEFT<span class=\"token punctuation\">(</span>E2,6<span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"33\"></td><td><pre><span class=\"token comment\">#判断取值</span></pre></td></tr><tr><td data-num=\"34\"></td><td><pre><span class=\"token operator\">=</span>IF<span class=\"token punctuation\">(</span>O2<span class=\"token operator\Line truncated
|
||||
"content_html": "<h4 id=\"日常命令记录\"><a class=\"anchor\" href=\"#日常命令记录\">#</a> 日常命令记录</h4>\n<p><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">#windows系统修复</span></span><br><span class=\"line\">DISM.exe /Online /Cleanup-image /Scanhealth</span><br><span class=\"line\">DISM.exe /Online /Cleanup-image /Restorehealth </span><br><span class=\"line\">sfc /scannow</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\">#windows网络修复</span></span><br><span class=\"line\">netsh winsock reset</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\">#合并ts文件</span></span><br><span class=\"line\">copy /b c:\\Users\\hito\\Downloads\\*.ts d:\\50.mp4</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\">#windows11家庭版安装Hyper-V(以下命令拷贝到txt文本后重命名为bat文件然后用管理员权限运行)</span></span><br><span class=\"line\"><span class=\"built_in\">pushd</span> <span class=\"string\">"%~dp0"</span></span><br><span class=\"line\"><span class=\"built_in\">dir</span> /b %SystemRoot%\\servicing\\Packages\\*Hyper-V*.mum >> hyper-v.txt</span><br><span class=\"line\"><span class=\"keyword\">for</span> /f %%i <span class=\"keyword\">in</span> (<span class=\"string\">'findstr /i . hyper-v.txt 2^>nul'</span>) <span class=\"keyword\">do</span> dism /online /norestart /add-package:<span class=\"string\">"%SystemRoot%\\servicing\\Packages\\%%i"</span></span><br><span class=\"line\">del hyper-v.txt</span><br><span class=\"line\">Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\">#mysql查看索引使用情况</span></span><br><span class=\"line\">EXPLAIN SELECT A.XXX, B.XXX FROM TABLE1 A, TABLE2 B ON A.XXX = B.XXX;</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\">#mysql使用触发器插入数据自动生产uuid主键</span></span><br><span class=\"line\">insert_before BEFORE 插入</span><br><span class=\"line\">BEGIN</span><br><span class=\"line\">\t\t\tSET NEW.ID = REPLACE(UUID(),<span class=\"string\">"-"</span>,<span class=\"string\">""</span>);</span><br><span class=\"line\">END</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\">#excel</span></span><br><span class=\"line\"><span class=\"comment\">#合并</span></span><br><span class=\"line\">=CONCATENATE(<span class=\"string\">"EX010"</span>,D2,C2,<span class=\"string\">"1"</span>)</span><br><span class=\"line\"><span class=\"comment\">#截断</span></span><br><span class=\"line\">=LEFT(E2,6)</span><br><span class=\"line\"><span class=\"comment\">#判断取值</span></span><br><span class=\"line\">=IF(O2=<span class=\"string\">"宜都市"</span>,<span class=\"string\">"420500000000000"</span>,IF(O2=<span class=\"string\">"高新区"</span>,<span class=\"string\">"420592000000000"</span>,IF(O2=<span class=\"string\">"枝江市"</span>,<span class=\"string\">"420583000000000"</span>,IF(O2=<span class=\"string\">"当阳市"</span>,<span class=\"string\">"420582000000000"</span>,IF(O2=<span class=\"string\">"远安县"</span>,<span class=\"string\">"420525000000000"</span>,IF(O2=<span class=\"string\">"兴山县"</span>,<span class=\"string\">"420526000000000"</span>,IF(O2=<span class=\"string\">"Line truncated
|
||||
"tags": [
|
||||
"生活",
|
||||
"技术分享",
|
||||
@@ -225,7 +225,7 @@
|
||||
"url": "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/",
|
||||
"title": "K8S项目本地部署步骤",
|
||||
"date_published": "2023-04-16T04:39:00.000Z",
|
||||
"content_html": "<h4 id=\"本地部署步骤\"><a class=\"anchor\" href=\"#本地部署步骤\">#</a> 本地部署步骤</h4>\n<ol>\n<li>本机安装 wsl_update_x64.msi (已安装可忽略)</li>\n<li>本机安装 Docker Desktop Installer.exe (已安装可忽略)</li>\n<li>安装成功后,打开设置<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/ab557bae79bf.png\" alt=\"\" /></li>\n<li>选择 Docker Engine,粘贴进如下配置后重启</li>\n</ol>\n<figure class=\"highlight json\"><figcaption data-lang=\"JSON\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token punctuation\">{</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\">{</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\">{</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\">}</span></pre></td></tr><tr><td data-num=\"7\"></td><td><pre> <span class=\"token punctuation\">}</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\">{</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\">}</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\">}</span></pre></td></tr></table></figure><p><img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/93533dd8e043.png\" alt=\"\" /><br />\n5. 本项目 clean、compile、package<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/c14b2405a234.jpg\" alt=\"\" /><br />\n6. 添加一个 DockerFile 的启动配置<br />\n 192.168.86.117/zhsl/ys-zhslsgcgl:0.0.1<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/66f152c95d6e.png\" alt=\"\" /><br />\n7. 保证代码是最新的之后,运行上步的配置,会把刚才 install 生成的 jar 包上传到本机 Docker 生成一个本机 docker 镜像<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/4b915691271f.png\" alt=\"\" /><br />\n 8. 命令行登录本地的 KUBESPHERE,把本机 docker 镜像上传到 KUBESPHERE</p>\n<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>\n<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>\n<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.pnLine truncated
|
||||
"content_html": "<h4 id=\"本地部署步骤\"><a class=\"anchor\" href=\"#本地部署步骤\">#</a> 本地部署步骤</h4>\n<ol>\n<li>本机安装 wsl_update_x64.msi (已安装可忽略)</li>\n<li>本机安装 Docker Desktop Installer.exe (已安装可忽略)</li>\n<li>安装成功后,打开设置<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/ab557bae79bf.png\" alt=\"\" /></li>\n<li>选择 Docker Engine,粘贴进如下配置后重启<br />\n <figure class=\"highlight json\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"punctuation\">{</span></span><br><span class=\"line\"> <span class=\"attr\">"builder"</span><span class=\"punctuation\">:</span> <span class=\"punctuation\">{</span></span><br><span class=\"line\"> <span class=\"attr\">"gc"</span><span class=\"punctuation\">:</span> <span class=\"punctuation\">{</span></span><br><span class=\"line\"> <span class=\"attr\">"defaultKeepStorage"</span><span class=\"punctuation\">:</span> <span class=\"string\">"20GB"</span><span class=\"punctuation\">,</span></span><br><span class=\"line\"> <span class=\"attr\">"enabled"</span><span class=\"punctuation\">:</span> <span class=\"literal\"><span class=\"keyword\">true</span></span></span><br><span class=\"line\"> <span class=\"punctuation\">}</span></span><br><span class=\"line\"> <span class=\"punctuation\">}</span><span class=\"punctuation\">,</span></span><br><span class=\"line\"> <span class=\"attr\">"experimental"</span><span class=\"punctuation\">:</span> <span class=\"literal\"><span class=\"keyword\">false</span></span><span class=\"punctuation\">,</span></span><br><span class=\"line\"> <span class=\"attr\">"features"</span><span class=\"punctuation\">:</span> <span class=\"punctuation\">{</span></span><br><span class=\"line\"> <span class=\"attr\">"buildkit"</span><span class=\"punctuation\">:</span> <span class=\"literal\"><span class=\"keyword\">true</span></span></span><br><span class=\"line\"> <span class=\"punctuation\">}</span><span class=\"punctuation\">,</span></span><br><span class=\"line\"> <span class=\"attr\">"insecure-registries"</span><span class=\"punctuation\">:</span> <span class=\"punctuation\">[</span></span><br><span class=\"line\"> <span class=\"string\">"http://192.168.86.117"</span></span><br><span class=\"line\"> <span class=\"punctuation\">]</span></span><br><span class=\"line\"><span class=\"punctuation\">}</span></span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/93533dd8e043.png\" alt=\"\" /></li>\n<li>本项目 clean、compile、package<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/c14b2405a234.jpg\" alt=\"\" /></li>\n<li>添加一个 DockerFile 的启动配置<br />\n 192.168.86.117/zhsl/ys-zhslsgcgl:0.0.1<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/66f152c95d6e.png\" alt=\"\" /></li>\n<li>保证代码是最新的之后,运行上步的配置,会把刚才 install 生成的 jar 包上传到本机 Docker 生成一个本机 docker 镜像<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/4b915691271f.png\" alt=\"\" /></li>\n<li>命令行登录本地的 KUBESPHERE,把本机 docker 镜像上传到 KUBESPHERE<br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">docker login 192.168.86.117</span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/d1acb4e8e336.png\" alt=\"\" /><br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">docker images命令也可以看到本机docker镜像</span><br></pre></td></tr></table></figure><br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/04/16/2b22d19f4649.png\" alt=\"\" /><br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">把本机docker镜像上传到KUBESPHERE</span><br><span class=\"line\">docker push 192Line truncated
|
||||
"tags": [
|
||||
"工作",
|
||||
"项目部署",
|
||||
@@ -238,7 +238,7 @@
|
||||
"url": "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/",
|
||||
"title": "烽火10G-ONU天翼网关4.0破解(HG5143F)",
|
||||
"date_published": "2023-04-16T03:03:00.000Z",
|
||||
"content_html": "<h4 id=\"开启telent\"><a class=\"anchor\" href=\"#开启telent\">#</a> 开启 telent</h4>\n<p>注意:54XXXXXXXXC8 为光猫背后 ONU MAC:54-XX-XX-XX-XX-C8</p>\n<ol>\n<li>打开 http://192.168.X.X:8080 (网关地址) 使用密码登陆</li>\n<li>执行 http://192.168.X.X:8080/cgi-bin/telnetenable.cgi?key=54XXXXXXXXC8&telnetenable=1</li>\n<li>用 telent 命令登陆<br />\n用户名:telecom 密码:nE7jA%5m</li>\n<li>获取 telnet 用户名密码</li>\n</ol>\n<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\">\n<li>转为 root 用户</li>\n</ol>\n<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\">\n<li>获取 web 超级密码</li>\n</ol>\n<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>\n<p>两种命令模式:</p>\n<h4 id=\"工厂模式\"><a class=\"anchor\" href=\"#工厂模式\">#</a> 工厂模式</h4>\n<ol>\n<li>进入工厂模式</li>\n</ol>\n<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\">\n<li>显示管理员密码</li>\n</ol>\n<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\">\n<li>显示所有命令</li>\n</ol>\n<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\">\n<li>显示所有 show 命令</li>\n</ol>\n<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\">\n<li>显示所有 set 命令</li>\n</ol>\n<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\">\n<li>显示所有信息</li>\n</ol>\n<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>\n<ol>\n<li>开启 TELNET</li>\n</ol>\n<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\">\n<li>打开 FTP 功能</li>\n</ol>\n<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=\"tLine truncated
|
||||
"content_html": "<h4 id=\"开启telent\"><a class=\"anchor\" href=\"#开启telent\">#</a> 开启 telent</h4>\n<p>注意:54XXXXXXXXC8 为光猫背后 ONU MAC:54-XX-XX-XX-XX-C8</p>\n<ol>\n<li>打开 http://192.168.X.X:8080 (网关地址) 使用密码登陆</li>\n<li>执行 http://192.168.X.X:8080/cgi-bin/telnetenable.cgi?key=54XXXXXXXXC8&telnetenable=1</li>\n<li>用 telent 命令登陆<br />\n用户名:telecom 密码:nE7jA%5m</li>\n<li>获取 telnet 用户名密码<br />\n <figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">获取telnet的用户名</span><br><span class=\"line\">cfg_cmd get InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetUserName</span><br><span class=\"line\">获取telnet的密码</span><br><span class=\"line\">cfg_cmd get InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetPassword</span><br></pre></td></tr></table></figure></li>\n<li>转为 root 用户<br />\n <figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">su</span><br><span class=\"line\">密码:Fh@XXXXXX(X为mac地址的后6位)</span><br></pre></td></tr></table></figure></li>\n<li>获取 web 超级密码<br />\n <figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">cfg_cmd get InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Password | grep <span class=\"string\">'get success'</span> | <span class=\"built_in\">cut</span> -d = -f 2</span><br></pre></td></tr></table></figure><br />\n7、访问 http://192.168.1.1:8080/html/logoffaccount.html 把隐藏用户打开,其它选项改为可修改</li>\n</ol>\n<p>两种命令模式:</p>\n<h4 id=\"工厂模式\"><a class=\"anchor\" href=\"#工厂模式\">#</a> 工厂模式</h4>\n<ol>\n<li>进入工厂模式<br />\n <figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">load_cli factory</span><br></pre></td></tr></table></figure></li>\n<li>显示管理员密码<br />\n <figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">show admin_pwd</span><br></pre></td></tr></table></figure></li>\n<li>显示所有命令<br />\n <figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">?</span><br></pre></td></tr></table></figure></li>\n<li>显示所有 show 命令<br />\n <figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">show ?</span><br></pre></td></tr></table></figure></li>\n<li>显示所有 set 命令<br />\n <figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"built_in\">set</span> ?</span><br></pre></td></tr></table></figure></li>\n<li>显示所有信息<br />\n <figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">show allinfo</span><br></pre></td></tr></table></figure></li>\n</ol>\n<h4 id=\"cfg_cmd命令模式\"><a class=\"anchor\" href=\"#cfg_cmd命令模式\">#</a> cfg_cmd 命令模式</h4>\n<ol>\n<li>开启 TELNET<br />\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">cfg_cmd <span class=\"built_in\">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetEnable 1</span><br><span class=\"line\">cfg_cmd <span class=\"built_in\">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetUserName 用户名</span><br><span class=\"line\">cfg_cmd <span class=\"built_in\">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetPassword 密码</span><br></pre></td></tr></table></figure></li>\n<li>打开 FTP 功能<br />\n <figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">cfg_cmd <span class=\"built_in\">set</span> InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.FtpEnable 1</span><br><span class=\"line\">cfg_cmd <span class=\"built_in\">set</span> InternetGLine truncated
|
||||
"tags": [
|
||||
"生活",
|
||||
"技术分享",
|
||||
@@ -266,7 +266,7 @@
|
||||
"url": "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/",
|
||||
"title": "KLineChart画波段高低价图",
|
||||
"date_published": "2023-01-31T01:44:00.000Z",
|
||||
"content_html": "<h4 id=\"引言\"><a class=\"anchor\" href=\"#引言\">#</a> 引言</h4>\n<p>使用指定数据方式得到的线条总是不能达到想要的效果,一是阶梯线在价格发生变化的点存在倾斜,二是高低价的线很难完美显示,所以只能自己动手画了。代码仅供参考,如有错误的地方请指正!<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/01/31/ee3c75b472c5869794e205747703d888.png\" alt=\"ee3c75b472c5869794e205747703d888.png\" /></p>\n<h4 id=\"模版代码\"><a class=\"anchor\" href=\"#模版代码\">#</a> 模版代码</h4>\n<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\">{</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre>\t<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\">{</span> <span class=\"token literal-property property\">value</span><span class=\"token operator\">:</span> <span class=\"token number\">10</span> <span class=\"token punctuation\">}</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\">{</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\">{</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\">}</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span></pre></td></tr><tr><td data-num=\"8\"></td><td><pre> <span class=\"token punctuation\">{</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\">{</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\">}</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span></pre>Line truncated
|
||||
"content_html": "<h4 id=\"引言\"><a class=\"anchor\" href=\"#引言\">#</a> 引言</h4>\n<p>使用指定数据方式得到的线条总是不能达到想要的效果,一是阶梯线在价格发生变化的点存在倾斜,二是高低价的线很难完美显示,所以只能自己动手画了。代码仅供参考,如有错误的地方请指正!<br />\n<img data-src=\"https://nas.hitoli.com:18014/images/2023/01/31/ee3c75b472c5869794e205747703d888.png\" alt=\"ee3c75b472c5869794e205747703d888.png\" /></p>\n<h4 id=\"模版代码\"><a class=\"anchor\" href=\"#模版代码\">#</a> 模版代码</h4>\n<p><figure class=\"highlight js\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br><span class=\"line\">58</span><br><span class=\"line\">59</span><br><span class=\"line\">60</span><br><span class=\"line\">61</span><br><span class=\"line\">62</span><br><span class=\"line\">63</span><br><span class=\"line\">64</span><br><span class=\"line\">65</span><br><span class=\"line\">66</span><br><span class=\"line\">67</span><br><span class=\"line\">68</span><br><span class=\"line\">69</span><br><span class=\"line\">70</span><br><span class=\"line\">71</span><br><span class=\"line\">72</span><br><span class=\"line\">73</span><br><span class=\"line\">74</span><br><span class=\"line\">75</span><br><span class=\"line\">76</span><br><span class=\"line\">77</span><br><span class=\"line\">78</span><br><span class=\"line\">79</span><br><span class=\"line\">80</span><br><span class=\"line\">81</span><br><span class=\"line\">82</span><br><span class=\"line\">83</span><br><span class=\"line\">84</span><br><span class=\"line\">85</span><br><span class=\"line\">86</span><br><span class=\"line\">87</span><br><span class=\"line\">88</span><br><span class=\"line\">89</span><br><span class=\"line\">90</span><br><span class=\"line\">91</span><br><span class=\"line\">92</span><br><span class=\"line\">93</span><br><span class=\"line\">94</span><br><span class=\"line\">95</span><br><span class=\"line\">96</span><br><span class=\"line\">97</span><br><span class=\"line\">98</span><br><span class=\"line\">99</span><br><span class=\"line\">100</span><br><span class=\"line\">101</span><br><span class=\"line\">102</span><br><span class=\"line\">103</span><br><span class=\"line\">104</span><br><span class=\"line\">105</span><br><span class=\"line\">106</span><br><span class=\"line\">107</span><br><span class=\"line\">108</span><br><span class=\"line\">109</span><br><span class=\"line\">110</span><br><span class=\"line\">111</span><br><span class=\"line\">112</span><br><span class=\"line\">113</span><br><span class=\"line\">114</span><br><span class=\"line\">115</span><br><span class=\"line\">116</span><br><span class=\"line\">117</span><br><span class=\"line\">118</span><br><span class=\"line\">119</span><br><span class=\"line\">120</span><br><span class=\"line\">121</span><br><span class=\"line\">122</span><br><span class=\"line\">123</span><br><span class=\"line\">124</span><br><span class=\"line\">125</span><br><span class=\"line\">126</span><br><spaLine truncated
|
||||
"tags": [
|
||||
"工作",
|
||||
"KLineChart",
|
||||
|
||||
Reference in new issue
Block a user