Clash是一款用Go开发的多平台的代理工具，支持Windows/Linux/IOS客户端，使用规则判定来决定代理流量改走节点还是直连访问。Clash的魅力还在于可以自动选择节点，不同的网站在同一时间，可以使用不同的节点去访问。Clash是最适合机场用户的代理软件之一。本篇所有文件可到此下载。https://www.123pan.com/s/sWpxjv-nFi4h.html 提取码:xh35安装Clash本人的Padavan是纯净版，所以Clash是自行编译安装的（下载二进制文件），自行编译请到Clash项目仓库获取相关资源和帮助。将下载好的二进制文件使用modify解包/打包至Padavan的/usr/bin/目录。设置clash相应权限，chmod 0755 /usr/bin/clash安装WebUI(可选)访问Clash-dashboard下载clash-dashboard.tar.gz文件。将clash-dashboard.tar.gz解压至/etc/storage/clash/dashboard配置Clash订阅下载Geoip数据库，解压至/etc/storage/clash/Country.mmdb。下载第三方提供的Clash机场服务配置文件，解压至/etc/storage/clash/config.yaml配置文件说明。allow-lan: true #允许来自局域网的连接 bind-address: 10.0.0.1 #代理服务地址（本机IP） dns: fake-ip-range: 198.18.0.1/16 default-nameserver: #默认的DNS服务器 - 114.114.114.114 - 119.29.29.29 - 223.5.5.5 enable: true #启用该DNS配置，使其生效。 listen: 0.0.0.0:5353 #DNS服务端口 enhanced-mode: fake-ip fallback-filter: #配置备用DNS服务器的过滤规则，提高网络安全性。 geoip: true #根据地理位置进行过滤 ipcidr: #定义不被解析的IP地址范围 - 240.0.0.0/4 ipv6: false #禁用IPv6 nameserver: #指定其他可信赖的DNS服务器，增强解析能力和稳定性。 - 114.114.114.114 - 119.29.29.29 - 223.5.5.5 - https://223.5.5.5/dns-query - https://223.6.6.6/dns-query - https://doh.pub/dns-query use-hosts: true mixed-port: 10080 #混合代理端口 port: 10081 #HTTP代理端口 socks-port: 10082 #socks代理端口 redir-port: 10083 #透明代理端口 mode: Rule #代理模式 log-level: silent #日志模式 external-controller: 0.0.0.0:9090 #webui地址及端口 external-ui: /etc/storage/clash/ui #webui文件路径 secret: 123456789 #访问密码新建/etc/storage/clash/clash.sh脚本，方便Clash的启动、停止、更新。# 配置文件路径 config_file=/etc/storage/clash/config.yaml # 代理订阅地址 feed_url=https://feed.xxx.com/clash/xxxx.yaml # 日志输出 func_log(){ logger -t "Clash" "$1" echo "Clash $1" } # 停止服务 func_stop(){ if pidof clash >/dev/null; then killall -9 clash func_log "服务已停止！" fi } # 启动服务 func_start(){ clash -d /etc/storage/clash >/dev/null 2>&1 & sleep 3 if pidof clash >/dev/null; then func_log "服务启动成功！" else func_log "服务启动失败！" fi } # 重启服务 func_restart(){ func_stop func_start } # 修改配置 func_config(){ # 开启局域网访问 sed -i 's/allow-lan: false/allow-lan: true/g' $config_file # 设置日志类型 sed -i 's/log-level: info/log-level: silent/g' $config_file # 端口配置 sed -i 's/mixed-port: 7890/mixed-port: 10080\nport: 10081\nsocks-port: 10082\nredir-port: 10083/g' $config_file # 设置DNS模式与端口 sed -i 's/enable: true/enable: true\n listen: 0.0.0.0:5353/g' $config_file # 添加UI目录、UI密码 sed -i 's/external-controller: :9090/external-controller: 0.0.0.0:9090\nexternal-ui: \/etc\/storage\/clash\/ui\nsecret: 123456789/g' $config_file # 获取IP并绑定 localIp=`ifconfig br0 | awk '/inet addr/ {print $2}' | awk -F: '{print $2}'` sed -i 's/bind-address: 127.0.0.1/bind-address: '$localIp'/g' $config_file } # 更新配置重启 func_reload(){ wget --timeout=10 $feed_url -q -O $config_file if [ $? -eq 0 ]; then func_config func_log "节点更新成功！" func_restart fi } case $1 in start) func_start ;; stop) func_stop ;; restart) func_restart ;; reload) func_reload ;; *) echo "Usage: $0 { start | stop | restart | reload }" exit 1 ;; esac exit 0定期更新机场订阅高级设置>系统管理>服务>调度任务 (Crontab)插入以下内容：# 每天6点更新clash节点并重启 0 6 * * * /etc/storage/clash/clash.sh reload &启动Clash及开机自启动命令行启动clash/etc/storage/clash/clash.sh start &Padavan后台界面添加开机启动高级设置>参数设置>脚本>在路由器启动后执行插入以下内容：# 开机启动clash /etc/storage/clash/clash.sh start &访问ui界面 路由器IP:9090/ui输入配置文件所配置的密码即可查看clash运行情况点击菜单代理即可查看和设置机场订阅的节点情况客户端使用方法以局域网内windows系统为例，在网络设置中开启代理，并填入代理服务器地址和端口即可使用windows客户端浏览器访问www.google.com后，访问正常。点击clash webui的菜单连接即可查看代理情况，包括客户端的IP、访问规则、流量等。
AHP层次分析法的应用场景及代码实现
层次分析法，即Analytic Hierarchy Process(AHP) ，是美国运筹学家 Saaty 于20世纪 70 年代初期提出的一种主观赋值评价方法。层次分析法将与决策有关的元素分解成目标、准则、方案等多个层次，并在此基础上进行定性和定量分析，是一种系统、简便、灵活有效的决策方法。javascript代码实现function ahp(matrix) { const size = matrix.length if (!matrix.every(row => row.length === size)) { throw new Error('输入矩阵不是方阵!'); } // 矩阵列求和 const colSum = matrix.reduce((prev, cur) => prev.map((val, i) => cur[i] + val)) // 矩阵权重 const weights = matrix.map(row => { // 归一化矩阵行 const normalized = row.map((val, i) => val / colSum[i]) // 矩阵行平均数 return normalized.reduce((acc, val) => acc + val) / size }) // 特征向量 const eigs = matrix.map(item => weights.map((weight, i) => weight * item[i]).reduce((a, b) => a + b)) // 最大特征根 const lambdaMax = eigs.map((eig, i) => eig / weights[i]).reduce((a, b) => a + b) / size // 一致性指标 const CI = (lambdaMax - size) / (size - 1) // 初始化RI值，用于一致性检验 const RIs = [0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49] // 一致性RI值 const RI = RIs[size - 1] // 一致性比例 const CR = CI / RI // 一致性判断 const consistency = CR < 0.1 return { size, weights, eigs, lambdaMax, CI, RI, CR, consistency } }使用方法// 输入矩阵 const matrix = [ [ 1, 5, 3 ], [ 1/5, 1, 1/2 ], [ 1/3, 2, 1 ] ]; const weights = ahp(matrix); console.log(weights); // 输出 [0.485, 0.323, 0.192]
Syncthing是一款开源免费跨平台的文件同步工具，是基于P2P技术实现设备间的文件同步，所以它的同步是去中心化的，即你并不需要一个服务器，故不需要担心这个中心的服务器给你带来的种种限制，而且类似于torrent协议，参与同步的设备越多，同步的速度越快。针对隐私问题，Syncthing软件只会将数据存储于个人信任的设备上，不会存储到服务器上。设备之间的通信均通过TLS进行，Syncthing还使用了完全正向保密技术来进一步保障你的数据安全。对于处于不同局域网之中的设备之间的文件同步，Syncthing也提供了支持。服务端 - 同步中继与发现服务https://hub.docker.com/r/johngong/syncthing-relay-discosrvdocker run \ --name=syncthing-relay-discosrv \ --restart unless-stopped \ -v /data/syncthing/relay-discosrv:/config \ -p 22067:22067 \ -p 22070:22070 \ -p 8443:8443 \ -d johngong/syncthing-relay-discosrv客户端docker run \ --name syncthing \ --restart=always \ -v /data/files:/files \ -v /data/syncthing:/var/syncthing \ -p 8384:8384 \ -p 22000:22000/tcp \ -p 22000:22000/udp \ -p 21027:21027/udp \ -d syncthing/syncthing
1，进入centos系统，保证联网的状态，下载samba服务。yum install samba2，打开samba服务systemctl start smb3，查看smb状态systemctl status smb4，设置开机自启systemctl enable smb5，打开共享文件夹路径，到对应的路径下创建共享文件夹mkdir /share6，给共享文件夹权限，由于是测试，给的是最高读写权限，一般这种操作不安全，不建议最高chmod -R 777 /share7，创建用户，这时候的用户是centos系统的用户。可以创建多个用户，本次测试只创建一个用户。useradd username8，创建用户组。也可创建多个组。groupadd admin9，将用户加入到组中gpasswd -a username admin10，将用户转变为smb用户，输入密码。smbpasswd -a username11，配置smbvi /etc/samba/smb.conf[share] comment = share #备注 path = /share #共享文件夹路径 valid users = username #有效用户或者组名 @xiaoxue writable = yes #是否可以写入12，重启smb服务systemctl restart smb