Spring Boot 1.x集成spring-boot-devtools开发时实现热部署

热部署
大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着和代码等对应的各种信息,然后Class文件将被虚拟机的ClassLoader加载。
而热部署正是利用了这个特点,它监听到如果有Class文件改动了,就会创建一个新的ClaassLoader进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前。

Read More

Spring Boot框架中读取配置的几种方式

现在开发的主力语言已经从PHP转向Java,目前参与或负责公司的几个项目都是使用Spring Boot框架。用了Java之后,对比PHP就一个感觉:繁琐,Java比PHP繁琐的很!由于自己平时也在努力学习Java中,今天趁着有空闲来总结一下Spring Boot中读取配置的几种方式,加深一下自己的印象。

Read More

什么是缓存雪崩和缓存穿透

1. 缓存雪崩

如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上,造成了缓存雪崩。这个没有完美解决办法,但可以分析用户行为,尽量让失效时间点均匀分布。大多数系统设计者考虑用加锁或者队列的方式保证缓存的单线程(进程)写,从而避免失效时大量的并发请求落到底层存储系统上。

Read More

MySQL中真正意义上的UTF8编码

总所周知,目前的软件体系中运用最广泛的是Unicode字符集,而其中运用最多的编码规则就是UTF-8。用UTF-8有什么好处呢?简单的来说有一下几种好处:

  1. 乱码不会扩散, GB2312在丢失一字节等情况下会造成后续所有文字变成乱码。
  2. 不会产生错误的搜索结果, GB2312在搜索的时候相邻两个中文会拼出一个新的字符,导致出现错误的搜索结果。
  3. 更大的字符集。
  4. 很多语言直接支持 UTF-8,部分语言存储字符串到内存时直接使用UTF-8编码。
  5. 与 GB2312/GB18030相比, UTF-8是一个通用解决方案。
  6. Unicode 一直有人维护,而 GB18030 下一次更新不知道会是什么时候了。另对于中文, UTF-8和GB2312在gzip压缩后都差不多,所以用来做网页对带宽影响很小。

    Read More