简介项目中,请求时发送超大 json 数据外;响应时也有可能返回超大 json 数据。《Springboot 之 Filter 实现 Gzip 压缩超大 json 对象》实现了请求数据的 gzip 压缩。本篇通过 filter 实现对响应 json 数据的压缩。先了解一下以下两个概念: 请求头: Accept-Encoding : gzip 告诉服务器,
......
312
0
0
2023-09-04
导读 同理,世界上只有两种代码:高效代码和低效代码;世界上只有两种人:编写高效代码的人和编写低效代码的人。如何编写高效代码,是每个研发团队都面临的一个重大问题。所以,作者根据实际经验,查阅了大量资料,总结了” Java 高效代码50例 “,让每一个Java程序员都能编写出” 高效代码 “。1.常量&变量1.1.直接赋值常量值,禁止声明新对象直接赋值
......
280
0
0
2023-09-04
1. 为什么要写这篇文章几年前 NoSQL 开始流行的时候,像其他团队一样,我们的团队也热衷于令人兴奋的新东西,并且计划替换一个应用程序的数据库。 但是,当深入实现细节时,我们想起了一位智者曾经说过的话:“细节决定成败”。最终我们意识到 NoSQL 不是解决所有问题的银弹,而 NoSQL vs RDMS 的答案是:“视情况而定”。类似地,去年RxJava 和
......
451
0
0
2023-09-03
1. 介绍在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用 如果我们想保证数据传输的安全,对接口出参加密,入参解密。 但是不想写重复代码,我们可以提供一个通用starter,提供通用加密解密功能 2. 前置知识2.1 hutool-crypto加密解密工具hutool-crypto提供了很多加密解密工具,包括对称加密,非对称加
......
377
0
0
2023-09-03
本文简要介绍 Java 并发编程方面常用的类和集合,并介绍下其实现原理。 AtomicInteger 可以用原子方式更新int值。类 Atomic boolean 、AtomicInteger、AtomicLong 和 AtomicReference 的实例各自提供对相应类型单个变量的访问和更新。基本的原理都是使用CAS操作: boolean c
......
301
0
0
2023-09-03
目录:一.生产者和消费者模式 二.线上问题定位 三.性能测试 四.异步任务池 当你在进行并发编程时,看着程序的执行速度在自己的优化下运行得越来越快,你会觉得越来越有成就感,这就是并发编程的魅力。但与此同时,并发编程产生的问题和风险可能也会随之而来。一.生产者和消费者模式 线程通信 ,在 多线程 系统中,不同的线程执行不同的任务;如果这些任务之间存在联系,
......
278
0
0
2023-09-02
在当今技术驱动的世界里,我们都可以看到科技进步是多么频繁地出现,随之而来的是旧的工具和技术变得过时和缺乏竞争力。但并不是每一项技术都是一样的 Java 是二十多年来在科技界享有强大地位的少数技术之一! 根据各种标准报告,Java仍然是最流行和最需要的编程语言之一。Java如此受欢迎的主要原因之一是它有广泛的应用程序,如Android开发,Web应用,
......
313
0
0
2023-09-01
消息中间件能做什么消息中间件主要解决的就是分布式系统之间消息传递的问题,它能够屏蔽各种平台以及协议之间的特性,实现应用程序之间的协同。举个非常简单的例子,就拿一个电商平台的注册功能来简单分析下,用户注册这一个服务,不单单只是insert一条数据到数据库里面就完事了,还需要发送激活邮件、发送新人红包或者积分、发送营销短信等一系列操作。假如说这里面的每一个操作,
......
417
0
0
2023-09-01
Sharding-JDBC背景:出于工作的需要,非常需要详细了解数据库分表分库的内容,这样便于选择版本,了解原理及性能,做出更好的选择。Sharding- JDBC是 sharding Sphere的第一个产品,也是ShardingSphere的前身。 它定位为轻量级 Java框架 ,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形
......
288
0
0
2023-08-31
作者 | 楚昭来源 | 阿里巴巴中间件(ID:Aliware_2018)在计算机行业有一个定律叫”摩尔定律”,在此定律下,计算机的性能突飞猛进,而且价格也随之越来越便宜, CPU 从单核到了多核,缓存性能也得到了很大提升,尤其是多核 CPU 技术的到来,计算机同一时刻可以处理多个任务。在硬件层面的发展带来的效率极大提升中,软件层面的多 线程 编程已经成为必
......
263
0
0
2023-08-30
构建自定义的同步工具 类库 中包含了许多存在状态依赖性的类,例如 FutureTask , Semaphore 和 B Lock ingQueue等。在这些类中的一些操作中有着基于状态的前提条件,例如,不能从一个空的队列中删除元素,或者获取一个尚未结束的任务的计算结果,在这些操作可以执行之前,必须等到队列进入 “非空 ”状态,或者任务进入 “
......
278
0
0
2023-08-28
本文重点是从源码层面理解jdk8中 线程池 的实现。核心机制再分析源码之前,我们还是先回顾和熟悉下 线程 的核心工作机制。线程池工作原理线程池采用的是一种生产者-消费者的模型,如下图: 主线程调用execute、或者submit等方法提交任务给线程池。如果线程池中正在运行的工作线程数量小于corePoolSize(核心线程数量),那么马上创建线程运行这个任务
......
343
0
0
2023-08-28
JVM 作为一个通用的 虚拟机 ,我们可以通过启动 java 命令时指定不同的 JVM 参数,让 JVM 调整自己的运行状态和行为,内存管理和垃圾回收的 GC 算法,添加和处理调试和诊断信息等等。本节概括地讲讲 JVM 参数,对于 GC 相关的详细参数将在后续的 GC 章节说明和分析。直接通过命令行启动 Java 程序的格式为: java [option
......
417
0
0
2023-08-28
之前上学的时候有这个一个梗,说在食堂里吃饭,吃完把餐盘端走清理的,是 C++ 程序员,吃完直接就走的,是 Java 程序员。 图片来自 Pexels确实,在 Java 的世界里,似乎我们不用对垃圾回收那么的专注,很多初学者不懂 GC,也依然能写出一个能用甚至还不错的程序或系统。 但其实这并不代表 Java 的 GC 就不重要。相反,它是那么的重要和复杂,以
......
286
0
0
2023-08-28
JVM 基础 程序计数器(Program Counter Register)CPU中的寄存器 作用: 记住下一条JVM指令 特点: 线程 私有唯一一个不会出现内存溢出的区域虚拟机 栈(Java virtual mechine Stack)线程私有 每个线程运行时所需要的内存每个栈由多个栈帧Frame组成,对应着每次方法调用时占的内存每个线程只能有
......
321
0
0
2023-08-28