
java基础
文章平均质量分 58
靓坤上海分坤
好记性 不如烂笔头
展开
-
Java对比对象修改前与修改后字段发生的变化
Java对比对象修改前与修改后字段发生的变化原创 2023-09-22 14:49:40 · 2180 阅读 · 0 评论 -
Java给PDF文档添加水印信息
Java给PDF文档添加水印信息,在word生成pdf后,或者上传pdf文件,用户希望给pdf文档添加水印信息,具体代码如下。核心代码如下,写在某个 service 下面。一. 首先pom中需要引入。原创 2023-06-20 18:12:48 · 3607 阅读 · 8 评论 -
CountDownLatch和线程池的搭配使用
在上面,我们定义了一个CountDownLatch,并设置其值为 5 ,这里我们模拟循环五次多线程异步调用接口,模拟调用耗时,最后等五次调用全部结束,才能执行下一步操作,如果是普调循环调用接口,则最大耗时为: 1+2+3+4+5 = 15秒,而使用多线程+CountDownLatch,我们5秒左右就可以完成,接下来我们看一下测试结果。例如:生活中我们打王者要五个人都进入房间才能选英雄,工作上我们有循环调用接口的案例,要等循环调用结束拿到所有的数据之后才能进行下一步操作。原创 2022-09-14 13:51:09 · 2452 阅读 · 1 评论 -
easyExce模板填充生成Excel的实际操作,多sheet页处理
easyExce模板变量填充生成Excel,以及多sheet页模板处理原创 2022-07-26 14:06:17 · 7740 阅读 · 1 评论 -
Synchronized常见面试题,什么是锁粗化|锁消除|锁升级|偏向锁|轻量级锁|重量级锁
目录前言内容大纲Synchronized使用方式普通函数静态函数代码块Synchronized原理Synchronized优化锁粗化锁消除锁升级偏向锁轻量级锁重量级锁前言Java并发编程系列第二篇Synchronized,文章风格依然是图文并茂,通俗易懂,本文带读者们由浅入深理解Synchronized,让读者们也能与面试官疯狂对线。在并发编程中Synchronized一直都是元老级的角色,Jdk 1.6以前大家都称呼它为重量级锁,相对转载 2021-09-16 16:53:50 · 332 阅读 · 0 评论 -
jdk1.8 下 list stream转数组 map 循环 过滤等操作的常见写法
jdk1.8,list 转 map 对象操作, 在开发过程我们有时会在for循环过程中查询另一个表的数据,我们可以提前把数据查询出来,转换成map,避免循环过程中多次查库操作list 转 map<String,对象> 操作如下package com.example.demo.util;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Set...原创 2021-06-30 15:52:03 · 4478 阅读 · 1 评论 -
java自定义线程池ThreadPoolExecutor的创建和线程池在项目中的实际使用
为什么用线程池 线程池做的主要工作就是控制运行的线程的数量,处理过程中,将任务放入到队列中,然后线程创建后,启动这些任务,如果线程数量超过了最大数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。它的主要特点为:线程复用、控制最大并发数、管理线程最常见的线程池...原创 2021-03-03 18:03:46 · 1329 阅读 · 1 评论 -
synchronized和lock有什么区别,用新的Lock有什么好处
本文学习来源尚硅谷阳哥JUC视频,这里做一下学习笔记1 原始构成 synchronized是关键宇属于 JVM 层面 monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象 只能在同步块或者方法中才能调用 wait/notify等方法) Lock是具体类(java.util.concurrent.locks.Lock)是api层面的锁2 使用方法synchronized:不需要用户去手动释放锁,当synchro...原创 2021-02-02 15:38:22 · 185 阅读 · 2 评论 -
Volatile关键字的详解,JMM内存模型的可见性,禁止指令重排,内存屏障等
首先Volatile在日常的单线程环境是应用不到的,Volatile 是Java虚拟机提供的轻量级的同步机制,有三个特性保证可见性 不保证原子性 禁止指令重排首先我们看下 JMM java内存模型图 ,JMM是一种抽象的概念,实际上并不存在由于JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地方称为栈空间),工作内存是每个线程的私有数据区域,而Java内存模型中规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可以访问,但线程对变量的操作(读...原创 2021-01-26 15:08:51 · 175 阅读 · 0 评论 -
多线程循环打印ABCD,java多线程线程调度Condition,lock接口的使用
本文记录学习多线程之间的任务调度,在面试中我们也经常会碰到线程循环打印ABCD这样的面试题,接下来用代码进行实践,本文使用lock接口进行实现线程操作资源类,首先在资源类中定义一个可重入锁,以及4个绑定条件 , // 创建一个重入锁 private Lock lock = new ReentrantLock(); // 创建4个绑定 private Condition condition1 = lock.newCondition(); p...原创 2021-01-03 15:28:51 · 339 阅读 · 0 评论