VPN与代理那些事
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
VPN 与 ProxyVPN 和Proxy有什么区别呢,国内的各大平台极力屏蔽了VPN和Proxy这两个关键字,很多人都分不清他们的关系。
VPN全名虚拟专用网络,Proxy全名代理。
其实,VPN工作于操作系统级别,而Proxy工作在应用级别。如果你配置了VPN,那么所有的应用都进入了虚拟的网络;但如果你配置了代理,只有支持代理的那部分应用才可以进入到虚拟的网络,不支持代理的APP,则无法使用虚拟网络。
VPN原理图
Proxy原理图
总结上面两张图已经完美诠释了VPN和Proxy的核心区别了。
Nginx
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
Nginx通过Docker快速部署一个Nginx实例下面的指令可以把当前目录快速部署成一个web服务,注意要有index.html,否则会403
1docker run -d --rm --name nginx -p 8081:80 -v $PWD:/usr/share/nginx/html nginx
配置stream123456789101112131415161718192021# 支持stream 的nginxcd wget http://nginx.org/download/nginx-1.16.1.tar.gztar -zxf nginx-1.16.1.tar.gz -C /usr/localcd /usr/local/nginx-1.16.1./configure --prefix=/usr/local/nginx --with-http_stub_status_module ...
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架构。
docker内部安装软件
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
以哪个镜像作为基础镜像centos:centos8
1docker run -it --rm centos:centos8
换源阿里源12345sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* \&& sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* \&& curl https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo -L -o /etc/yum.repos.d/CentOS-Base.repo \&& ...
白帽子讲Web安全
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
1. 总揽很老的一本书,但是依然有阅读价值。
全书分为4个部分,其中比较重要的应该是第二章和第三章,第二章主要讲解客户端(浏览器)如何保障用户的安全,第三章主要讲解服务端如何保障用户安全。
2. 客户端安全客户端这边容易受到攻击的主要有三个类型。
第一个是XSS攻击,全名跨站脚本攻击,通常指的是黑客通过某些手段,篡改了用户访问的页面,导致页面上执行了一些恶意的脚本。一个简单的例子:在你登陆淘宝之后,黑客篡改了你的淘宝页面(篡改了用户访问的页面),自动帮你购买了一些奇怪的东西(执行了一些恶意的脚本)。
第二个是CSRF攻击,全名跨站点请求伪造,通常指的是黑客通过某些手段,诱导用户访问某钓鱼页面,在该页面上完成了一些恶意的脚本。一个简单的例子: 在一些诱惑下你点开了一个页面(诱导用户访问某钓鱼页面),尽管你之后什么都没有做,但是你的淘宝购物车被恶意清空了(在该页面上完成了一些恶意的脚本)
第三个 ...
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(voi ...
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并不是同一个地址。
1. 从STD的tie类型说起笔者在阅读ClickHouse源码的时候发现了有趣的现象,该源码中有如下代码,我们注意第7-9行,可以发现这使用了STD的tie,该类型让C++实现了一次性返回两个值的效果。下面的executeQueryImpl函数返回了两个值,分别写入到了ast和streams中。
12345678910111213141 ...
Springfox使用
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
1. 对List不能很好的支持1.1. 核心代码代码中写的是数组
12345/** * 用户 */@ApiModelProperty(value = "用户",example = "hellowang")private List<String> user;
1.2. 问题详情在swagger页面展示的例子是字符串
123{ "user": "hellowang"}
1.3. 问题讨论 Stackoverflow
Github
1.4. 解决方案springfox-collection-example-plugin
Go入门-常见陷阱
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
1. Go 的指针Go的指针和C的指针很类似,这也是Go被归类于C类语言的原因,Go的指针不支持偏移运算,即不能向C一样让指针+1,-1。
1.1. 正常使用先来看第一个,符号&即可取到对象的地址。
1234567func sample1() { arr1 := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} fmt.Println(arr1) fmt.Println(&arr1)}
12[0 1 2 3 4 5 6 7 8 9]&[0 1 2 3 4 5 6 7 8 9]
1.2. for循环问题下面的输出全是9,因为for循环的value是共用一个地址的。
1234567891011121314func sample2() { arr1 := []int{0, 1, 2, 3 ...
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 上已经明确建议生产上使用了
一开始 ...