
Java基础
文章平均质量分 51
Java基础
花开不识君
本来无一物,何处惹尘埃!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
AQS(AbstractQueuedSynchronizer)抽象队列同步器
AQS(AbstractQueuedSynchronizer)是构建锁和同步器的框架原创 2025-07-16 21:21:42 · 876 阅读 · 0 评论 -
ConsurrentHashMap InitTable 疑问与思考
第二个问题说到需要循环等待所有自然不可能提前return,那为什么不用sleep,因为我们并不知道另一个线程什么时候完成初始化,也就不知道sleep多少秒,多了、少了都不合适,所以干脆就让出cpu时间片,等下一次再看看,如果其他线程完成了初始化就返回,否则重复以上。ConsurrentHashMap作为单机下经常使用的一个线程安全Map值得我们学习一下,以下其初始化的过程的代码,以及学习过程中遇到的疑惑与自己的思考。通常意义下的加锁,都是去检查一个东西是否被“其他”持有,如果被持有则本次加锁尝试失败。...原创 2022-07-27 23:21:01 · 305 阅读 · 0 评论 -
浅析线程池
浅析线程池前言在很多时候我们需要使用多个线程来并行的执行任务以提高处理能力,但随时随地的创建/销毁线程既浪费系统资源,又不利于线程的管理,于是线程池应运而生Java线程池的基本参数看起来有七个参数:但平时我们比较关注其实只有:corePoolSize 、maximumPoolSize、workQueuecorePoolSize 核心线程数maximumPoolSize 最大线程数量(核心线程数+ 救济线程数 = 最大线程)KeepAliveTime 救急线程最大存活时间(指的原创 2022-02-23 22:55:51 · 262 阅读 · 0 评论 -
apache Tuple 工具类
apache Tuple 工具类maven依赖 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.7</version> </dependency>gra原创 2021-12-01 13:41:26 · 532 阅读 · 0 评论 -
JDK动态代理和CGLib动态代理的区别
前言Github:https://github.com/yihonglei/thinking-in-spring(spring工程)JDK动态代理实现原理(jdk8):https://blog.csdn.net/yhl_jxy/article/details/80586785CGLIB动态代理实现原理:https://blog.csdn.net/yhl_jxy/article/details/80633194一 JDK和CGLIB动态代理原理1、JDK动态代理利用拦截器(拦截器必须实现Invoc转载 2020-08-27 09:18:53 · 824 阅读 · 0 评论 -
Java线程池创建详解
线程池public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue,原创 2021-08-02 22:56:16 · 279 阅读 · 0 评论 -
CopyOnWriteArrayList 浅析
CopyOnWriteArrayList核心思想在名称就已经体现出来-在写的时候复制,同样也是读写分离的一种体现针对读操作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传没有使用任何锁,因为读本身就是线程安全的!针对写操作写入的时候使用了ReentrantLock,没有使用synchronized,但仍然使用了锁,使用了锁!,这时保证线程安全的根本,锁-要修改只能一个一个排队来private transient volatile Object[] array;v原创 2021-07-29 16:08:00 · 187 阅读 · 0 评论 -
为什么说Java只有值传递?
为什么说Java只有值传递?定义值传递(pass by value):在调用函数时,将实际参数复制一份传递到函数中,这样在函数中对参数进行修改,就不会影响到原来的实际参数;引用传递(pass by reference):在调用函数时,将实际参数的地址直接传递到函数中。这样在函数中对参数进行的修改,就会影响到实际参数;基本的类型无需多说,肯定是值传递。那传递一个对象(其实应该是对象的引用)呢?会是引用传递吗?explame通过一个例子来说明public class User { pu原创 2021-07-27 13:02:59 · 193 阅读 · 0 评论 -
String str = new String(“abc“) 到底创建了几个变量?
String str = new String(“abc”)创建了几个变量?我的答案是1个或者2个为什么呢?流程大概如下在常量池中查找是否有“abc”对象有则返回对应的引用实例没有则创建对应的实例对象在堆中 new 一个 String(“abc”) 对象将对象地址赋值给str4,创建一个引用所以常量池有"abc"就只创建了一个实例对象,否则会多在常量池中多创建一个对象那String str1 = new String(“A”+“B” ) 会创建多少个对象?我原创 2021-07-26 22:29:02 · 2449 阅读 · 0 评论 -
正则 ^ $ 有什么用
正则 ^ $ 有什么用[a-z] 可以用来匹配任意位置上的小写字母: "...a..."^[a-z] 只能匹配以小写字母为行首的行: "a..."[a-z]$ 只能匹配以小写字母为行尾的行: "...a"^[a-z]$ 应该只能匹配只有一个小写字母的行: "a"...原创 2021-07-22 21:12:20 · 523 阅读 · 0 评论 -
5种方法实现文件的拷贝(IO流)及比较效率
5种方法实现文件的拷贝(IO流)及比较效率复习了一下IO流,简单的写了下几种文件拷贝,不是很严谨的比较了下他们之间的效率package io_stream;import org.junit.jupiter.api.Test;import java.io.*;import java.nio.channels.FileChannel;/** * @author Huakai * @version 1.0 * @create 通过复制文件来对比字节流使用缓冲流的效率对比 * @sin原创 2021-05-08 19:26:44 · 654 阅读 · 0 评论 -
java泛型中? super T和? extends T的区别
是什么?<? extends T>:是指 上界通配符(Upper Bounds Wildcards) <? super T>表示包括T在内的任何T的**父类**<? super T>:是指 下界通配符(Lower Bounds Wildcards)<? extends T>表示包括T在内的任何T的子类...转载 2021-02-28 11:22:50 · 206 阅读 · 0 评论 -
UnsupportedOperationException
UnsupportedOperationException问题描述将Arrays.asList()的返回结果进行remove时弹出一个UnsupportedOperationException,二脸懵逼。。查找网上别的大神分析明白了原因,做个笔记! @Test public void test(){ List<String> list = Arrays.asList(",dddd,".split(",")); System.out.prin原创 2021-02-05 17:17:54 · 310 阅读 · 0 评论 -
位运算取模
我们可以利用位运算来取代部分模运算为什么我们要这样做?因为位元算直接操作内存的数据类型,不需要反复转化为十进制,如何使用?a % b == a & (b - 1) 如此替换可以完全取代%的位运算吗?不能,使用位运算只能在b 为 2^n时使用一个简单的测试例子 @Test public void tset1(){ long sTime = System.currentTimeMillis(); for (int i = 0;原创 2020-08-28 12:48:27 · 3484 阅读 · 0 评论 -
Java OOP 六大原则
Java OOP 六大原则1、单一职责原则SRP(Single Responsibility Principle)一个模块就做单个功能模块的事情,功能尽量单一,降低耦合性2、开放封闭原则OCP(Open-Close Principle)对功能的扩展开放,对修改功能严格限制3、里式替换原则LSP(the Liskov Substitution Principle LSP)字类应该可以做父亲能做的所有事情(一代更比一代强)4、依赖倒置原则DIP(the Dependency Inversion P原创 2020-08-23 10:37:44 · 421 阅读 · 0 评论