<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>二麻子的博客</title><link>https://note.centos7.online/</link><description>二麻子的博客</description><item><title>ubuntu的一些基本设置</title><link>https://note.centos7.online/?id=8</link><description>&lt;h2&gt;&lt;span style=&quot;color: #222222; font-family: 方正兰亭细黑_GBK, 方正兰亭粗黑简体, 方正兰亭特黑简体, 方正正粗黑简体; font-size: 16px; background-color: #FFFFFF;&quot;&gt;一、设置开机启动(/etc/rc.local)&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;color: #222222; font-family: 方正兰亭细黑_GBK, 方正兰亭粗黑简体, 方正兰亭特黑简体, 方正正粗黑简体; font-size: 16px; background-color: #FFFFFF;&quot;&gt;将/lib/systemd/system/rc-local.service 链接到 /etc/systemd/system/&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;ln&amp;nbsp;-s&amp;nbsp;/lib/systemd/system/rc-local.service&amp;nbsp;/etc/systemd/system/&lt;/pre&gt;&lt;p&gt;创建/etc/rc.local文件(如果不存在的话，存在就跳过本步骤)&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#echo&amp;nbsp;&amp;quot;#!&amp;nbsp;/usr/bin/env&amp;nbsp;bash&amp;quot;&amp;nbsp;&amp;gt;&amp;nbsp;/etc/rc.local&lt;/pre&gt;&lt;p&gt;设置脚本权限&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#chmod&amp;nbsp;+x&amp;nbsp;/etc/rc.local&amp;nbsp;
#chmod&amp;nbsp;777&amp;nbsp;/etc/rc.local&lt;/pre&gt;&lt;p&gt;添加自定义脚本&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#vim&amp;nbsp;/etc/rc.local&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;启动服务&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;#&amp;nbsp;systemctl&amp;nbsp;enable&amp;nbsp;rc-local&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;---------------------------&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;如果【启动服务出现报错】则编辑&amp;nbsp;&lt;span style=&quot;color: #222222; font-family: 方正兰亭细黑_GBK, 方正兰亭粗黑简体, 方正兰亭特黑简体, 方正正粗黑简体; font-size: 16px; background-color: #FFFFFF;&quot;&gt;/lib/systemd/system/rc-local.service，请根据实际情况做以下操作&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#vim&amp;nbsp;/lib/systemd/system/rc-local.service&lt;/pre&gt;&lt;p&gt;再自行酌情编辑为以下内容&lt;br/&gt;&lt;span style=&quot;color: #222222; font-family: 方正兰亭细黑_GBK, 方正兰亭粗黑简体, 方正兰亭特黑简体, 方正正粗黑简体; font-size: 16px; background-color: #FFFFFF;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;[Unit]
Description=/etc/rc.local&amp;nbsp;
CompatibilityDocumentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local&amp;nbsp;startTimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

#核心是这一段&amp;nbsp;安装服务会执行这一段
[Install]
WantedBy=multi-user.target
Alias=rc-local.service&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;二、开启root ssh远程访问&lt;/h2&gt;&lt;p&gt;首先开启root用户(已开启则跳过本步骤)&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;$sudo&amp;nbsp;-i&amp;nbsp;#进入超级用户
#passwd&amp;nbsp;root&amp;nbsp;&amp;nbsp;#设置root账户密码
#vim&amp;nbsp;/etc/ssh/sshd_config&amp;nbsp;&amp;nbsp;#编辑ssh配置&lt;/pre&gt;&lt;p&gt;找到以下内容并且修改&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#Port&amp;nbsp;22
Port&amp;nbsp;22&amp;nbsp;#根据自己实际情况修改端口号，也可不修改
#PermitRootLogin&amp;nbsp;prohibit-password
PermitRootLogin&amp;nbsp;yes&amp;nbsp;&amp;nbsp;#允许root登录&lt;/pre&gt;&lt;p&gt;重启ssh服务&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#service&amp;nbsp;sshd&amp;nbsp;restart&amp;nbsp;&amp;nbsp;#重启ssh服务&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;三、linux通过ssh文件传输&lt;/h2&gt;&lt;p&gt;基本格式&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#scp&amp;nbsp;source&amp;nbsp;&amp;nbsp;target&amp;nbsp;&amp;nbsp;#soruce&amp;nbsp;源文件&amp;nbsp;,&amp;nbsp;target&amp;nbsp;目标文件&lt;/pre&gt;&lt;p&gt;示例&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#将远程服务器的/data1/test2&amp;nbsp;文件复制到本地的&amp;nbsp;/data/www/&amp;nbsp;目录下
#scp&amp;nbsp;username@servername:/data1/test2&amp;nbsp;/data/www/&amp;nbsp;

#将本地的/data/www/test1&amp;nbsp;上传到远程服务器的/data1/目录下&amp;nbsp;
#scp&amp;nbsp;/data/www/test1&amp;nbsp;username@servername:/data1/&amp;nbsp;

#将本地的/data/www/&amp;nbsp;整个目录上传到远程服务器的/data1/www/&amp;nbsp;目录下
#scp&amp;nbsp;-r&amp;nbsp;/data/www/&amp;nbsp;username@servername:/data1/www/&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2 style=&quot;white-space: normal;&quot;&gt;四、ip设置(17以后)&lt;/h2&gt;&lt;p&gt;注意自行判断实际情况的&amp;nbsp;00-installer-config.yaml 文件&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;#vim&amp;nbsp;/etc/netplan/00-installer-config.yaml&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;自动获取IP示例(注意缩进关系)&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;network:
&amp;nbsp;&amp;nbsp;ethernets:
&amp;nbsp;&amp;nbsp;&amp;nbsp;eth0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dhcp4:&amp;nbsp;true
&amp;nbsp;version:&amp;nbsp;2&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;手动设置IP示例(注意缩进关系)&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;network:
&amp;nbsp;&amp;nbsp;ethernets:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eth0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;addresses:&amp;nbsp;[192.168.2.200/24]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gateway4:&amp;nbsp;192.168.2.1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nameservers:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;addresses:&amp;nbsp;[192.168.2.1,8.8.8.8]
&amp;nbsp;&amp;nbsp;version:&amp;nbsp;2
&amp;nbsp;&amp;nbsp;renderer:&amp;nbsp;networkd&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;五、防火墙打开/关闭&lt;/span&gt;&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;#&amp;nbsp;sudo&amp;nbsp;ufw&amp;nbsp;enable

#&amp;nbsp;sudo&amp;nbsp;ufw&amp;nbsp;disable&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;六、LVM调整&lt;/span&gt;&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#查看当前硬盘使用情况&amp;nbsp;Free项为剩余可调整空间
vgdisplay&amp;nbsp;&amp;nbsp;&amp;nbsp;#查看详情

#其他命令
vgs
pvs
lvs


#&amp;nbsp;根据自己的情况选择调整方式&amp;nbsp;通过df&amp;nbsp;-h&amp;nbsp;能查看到&amp;nbsp;/dev/mapper/ubuntu--vg-ubuntu--lv
lvextend&amp;nbsp;-L&amp;nbsp;120G&amp;nbsp;/dev/mapper/ubuntu--vg-ubuntu--lv&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//增大至120G
lvextend&amp;nbsp;-L&amp;nbsp;+20G&amp;nbsp;/dev/mapper/ubuntu--vg-ubuntu--lv&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//增加20G
lvreduce&amp;nbsp;-L&amp;nbsp;50G&amp;nbsp;/dev/mapper/ubuntu--vg-ubuntu--lv&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//减小至50G
lvreduce&amp;nbsp;-L&amp;nbsp;-8G&amp;nbsp;/dev/mapper/ubuntu--vg-ubuntu--lv&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//减小8G
lvresize&amp;nbsp;-L&amp;nbsp;&amp;nbsp;30G&amp;nbsp;/dev/mapper/ubuntu--vg-ubuntu--lv&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//调整为30G
resize2fs&amp;nbsp;/dev/mapper/ubuntu--vg-ubuntu--lv&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//执行调整&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;七、禁止自动更新&lt;/span&gt;&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;systemctl&amp;nbsp;stop&amp;nbsp;apt-daily.timer&amp;nbsp;apt-daily-upgrade.timer
systemctl&amp;nbsp;disable&amp;nbsp;apt-daily.timer&amp;nbsp;apt-daily-upgrade.timer&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Fri, 01 Apr 2022 15:34:17 +0800</pubDate></item><item><title>git 简单常用命令(持续添加...)</title><link>https://note.centos7.online/?id=3</link><description>&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#创建一个服务器仓库
git&amp;nbsp;--bare&amp;nbsp;init&amp;nbsp;myRepository.git

