Rong Blog

极客 热爱coding

tomcat8的filter和tomcat9接口不一致

spring-boot-web:2.1.4版本中引入的是Tomcat9的依赖,filter接口和Tomcat8是不一致的,导致编译打包没问题,部署到Tomcat8失败

有个奇怪的spring boot项目,在jar包可以运行,在打成war包部署到远程服务器的Tomcat8中就失败,由于项目比较急,客户在电脑前看着解决,一时不知思路。 maven的子项目使用的Tomcat filter均实现了全部方法,此项目只实现doFilter方法,由于spring-boot-tomcat:2.1.4引用的是Tomcat9,其filter接口的init方法和destro...

Thread.activeCount()的值

Thread.activeCount()的值在不同IDE中是不一样的

这几天一直在看多线程相关的东西,今天写了个多线程读取文件并行计算然后汇总数据的demo,发现在IDEA中Thread.activeCount()的值不是理想的1。 直接上码: public static void main(String[] args) { List<String> contents = readFile(); int lineCount = cont...

Redis分布式锁

接口防并发加锁实现

今天在业务开发的时候常常需要加锁实现并发控制,分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。之前写过博文做了数据库锁的记录,今天实现下Redis。 直接上码: /** * redis加锁 * * @param code 报表code * @return boolean ...

Referer伪造

postman在发送请求到服务器时因防盗链导致无法通过测试

我们服务器为了防止他人恶意爬虫和接口嗅探做了防盗链,拦截所有请求,如:查看请求头Referer是否为空,以及其它一些权限限制,开发环境是debug模式,但测试环境是开启了权限认证以及防盗链的,导致做接口查询时一直不能通过。 google发现postman不支持用户在请求头中写入,但是支持代理模式,当用户开启代理模式即可在请求中写入被限制的头,如: Accept-Charset Ac...

自动化测试入门

周一开会测试部提出想学习下接口测试,为自动化测试做调研,我主动接下了这个小而美的事,本想美滋滋的炫技

周一开会测试部提出想学习下接口测试,为自动化测试做调研,我主动接下了这个小而美的事,本想美滋滋的炫技,结果完全出乎我的详细。首先测试同事不了解一些基础的知识,其次他们并不是只想学习接口测试,想实现一套自动化测试流,我真的是~~~既然接了活,怎么也得伺候好咯,开干! 平时开发过程中我是使用chrome的插件:RESTLet-Client 也使用过postman,但感觉有点不好用,而且数...

Docker运行kafka

我在使用Docker运行Kafka时一直不能将消息发送成功,通过修改docker镜像最终解决,记录下。。。

这几天一直想学习个中间件,自己比较熟悉的语言环境下有Kafka和RocketMQ,在之前的工作中有使用Kafka,但那时候项目太急,自己没有深入了解过,而RocketMQ是阿里开源的一款消息中间件,技术沙龙和公众号等也是感觉很活跃,目前自己稍微有点时间,所以计划先了解下Kafka。 先简单打个开发环境,选用虚拟机docker快速部署个。 $ docker images ...

发现另外的自己

当自己感觉到了瓶颈的时候,静下来思考是最好的出路

今天在telegram电报群看到池老师共享的一段话,思绪良久。。。 文中说要保持饥饿感,作为一名开发人员,我实时都会去看下目前主流的技术,不是怕自己掉队吃不上饭,而是觉得时刻学习新知识,保持自己的学习能力和思考力是很珍贵的。就像自己在大学,保持良好的体质和精神,哪怕是拿不到奖学金也不愿意打游戏惶惶度日。每天像个虔诚的教徒,喜欢去图书馆看会文学作品和计算机相关的资料,也很享受每天晚上FM...

Chrome extensions

谷歌浏览器插件开发

在每天工作当中避免不了Google,很多零碎的知识点在开发过程中并没有消化完,而且当下班或者其它事打扰后就不记得了,所以萌生了开发个导出历史记录到服务器,每天或者每周复盘的想法。 之前我是遇到较好的博文或者知识点就点收藏,而且很多来不及看的就放到read later文件夹,假装自己会看~日积月累的一大堆收藏,很是不爽。 一般我使用chrome浏览器,搭配小飞机进行fanqian...

Java list 根据对象属性去重

上次写过stream流的博文中有用到Java8 list对象属性去重

直接上码: // 根据scId去重 ArrayList<Quota> collect = tickets.stream().collect( Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(C...

Java Stream的骚操作

记录使用stream轻松转换后去重的骚操作

今天工作中遇到需求去重的一个问题,先看下数据格式: { "id": 0, "name": "", "total": 0, "used": 0, "startDay": "", "endDay": "", "state": 0, "remain": 0, "tickets": [ { "id": 0, "tmId": 0, "scId": 0, ...