摘要:
RabbitMQ 简介 RabbitMQ 是什么 RabbitMQ 是一个用 Erlang 编写的开源的消息队列中间件,它实现了 AMQP 协议(其实还实现了 MTQQ 等消息协议)。和其他两个主流的消息队列中间件 Kafka 和 RocketMQ 相比,拥有更低的延迟、更高的稳定性、更完备的功能、 阅读全文
摘要:
最近项目在进行并发测试的时候发现了一个问题,定位到这样一段代码: 核心逻辑很简单,就是读写一个简单的本地缓存。这里有一个线程负责更新缓存,多个线程会去取缓存。已知每次更新缓存时都能将所有可能取的数据缓存到上面的集合中,但是在几万的并发访问下还是发生了取不到目标缓存的现象。查到这段代码时不难发现问题所 阅读全文
摘要:
最近在做一个物联网协议编解码的工作,需要将字符内容根据私有协议编码为二进制以字节流发送到终端。在编码手机号码时直接使用了 String 的 getBytes() 方法,但当终端程序员问我该怎么解码这段二进制内容时,我开始思考自己对字符编码的理解。 一开始我想直接回答,按 ASSIC 编码去解成手机号 阅读全文
摘要:
最近部门老大给了我一份代码让我帮忙维护,一个Java服务端应用,用于将某物联网设备的上报数据转发到另一个平台服务器。项目刚跑没多久就遇到了问题,设备一开始的请求都能及时转发出去,但是后来发现将数据转发出去的延迟越来越大,在收到一份设备数据后可能要二三十分钟才被转发出去。仔细看了项目的业务逻辑,服务在 阅读全文
摘要:
前言 最近在做api鉴权的时候了解到了jwt这个标准协议,非常适合用来做鉴权介质,刚好在 "jwt.io" 网站上就有对jwt的权威简介,这里对原文使用浏览器进行机翻,再人工修改了一些翻译错误并进行适当精简,留作日后回顾。 什么是JSON Web Token? JSON Web Token(JWT) 阅读全文
摘要:
前几天公司新人小A跑来问我,说他的一个 ArrayList 无法进行 add 操作了,让我帮他看看。原来他使用一个 ArrayList 作为文件下载进度的存放队列,再使用另一个线程不停地取队列的对象写到数据库,是一个典型的生产者 消费者模型。简化的实现代码是这样的: 问题显而易见,为了保证列表的线程 阅读全文
摘要:
现如今SpringBoot、Jenkins、Docker这些技术已经非常流行,SpringBoot提高了JavaEE应用的开发效率,Jenkins实现了项目的持续集成,Docker使应用的部署变得灵活。本系列文章将通过这些技术实现SpringBoot的自动化构建和部署。具体流程模拟工作中常见的场景, 阅读全文