VPN与代理那些事

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial VPN 与 ProxyVPN 和Proxy有什么区别呢,国内的各大平台极力屏蔽了VPN和Proxy这两个关键字,很多人都分不清他们的关系。 VPN全名虚拟专用网络,Proxy全名代理。 其实,VPN工作于操作系统级别,而Proxy工作在应用级别。如果你配置了VPN,那么所有的应用都进入了虚拟的网络;但如果你配置了代理,只有支持代理的那部分应用才可以进入到虚拟的网络,不支持代理的APP,则无法使用虚拟网络。 VPN原理图     阅读全文
fightinggg's avatar
fightinggg 7月 24, 2022

Nginx

    阅读全文
fightinggg's avatar
fightinggg 1月 11, 2021

CPU架构介绍

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial CPU分类CPU分两类,精简指令集CPU(RISC)和复杂指令集CPU(CISC)。Intel、AMD厂商主要做复杂指令集CPU;IBM,ARM厂商主要做精简指令集CPU。 精简指令集CPU能耗低,性能相对较弱,常用于移动设备;复杂指令集CPU能耗高,性能强,常用于桌面设备。 CPU架构分类不同厂商做的CPU,其架构也不尽相同,目前为止,比较多的架构有四种,ARM架构、X86架构、MIPS架构、PowerPC架构。 ARM架构CPU为精简指令集CPU;X86架构CPU为复杂指令集CPU;MIPS架构和PowerPC架构目前用的不太多了。笔者大学期间学习计算机组成原理的时候,学的就是MIPS架构。     阅读全文
fightinggg's avatar
fightinggg 7月 19, 2022

docker内部安装软件

    阅读全文
fightinggg's avatar
fightinggg 7月 16, 2022

白帽子讲Web安全

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 1. 总揽很老的一本书,但是依然有阅读价值。 全书分为4个部分,其中比较重要的应该是第二章和第三章,第二章主要讲解客户端(浏览器)如何保障用户的安全,第三章主要讲解服务端如何保障用户安全。 2. 客户端安全客户端这边容易受到攻击的主要有三个类型。 第一个是XSS攻击,全名跨站脚本攻击,通常指的是黑客通过某些手段,篡改了用户访问的页面,导致页面上执行了一些恶意的脚本。一个简单的例子:在你登陆淘宝之后,黑客篡改了你的淘宝页面(篡改了用户访问的页面),自动帮你购买了一些奇怪的东西(执行了一些恶意的脚本)。 第二个是CSRF攻击,全名跨站点请求伪造,通常指的是黑客通过某些手段,诱导用户访问某钓鱼页面,在该页面上完成了一些恶意的脚本。一个简单的例子: 在一些诱惑下你点开了一个页面(诱导用户访问某钓鱼页面),尽管你之后什么都没有做,但是你的淘宝购物车被恶意清空了(在该页面上完成了一些恶意的脚本) 第三个是ClickJacking攻击,全名点击劫持攻击,通常指的是黑客通过某些手段,诱导用户访问某钓鱼页面,该页面有个按钮,按钮上悬浮了一个透明的iframe,然后引诱你点击该按钮,当你点击该按钮时触发了iframe中的按钮。一个例子是:在一些诱惑下你点开了一个页面,然后在该页面的诱惑下你点击了一个按钮,结果你的淘宝购物车被恶意清空了。     阅读全文
fightinggg's avatar
fightinggg 5月 25, 2022

spring13-AspectJ

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 1. AspectJ1.1. AspectJ介绍AspectJ官网^4 AspectJ文档^1 1.1.1. pointcutspointcuts指的是程序中的某些链接点(某些时机),例如call(void Point.setX(int))表示:调用类Point的setX(int)方法时 pointcuts可以使用与或非表达式(||,&&,!)连接,比如 call(void Point.setX(int)) || call(void Point.setY(int)) pointcuts可以被定义为变量,如下面代码中的move() 123456pointcut move(): call(void FigureElement.setXY(int,int)) || call(void Point.setX(int)) || call(void Point.setY(int)) || call(void Line.setP1(Point)) || call(void Line.setP2(Point)); 当然pointcuts定义的时候还可以使用通配符,比如call(void Figure.make*(..))代表Figure的以make开头且返回值为void的方法(不关心参数)调用的时候。比如call(public * Figure.* (..))代表Figure的任何方法(不关心方法名,参数,返回值)调用的时候。     阅读全文
fightinggg's avatar
fightinggg 3月 31, 2022

C++引用的秘密

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 0. 一个错误的概念123456int main() { int a = 111; int &b = a; b = 222; std::cout<<&a<<&b;} 我们能看到这里输出的两个值相同。 错误1: 很多人认为这里的b就是a,a就是b,a和b的地址是一样的,如下图。 但是笔者要说,其实这个概念是有问题的,a是a,b是b,a和b并不是同一个地址。     阅读全文
fightinggg's avatar
fightinggg 2月 16, 2022

Springfox使用

    阅读全文
fightinggg's avatar
fightinggg 1月 13, 2022

Go入门-常见陷阱

    阅读全文
fightinggg's avatar
fightinggg 11月 03, 2021

Go进阶-Module

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 1. Module使用在文章Go入门-Go语言从入门到进阶实战中,我们介绍了GO项目的结构,但是没有解释其中的一个文件go.mod, 这其实是模块的意思。在go.mod中可以引入go的依赖。 123456require ( github.com/golang/mock v1.4.4 github.com/golang/protobuf v1.4.3 github.com/patrickmn/go-cache v2.1.0+incompatible github.com/stretchr/testify v1.6.1) 这里简单介绍一下,注意到这里是库名加版本号。当我们引入了依赖管理以后,就可以在自己的项目中直接import三方包了。 2. Module 的历史 Go modules 是 Go 语言的依赖解决方案,发布于 Go1.11,Go1.14 上已经明确建议生产上使用了 一开始go发布的时候是没有包管理的 go get命令会根据路径,把相应的模块获取并保存在$GOPATH/src 也没有版本的概念,master 就代表稳定的版本 原文: 😊 在Go Module出现以前,我们使用Go Get获取库,库会直接下载到GOPATH目录的src文件夹下,很好用但是有一个问题-版本兼容问题。 当两个库依赖分别同一个库的v1和v2版本的时候,如果v1和v2不兼容,那么会导致这两个库无法同时使用。 后来官方采用了vgo方案来解决GO的依赖管理问题,也就是现在的Go modules。     阅读全文
fightinggg's avatar
fightinggg 10月 22, 2021