- 博客(14)
- 收藏
- 关注
原创 https原理推导
https流程流程如下: https原理推导因为http的内容是透明传输的,所以被劫持之后通信内容就全部泄露了。所以,必须要对通信内容进行加密。目前主流的加密方法分为对称加密和非对称加密,https选用的是对称加密。 问题1:为什么不选用非对称加密? 假设选用非对称加密,那么客户端使用公钥加密通信内容,然后服务端使用私钥解密,从客户端到服务端的链路可行。而服务端返回...
2018-08-19 23:18:37
279
原创 0-1背包问题
0-1背包问题 主要思想:使用v[i][j]表示前i个物品在容量为j的背包中的最大价值,所以当j重量大于等于第i个物品的重量(能放下i)时,放入前i-1个物品的最大价值为v[i-1][j]。如果在前i-1个物品的基础上放入第i个物品必然背包的容量要拿出w[i]的重量来放第i个物品,所以此时放入第i个物品的价值为v[i-1][j-w[i]]+v[i]。只要比较这两个价值的大小就可以得到前i个物...
2018-08-15 00:28:48
208
原创 KMP算法
KMP算法主要思路 找出模式串的next数字,然后将主串和模式串比较,匹配时则继续,不匹配时则模式串根据next数组回溯,直到模式串完全匹配,此时主串指针的位置减去模式串指针的位置即为主串中模式串的起始位置;模式串没有完全匹配则表示主串中不存在该模式串。求模式串的next数组例子: A B A B A -1 0 0 1 2...
2018-08-14 02:04:27
150
原创 基于reids的秒杀系统
主要思想还是限流。秒杀商品有开始时间和结束时间,库存可以看成是token,所以本质上还是一个基于令牌桶限流的变种场景。每个限流的单位时间不是1秒,而是秒杀活动持续的时间长度,库存看作是的单位时间加入到令牌桶的令牌数。和令牌桶唯一的区别是秒杀只有一个单位时间内有令牌。import redis.clients.jedis.Jedis;import java.time.Duration;i...
2018-08-13 01:17:11
288
原创 redis+lua实现分布式令牌桶限流器
redis+lua分布式令牌桶限流器使用redis执行lua脚本,返回结果为0表示被限流,为1表示正常访问。lua脚本传入的KEYS[1]为redis中配置限流器qps的map的key,KEYS[2]为限流器的key,KEY[3]为秒级时间戳;传入的ARGV[1]为请求的token数量,ARGV[2]为key的过期时间。local key=KEYS[2]..':'..KEYS[3]l...
2018-08-10 00:53:45
3263
2
原创 nginx+redis实现高可用思路记录
nginx对sessionid使用一致性hash做负载均衡并配置失败后重试其他服务器。 服务端各节点处理流程如下: 高可用: 1. 如果redis挂了,服务端可以根据本地session来处理 2. 如果一台服务器挂了,nginx会重试其他服务器,由于服务端每次都会先根据redis中的信息判断,所以对登录状态无影响。 3. 服务端加了一个节点,登录状态业务影响,和2一样的情况。...
2018-07-19 01:59:17
1156
原创 Mysql调优
Mysql调优1. 数据库是否是性能瓶颈?通过日志埋点或druid等工具查看数据库访问时间在整个调用过程中消耗时间的占比情况。 是否表中数据量太大引起的,太大要考虑分库分表查看mysql所在服务器的内存、cpu占用情况(top命令),查看mysql占用cpu和内存的大小(iostat命令)。若mysql开启了慢查询日志,查看慢查询日志,看是否是由慢查询造成的。2.确...
2018-06-29 19:05:49
1542
1
原创 TCP三次握手和四次挥手
TCP三次握手和四次挥手1. 为什么要三次握手,为什么不是两次? 在谢希仁的《计算机网络》中是这样说的:为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。 在书中同时举了一个例子,如下: “已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到...
2018-06-26 19:34:22
124
原创 Elasticsearch分析器
分析器实际上是将三个功能封装到了一个包里:字符过滤器 首先,字符串按顺序通过每个字符过滤器 。他们的任务是在分词前整理字符串。一个字符过滤器可以用来去掉HTML,或者将 & 转化成 and。分词器 其次,字符串被分词器分为单个的词条。一个简单的分词器遇到空格和标点的时候,可能会将文本拆分成词条。Token 过滤器 最后,词条按顺序通过每个 token 过滤器 。...
2018-02-23 11:12:41
294
原创 通过copy引用到局部变量来避免NullPointException
public int getNumActive() { // Copy reference to avoid NPE if close happens after null check GenericObjectPool<PoolableConnection> pool = connectionPool; if (pool != null) { ...
2017-12-14 13:14:06
221
原创 Spring集成第三方类库(以简单集成elasticsearch 5.x版本客户端为例)
当我们在Spring中使用第三方类库,但是Spring官方又没有提供相应的集成jar包,而我们又希望Spring能够管理它时,此时可以通过实现FactoryBean接口来达到这个目的。为了Spring能够控制第三方类对象的生命周期,我们还可以实现InitializingBean和DisposableBean接口。
2017-08-19 01:37:33
4077
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人