
每天一个知识点
写代码的小清新
当风起时,唯有努力生存
展开
-
java1.8 最全stream集合demo
/** * @PACKAGE_NAME: com.ewaytek.edf.web.controllers.jdk1_8demo * @USER:小清新 * @date: 2021年02月02日 13:34 * @PROJECT_NAME: CGCP **/import java.util.*;import java.util.stream.Collectors;import static java.util.stream.Collectors.toList;public class原创 2021-02-02 17:05:49 · 281 阅读 · 1 评论 -
springboot利用aop生成操作日志
1.知识点通知(Advice)通知描述了切面要完成的工作以及何时执行。比如我们的日志切面需要记录每个接口调用时长,就需要在接口调用前后分别记录当前时间,再取差值。前置通知(Before):在目标方法调用前调用通知功能;后置通知(After):在目标方法调用之后调用通知功能,不关心方法的返回结果;返回通知(AfterReturning):在目标方法成功执行之后调用通知功能;异常通知(AfterThrowing):在目标方法抛出异常后调用通知功能;环绕通知(Around):通知包裹了目标方法,在目原创 2020-12-24 14:28:31 · 235 阅读 · 0 评论 -
springboot 事务应用
Spring 提供一个 @EnableTranscationManagement 注解在配置类上来开启声明式事务的支持。使用了 @EnableTranscationManagement 后,Spring 容器会自动扫描注解 @Transactional 的方法与类。@EnableTranscationManagement 的使用方式如下:@Configuration@EnableTranscationManagementpublic class AppConfig{}springboot具体应用原创 2021-01-05 16:58:07 · 169 阅读 · 0 评论 -
java list做为参数传递返回为null的情况
java 函数中参数传递分为值传递和引用值传递 当list作为参数传递时 普通情况将堆中地址进行传递 单list为null时堆中不存在地址值导致返回的list为null如图所示:1为list值为null路径2为new list路径...原创 2021-06-29 13:28:26 · 1898 阅读 · 0 评论 -
java设计模式之责任链模式(过滤器模式)
责任链概念:使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。项目中实际应用场景:当一条数据需要经过不同接口进行处理,利用责任链模式可进行解耦灵活添加不同接口。例如 oa中请假 张三请假天数不同需要经过不同领导审批。下面demo以为一张考卷添加不同类型试题为demo...原创 2021-03-22 14:06:50 · 473 阅读 · 0 评论 -
mysql的基本认识
一、mysql创建索引的方式1.创建表时创建索引2.使用alert table add 方式添加索引二、mysql有哪几种索引1.普通索引 用来加速数据查询速度而建立的索引。多建立在经常查询的字段上和经常用于排序的字段上 创建方式:alert table add index index_name(column) 2.主键索引 1.主键索引不可以为空 2.一张表中只能有一个主键索引 3.主键索引中的值不能重复 4.主键索引不可以做外键**主键索引和唯一索引的区别:主键索引为一种约束和原创 2021-10-14 16:20:52 · 162 阅读 · 0 评论 -
java 通过string对堆栈详解
java 内存结构1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.一条指令分为 操作+地址在执行一条指令的时候,先把指令存内存取到DR,然后再取到IR,然后再交给指令译码器来转换指令,再向操作控制器发出对应的信号为了保证程序的顺利执行,所以才 需要PC来保存 下一条指令的地址,由于大部分指令地址都是连续的,所以+1即可2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3原创 2021-02-22 10:41:18 · 876 阅读 · 0 评论 -
二叉树与红黑树
二叉树的形成二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成二叉树特点由二叉树定义以及图示分析得出二叉树有以下特点:1)每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。2)左子树和右子树是有顺序的,次序不能任意颠倒。3)即使树中某结点只有一棵子树,也要区分它是左子树还是右子树3.3 二叉树性质1)在二叉树的第i层上最多有2i-1 个节点 。(i>=1)2)二叉树中如果深度为k原创 2021-09-13 13:42:43 · 3023 阅读 · 1 评论 -
ReentrantLock
ReentrantLock二、过程1.非公平锁过程2.公平锁过程# 一、AQS(AbstractQueuedSynchronizer)当获得锁的线程需要等待某个条件时,会进入 condition 的等待队列,等待队列可以有多个。当 condition 条件满足时,线程会从等待队列重新进入同步队列进行获取锁的竞争。ReentrantLock 就是基于 AQS 实现的,如下图所示,ReentrantLock 内部有公平锁和⾮公平锁两种实现,差别就在于新来的线程是否⽐已经在同步队列中的等待线程更早获原创 2021-09-06 14:25:05 · 123 阅读 · 0 评论 -
synchronize、volatile与lock区别
Synchroniezd、volatile与lock区别一、Synchroniezd1.使用场景2.锁升级2.特性二、Volatile1.使用场景2.如何保证安全性3.与Synchronize的区别三、与Lock区别一、Synchroniezdjvm中对象放在堆内存中的,对象大致可以分为三个部分,分别是对象头,实例变量和填充字节对象头,主要包括两部分1. Mark Word (标记字段),2.Klass Pointer(类型指针)。Klass Point 是对象指向它的类元数据的指针,虚拟机通过这个原创 2021-09-03 17:01:52 · 409 阅读 · 0 评论 -
理解ArrayList和linkedList
文章目录一、使用场景二、ArrayList初始化过程三、arrayList和linkedList区别1.arrayList增删慢原因2.linkedList增删快原因3.linkedList查询慢原因3.ArrayList是否适合做队列一、使用场景插入数量较多使用linkedList 查询使用ArrayList 保证线程安全使用Vector二、ArrayList初始化过程 1.7之前ArrayList默认长度为10,1.7之后在调取add方法时才将长度初始化为10 扩容规则 length+le原创 2021-09-02 14:12:39 · 259 阅读 · 0 评论 -
搞懂HashTable与ConcurrentHashMap
搞懂HashTable与ConcurrentHashMap前言一、如何处理HashMap在多线程中的安全问题二、如何实现线程安全1.HashTable2.ConcurrentHashMap3.Collections.synchronizedMap(Map)三、HashTable与ConcurrentHashMap get与put过程1.HashTable的get:2.HashTable的put:3.ConcurrentHashMap的get:4.ConcurrentHashMap的put:四、1.8进行了什原创 2021-09-01 15:43:47 · 410 阅读 · 0 评论 -
彻底搞懂HashMap
彻底搞懂HashMap提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录彻底搞懂HashMap一、HashMap结构二、扩容1.扩容原因2.扩容条件3.扩容方法三、插入1.插入方法2.尾插原因三、多线程中使用hashMap四、为什么重写equals方法要重写hashCode结尾一、HashMap结构 数组加链表key通过hashCode得到数组位置,因为哈希本身存在概率性,哈希值相同的值会插入到相同的数组索引下形成链表二、扩容1.扩容原因 因为数组长度是有限的原创 2021-08-31 11:27:18 · 483 阅读 · 0 评论