![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
烫手的砖
开发者
展开
-
设计模式Demo之简单工厂模式(含代码)
简单工厂模式主要优点 简单工厂模式的主要优点如下:(1) 工厂类包含必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以 免除直接创建产品对象的职责,而仅仅“消费”产品,简单工厂模式实现了对象创建和使用的分 离。 工厂三兄弟之简单工厂模式(四)(2) 客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可, 对于一些复杂的类名,通过简单工厂模式可以在一定程度减少使用者的记忆量。(3) 通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产.原创 2022-04-09 22:08:41 · 414 阅读 · 0 评论 -
spring线程池的使用示例,测试拒绝任务和任务装饰器
corePoolSize:核心线程数。 maximumPoolSize:最大线程数。表明线程中最多能够创建的线程数量。keepAliveTime:空闲的线程保留的时间。 unit:空闲线程的保留时间单位。 BlockingQueueworkQueue:用于保存等待执行的任务的阻塞队列。可以选择以下几个阻塞队列。1、ArrayBlockingQueue:是一个基于数组结构的有界阻塞队列,此队列按 FIFO(先进先出)原则对元素进行排序。2、LinkedBlockingQueue:一个基于链表结构的阻.原创 2022-04-07 22:07:08 · 673 阅读 · 0 评论 -
ThreadLocal使用包括子线程传递实例
1.ThreadLocal的使用主要用于不同线程操作不安全变量时的线程保护 2.ThreadLocal=为Thread提供独有的ThreadLocalMap变量,通过Entry[] table方式存储线程本地变量 3.Thread持有ThreadLocal的引用,所以ThreadLocal需要设置成虚引用避免内存溢出,同时提供删除entry操作避免value值的内存溢出代码示例package com.myzy.auth.reetrantlock;public class TestThreadLoca原创 2022-04-06 22:44:22 · 880 阅读 · 0 评论 -
ReetrantReadWriteLock源码要点(面试必备)
**1.writeLock**只需要判断状态C是否有读锁或者写锁**2.readLock**判断是否拿到锁,有一下几点:是否有写锁是否有写锁在排队首(为了防止写锁被饿死,因为读锁一般可以获取到锁)是否达到读锁最大限制抢锁修改高16位,读锁状态,是否成功?读写锁使用同一个队列,状态C高16位记录读锁状态也是读锁个数,低16位记录写锁状态***以上是本人在学习过程中记录的东西,希望对你有用!!!!!**...原创 2022-04-04 22:49:52 · 263 阅读 · 0 评论 -
java 线程wait()与notify()和notifyAll做生产者消费者模式
代码如下package com.myzy.auth.reetrantlock;import java.util.concurrent.atomic.AtomicInteger;/** * 场景介绍: * 一个生产者 120个消费者 * 生产者生产目标是100个,到了100个就不生产了;同时生产者在存在可以卖的茶大于5个同时已经生产了大于10个的情况下可以休息,然后等待消费者的唤醒 * 消费者只要有茶叶都可以买,没有茶叶可以唤醒生产者,然后等待生产,除非生产者已经生产了100个而.原创 2022-03-28 22:21:37 · 151 阅读 · 0 评论 -
使用ReentrantLock+Condition实现的单个生产者多个消费者模式
代码如下import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 场景介绍: * 一个生产者 120个消费者 * 生产者生产目标是100个,到了100个就不生产了;同时生.原创 2022-03-27 15:38:43 · 705 阅读 · 0 评论 -
hashcode() equals()看懂一片够了
1 3 5 存map 实现有序存取Map<Test, Integer> map = new HashMap<>(); Test test1 = new com.myzy.auth.controller.Test(); test1.setCode(1); Test test2 = new com.myzy.auth.controller.Test(); test2.setCode(2); Test te原创 2021-08-16 22:05:42 · 62 阅读 · 0 评论 -
从jvm看String(应对面试)
从jvm看String(应对面试…(一))首先String是我们开发中很常用的引用类型,同时也很重要。位置:我们在使用String的时候可以使用字面量直接使用(String a = “abc”),也可以通过new对象来创建一个String对象来使用。那这不同的使用方式他到底放在那里呢?1.通过字面量来使用字符串,jvm会先从字符串常量池中查找是否有相同的(equals),如果有就直接从常量池中返回字符串的地址,如果没有就会在常量池中创建当前字符串然后返回地址。所以这个时候我们的字符串是放在常量池中原创 2021-05-18 23:15:49 · 99 阅读 · 0 评论 -
方法区的GC回收为什么那么难
方法区的GC回收为什么那么难背景:hotspotjvm,在jdk1.7之前,方法区的回收回收方法区主要回收的是不使用的常量以及类型。如果要回收不使用的类型首先要满足这个类以及这个类的派生类的实例在堆中没有然后加载这个类的类加载器已经被回收然后这个类的class没有被任何地方引用,就是无法在任何地方使用这个类的class所以砸门方法区的回收要求是很严格的,所以方法区也会出现很多问题,导致垃圾回收的效果不是太好。做不到方法去永久代的说法。所以java8之后取消永久代也是对整个jvm的提升,原创 2021-05-18 23:00:22 · 268 阅读 · 0 评论 -
jvm学习记录二(包会)
上一章大致介绍了jvm内存模型,下来接着各区的详细内容先从最不熟悉的来,虚拟机栈。虚拟机栈都知道是运行咱们方法的,实际上他的里面放了一个一个的栈针,同时每一个线程中都会独有一份虚拟机栈的内存空间。这是为什么呢?可以想一想,如何不是每个线程独有一份,那栈里面的栈针(每一个栈针就是一个方法)谁知道是哪个线程的,jvm也不是上帝(QUQ).所以我们的jvm大佬在设计jvm的时候每一个线程都会有一根栈资源和对应的程序计数器(各自记录自己的垃圾代码执行到哪里了)。我们的每一个栈针(就是每一个java方法原创 2021-05-16 15:17:25 · 73 阅读 · 0 评论 -
jvm学习笔记
## 本文主要记录学习jvm中的要点笔记供以后参考1.jvm整体设计架构![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514225218457.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Fubm90YXRpb25aWg==,size_16,color_FFFFFF,t_70以上图秒速了jvm原创 2021-05-14 23:28:55 · 385 阅读 · 5 评论 -
位运算基础
位运算基础位运算基础&按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0|按位或两个相应的二进制位中只要有一个为1,该位的结果值为1^按位异或若参加运算的两个二进制位值相同则为0,否则为1~取反~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1<<左移用来将一个数的各二进制位全部左移N位,右补0>>右移将...原创 2019-07-01 23:36:50 · 264 阅读 · 0 评论 -
ArrayList集合中替换某一元素
ArrayList集合中替换某一元素/** * @ClassName:ChangeElement * @Description:TODO * @Author:ZY * @Date:2019/6/25 0025 22:44 * @Version:1.0 **/public class ChangeElement { public static void main(String...原创 2019-06-25 23:13:21 · 13685 阅读 · 1 评论 -
ArrayList集合中的循环删除
ArrayList集合中的删除错误示范:ArrayList<Object> objects = new ArrayList<>(); for (int i = 0; i < 10; i++) { objects.add(i); } for (int i = 0; i < 5; i++) ...原创 2019-06-17 00:14:51 · 258 阅读 · 0 评论 -
集合之API使用大全(示例)NO.1
集合之API使用大全(示例)NO.1话不多说直接上代码:public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("0"); list.add("1"); list.add("...原创 2019-06-08 10:30:15 · 253 阅读 · 0 评论 -
json忽略空字段
json忽略空字段 @JsonInclude(JsonInclude.Include.NON_NULL) private String name; private String color; public String getName() { return name; } public void setName(String...原创 2019-06-12 22:34:44 · 2791 阅读 · 0 评论 -
枚举类的使用(java基础)
定义枚举类public enum EnumDemo { INSERT, UPDATE, FINDALL}测试方法public class MyDemo { public static void main(String[] args) { System.out.println(EnumDemo.INSERT); System....原创 2019-06-05 22:32:05 · 171 阅读 · 0 评论