写在前面:很多小伙伴搞不清楚“代理”、“甚至反向代理”、“内网穿透”这些概念。今天我们不讲枯燥的定义,用几张图和一个“传话筒”的故事,带你轻松看懂!
第一话:谁是“中间人”?(什么是代理)想象一下,你(客户端 Client)是一只住在局域网里的小白兔 🐰。你想去访问远方的城堡(服务器 Server)获取信息。
但是,有时候你不能直接飞到城堡去。可能因为路太远,也可能因为中间有一堵大墙。
这时候,你需要一个帮手——机器人 🤖(代理 Proxy)。它就像一个“传话筒”或者“中间人”。你不直接找城堡,而是把请求告诉机器人,机器人替你去跑腿,拿回东西后再转交给你。
这就叫 “代理”。
第二话:我想出去看看(什么是正向代理)有一天,小白兔🐰在公司里上班。公司的网络管理很严,周围围了一圈高高的红砖墙(防火墙),不让大家随便上外网摸鱼。
这时候,小白兔想去外面的世界(比如 Google 查资料)看看,怎么办?
聪明的网管在墙上开了一个小窗口,并在那里安排了一个特权机器人🤖。
小白兔(Client) 拿着写有网址的信(Request),递给 机器人(Proxy)。
机器人 检查一下信件 ...
麒麟 V10 桌面操作系统启用 Root 用户登录警告:直接使用 Root 用户登录存在安全风险,请谨慎操作。建议仅在必要时启用,并在完成操作后禁用或使用 sudo 命令进行管理。
一、允许使用 Root 用户登录在麒麟 V10 桌面操作系统安装完成后,系统默认会要求创建一个新用户进行登录。由于权限限制,普通用户在某些目录下可能无法进行修改或创建文件,执行一些系统管理命令时也需要频繁使用 sudo 并输入密码,较为繁琐。为了更方便地进行操作,可以直接启用 Root 用户登录。
二、修改 Root 账号密码首次启用 Root 用户登录前,需要先设置 Root 用户的密码。
打开终端: 在桌面上通过鼠标右键菜单,选择【打开终端】弹出命令行界面。
修改 Root 密码: 在终端中执行以下命令:
1sudo passwd root
输入密码:
系统会提示你输入当前用户的登录密码。
然后,你需要输入两次你希望设置的 Root 用户密码。
切换到 Root 用户(可选): 密码修改完成后,你可以在当前的终端中使用以下命令切换到 Root 用户身份,以便进行后续的文件修改:
1su ro ...
Nativefier 打包网页一、环境配置1. 安装 NVM for Windows 管理 nodejs使用nvm 管理node
仓库地址 下载win版直接安装 NVM for Windows 常用命令说明
命令
说明
示例
`nvm arch [32
64]`
显示当前 Node.js 进程的架构 (32 位或 64 位)。可指定 32 或 64 覆盖默认架构。
nvm debug
检查 NVM for Windows 进程是否存在已知问题。
nvm debug
nvm current
显示当前激活的 Node.js 版本。
nvm current
nvm install <version> [arch]
安装指定版本的 Node.js。<version> 可以是版本号、latest 或 lts。[arch] 可选,指定 32 或 64,all 同时安装。--insecure 绕过 SSL。
nvm install 18.0.0, nvm install latest, nvm install lts 64, n ...
v2rayN从入门到精通v2rayN是Windows系统下的代理软件客户端,功能强大且支持多种代理协议,如VMess、VLESS、Trojan、Socks、Shadowsocks、Hysteria2、Tuic等代理协议。
界面预览
主界面
下载官网下载v2rayN官网下载地址:https://github.com/2dust/v2rayN/releases 新手使用建议下载稳定版本,即版本号后标记为 Latest 的版本。
安装教程软件目录下载完成后,找到合适的目录,推荐安装在非系统盘,解压压缩包,解压后的目录如下图所示。
安装目录
找到软件主程序 v2rayN.exe 双击鼠标左键即可开始使用,程序启动后会最小化到任务右小角的托盘,鼠标双击蓝色的 V 字小图标,即可打开软件的主界面。
图标说明不同状态下软件的图标颜色是不一样的,参考下表图标颜色说明。图标状态说明 只适用于 ie系统代理
图标
软件状态
说明
清除系统代理
每次启动/重启服务的时候,强制把windows系统(ie)的代理清除掉。
自动配置系统代理
每次启动/重启服务的时候,强制 ...
java
未读SpringAOP 学习笔记AOP: Aspect Oriented Programming 面向切面编程。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。 主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改 变这些行为的时候不影响业务逻辑的代码。
让关注点代码与业务代码分离!关注点,重复代码就叫做关注点;
关注点形成的类,就叫切面(类)!
面向切面编程,就是指 对很多功能都有的重复的代码抽取,再在运行的时候网业务方法上动态植入“切面类代码”。
执行目标对象方法,动态植入切面代码。
可以通过切入点表达式,指定拦截哪些类的哪些方法; 给指定的类在运行的时候植入切面类代码。
AOP底层实现原理动态代理 CGLIB动态代理与JDK动态代理
java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
而cglib动态代理是利用asm开源包,对代理对象类 ...
SpringBoot常用工具类断言
断言是一个逻辑判断,用于检查不应该发生的情况
Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启
SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查
12345678910111213141516171819202122232425// 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行// 参数 message 参数用于定制异常信息。void notNull(Object object, String message)// 要求参数必须空(Null),否则抛出异常,不予『放行』。// 和 notNull() 方法断言规则相反void isNull(Object object, String message)// 要求参数必须为真(True),否则抛出异常,不予『放行』。void isTrue(boolean expression, String message)// 要求参数(List/Set)必须非空(Not Empty),否则抛出异 ...
OpenWrt养老旁路由从零开始(基于immortalWrt固件)准备工作
软路由、或是旁路由、或是其他能做软路由的盒子(N1、树莓派等)
软路由或是旁路由本身具有网络
涉及到的组件
immortalWrt固件
passwall(immortalWrt固件已经安装)
AdGuardHome
MosDNS
写在前面1.使用 iKuai +openwrt 做旁路由网络拓扑
immortalWrt固件
passwall(immortalWrt固件已经安装)
AdGuardHome
MosDNS
安装组件
immortalWrt固件下载地址 开源项目地址: 点击进入
passwall 项目地址: 点击进入
MosDNS 项目地址: 点击进入
AdGuardHome 项目地址: 点击进入
immortalWrt安装ImmortalWrt 是一个基于 OpenWrt 的开源路由器固件分支,主要面向中国大陆用户。它与原版 OpenWrt 相比,具有以下特点:
优点
稳定性高:提供了更高的稳定性和可靠性,适合长时间稳定运行。
包管理丰富:拥有丰富的软件包管理系统,方便用户安装各种附 ...
java
未读认识Optional并使用简单来说,Opitonal类就是Java提供的为了解决大家平时判断对象是否为空用 会用 null!=obj 这样的方式存在的判断,从而令人头疼导致NPE(Null Pointer Exception 空指针异常),同时Optional的存在可以让代码更加简单,可读性跟高,代码写起来更高效.
常规判断:
1234567//对象 人//属性有 name,agePerson person=new Person();if (null==person){ return "person为null";}return person;
使用Optional:
1234//对象 人//属性有 name,agePerson person=new Person();return Optional.ofNullable(person).orElse("person为null");
测试展示类Person代码(如果有朋友不明白可以看一下这个):
123456789101112131415161718192021 ...
Linux常用命令Linux系统目录结构查看Linux系统目录结构使用Windows系统时用户通常是使用鼠标点击进行文件或文件夹的创建、删除等操作,在Linux系统中是通过敲命令来控制系统的,Windows系统和Linux系统的目录结构不同,我们需要先熟悉Linux系统的目录结构。登录系统后,在当前命令窗口中输入以下命令:
1ls /
在Linux中没有盘符概念,它是树状目录结构,最顶层是根目录,效果如下:
Linux系统不同颜色的含义
颜色
说明
**白色 **
普通文件
深蓝色
文件夹(目录)
青色
链接,类似于Windows下快捷方式
绿色
可执行文件
红色
压缩包
橙色
设备文件
Linux常用目录说明
目录
说明
root
系统管理员的主目录,其它用户不能访问的。
home
普通用户的主目录,每个用户都有一个自己的目录,一般是以用户的账号命名的,如上图中的 zhangsan 和 cyxpa。
bin
binary (二进制文件) 的缩写,这个目录存放着最经常使用的命令。
sbin
superuser bina ...
使用SpringAOP优雅的实现异步文件上传相信很多系统里都有这一种场景:用户上传Excel,后端解析Excel生成相应的数据,校验数据并落库。这就引发了一个问题:如果Excel的行非常多,或者解析非常复杂,那么解析+校验的过程就非常耗时。
如果接口是一个同步的接口,则非常容易出现接口超时,进而返回的校验错误信息也无法展示给前端,这就需要从功能上解决这个问题。
一般来说都是启动一个子线程去做解析工作,主线程正常返回,由子线程记录上传状态+校验结果到数据库。同时提供一个查询页面用于实时查询上传的状态和校验信息。
进一步的,如果我们每一个上传的任务都写一次线程池异步+日志记录的代码就显得非常冗余。同时,非业务代码也侵入了业务代码导致代码可读性下降。
从通用性的角度上讲,这种业务场景非常适合模板方法的设计模式。即设计一个抽象类,定义上传的抽象方法,同时实现记录日志的方法,例如:
123456789101112131415161718192021222324252627282930313233343536373839404142//伪代码,省略了一些步骤@Slf4jpublic abstra ...

