Java
子敬c
good good study ! day day up!
展开
-
ThreadLocal模板
ThreadLocal模板原创 2022-08-12 09:08:21 · 163 阅读 · 1 评论 -
List<Dto>相互转换工具类
List相互转换工具类package com.xdd.common.core.util;import java.util.ArrayList;import java.util.List;import org.dozer.DozerBeanMapper;import org.dozer.Mapper;/** * @author cgd * @version 1.0 * @date 2020/12/9 13:53 */public class DtoEntityUtil {原创 2021-03-31 14:59:30 · 2170 阅读 · 0 评论 -
解决接口幂等性的最佳方式
解决接口幂等性的最佳方式什么是幂等性简而言之,多次提交只有一次生效,例:用户付款的时候点击付款应当只有一次生效。解决幂等性的方式原创 2021-02-05 18:18:33 · 421 阅读 · 0 评论 -
最简单的EsayExcel导入导出工具类
EsayExcel导出工具类1、首先引入EasyExcel工具包 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.6</version> </dependency>Exc原创 2020-08-13 16:30:06 · 950 阅读 · 0 评论 -
LRU-防止重复提交
LRU-防止重复提交1、这是一个封装类,拿来即用,首先引入依赖 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.4</version> </dependency原创 2020-07-27 21:33:21 · 174 阅读 · 0 评论 -
利用发射获取类的属性和值
Java利用发射获取类的属性和值1、通过实体类的getclass().getDeclaredFields()获取类的所有属性import com.sans.core.entity.SysUserEntity;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.lang.reflect.Field;@Data@AllArgsConstructor@No原创 2020-07-23 10:34:15 · 250 阅读 · 0 评论 -
BufferWriter写出csv文件
1、话不多说直接上代码import java.io.*;public class Demo1 { public static void main(String[] args) { File f = new File("D://aa.csv"); if (!f.exists()) { try { f.createNewFile(); } catch (IOException e) {原创 2020-07-15 15:12:39 · 574 阅读 · 0 评论 -
HuTool工具的入门使用(一)
HuTool工具的入门使用(一)1、首先我们新建一个springboot项目,引入hutool 的依赖<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --><dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version&原创 2020-07-13 21:01:35 · 23942 阅读 · 1 评论 -
两个线程,一个线程打印1~52,另一个线程打印字母A-Z,打印顺序为12A34B56C……5152Z
主要用到的juc 的Conditionimport java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class T { Lock lock = new ReentrantLock(); Condition aa = lock.newCondition(); Co原创 2020-07-02 11:19:05 · 508 阅读 · 0 评论 -
java笔试去除多余空格,统计字符出现个数
笔试题目:编写一个函数用于去除字符串中多余的空格比如字符串* “a b c c”(a,b间两个空格,b,c间三个空格),* 处理后字符串为"a b c c"(a,b之间和b,c之间只有一个空格),* 并分类输出个数(a:1, b:1, c:2);首先去除多余的空格需要用到正则表达式:String s = "a b b c d";s=s.replaceAll("[ ]+", " "); //s = s.replaceAll("\\s{2,}", " "); //上面两种正则都原创 2020-07-02 09:30:50 · 427 阅读 · 0 评论 -
一个简单的自旋锁
package spin;import java.util.concurrent.atomic.AtomicReference;public class spinDemo { AtomicReference<Thread> atomicReference = new AtomicReference<>(); //加锁 public void myLock(){ Thread thread = Thread.currentThread()原创 2020-05-13 15:20:28 · 504 阅读 · 4 评论 -
手写三种单例模式
话不多说直接上代码package tesetSingle;public class Test { public static void main(String[] args) { for (int i = 0; i < 3; i++) { new Thread(()->{ //Hungry.getInstance(); LazyMa原创 2020-05-13 14:14:08 · 445 阅读 · 0 评论 -
Synchronized和lock的区别
1、Synchronized 是关键字 lock是一个类2、Synchronized 无法获取锁的状态 lock可以通过lock.trylock()判断是否获取了锁。3、Synchronized 会自动释放锁,lock会手动释放锁,如果不释放锁会产生死锁。4、Synchronized可重入锁 非公平。lock 可重入锁 非公平(可以自己设置)。5、Synchronized 一个线程获取锁。其他线程都需等待。Lock 一个线程获取锁,不一定会一直等待下去...原创 2020-05-09 15:08:00 · 161 阅读 · 0 评论 -
Wait和Sleep的区别
1、来自不同的类wait 来自Objectsleep 来自Thread2、关于锁的释放wait会释放锁sleep 不会释放锁3、使用的范围不同wait 添加在同步代码块中sleep 可以在任何位置原创 2020-05-09 11:26:29 · 113 阅读 · 0 评论 -
Steam流排序去重
Steam流排序去重1、工作中我们经常会遇到排序去重问题,传统做法就是拿到数组遍历然后去重,现在我们可以使用Stream流来快速帮我们解决去重排序问题;class Student{ private Integer id; private String UserName; private Integer age; //get set省略 //equals ...原创 2020-04-20 15:17:09 · 3279 阅读 · 0 评论 -
并发编程之CountDownLaunch
并发变成之CountDownLaunch1、什么是CountDownLaunch我的理解就是比如一群人去开会,这每一个人就代表一个线程,只有当所有人到齐之后才能开会,这是就需要使用CountDownLaunch。2、先看一下不使用CountDownLaunch会带来的效果public static void main(String[] args) throws InterruptedExc...原创 2020-04-17 21:52:02 · 4031 阅读 · 1 评论 -
Map转XML
Map转XML1、话不多说,直接上代码。 public static String mapToXml(Map<String, Object> map, String encoding,Boolean isAttribute) { if (CollectionUtils.isEmpty(map)) { return ""; }...原创 2020-04-15 10:56:44 · 379 阅读 · 0 评论 -
冒泡排序
冒泡排序1、冒泡排序思想:冒泡排序我个人理解就是,相邻得两个元素两两比较,大得元素放后面,小的元素放在放前面,那么在不了解冒泡算法得时候可以先写如下代码 @org.junit.jupiter.api.Test void test4(){ //冒泡排序 int[] arr = {5,4,9,6,1,8}; for (int i ...原创 2020-03-21 10:43:16 · 151 阅读 · 0 评论 -
选择排序算法
快速排序算法1、快速排序算法,我的个人理解就是,首先找到数组中最小元素下标位置如下图。可以看出,最小元素为1,他的下标为4,然后跟第一个元素互换,实现代码如下。 int[] arr = {5,4,9,6,1,8}; int minPos =0; for (int i = 1; i < arr.length; i++) { if ...原创 2020-03-21 08:48:49 · 112 阅读 · 0 评论 -
fastjson 中JSONObject得常用使用方法
fastjson中JSONObject的常用使用方法1、导入需要的jar包<dependency> <groupId>net.oschina.zcx7878</groupId> <artifactId>fastdfs-client-java</artifactId> ...原创 2020-03-19 17:19:50 · 405 阅读 · 0 评论 -
多线程的生命周期
多线程的生命周期新建状态,当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值就绪状态,当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待调度运行运行状态,如果处于就绪状态的线程获得了CPU,开始执行run()方法的线程执行体,则该线程处于运行状态阻塞状态,当处于运行...原创 2019-12-25 13:57:27 · 114 阅读 · 0 评论 -
快速将List和HashMap变成线程安全
快速将List和HashMap变成线程安全众所周知,HashMap和List的线程是不安全的,如果我们再工作种确实需要用到list或者HashMap该怎么办呢?其实答案非常简单,只需要使用Collections中的方法即可。如下图...原创 2019-12-24 15:00:44 · 373 阅读 · 0 评论 -
List数组去重
List数组去重 废话不多说,直接上代码,相信大多数朋友都是理解的。当我想到数组去重的时候第一个想的是通过双重For循环去解决,其次通过新建一个list,通过list的contains方法,最后是我今天学到的的list的indexof 和lastIndexof方法,通过这两个方法可以将两个重复的元素全部去掉。如有不足之处,请多指教。public class Test1{ @Test...原创 2019-12-23 20:04:37 · 415 阅读 · 0 评论 -
双重检测锁
双重检测锁1、 首先,一听这个名称的时候,我是一脸茫然,下面我就来介绍一下今天学习双重检测锁的收获 吧,今天在在写代码的时候遇到一个高并发的情况,就是我写的接口如果同时有一万个人同时访问得话,那么公司的系统能不能承受的住的这么大的压力呢?一开始想到是直接在方法上加锁synchronized,这是最简单的方法。例如:@GetMapping("/")public synchronized Li...原创 2019-12-16 21:25:12 · 436 阅读 · 0 评论 -
Mysql和Oracle中Mybatis获取自增主键的值
Mybatis获取自增主键的值1. 在xml文件中做如下配置:useGeneratedKeys=“true” keyProperty=“id”例如:<insert id="addEmp" parameterType="employee" useGeneratedKeys="true" keyProperty="id"> insert...原创 2019-12-11 10:15:19 · 240 阅读 · 0 评论 -
实现List中对象属性的去重
今天在工作的时候遇到了一个问题,就是List的去重,不想用双重for,感觉太low,不想用for+Map,感觉应该有更好的方法,于是,google之。发现java8的stream流能完美解决这个问题。原文链接:https://blog.csdn.net/iloveme1/article/details/80589281参考文档:https://blog.csdn.net/jiaobuchong...转载 2019-11-27 16:09:47 · 164 阅读 · 0 评论 -
ORACLE执行误删表中的数据怎么办
ORACLE执行误删表中的数据怎么办1.今天在使用navicat执行sql语句的时候,把delete看成了select ,结果把表中的数控给删除了,当时心中极其慌张,随后找到解决办法,决定记录下来。查询当前电脑时间:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')from dual;查询删除之前数据:select * from provid...原创 2019-10-24 10:58:13 · 249 阅读 · 1 评论 -
equals变量在前面和后面的问题
equals变量在前面和后面的问题 String is_cache = portService.findIscacheById(port.getId()); if(is_cache.equals("0")){ oracleStoreRepository.insertLocalChain (port, params, allParams, result,Bo...原创 2019-10-09 16:47:40 · 694 阅读 · 0 评论 -
MySQL和Oracle将同一张表的一个字段的值复制到另一个字段
MySQL和Oracle将同一张表的一个字段的值复制到另一个字段``今天小白被经理安排将一张表的某个字段的值复制到另一个字段中,一开始打算直接update table set XX = VV (where xx),PS:本次我的数据库是Oracle数据库,所以就直接运行是可以成功的,此时我想到这样的方式是否能适用于MySQL呢,然后我就在本地我的数据来测试了。将user_name中的值复...原创 2019-08-29 16:11:36 · 3948 阅读 · 1 评论 -
spring boot热部署的好处
**卑微小白初次尝试SpringBoot热部署**1、什么是SpringBoot热部署通俗的说,就是当你在修改SpringBoot项目中的静态资源的时候,不需要每一次都要去重启项目才能达到预期效果,(今天楼主被项目经理要求改一些静态资源,一次次的重启SpringBoot,实在受不了,故写下这篇博客,希望可以帮助到大家)。2、怎么使用SpringBoot热部署首先在你pom.xml文件中...原创 2019-08-20 15:09:31 · 2118 阅读 · 0 评论 -
Spring boot 异常:This application has no explicit mapping for /error, so you are seeing this as a fall
在我第一次建立spring boot 入门案例的时候就遇到了这个异常: This application has no explicit mapping for /error, so you are seeing this as a fallback. 一开始的时候我百思不得其解,我看了一遍入门项目,没有找到任何问题,最后发现问题所在:请注意我这两个类的路径,一个事是spring boot...原创 2019-08-14 17:02:22 · 414 阅读 · 0 评论 -
href与action的区别、get与post的区别、什么时候用get、什么时候用post
1. href与action的区别href只能get参数,action能get参数又## 标题能post参数href一般用于单个连接,可以带参数(URL重写),是采用get方式请求的,在地址栏中可以看到所有的参数;action一样用于表单的提交(如:注册)等,他可以提交大量和比较复杂的参数,可通过post和get两种方式提交。如果选择post方式 则在地址栏中看不到提交的信息。简单讲:单独...转载 2019-08-09 14:46:25 · 1084 阅读 · 0 评论 -
面试的时候被问到log日志的级别
1、OffOFF Level 是最高等级的,用于关闭所有日志记录。2、FATAL 致命的错误FATAL level 指出每个严重的错误事件将会导致应用程序的退出。3、ERROR 错误ERROR level 指出虽然发生错误事件,但仍然不影响系统的继续运行。4、WARN 警告WARN level 表明会出现潜在错误的情形。5、INFO 信息INFO level 表明 消息在粗粒度级...转载 2019-08-13 14:45:11 · 164 阅读 · 0 评论 -
response.getWriter().write()与out.print()的区别
两种方法的区别:(1)、write():仅支持输出字符类型数据,字符、字符数组、字符串等(2)、print():可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节都通过write(int c)方法被输出2、介绍response.getWriter()和out的区别:(1)、out和response.getWriter的类不一样,一个是JspWriter,...转载 2019-05-17 16:36:23 · 317 阅读 · 0 评论 -
删除指定字符
截取字符串的长度字符串:string s = “1,2,3,4,5,”目标:删除最后一个 “,”方法:1、用的最多的是Substring,这个也是我一直用的s = s.Substring(0,s.Length - 1)2、用 RTrim,这个我原来只知道用来删除最后的空格,也没有仔细看过其它的用法,才发现可以直接trim掉一些字符s = s.ToString().RTrim(','...原创 2019-04-09 17:23:09 · 223 阅读 · 0 评论