![](https://img-blog.csdnimg.cn/20210808181511670.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA
记录一些java code
玲珑·
凡所必须 勿增实体
展开
-
如何优雅的关闭流
关闭流使用try-catch-finally 是jdk1.7 之前的语法。原创 2023-09-06 02:10:55 · 173 阅读 · 0 评论 -
excel导出图片方格居中
1英寸=72磅=25.4毫米=1440缇emu 是一种虚拟单位,便于。原创 2022-11-07 23:51:14 · 517 阅读 · 0 评论 -
Bean 字段填充工具
【代码】Bean 字段填充工具。原创 2022-11-06 16:39:39 · 105 阅读 · 0 评论 -
AOP枚举效验
public class EnumValueValidator implements ConstraintValidator<EnumValue, Object> { private List<Object> values = new ArrayList<>(); @Override public void initialize(EnumValue constraintAnnotation) { Class<? exten原创 2022-07-03 13:14:40 · 227 阅读 · 0 评论 -
将java bean转换成Map类型
将bean 转成map 类型原创 2022-07-03 11:31:59 · 396 阅读 · 0 评论 -
Accessors 注解属性详解
fluent:流畅的,设置为true,getter和setter方法的方法名都是基础属性名,且setter方法返回当前对象。@Data@Accessors(fluent = true)public class Person { private Long id; private String name; // 生成的getter和setter方法如下,方法体略 public Long id() {} public Person id(Long id).原创 2021-11-16 15:10:17 · 662 阅读 · 0 评论 -
Java8函数式编程接口:Consumer、Supplier、Function、Predicate
开宗明义 java8的一个新特性就是在java.util.function中提供了四个函数式编程接口,分别是Consumer、Supplier、Function、Predicate。其中,consumer即消费接口,传入一个参数,并对其进行相应的操作(有点类似于lambda表达式);supplier即供给接口,可以传入数据,作为一个容器;function即方法接口,主要是用作数据类型之间的转换;predicate即判断接口,传入参数,而后返回判断的结果true/false;接下来仔细瞅瞅这四种接口的源码以原创 2022-06-01 10:48:40 · 233 阅读 · 0 评论 -
Java拷贝一个集合数组
@Test public void test13() { List<Integer> l1 = Lists.newArrayList(); l1.add(1); l1.add(2); l1.add(3); ArrayList<Integer> l2 = Lists.newArrayList(l1); l2.remove(1); System.out.prin...原创 2022-05-09 20:21:29 · 275 阅读 · 0 评论 -
Java并发编程场景
一局只能让三个线程进去/** * @Description 一天只能三个线程进入 * @Date 2022/3/22 20:44 * @Created by koala */@Slf4j@AllArgsConstructorpublic class Kitchen2 implements Runnable{ // 限制厨房的厨师数量 private AtomicInteger count; @SneakyThrows private void add()原创 2022-03-22 20:53:21 · 588 阅读 · 0 评论 -
web开发参数效验
@Valid和@Validated区别 底层都是 Hibernate Validator区别@Valid@Validated提供者JSR-303规范Spring是否支持分组不支持支持标注位置METHOD, FIELD, CONSTRUCTOR, PARAMETER, TYPE_USETYPE, METHOD, PARAMETER嵌套校验支持不支持快速失败(Fail Fast)@Beanpublic Validator validator() { ValidatorFactory valid原创 2022-03-20 00:48:28 · 556 阅读 · 0 评论 -
guava 定时任务
@Test public void test26() { StopWatch stopWatch = new StopWatch(); stopWatch.start(); for (long i = 0; i < 10000000000L; i++) { } stopWatch.stop(); long totalTimeMillis = stopWatch.getTotalTimeMilli原创 2022-03-09 10:28:05 · 747 阅读 · 0 评论 -
guava 教程收集一些案例慢慢写 google工具类
集合类 // map 拷贝 @Test public void test4() throws IllegalAccessException { HashMap<String, String> hashMap = Maps.newHashMap(); hashMap.put("1","A"); hashMap.put("2","B"); Map<String, String> res ;原创 2022-03-09 10:25:08 · 401 阅读 · 0 评论 -
Java中各种关闭正确的写法
package effectivejava.chapter2.item9.trywithresources;import java.io.*;public class Copy { private static final int BUFFER_SIZE = 8 * 1024; // try-with-resources on multiple resources - short and sweet (Page 35) static void copy(String src原创 2022-03-09 10:16:15 · 388 阅读 · 0 评论 -
Bean拷贝详解
studentstudentVO猜想实验结果结论BeanUtils.copyProperties();没有set 方法 只有一个全参构造从student get 每个值 然后set 赋值java: 无法将类 com.koala.learn.beanlearn.entity.Student中的构造器 Student应用到给定类型; 需要: 没有参数 找到: java.lang.String,int 原因:...原创 2022-03-09 10:15:02 · 343 阅读 · 0 评论 -
hutool对称加密
加密逻辑public static void main(String[] args) { // 1. 内部先初始化静态代码块 设置非对称加密的对象 新建对象的父类会自动生成默认的公钥和私钥 RSA rsa = new RSA(); // 下面两行代码作用不大 KeyType.PublicKey 判断公钥为空的时候会自动生成 PrivateKey privateKey = rsa.getPrivateKey(); PublicKe原创 2022-03-08 14:38:47 · 685 阅读 · 0 评论 -
Java并发编程的艺术笔记第四章
第四章 Java并发编程基础一、线程简介使用多线程的原因:1.更多的处理器核心:一个线程在一个时刻只能运行在一个处理器核心上2.更快的响应时间3.更好的编程模型线程优先级:操作系统基本采用时分的形式调度运行的线程,操作系统会分出一个个时间片,线程会分配到若干时间片,当线程的时间片用完了就会发生线程调度,并等待着下次分配,线程分配到的时间片多少就决定了线程使用处理器资源的多少。线程的状态:6种,在给定的时刻只能处于一种状态NEW:初始状态,线程被构建,但还没有调用start方法RUN原创 2022-03-08 14:24:30 · 90 阅读 · 0 评论 -
boundvalueops和opsforvalue区别
/**获取a,然后获取b,然后删除c,对同一个key有多次操作,按照opsForHash()的写法 * 每次都是redisTemplate.opsForHash().xxx("key","value")写法很是啰嗦 */ int result = (Integer) redisTemplate.opsForHash().get("hash-key","a"); result = (Integer)redisTemplate.opsForHash().get("ha...原创 2022-03-08 14:24:05 · 5091 阅读 · 1 评论 -
延时队列`DelayQueue`
代码package com.koala.learn.charter1;import lombok.AllArgsConstructor;import lombok.NoArgsConstructor;import java.util.concurrent.Delayed;import java.util.concurrent.TimeUnit;/** * @Description TODO * @Date 2022/2/26 12:18 * @Created by koala */原创 2022-03-08 14:21:01 · 118 阅读 · 0 评论 -
Fork框架任务窃取
package com.koala.learn.threadlearn.chapter6;import lombok.SneakyThrows;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.ForkJoinTask;import java.util.concurrent.RecursiveTask;/** * @Description TODO * @Date 2022/2/28 21:51 *原创 2022-03-08 14:20:04 · 115 阅读 · 0 评论 -
自定义线程池
package com.koala.learn.charter4;/** * @Description TODO * @Date 2022/2/28 0:04 * @Created by koala */public class Start3 { public static void main(String[] args) { DefaultThreadPool<HouseWork> pool = new DefaultThreadPool<>原创 2022-02-28 00:18:44 · 79 阅读 · 0 评论 -
优雅的中断线程
package com.koala.chapter4;import java.util.concurrent.TimeUnit;/** * * 优雅的中止线程 * @author yantingrui * @date 2022/2/22 22:03 */public class ShutDown { public static void main(String[] args) throws InterruptedException { Runner run1原创 2022-02-22 22:18:10 · 70 阅读 · 0 评论 -
volatile 和 synchronized 到底啥区别?
草稿都听过【天上⼀天,地下⼀年】,假设 CPU 执⾏⼀条普通指令需要⼀天,那么 CPU 读写内存就得等待⼀年的时间。如果写⼊变量值不依赖变量当前值,那么就可以⽤ volatile就是 x = 12 而非 x = x+1...原创 2022-03-08 14:34:28 · 80 阅读 · 0 评论 -
volatile关键字详解
线程的模型volatile 需要实现什么目标对于一个写操作,读操作只能在他完全操作之前和完全操作之后执行,不允许中间插入。错误理解: 我之前一直以为,如果一个变量被标记成了 volatile 变量,那么这个变量的值就不会被加载进线程的工作内存中,而是直接在主内存上进行读写。实际上并不是这样的,因为这样我们需要为 volatile 变量的读写设置一套特殊的规则,这显然是不合适。即使是 volatile 变量,也是从工作内存中读取的,只是它有特殊的操作顺序规定,使得看起来像是直接在主内存中读写。如何实原创 2022-01-16 11:37:41 · 192 阅读 · 0 评论 -
电话加密处理 过敏
public class PhoneUtils { public static boolean isEmpty(String str) { // 判断字符串是否为空或长度为0 return str == null || str.length() == 0; } /** * 手机号码前三后四脱敏 */ public static String mobileEncrypt(String mobile) {原创 2022-01-12 10:31:10 · 161 阅读 · 0 评论 -
spring切面编程模板
package com.koala;import com.alibaba.fastjson.JSON;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Po原创 2022-01-04 15:30:51 · 78 阅读 · 0 评论 -
Guava计时
计时原创 2022-01-04 10:01:33 · 370 阅读 · 0 评论 -
类内部数组的正确写法
public class INFO { // 错误 public static final String[] VALUES = {}; // 下面两种正确 private static final String[] VALUES1 = {}; public static final String[] getValues1(){ return VALUES1.clone(); } private static final String原创 2021-12-31 12:27:58 · 170 阅读 · 0 评论 -
Beans拷贝忽略空对象
@Data@NoArgsConstructor@AllArgsConstructorpublic class Student { @ExcelProperty("name") private String name; @ExcelProperty("age") private Integer age; @JsonFormat( shape = JsonFormat.Shape.STRING, pattern原创 2021-12-30 14:52:05 · 108 阅读 · 1 评论 -
秒杀系统实现
秒杀业务代码 @ResponseBody @RequestMapping("/{id}/kill") public String secKill(@PathVariable(name = "id") Integer id ){ Long stock = stringRedisTemplate.opsForValue().decrement(id.toString()); System.out.println(stock); if(stock原创 2021-12-29 23:08:26 · 186 阅读 · 0 评论 -
Java 操作excel
public static void main(String[] args) { String fileName = "test.xlsx"; File file = new File(fileName); WriteSheet writeSheet = EasyExcel.writerSheet(fileName).build(); ArrayList<Student> personArrayList = Collecti...原创 2021-12-27 18:27:54 · 319 阅读 · 0 评论 -
spring 事件监听
@Resourceprivate ListableBeanFactory beanFactory;@EventListener(value = {ContextRefreshedEvent.class})public void init(){ System.out.println("监听事件"); String[] beanDefinitionNames = beanFactory.getBeanDefinitionNames(); System.out.println(JS原创 2021-12-27 10:28:49 · 302 阅读 · 0 评论 -
java 开发 断言代码
public static void notNull(Object object, ErrorEnum error) { if (object == null) { throw new ServiceException(error.getCode(), error.getMsg()); } }原创 2021-12-15 16:09:30 · 253 阅读 · 0 评论 -
大卫mongodb文件存储器
/** * 上传 * * @param file * @param redirectAttributes * @return */ @PostMapping("/") public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) { try { File f = new File(file.getOrigi原创 2021-12-13 09:32:30 · 649 阅读 · 0 评论 -
分页计算偏移
default long offset() { return getCurrent() > 0 ? (getCurrent() - 1) * getSize() : 0; }原创 2021-12-09 10:59:50 · 410 阅读 · 0 评论 -
Type 和 class 的区别
/** * 类和类型的区别 * */ @Test public void test2(){ System.out.println(Integer.class); System.out.println(OrikaUtil.getType(Integer.class)); } //class java.lang.Integer //Integer原创 2021-12-08 18:42:47 · 4756 阅读 · 0 评论 -
Java链表可直接赋值
@Test public void test(){ List<String> list1 = new ArrayList<>(); list1.add("A"); list1.add("B"); List<String> list2 = new ArrayList<>(); list2.add("C"); list2.add("D"); .原创 2021-12-08 16:23:57 · 1367 阅读 · 0 评论 -
JAVA基础系列反射
参考一篇文章看懂java反射机制(反射实例化对象-反射获得构造方法,获得普通方法,获得字段属性)import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.time.LocalDateTime;import java.util.List;/** * 反射的学习 * tag 反射 * 参考 https://www.cnblog原创 2021-12-08 15:32:21 · 99 阅读 · 0 评论 -
JSON 对象转成字符串 字符串序列化对象
/** * @author yantingrui * @date 2021/12/7 15:43 */@Data@Accessors(chain = true)public class Params { private Integer type; private Condition condition;}public class Start { public static void main(String[] args) { Conditi原创 2021-12-08 11:30:44 · 498 阅读 · 0 评论 -
比较两个类不同属性值
public static void main(String[] args) throws IllegalAccessException { Student stu1 = new Student("小明", "男", "15011112222", "重庆");// Student stu2 = new Student("小明","男","1254652","武汉"); Field[] declaredFields = stu1.getClass().g...原创 2021-12-02 01:32:12 · 216 阅读 · 0 评论 -
jdk中提供的Collection、Collections、Collector、Collectors你分的清楚?
Collection 继承迭代器 实现了各个数据结构Collections 封装了 Collection各个集合类的方法 服务于 CollectionCollector 专门用来处理 stream 的Collectors 专门用来处理stream 的https://www.jianshu.com/p/7eaa0969b424原创 2021-11-25 21:55:04 · 192 阅读 · 0 评论