目录

程序员子悠 · 好记性不如烂笔头

技术人生 X 人生技术

存档: 2017 年 07 月 (2)

静态资源文件Hash缓存maven插件

背景 在开发的过程中,浏览器会有缓存,每次发布的新的代码,js和css都得不到及时的更新,必须清除缓存才能正常使用。关于前端页面优化的功能网上有很多介绍,不管是更新文件的版本号还是对文件进行Hash,本质上都是更改文件名,让浏览器重新下载文件。 很多前端构建工具都支持这个功能,但是对于部分前后端代码并没有分离的项目来说,并不是很好实现。这里提供一个较好的解决方案,利用maven插件,在项目打包的时候将文件进行Hash,这样每次在发布版本的时候,只要文件本身发生了变化,文件的名称就会变化。 思路 整个实现的思路主要如下: 复制webapp下的文件到临时文件夹; 遍历临时文件夹里面的js和css文件,并进行Hash值计算,保存在Map中; 遍历页面文件,替换里面的引用的js和css文件名。 插件主要的工作是完成2,3两步,第1步有插件已经实现了,拿来用就好。 maven插件代码 package com.coocaa.salad.maven.plugin; import com.origin.eurybia.utils.MD5Encode; import org.apache.maven......

MySQL int类型主键超出限制

今天在公司突然发现一个问题,数据记录少了两天的量。。。从周五开始就没有了,奇怪的是这几天并没有动过正式环境,包括服务器,数据库,代码啥的都没有动过。将问题反映给老大,老大也表示很奇怪,说要去运维查一下。 我们的数据是从kafka消息队列消费下来,进行处理在保存到数据库一张临时表,然后通过这个临时表上面的触发器根据唯一主键写入另一张表的。刚开始发现kafka消费者是没有问题的,临时表的数据也写入成功了,所以就怀疑是触发器没有执行成功。将触发器删除重建,发现还是不行。最后发现是插入的表的id已经达到最大值了,导致无法插入。 插入的表的主键,采用的是int类型,一共能插入21亿条数据。现在是数据量已经达到了最大值。 找到了问题的所在就好解决,将字段类型改成了bigint,将java实体改成了Long类型。 最初在建立数据库的时候并没有考虑到数据量会这么多,而且也没有想到才这么短的时间数据量就已经达到21亿条了。