随笔分类 - java
摘要:
自定义Mybatis-plus插件(限制最大查询数量) 需求背景 一次查询如果结果返回太多(1万或更多),往往会导致系统性能下降,有时更会内存不足,影响系统稳定性,故需要做限制。 解决思路 1.经分析最后决定,应限制一次查询返回的最大结果数量不应该超出1万,对于一次返回结果大于限制的时候应该抛出
阅读全文

摘要:一次因生产事故与chatGpt的对话 前言:生产出现了一个内存溢出的事故,记录错误信息。错误日志如下 org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is j
阅读全文
摘要:温故知新 线程之Runnable与Callable接口的本质区别 预备知识:Java中的线程对象是Thread,新建线程也只有通过创建Thread对象的实例来创建。 先说结论 1 Runnable没有返回值的FunctionalInterface(jdk 1.8概念)接口,相反Callable是有返
阅读全文
摘要:
JAVA异步编程之Callbacks与Futures模型 一:Callbacks模型 该模型的异步方法,在异步任务完成之后调用,主线程没有异步线程的结果。经典模型如Swing’s EventListener模型(如果不了解可参考html如何实现button的click方法) 1.1:示例 pub
阅读全文

摘要:源码解读之 RedissonLock.lock()方法 demo使用 private static void lock() { //1 创建redission的config对象并配置redis服务器(此处使用singleServer) Config config = new Config(); co
阅读全文
摘要:一:需求背景 在业务开发中经常会有这个一个场景,A(业务表)表中会记录数据的创建人,通常我们会用userId字段记录该数据的创建者,但数据的使用方会要求展示该数据的创建者姓名,故我们会关联用户表拿该用户的姓名。还有一些枚举值的含义也要展示给前端。导致原本一个单表的sql就要写成多表的关联sql,以及
阅读全文
摘要:Redission锁的设计原理和应用 一:基本使用方法 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.8.2</version> </dependency> @Tes
阅读全文
摘要:前言:很久没有写排序的方法,最近面试发现回答这类问题有点生疏,特此整理并复习一下相关知识。 一:定义实体对象Cell public class Cell implements Comparable<Cell> { private int x; private int y; private int z
阅读全文
摘要:简介:岁月磨平了人的棱角,让我们不敢轻易的去放手,即使它在你心中并不那么重要,你依旧害怕失去它,不是舍不得,是内心的迷茫。 一 : 创建HashMap HashMap<Object, Object> hashMap = new HashMap<>(); : 源码1 解读:初始化this.loadFa
阅读全文
摘要:cron表达式详解 Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: (1) Seconds Minutes Hours DayofMonth Month DayofWeek Year (2)Seconds Minutes Ho
阅读全文
摘要:一:安装redis $ yum -y install gcc $ yum -y install gcc-c++ $ wget http://download.redis.io/releases/redis-5.0.4.tar.gz $ tar -zvxf redis-5.0.4.tar.gz $ c
阅读全文
摘要:一:Redis的事务 Redis通过MULTI, EXEC, DISCARD 和 WATCH 命令来实现事务的支持,通过它们我们可以一步操作执行一组命令,而且确保了两个重要的特征如下 1.所有的命令在一个事务中可确保顺序执行,切不会被其它线程打断(插入其它指令)。 2.确保所有的命令要么全部执行要么
阅读全文
摘要:首先先看一下定义 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参
阅读全文
摘要:概念:死锁是一种在多线程协作时永久堵塞的一种状态.(Deadlock describes a situation where two or more threads are blocked forever)。 场景举例一:A和B是好伙伴,他们见面是通常先向对方鞠躬,然后保持鞠躬的状态,等待对方回应自
阅读全文
摘要:前言:为很好的理解这些方法,你需要熟悉java8特性Lambda和方法引用的使用 一:简介 我们用集合的目的,往往不是简单的仅仅把数据保存哪里。而是要检索(遍历)或者去计算或统计....操作集合里面的数据。现假设我有一个实体对象Person如下,用于测试集合操作 public class Perso
阅读全文
摘要:前言 简介:RabbitMQ 是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 AMQP,即 Advanced Messag
阅读全文
摘要:前言:使用泛型的目的是利用Java编译机制,在编译过程中帮我们检测代码中不规范的有可能导致程序错误的代码。例如,我们都知道list容器可以持有任何类型的数据,所以我们可以把String类型和Integer等等同时可以放入同一个list容器中,但这种做法是极其危险的。在泛型机制中这种操作是编译不通过,
阅读全文
摘要:前言: 暂无 零:java -h 和很多linux命令一样,我们第一步先通过“java -h”命令查看java命令的使用语法,其输出如下 有图我们可知java有两种格式(对应两种功能)的使用方法, 功能一:执行一个class文件 功能二:执行一个jar文件 一:java [-options] -ja
阅读全文
摘要:一:Lambda 表达式 为什么使用 :使用 Lambda 表达式可以使代码变的更加简洁紧凑。 表达了什么?: 匿名内部类的新写法; 语法 :(parameters) -> expression 或 (parameters) ->{ statements; } parameters 对应接口的参数例
阅读全文
摘要:一:概念 作为单个逻辑单元执行一系列操作,要么完全执行,要么完全不执行。举例 我们需要向数据库插入3条数据(我们希望这三条数据要么全部插入成功,要么全部失败), 比如第一条数据插入成功,插入第二条数据失败(显然这已经不是一个完整的业务数据),那么第三条数据也无需执行。那么我们就可以用到事务了。 二:
阅读全文