
java知识库
文章平均质量分 84
MrJson-架构师
这个作者很懒,什么都没留下…
展开
-
像JSON一样使用ProtoBuf,空间还能缩小60%,性能提升100%
在前面《释放你九成的带宽和内存:GZIP在解决Redis大Key方面的应用》一文中我使用GZIP算法可以将JSON格式数据的大小缩小88%从而节省了大量的存储和带宽资源,本文介绍另一种JAVA对象序列化神器——(Protocol Buffers(),它是由 Google 开发的一种用于序列化结构化数据的高效、灵活且语言中立的协议。它被广泛用于数据通信、数据存储、RPC(远程过程调用)等场景,特别是在分布式系统和微服务架构中。Protobuf 序列化后的数据体积通常比 JSON、XML 小很多,而且占用更少的原创 2024-11-06 09:02:37 · 711 阅读 · 0 评论 -
Java中开发&测试工具 Faker 后端生成测试数据神器,同时也支持python语言
Faker 是一个在 Java 中用于生成测试数据的库,它可以帮助开发人员快速创建各种类型的随机数据,如姓名、地址、电子邮件、电话号码、日期等。使用 Faker 可以简化测试数据的生成过程,并提高开发和测试的效率。使用 Faker 可以简化测试数据的生成过程,并提高开发和测试的效率。创建 faker 对象通过 faker 对象获得要生成的实体对象调用实体对象获得对于生成的部分github地址:https://github.com/DiUS/java-faker。原创 2024-03-11 11:27:08 · 717 阅读 · 0 评论 -
定时任务之Springboot整合Quartz
Quartzquartz是一个定时调度的框架,指定时间内触发执行某个动作;它完全由 Java 写成,并设计用于 J2SE 和J2EE应用中。只需要继承QuartzJobBean,并重载executeInternal方法即可定义你自己的Job执行逻辑@Slf4j@Overridelog.info("Hello Job执行时间: " + new Date());原创 2024-03-08 16:44:17 · 1135 阅读 · 0 评论 -
TCP是怎么处理长连接、短连接
TCP 协议是一种面向连接的协议,即在通信双方之间建立连接后才能开始传输数据。TCP 协议通过三次握手建立连接,在连接建立后就可以保持长时间的连接,以实现长连接。在 TCP 协议中,数据被分成多个数据包进行传输,每个数据包都有序号和确认应答机制,以保证数据的完整性和正确性。当通信双方完成数据传输后,可以通过四次挥手断开连接。如果应用程序需要保持长连接,通常需要在客户端和服务器端都设置一个超时时间,如果在超时时间内没有收到数据,则会发送心跳包来保持连接状态。原创 2024-02-02 14:02:13 · 1177 阅读 · 0 评论 -
java中mysql事务嵌套回滚
java中mysql事务嵌套回滚原创 2023-09-18 15:08:29 · 489 阅读 · 0 评论 -
Java之BigDecimal详解
在需要精确的小数计算时再使用BigDecimal,BigDecimal的性能比double和float差,在处理庞大,复杂的运算时尤为明显。故一般精度的计算没必要使用BigDecimal。尽量使用参数类型为String的构造函数。BigDecimal都是不可变的(immutable)的, 在进行每一次四则运算时,都会产生一个新的对象 ,所以在做加减乘除运算时要记得要保存操作后的值。原创 2023-06-07 14:07:27 · 2204 阅读 · 0 评论 -
fastjson的使用->JSON字符串、JSON对象、Java对象的互转
一、fastjson简介fastjson是阿里出品的处理JSON字符串的Java类库,可以对JSON字符串、JSON对象、Java对象进行互相转换源码地址:https://github.com/alibaba/fastjson二、依赖引用如果使用的是maven,需要在pom.xml文件中加入依赖:<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifact原创 2022-04-12 14:44:39 · 5090 阅读 · 1 评论 -
MyBaits中#{}和${}的真正区别,${}的使用场景,#{}如何防止注入?
一、MyBatis中${}和#{}的区别1.1 ${}和#{}演示数据库数据:dao接口:List<User> findByUsername(String username);List<User> findByUsername2(String username);Mapper.xml:<!-- 使用#{} --><select id="findByUsername" parameterType="java.lang.String" result原创 2022-01-21 14:41:13 · 171 阅读 · 0 评论 -
LinkedList的原理介绍
一、LinkedList的概述LinkedList是双向链表实现的ListLinkedList是非线程安全的LinkedList元素允许为null,允许重复元素LinkedList是基于链表实现的,因此插入删除效率高,查找效率低(虽然有一个加速动作)LinkedList是基于链表实现的,因此不存在容量不足的问题,所以没有扩容的方法LinkedList还实现了栈和队列的操作方法,因此也可以作为栈、队列和双端队列来使用二、LinkedList的分析LinkedList的存储结构LinkedLi原创 2022-01-21 09:34:18 · 476 阅读 · 0 评论 -
生成订单30分钟未支付,则自动取消,实现思路
生成订单30分钟未支付,则自动取消,实现思路设定需求场景在开发中,往往会遇到一些关于延时任务的需求。例如生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别定时任务有明确的触发时间,延时任务没有定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期定时任务一般执行的是批处理操作是多个任务,而延时任原创 2021-09-02 09:30:14 · 453 阅读 · 0 评论