![](https://img-blog.csdnimg.cn/8e0b4c658a604cc1980fbebf261cd4cc.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础
文章平均质量分 66
这个专栏主要写一个Java基础相关的东西
李桥s2008100262
天道酬勤
展开
-
不规范的命名
不规范的Java命名原创 2022-06-20 14:01:43 · 180 阅读 · 0 评论 -
开源框架对Range模式的支持
Range工具类原创 2022-06-02 09:38:50 · 140 阅读 · 0 评论 -
Object工具类大比拼
目录1、jdk Objects2、apache commons ObjectUtils3、 google MoreObjects4、spring ObjectUtils5、hutool ObjectUtil6、netty ObjectUtil1、jdk Objects通用的equals()方法判断 通用的hashCode()方法判断 通用的toString()方法 通用的isNull()、nonNull()方法2、apache commons...原创 2022-05-13 11:08:08 · 1204 阅读 · 0 评论 -
我们都是怎么使用线程池的
目录0、背景1、JDK的线程池1.1 Executors 线程池工具类1.2 ThreadPoolExecutor 线程池实现2、Guaval对ThreadPoolExecutor封装2.1MoreExecutors2.2ListenableFuture3、Hutool对ThreadPoolExecutor封装3.1ExecutorBuilder源码3.2ThreadUtil源码3.3ConcurrencyTester源码4、Spring对ThreadPool原创 2022-03-18 09:25:53 · 1267 阅读 · 4 评论 -
解决金额按照比例分配除不尽的问题
1、问题背景2、源码原创 2022-03-11 15:16:12 · 2164 阅读 · 0 评论 -
阅读guava-retrying源码心得
目录1、从设计模式上分析源码1.1策略模式1.2工厂方法模式1.3组合模式1.4建造者设计模式2、对BlockStrategy一个更优雅的实现2.1MyBlockStrategy 源码2.2MyBlockStrategy程序运行结果3、学到了guava TimeLimiter这个好的工具1、从设计模式上分析源码1.1策略模式WaitStrategy 等待策略这个接口有很多的策略实现StopStrategy停止策略这个接口有很多的策...原创 2021-08-29 16:08:46 · 167 阅读 · 0 评论 -
Java中的任务取消
Task Cancellation in JavaJava Concurrency1. OverviewIn Java, there is no safe way to preemptively stop a task running on aThreadin that the task must cooperate and be responsive to the cancellation requests. In this tutorial, we'll examine how we ...翻译 2021-08-22 15:28:01 · 108 阅读 · 0 评论 -
多子任务快速失败笔试题目-1(ListenableFuture)
题目背景:有一个任务T,由3个子任务T1、T2、T3组成,T1、T2、T3执行的时间是随机的,并且不等,现要求,当T1、T2、T3任务全部执行成功,T执行成功,当任意一个任务执行失败,要求快速返回失败T失败,并且取消掉,其它任务的执行。package org.apache.commons.lang3;import java.text.ParseException;import java.util.concurrent.Callable;import java.util.concurrent.C原创 2021-08-15 18:39:16 · 99 阅读 · 0 评论 -
活锁
目录1、活锁的概念2、活锁代码示例2.1 代码示例2.2 程序运行结果3、解决活锁的两种方案3.1 重试时休眠一个随机时间再进行重试3.2 严格控制获取资源的顺序1、活锁的概念 概念与定义:是指两个或两个以上的进程(或线程)在执行过程中,因不断地尝试性获取资源而造成的一种无限循环的现象。2、活锁代码示例2.1 代码示例package com.autocoding.lock.livelock;import java.util.concurren...原创 2021-04-11 17:10:43 · 558 阅读 · 0 评论 -
设计一个批量任务执行框架
1、背景2、源码原创 2021-04-05 09:33:19 · 235 阅读 · 0 评论 -
多线程扫描计算机文件列表
目录1、场景描述2、程序运行结果3、知识点4、源码1、场景描述 题目要求:扫描计算机 D盘、E盘、F盘指定目录下所有的文件,要求把所有文件名,分别输出到 C盘下:C.txt、D.txt、E.txt 1、要求 D盘、E盘、F盘分别使用三个线程去扫描 2、要求 生成【 C.txt、D.txt、E.txt 】 也要使用另外3个线程去执行,先扫描完成的目录,先生成对应的文件 3、在主线程中统计整个操作耗时多少秒2、程序运行结果20...原创 2021-04-04 17:12:57 · 578 阅读 · 0 评论 -
线程池最佳实践
目录1、背景2、测试用例2.1 测试用例2.2 运行结果3、源码下载1、背景为了解决以下几个重要的问题:1、向线程池中提供的任务如果执行发生异常,通过没有任何日志输出2、无法监控线程池运行信息、任务执行情况3、无法对任务指定优先级,并保证高优先级的任务优先得到执行2、测试用例核心类如下:2.1 测试用例package com.autocoding.threadpool;import java.util.LinkedList;import j.原创 2021-03-14 17:11:59 · 215 阅读 · 4 评论 -
AtomicReference详解
1、AtomicReference应用场景2、AtomicReference面临的问题2.1 ABA问题2.2 只能原子更新一个共享变量2.3 自旋导致cpu空转性能不高3、代码示例package com.autocoding.juc.atomic;import java.util.LinkedList;import java.util.List;import java.util.concurrent.TimeUnit;import java.util.con..原创 2021-02-15 12:58:29 · 492 阅读 · 0 评论 -
并发相关面试题
目录1、请 尽 可 能 详 尽 地 对 比 下 Synchronized 和 ReentrantLock 的 异 同 。1.1 从实现原理上分析1.2 从功能上进行分析1.3 从性能上进行分析1.4 从使用上进行分析1、请 尽 可 能 详 尽 地 对 比 下 Synchronized 和 ReentrantLock 的 异 同 。1.1 从实现原理上分析 Synchronized 是JVM层面的实现,通过在互斥区前后增加两条指令:MonitorEnter 、M...原创 2021-02-06 12:05:29 · 569 阅读 · 0 评论 -
线程池常见面试题
目录1、创 建 线 程 池 的 几 个 核 心 构 造 参 数 ?2、线 程 池 中 的 线 程 是 怎 么 创 建 的 ? 是 一 开 始 就 随 着 线 程 池 的 启 动 创 建 好 的 吗 ?3、Java 中 默 认 实 现 好 的 线 程 池 又 有 哪 些 呢 ? 请 比 较 它 们 的 异 同 。3.1 SingleThreadExecutor 线 程 池3.2 FixedThreadPool 线 程 池3.3CachedThreadPool 线 程 池3.4...原创 2021-02-06 10:36:34 · 710 阅读 · 0 评论 -
Java中XML技术大总结
目录1、JDK提供的两种XML原生解析方式2、Jdom/Dom4j2.1 Jdom2.2 Dom4j3、OXMapping技术4、XML序列化反序列化技术1、JDK提供的两种XML原生解析方式2、Jdom/Dom4j2.1 Jdom2.2 Dom4j3、OXMapping技术4、XML序列化反序列化技术...原创 2021-01-25 09:47:09 · 1111 阅读 · 0 评论 -
如果设置最合理的ThreadPool大小与合理的BlockingQueue大小
原文:https://www.javacodegeeks.com/2012/03/threading-stories-about-robust-thread.htmlThreading stories: about robust thread poolsPosted by:Ilias TsagklisinCore JavaMarch 26th, 2012085 ViewsADVERTISEMENTAnother blog of my threading series. Thi...转载 2021-01-23 21:54:43 · 1015 阅读 · 0 评论 -
TCP粘包/分包总结
1、TCP粘包/分包现象在TCP通信过程中,客户端与服务端是通过Socket进行通信的,数据的发送为了提高效率,采用了高效的Nagle算法,发送方将数据发送给Socket缓冲区,当缓存区满了或者时间超时,发送方Socket会将数据发送互接收方。这里就会引起一个问题,如果发送方一次性发送的数据太大了,缓冲区无法一次性完成缓冲与发送,就会将数据进行分包分多次写入缓冲区,多次进行发送,这就是分包现象。而粘包是指数据接收方,在接收方缓冲区中,接收到了多个数据包,多个数据包前后首尾相连,接收方缓冲区越小,发生原创 2021-01-23 16:20:32 · 1214 阅读 · 0 评论 -
Java序列化与反序列化的深度思考
Java序列化与反序列化原创 2021-01-21 14:13:57 · 1337 阅读 · 0 评论 -
Git分支管理
目录1、Git Flow2、GitHub Flow1、Git Flow参考文档:git flow2、GitHub Flow参考文档:github flow原创 2021-01-20 10:50:15 · 1206 阅读 · 1 评论 -
Java通信协议的选择
目录1、HTTP通信协议2、RPC通信协议3、MQ通信协议4、Netty通信协议1、HTTP通信协议2、RPC通信协议3、MQ通信协议4、Netty通信协议原创 2021-01-17 12:04:22 · 104 阅读 · 0 评论 -
基于web应用实时消息推送方案
目录1、客户端主动轮询2、websocket3、webhook web系统有时候有这么一种需要,服务端有一些数据变更,需求及时通知web客户端,在目前HTTP协议通信约束下是不太方便的,因为web客户端与服务器是单工通信方式,只能客户端向服务器发送请求,而服务器是无法主动向客户端发送请求,在这种约束条件下,我们如果有从服务端向客户端发送请求的需要,该如何实现,本文主要描述了三种方案,并对三种方案进行对比分析。1、客户端主动轮询2、websocket...原创 2021-01-04 11:19:50 · 180 阅读 · 1 评论 -
Java多线程之间如何进行通信?
1、Object.wait()与Object.notify()/notifyAll()2、Thread.join() 面试题:新建 T1、T2、T3 三个线程,如何保证它们按顺序执行?代码如下:package com.autocoding.juc;import java.util.concurrent.TimeUnit;import lombok.extern.slf4j.Slf4j;/** * * 面试题:新建 T1、T2、T3 三个线程,如何保证它们按顺...原创 2021-01-02 10:57:59 · 1170 阅读 · 3 评论 -
记录一次敏感词过滤算法DFA的应用案例
目录1、为什么要用DFA2、DFA工具类实现3、性能对比效果3.1 普通关键字过滤3.2 DFA关键字过滤1、为什么要用DFA2、DFA工具类实现3、性能对比效果3.1 普通关键字过滤JMH代码如下:package com.autocoding.hutool;import java.util.ArrayList;import java.util.List;import java.util.concurrent.TimeUnit;i...原创 2020-12-24 17:33:13 · 2305 阅读 · 1 评论 -
使用JMH对Hutool中的TreeUtil进行Benchmark测试
目录1、Eclispe安装插件2、Maven增加依赖3、JMH测试代码4、Benchmark测试结果1、Eclispe安装插件 在eclipse中安装m2e-apt插件2、Maven增加依赖 在pom.xml中增加依赖项 <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-core</artifac...原创 2020-12-22 16:38:24 · 1204 阅读 · 0 评论 -
Java池化技术应用
1、为什么要使用池技术?2、池技术与FlyWeight设计模式3、池技术应用commons-pools3.1、Redis连接池3.2、DataBase连接池3.3、MQ连接池3.4、线程池ThreadPool原创 2020-12-07 16:29:39 · 1251 阅读 · 0 评论 -
Java死锁
目录1、示例代码2、Java VisualVM监控3、JConsole监控1、示例代码package com.gazgeek.helloworld.deadlock;/** * 死锁示例 * * @author Administrator * */public class DeadLockDemo { // 资源1 private static Object resource1 = new Object(); // 资源1 private static O原创 2020-12-06 10:47:10 · 1176 阅读 · 0 评论 -
Java单例模式经典的3个实现
1、饥饿加载模式2、Double Check 懒加载模式3、静态内部类 懒加载模式原创 2020-11-25 21:43:27 · 1617 阅读 · 0 评论 -
Java线程池基础&ThreadLocal传递线程池&任务监控
1、Jdk 线程池介绍1.1 固定大小线程池(FixedThreadPool)1.2 单线程线程池(SingleThreadPool)1.3 可缓存的线程池(CachedThreadPool)1.4 可调度线程池(ScheduledThreadPool)1.5 工作窃取线程池(WorkStealingThreadPool)1.6 自定义线程池(TheadPool)2、Jdk 线程池遇到的两个问题2.1 ThreadLocal无法传递2.1 线程池无法实现...原创 2020-11-25 21:45:00 · 4003 阅读 · 0 评论