![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
zmm0420
这个作者很懒,什么都没留下…
展开
-
Threadlocal学习及内存泄漏原因和解决方案
ThreadLocalMap原创 2022-07-22 17:53:45 · 391 阅读 · 0 评论 -
正则^[a-zA-Z\d]+$
^[a-zA-Z\d]+$/中:1、^:表示字符串开始。2、[a-zA-Z\d]+:分为几部分(1)a-z:表示小写字母a到z中任一个。(2)A-Z:表示大写字母A到Z中任一个。(3)\d:表示任一数字。(4)[a-zA-Z\d]:表示a-zA-Z\d集合内的字符。(5)[a-zA-Z\d]+:表示a-zA-Z\d集合内的字符,一个或更多个。3、[a-zA-Z\d]+ 总的意思是:小写字母a到z 大写字母A到Z 数字 中的一个或多个4、$:表示字符串末尾...原创 2022-04-28 20:57:24 · 2351 阅读 · 0 评论 -
SpringBoot实现文件在线预览
官网及文档地址:https://kkfileview.keking.cn项目文档(Project documentation) 详细wiki文档:https://gitee.com/kekingcn/file-online-preview/wikis/pages 中文文档:https://gitee.com/kekingcn/file-online-preview/blob/master/README.md English document:https://gite..原创 2021-12-11 13:58:15 · 746 阅读 · 0 评论 -
volatile与内存可见性
一、内存可见性:内存可见性是指当一个线程修改了某个变量的值,其它线程总是能知道这个变量变化。也就是说,如果线程 A 修改了共享变量 V 的值,那么线程 B 在使用 V 的值时,能立即读到 V 的最新值。二、可见性问题的解决方案:我们如何保证多线程下共享变量的可见性呢?也就是当一个线程修改了某个值后,对其他线程是可见的。这里有两种方案:加锁和使用 volatile 关键字。1 为什么加锁后就保证了变量的内存可见性了?因为当一个线程进入 synchronizer 代码块后,线程获取...原创 2021-11-29 18:07:39 · 388 阅读 · 0 评论 -
quartz的分布式调度
https://segmentfault.com/a/1190000015492260原创 2021-11-25 19:16:01 · 832 阅读 · 0 评论 -
学习 JAVA 中的 OPTIONAL
理解、学习与使用 Java 中的 Optional - 张伯雨 - 博客园理解、学习与使用 Java 中的 Optional - OSCHINA - 中文开源技术交流社区原创 2021-11-24 15:51:46 · 56 阅读 · 0 评论 -
基于注解的数据脱敏
利用 JSON 序列化1 添加依赖默认的情况下,如果当前项目已经添加了 spring-web 包或者 spring-boot-starter-web包。因为这些 jar 包已经集成了 jackson 相关包,因此无需重复依赖。如果当前项目没有 jackson 包,可以通过如下方式进行添加相关依赖包。<!--jackson依赖--><dependency> <groupId>com.fasterxml.jackson.core&l...原创 2021-10-28 21:31:40 · 738 阅读 · 0 评论 -
Lambda表达式
Lambda表达式的语法基本语法:(parameters) -> expression或(parameters) ->{ statements; }// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y // 4. 接收2个int型整数,返回他们的和 (int x,原创 2021-10-09 15:59:30 · 62 阅读 · 0 评论 -
使用synchronized的线程安全问题
先来回顾一下synchronized关键字的使用。synchronized关键字解决并发问题时通常有三种使用方式: 同步普通方法,锁的是当前对象; 同步静态方法,锁的是当前Class对象; 同步块,锁的是()中的对象; 错误实例:public class SyncTest implements Runnable { private Integer count = 0; @Override public void run() {..原创 2021-07-30 15:55:08 · 144 阅读 · 0 评论 -
BigDecimal去掉小数点后无用的0
BigDecimal c=new BigDecimal(10.000000); System.out.println(c.stripTrailingZeros().toPlainString());打印结果为:10原创 2021-07-02 11:05:56 · 300 阅读 · 0 评论 -
JAVA实现FTP客户端的上传、下载、删除
已实践验证,没有问题而且很好用!参考:https://blog.csdn.net/ljj2312/article/details/78968037原创 2021-06-28 10:43:28 · 79 阅读 · 0 评论 -
记录信息变更日志
参考:https://www.cnblogs.com/timeflying/p/13740577.html原创 2021-06-03 11:28:44 · 366 阅读 · 0 评论 -
理解基于CAS机制的自旋锁
1. 什么是自旋锁自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务,使用这种锁会造成 busy-waiting。2.Java 如何实现自旋锁?先看一个实现自旋锁的例子,java.util.concurrent 包里提供了很多面向并发编程的类。使用这些类在多核 CPU 的机器上会有比较好的性能。主要原因是这些类里面大多使用 (失败原创 2021-05-30 22:13:49 · 401 阅读 · 0 评论 -
spring中的观察者模式学习
spring中的事件驱动模型也叫作发布订阅模式,是观察者模式的一个典型的应用。事件机制的实现需要三个部分,事件源,事件,事件监听器。1.ApplicationEvent2.ApplicationListener3.ApplicationContextApplicationEvent就相当于事件,ApplicationListener相当于事件监听器,这里的事件源说的就是applicaitonContext.ApplicationContext是spring中的全局容器,...原创 2021-04-28 11:02:20 · 70 阅读 · 0 评论 -
JMeter进行带json数据的post请求
JMeter进行带json数据的post请求时,需要设置HTTP信息头管理器将Content-Type修改为:application/json 否则会报415错误。JMeter的使用:1、创建线程组2、设置Http信息头管理器或HTTP请求默认值3、设置HTTP请求4、添加察看结果树5、执行参考:https://www.cnblogs.com/testway/p/9448851.htmlhttps://blog.csdn.net/nyist327/ar...原创 2021-04-21 15:34:58 · 1467 阅读 · 0 评论 -
@Transactional注解的失效场景学习
Transactional注解的失效场景学习https://zhuanlan.zhihu.com/p/145669970https://mp.weixin.qq.com/s/ns7tjZ3dLSYARY47mqR1kw原创 2021-04-14 18:09:33 · 57 阅读 · 0 评论 -
死锁学习
死锁,死锁的四个必要条件以及处理策略https://blog.csdn.net/wljliujuan/article/details/79614019排查方式:1、定位进程2、定位线程3、使用jstack pid 命令查看线程堆栈信息如何使用jstack分析线程状态https://www.cnblogs.com/wuchanming/p/7766994.html...原创 2021-04-13 16:17:25 · 62 阅读 · 0 评论 -
Mysql索引结构之B+树学习
1、MySQL索引-B+树(看完你就明白了)http://www.liuzk.com/410.html关键信息:2、彻底搞懂系列B-树、B+树、B-树、B*树https://blog.csdn.net/chai471793/article/details/99563704原创 2021-04-01 11:23:21 · 71 阅读 · 0 评论 -
java实现阶乘n!=1*2*3*4...*n
使用递归public class Recursion { public static void main(String[] args) { System.out.println(factorial(20L)); } public static Long factorial(Long n) { //使用Long 当n 大于20时,计算结果为负数 if(n < 0 || n==0 || n > 31) { return 0L; }else i原创 2021-03-29 20:29:17 · 1859 阅读 · 0 评论 -
java实现文件拷贝的三种方式
package com.zmm.copy;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.nio.channels.FileChannel;import java.nio.file...原创 2021-03-28 12:48:37 · 146 阅读 · 0 评论 -
使用jdk的jlink工具生成精简jre
用java写了一个程序,想要打包成exe,奈何找到的方法都需要配套jre环境,让用户自己安装好像不太友好,软件附带又太大了,一个jre就200M,而程序又是个小程序,感觉没必要。找到说精简jre的,但是自己手动精简太麻烦了,而且如果以后写程序都这么手动精简一遍,这谁受得了。作为程序员,还是想找到一种一劳永逸并且自动化且简便的方法。在知乎的问题评论里发现有人说jlink,于是查了一下,但是没有详细资料,又换英文搜索了一下, 找到了个详细介绍的。jdk9之前会附带一个jre,之后就不附带了,如果需要jr原创 2021-03-09 18:48:47 · 1239 阅读 · 0 评论 -
可重入锁ReentrantLock
通过一个故事理解可重入锁的机制https://www.cnblogs.com/gxyandwmm/p/9387833.htmlhttps://blog.csdn.net/qq_39101581/article/details/82144499https://baijiahao.baidu.com/s?id=1648624077736116382&wfr=spider&for=pchttps://www.cnblogs.com/takumicx/p...原创 2021-03-09 16:30:08 · 50 阅读 · 0 评论 -
mock多次调用返回不同结果
mock 连续多次调用返回不同结果实现方式Mockito.when(methodCall).thenReturn(1x).thenReturn(2x).thenReturn(nx)//示例Mockito.when(userService.checkUserNickName(Mockito.anyString())).thenReturn(Boolean.TRUE).thenReturn(Boolean.TRUE);原创 2021-01-05 10:07:11 · 9901 阅读 · 2 评论 -
Java 生成随机数的 5 种方式
1. Math.random() 静态方法2. java.util.Random 工具类3. java.util.concurrent.ThreadLocalRandom 工具类4. java.Security.SecureRandom5. 随机字符串可以使用 Apache Commons-Lang 包中的RandomStringUtils类参考:https://mp.weixin.qq.com/s/0weogCvsyIjSCRyAFhHoHg...原创 2020-12-15 12:30:36 · 91 阅读 · 0 评论 -
解决构造器方式注入依赖的Mock问题
通常我们注入依赖时,是直接将要依赖的对象使用@autowired注解注入;但是,有时使用高级写法:使用构造器方式注入依赖bean时(spring官方推荐),在编写单元测试进行MOCK时,需要添加如下代码:@Before public void setup(){ MockitoAnnotations.initMocks(this);//这句话执行以后,依赖自动注入到Service中 }否则,比如你的maper是无法注入到你的servic原创 2020-11-20 17:19:35 · 1334 阅读 · 0 评论 -
Java transient关键字
常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输,这些信息对应的变量就可以加上transient关键字。换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化。总之,java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transien...原创 2020-10-17 15:05:54 · 58 阅读 · 0 评论 -
Encoded password does not look like BCrypt
Encoded password does not look like BCrypt报这个错,检查下是不是数据库的加密的密码弄错了。前端加密后的密码传到后端解密是正确的,就是执行到matches方法时候报这个错。最终检查到是数据库存的加密密码错的,从别处拷贝过来时候少了前面几个字符。我在这个点上踩过坑。...原创 2020-09-27 16:44:00 · 332 阅读 · 0 评论 -
如何减少if -else使得代码更加优雅
https://mp.weixin.qq.com/s?__biz=MzI2MTIzMzY3Mw==&mid=2247495831&idx=3&sn=3437286ad39b500b250116822fae15a4&chksm=ea5f3df1dd28b4e71b6c8afc84f686f98b7b8ff8563d7b36346f99b6ca60c0c3fa46f7a788fd&mpshare=1&scene=1&srcid=0926eeeiEg4yC.原创 2020-09-26 23:24:41 · 80 阅读 · 0 评论 -
单例模式的5种写法
原创 2020-09-20 23:23:22 · 76 阅读 · 0 评论 -
Spring默认的BeanName生成器
spring-beans包中有个接口BeanNameGenerator,如果你查看这个接口的实现类就会看到有两个:1、AnnotationBeanNameGenerator 【这个才是spring默认的beanName生成器,也就是看你使用注解配的Name】2、DefaultBeanNameGenerator另:仔细看代码会找到一段首字母大写转小写的代码Introspecto...原创 2020-04-03 15:51:30 · 340 阅读 · 0 评论 -
报错RequestParam.value() was empty on parameter 1
今天在对项目使用proguard混淆代码后,启动服务报错RequestParam.value() was empty on parameter 1很奇怪,混淆前可以正常启动。最后定位到是有个接口的参数使用了@RequestParam 但没有设置value值:错误示例:@PostMapping(value = "url")public ResponseData create(@...原创 2020-03-31 18:25:14 · 8729 阅读 · 0 评论 -
List和数组互转
一、List 转 数组List<String> list = new ArrayList<String>(); list.add("a1"); list.add("a2"); String[] array= list.toArray(new String[0]); 此方法支持任何类型的对象,不限于示例中的String类型。如果你查看springMVC的...原创 2020-03-27 11:28:08 · 72 阅读 · 0 评论 -
Spring扫描出指定包下的所有类名
https://www.jianshu.com/p/22c939f97f1e无论是什么框架,包括Spring, 完成这个功能底层都是用的ClassLoader.getResources()或ClassLoader.getSystemResources()方法实现的,即先找出指定classpath下的"资源",可能是文件也可能是jar包,然后通过文件I/O读取jar, 把每一个.class文件名...原创 2019-12-30 11:08:45 · 2221 阅读 · 0 评论 -
一篇spring事务的7种传播行为讲的很好的文章
https://blog.csdn.net/weixin_39625809/article/details/80707695原创 2019-12-25 17:11:03 · 146 阅读 · 0 评论 -
构造函数、构造代码块
构造函数的作用:创建对象时,给对象的部分属性或quanbu原创 2014-10-20 16:55:44 · 438 阅读 · 0 评论 -
static关键字、静态代码块
static关键字的的出现主要是解决:资源浪费问题(内存浪费)原创 2014-10-21 00:28:22 · 370 阅读 · 0 评论 -
反射知识整理(一)
重点为红色字体部分原创 2015-12-17 21:31:52 · 320 阅读 · 0 评论 -
使用JPA的建立一对多关系
1、persistence.xml文件数据库使用oracle <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/原创 2015-12-03 15:06:39 · 1232 阅读 · 0 评论 -
关于Eclipse创建web项目后 出现jax-ws webservice
问题很简单:你看到有是应为你处在web模式,工具的右上角当前选中的是web。想看到如下:,只需要选择java模式即可,工具右上角选中java原创 2016-02-20 11:46:38 · 5204 阅读 · 0 评论 -
Eclipse中项目Project Explorer视图与Package Explorer视图
问题是这样的:自己在本地环境搭建了个maven项目,然后上传到SVN服务器上去。然后从SVN上下载项目,进行测试svn上代码是否导入IDE工具正常。结果看,总是别扭:后来才知道是视图的缘故:如果你没有这个视图,这么找:window---》show view--->other---->java---->Package Explorer原创 2016-05-05 21:24:01 · 20906 阅读 · 0 评论