http HTTP HTTPS实战 问题 http协议是什么协议,结构是什么样的? http协议是几层协议? http是有状态的还是无状态的? nginx是几层代理? lvs是几层代理? 浏览器在与服务器建立了tcp连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开? 一个 TCP 连接可以发送几个 HTTP 请求? 一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)? 为什么有的时候刷新页面不需要重新建立 SSL 连接? 浏览器对同一 Host 建立 TCP 连接到数量有没有限制? sktools介绍 ./sktools
mysql mysql幻读 在可重复读下,mvcc是否解决了幻读问题 测试一 事务1 set autocommit = 0; select * from temp; 事务2 insert into temp (id,name)values(2,"60") 事务1 select * from temp; 总结 在可重复读模式下,查询不到新提交的insert语句 测试二 事务1 set autocommit = 0;
idea idea破解 目录 Goland IntelliJ IDEA goland 下载新版破解补丁 下载补丁文件 jetbrains-agent.jar 并将它放置到 Goland安装目录的\lib目录下(位置可随意,放这里是怕误操作删除了破解文件)。 进入项目界面 进入到项目界面后,点击GoLand最上面的菜单栏中的 “Help” -> “Edit Custom VM Options …”,如果提示是否要创建文件,请点”Yes”。 在打开的vmoptions编辑窗口末行添加:-javaagent:你goland的安装目录\jetbrains-agent.jar 请仔细检查补丁路径是否正确,
other X.509 数字证书介绍 X.509 数字证书结构图 简单来说,数字证书就是一张附带了数字签名的信息表。 下图或许可以帮助对本文的理解。 互联网中常见的信息窃取方式 假设客户端「C」想和互联网另一端的服务器「S」进行无保密通信,且客户端「C」没有部署任何服务器身份验证机制。 假冒服务器 假冒的服务器「fake_S」冒充「S」,直接与「C」进行通信。 如果「C」打算将密码之类的敏感信息传递到「S」,那么敏感信息就会被「fake_S」截获。 这时候「
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:
hack hackthebox注册过程 打开网站 Join Now www.hackthebox.eu 获取邀请码 打开控制台 根据提示获得信息,当前页面存在一个有趣的js文件,找到它获取下一步信息 查看网站的js文件内容 发现inviteapi.min.js,从名字可了解到该js为邀请接口相关的,获取内容为 //This javascript code looks strange...is it obfuscated??? eval(function(p,a,c,k,e,r)
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_
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.
java 内部类反编译分析 源码 public class InnerClassTest { final StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); public static void main(String[] args) throws Exception { StringBuilder sb = new StringBuilder("124"); Callback callback = new Callback() { @Override
other 常用的加密算法 概述 对称加密算法 非对称加密算法 散列算法 详述 对称加密算法 DES 应该是最早的现代密码学算法之一。它由美国政府提出,密钥长度为 56 位。目前,它暴力破解 56 位密码的时间,已经能控制在 24 小时内了。 DES 实际上是一个过时的密码学算法,目前已经不推荐使用了。关于 DES,还有一点特别有意思。DES 包含一个关键模块:S 盒,其设计的原理一直没有公开。因此,很多人都相信,这个
linux spring boot admin请求接口无响应问题排查 问题 请求网关转发接口长时间无响应,服务无任何错误日志;但是直接请求服务接口正常。 问题定位 TCP问题排查 通过nestat查看tcp连接 bash-4.3$ netstat -tap Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.
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
mysql mysql之binlog操作 获取binlog文件列表 show binary logs; 查看当前正在写入的binlog文件 show master status 查看指定binlog文件的内容 show binlog events in 'mysql-bin.000002'; 查看binlog具体内容 mysqlbinlog -u temp_admin -h psi.mysql.test.tcit.cc -P 3306 --read-from-remote-server -p --base64-output="decode-rows&
golang 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()完成,并且需要指定对方的地址信息。
linux kill 命令解析 kill命令概述 通过man kill查看文档说明 kill命令将指定的信号发送到指定的进程或进程组。 如果未指定信号,则默认的发送信号为TERM,当该进程未处理TERM信号时,该信号将杀死该进程。 如果发送的信号为0,则不发送信号,但仍会执行错误检查。 linux信号列表 [root@test-master temp]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
linux 理解inode inode是什么? 在文件系统中,文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
mysql mysql explain详解 简介 MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. 准备 user_info CREATE TABLE `user_info` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL DEFAULT '',
mysql mysql 关键字 union MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。 sql准备 CREATE TABLE `user_info` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL DEFAULT '', `age` INT(11) DEFAULT NULL,
linux TUN/TAP概述及操作 TUN/TAP概述 在云计算时代,虚拟机和容器已经成为标配。它们背后的网络管理都离不开一样东西,就是虚拟网络设备,或者叫虚拟网卡,tap/tun 就是在云计算时代非常重要的虚拟网络网卡。 TUN/TAP 是什么 tap/tun 是 Linux 内核 2.4.x 版本之后实现的虚拟网络设备,不同于物理网卡靠硬件网卡实现,tap/tun 虚拟网卡完全由软件来实现,功能和硬件实现完全没有差别,它们都属于网络设备,都可以配置 IP,都归 Linux 网络设备管理模块统一管理。
mysql 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 退化为行锁。
java feign使用ribbon 配置文件 eureka: client: register-with-eureka: false # 不注册eureka为客户端 fetch-registry: false ribbon: eureka: enabled: false local-server.ribbon.listOfServers: http://localhost:8080,http://localhost:8081 禁止注册eureka ribbon负载信息不从eureka读取 配置ribbon service-id feign @FeignClient(name = "local-server") public interface
java java内部类 java静态内部类及非静态内部类 在非静态内部类中不可以声明静态成员变量及方法,静态内部类可声明静态及非静态成员变量及方法 非静态内部类,可以随意的访问外部类中的成员变量与成员方法,即使这些成员方法被修饰为private 不能够从静态内部类的对象中访问外部类的非静态成员(包括成员变量与成员方法) 创建静态内部类时不需要将静态内部类的实例绑定在外部类的实例上,而非静态内部类必须绑定在外部类的实例上 内部类的声明关键字同其它成员变量的声明关键字,如若内部类声明为protected,则当前类,同包,子类可创建及使用该内部类,而其它类则不可访问;内部类中的声明同理 // 非静态内部类 Student s = new Student(); Child c = s.new Child(); // 静态内部类 Student s = new Student(); Child
java Spring注解的继承 spring中有时候一个类上面标记很多注解。 实际上Spring注解可以进行继承(也就是把多个注解合并成1个) 比如说SpringMVC的注解 @RestController @RequestMapping("/person") 可以合并为一个 @PathRestController("/user") 实现是: import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.
java hystrix配置 hystrix: config.stream.maxConcurrentConnections: 10 command: default: execution.isolation.thread.timeoutInMilliseconds: 65000 service-admin.execution.isolation.semaphore.maxConcurrentRequests: 100 xxx-xxx-vehicle.execution.isolation.semaphore.maxConcurrentRequests: 200 xx-xmd-saleorder.execution.isolation.semaphore.maxConcurrentRequests: 200 xx-xx.execution.isolation.
java 如何开发一个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项目的时候,