#克隆一个仓库到本地
git&amp;nbsp;clone&amp;nbsp;git@服务器ip:/home/git/project/myRepository&amp;nbsp;./localMyRepository


#添加一个文件到git
git&amp;nbsp;add&amp;nbsp;readme.txt


#提交到本地&amp;nbsp;-m&amp;nbsp;为必须&amp;nbsp;
git&amp;nbsp;commit&amp;nbsp;-m&amp;nbsp;&amp;quot;commit&amp;nbsp;test&amp;quot;

#本地创建创库后与远程仓库连接
git&amp;nbsp;init&amp;nbsp;--initial-branch=master

git&amp;nbsp;add&amp;nbsp;.&amp;nbsp;#&amp;nbsp;加入本地所有文件
git&amp;nbsp;commit&amp;nbsp;-m&amp;nbsp;&amp;quot;first&amp;nbsp;commit&amp;quot;

#&amp;nbsp;本地已有仓库推送到远程
git&amp;nbsp;remote&amp;nbsp;add&amp;nbsp;origin&amp;nbsp;http://a.b.com/project.git&amp;nbsp;
git&amp;nbsp;push&amp;nbsp;-u&amp;nbsp;origin&amp;nbsp;master


#推送本地分支到远程&amp;nbsp;git&amp;nbsp;push&amp;nbsp;&amp;lt;远程主机名&amp;gt;&amp;nbsp;&amp;lt;本地分支名&amp;gt;&amp;nbsp;&amp;nbsp;[&amp;lt;远程分支名&amp;gt;]
git&amp;nbsp;push&amp;nbsp;origin&amp;nbsp;master&amp;nbsp;
#或
git&amp;nbsp;push&amp;nbsp;origin&amp;nbsp;master&amp;nbsp;development


#拉取远程指定分支到本地指定分支
git&amp;nbsp;pull
#或
git&amp;nbsp;pull&amp;nbsp;origin&amp;nbsp;master:development&amp;nbsp;&amp;nbsp;(master表示远程分支&amp;nbsp;&amp;nbsp;development表示本地分支)

#使用远程分支强制覆盖本地当前分支内容
git&amp;nbsp;fetch&amp;nbsp;--all
git&amp;nbsp;reset&amp;nbsp;--hard&amp;nbsp;origin/master&amp;nbsp;(master表示远程分支，按实际情况修改)


#查看分支
git&amp;nbsp;branch
#或
git&amp;nbsp;branch&amp;nbsp;-a&amp;nbsp;


#创建本地分支
git&amp;nbsp;branch&amp;nbsp;myBranch1


#切换到新分支
git&amp;nbsp;checkout&amp;nbsp;myBranch1

#一步到位&amp;nbsp;创建并切换
git&amp;nbsp;checkout&amp;nbsp;-b&amp;nbsp;myBranch1&amp;nbsp;

#从远程master分支创建到本地的development&amp;nbsp;并且切换到development分支
git&amp;nbsp;checkout&amp;nbsp;-b&amp;nbsp;development&amp;nbsp;origin/master


#拉取其他分支提交合并到当前分支
git&amp;nbsp;cherry-pick&amp;nbsp;comintN..commitM&amp;nbsp;&amp;nbsp;#合并提交comintN(不包含)到commitM(包含)
#或
git&amp;nbsp;cherry-pick&amp;nbsp;comintN^..commitM&amp;nbsp;&amp;nbsp;#合并提交comintN(包含)到commitM(包含)

#回滚到上一个版本
git&amp;nbsp;reset&amp;nbsp;--hard&amp;nbsp;HEAD^

#回滚到指定历史版本
#git&amp;nbsp;reset&amp;nbsp;--hard&amp;nbsp;xxxx&amp;nbsp;&amp;nbsp;#xxxx为版本id

#强制推送本地版本到远程仓库
#git&amp;nbsp;push&amp;nbsp;-f&amp;nbsp;origin&amp;nbsp;HEAD&amp;nbsp;&amp;nbsp;#HEAD&amp;nbsp;可以&amp;nbsp;使用&amp;nbsp;master，具体没试，感觉可能是强制覆盖哪个分支


#列出所有tag
git&amp;nbsp;tag

#利用通配符过滤tag
git&amp;nbsp;tag&amp;nbsp;-l&amp;nbsp;*&amp;nbsp;

#新建一个tag
git&amp;nbsp;tag&amp;nbsp;v1.0&amp;nbsp;

#创建带注释的tag
git&amp;nbsp;tag&amp;nbsp;-a&amp;nbsp;tagname&amp;nbsp;-m&amp;nbsp;&amp;quot;comment&amp;quot;&amp;nbsp;

#查看tag的详细信息
git&amp;nbsp;show&amp;nbsp;tagname&amp;nbsp;

#给指定的commit添加tag
git&amp;nbsp;tag&amp;nbsp;-a&amp;nbsp;v1.0&amp;nbsp;commitid&amp;nbsp;-m&amp;nbsp;&amp;quot;comment&amp;quot;&amp;nbsp;

#将指定tag推送到远程
git&amp;nbsp;push&amp;nbsp;origin&amp;nbsp;tagname&amp;nbsp;

#切换到某个tag，不在任何branch
git&amp;nbsp;checkout&amp;nbsp;tagname&amp;nbsp;

#删除某个tag
git&amp;nbsp;tag&amp;nbsp;-d&amp;nbsp;tagname&amp;nbsp;

#删除某个tag
git&amp;nbsp;push&amp;nbsp;origin&amp;nbsp;:refs/tags/v1.0&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 21 Dec 2021 15:42:29 +0800</pubDate></item><item><title>js的缓存工具</title><link>https://note.centos7.online/?id=44</link><description>&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;项目中用到的一个localStorage工具，可以用于token存储、数据缓存，支持过期，使用起来简答快捷&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;JavaScript版&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-javascript&quot;&gt;const&amp;nbsp;DEFAULT_EXPIRE&amp;nbsp;=&amp;nbsp;7200;&amp;nbsp;//&amp;nbsp;默认存储时间（秒）

