如何设计一个全局唯一的订单号?

01、背景介绍
在实际的软件系统开发过程中,由于业务的需要,我们经常需要生成业务单号,例如订单编号、入库单号、投诉服务单号等等,针对这个问题也做了一些研究,有…

一文吃透常用的 JVM 调优命令!

01、背景介绍
虽然目前市场上有很多成熟的 JVM 可视化监控分析工具,但是所有的工具其实都依赖于 JDK 的接口和底层相关的命令,了解这些命令的使用对于我们…

3分钟带你看懂 GC 日志!

01、背景介绍
如何分析当前虚拟机性能呢?其中 GC 日志起到至关重要的作用。
实际上,每种垃圾收集器都有它独立的日志格式,尽管如此,虚拟机为了方便用户阅读,…

SpringBoot整合RabbitMQ实现邮件异步发送(修正版)

在之前的文章中,我们详细介绍了 SpringBoot 整合 mail 实现各类邮件的自动推送服务。
但是这类服务通常不稳定,当出现网络抖动的时候,会导致邮件自动…

JAVA:集成 Drools 业务规则引擎的技术指南

1、简述
Drools 是一个强大的业务规则引擎,适用于需要动态决策或规则管理的场景。它允许开发人员将业务逻辑与应用代码分离,使得业务人员可以通过规则文件维护和…

SpringBoot 整合 Mybatis 实现数据表增删改查,保姆级教程!

01、背景介绍
在上一篇文章中,我们介绍了利用 Spring Boot JPA 来实现对数据库的访问操作,虽然它在国外广泛流行,但是在国内流行程度远不如 My…

SpringBoot 整合 JPA 轻松搞定数据表增删改查!

01、背景介绍
在之前的文章中,我们介绍了通过JdbcTemplate来实现数据库的访问和读写操作。当有一定的开发经验之后,你会发现所有涉及到数据库操作的代码…

推荐几款实用的 GC 日志可视化分析工具!

01、背景介绍
通常情况下,运维人员并不会直接在服务器端通过命令方式实时打印当前应用程序的 GC 日志来分析服务的性能,通常的做法是导出当前服务的 GC 日志…

SpringBoot 开发 Web 系统,快速入门指南!

01、背景介绍
在之前的文章中,我们简单的介绍了 SpringBoot 项目的创建过程,了解了 Spring Boot 开箱即用的特性,本篇文章接着上篇的内容…

SpringBoot 整合 MongoDB 实现文档数据存储,实战讲解!

一、背景介绍

在之前的文章中,我们详细的介绍了 MongoDB 的配置和使用,如果你对 MongoDB 还不是很了解,也没关系,我们一起在回顾一下。
在 Mo…

一小时徒手从0到1搭建一套图片文字识别的OCR平台

在我们日常的工作学习中,图片中的文件识别功能是非常常用的(如用户上传的图片做风控)。我们根据面向的对象不同,一般可以分成两类:
(1)面向普通用户;现有的图片文…

Docker,开发人员必会的工具之一

在日常开发中,很多公司的微服务应用或一些常见的中间件都采用通过docker来部署的,今天我们来聊聊docker的那些事。
1、认识docker
docker可以…

设计百万QPS的短链服务

1、什么是短链接和长链接

上图是我们经常可以收到的一条流量通知的短信,短信有一个链接A:
https://dx.100XX.cn/JG1mEA
这个就是短链接…

实现大文件的断点下载、分片下载

大文件下载是我们开发中经常可以遇到的业务场景,如果直接将大文件(如一部高清的电影可能有5G)装载到内存中的方式下载,如下所示:

如果内存只有4G内存,此时资源…

线上Java应用导致CPU占用率过高的排查和解决方案

在我们日常开发中,如果Java程序在运行中占用大量的CPU资源,此时就会导致系统性能急剧下降、系统的响应变慢甚至会导致系统由于大量请求打过来而承受不住进而崩溃。…

如何使用Spring状态机优雅的管理复杂流程之间的状态变更

在我们的实际项目中经常会遇到一些多流程之间的状态变更问题,典型如订单状态的变更,如下所示的是事件与订单的状态变更的关系图:

每当触发一个事件之后订单的状态就发…

大文件秒传、断点续传和分片上传

在日常业务中经常会遇到上传大文件的需求(如上传一部3G大小的高清电影资源),如果大文件资源上传不做特殊处理而直接使用小文件上传的方式上传到服务,可能会出现如网络…

Java对象都是堆上分配?看完Java中对象逃逸分析就知道答案了

随着JIT编译期的发展与逃逸分析技术逐渐成熟,所有的对象都分配到堆上也渐渐变得不是一定的。在编译期间JIT会对代码做很多优化,其中有一部分优化是减少内存堆分配压…

3分钟理清Java对象头里面的那些杂事

对象头是一个对象用于保存自身状态的区域,在HotSpot虚拟机中,对象在堆内存中存储的布局可以划分为三个部分:对象头(Header)、实例数据(Instance…

从运行的角度理解Java反射的原理

通过Java的发射机制可以实现一些高级的功能,比如动态生成代理对象、动态生成类、动态配置对象等。在Java的一些框架(如Spring框架)也广泛应用了发射机制,…