http

HTTP HTTPS实战

问题 http协议是什么协议,结构是什么样的? http协议是几层协议? http是有状态的还是无状态的? nginx是几层代理? lvs是几层代理? 浏览器在与服务器建立了tcp连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开? 一个 TCP 连接可以发送几个 HTTP 请求? 一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)? 为什么有的时候刷新页面不需要重新建立 SSL 连接? 浏览器对同一 Host 建立 TCP 连接到数量有没有限制? sktools介绍 ./sktools

  • 凯文
7 min read

idea破解

goland 下载新版破解补丁 下载补丁文件 jetbrains-agent.jar 并将它放置到 Goland安装目录的\lib目录下(位置可随意,放这里是怕误操作删除了破解文件)。 进入项目界面 进入到项目界面后,点击GoLand最上面的菜单栏中的 “Help” -> “Edit Custom VM Options …”,如果提示是否要创建文件,请点”Yes”。 在打开的vmoptions编辑窗口末行添加:-javaagent:你goland的安装目录\jetbrains-agent.jar 请仔细检查补丁路径是否正确,如果错误则会出现GoLand打不开的情况,这时候可以删除用户配置目录下的goland文件夹: 重启GoLand 输入激活码

  • 凯文
1 min read
other

X.509 数字证书介绍

X.509 数字证书结构图 简单来说,数字证书就是一张附带了数字签名的信息表。 下图或许可以帮助对本文的理解。 互联网中常见的信息窃取方式 假设客户端「C」想和互联网另一端的服务器「S」进行无保密通信,且客户端「C」没有部署任何服务器身份验证机制。 假冒服务器 假冒的服务器「fake_S」冒充「S」,直接与「C」进行通信。 如果「C」打算将密码之类的敏感信息传递到「S」,那么敏感信息就会被「fake_S」截获。 这时候「

  • 凯文
13 min read
java

spring zuul接口与转发过程

