
java
文章平均质量分 84
声明:以下知识来自于互联网各大平台书籍知识的整合也就是个人笔记,如有雷同损害到利益关系,请联系博主,第一时间积极配合删除!
赵广陆
优快云认证博客专家、优快云的Java领域优质创作者、全网30w+粉丝、超300w访问量、专注于大学生项目实战开发、讲解和答疑辅导、以及产品测评宣传、工具推广等合作。同时招收学生代理、校园代理,对于专业性数据证明一切!
展开
-
Java将json中key值下划线转为驼峰格式
目录1 需求说明2 Java工具类转换实现2.1 代码1.2 运行结果3 转换为对应的java实体1 需求说明在开发过程中,有时会遇到json不是严格按照驼峰命名,需要将其中带有下划线的字段进行格式化转换为驼峰命名。原创 2023-02-12 23:13:31 · 3091 阅读 · 0 评论 -
Java同步锁Synchronized底层源码和原理剖析
目录1 synchronized场景回顾2 反汇编寻找锁实现原理3 synchronized虚拟机源码3.1 HotSpot源码Monitor生成3.2 HotSpot源码之Monitor竞争3.3 HotSpot源码之Monitor等待3.4 HotSpot源码之Monitor释放1 synchronized场景回顾目标:synchronized回顾(锁分类–>多线程)概念synchronized:是Java中的关键字,是一种同步锁。Java中锁分为以下几种:乐观锁、悲观锁(syn)原创 2022-05-24 09:11:37 · 823 阅读 · 0 评论 -
Java深入理解线程的三大特性
目录1 CPU缓存导致可见性问题2 线程切换导致原子性问题3 性能优化导致有序性问题4 JMM(Java Memory Model)5 volatile6 synchronized原创 2023-09-25 22:34:51 · 720 阅读 · 0 评论 -
Java处理并发编程工具集合(JUC)详解
目录1 线程池2 Fork/Join2.1 概念2.2 组成2.3 基本使用2.4 设计思想2.5 注意点3 原子操作3.1 概念3.2 CAS3.3 atomic3.4 注意!4 AQS4.1 前言4.2 AQS概述4.3 基本使用4.4 原理解析5 并发容器原创 2023-09-23 16:29:59 · 554 阅读 · 0 评论 -
Java由浅入深理解线程池设计和原理
目录1 线程1.1 什么是线程?什么是进程?1.2 java中线程的实现方式有几种?1.3 线程的生命周期是什么?2 线程存在的问题2.1 一个线程只能执行一个任务2.2 线程执行完后销毁,无法复用2.3 线程过多,导致JVM宕机3 初识线程池3.1 了解J.U.C3.2 线程池解决了什么问题3.3 线程池引发了什么问题4 线程池的设计思想5 线程池的原理5.1 了解线程池类继承结构图5.2 线程池工作状态5.3 掌握线程池个参数定义5.4 线程池结构说明5.5 线程池原创 2023-09-23 16:01:39 · 389 阅读 · 0 评论 -
Java线程之间通信方式
目录1 线程之间的通信方式主要有以下几种2 共享变量3 锁机制4 条件变量5 信号量6 管道6 join方法的实现原理7 join方法实现顺序性原理1 线程之间的通信方式主要有以下几种在实际开发时,一个进程中往往有很多个线程,大多数线程之间往往不是绝对独立的,比如说我们需要将A和B 两个线程的执行结果收集在一起然后显示在界面上,又或者比较典型的消费者-生产者模式,在这些场景下,线程间通信成了我们必须使用的手段,那么线程之间怎么通信呢?原创 2023-09-09 23:50:37 · 2432 阅读 · 0 评论 -
Java多线程父线程向子线程传值解决方案
目录1 背景2 ThreadLocal+TaskDecorator3 RequestContextHolder+TaskDecorator4 MDC+TaskDecorator5 InheritableThreadLocal5.1 源码分析5.2 InheritableThreadLocal存在的问题6 TransmittableThreadLocal原创 2023-09-06 00:00:38 · 1675 阅读 · 0 评论 -
Java实现数据压缩所有方式性能测试
目录1 BZip方式1.1 引入依赖1.2 BZip工具类代码1.3 BZip2工具类代码2 Deflater方式3 Gzip方式4 Lz4方式4.1 简介4.2 算法思想4.3 算法实现4.3.1 lz4数据格式2、lz4压缩过程3、lz4解压过程4.4 Lz4-Java4.4.1 简介4.4.2 类库5 SevenZ方式5.1 引入依赖5.2 工具类代码6 Zip方式7 性能对比7.1 压缩率对比8 总结原创 2023-04-29 17:26:49 · 2685 阅读 · 0 评论 -
Java深拷贝和浅拷贝Map对象
目录1 将Map深拷贝到另一个Map对象当中2 浅拷贝Map1 将Map深拷贝到另一个Map对象当中今天赋值的时候遇到的小坑相关文章推荐:Java克隆方式避免频繁创建对象优化方案 https://blog.youkuaiyun.com/ZGL_cyy/article/details/1265569071.需求说明将一个MapA对象中所有的键值对完全拷贝到另一个MapB对象中;另一个MapB对象中原来的键值保持不变(不受影响);拷贝成功后MapB对象当中的内容将不再随着MapA中内容的变化而原创 2023-01-29 22:57:55 · 4931 阅读 · 4 评论 -
Java频繁创建线程排查和解决
目录1 产生原因2 Java 服务器可以跑多少个线程3 Java 线程多影响内存吗4 java线程占多大的内存,占哪里的内存4.1 占多大的内存4.2 占哪里的内存1 产生原因因为编译工具突然报错,需要手动创建线程池,之前都是用ExecutorService直接创建的线程池用的封装好的,但是阿里巴巴规范不让用,网上找了个代码copy导致创建的线程池无法关闭,暂时没关注原因,解决的话还是使用ExecutorService的注入类,并且配置好线程池参数,而不去new线程池,也不要随缘关闭线程池原创 2022-11-16 23:44:57 · 2144 阅读 · 0 评论 -
Java并发计算判断线程池中的线程是否全部执行完毕
目录1 java多线程的使用2 shutdown和shutdownNow区别源码解析2.1 shutdown案例2.2 shutdownNow案例2.3 源码解读2.4 shutdown和shutdownNow总结3 判断线程池中的线程是否全部执行完毕3.1 方式一:调用ExecutorService 中的isTerminated方法3.2 方式二:调用ExecutorService 中的awaitTermination()方法,等待子线程结束3.3 方式三:闭锁CountDownLat原创 2022-10-30 14:53:42 · 1229 阅读 · 0 评论 -
Java xml和json互相转换方法
目录1 java xml转为json的方法1.1 fastjson和jdom2进行转化1.2 用的org.json包2 java json格式转xml格式2.1 使用 jdom 进行转换2.2 使用 dom4j 进行转换原创 2022-09-18 15:56:50 · 1805 阅读 · 0 评论 -
Java深度学习库DJL实现Python的NumPy
目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操作2.3 创建NDArray2.4 数学运算2.5 Get和Set2.6 分词操作2.7 NDArray处理1 NDArray 的背景介绍在Python的世界,调用NDArray的标准包叫做NumPy。为了给Java开发者创造同一种工具,亚马逊云服务开源了DJL,一个基于Java的深度学习库。原创 2022-09-04 14:33:06 · 2277 阅读 · 0 评论 -
Java操作图片进行缩放旋转翻转加水印
目录1 纯原生手写图片操作工具类2 Hutool操作图片3 谷歌开源框架Thumbnailator4 总结谷歌开源框架处理图片实测性能较差,用起来比较方便,建议用Hutool因为只是对awt做的封装不用自己写,性能也高。原创 2022-09-03 18:07:53 · 1258 阅读 · 1 评论 -
Java实现redis缓存效果变量过期
目录1 实现2 测试3 接口1 实现redis中的Expire命令用于设置 key 的过期时间,key 过期后将不再可用。不过有些变量我们不需要设置到redis中,只要存到本地就可以了,也需要过期时间,也可以同样方法定义一个全局变量的map之后键是变量,值是时间每次都进行比较。......原创 2022-08-27 16:02:34 · 744 阅读 · 0 评论 -
Java克隆方式避免频繁创建对象优化方案
目录1 克隆介绍1.1 浅克隆1.1.1 浅克隆实现:1.1.2 浅拷贝1.2 深克隆1.2.1 递归调用clone()方法1.2.2 通过序列化方式3 Java频繁创建对象优化方案3.1 优化思路3.2 具体实现1 克隆介绍直接使用new关键字创建的对象,是一个新的对象,没有任何数据(初始化的默认值)使用克隆创建的对象......原创 2022-08-27 15:14:39 · 1020 阅读 · 0 评论 -
Java线程池创建方式和应用场景
目录1.什么是线程池?2 线程池创建种类2.1通过线程池代码创建线程2.1.Executors创建的线程池2.1.1 newFixedThreadPool重用固定数量线程的线程池2.1.2 newWorkStealingPool(int parallelism)抢占式执行的线程池2.1.3 newSingleThreadExecutor()单例的线程池2.1.4 newCachedThreadPool()可缓存的线程池原创 2022-08-20 22:23:42 · 811 阅读 · 0 评论 -
Java优雅解决空指针问题源码级别刨析Optional
目录1 Optional介绍2 Optional应用2.1 创建Optional对象2.2 基于Optional对象获取值2.2.1 isPresent()与ifPresent()应用&源码解析2.2.2 get()应用&源码解析2.2.3 orElseThrow()应用&源码解析2.2.4 map()应用&源码解析2.2.5 flatMap()应用&源码解析2.2.6 filter()应用&源码解析2.2.7 orElse()应用&源码解析...原创 2022-08-07 12:18:47 · 758 阅读 · 0 评论 -
Java使用NIO优化IO实现文件上传下载
目录1 NIO的一些基础预备知识2 NIO为何较传统的io速度较快3 NIO实战上传下载3.1 url下载文件3.2 通过NIO上传文件1 NIO的一些基础预备知识Java中IO流类的体系中BIO与NIO:https://blog.youkuaiyun.com/ZGL_cyy/article/details/104326458Java IO体系与NIO和BIO体系面试题 :https://blog.youkuaiyun.com/ZGL_cyy/article/details/122836368...原创 2022-07-27 21:00:00 · 2378 阅读 · 2 评论 -
Java高效实现python切片操作
目录1 问题描述2 解决方案2.1 工具类方法切割2.2 数据量很大需要切片2.3 并行流进行切片1 问题描述在python中,我们可以执行以下操作,但是需要java实现2 解决方案2.1 工具类方法切割原创 2022-07-23 11:41:36 · 616 阅读 · 0 评论 -
Java异步编程Future应用
目录1 Future接口介绍2 Future应用3 Future并行变串行问题解析1 Future接口介绍此时有的人会说,对于任务并行需求,直接通过多线程实现不就可以了, 要注意,对于多线程的实现,java提供了三种方式:继承Thread类、实现Runnable接口和实现Callable接口。......原创 2022-07-14 18:14:06 · 3471 阅读 · 0 评论 -
List实现边查边增删改
目录1 List遍历边查询边删除2 listIterator可以边遍历边修改2.1 Iterator和ListIterator区别2.2 list边遍历边修改今天偶然遇到个这样的需求,平常解决都是两个list互相倒腾数据,但是说到迭代器iterator是没有add方法的有删除方法所以通过普通迭代器是无法做到边查边向list添加数据,所以这时需要listIterator而这两种迭代器是不能同时使用的所以看是是否需要添加还是删除使用不同的迭代器建议用listIterator方法比较全...原创 2022-07-04 20:13:20 · 1265 阅读 · 0 评论 -
HashMap源码深度剖析
目录1 HashMap数据结构2 HashMap继承体系3 HashMap源码深度剖析3.1 成员变量与内部类3.2 HashMap构造器3.3 HashMap插入方法3.4 HashMap扩容方法3.5 HashMap获取方法3.6 HashMap移除方法4 哈希最常见面试题4.1 为什么要从JDK1.8之前的链表设计,修改为链表或红黑树的设计?4.2 什么时候树化?4.3 什么时候从树–>链表4.4 初始容量是16,为什么是2的指数次幂?4.5 为什么加载因子是0.75呢?4.6 什么是哈希冲突(原创 2022-05-23 15:14:50 · 518 阅读 · 0 评论 -
Java设计模式中的设计原则
目录1 设计模式简介2 设计原则2.1 单一职责原则2.2 开闭原则2.3 里氏代换原则2.4 依赖倒转原则2.5 接口隔离原则2.6 合成复用原则2.7 迪米特法则3 设计模式分类1 设计模式简介常见问题:1、什么是设计模式2、设计模式什么时候使用3、使用设计模式有什么好处4、设计模式设计需要遵循哪些原则5、设计模式有哪些分类Java常用设计模式软件设计模式(Software Design Pattern),俗称设计模式,设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设原创 2022-01-10 20:00:00 · 662 阅读 · 0 评论 -
Java操作时间工具类
目录1 LocalDate快速入门2 判断time是否在now的n天之内3 判断某个时间是否是在条件的起始时间与结束时间之内4 判断给定时间与当前时间相差多少天5 将String转换成Date6 Date与LocalDateTime互转7 日期前后比较1 LocalDate快速入门从Java 8之后,Java里面添加了许多的新特性,其中一个最常见也是最实用的便是日期处理的类——LocalDate。新增的日期jar主要有三种:java.time.LocalDate ->只对年月日做出处理ja原创 2021-11-15 20:30:00 · 1996 阅读 · 0 评论 -
Java报错:java.security.InvalidKeyException: Illegal key size
目录1 报错场景1.1 产生错误原因1.2 为什么会产生这样的错误2 解决方案2.1 具体下载、解压、替换步骤1 报错场景今天在使用idea打包maven项目时,微信小程序加密解密 出现这个错误:java.security.InvalidKeyException: Illegal key size。(测试也可能会出现这个问题)貌似是因为加密出现了问题。1.1 产生错误原因为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行加密,然后等对方拿到后再解密使用。我们在使用AES加解密的时候原创 2021-10-18 22:00:00 · 15618 阅读 · 8 评论 -
Java正则表达式校验实例
目录1 通过正则表达式制作短信模板1.1 java 替换 ${xxx} 的内容1.2 java正则表达式appendReplacement和appendTail方法1.3 正则表达式matcher.group()用法2 正则表达式校验身份证1 通过正则表达式制作短信模板1.1 java 替换 ${xxx} 的内容private static String parse(String content,Map<String,String> kvs){ Matcher m = p原创 2021-08-18 21:35:54 · 627 阅读 · 0 评论 -
Java实现判断休息日和节假日
1 需求周末和节假日推送消息,或者不打扰某些人,定时任务过滤掉某些节假日休息日.最笨的方案就是都把节日提前存储好几个月的,然后到期同步一次.2 选型方案2.1.网络接口:聚合平台:https://www.juhe.cn/docs/api/id/177/aid/6011.打开找到生活服务2.找到节假日查询信息3.查看返回格式进行解析百度平台:http://apistore.baidu.com/apiworks/servicedetail/1116.html3.在线解析网页信息,原创 2021-08-03 21:56:45 · 1817 阅读 · 0 评论 -
Java线程池七大参数详解和配置
目录一、corePoolSize核心线程数二、maximunPoolSize最大线程数三、keepAliveTime空闲线程存活时间四、unit空闲线程存活时间的单位五、workQueue线程工作队列1、ArrayBlockingQueue FIFO有界阻塞队列2、LinkedBlockingQueue FIFO无限队列3、PriorityBlockingQueue VIP4、SynchronousQueue不缓存任务的阻塞队列六、threadFactory线程工厂七、handler超出线程数和工作队列时候原创 2021-06-25 23:16:55 · 10565 阅读 · 4 评论 -
List集合处理工具类
目录1 对list集合进行分页:2 Java对list进行分页,subList()方法实现分页3 对单个对象全为null判断4 java8获取list对象中某个字段最大值的对象不建议大数据量使用,因为这个要传入所有list才可以进行分页,分页还是使用分页插件进行处理1 对list集合进行分页:import java.util.Arrays;import java.util.Collections;import java.util.List; public class ListPageUt原创 2021-06-12 13:29:22 · 675 阅读 · 0 评论 -
Java线程池ExecutorService
目录1 ExecutorService介绍2 ExecutorService的创建3 ExecutorService的使用4 ExecutorService的执行4.1 execute(Runnable)4.2 submit(Runnable)4.3 submit(Callable)4.4 invokeAny(…)4.5 invokeAll(…)5 ExecutorService的关闭6 项目中的使用1 ExecutorService介绍本篇主要涉及到的是java.util.concurrent包中的原创 2021-06-12 12:21:17 · 24783 阅读 · 0 评论 -
Java爬虫Jsoup简易使用
一、准备工作1、下载jsoup工具,如果是maven项目,请在pm.xml中加入以下代码:jsoup虽然不是一个很强大的爬虫工具,但是它对于网页html文档的各种处理确实是很强大的,同时自身也是个非常好用的爬虫,也许无法去做较大难度的数据的抓取,但我认为它是个非常优良的文档处理助手<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId>原创 2021-06-12 12:15:34 · 522 阅读 · 1 评论 -
Java List集合去重的多种方法
目录1 循环list中的所有元素然后删除重复2 通过HashSet去重3 删除List中重复元素,并保持顺序4 利用list.contain() 去重5 注意事项6 利用stream分组及去重7 删除集合中多个元素1 循环list中的所有元素然后删除重复/*** 循环list中的所有元素然后删除重复* @param list 待去重的list* @return 去重后的list*/public static <T> List<T> removeDuplicate(Li原创 2021-06-12 12:13:11 · 3440 阅读 · 0 评论 -
Linux中jar包启动和jar包后台运行的实现方式
目录1 Linux 运行jar包命令如下:1.1 方式一:前台启动1.2 方式二1.3 方式三:后台启动1.4 方式四:后台启动打印日志2 Linux 必备命令2.1 常用操作2.2 用户管理2.3 压缩包管理2.4 查看属性1 Linux 运行jar包命令如下:1.1 方式一:前台启动java -jar shareniu.jar特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出那如何让窗口不锁定?1.2 方式二java -jar shareniu.ja原创 2021-06-12 12:08:20 · 1807 阅读 · 0 评论 -
快速查看java进程
一、Linux篇方法一ps -ef|grep java方法二jps -l (显示java进程的Id和软件名称)jps -lmv(显示java进程的Id和软件名称;显示启动main输入参数;虚拟机参数)二、Windows篇jpsjps -l(显示java进程的Id和软件路径及名称)...原创 2021-06-12 12:01:05 · 1849 阅读 · 1 评论 -
Collections.singletonMap()用法
1 Collections.singletonMap()用法Collections.singletonMap()用于返回单集合singletonMap() method is available in java.util package.singletonMap()方法在java.util包中可用。singletonMap() method is used to return an immutable map (i.e. immutable map is a map that contains th原创 2021-03-17 11:13:14 · 3920 阅读 · 0 评论 -
Java常用设计模式
目录1单例设计模式2 代理设计模式介绍2.1 静态代理和装饰者设计模式的区别2.2 不同点3 静态代理4 动态代理技术4.1 JDK 的动态代理4.2 cglib 的动态代理5 适配器设计模式1单例设计模式什么是单例:永远只能够创建一个对象单例设计模式书写方式总共是有两种:饿汉式、懒汉式书写单例设计模式的语法规则:类中的构造方法私有 2.需要提供一个公共的获取对象的方法饿汉式单例设计模式:(好比人很饿,需要提前备好饭,这里的饭...原创 2021-02-21 19:30:26 · 705 阅读 · 0 评论 -
Java手写静态页面服务器
由于即将学习javaweb,为了可以提前热身,手动仿照Tomcat服务器来手写一个最简单最迷你版的web服务器,来搭建静态网页.废话不多说先上简单代码实现功能.本次主要也是复习一下多线程,io,网络编程,集合等知识点.import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class MyServer { public static void main(String[] args)thr.原创 2020-10-24 18:57:03 · 838 阅读 · 0 评论 -
Java手写简单文件上传服务器
目录1 IO流相关知识1.1 File1.2 IO:读写文件中的数据2 多线程相关知识2.1 多线程实现的三种方式2.2 创建线程池的各种方式3 网络编程相关知识3.1 TCP传输4 文件上传的服务器端代码5 文件上传的客户端代码6 运行效果1 IO流相关知识1.1 File表示文件或者文件夹,被表示的文件或者文件夹不一定存在,主要就是代表路劲构造方法:new File("路径")1.2 IO:读写文件中的数据把自己当成内存,看硬盘的方向,原创 2020-10-13 21:02:19 · 832 阅读 · 0 评论 -
Java不可变集合与Stream流
目录1 可变参数2 创建不可变集合3 Stream流3.1 体验Stream流3.2 Stream流的常见生成方式3.3 Stream流中间操作方法3.4 Stream流终结操作方法3.5 Stream流的收集操作3.6 Stream流综合练习1 可变参数 可变参数介绍 可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了 方法的参数类型已经确定,个数不确定,我们可以使用可变参数 可变参数定义格式原创 2020-09-30 19:42:38 · 1504 阅读 · 0 评论