HTTP 协议冷知识大全

HTTP 协议是纯文本协议,没有任何加密措施。通过 HTTP 协议传输的数据都可以在网络上被完全监听。如果用户登陆时将用户名和密码直接明文通过 HTTP 协议传输过去了,那么密码可能会被黑客窃取。 一种方法是使用非对称加密。GET 登陆页面时,将公钥以 Javascript 变量的形式暴露给浏览器。然后用公钥对用户的密码加密后,再将密码密文、用户名和公钥一起发送给服务器。服务器会提前存储公钥和私钥的映射信息,通过客户端发过来的公钥就可以查出对应的私钥,然后对密码密文进行解密就可以还原出密码的明文。 为了加强公钥私钥的安全性,服务器应该动态生成公钥私钥对,并且使用后立即销毁。但是动态生成又是非常耗费计算资源的,所以一般服务器会选择 Pool 方法提供有限数量的公钥私钥对池,然后每隔一段时间刷新一次 Pool。

进入阅读

2018 年 114DNS、阿里 DNS、OneDNS、百度 DNS、DNSPOD、GoogleDNS、Quard9、SDNS 对移动线路支持情况测试

两年多前,曾发帖对国内主流公共 DNS 对中国移动线路的支持情况做过测试, 随着近两年移动宽带用户数量持续快速增长,特别是今年 2 月,移动宽带用户增量已达到电信联通总和的两倍,其发展势头迅猛。但移动的 DNS 乱弹广告和劫持的情况依然没有得到改善,使用公共 DNS 不失为另一种选择。时隔两年再次测试下国内公共 DNS 对移动线路的支持情况和解析响应速度,供大家做个参考。

进入阅读

浅谈 JSON.stringify 方法

最近项目中,遇到需要将对象转换成字符串进行传递,上次写过一篇文章关于 json 字符串转换成 json 对象,json 对象转换成字符串,值转换成字符串,字符串转成值。当时主要是用在有时候处理字符串和 json 对象之间的转换,写的主要是怎么用,涉及到 JSONstringify 具体用法没有涉及到,有时候对于一个 JSON.stringify 自带的方法掌握一下,可能会对于一个问题有更快的解决方案。

进入阅读

Spring AOP注解的坑及JDK动态代理

之前很多人在使用Spring中的@Transactional, @Async等注解时,都多少碰到过注解不起作用的情况。

为什么会出现这些情况呢?因为这些注解的功能实际上都是Spring AOP实现的,而其实现原理是通过代理实现的。

进入阅读

微服务开发中的数据架构设计

微服务是当前非常流行的技术框架,通过服务的小型化、原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合、业务的灵活调整组合以及系统的高可用性。为业务创新和业务持续提供了一个良好的基础平台。本文分享在这种技术架构下的数据架构的设计思想以及设计要点,本文包括下面若干内容。

进入阅读

Java“老兵”浅谈源码的七大设计模式

一个专业的程序员,总是把代码的清晰性,兼容性,可移植性放在很重要的位置。他们总是通过定义大量的宏,来增强代码的清晰度和可读性,而又不增加编译后的代码长度和代码的运行效率;他们总是在编码的同时,就考虑到了以后的代码维护和升级。甚至,只要分析百分之一的代码后,你就会深刻地体会到,什么样的代码才是一个专业的程序员写的,什么样的代码是一个业余爱好者写的。而这一点是任何没有真正分析过标准代码的人都无法体会到的。

进入阅读

深入理解Mysql——锁、事务与并发控制

每个连接都会在 mysql 服务端产生一个线程(内部通过线程池管理线程),比如一个 select 语句进入,mysql 首先会在查询缓存中查找是否缓存了这个 select 的结果集,如果没有则继续执行 解析、优化、执行的过程;否则会之间从缓存中获取结果集。

进入阅读

缓存世界中的三大问题及解决方案

目前的 IO 设备远不能满足互联网应用海量的读写请求。于是便出现了缓存,利用内存的高速读写性能来应付海量的查询请求。然而内存资源非常宝贵,将全量数据存储在内存中显然是不切合实际的。因此目前采用内存和 IO 结合的方式,内存只存储热点数据,而 IO 设备存储全量数据。 缓存的设计包含很多技巧,设计不当将会导致严重的后果。本文将介绍缓存使用中常见的三大问题,并给出相应的解决方案。

进入阅读