spring zuul转发问题 spring zuul项目中的RestController api成功调用,但是存在部分接口调用了PostFilter,但是其它接口不执行PostFilter 原因 zuul: prefix: /v1 routes: new-platform-env: sensitiveHeaders: Access-Control-Allow-Origin,Access-Control-Allow-Methods path: /v1/** url: http://trade-application-gateway:8080 stripPrefix: false new-platform-env2: sensitiveHeaders: Access-Control-Allow-Origin,Access-Control-Allow-Methods path: /v2/** url: http://trade-application-gateway:

  • 凯文
3 min read
java

spring cloud zuul无法转发路由

问题 进行以下路由配置,当调用/financial_order/calculation时,无法将请求转发到http://service-financial-product:8080;zuul应是按从上至下,第一个匹配到的规则进行转发,所以原则上应请求至http://service-financial-product:8080 financial_calculation: path: /financial_order/calculation url: http://service-financial-product:8080/financial_product stripPrefix: false financial_order_service: path: /financial_

  • 凯文
1 min read
java

spring application.yaml配置文件解析过程

目录 主要相关类介绍 PropertySource PropertySources PropertySourceLoader PropertySourcesLoader PropertyResolver Environment StandardServletEnvironment ConfigFileApplicationListener ConfigFileApplicationListener.Loader 主要相关类介绍 PropertySource 是Spring对name/value键值对的封装接口。该定义了getSource()方法,这个方法会返回得到属性源的源头。比如MapPropertySource的源头就是一个Map,PropertiesPropertySource的源头就是一个Properties。 public abstract class PropertySource<T> { protected final Log logger = LogFactory.

  • 凯文
12 min read
other

常用的加密算法

概述 对称加密算法 非对称加密算法 散列算法 详述 对称加密算法 DES 应该是最早的现代密码学算法之一。它由美国政府提出,密钥长度为 56 位。目前,它暴力破解 56 位密码的时间,已经能控制在 24 小时内了。 DES 实际上是一个过时的密码学算法,目前已经不推荐使用了。关于 DES,还有一点特别有意思。DES 包含一个关键模块:S 盒,其设计的原理一直没有公开。因此,很多人都相信,这个

  • 凯文
5 min read
docker

查看docker容器的tcp连接

查看容器内的tcp连接 当需要查看tcp连接时,通常使用netstat或ss命令查看,但是查看docker容器的tcp连接存在两个问题 docker容器中无netstat或ss命令 node节点上无法查看容器中的连接 查看docker容器中网络连接 通过容器中的proc文件查看 查看proc文件内容 cat /proc/net/tcp 内容分析,主要关注的点是local_address、rem_address sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt

  • 凯文
6 min read

golang之udpConn

golang进行UDP client/server通讯的过程中发现Read/ReadFromUDP/Write/WriteToUDP的使用,还有connection/unconnection较乱。 代码实验 UDP server UDP服务器端在调用”net.ListenUDP()“后创建”net.UDPConn”,read/write操作是通过这个UDPConn来完成的。因为listen的时候只指定了本地绑定的地址,它只能被动的接收来自客户端的消息,因此这个UDPConn在golang中为’unconnected’类型的。 这种类型的UDPConn的读操作可以接受Read()及ReadFromUDP()。区别是Read()无法知道远程连接的地址信息而ReadFromUDP()可以,所以如果后续需要跟远程进行双向通讯需要使用ReadFromUDP()。 这种类型的UDPConn在进行写操作时必须使用WriteToUDP()完成,并且需要指定对方的地址信息。

  • 凯文
3 min read
linux

理解inode

inode是什么? 在文件系统中,文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

  • 凯文
9 min read

TUN/TAP概述及操作

TUN/TAP概述 在云计算时代,虚拟机和容器已经成为标配。它们背后的网络管理都离不开一样东西,就是虚拟网络设备,或者叫虚拟网卡,tap/tun 就是在云计算时代非常重要的虚拟网络网卡。 TUN/TAP 是什么 tap/tun 是 Linux 内核 2.4.x 版本之后实现的虚拟网络设备,不同于物理网卡靠硬件网卡实现,tap/tun 虚拟网卡完全由软件来实现,功能和硬件实现完全没有差别,它们都属于网络设备,都可以配置 IP,都归 Linux 网络设备管理模块统一管理。

  • 凯文
9 min read

mysql行锁分析

mysql锁的原则 原则 1:加锁的基本单位是 next-key lock。next-key lock 是前开后闭区间。 原则 2:查找过程中访问到的对象才会加锁。 2.1: 若字段上无索引,因要根据id查询所有的数据,所以所有数据均会加上next-key lock 2.2: 若字段上有普通索引,则只有访问到的数据添加next-key lock,但是最后一条由于不满足,所以根据优化2,退化为间隙锁 优化 1:索引上的等值查询,给唯一索引加锁的时候,next-key lock 退化为行锁。

  • 凯文
8 min read

java内部类

java静态内部类及非静态内部类 在非静态内部类中不可以声明静态成员变量及方法,静态内部类可声明静态及非静态成员变量及方法 非静态内部类,可以随意的访问外部类中的成员变量与成员方法,即使这些成员方法被修饰为private 不能够从静态内部类的对象中访问外部类的非静态成员(包括成员变量与成员方法) 创建静态内部类时不需要将静态内部类的实例绑定在外部类的实例上,而非静态内部类必须绑定在外部类的实例上 内部类的声明关键字同其它成员变量的声明关键字,如若内部类声明为protected,则当前类,同包,子类可创建及使用该内部类,而其它类则不可访问;内部类中的声明同理 // 非静态内部类 Student s = new Student(); Child c = s.new Child(); // 静态内部类 Student s = new Student(); Child

  • developer
1 min read

如何开发一个starter

参考 starter的概念 starter是一种对依赖的synthesize(合成) 进行一些默认的初始化,并且这些初始化操作,都可以在spring.yaml配置文件中覆盖 进行一些实例的初始化,比如之前如果要实例化某类 配置spring 扫描某包 手动通过config创建bean 而starter可通过spring.factories文件实例化对象 传统的做法 在没有starter之前,假如我想要在Spring中使用jpa,那我可能需要做以下操作: 在Maven中引入使用的数据库的依赖(即JDBC的jar) 引入jpa的依赖 在xxx.xml中配置一些属性信息 反复的调试直到可以正常运行 需要注意的是,这里操作在我们每次新建一个需要用到jpa的项目的时候都需要重复的做一次。也许你在第一次自己建立项目的时候是在Google上自己搜索了一番,花了半天时间解决掉了各种奇怪的问题之后,jpa终于能正常运行了。有些有经验的人会在OneNote上面把这次建立项目的过程给记录下来,包括操作的步骤以及需要用到的配置文件的内容,在下一次再创建jpa项目的时候,

  • 凯文
8 min read