<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Firefly - fang523</title><description>这个网站目前用作fang523的记事本，随缘分享一些技术贴，允许转载(需要注明来源)，喜欢的话点一下收藏哦~</description><link>https://www.pidexe.com/</link><language>zh_CN</language><item><title>[教程]教大家封装一个只属于自己的Windows10系统(含小部分优化过程)</title><link>https://www.pidexe.com/posts/%E5%B0%81%E8%A3%85windows10%E7%B3%BB%E7%BB%9F/</link><guid isPermaLink="true">https://www.pidexe.com/posts/%E5%B0%81%E8%A3%85windows10%E7%B3%BB%E7%BB%9F/</guid><description>项目描述</description><pubDate>Tue, 18 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;丑话说在前&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;本教程默认你会装系统 (&quot;装系统&quot;和&quot;封装系统&quot;不是一回事)，如果有不熟悉的麻烦在评论区提出，人数多的话我再单独发一个教程。&amp;lt;br&amp;gt;&lt;/li&gt;
&lt;li&gt;系统优化方面总是争议不断的，属于建议，您可听可不听，重点是封装系统的过程，不是系统优化的话题，有不符合您使用习惯的 请理性讨论。&amp;lt;br&amp;gt;&lt;/li&gt;
&lt;li&gt;此方法理论上适用于任何版本的Windows系统，但是我只爱win10，其他版本没有测试过(不适用于Linux)。&amp;lt;br&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;一：准备工作&lt;/h1&gt;
&lt;p&gt;1：纯净的系统镜像，在 &lt;a href=&quot;https://www.microsoft.com/zh-cn/software-download/windows10&quot;&gt;微软官方网站&lt;/a&gt; 下载一个&lt;strong&gt;Windows10安装程序&lt;/strong&gt;，在里面选择&lt;strong&gt;为另一台电脑创建安装介质(U盘、DVD或ISO文件)&lt;/strong&gt;，即可获得一个纯净的系统镜像。&amp;lt;br&amp;gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/nodeseek/250317/1.jpg&quot; alt=&quot;image&quot; /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/nodeseek/250317/2.jpg&quot; alt=&quot;image&quot; /&gt;
2：一台x86电脑(可以是虚拟机也可以是实体机)，用于装系统然后在里面做任何修改，最后封装成iso镜像。&amp;lt;br&amp;gt;
3：准备好带dism++的PE，我用的是&lt;strong&gt;Hikari_PE_9.0&lt;/strong&gt;(Preview版)，&lt;a href=&quot;https://hikaripe-sc.hikaricalyx.com/&quot;&gt;点此跳转官网&lt;/a&gt;&amp;lt;br&amp;gt;
4：iso编辑器&lt;strong&gt;UltraISO&lt;/strong&gt;，&lt;a href=&quot;https://www.ultraiso.com/download.html&quot;&gt;点此跳转官网&lt;/a&gt;&amp;lt;br&amp;gt;
5：iso写盘工具(非必须)，我用的是&lt;strong&gt;rufus&lt;/strong&gt;，&lt;a href=&quot;https://rufus.ie/zh/&quot;&gt;点此跳转官网&lt;/a&gt;。&amp;lt;br&amp;gt;
6：一个32G的U盘(如果虚拟机则不需要)&amp;lt;br&amp;gt;&lt;/p&gt;
&lt;h1&gt;二：开始定制系统&lt;/h1&gt;
&lt;p&gt;1：用写盘工具将微软原版系统写到U盘，按正常流程装系统，&lt;strong&gt;注意这台机器只能有1块硬盘并且不分区&lt;/strong&gt;。&amp;lt;br&amp;gt;
2：启用本地账户，不要用微软账号登录，修改成符合使用习惯的任何设置，比如修改时区，修改浏览器搜索引擎，将nas所在ip段和文件夹路径添加到windows安全中心信任地址/浏览器信任地址，打开远程桌面，设置开机密码，安装常用软件等。&amp;lt;br&amp;gt;
3：一些建议，&amp;lt;br&amp;gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最好是在策略组里面将系统更新指定为某个版本(比如Windows10 22H2)，静置几个小时，以便收到安全更新的推送，这样就相当于关掉版本更新，但是保留安全更新。&amp;lt;br&amp;gt;&lt;/li&gt;
&lt;li&gt;建议不要装太多软件(特别是idm之类的一机一码的软件，或者经常需要更新的软件，或者是steam之类需要配合其他硬盘才能爽玩的软件)。&amp;lt;br&amp;gt;&lt;/li&gt;
&lt;li&gt;建议安装pixpin，7zip-zstd，potplayer，Everything，Microsoft Office，Acrobat DC。&amp;lt;br&amp;gt;&lt;/li&gt;
&lt;li&gt;驱动只需要通用驱动，避免英伟达显卡驱动和AMDsoftware以及主板的芯片组驱动，这些都是单一品牌专用的，而且容易冲突，别折腾这个，不用过多集成。&amp;lt;br&amp;gt;&lt;/li&gt;
&lt;li&gt;运行一下磁盘清理。&amp;lt;br&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;4：删除这个文件&lt;strong&gt;C:\Windows\System32\Recovery\ReAgent.xml&lt;/strong&gt;，它包含BitLocker的缓存，如果不删会导致所封装的系统在任何机器上都无法启用BitLocker。&amp;lt;br&amp;gt;&lt;/p&gt;
&lt;h1&gt;三：开始系统封装&lt;/h1&gt;
&lt;p&gt;1：先关机再插 PE 和 用来存放系统镜像的U盘/虚拟机硬盘 ，如果它有D盘，封装完之后在其他机器装机就没有D盘了，强迫症表示很难受，(盘符D已经被分配了，uuid已经被记录在系统中了，这块硬盘并不在新电脑上)。&amp;lt;br&amp;gt;
2：切换到PE里面操作(开机时记得按任意键)，插上U盘，如果是虚拟机 关机后新增1块硬盘在PE里面分区也是可以的。&amp;lt;br&amp;gt;
3：在新的U盘里新建两个文件夹(tmp和esd)，然后修改PE环境变量，右键此电脑-高级系统设置-环境变量-找到tmp和temp两个-编辑变量-选择目录，将它们都修改为刚才新建的那个tmp目录。&amp;lt;br&amp;gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/nodeseek/250317/3.jpg&quot; alt=&quot;image&quot; /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/nodeseek/250317/4.jpg&quot; alt=&quot;image&quot; /&gt;
4：打开dism++选择装了系统的硬盘-工具箱-系统备份-浏览-选择刚才新建的esd文件夹，保存类型&lt;strong&gt;选极限压缩映像(.esd)&lt;/strong&gt;，文件名必须是&lt;strong&gt;install&lt;/strong&gt;(有空再改名也行)，不需要勾 卷影复制 和 可启动。&amp;lt;br&amp;gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/nodeseek/250317/5.jpg&quot; alt=&quot;image&quot; /&gt;
5：点保存，之后就会开始备份整个系统了，到这个界面可能会很久，过程很吃CPU算力，我的5900hx分配了8核需要半小时左右，可以打开文件夹检查一下install.esd有没有开始生成。&amp;lt;br&amp;gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/nodeseek/250317/6.jpg&quot; alt=&quot;image&quot; /&gt;
6：若保存失败(提示句柄无效)，在X\Program Files\DISMPP\Config\dism++.log里面有日志，检查一下是哪个文件导致保存失败，Windows系统临时文件有时候是很奇怪的，没有文件头什么的，可以在日志里找到罪魁祸首直接删掉，或者搜一下有没有用处再删。&amp;lt;br&amp;gt;
若成功保存，就得到了一个install.esd文件，这个就是整个系统的全部内容了，但是它还不能安装，把这个文件备份一下(pe里支持ftp，也可以直接用U盘拷走)。&amp;lt;br&amp;gt;
7：拿着这个install.esd文件到一台正常的电脑上，用管理员权限打开iso编辑器UltraISO，载入一开始的微软官方镜像文件iso,将这个install.esd替换掉sources文件夹里面的install.esd，然后另存为iso文件即可大功告成(注意另存为的时候不要去重命名，有概率导致软件卡死，保存完再改名字吧)&amp;lt;br&amp;gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/nodeseek/250317/7.jpg&quot; alt=&quot;image&quot; /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/nodeseek/250317/8.jpg&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;四：题外话&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;虽然不建议集成太多驱动，但是网卡驱动我觉得还是有点必要的，可以单独下载一个dism++回公司到处抠驱动，然后在PE里面导入，否则你就会感受到开机没有网卡驱动，装网卡驱动又需要先联网的尴尬场景，我是常备一个驱动人生(旧版比较纯净),然后用手机USB共享网络，有网了就什么驱动都有了。&amp;lt;br&amp;gt;&lt;/li&gt;
&lt;li&gt;有已root手机的推荐下载一个&lt;a href=&quot;https://www.pidex.top/pd/images/nodeseek/250317/DriveDroid.apk&quot;&gt;DirveDroid&lt;/a&gt;，用手机给电脑装系统，出门再也不用带U盘了。&amp;lt;br&amp;gt;&lt;/li&gt;
&lt;li&gt;封装之前可以设置开机密码，这样别人用你的iso装完机也有密码。&amp;lt;br&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>安装fail2ban防御网络攻击</title><link>https://www.pidexe.com/posts/fail2ban/</link><guid isPermaLink="true">https://www.pidexe.com/posts/fail2ban/</guid><description>用fail2ban保护sshd和nginx</description><pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;安装nginx&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;步骤&lt;/th&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1.更新软件列表&lt;/td&gt;
&lt;td&gt;apt update&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.安装fail2ban和依赖&lt;/td&gt;
&lt;td&gt;&lt;code&gt;apt install -y fail2ban rsyslog&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.启动rsyslog(ssh记录日志需要它)&lt;/td&gt;
&lt;td&gt;systemctl start rsyslog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4.开机自启&lt;/td&gt;
&lt;td&gt;systemctl enable rsyslog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⭐配置文件位置&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/etc/fail2ban&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5.启动fail2ban&lt;/td&gt;
&lt;td&gt;systemctl start fail2ban&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6.重启fail2ban&lt;/td&gt;
&lt;td&gt;systemctl restart fail2ban&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7.开机自启&lt;/td&gt;
&lt;td&gt;systemctl enable fail2ban&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8.取消开机自启&lt;/td&gt;
&lt;td&gt;systemctl disable fail2ban&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;----------------------------------&lt;/td&gt;
&lt;td&gt;-------------------------------------&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;查看封禁列表&lt;/td&gt;
&lt;td&gt;fail2ban-client status sshd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;解封命令&lt;/td&gt;
&lt;td&gt;fail2ban-client set sshd unbanip 8.8.8.8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;配置文件解析&lt;/h3&gt;
&lt;h4&gt;&lt;code&gt;/etc/fail2ban/jail.local&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;配置文件，开启或关闭某一项防御都写在里面。&lt;/p&gt;
&lt;h4&gt;&lt;code&gt;/etc/fail2ban/jail.d/*&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;配置文件，作用和jail.local相同，但优先级更高，并且文件夹里可以拆分成多个文件，方便管理。&lt;/p&gt;
&lt;h4&gt;&lt;code&gt;/etc/fail2ban/jail.conf&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;这是默认配置文件，优先级低于手动创建的 &lt;code&gt;/etc/fail2ban/jail.local&lt;/code&gt; ，所以一般不修改它，只将它当作配置模板。&lt;/p&gt;
&lt;h4&gt;&lt;code&gt;/etc/fail2ban/filter.d/*&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;监狱：也就是匹配规则，文件名即是监狱名称，支持正则表达式，安装时自带，也可自行编写或者修改。&lt;/p&gt;
</content:encoded></item><item><title>docker安装和使用</title><link>https://www.pidexe.com/posts/docker%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8/</link><guid isPermaLink="true">https://www.pidexe.com/posts/docker%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8/</guid><description>docker和docker-compose的安装和使用。</description><pubDate>Tue, 23 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;安装docker&lt;/h3&gt;
&lt;h4&gt;1.使用脚本安装&lt;/h4&gt;
&lt;p&gt;debian安装docker&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://get.docker.com | bash -s docker
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;debian安装docker(国内源)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -sSL https://get.daocloud.io/docker | sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;2.使用apt安装&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;apt install docker-ce
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;3.查看当前版本&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;docker --version
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;4.更新版本&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;apt install docker-ce docker-ce-cli containerd.io
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;安装docker-compose&lt;/h3&gt;
&lt;h4&gt;x86&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;arm&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-armv7 -o /usr/local/bin/docker-compose
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;容器操作&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;查看容器&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;查看正在运行的容器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker ps&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;查看所有容器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker ps -a&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;进入容器(也可以用容器ID)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker exec -it alist bash&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;优雅的关闭容器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker stop frps&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;粗鲁的关闭容器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker kill frps&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;重启容器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker restart frps&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;删除容器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker rm frps&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;修改容器&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker-compose启动容器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker-compose -f verysync.yaml up -d&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;修改自启&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker update --restart=always verysync&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;修改端口&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/var/lib/docker/containers/363ff2d*&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker-compose升级镜像&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker-compose pull&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker-compose升级容器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker-compose -f /opt/alist/alist.yaml up -d&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;镜像操作&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;查看镜像&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker image ls&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;删除镜像&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker image rm 容器id前缀&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;保存镜像&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker commit -m=alist230227 alist alist230227&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;打包镜像&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker save -o /opt/image/alist230227 alist230227&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;加载镜像&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker load -I /opt/image/alist230227.tar&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content:encoded></item><item><title>linux设置ssh密钥登录</title><link>https://www.pidexe.com/posts/linux%E8%AE%BE%E7%BD%AEssh%E5%AF%86%E9%92%A5%E7%99%BB%E5%BD%95/</link><guid isPermaLink="true">https://www.pidexe.com/posts/linux%E8%AE%BE%E7%BD%AEssh%E5%AF%86%E9%92%A5%E7%99%BB%E5%BD%95/</guid><description>配置文件位置，常见参数说明</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h4&gt;ssh配置文件位置：&lt;strong&gt;/etc/ssh&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;1.修改ssh配置文件：&lt;strong&gt;/etc/ssh/sshd_config&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;参数&lt;/th&gt;
&lt;th&gt;代码&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;允许root登录&lt;/td&gt;
&lt;td&gt;&lt;code&gt;PermitRootLogin prohibit-password&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;允许密钥登录&lt;/td&gt;
&lt;td&gt;&lt;code&gt;PubkeyAuthentication yes&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;禁止密码登录&lt;/td&gt;
&lt;td&gt;&lt;code&gt;PasswordAuthentication no&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;定时发送心跳包&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ClientAliveInterval 30&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;重试次数&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ClientAliveCountMax 3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;日志文件&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SyslogFacility AUTH&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;日志记录等级&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LogLevel INFO&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;2.用软件puttygen生成密钥，将公钥并上传至&lt;code&gt;/opt&lt;/code&gt;文件夹&lt;br /&gt;
3.创建公钥存放路径：&lt;code&gt;mkdir ~/.ssh&lt;/code&gt;&lt;br /&gt;
4.公钥安装：&lt;code&gt;cat /opt/c01.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys&lt;/code&gt;&lt;br /&gt;
5.重启ssh服务：&lt;code&gt;service sshd restart&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;其他命令&lt;/h4&gt;
&lt;p&gt;查看系统登录失败次数：&lt;code&gt;lastb|wc -l&lt;/code&gt;&lt;br /&gt;
生成密钥对：&lt;code&gt;ssh-keygen -m PEM -t rsa -C &quot;fang523&quot;&lt;/code&gt;&lt;br /&gt;
生成后的密钥路径：&lt;code&gt;/root/.ssh&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;甲骨文root登录&lt;/h4&gt;
&lt;p&gt;复制opc用户密钥至root文件夹&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp -r /home/opc/.ssh/authorized_keys /root/.ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编辑文件：&lt;code&gt;/root/.ssh/authorized_keys&lt;/code&gt;&lt;br /&gt;
将&lt;code&gt;ssh-rsa AAAAB3NzaC&lt;/code&gt;前面的内容全部删掉&lt;br /&gt;
重启ssh服务即可&lt;/p&gt;
</content:encoded></item><item><title>nginx安装以及参数说明</title><link>https://www.pidexe.com/posts/nginx%E5%AE%89%E8%A3%85%E4%BB%A5%E5%8F%8A%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E/</link><guid isPermaLink="true">https://www.pidexe.com/posts/nginx%E5%AE%89%E8%A3%85%E4%BB%A5%E5%8F%8A%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E/</guid><description>用apt安装，添加GPG密钥，下载签名文件，参数说明，路径匹配方式</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;安装nginx&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;步骤&lt;/th&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1.更新软件列表&lt;/td&gt;
&lt;td&gt;apt update&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.安装常用工具&lt;/td&gt;
&lt;td&gt;apt install -y curl tar wget gnupg2 lsb-release&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.安装nginx&lt;/td&gt;
&lt;td&gt;apt install nginx&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⭐配置文件位置&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/etc/nginx/conf.d&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4.启动nginx&lt;/td&gt;
&lt;td&gt;systemctl start nginx&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5.开机自启&lt;/td&gt;
&lt;td&gt;systemctl enable nginx&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6.取消开机自启&lt;/td&gt;
&lt;td&gt;systemctl disable nginx&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;nginx管理命令&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;步骤&lt;/th&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;启动nginx&lt;/td&gt;
&lt;td&gt;nginx -c /etc/nginx/nginx.conf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;停止&lt;/td&gt;
&lt;td&gt;nginx -s quit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;强制停止&lt;/td&gt;
&lt;td&gt;nginx -s stop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;重新加载&lt;/td&gt;
&lt;td&gt;nginx -s reload&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;无法安装的解决办法&lt;/h3&gt;
&lt;p&gt;&amp;lt;span style=&quot;color: #FF3333;&quot;&amp;gt;若无法通过apt安装，可是软件源设置问题 &amp;lt;/span&amp;gt;&lt;br /&gt;
1.下载nginx PGP签名文件：&lt;code&gt;wget http://nginx.org/keys/nginx_signing.key&lt;/code&gt;&lt;br /&gt;
2.安装nginx PGP签名文件：&lt;code&gt;apt-key add nginx_signing.key&lt;/code&gt;&lt;br /&gt;
3.添加官方源到你的源列表：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;deb http://nginx.org/packages/debian/ $(lsb_release -cs) nginx&quot; | tee /etc/apt/sources.list.d/nginx.list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4.添加官方源到你的源列表:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;deb-src http://nginx.org/packages/debian/ $(lsb_release -cs) nginx&quot; | tee -a /etc/apt/sources.list.d/nginx.list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后再次更新软件列表，运行安装命令即可。&lt;/p&gt;
&lt;h3&gt;在非标准linux系统中启动nginx&lt;/h3&gt;
&lt;p&gt;例如openwrt，无法使用systemctl管理系统中的服务。&lt;br /&gt;
&lt;strong&gt;先通过opkg软件包管理程序安装nginx。&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;步骤&lt;/th&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;授权开机自启&lt;/td&gt;
&lt;td&gt;chmod 755 /etc/init.d/nginx&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;启动服务&lt;/td&gt;
&lt;td&gt;service nginx start&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;停止服务&lt;/td&gt;
&lt;td&gt;service nginx stop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开机自启服务&lt;/td&gt;
&lt;td&gt;service nginx enable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;取消开机自启&lt;/td&gt;
&lt;td&gt;service nginx disable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;匹配规则和优先级&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;代码&lt;/th&gt;
&lt;th&gt;解释&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;location =&lt;/td&gt;
&lt;td&gt;#精准匹配&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;location ^~&lt;/td&gt;
&lt;td&gt;#带参前缀匹配&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;location ~&lt;/td&gt;
&lt;td&gt;#正则匹配（区分大小写）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;location ~*&lt;/td&gt;
&lt;td&gt;#正则匹配（不区分大小写）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;location /a&lt;/td&gt;
&lt;td&gt;#普通前缀匹配，优先级低于带参数前缀匹配。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;location /&lt;/td&gt;
&lt;td&gt;#任何没有匹配成功的，都会匹配这里处理&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;参数说明&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;参数&lt;/th&gt;
&lt;th&gt;解释&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$args&lt;/td&gt;
&lt;td&gt;这个变量等于请求行中的参数，同$query_string&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$content_length&lt;/td&gt;
&lt;td&gt;请求头中的Content-length字段。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$content_type&lt;/td&gt;
&lt;td&gt;请求头中的Content-Type字段。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$document_root&lt;/td&gt;
&lt;td&gt;当前请求在root指令中指定的值。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$host&lt;/td&gt;
&lt;td&gt;请求主机头字段，否则为服务器名称。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$http_user_agent&lt;/td&gt;
&lt;td&gt;客户端agent信息&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$http_cookie&lt;/td&gt;
&lt;td&gt;客户端cookie信息&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$limit_rate&lt;/td&gt;
&lt;td&gt;这个变量可以限制连接速率。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$request_method&lt;/td&gt;
&lt;td&gt;客户端请求的动作，通常为GET或POST。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$remote_addr&lt;/td&gt;
&lt;td&gt;客户端的IP地址。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$remote_port&lt;/td&gt;
&lt;td&gt;客户端的端口。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$remote_user&lt;/td&gt;
&lt;td&gt;已经经过AuthBasicModule验证的用户名。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$request_filename&lt;/td&gt;
&lt;td&gt;当前请求的文件路径，由root或alias指令与URI请求生成。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$scheme&lt;/td&gt;
&lt;td&gt;HTTP方法（如http，https）。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$server_protocol&lt;/td&gt;
&lt;td&gt;请求使用的协议，通常是HTTP/1.0或HTTP/1.1。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$server_addr&lt;/td&gt;
&lt;td&gt;服务器地址，在完成一次系统调用后可以确定这个值。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$server_name&lt;/td&gt;
&lt;td&gt;服务器名称。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$server_port&lt;/td&gt;
&lt;td&gt;请求到达服务器的端口号。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$request_uri&lt;/td&gt;
&lt;td&gt;包含请求参数的原始URI，不包含主机名，如：”/foo/bar.php?arg=baz”。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$uri&lt;/td&gt;
&lt;td&gt;不带请求参数的当前URI，$uri不包含主机名，如”/foo/bar.html”。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$document_uri&lt;/td&gt;
&lt;td&gt;与$uri相同。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content:encoded></item><item><title>GPT接入微信公众号</title><link>https://www.pidexe.com/posts/bot_on_anything/</link><guid isPermaLink="true">https://www.pidexe.com/posts/bot_on_anything/</guid><description>github项目：bot_on_anything</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;github项目地址&lt;br /&gt;
&lt;a href=&quot;https://github.com/zhayujie/bot-on-anything&quot;&gt;https://github.com/zhayujie/bot-on-anything&lt;/a&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;步骤&lt;/th&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;进入opt文件夹&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cd /opt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;更新软件库&lt;/td&gt;
&lt;td&gt;&lt;code&gt;apt update&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;克隆代码&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git clone https://github.com/zhayujie/bot-on-anything&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;进入文件夹&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cd bot-on-anything&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;复制配置文件&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cp config-template.json config.json&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;安装pip3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;apt-get install python3-pip&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;安装chatGPT依赖&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pip3 install --upgrade openai&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;个人订阅号依赖&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pip3 install werobot&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;web依赖&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pip3 install PyJWT flask&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;进入项目文件夹&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cd /opt/bot-on-anything&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;启动&lt;/td&gt;
&lt;td&gt;&lt;code&gt;python3 /opt/bot-on-anything/app.py&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;后台启动&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cd /opt/bot-on-anything &amp;amp;&amp;amp; nohup python3 /opt/bot-on-anything/app.py &amp;gt; /opt/bot-on-anything/nohup.log 2&amp;gt;&amp;amp;1 &amp;amp;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;查询进程ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ps -ef | grep &apos;python3 /opt/bot-on-anything/app.py&apos;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;创建开机启动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vim /etc/systemd/system/bot-on-anything.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;填入内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Unit]
Description=Bot on Anything
After=network.target

[Service]
User=root
WorkingDirectory=/opt/bot-on-anything
ExecStart=/usr/bin/python3 /opt/bot-on-anything/app.py
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=bot-on-anything

[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重新加载 Systemd 配置文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl daemon-reload
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动服务&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl start bot-on-anything
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看服务&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl status bot-on-anything
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;开机自启&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl enable bot-on-anything
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>frp安装使用方法</title><link>https://www.pidexe.com/posts/frp%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/</link><guid isPermaLink="true">https://www.pidexe.com/posts/frp%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/</guid><description>frp安装使用方法。</description><pubDate>Wed, 01 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;下载frp&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/fatedier/frp/releases&quot;&gt;github下载&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;linux服务端&lt;/h3&gt;
&lt;p&gt;上传至服务器/opt文件夹&lt;br /&gt;
进入opt文件夹&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /opt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行命令解压(注意文件名)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar -zxvf /opt/frp_0.59.0_linux_amd64.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入frp目录&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /opt/frp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;客户端程序：&lt;code&gt;frpc&lt;/code&gt;&lt;br /&gt;
客户端配置文件：&lt;code&gt;frpc.toml&lt;/code&gt;&lt;br /&gt;
服务端程序：&lt;code&gt;frps&lt;/code&gt;&lt;br /&gt;
客户端配置文件：&lt;code&gt;frps.toml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;删除文件夹内其他文件，只保留&lt;code&gt;frps&lt;/code&gt;和&lt;code&gt;frps.toml&lt;/code&gt;两个&lt;/p&gt;
&lt;p&gt;在配置文件中填入以下内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[common]
bind_port = 7000
bind_udp_port = 7001
kcp_bind_port = 7000
tcp_mux = true
token = &quot;yaY4eab54datVWI&quot;  #连接密码
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行服务器(测试)，测试完按ctrl+c退出测试程序&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./frps -c frps.toml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;创建frp服务文件(开机自启)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;touch /usr/lib/systemd/system/frps.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在服务端配置文件填入以下内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/opt/frp/frps -c /opt/frp/frps.toml

[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动服务：&lt;code&gt;systemctl start frps&lt;/code&gt;&lt;br /&gt;
开机自启：&lt;code&gt;systemctl enable frps&lt;/code&gt;&lt;br /&gt;
关闭开机自启：&lt;code&gt;systemctl disable frps&lt;/code&gt;&lt;br /&gt;
查看进程：&lt;code&gt;ps auxw&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;linux客户端&lt;/h3&gt;
&lt;p&gt;与linux服务端一样上传解压，删除其他文件，只保留&lt;code&gt;frpc&lt;/code&gt;和&lt;code&gt;frpc.toml&lt;/code&gt;两个&lt;br /&gt;
在配置文件中填入以下内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[common]
server_addr = &quot;服务器IP或域名&quot;
server_port = 7000
token = &quot;yaY4eab54datVWI&quot;
user = 127  #用户名，不和其他客户端重复即可
tcp_mux = true
tls_enable = true
login_fail_exit = false

[aaaaa1]
type = tcp            #协议
remote_port = 3391    #服务器上占用端口
local_ip = 127.0.0.1  #本地服务的实际IP
local_port = 3389     #本地服务的实际端口
use_encryption = false  #加密，远程桌面本身就有加密，则这里不需要开启
use_compression = false #压缩

[bbb2bb]
type = udp    #协议
remote_port = 3391
local_ip = 127.0.0.1
local_port = 3389
use_encryption = false
use_compression = false
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行服务器(测试)，测试完按ctrl+c退出测试程序&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./frpc -c frpc.toml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;创建frp服务文件(开机自启)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;touch /usr/lib/systemd/system/frpc.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在客户端配置文件填入以下内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.toml

[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动服务：&lt;code&gt;systemctl start frpc&lt;/code&gt;&lt;br /&gt;
开机自启：&lt;code&gt;systemctl enable frpc&lt;/code&gt;&lt;br /&gt;
关闭开机自启：&lt;code&gt;systemctl disable frpc&lt;/code&gt;&lt;br /&gt;
查看进程：&lt;code&gt;ps auxw&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;windows客户端&lt;/h3&gt;
&lt;p&gt;下载解压后得到&lt;code&gt;frpc.exe&lt;/code&gt;和&lt;code&gt;frpc.toml&lt;/code&gt;&lt;br /&gt;
配置文件里面填写内容和linux客户端一样。&lt;br /&gt;
新建一个文本文件，填入以下内容。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.\frpc.exe -c .\frpc.toml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将此文件另存为&lt;code&gt;start.bat&lt;/code&gt;，&lt;strong&gt;注意后缀&lt;/strong&gt;，它就是启动文件了
将客户端程序，配置文件，启动文件放到同一个文件夹，路径不要用中文。
双击启动文件即可启动客户端。&lt;/p&gt;
&lt;h3&gt;windos服务端&lt;/h3&gt;
&lt;p&gt;配置文件和linux服务端一样，启动方法和windows一样，将frpc替换frps即可。
连接成功后访问服务器的IP加3391端口，等于访问本地机器的3389端口。&lt;/p&gt;
&lt;h3&gt;打开防火墙命令&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ufw allow 7000
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;ufw allow 3391
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;docker安装frp&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;docker run --restart=always -d --net=host --name frpc  -v /opt/frp/frpc.ini:/frp/frpc.ini stilleshan/frpc:latest
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>异星工厂联机开服教程</title><link>https://www.pidexe.com/posts/%E5%BC%82%E6%98%9F%E5%B7%A5%E5%8E%82%E8%81%94%E6%9C%BA%E5%BC%80%E6%9C%8D%E6%95%99%E7%A8%8B/</link><guid isPermaLink="true">https://www.pidexe.com/posts/%E5%BC%82%E6%98%9F%E5%B7%A5%E5%8E%82%E8%81%94%E6%9C%BA%E5%BC%80%E6%9C%8D%E6%95%99%E7%A8%8B/</guid><description>详细讲解factorio联机开服的各种方法</description><pubDate>Mon, 30 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h4&gt;首先，工厂开服有6种方式：&lt;/h4&gt;
&lt;p&gt;1：游戏内直接创建房间。&lt;br /&gt;
2：使用ZeroTier虚拟局域网 或者 游侠等对战平台。&lt;br /&gt;
3：通过steam好友加入。&lt;br /&gt;
4：使用有公网IP的linux电脑开服。&lt;strong&gt;(体验最好)&lt;/strong&gt;&lt;br /&gt;
5：使用有公网IP的windows电脑开服。(公网IPV6也算!!)&lt;br /&gt;
6：用家里无公网IP的电脑开服。(反向代理)&lt;/p&gt;
&lt;p&gt;PS: 本教程重点是第四种方法，由于篇幅限制，其他的几种方法会略显简陋，谢谢理解。&lt;/p&gt;
&lt;h4&gt;1：游戏内创建房间。&lt;/h4&gt;
&lt;p&gt;工厂官方会提供一个NAT握手服务，直接游戏内选择多人游戏-搭建服务器创建房间，没啥技术含量，打开互联网开关就行，别人可以在联机大厅找到你。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/01.jpg&quot; alt=&quot;01&quot; /&gt;&lt;/p&gt;
&lt;p&gt;但是由于工厂的NAT握手服务器在外国，所以NAT打孔经常失效，成功率视你家网络环境而定，优点是上手简单，成本低。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;缺点是成功率低，还不稳定容易掉线，此方法早已被大部分玩家抛弃。
看见这个&quot;组局服务器连接已恢复&quot;，就说明成功了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/02.jpg&quot; alt=&quot;02&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;2：使用ZeroTier把大家连接成一个局域网，然后在游戏内创建房间，勾选局域网。&lt;/h4&gt;
&lt;p&gt;或者用游侠等对战平台，游侠会有服务器全程帮你们转发所有数据，而不仅仅是&quot;帮你们握个手&quot;。&lt;br /&gt;
由于此方法使用的是&quot;局域网&quot;连接功能，可以关闭&quot;正版验证&quot;，据我所知一般都是盗版玩家使用比较多，其实正版用户也能用。&lt;br /&gt;
但是我本人没用过游侠，不知道稳定性和收费如何，缺点是每个玩家都要装这个第三方软件。&lt;/p&gt;
&lt;h4&gt;3：通过steam好友加入，由steam提供NAT握手服务，steam在国内有服务器，所以连接成功率比官方游戏大厅高一点。&lt;/h4&gt;
&lt;p&gt;方法也是&lt;strong&gt;游戏内创建房间，把steam勾上&lt;/strong&gt;就行，别人直接在steam右键你的头像就能加入，也可以主动邀请好友加入。&lt;br /&gt;
优点是免费而且稳定性还行，使用体验较佳，&lt;strong&gt;缺点是要加好友&lt;/strong&gt;，但是很多人开服就是想和别人一起玩，想认识新朋友的话，就不能用这种方法了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/03.jpg&quot; alt=&quot;03&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/04.jpg&quot; alt=&quot;04&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;4：使用有公网IP的linux电脑开服。&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;据我所知，此方法是目前异星工厂最多人使用的，这是游戏体验最佳的开服方式，除了需要金钱支持，需要一点技术，其他全是优点。&lt;/strong&gt;
&lt;strong&gt;这是最难的一种开服方式，但是别怕，3个小时以内，一般人都能学会。&lt;/strong&gt;&lt;br /&gt;
有公网，还是linux，如果你家的电脑同时符合这两个条件的话，那你肯定是个大佬，也不需要看我的教程了。&lt;br /&gt;
所以这里指的是云服务器，目前国内有好多云服务器提供商。&lt;br /&gt;
&lt;a href=&quot;https://curl.qcloud.com/B0OWUAOf&quot;&gt;腾讯云 (tencent.com) &lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.aliyun.com/daily-act/ecs/fy22-12-yure?userCode=mbjbx82r&quot;&gt;阿里云 (aliyun.com)  &lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://activity.huaweicloud.com/discount_area_v5/index.html?fromacct=fe178737-34a3-42ef-b76c-489829d67fc3&amp;amp;utm_source=aHc5MTAzNDAxNw===&amp;amp;utm_medium=cps&amp;amp;utm_campaign=201905&quot;&gt;华为云 (huaweicloud.com)&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;第1步:购买服务器&lt;/h5&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/05.jpg&quot; alt=&quot;05&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;系统：debian10或以上&lt;/li&gt;
&lt;li&gt;内存：8G(少了不够用，多了浪费钱，千瓶万瓶才需要更多内存)&lt;/li&gt;
&lt;li&gt;CPU：双核或以上&lt;/li&gt;
&lt;li&gt;网络带宽：8Mbps以上。&lt;/li&gt;
&lt;li&gt;硬盘：10G就够用，但是一般最低档都20G了。&lt;/li&gt;
&lt;li&gt;地理位置：&lt;strong&gt;不要选香港台湾&lt;/strong&gt;，其他地区无所谓，离你越近越好。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;登录后台管理界面，&lt;strong&gt;找到你的服务器公网IP，记录下来&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/06.jpg&quot; alt=&quot;06&quot; /&gt;&lt;/p&gt;
&lt;h5&gt;第2步：连接服务器&lt;/h5&gt;
&lt;p&gt;点击&quot;登录&quot;，显示&quot;用户名@电脑名&quot;，就说明连接成功了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/07.jpg&quot; alt=&quot;07&quot; /&gt;&lt;/p&gt;
&lt;h5&gt;第3步：设置ssh登录&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;设置你的SSH密码，以下命令直接输入，然后回车就行
输入命令：passwd root
输入密码：87654321 输入的时候屏幕没反应是正常的，你键盘按下去了就行了
再输入一次密码：87654321
输入命令重启ssh服务：service sshd restart
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;第5步：工具准备。&lt;/h5&gt;
&lt;p&gt;1：准备正版工厂账号的用户名和密码，但是我更加建议使用&quot;&lt;strong&gt;用户名+token&lt;/strong&gt;&quot;，而不是&quot;用户名+密码&quot;。&lt;br /&gt;
token翻译过来也是密码的意思，也能说是&quot;授权码&quot;。&lt;br /&gt;
区别就是：如果别人盗了你的密码，他除了能用来开服，还能改密码，能用你账号去论坛发表傻逼言论，能随意修改你的个人资料。&lt;br /&gt;
但是如果泄露的是token，他只能用来开服，其他啥也干不了。&lt;/p&gt;
&lt;p&gt;那么token在哪里获得呢？在工厂官网个人资料上面可以查看，点一下这个&quot;reveal&quot;就能显示出来了，如果没有这个按钮，就点击网页下边那个绑定steam，绑定之后就会有了。&lt;br /&gt;
&lt;a href=&quot;https://factorio.com/profile&quot;&gt;个人资料-Factorio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/08.jpg&quot; alt=&quot;08&quot; /&gt;&lt;/p&gt;
&lt;p&gt;2：准备一个ssh工具，用于远程控制云服务器，这里我用的是putty。&lt;br /&gt;
&lt;a href=&quot;https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html&quot;&gt;putty下载&lt;/a&gt;&lt;br /&gt;
3：一个文件传输工具，我使用的是winscp。&lt;br /&gt;
&lt;a href=&quot;https://winscp.net/eng/download.php&quot;&gt;winscp下载&lt;/a&gt;&lt;br /&gt;
4：准备工厂的linux安装包。&lt;br /&gt;
&lt;a href=&quot;https://factorio.com/download&quot;&gt;官网下载链接&lt;/a&gt;&lt;br /&gt;
选择&lt;strong&gt;图标是个企鹅，但是没有头&lt;/strong&gt;的那个，俗称&quot;无头版&quot;，因为去除了图形界面，只有80M大小，别怀疑，就是它。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/09.jpg&quot; alt=&quot;09&quot; /&gt;&lt;/p&gt;
&lt;h5&gt;第6步(ssh连接服务器)&lt;/h5&gt;
&lt;p&gt;工具已经准备好了，开始ssh远程连接到你的服务器，putty是纯英文软件，但是默认设置已经是很好用了，咱这一步不需要设置什么，也就不用学习英文了，认两个按钮就行。&lt;br /&gt;
1：打开putty&lt;br /&gt;
2：输入&lt;strong&gt;用户名@服务器IP地址&lt;/strong&gt;，输入备注(机器名字)&lt;br /&gt;
3：点一下save保存，免得每次都要输入IP地址，太麻烦&lt;br /&gt;
4：双击或者选中之后点open，进行远程控制。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/10.jpg&quot; alt=&quot;10&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/11.jpg&quot; alt=&quot;11&quot; /&gt;&lt;/p&gt;
&lt;p&gt;输入密码之后显示这个界面，就是连接成功了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/12.jpg&quot; alt=&quot;12&quot; /&gt;&lt;/p&gt;
&lt;h5&gt;第7步：上传并解压&lt;/h5&gt;
&lt;p&gt;把安装包上传到云服务器的 &lt;strong&gt;/opt文件夹&lt;/strong&gt; 里，然后运行命令解压。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar -xJvf /opt/factorio-headless_linux_2.0.28.tar.xz -C /opt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;解压之后查看一下文件夹内容&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/13.jpg&quot; alt=&quot;13&quot; /&gt;&lt;/p&gt;
&lt;p&gt;你会看到很多个文件，需要先学习几个嘤文单词：&lt;br /&gt;
server=服务器，settings=设置，example=模板，admin=管理员，list=列表，mods=模组，saves=存档，map=地图，white=白名单&lt;/p&gt;
&lt;p&gt;学会这几个嘤语单词之后你一眼就能看出来，&lt;strong&gt;server-settings.json&lt;/strong&gt;服务器配置文件，打开它。&lt;br /&gt;
也可能只有server-settings.example.json，就是&quot;服务器设置模板&quot;的意思嘛，你改一下文件名，把&quot;模板“这个单词删掉就好了&lt;/p&gt;
&lt;p&gt;文本编辑器最好别用windows自带的记事本，你可以随便下载一个别的，这里我用的是notepad3，也可以用VS Code或者Notepad++&lt;br /&gt;
&lt;a href=&quot;https://github.com/rizonesoft/Notepad3/releases&quot;&gt;Notepad3 (github)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;VS Code(code.visualstudio.com)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://notepad-plus-plus.org/&quot;&gt;Notepad++ (notepad-plus-plus.org)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;只需要改这三个地方，其他的保持默认就行了&lt;/strong&gt;，name是房间名，username是你的用户名，token刚才已经解释过了。&lt;br /&gt;
&lt;strong&gt;只需要改这三个地方，其他的保持默认就行了&lt;/strong&gt;，name是房间名，username是你的用户名，token刚才已经解释过了。&lt;br /&gt;
&lt;strong&gt;只需要改这三个地方，其他的保持默认就行了&lt;/strong&gt;，name是房间名，username是你的用户名，token刚才已经解释过了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/14.jpg&quot; alt=&quot;14&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/15.jpg&quot; alt=&quot;15&quot; /&gt;&lt;/p&gt;
&lt;p&gt;还差一个文件，啊对，管理员，总不能自己开服却没有管理员权限吧，那可真尴尬了，我的老伙计。&lt;br /&gt;
&lt;strong&gt;server-adminlist.json&lt;/strong&gt;是管理员列表，打开它，把你的游戏名字写上去。&lt;br /&gt;
假如找不到server-adminlist.json，也找不到模板，可以直接将&quot;服务器白名单列表&quot;这个文件&lt;strong&gt;复制改名&lt;/strong&gt;成server-adminlist.json&lt;/p&gt;
&lt;p&gt;用这行命令复制并改名&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp /opt/factorio/data/server-whitelist.example.json /opt/factorio/data/server-adminlist.json
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/16.jpg&quot; alt=&quot;16&quot; /&gt;&lt;/p&gt;
&lt;p&gt;配置文件好了，恭喜你，现在可以开始游戏了。&lt;br /&gt;
首先得准备一个存档是吧？&lt;br /&gt;
在你的电脑创建一个呗，如果我没猜错，你的电脑应该是windows系统的，一般情况下存档都会保存在 %appdata%\factorio\saves 文件夹下&lt;br /&gt;
上传到云服务器/opt/factorio/saves文件夹下面，如果没有saves文件夹，就自己创建一个。&lt;/p&gt;
&lt;h5&gt;第8步：输入命令开始游戏&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;/opt/factorio/bin/x64/factorio --start-server-load-latest --server-settings /opt/factorio/data/server-settings.json --server-adminlist /opt/factorio/data/server-adminlist.json --port 34197
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后看到你的IP，后面写着&quot;by pingpong1&quot;之类的，就说明服务器创建成功了，可以愉快的玩耍了，游戏大厅里可以进你的服务器了，直连也可以，你的公网IP就是直连IP。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#这是一些参数说明，如果你有兴趣知道这行命令是什么意思的话就看一下。
/opt/factorio/bin/x64/factorio    #游戏在哪
--start-server-load-latest        #开始-服务-加载-最新(存档)
--server-adminlist    #管理员列表
--server-settings     #配置文件在哪
--port 34197          #端口，默认是34197
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/17.jpg&quot; alt=&quot;17&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果有显示&quot;goodbye&quot;，就是再见的意思，就是你的服务器出错了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/18.jpg&quot; alt=&quot;18&quot; /&gt;&lt;/p&gt;
&lt;p&gt;新手最容易犯的错，是你配置文件里没填用户名和密码，要么就是存档都没传上去
稍微难一点的就是是缺少gilbc2.18，你就看提示，有没有提示gilbc2.18，如果有提示，那就要手动编译gilbc2.18&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;以下是编译glibc-2.18的命令，没报错的跳过，提示了gilbc2.18的话就一行一行执行以下代码。&lt;/strong&gt;&lt;br /&gt;
安装编译所需的常用软件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt install  -y gcc automake autoconf libtool make wget
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入opt文件夹&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /opt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下载glibc&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;解压&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar -zxvf glibc-2.18.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入glibc文件夹&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd glibc-2.18
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;准备一个编译文件夹&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入编译文件夹&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置编译参数/路径&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编译安装(可能会很慢)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;make &amp;amp;&amp;amp; make install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看glibc支持的版本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;strings libc.so | grep GLIBC
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编译安装完glibc-2.18之后，重新执行开服命令就可以开服成功了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果你明明开服成功了，但就是进不了房间，那很可能是防火墙问题。&lt;/strong&gt;
国内的云服务器一般有两层防火墙，第一层防火墙是云服务商提供的，需要在云服务器的管理后台打开。
找到你的云服务器管理后台，阿里云的叫&quot;安全组&quot;，腾讯云的叫&quot;防火墙&quot;，其实就是同一个东西。
&lt;strong&gt;打开TCP协议的27015端口和UDP协议的34197端口。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/19.jpg&quot; alt=&quot;19&quot; /&gt;&lt;/p&gt;
&lt;p&gt;打开了云服务器的安全组之后，可以尝试一下能不能进游戏房间，如果还是不能进，那说明你的云服务器系统自带有防火墙。
系统自带的防火墙每个云服务器不一样，我这里只说比较常见的ufw防火墙。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;输入这行命令先查看防火墙状态&lt;/strong&gt;，如果显示一堆看不懂的嘤文，就说明防火墙正在运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ufw status
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/21.jpg&quot; alt=&quot;21&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/22.jpg&quot; alt=&quot;22&quot; /&gt;
用这两行命令打开防火墙端口&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ufw allow 34197/udp
ufw allow 27015/tcp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后重启防火墙&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ufw reload
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;至此，开服成功，接下来就是维护的问题了。&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;有人问了，我要启用MOD怎么办，在你的电脑saves旁边不是有一个mods文件夹吗，和上传存档一样，把它上传到云服务器的saves旁边，也新建一个文件夹叫&quot;mods&quot;就行了。&lt;/li&gt;
&lt;li&gt;我要启用DLC怎么办？众所周知，DLC也是一个MOD，服务器安装包里面自带的，开关在&lt;strong&gt;mod-list.json&lt;/strong&gt;里面，你刚才上传MOD的时候已经把DLC设置和MOD设置也一起上传了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/23.jpg&quot; alt=&quot;23&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/24.jpg&quot; alt=&quot;24&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;那开服命令太长，我记不住咋办？&lt;br /&gt;
没问题的，刚刚启动服务器的命令复制下来，放到一个文本里，改名成server-start.sh，放到云服务器的/opt/factorio文件夹里面。&lt;br /&gt;
但是这样前台运行，远程连接一关，服务器也会关，所以我们需要让它后台运行，就是在命令的前面加上nohub，在后面加上&amp;amp;就行了&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/25.jpg&quot; alt=&quot;25&quot; /&gt;&lt;/p&gt;
&lt;p&gt;以后开服的时候，运行server-start.sh脚本就行，运行方法就是复制路径，然后直接运行就行，如果提示权限不足，那就修改权限成可执行
执行开服脚本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/opt/factorio/server-start.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;提升权限命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chmod +x /opt/factorio/server-start.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/26.jpg&quot; alt=&quot;26&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;那如果还想开机自启动咋办？&lt;br /&gt;
也简单，编辑rc.local文件，把开服命令加进去，就会每次开机自动执行一次，不过云服务器谁会没事重启啊。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;提升权限&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chmod +x /etc/rc.d/rc.local
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;打开这个文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/etc/rc.d/rc.local
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加这一行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nohup /opt/factorio/factorio-server-start.sh &amp;amp;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;那如果要更新游戏怎么办？&lt;br /&gt;
重新去官网下载游戏安装包(无头版)，上传到云服务器，&lt;strong&gt;先关闭游戏，再解压覆盖&lt;/strong&gt;就行。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;那如果要更新MOD怎么办？&lt;br /&gt;
工厂官方有推荐两个模组更新器，随便选一个。&lt;br /&gt;
&lt;a href=&quot;https://github.com/pdemonaco/factorio-mod-updater&quot;&gt;Python Mod Updater&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/astevens/factorio-mod-updater&quot;&gt;Ruby Mod Updater&lt;/a&gt;&lt;br /&gt;
但是由于众所周知的原因，在国内云服务器上并不好用，还是直接在你自己的电脑下载，然后上传到云服务器直接覆盖文件吧，也可以使用winscp的&quot;同步&quot;功能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;那怎么关闭服务器呢？&lt;br /&gt;
用这行命令查看进程ID&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lsof -i:34197
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;用这行命令关闭进程，其中&quot;32554&quot;是上一步查看端口占用得到的进程编号&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kill -9 32554
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;5：使用有公网IP的windows电脑开服。&lt;/h4&gt;
&lt;p&gt;windows就简单多了，看了linux开服，你已经知道配置文件的文件名是什么了，找到它，和linux开服一样只需要修改三个地方。
windows就直接装个steam，安装游戏，游戏的安装目录下同样会有配置文件的模板，一样这么改。&lt;br /&gt;
连开服命令都差不多，不过Windows运行命令不方便，直接把命令保存到文本里，仅仅是路径书写格式不一样而已，需要把\替换成/
但是windows保存文件的文件名后缀是bat，而不是sh。&lt;br /&gt;
同样的，&lt;strong&gt;准备存档，修改配置文件，检查MOD文件夹，然后开服。&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;start /wait bin/x64/factorio.exe --start-server-load-latest --server-settings &quot;server-settings.json&quot; --port 34197  --no-log-rotation 
pause
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将上面这行代码保存到文本里改名3.bat，然后脚本&lt;strong&gt;一定要放到异星工厂的安装目录(D:\Steam\steamapps\common\Factorio)&lt;/strong&gt;，双击运行就行。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#这是一些参数说明，如果你有兴趣知道这行命令是什么意思的话就看一下。
start    #开始程序
/wait bin/x64/factorio        #游戏在哪(相对路径)
--start-server-load-latest    #开始-服务-加载-最新(存档)
--server-adminlist    #管理员列表
--server-settings     #配置文件在哪
--port 34197          #端口，默认是34197
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/27.jpg&quot; alt=&quot;27&quot; /&gt;
租云服务器就别玩什么windows了，Linux多香啊。&lt;br /&gt;
windows用脚本开服，稳定性并不好，不建议这么做。&lt;br /&gt;
当然，如果你有公网IPV6，还是很香的，防火墙打开方法很简单，请自行搜索。&lt;/p&gt;
&lt;h4&gt;6：使用无公网IP的电脑开服。(反向代理，不需要打开windows防火墙)&lt;/h4&gt;
&lt;p&gt;有的小伙伴家里没有公网IP，并且，众所周知，国内的云服务器贼贵，国外的又网络不太行的样子。&lt;br /&gt;
如果自己家里有一台性能不错的电脑，但是没公网IP，那就可以租一台稍微差点的云服务器，只要有公网IP就行，利用它来把数据转发到你家的电脑上。&lt;br /&gt;
这里就可以选择低配套餐，建议选择&quot;轻量服务器&quot;，带宽大，配置差，但是数据转发并不需要多少性能。&lt;br /&gt;
开服过程和上面说到的一样，只是要多装一个FRP反向代理。&lt;br /&gt;
FRP是一个开源的反向代理程序，非常出名，这里是github项目地址。(网络不好可能打不开这个网页，找网友帮你下载吧)&lt;br /&gt;
&lt;a href=&quot;https://github.com/fatedier/frp/releases&quot;&gt;https://github.com/fatedier/frp/releases&lt;/a&gt;&lt;br /&gt;
下载你对应的版本，云服务器一般是linux-amd-64，家用电脑就是windows，两个都要下载&lt;/p&gt;
&lt;p&gt;下面是Linux服务端的安装过程&lt;br /&gt;
&lt;strong&gt;将FRP安装包上传到云服务器的/opt目录&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /opt
tar -zxvf frp_0.36.2_linux_amd64.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后你会看到几个文件。&lt;br /&gt;
frps就是服务端程序&lt;br /&gt;
frps.toml就是服务端配置文件&lt;br /&gt;
frpc就是客户端程序&lt;br /&gt;
frpc.toml就是客户端配置文件&lt;br /&gt;
咱们打开服务端配置文件&lt;br /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/28.jpg&quot; alt=&quot;28&quot; /&gt;
如果你觉得嘤文太多，可以从解压出来的配置模板里面找到一样的代码，复制代码然后自己修改参数。&lt;br /&gt;
如果复制都懒得复制，你可以下载我的配置文件来修改&lt;br /&gt;
&lt;a href=&quot;https://www.pidex.top/pd/images/factorio/ini/241229/frps.toml&quot;&gt;frps.toml&lt;/a&gt;&lt;br /&gt;
设置好就可以开始运行服务端了。&lt;/p&gt;
&lt;p&gt;进入frp目录：cd /opt/frp&lt;br /&gt;
测试运行frp服务：./frps -c frps.ini&lt;br /&gt;
退出服务：按ctrl+c&lt;br /&gt;
打开开机自启文件：vi /lib/systemd/system/frps.service&lt;br /&gt;
按I进入编辑模式 按I，是i不是 L&lt;br /&gt;
加入以下代码&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini

[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按ESC退出编辑模式，输入 &lt;strong&gt;:wq&lt;/strong&gt; 保存（别少打个冒号）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;启动服务    systemctl start frps
开机自启    systemctl enable frps
取消开机自启    systemctl disable frps
查看进程    ps auxw
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至此，反向代理服务器搭建完成&lt;/p&gt;
&lt;p&gt;刚才已经下载FRP的windows安装包了，windows运行软件就简单多了
客户端配置文件如下&lt;br /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/251127/29.jpg&quot; alt=&quot;29&quot; /&gt;&lt;br /&gt;
你可以下载我的配置文件来修改&lt;br /&gt;
&lt;a href=&quot;https://www.pidex.top/pd/images/factorio/ini/241229/frpc.toml&quot;&gt;frpc.toml&lt;/a&gt;&lt;br /&gt;
确定FRP服务端和客户端配置文件都没问题之后，启动frpc。&lt;br /&gt;
windows启动frpc需要用cmd，也就是也要命令行，所以，还是直接保存命令到文本里边吧。&lt;br /&gt;
&apos;frpc.exe -c frpc.ini&apos;
保存到frpc.bat里面，然后frpc.bat一定要放到frp的根目录下，双击运行就行。&lt;br /&gt;
你可以下载我的脚本(不需要修改)&lt;br /&gt;
&lt;a href=&quot;https://www.pidex.top/pd/images/factorio/ini/frpc.bat&quot;&gt;frpc.bat&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后开工厂服务器也是和上面的一样，别人在游戏大厅可以直接进，或者选直连然后输入你的云服务器IP也能和你联机。
这种方法适合家里没有公网IP，买了云服务器也没别的用途的人，是一种折中的用法。
优点是便宜，缺点是多一层数据转发，对你家的网络稳定性有要求，对你家电脑的性能也是一种考验。&lt;/p&gt;
&lt;p&gt;[至此，教程结束，去愉快的玩耍吧！]&lt;/p&gt;
</content:encoded></item><item><title>异星工厂信号网络电路教程</title><link>https://www.pidexe.com/posts/%E5%BC%82%E6%98%9F%E5%B7%A5%E5%8E%82%E4%BF%A1%E5%8F%B7%E7%BD%91%E7%BB%9C%E7%94%B5%E8%B7%AF%E6%95%99%E7%A8%8B/</link><guid isPermaLink="true">https://www.pidexe.com/posts/%E5%BC%82%E6%98%9F%E5%B7%A5%E5%8E%82%E4%BF%A1%E5%8F%B7%E7%BD%91%E7%BB%9C%E7%94%B5%E8%B7%AF%E6%95%99%E7%A8%8B/</guid><description>factorio游戏内信号网络的用法，基本电路的原理。</description><pubDate>Fri, 02 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h4&gt;目录&lt;/h4&gt;
&lt;p&gt;一：红绿信号线。&lt;br /&gt;
二：判断运算器。&lt;br /&gt;
三：加减乘除。&lt;br /&gt;
四：余数，次方。&lt;br /&gt;
五：左移右移。&lt;br /&gt;
六：按位与，按位或，按位异或。&lt;br /&gt;
这游戏的信号网络，怎么说，算是最具灵魂的玩法之一了，直奔正题吧。&lt;/p&gt;
&lt;h4&gt;一：红绿信号线。&lt;/h4&gt;
&lt;p&gt;一个基本的控制系统，最少需要三种元素&quot;输出信号&quot;,&quot;信号传输&quot;,&quot;接收信号&quot;。&lt;br /&gt;
在factorio游戏里，最简单的用法就是化工厂的重油裂解了。&lt;br /&gt;
用一根线连接储液管和管道泵，将重油裂解的管道泵设置成&quot;重油大于轻油&quot;则启用，将轻油裂解的泵设置成&quot;轻油大于石油气&quot;则启用，一个智能化工厂就完成了。&lt;br /&gt;
在这里储液罐就是输出端，红绿信号线相当于传输，管道泵就是接收信号(被控端)。&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/01.jpg&quot; alt=&quot;图1&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;二：判断运算器。&lt;/h4&gt;
&lt;p&gt;判断运算器算是基本电路用法了，有大于小于等于，接收装置本身就自带一个判断。
但是判断运算器的玩法有很多，有时候只设置接收装置的判断是不够的，比如：&quot;SR锁存&quot;,&quot;寄存器&quot;,&quot;自循环&quot;。&lt;br /&gt;
只要分清楚输出&quot;常量1&quot;和&quot;输入数值&quot;有什么区别就可以了。&lt;br /&gt;
常量1就是只要判断通过，就输出指定信号，值为1。&lt;br /&gt;
选择&quot;输入数值&quot;就相当于开关，判断通过，就让信号通过。这一部分有很多教程，自学简单，如果你真的有兴趣，请多花点时间。&lt;br /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/02.jpg&quot; alt=&quot;图2&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;三：加减乘除。&lt;/h4&gt;
&lt;p&gt;讲算术运算器之前，我们先一起来学一下&quot;数学&quot;，数学在很多地方都是通用的，只不过每个场景的表达方式不一样，其实它们都是一个东西，我整理了一些数据，这里面每一行所对应的就是同一种计算。&lt;/p&gt;
&lt;p&gt;&quot;1+2&quot;是加法，&quot;一加二&quot;也是加法，&quot;C=A+B&quot;也是加法，只不过是书写方式不一样。
&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/03.jpg&quot; alt=&quot;图3&quot; /&gt;
&lt;strong&gt;加减乘除&lt;/strong&gt;：顾名思义，就是读书时候学的加减乘除，没有什么区别。结合判断运算器，我这里有一份铀增值蓝图，如果你能告诉我它的&quot;优点&quot;,&quot;缺点&quot;和&quot;适应场景&quot;分别是什么，你的工厂电路就算入门了，请注意，此蓝图不是最终方案，仅用于研究电路的，请勿引战。&lt;br /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/04.jpg&quot; alt=&quot;图4&quot; /&gt;
&lt;a href=&quot;https://www.pidex.top/pd/images/factorio/210402/%E9%93%80%E5%A2%9E%E5%80%BC%E8%93%9D%E5%9B%BE.txt&quot;&gt;铀增殖蓝图代码&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;余数，次方&lt;/strong&gt;：其实这两个也是初中的知识。&lt;br /&gt;
余数是什么，假如你有230压岁钱，异星工厂游戏99元一份，最多能买2份，剩32元，32就是余数（大于99就再买一份，一直买，最后有点实在用不完的，就是余数）。&lt;br /&gt;
次方，5的4次方=5x5x5x5，5的3次方=5x5x5。&lt;br /&gt;
余数其实是很有用的一种运算，一般我是用来&quot;分组&quot;，比如说有20个地方需要铁板，有5辆火车，那么我只要给每个需求站和火车定一个编号，然后车站编号&quot;余&quot;火车编号，就很清楚知道，这个站需要铁板的时候派哪一辆车出发。AAI玩家表示无脑吹就是了。&lt;/p&gt;
&lt;h4&gt;四：左移右移。&lt;/h4&gt;
&lt;p&gt;左移右移其实很好理解，先将十进制数字转换成二进制，然后看下图。&lt;br /&gt;
&amp;lt;img title=&quot;&quot; src=&quot;https://www.pidex.top/pd/images/factorio/210402/05.jpg&quot; alt=&quot;图5&quot; width=&quot;403&quot;&amp;gt;
左移右移就是这样。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;进制转换&lt;/strong&gt;，举个栗子，我们用瓶子装水，假如有1688毫升水。&lt;br /&gt;
每个瓶子能装10毫升，10个瓶子装一箱，10箱一车，这就是十进制，就等于1车+6箱+8瓶+8毫升，十进制就是1688。&lt;br /&gt;
同理，如果一个瓶子能装16毫升，16瓶一箱，16箱一车，这就是十六进制，就等于6箱+9瓶+8毫升，十六进制就是698。&lt;br /&gt;
那么二进制就是11010011000，没毛病吧。&lt;br /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/06.jpg&quot; alt=&quot;图6&quot; /&gt;
目前最常见的有二进制，八进制，十进制，十六进制，但是这都是人为定义的，如果你愿意，你可以自己写一个9进制，完全没问题，只是不够通用，别人表示不想理你。
在二进制计算里面，由于CPU负载，硬盘容量等各方面原因，不仅仅要定义&quot;进制&quot;，还要定义&quot;位数&quot;，就是说这个数值最大是多少位，还要定义&quot;正负符号怎么写&quot;,电脑只认识0和1，它不认识&quot;+&quot;和&quot;-&quot;。&lt;br /&gt;
这就是&quot;函数&quot;，每个函数给数值的定义不一样，异星工厂里的运算器采用的是&quot;int&quot;函数，这是一个32位，第一位是符号位的函数。参考资料：游戏安装目录\doc-html\Builtin-Types.html&lt;br /&gt;
用77为例，在带符号位的函数里，第一位表示正负，后面的表示数值。&lt;br /&gt;
正数用普通的二进制数表示，那么lnt函数的77二进制是：  00000000000000000000001110110011,&lt;br /&gt;
&lt;strong&gt;负数用&quot;补码&quot;形式保存，补码=取反+1，所以负77的二进制是  11111111111111111111110001001101。&lt;/strong&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/07.jpg&quot; alt=&quot;图7&quot; /&gt;
左移右移可以分为&quot;算术移位&quot;,&quot;逻辑移位&quot;,&quot;循环移位&quot;。&lt;br /&gt;
它们的区别就是：&lt;br /&gt;
&lt;strong&gt;循环移位&lt;/strong&gt;，不考虑符号位，挤出去的用来补后面的。&lt;br /&gt;
&lt;strong&gt;逻辑移位&lt;/strong&gt;，挤出去的扔了，拿0来补。&lt;br /&gt;
&lt;strong&gt;算术移位&lt;/strong&gt;，左移和逻辑移位一样，右移时挤出去的不要了，符号位无限复制，用来补。&lt;br /&gt;
游戏里的运算器是什么运算器，大佬们比我更清楚。&lt;br /&gt;
有没有发现，如果进行移位，会有一部分跑数据跑屏幕外边了，然后有一部分空格没有内容。&lt;br /&gt;
有趣的地方来了，进行左移运算的时候，前面的数据是有可能跑到符号位去的，就比如77左移25位。&lt;br /&gt;
结果就是，电脑看到符号位是1，就觉得这是个负数，就一顿猛如虎的操作，减1取反试图还原，结果还原成这个鬼样子。&lt;br /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/08.jpg&quot; alt=&quot;图8&quot; /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/09.jpg&quot; alt=&quot;图9&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;六：按位与，按位或，按位异或。&lt;/h4&gt;
&lt;p&gt;与或非门其实没有想象中那么难，它就是字面意思，不需要编程知识的。&lt;br /&gt;
&quot;与&quot;就是 并且，而且。&quot;或&quot;，就是或者。&quot;非&quot;，就是不一样。&lt;br /&gt;
唯一需要注意的就是，与门也分为&quot;逻辑与&quot;,&quot;按位与&quot;两种。&lt;br /&gt;
逻辑与就是只考虑0和1两种情况，只有&quot;yes&quot;和&quot;no&quot;，或者说是&quot;真&quot;,&quot;假&quot;，也能写成&quot;true&quot;,&quot;flash&quot;，不要换一种写法就看不懂了，一般用于判断。&lt;br /&gt;
按位与就是两个数字，对应个十百千万位，每一位进行判断，然后输出结果(当然，是二进制的个十百千万)。&lt;br /&gt;
在逻辑运算中：&lt;br /&gt;
与门(AND)：只有2个数字都是1，结果才是1。&lt;br /&gt;
或门( OR )：只要2个数字其中一个是1，结果就是1。&lt;br /&gt;
非门(NOT)：非门只有一个数字，给我1就还你0，给我0就还你1。&lt;br /&gt;
异或(XOR)：两个数字不一样，结果就是1。&lt;br /&gt;
同或(XNOR)：两个数字一样，结果就是1。&lt;br /&gt;
门电路其实不止这么几种，但是其它的复杂门可以用这几种&quot;基本零件&quot;组合而成，所以工厂的电路系统还是偷工减料了啊。&lt;br /&gt;
就拿按位与为例。&lt;br /&gt;
算术运算的按位运算就是对应每一位进行运算，然后最终结果转换成十进制显示出来，不管是按位与按位或还是其它的什么，道理都是一样的，包括符号位。&lt;br /&gt;
这些&quot;门&quot;真的就是字面意思，我们完全不需要看什么真值表，只不过很多时候我们就是下意识的觉得太复杂了，没有用心去研究。&lt;br /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/10.jpg&quot; alt=&quot;图10&quot; /&gt;
至此，本帖接近尾声，下面是一些验证。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/11.jpg&quot; alt=&quot;图11-16&quot; /&gt;&lt;/p&gt;
&lt;p&gt;77左移2位等于308。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/12.jpg&quot; alt=&quot;图12&quot; /&gt;&lt;/p&gt;
&lt;p&gt;77右移两位等于19。  &lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/13.jpg&quot; alt=&quot;图13&quot; /&gt;&lt;/p&gt;
&lt;p&gt;77左移25位，左移的时候某个1跑到符号位了，由于储存方式问题，读取出来显示时就会变成负数。&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/14.jpg&quot; alt=&quot;图14&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.pidex.top/pd/images/factorio/210402/15.jpg&quot; alt=&quot;图15&quot; /&gt;&lt;/p&gt;
&lt;p&gt;由于截图容易放大了看不清，贴上所用的excel表格，大家按需取用。&lt;br /&gt;
&lt;a href=&quot;https://www.pidex.top/pd/images/factorio/210402/%E7%A4%BA%E4%BE%8B.xlsx&quot;&gt;示例.xlsx&lt;/a&gt;&lt;/p&gt;
</content:encoded></item></channel></rss>