前言 在java的庞大体系中,其实有很多不错的小工具,也就是我们平常说的: 轮子 。 如果在我们的日常工作当中,能够将这些轮子用户,再配合一下idea的快捷键,可以极大得提升我们的开发效率。 今天我决定把一些压箱底的小工具,分享给大家,希望对你有所帮助。 本文会分享17个我们日常工作中一定会用得到的小工具,主要内容如下: 1. Collections…
前言 相信大家一定遇到过需要在生产环境备份用户的mysql数据,以便满足数据的存储、迁移等操作。下面我将介绍我是如何操作的。 满足每天定期备份,备份文件的有效期是7天,备份数据为:患者信息、用户信息 环境:linux Ubuntu docker mysql 废话不多说,下面 show you the code 其中a.sh 的脚本内容如下: cd…
此文对于部分原理的解释不全,甚至有错误。建议同时参考 一文解决内存屏障 阅读。 在只有双重检查锁,没有volatile的懒加载单例模式中,由于 指令重排序 的问题,我确实不会拿到 两个不同的单例 了,但我会拿到 “半个”单例 。 而发挥神奇作用的volatile,可以当之无愧的被称为Java并发编程中 “出现频率最高的关键字”…
前言 SOLID(单一、开闭、里式替换、接口隔离、依赖倒置)五大原则和23种设计模式(常见的单例、构建者、装饰、适配、代理、组合、模板等等),小伙伴们对这些肯定都很熟悉。这些原则和设计模式能够辅助我们,让我们在设计的时候有所抉择,从而达到高内聚、低耦合的目的。…
1.系统不是分布式 1.1.单机版系统抢单案例 // 抢取订单函数 public synchronized void grabOrder(Long orderId, Long userId) { // 获取订单信息 OrderDO order = orderDAO.get(orderId); if (Objects.isNull(order)) {…
一、限流 为什么要进行限流? 1.瞬时流量过高,服务被压垮? 2.恶意用户高频光顾,导致服务器宕机? 3.消息消费过快,导致数据库压力过大,性能下降甚至崩溃? …… 什么是限流? 限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。 在高并发系统中,出于系统保护角度考虑,通常会对流量进行限流。…
背景介绍:密钥管理 提问:你密钥存在哪儿? 对这一问的回答基本可概括为2类: a. 本地加解密: 密钥保存在某些介质(如配置文件、数据库,也可以是某个远程服务器)中,用户在需要进行加密/签名时,从这些介质拉取密钥(可能拉取的只是密钥密文,需要再解密出密钥明文),然后本地进行加密/签名。 b. 服务器加解密:…
前言 即使代码多年的人都会对这两个问题有点蒙圈:什么是设计?什么是架构? 从单词上看:设计是Software Design,架构是Software Architecture;分别对应的作者是:Designer和Architect:…
简介 前面我们在学习 Java Spring Boot Mybatis-Plus 的简单使用的时候,是否发现我们在构造查询的时候,基本都是简单的 where 语句的查询,而且也不能去选择字段输出,没关系,Mybatis-Plus 为我们准备了应对方案,那就是 Wrapper 构造器。 总的来说,常用的条件构造器有两类,一类是用于查询的条件构造器-…
介绍 应用程序编程接口(API)在现代软件开发中扮演着至关重要的角色,它们实现了不同系统之间的通信与交互。Java作为其中最流行的编程语言之一,为API开发提供了一个强大而灵活的平台。本文将深入探讨在Java中设计有效API的原则,并着重介绍RESTful设计原则、版本控制策略以及文档实践。 Java中的RESTful API原则…