const&amp;nbsp;cache&amp;nbsp;=&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;设置缓存
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;{string}&amp;nbsp;key&amp;nbsp;存储的键
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;{any}&amp;nbsp;value&amp;nbsp;存储的值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;{number}&amp;nbsp;[expire=DEFAULT_EXPIRE]&amp;nbsp;过期时间（秒），默认&amp;nbsp;7200s
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set:&amp;nbsp;(key,&amp;nbsp;value,&amp;nbsp;expire&amp;nbsp;=&amp;nbsp;DEFAULT_EXPIRE)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;expireTimestamp&amp;nbsp;=&amp;nbsp;Date.now()&amp;nbsp;+&amp;nbsp;expire&amp;nbsp;*&amp;nbsp;1000;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;cacheData&amp;nbsp;=&amp;nbsp;{&amp;nbsp;data:&amp;nbsp;value,&amp;nbsp;expireTimestamp&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;localStorage.setItem(key,&amp;nbsp;JSON.stringify(cacheData));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;获取缓存
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;{string}&amp;nbsp;key&amp;nbsp;存储的键
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;{any}&amp;nbsp;[defaultValue=null]&amp;nbsp;如果缓存不存在，返回的默认值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@returns&amp;nbsp;{any|null}&amp;nbsp;获取到的数据，或者默认值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;get:&amp;nbsp;(key,&amp;nbsp;defaultValue&amp;nbsp;=&amp;nbsp;null)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;item&amp;nbsp;=&amp;nbsp;localStorage.getItem(key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!item)&amp;nbsp;return&amp;nbsp;defaultValue;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;cacheData&amp;nbsp;=&amp;nbsp;JSON.parse(item);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(Date.now()&amp;nbsp;&amp;gt;&amp;nbsp;cacheData.expireTimestamp)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cache.remove(key);&amp;nbsp;//&amp;nbsp;过期后删除
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;defaultValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;cacheData.data;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;catch&amp;nbsp;(error)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.error(&amp;quot;解析缓存数据失败:&amp;quot;,&amp;nbsp;error);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cache.remove(key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;defaultValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;删除缓存
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;{string}&amp;nbsp;key&amp;nbsp;存储的键
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove:&amp;nbsp;(key)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;localStorage.removeItem(key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;清空所有缓存
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;clear:&amp;nbsp;()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;localStorage.clear();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
};

export&amp;nbsp;default&amp;nbsp;cache;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;typeScript版&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-javascript&quot;&gt;const&amp;nbsp;DEFAULT_EXPIRE&amp;nbsp;=&amp;nbsp;7200;&amp;nbsp;//&amp;nbsp;默认存储时间（秒）

interface&amp;nbsp;CacheData&amp;lt;T&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data:&amp;nbsp;T;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expireTimestamp:&amp;nbsp;number;
}

const&amp;nbsp;cache&amp;nbsp;=&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;设置缓存
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;key&amp;nbsp;存储的键
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;value&amp;nbsp;存储的值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;expire&amp;nbsp;过期时间（秒），默认&amp;nbsp;7200s
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set:&amp;nbsp;&amp;lt;T&amp;gt;(key:&amp;nbsp;string,&amp;nbsp;value:&amp;nbsp;T,&amp;nbsp;expire:&amp;nbsp;number&amp;nbsp;=&amp;nbsp;DEFAULT_EXPIRE)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;expireTimestamp&amp;nbsp;=&amp;nbsp;Date.now()&amp;nbsp;+&amp;nbsp;expire&amp;nbsp;*&amp;nbsp;1000;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;cacheData:&amp;nbsp;CacheData&amp;lt;T&amp;gt;&amp;nbsp;=&amp;nbsp;{&amp;nbsp;data:&amp;nbsp;value,&amp;nbsp;expireTimestamp&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;localStorage.setItem(key,&amp;nbsp;JSON.stringify(cacheData));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;获取缓存
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;key&amp;nbsp;存储的键
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;defaultValue&amp;nbsp;如果缓存不存在，返回的默认值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@returns&amp;nbsp;T&amp;nbsp;|&amp;nbsp;null
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;get:&amp;nbsp;&amp;lt;T&amp;gt;(key:&amp;nbsp;string,&amp;nbsp;defaultValue:&amp;nbsp;T&amp;nbsp;|&amp;nbsp;null&amp;nbsp;=&amp;nbsp;null):&amp;nbsp;T&amp;nbsp;|&amp;nbsp;null&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;item&amp;nbsp;=&amp;nbsp;localStorage.getItem(key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!item)&amp;nbsp;return&amp;nbsp;defaultValue;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;cacheData:&amp;nbsp;CacheData&amp;lt;T&amp;gt;&amp;nbsp;=&amp;nbsp;JSON.parse(item);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(Date.now()&amp;nbsp;&amp;gt;&amp;nbsp;cacheData.expireTimestamp)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cache.remove(key);&amp;nbsp;//&amp;nbsp;过期后删除
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;defaultValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;cacheData.data;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;catch&amp;nbsp;(error)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.error(&amp;quot;解析缓存数据失败:&amp;quot;,&amp;nbsp;error);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cache.remove(key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;defaultValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;删除缓存
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;key&amp;nbsp;存储的键
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove:&amp;nbsp;(key:&amp;nbsp;string)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;localStorage.removeItem(key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;清空所有缓存
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;clear:&amp;nbsp;()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;localStorage.clear();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
};

export&amp;nbsp;default&amp;nbsp;cache;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sat, 15 Mar 2025 09:25:36 +0800</pubDate></item><item><title>花生壳和pubyun(原3322)在linux下快速解析</title><link>https://note.centos7.online/?id=39</link><description>&lt;h2&gt;一、花生壳通过设置路由器自定义地址(免费版已经无法解析)&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;http://用户名:密码@/ddns.oray.com/ph/update?&amp;amp;hostname=域名/
curl&amp;nbsp;-fsSu&amp;nbsp;&amp;quot;username:password&amp;quot;&amp;nbsp;&amp;quot;http://ddns.oray.com/ph/update?&amp;amp;hostname=域名&amp;quot;
wget&amp;nbsp;--user=username&amp;nbsp;--password=password&amp;nbsp;-O-&amp;nbsp;&amp;quot;http://ddns.oray.com/ph/update?&amp;amp;hostname=域名&amp;quot;&lt;/pre&gt;&lt;h2&gt;二、pubyun&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;使用lynx（一般的Linux，BSD都自带）
lynx&amp;nbsp;-mime_header&amp;nbsp;-auth=用户名:密码&amp;nbsp;&amp;quot;http://members.3322.net/dyndns/update?system=dyndns&amp;amp;hostname=域名&amp;quot;&amp;nbsp;
curl&amp;nbsp;-u&amp;nbsp;用户名:密码&amp;nbsp;&amp;quot;http://members.3322.net/dyndns/update?system=dyndns&amp;amp;hostname=域名&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;三、dynv6&lt;/h2&gt;&lt;p&gt;https://dynv6.com/&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;#!/usr/bin/env&amp;nbsp;bash

V4_BASE=&amp;quot;https://ipv4.dynv6.com/api/update?ipv4=auto&amp;quot;
V6_BASE=&amp;quot;https://ipv6.dynv6.com/api/update?ipv6=auto&amp;quot;

#此处后期可以取脚本运行参数
ZONE=&amp;quot;your&amp;nbsp;domain&amp;quot;&amp;nbsp;
#此处后期可以取脚本运行参数
TOKEN=&amp;quot;your&amp;nbsp;token&amp;nbsp;value&amp;quot;

QUERY=&amp;quot;zone=${ZONE}&amp;amp;token=${TOKEN}&amp;quot;

V4_URL=&amp;quot;${V4_BASE}&amp;amp;${QUERY}&amp;quot;
V6_URL=&amp;quot;${V6_BASE}&amp;amp;${QUERY}&amp;quot;

curl&amp;nbsp;-fsS&amp;nbsp;&amp;quot;${V4_URL}&amp;quot;
curl&amp;nbsp;-fsS&amp;nbsp;&amp;quot;${V6_URL}&amp;quot;

#wget&amp;nbsp;-O-&amp;nbsp;&amp;quot;${V4_URL}&amp;quot;
#wget&amp;nbsp;-O-&amp;nbsp;&amp;quot;${V6_URL}&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sat, 16 Sep 2023 20:09:45 +0800</pubDate></item><item><title>记录一次docker安装mysql8.3</title><link>https://note.centos7.online/?id=41</link><description>&lt;p&gt;配置文件 /data/mysql8-data/conf/my.cnf&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-sql&quot;&gt;[mysql]
#&amp;nbsp;设置mysql控制台默认字符集
default-character-set=utf8mb4
#&amp;nbsp;需要和[mysqld]中的保持一致，不然本地连接跳过权限连接有问题
socket=/var/lib/mysql/mysqld.sock

[client]
#&amp;nbsp;设置mysql客户端&amp;nbsp;默认字符集(如&amp;nbsp;mysql、mysqldump、mysqladmin等)
default-character-set=utf8mb4

[mysqld]
bind-address=0.0.0.0
#设置3306端⼝
port=3306
#设置mysql时区&amp;nbsp;或&amp;nbsp;default-time-zone=&amp;#39;+08:00&amp;#39;&amp;nbsp;表示东八区
default-time-zone=&amp;#39;Asia/Shanghai&amp;#39;
#默认认证插件更改为&amp;nbsp;mysql_native_password(可以兼容5.7版)
default_authentication_plugin=mysql_native_password
#数据提交⼤⼩
max_allowed_packet=30M
#设置mysql的安装⽬录(win系统)
#basedir=D:\mysql8.3
#设置mysql数据库的数据的存放⽬录
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysqld.sock
#允许最⼤连接数
max_connections=200
#服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8mb4
#设置默认排序规则
collation-server=utf8mb4_general_ci
#创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
#开启查询缓存
explicit_defaults_for_timestamp=true
#sqlmode模式
#&amp;nbsp;mysql5.7
#sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#&amp;nbsp;mysql8
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

#跳过权限验证&amp;nbsp;⾸次启动服务或维护时候打开&amp;nbsp;mysql8会连网络一起跳过，所以维护时候在本地只能用&amp;nbsp;mysql&amp;nbsp;-u&amp;nbsp;root&amp;nbsp;-p&amp;nbsp;&amp;nbsp;不要指定host
#skip-grant-tables&lt;/pre&gt;&lt;p&gt;启动脚本&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;docker&amp;nbsp;run&amp;nbsp;--restart=always&amp;nbsp;--name&amp;nbsp;mysql8-dev&amp;nbsp;\
-v&amp;nbsp;&amp;nbsp;/data/mysql8-data/conf:/etc/mysql&amp;nbsp;\
-v&amp;nbsp;/data/mysql8-data/data:/var/lib/mysql&amp;nbsp;\&amp;nbsp;
-e&amp;nbsp;MYSQL_ROOT_PASSWORD=123456&amp;nbsp;-d&amp;nbsp;\
-p&amp;nbsp;3306:3306&amp;nbsp;mysql:8.3&amp;nbsp;\
--defaults-file=/etc/mysql/my.cnf&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;用户管理&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-sql&quot;&gt;#&amp;nbsp;创建可远程访问用户&amp;nbsp;
CREATE&amp;nbsp;USER&amp;nbsp;&amp;#39;myuser&amp;#39;@&amp;#39;%&amp;#39;&amp;nbsp;IDENTIFIED&amp;nbsp;WITH&amp;nbsp;mysql_native_password&amp;nbsp;BY&amp;nbsp;&amp;#39;123456&amp;#39;;
#&amp;nbsp;设置权限
GRANT&amp;nbsp;ALL&amp;nbsp;PRIVILEGES&amp;nbsp;ON&amp;nbsp;*.*&amp;nbsp;TO&amp;nbsp;&amp;#39;myuser&amp;#39;@&amp;#39;%&amp;#39;;
FLUSH&amp;nbsp;PRIVILEGES;

#&amp;nbsp;修改某个用户密码加密模式
ALTER&amp;nbsp;USER&amp;nbsp;&amp;#39;root&amp;#39;@&amp;#39;%&amp;#39;&amp;nbsp;IDENTIFIED&amp;nbsp;WITH&amp;nbsp;mysql_native_password&amp;nbsp;BY&amp;nbsp;&amp;#39;123456&amp;#39;;
FLUSH&amp;nbsp;PRIVILEGES;&lt;/pre&gt;&lt;p&gt;其他&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#修改数据库排序模式
ALTER&amp;nbsp;DATABASE&amp;nbsp;your_database_name&amp;nbsp;COLLATE&amp;nbsp;=&amp;nbsp;utf8mb4_general_ci;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 14 May 2024 15:21:05 +0800</pubDate></item><item><title>linux下利用nc监听端口的玩法</title><link>https://note.centos7.online/?id=42</link><description>&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://note.centos7.online/?id=8&quot; target=&quot;_self&quot;&gt;ubuntu/debian开机启动设置，移步这里&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;家里有一些小服务器玩具，由于家里网络都是dhcp获取ip地址，ip地址可能会出现变动。那么如果在服务器上监听一个特殊端口，通过内网扫描指定的特殊端口，即可获取到服务器的ip地址。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;一、初窥门径&lt;/h3&gt;&lt;p&gt;在服务器上开机启动一个脚本，通过nc监听一个特殊端口，并且保证是常驻监听&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;nc&amp;nbsp;-lk&amp;nbsp;8888&lt;/pre&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;参数解释：
-l：让&amp;nbsp;nc&amp;nbsp;进入监听模式。
-k：在处理完一个连接后继续保持监听状态，不退出。
8888：指定监听的端口号。&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;二、渐入佳境&lt;/h3&gt;&lt;p&gt;不仅监听端口，还可以通过http访问输出主机名和主机时间，具体信息可以根据自己实际情况添加。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;while&amp;nbsp;true;&amp;nbsp;do&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;HTTP/1.1&amp;nbsp;200&amp;nbsp;OK\n\n&amp;nbsp;$(date&amp;nbsp;+&amp;#39;%Y/%m/%d&amp;nbsp;%H:%M:%S&amp;#39;)&amp;nbsp;$(hostname)&amp;quot;&amp;nbsp;|&amp;nbsp;nc&amp;nbsp;-l&amp;nbsp;8888&amp;nbsp;-q&amp;nbsp;1;&amp;nbsp;done&lt;/pre&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;脚本解释：
1、while&amp;nbsp;true;&amp;nbsp;do&amp;nbsp;...&amp;nbsp;;&amp;nbsp;done：无限循环，确保代码一直运行，不断接受新的连接。
2、echo&amp;nbsp;-e&amp;nbsp;&amp;quot;HTTP/1.1&amp;nbsp;200&amp;nbsp;OK\n\n&amp;nbsp;$(date&amp;nbsp;+&amp;#39;%Y/%m/%d&amp;nbsp;%H:%M:%S&amp;#39;)&amp;nbsp;$(hostname)&amp;quot;：
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HTTP/1.1&amp;nbsp;200&amp;nbsp;OK：HTTP状态行，表示请求成功。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\n\n：两个换行符，分隔HTTP头和主体。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(date&amp;nbsp;+&amp;#39;%Y/%m/%d&amp;nbsp;%H:%M:%S&amp;#39;)：当前日期和时间。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(hostname)：当前主机名。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e：启用解释反斜杠转义字符（例如&amp;nbsp;\n&amp;nbsp;代表换行）。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;HTTP/1.1&amp;nbsp;200&amp;nbsp;OK\n\n&amp;nbsp;$(date&amp;nbsp;+&amp;#39;%Y/%m/%d&amp;nbsp;%H:%M:%S&amp;#39;)&amp;nbsp;$(hostname)&amp;quot;：输出的HTTP响应内容，包括状态行和主体。
3、|&amp;nbsp;nc&amp;nbsp;-l&amp;nbsp;-p&amp;nbsp;8888：
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|：管道操作符，将前面命令的输出作为后面命令的输入。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nc（netcat）：网络工具，用于读写网络连接。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-l：让&amp;nbsp;nc&amp;nbsp;进入监听模式。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-p&amp;nbsp;8888：指定监听的端口号8888。&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;&lt;br/&gt;&lt;/h3&gt;&lt;h3&gt;三、融会贯通&lt;/h3&gt;&lt;p&gt;以下操作均在 /data 目录下&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mkdir&amp;nbsp;/data
cd&amp;nbsp;/data&lt;/pre&gt;&lt;p&gt;1、创建获取主机信息和输出内容的脚本 myHostInfo.sh&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;vim&amp;nbsp;myHostInfo.sh&lt;/pre&gt;&lt;p&gt;&amp;nbsp;写入以下内容，并给定执行权限&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#!/bin/bash

#&amp;nbsp;输出当前日期和时间
current_date=$(date&amp;nbsp;+&amp;#39;%Y/%m/%d&amp;nbsp;%H:%M:%S&amp;#39;)

#&amp;nbsp;输出主机名
hostname=$(hostname)

#&amp;nbsp;其他你需要的信息，比如CPU使用率
cpu_usage=$(top&amp;nbsp;-bn1&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;&amp;quot;Cpu(s)&amp;quot;&amp;nbsp;|&amp;nbsp;sed&amp;nbsp;&amp;quot;s/.*,&amp;nbsp;*\([0-9.]*\)%*&amp;nbsp;id.*/\1/&amp;quot;&amp;nbsp;|&amp;nbsp;awk&amp;nbsp;&amp;#39;{print&amp;nbsp;100&amp;nbsp;-&amp;nbsp;$1&amp;quot;%&amp;quot;}&amp;#39;)

#&amp;nbsp;输出结果
echo&amp;nbsp;-e&amp;nbsp;&amp;quot;HTTP/1.1&amp;nbsp;200&amp;nbsp;OK\n\nDate:&amp;nbsp;$current_date\nHostname:&amp;nbsp;$hostname\nCPU&amp;nbsp;Usage:&amp;nbsp;$cpu_usage&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid #E3E3E3; box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; font-weight: 600; color: #0D0D0D; margin-top: 1.25em; margin-bottom: 1.25em; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Cantarell, &amp;quot;Noto Sans&amp;quot;, sans-serif, &amp;quot;Helvetica Neue&amp;quot;, Arial, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space: pre-wrap; background-color: #FFFFFF;&quot;&gt;&lt;/span&gt;给定执行权限&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;chmod&amp;nbsp;+x&amp;nbsp;myHostInfo.sh&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;2、创建监听脚本 myNCServer.sh&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;vim&amp;nbsp;myNCServer.sh&lt;/pre&gt;&lt;p&gt;写入以下内容&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#!/bin/bash

while&amp;nbsp;true;&amp;nbsp;do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/data/myHostInfo.sh&amp;nbsp;|&amp;nbsp;nc&amp;nbsp;-l&amp;nbsp;-p&amp;nbsp;8888&amp;nbsp;-q&amp;nbsp;1;
done&lt;/pre&gt;&lt;p&gt;给定执行权限&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;chmod&amp;nbsp;+x&amp;nbsp;myNCServer.sh&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;3、运行myNCServer.sh&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;./myNCServer.sh&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;4、加入开机启动&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;echo&amp;nbsp;&amp;quot;$(pwd)/myNCServer.sh&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/rc.local&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;附：一个能获取更多信息的脚本&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#!/bin/bash

#&amp;nbsp;获取当前日期和时间
current_date=$(date&amp;nbsp;+&amp;#39;%Y/%m/%d&amp;nbsp;%H:%M:%S&amp;#39;)

#&amp;nbsp;获取主机名
hostname=$(hostname)

#&amp;nbsp;获取CPU核心数
cpu_cores=$(nproc)

#&amp;nbsp;获取CPU使用率
cpu_usage=$(top&amp;nbsp;-bn1&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;&amp;quot;Cpu(s)&amp;quot;&amp;nbsp;|&amp;nbsp;awk&amp;nbsp;&amp;#39;{print&amp;nbsp;100&amp;nbsp;-&amp;nbsp;$8&amp;quot;%&amp;quot;}&amp;#39;)

#&amp;nbsp;获取总内存和内存使用率
mem_total=$(free&amp;nbsp;-g&amp;nbsp;|&amp;nbsp;awk&amp;nbsp;&amp;#39;/^Mem:/{print&amp;nbsp;$2}&amp;#39;)
mem_used=$(free&amp;nbsp;|&amp;nbsp;awk&amp;nbsp;&amp;#39;/^Mem:/{printf(&amp;quot;%.2f&amp;quot;,&amp;nbsp;$3/$2&amp;nbsp;*&amp;nbsp;100.0)}&amp;#39;)

#&amp;nbsp;获取硬盘容量和使用率
disk_total=$(df&amp;nbsp;-h&amp;nbsp;--total&amp;nbsp;|&amp;nbsp;awk&amp;nbsp;&amp;#39;/^total/{print&amp;nbsp;$2}&amp;#39;)
disk_used=$(df&amp;nbsp;-h&amp;nbsp;--total&amp;nbsp;|&amp;nbsp;awk&amp;nbsp;&amp;#39;/^total/{print&amp;nbsp;$5}&amp;#39;)

#&amp;nbsp;获取已开机时间
uptime_info=$(uptime&amp;nbsp;-p)

#&amp;nbsp;输出结果
echo&amp;nbsp;-e&amp;nbsp;&amp;quot;HTTP/1.1&amp;nbsp;200&amp;nbsp;OK\n\n\
Date:&amp;nbsp;$current_date\n\
Hostname:&amp;nbsp;$hostname\n\
CPU&amp;nbsp;Cores:&amp;nbsp;$cpu_cores\n\
CPU&amp;nbsp;Usage:&amp;nbsp;$cpu_usage\n\
Memory&amp;nbsp;Total&amp;nbsp;(GB):&amp;nbsp;$mem_total\n\
Memory&amp;nbsp;Usage:&amp;nbsp;$mem_used%\n\
Disk&amp;nbsp;Total:&amp;nbsp;$disk_total\n\
Disk&amp;nbsp;Usage:&amp;nbsp;$disk_used\n\
Uptime:&amp;nbsp;$uptime_info&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 15 May 2024 09:09:08 +0800</pubDate></item><item><title>docker常用命令(持续添加...)</title><link>https://note.centos7.online/?id=4</link><description>&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#搜索镜像&amp;nbsp;php可替换为其他
docker&amp;nbsp;search&amp;nbsp;php

#拉取php镜像
docker&amp;nbsp;pull&amp;nbsp;php

#拉取指定版本镜像
docker&amp;nbsp;pull&amp;nbsp;php:7.4-fpm

#查看本地镜像
docker&amp;nbsp;images
#或
docker&amp;nbsp;image&amp;nbsp;ls

#启动容器
#&amp;nbsp;--name&amp;nbsp;指定容器名称，&amp;nbsp;-p&amp;nbsp;映射端口(可多个-v)&amp;nbsp;[宿主端口:容器端口]，&amp;nbsp;-v&amp;nbsp;映射目录(可多个-v)&amp;nbsp;[宿主目录:容器目录]，&amp;nbsp;-d&amp;nbsp;后台运行，&amp;nbsp;php:7.4-fpm&amp;nbsp;镜像名称
docker&amp;nbsp;run&amp;nbsp;--name&amp;nbsp;php74-fpm&amp;nbsp;-p&amp;nbsp;9000:9000&amp;nbsp;-v&amp;nbsp;/data/www:/data/www&amp;nbsp;-d&amp;nbsp;php:7.4-fpm

#启动容器并将容器加入自动启动
docker&amp;nbsp;run&amp;nbsp;--name&amp;nbsp;php74-fpm&amp;nbsp;-p&amp;nbsp;9000:9000&amp;nbsp;-v&amp;nbsp;/data/www:/data/www&amp;nbsp;-d&amp;nbsp;--restart=always&amp;nbsp;php:7.4-fpm

#镜像内部没有常驻进程时、通过tail&amp;nbsp;-f&amp;nbsp;/dev/null&amp;nbsp;可以保持容器常驻
docker&amp;nbsp;run&amp;nbsp;--name&amp;nbsp;php56&amp;nbsp;-v&amp;nbsp;/data/:/data/&amp;nbsp;-d&amp;nbsp;php:5.6&amp;nbsp;tail&amp;nbsp;-f&amp;nbsp;/dev/null

#设置已有docker容器随docker启动模式
docker&amp;nbsp;ps&amp;nbsp;-qa&amp;nbsp;
docker&amp;nbsp;update&amp;nbsp;--restart=always&amp;nbsp;容器ID/容器名

#&amp;nbsp;--restart具体参数值详细信息：
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;no　　　　　　　&amp;nbsp;//&amp;nbsp;默认策略,容器退出时不重启容器；
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;on-failure　　&amp;nbsp;&amp;nbsp;//&amp;nbsp;在容器非正常退出时（退出状态非0）才重新启动容器；
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;on-failure:3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;在容器非正常退出时重启容器，最多重启3次；
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;always　　　　&amp;nbsp;&amp;nbsp;//&amp;nbsp;无论退出状态是如何，都重启容器；
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unless-stopped&amp;nbsp;&amp;nbsp;//&amp;nbsp;在容器退出时总是重启容器，但是不考虑在&amp;nbsp;Docker&amp;nbsp;守护进程启动时就已经停止了的容器


#启动并进入容器
#-it终端交互&amp;nbsp;
docker&amp;nbsp;run&amp;nbsp;-it&amp;nbsp;containerId&amp;nbsp;/bin/bash


#查看容器(仅运行中)&amp;nbsp;加入&amp;nbsp;-a&amp;nbsp;参数可显示已停止容器
docker&amp;nbsp;ps&amp;nbsp;
#或
docker&amp;nbsp;container&amp;nbsp;ls

#进入容器&amp;nbsp;(推荐，进入容器后输入exit&amp;nbsp;不会导致容器停止)
docker&amp;nbsp;exec&amp;nbsp;-it&amp;nbsp;容器id或别名&amp;nbsp;/bin/bash

#进入容器2(不推荐，进入容器后输入exit&amp;nbsp;会导致容器停止)
docker&amp;nbsp;attach&amp;nbsp;容器id或别名

#容器启动/停止/重启
docker&amp;nbsp;start&amp;nbsp;容器id或别名
docker&amp;nbsp;stop&amp;nbsp;容器id或别名
docker&amp;nbsp;restart&amp;nbsp;容器id或别名

#删除容器
docker&amp;nbsp;rm&amp;nbsp;容器id或名称
#或
docker&amp;nbsp;container&amp;nbsp;rm&amp;nbsp;容器id或名称

#删除镜像(需停止所有该镜像启动的容器后操作)
docker&amp;nbsp;rmi&amp;nbsp;镜像id或名称
#或
docker&amp;nbsp;images&amp;nbsp;rm&amp;nbsp;镜像id或名称

#容器打包镜像(慎用)&amp;nbsp;
docker&amp;nbsp;commit[选项]&amp;nbsp;&amp;lt;容器ID或容器名&amp;gt;&amp;nbsp;[&amp;lt;仓库名&amp;gt;[:&amp;lt;标签&amp;gt;]]

#镜像保存为本地文件(会保存所有元数据和提交信息等，体积较大)
docker&amp;nbsp;save&amp;nbsp;-o&amp;nbsp;文件名.tar&amp;nbsp;镜像名[:标签]

#从文件载入镜像
docker&amp;nbsp;load&amp;nbsp;--input&amp;nbsp;文件名.tar

#将容器保存为本地文件(仅保存当前状态，体积相对较小)
docker&amp;nbsp;export&amp;nbsp;-o&amp;nbsp;文件名.tar&amp;nbsp;容器id或名称

#从文件导入容器快照
docker&amp;nbsp;import&amp;nbsp;文件名.tar&amp;nbsp;&amp;lt;新镜像名称[:标签]&amp;gt;


#宿主机和docker复制文件
docker&amp;nbsp;cp&amp;nbsp;source&amp;nbsp;target

docker&amp;nbsp;cp&amp;nbsp;/data/a.txt&amp;nbsp;&amp;nbsp;php7:/data/&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 22 Dec 2021 09:49:18 +0800</pubDate></item><item><title>openfeign在单体项目用法</title><link>https://note.centos7.online/?id=40</link><description>&lt;p&gt;公司项目需要与其他系统对接，常规的httpClient写法，不符合我大道至简的理念，于是研究了一下openfeign，本文只是提供一个思路，具体还需要根据实际场景进行完善。&lt;/p&gt;&lt;h1&gt;一、加入依赖&lt;/h1&gt;&lt;p&gt;我使用的spring boot 为2.7.9 ，openfeign使用3.1.8，版本匹配不上会导致应用启动时候报错，错误大概意思是配置什么有问题&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markup&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;spring-cloud-starter-openfeign&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;3.1.8&amp;lt;/version&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/dependency&amp;gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h1&gt;&lt;br/&gt;&lt;/h1&gt;&lt;h1&gt;二、普通用法&lt;/h1&gt;&lt;h3&gt;注解上将url参数给上&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-java&quot;&gt;package&amp;nbsp;com.xx.module.memberinfo.openfeign;

import&amp;nbsp;com.xx.module.memberinfo.openfeign.dto.UserInfoDTO;
import&amp;nbsp;org.springframework.cloud.openfeign.FeignClient;
import&amp;nbsp;org.springframework.stereotype.Service;
import&amp;nbsp;org.springframework.web.bind.annotation.GetMapping;
import&amp;nbsp;org.springframework.web.bind.annotation.RequestParam;

@Service
//这里的url一定要给，不然会被当成微服务去请求名为test的服务
@FeignClient(name&amp;nbsp;=&amp;nbsp;&amp;quot;test&amp;quot;,&amp;nbsp;url&amp;nbsp;=&amp;nbsp;&amp;quot;http://xxx.com&amp;quot;)
public&amp;nbsp;interface&amp;nbsp;MemberInfoApi&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&amp;quot;/profile&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UserInfoDTO&amp;nbsp;getUser();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&amp;quot;/list&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;UserInfoDTO&amp;gt;&amp;nbsp;getUserList();
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h1&gt;&lt;br/&gt;&lt;/h1&gt;&lt;h1&gt;三、自定义用法&lt;/h1&gt;&lt;p&gt;给定拦截器配置&lt;/p&gt;&lt;h3&gt;1、创建请求拦截器&lt;br/&gt;&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-java&quot;&gt;package&amp;nbsp;com.xx.module.memberinfo.openfeign.interceptor;

import&amp;nbsp;feign.RequestInterceptor;
import&amp;nbsp;feign.RequestTemplate;

public&amp;nbsp;class&amp;nbsp;CommonFeignRequestInterceptor&amp;nbsp;implements&amp;nbsp;RequestInterceptor&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;apply(RequestTemplate&amp;nbsp;requestTemplate)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/***&amp;nbsp;自定义request解析逻辑&amp;nbsp;***/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;requestTemplate.target(&amp;quot;http://a.b.com&amp;quot;);&amp;nbsp;//修改请求地址，请求地址可以从配置，缓存，数据库啥的读取
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;这里就是你请求前要进行的各种操作，比如设置一下header&amp;nbsp;添加点其他料
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/***&amp;nbsp;自定义request解析逻辑&amp;nbsp;***/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3&gt;2、创建响应拦截器&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-java&quot;&gt;package&amp;nbsp;com.xx.module.memberinfo.openfeign.interceptor;

import&amp;nbsp;com.fasterxml.jackson.databind.ObjectMapper;
import&amp;nbsp;feign.FeignException;
import&amp;nbsp;feign.Response;
import&amp;nbsp;feign.codec.Decoder;
import&amp;nbsp;org.apache.commons.io.IOUtils;

import&amp;nbsp;java.io.IOException;
import&amp;nbsp;java.lang.reflect.Type;
import&amp;nbsp;java.nio.charset.StandardCharsets;
import&amp;nbsp;java.util.Collection;
import&amp;nbsp;java.util.Map;

public&amp;nbsp;class&amp;nbsp;CommonFeignResponseInterceptor&amp;nbsp;implements&amp;nbsp;Decoder&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;final&amp;nbsp;ObjectMapper&amp;nbsp;objectMapper&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ObjectMapper();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;Object&amp;nbsp;decode(final&amp;nbsp;Response&amp;nbsp;response,&amp;nbsp;Type&amp;nbsp;type)&amp;nbsp;throws&amp;nbsp;FeignException,&amp;nbsp;IOException&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/***&amp;nbsp;自定义response解析逻辑&amp;nbsp;***/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Map&amp;lt;String,&amp;nbsp;Collection&amp;lt;String&amp;gt;&amp;gt;&amp;nbsp;headers&amp;nbsp;=&amp;nbsp;response.headers();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Body&amp;nbsp;body&amp;nbsp;=&amp;nbsp;response.body();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;bodyString&amp;nbsp;=&amp;nbsp;IOUtils.toString(body.asReader(StandardCharsets.UTF_8));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Object&amp;nbsp;result&amp;nbsp;=&amp;nbsp;objectMapper.readValue(bodyString,&amp;nbsp;objectMapper.constructType(type));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//解开之后这里继续处理逻辑
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/***&amp;nbsp;自定义response解析逻辑&amp;nbsp;***/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;result;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3&gt;3、创建一个配置&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-java&quot;&gt;package&amp;nbsp;com.xx.module.memberinfo.openfeign.config;

import&amp;nbsp;com.xx.module.memberinfo.openfeign.interceptor.CommonFeignResponseInterceptor;
import&amp;nbsp;com.xx.module.memberinfo.openfeign.interceptor.CommonFeignRequestInterceptor;
import&amp;nbsp;org.springframework.context.annotation.Bean;
import&amp;nbsp;org.springframework.context.annotation.Configuration;

//@Configuration&amp;nbsp;//这一行如果加了&amp;nbsp;就对整个openfeign生效，可以根据实际情况添加
public&amp;nbsp;class&amp;nbsp;MemberFeignClientConfiguration&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Bean
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;CommonFeignRequestInterceptor&amp;nbsp;commonFeignRequestInterceptor(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;new&amp;nbsp;CommonFeignRequestInterceptor();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Bean
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;CommonFeignResponseInterceptor&amp;nbsp;commonFeignResponseInterceptor(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;new&amp;nbsp;CommonFeignResponseInterceptor();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3&gt;4、注解使用&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-java&quot;&gt;package&amp;nbsp;com.xx.module.memberinfo.openfeign;

import&amp;nbsp;com.xx.module.memberinfo.openfeign.dto.UserInfoDTO;
import&amp;nbsp;org.springframework.cloud.openfeign.FeignClient;
import&amp;nbsp;org.springframework.stereotype.Service;
import&amp;nbsp;org.springframework.web.bind.annotation.GetMapping;
import&amp;nbsp;org.springframework.web.bind.annotation.RequestParam;

@Service
@FeignClient(name&amp;nbsp;=&amp;nbsp;&amp;quot;test&amp;quot;,&amp;nbsp;url&amp;nbsp;=&amp;nbsp;&amp;quot;http://xx.com&amp;quot;,&amp;nbsp;configuration&amp;nbsp;=&amp;nbsp;{MemberFeignClientConfiguration.class})
public&amp;nbsp;interface&amp;nbsp;MemberInfoApi&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&amp;quot;/profile&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UserInfoDTO&amp;nbsp;getUser();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&amp;quot;/list&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;UserInfoDTO&amp;gt;&amp;nbsp;getUserList();
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h1&gt;四、一把梭用法&lt;/h1&gt;&lt;h3&gt;1、前置步骤参考 【自定义用法】的 &lt;em&gt;创建两个拦截器、创建配置文件&lt;/em&gt;&lt;/h3&gt;&lt;h2&gt;新增步骤&lt;/h2&gt;&lt;h3&gt;2、创建一个注解&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-java&quot;&gt;package&amp;nbsp;com.xx.module.memberinfo.openfeign.annotations;

import&amp;nbsp;com.xx.module.memberinfo.openfeign.config.MemberFeignClientConfiguration;
import&amp;nbsp;org.springframework.cloud.openfeign.FeignClient;
import&amp;nbsp;org.springframework.core.annotation.AliasFor;

import&amp;nbsp;java.lang.annotation.*;

@FeignClient
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public&amp;nbsp;@interface&amp;nbsp;MemberFeignClient&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@AliasFor(annotation&amp;nbsp;=&amp;nbsp;FeignClient.class)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;name()&amp;nbsp;default&amp;nbsp;&amp;quot;MemberFeignClient&amp;quot;;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//todo&amp;nbsp;务必注意&amp;nbsp;这个url一定要填一个，后面通过request拦截器再修改
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;不填写的话，openfeign会认为这是微服务模式，会通过name去请求，然后这个单体项目启动就提示没有引入负载均衡依赖
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@AliasFor(annotation&amp;nbsp;=&amp;nbsp;FeignClient.class)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;url()&amp;nbsp;default&amp;nbsp;&amp;quot;http://localhost&amp;quot;;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@AliasFor(annotation&amp;nbsp;=&amp;nbsp;FeignClient.class)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;path()&amp;nbsp;default&amp;nbsp;&amp;quot;&amp;quot;;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@AliasFor(annotation&amp;nbsp;=&amp;nbsp;FeignClient.class)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Class&amp;lt;?&amp;gt;[]&amp;nbsp;configuration()&amp;nbsp;default&amp;nbsp;{MemberFeignClientConfiguration.class};
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;3、注解使用&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-java&quot;&gt;package&amp;nbsp;com.xx.module.memberinfo.openfeign;

import&amp;nbsp;com.xx.module.memberinfo.openfeign.dto.UserInfoDTO;
import&amp;nbsp;org.springframework.cloud.openfeign.FeignClient;
import&amp;nbsp;org.springframework.stereotype.Service;
import&amp;nbsp;org.springframework.web.bind.annotation.GetMapping;
import&amp;nbsp;org.springframework.web.bind.annotation.RequestParam;

@Service
@MemberFeignClient
public&amp;nbsp;interface&amp;nbsp;MemberInfoApi&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&amp;quot;/profile&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UserInfoDTO&amp;nbsp;getUser();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&amp;quot;/list&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;UserInfoDTO&amp;gt;&amp;nbsp;getUserList();
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sat, 23 Sep 2023 11:57:45 +0800</pubDate></item><item><title>zip和unzip基本命令(转)</title><link>https://note.centos7.online/?id=25</link><description>&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;strong&gt;一、基本参数&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;strong&gt;1、zip命令的常用参数&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;-d：从压缩文件内删除指定的文件&lt;/p&gt;&lt;p&gt;-D：压缩文件内不建立目录名称&lt;/p&gt;&lt;p&gt;-g：将文件压缩后附加在已有的压缩文件之后，而非另行建立新的压缩文件&lt;/p&gt;&lt;p&gt;-m：将文件压缩并加入压缩文件后，删除原始文件，即把文件移到压缩文件中&lt;/p&gt;&lt;p&gt;-q：不显示指令执行过程&lt;/p&gt;&lt;p&gt;-r：递归处理，将指定目录下的所有文件和子目录一并处理&lt;/p&gt;&lt;p&gt;-S：包含系统和隐藏文件&lt;/p&gt;&lt;p&gt;-t：把压缩文件的日期设成指定的日期&lt;/p&gt;&lt;p&gt;-v：显示指令执行过程或显示版本信息&lt;/p&gt;&lt;p&gt;-z：替压缩文件加上注释&lt;/p&gt;&lt;p&gt;-：压缩效率是一个介于1~9的数值&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;strong&gt;2、unzip命令的常用参数&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;-l：显示压缩文件内所包含的文件&lt;/p&gt;&lt;p&gt;-t：检查压缩文件是否正确&lt;/p&gt;&lt;p&gt;-v：执行时显示详细的信息&lt;/p&gt;&lt;p&gt;-z：仅显示压缩文件的备注文字&lt;/p&gt;&lt;p&gt;-n：解压缩时不要覆盖原有的文件&lt;/p&gt;&lt;p&gt;-o：不必先询问用户，unzip执行后覆盖原有的文件&lt;/p&gt;&lt;p&gt;-d：指定文件解压缩后所要存储的目录&lt;/p&gt;&lt;p&gt;-Z：unzip-Z等于执行zipinfo指令&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;二、使用示例&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;将目录打包到zip文件&amp;nbsp;其中-r为递归压缩子文件夹
#zip&amp;nbsp;-r&amp;nbsp;myfile.zip&amp;nbsp;/mydata/data/&amp;nbsp;

将一个文件和一个目录压缩
#zip&amp;nbsp;-r&amp;nbsp;myfile.zip&amp;nbsp;/var/testfile.txt&amp;nbsp;/mydata/data/

向已存在的压缩包添加文件
#zip&amp;nbsp;-g&amp;nbsp;myfile.zip&amp;nbsp;myadd1.txt
#zip&amp;nbsp;-m&amp;nbsp;myfile.zip&amp;nbsp;myadd2.txt&amp;nbsp;#myadd2.txt文件将会被删除

删除压缩包内文件
#zip&amp;nbsp;-d&amp;nbsp;myfile.zip&amp;nbsp;index.html

解压
#unzip&amp;nbsp;myfile.zip
#unzip&amp;nbsp;myfile.zip&amp;nbsp;-d&amp;nbsp;/mydata/data&amp;nbsp;&amp;nbsp;#解压到指定目录

提取压缩包内指定文件&amp;nbsp;
命令格式：&amp;nbsp;unzip&amp;nbsp;压缩包名&amp;nbsp;提取的文件&amp;nbsp;-d&amp;nbsp;提取后的文件存放目录
#unzip&amp;nbsp;myfile.zip&amp;nbsp;*.txt&amp;nbsp;-d&amp;nbsp;/data

查看包内文件信息(不解压文件)
#unzip&amp;nbsp;-v&amp;nbsp;myfile.zip

检验压缩包是否完成
#unzip&amp;nbsp;-t&amp;nbsp;myfile.zip

通配符解压&amp;nbsp;&amp;nbsp;?一个字符&amp;nbsp;*任意个字符&amp;nbsp;
#unzip&amp;nbsp;/mydata/data/myfile?.zip&amp;nbsp;#如：myfile1.zip&amp;nbsp;myfile2.zip&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;strong&gt;三、实际应用&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;备份某几个目录下文件到压缩包，压缩包按照当前日期命名
#zip&amp;nbsp;-r&amp;nbsp;backup_$(date&amp;nbsp;+%Y%m%d%H%M%S).zip&amp;nbsp;/etc/nginx/&amp;nbsp;/data/myBlogDocker/&amp;nbsp;/data/wwwroot/&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 21 Jul 2022 08:44:43 +0800</pubDate></item><item><title>docker部署minio</title><link>https://note.centos7.online/?id=38</link><description>&lt;p&gt;&lt;strong&gt;docker安装方式 移步&amp;nbsp;&lt;/strong&gt;&lt;a href=&quot;https://note.centos7.online/?id=27&quot; target=&quot;_self&quot;&gt;&lt;strong&gt;https://note.centos7.online/?id=27&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;一、拉取镜像&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;docker&amp;nbsp;pull&amp;nbsp;minio/minio&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;二、启动容器&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;docker&amp;nbsp;run&amp;nbsp;\
&amp;nbsp;--name&amp;nbsp;minio_dev&amp;nbsp;&amp;nbsp;\&amp;nbsp;
&amp;nbsp;-p&amp;nbsp;9000:9000&amp;nbsp;\&amp;nbsp;
&amp;nbsp;-p&amp;nbsp;9001:9001&amp;nbsp;\&amp;nbsp;
&amp;nbsp;-v&amp;nbsp;/data/minio_dev_data/data:/data&amp;nbsp;\&amp;nbsp;
&amp;nbsp;-e&amp;nbsp;&amp;quot;MINIO_SERVER_URL=http://my.domain.com:9000&amp;quot;&amp;nbsp;\&amp;nbsp;
&amp;nbsp;-e&amp;nbsp;&amp;quot;MINIO_ACCESS_KEY=admin&amp;quot;&amp;nbsp;\&amp;nbsp;
&amp;nbsp;-e&amp;nbsp;&amp;quot;MINIO_SECRET_KEY=mypasswd&amp;quot;&amp;nbsp;\&amp;nbsp;
&amp;nbsp;--restart=always&amp;nbsp;\&amp;nbsp;
&amp;nbsp;-d&amp;nbsp;\&amp;nbsp;
&amp;nbsp;minio/minio&amp;nbsp;server&amp;nbsp;/data&amp;nbsp;\&amp;nbsp;
&amp;nbsp;--console-address&amp;nbsp;&amp;quot;:9001&amp;quot;&lt;/pre&gt;&lt;p&gt;参数解释：&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;--name&amp;nbsp;给容器取的别名
-p&amp;nbsp;映射的端口号，minio默认的api端口是9000，也就是用于图片上传的端口
-v&amp;nbsp;挂在的数据目录，当前参数值表示&amp;nbsp;将容器内的&amp;nbsp;/data&amp;nbsp;映射到宿主机&amp;nbsp;/data/minio_dev_data/data，其中容器内的&amp;nbsp;/data&amp;nbsp;目录由&amp;nbsp;倒数第二行&amp;nbsp;的&amp;nbsp;minio/minio&amp;nbsp;server&amp;nbsp;/data&amp;nbsp;中的/data来指定
-e&amp;nbsp;环境变量&amp;nbsp;MINIO_SERVER_URL&amp;nbsp;用于指定分享时候要用的域名，根据实际情况填写
-d&amp;nbsp;运行在后台
minio/minio&amp;nbsp;server&amp;nbsp;/data&amp;nbsp;运行镜像minio/minio服务&amp;nbsp;并将数据目录指定到容器内的/data目录
--console-address&amp;nbsp;&amp;quot;:9001&amp;quot;&amp;nbsp;&amp;nbsp;指定web管理页的端口&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;其他操作：&lt;br/&gt;&lt;/p&gt;&lt;p&gt;创建存储桶后设置存储桶的匿名权限，即可让上传的文件随意访问&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://note.centos7.online/zb_users/upload/2023/09/202309061693965976896891.png&quot; alt=&quot;image.png&quot; width=&quot;898&quot; height=&quot;353&quot; style=&quot;width: 898px; height: 353px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 06 Sep 2023 09:46:11 +0800</pubDate></item></channel></rss>