Java
文章平均质量分 70
来,喝一杯卡布奇诺
Mr.敦的私房菜
95后程序猿,
个人摄影剪辑师
展开
-
lombok详解
val和var都表示定义一个变量,并且回进行类型推导@NoNull用来指定某个方法入参不能为null。会抛异常:lombok作用于编译期,此代码编译后的效果:@Cleanup自动帮我们清理资源,比如InputStream、OutputStream,会自动的调用close方法。编译后生成代码:可以使用@Cleanup(value=“指定的方法”),调用其他的方法,默认是close由Lombok重写toString()方法编译后格式为:@Getter、@Setter由Lombok针原创 2022-11-26 18:57:06 · 1247 阅读 · 2 评论 -
云IDE测试案例
(3)这里我发现此云IDE对Java的代码提示不是太好,Java 的扩展插件安装后,仍然不会自动导包,我另外安装Auto Import插件仍然不行,大家可以自己尝试,如果解决,可以在评论区说说解决方法。这里尝试一下CSDN最近推出的云IDE产品,它每个月提供5000分钟的免费时常,大家可以尝试体验下,云IDE有它自己的便携性,但大范围的使用还是有很多的不足,可以尝尝鲜。目前流行技术是云原生,目的是使用的技术最终都要上云,那当然就少不了云IDE的身影,云IDE有很多,例如:gitpod、github1s。原创 2022-11-03 11:16:59 · 305 阅读 · 0 评论 -
Acitivit的心路历程:Activiti6.0自定义任意跳转命令【包含回退】
此文章是基于activiti6.0的,以springboot为基础环境进行整合原创 2022-06-06 16:40:16 · 1061 阅读 · 2 评论 -
【图解】ThreadLocal底层实现原理
1、ThreadLocal的底层原理图说明:Thread中有threadLocals成员变量,threadLocal会在threadlocal首次set时进行赋值【这会在非main线程中复现,主线程启动即会进行赋值】,ThreadLocalMap是ThreadLocal的静态内部类,在set时,会将我们新建threadLocal引用地址作为key,以此封装成一个Entry<ThreadLocal<?>,Object>对象,可以存在多个不同的threadlocal,如果set的引用原创 2022-04-28 11:58:01 · 1984 阅读 · 0 评论 -
【图解】面试题:ConcurrentHashMap是如何保证线程安全的
注意:JDK1.7与JDK1.8中的ConcurrentHashMap主要延续HashMap的设计与思想,是在其基础上进行的相应优化1.JDK1.7中的底层实现原理(1)JDK1.7ConcurrentHashMap的底层结构,延续HashMap的底层设计,采用数组+链表(2)不同的是:ConcurrentHashMap中的数组被分为大数组和小数组,大数组是Segment,小数组是HashEntrySegment本身是基于ReentrantLock可重入锁来实现加锁和释放锁,这样就能保证多线程同.原创 2022-04-25 19:19:29 · 2980 阅读 · 0 评论 -
【图解】面试题:为什么HashMap会产生死循环
注意:HashMap死循环只会发生在JDK1.7,根本原因是由采用头插法所致(1)JDK1.7中HashMap采用底层结构是数组+链表,在key值发生hash碰撞后,元素entry会采用头节点的插入方式,插入到链表的头部(2)数组长度到达负载临界值触发数组扩容,由于是头插法,原来链表的顺序是A->B->C,扩容后变为C->B->A(3)假设同时有线程T1与T2对数组进行扩容T1、T2同时指向A节点,那么T1.next与T2.next同时指向B节点。假设T2让出时间.原创 2022-04-25 11:33:06 · 1043 阅读 · 0 评论 -
MultiValueMap中put()与addAll()的区别
MultiValueMap的特点是一个key键可以对应多个键值,但有一点困扰了我,就是MultiValueMap同时提供了put(key,List<>)与addAll(key,List<>)方法,它们有什么区别呢?首先来看下java文档put() /** * Associates the specified value with the specified key in this map * (optional operation). If the原创 2022-03-09 22:24:53 · 954 阅读 · 1 评论 -
2021开发行业分析报告
这是jetbrains公司每年推出的行业报告,相当权威主要内容:通过三万多名工程师的来统计出过去一年各种语言的欢迎程度可以查看每一个地区的不同语言受欢迎程度,具体可查看连接2021开发者生态系统现状...原创 2022-02-17 22:25:51 · 292 阅读 · 0 评论 -
synchronized Lock(本地同步)锁的8种情况
Lock(本地同步)锁的8种情况总结与说明: * 题目: * 1.标准访问,请问是先打印邮件还是短信 Email * 2.email方法新增暂停4秒钟,请问是先打印邮件还是短信 Email * 3.新增普通的hello方法,请问先打印邮件还是hello hello * 4.两部手机,请问先打印邮件还是短信 SMS * 5.两个静态同步方法,1部手机,请问先打印邮件还是短信 Email * 6.两个静态同步方法,2部手机,请问先打印邮件还是短信 Email原创 2021-09-23 21:32:06 · 652 阅读 · 0 评论 -
Activiti心路历程:Activiti6.0获取当前节点上面的所有用户任务节点id
需求:收集流程当前节点前的所有用户任务流程图:private static BpmnModel getBpmnModel(String processDefinitionId) { ProcessEngine processEngine = getProcessEngine(); RepositoryService repositoryService = processEngine.getRepositoryService(); return repos原创 2021-09-17 16:03:09 · 2605 阅读 · 7 评论 -
Activit的心路历程:Activiti6.0获取当前节点的下一节点【可能存在多个】的nodeId
在我的开发任务中,突然给我提出了一个待办任务需要获取当前任务节点上以任务节点的表单信息,刚开始搞得我有点措手不及,后来仔细是靠后,灵感一下,直接操作流程的bpmn信息就可以获取到节点信息嘛,顺着这个思路,我整理出了自己的思路:(1)将节点大体分为两类,一类是网关节点,另外一类就是用户任务节点,使用List集合,将网关与用户任务进行分类(2)获取上一节点,我们就需要从bpmn的连线信息入手,这次我们获取的是UserTask节点的出线,固定连线的sourceRef,辨别节点targtaetRef的类型,当是原创 2020-11-13 14:56:40 · 3077 阅读 · 0 评论 -
Activit的心路历程:Activiti6.0获取当前节点的上一节点【可能存在多个】的nodeId
在我的开发任务中,突然给我提出了一个待办任务需要获取当前任务节点上以任务节点的表单信息,刚开始搞得我有点措手不及,后来仔细是靠后,灵感一下,直接操作流程的bpmn信息就可以获取到节点信息嘛,顺着这个思路,我整理出了自己的思路:(1)将节点大体分为两类,一类是网关节点,另外一类就是用户任务节点,使用List集合,将网关与用户任务进行分类(2)获取上一节点,我们就需要从bpmn的连线信息入手,固定连线的targtaetRef,辨别sourceRef节点的类型,当是用户任务时,放进 List frontNod原创 2020-11-09 19:04:36 · 3180 阅读 · 2 评论 -
Activiti的心路历程:Activiti使用Java代码创建Bpmn流程信息
java代码package com.activiti;import org.activiti.bpmn.BpmnAutoLayout;import org.activiti.bpmn.converter.BpmnXMLConverter;import org.activiti.bpmn.model.*;import org.activiti.bpmn.model.Process;import org.junit.jupiter.api.Test;import org.springframew原创 2020-11-09 15:56:02 · 4390 阅读 · 13 评论 -
Activiti的心路历程:Activiti的流程实例【ProcessInstance】与执行实例【Execution】的那点事
最近,我在做流程引擎Activiti相关的东西,刚开始时的一个知识点困扰了我许久,那就是Activiti的ProcessInstance与Execution的区别,这是一个Activiti的难点,能够懂得这个,Activiti也就入门大半了,下面,我就细致的讲解一下他们的区别。(1)首先,我们来看一张我总结的图片(这个图片能够理解,那就不用再细致的看了)这张图片就细致的说明了Activiti中流程实例ProcessInstance与Execution的区别,ProcessInstance与Execut原创 2020-10-19 22:16:20 · 1742 阅读 · 1 评论 -
Java8 面试基础知识宝典【主要以问题的形式记录,SE,EE,锁机制,框架,数据库等】
目录JavaSE 8基础语法 9Q1:简单说说Java有哪些数据类型Q2:float number=3.4;有没有问题?为什么?默认类型【int、double】Q3:字符串拼接的方式以及效率?Q4:简述final,finally和finalize区别Q5:==和equals有什么区别?equals和hashCode有什么联系?Q6:Array和ArrayList的区别?Q7:&和&&的区别?Q8:简述JDK8的新特性Q9:Stream流了解吗?Q10:String,StringBuf原创 2020-10-13 23:02:03 · 3754 阅读 · 1 评论 -
FastJson解析Json,封装JavaBean对象
获取到前端的Json,后台对应封装JavaBean对象,对其解析赋值获取到前端的json,对其进行分析1、获取最外层前端json对应得JavaBean(1)未分析格式的json串(2)初步格式化json,获取到最外层的JavaBean与其对应的字段名(3)最外层Json串对应得JavaBean实体类2、仔细刨析每一层中共性的细节,发现properties这个字段也能够封装成一个实体类(1)properties字段对应的json(2)Properties对应的JavaBean对象获取到前端的json,对其进原创 2020-09-30 17:34:13 · 857 阅读 · 0 评论 -
GC调优-XX:PrintGCDetails深度解析
查看程序运行GC的运行情况资源充足的GC情况新生代老年代元空间因为现在资源充足没有发生GC*案例:将JVM初始化内存与最大内存(防止内存抖动,反复GC)调至10m,new一个50m的数组对象,发生OOMJVM参数配置查看GC情况GC参数解读FullGC参数解读规律:【名称】【GC前内存占用】(->)【GC后内存占用】(该区内存总大小)...原创 2020-09-01 22:38:51 · 3700 阅读 · 0 评论 -
Java结构体系
原创 2020-08-21 23:01:51 · 106 阅读 · 0 评论 -
前端传递的json格式与SpringMVC接收实体类的对应关系
这篇文章主要是帮助刚刚入行的猿猿尽快适应Restful风格的搬砖生活@RequestBody注解基本介绍:@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。原创 2020-08-21 22:58:26 · 2567 阅读 · 0 评论 -
Java死锁编码及定位分析
死锁死锁是什么大学课程中的四个要素:(1)互斥(2)不可抢占(3)循环等待(4)请求保持也就是下图所描述产生死锁的主要原因(1)系统资源不足(2)进程运行推进的顺序不合适(3)资源分配不当【也就是不满足四要素】产生死锁代码package com.atguigu.test_deadlock;import java.util.concurrent.TimeUnit;class HoldLock implements Runnable{ private String lock原创 2020-08-20 23:28:47 · 160 阅读 · 0 评论 -
Acticiti流程引擎在已知当前流程定义id的情况下获取当前流程的所有信息(包括:节点和连线)
Acticiti流程引擎在已知当前流程定义id的情况下获取当前流程的所有信息(包括:节点和连线)这里我们已知流程已经部署,我的需求是获取当前流程的所有任务节点,我使用instanceof关键字来进行匹配private List<UserTask> getProcessUserTasks(String processInstanceId) { ProcessInstance processInstance = runtimeService.createProcessInstan原创 2020-08-20 19:41:57 · 505 阅读 · 0 评论 -
【Activiti6.0】SpringBoot整合activiti官方设计器【中文汉化】
环境搭建【这里直接讲解自定义流程】集成 Activiti Modeler下载源码我这里选用的是 Activiti 5.23.0 版本的页面,下载 zip,解压Activiti 5.23.0 源码pom依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta原创 2020-07-24 21:40:29 · 2337 阅读 · 0 评论 -
在SpringBoot项目中怎样引入.yml文件中的设置
SpringBoot中获取application.yml文件内容原始方式pro.load()与 pro.getProperty()配合的方式@Value注解方式@ConfigurationProperties(prefix = "前缀内容")与@EnableConfigurationProperties({映射类.class})配合的方式原始方式pro.load()与 pro.getProperty()配合的方式 构造器 Properties pro=new Properties(); 读原创 2020-07-23 20:44:58 · 3542 阅读 · 0 评论