![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 65
吃葡萄不吐葡萄皮、
这个作者很懒,什么都没留下…
展开
-
sychronized重量级锁之管程模型
管程实现之sychronized原创 2022-07-05 19:04:25 · 165 阅读 · 1 评论 -
真的了解 Java Enum吗?
真的了解 Java Enum吗?Java 中的每一个枚举都继承自 java.lang.Enum 类。当定义一个枚举类型时,每一个枚举类型成员都可以看作是 Enum 类的实例,这些枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调用成员即可。package com.wf.code.枚举类;import java.util.Arrays;public class Demo { public static void main(String[原创 2021-03-20 22:23:27 · 103 阅读 · 0 评论 -
观察者模式
观察者模式观察者模式可以叫做发布订阅模式,其实就是在发布者内部维护一个订阅者列表定义一个发布者接口package w02;public interface Publisher { void addObserver(Observer o); void remoObserver(Observer o); void notifyObserver();}定义一个观察者模式接口package w02;public interface Observer { v原创 2020-10-21 10:44:38 · 89 阅读 · 0 评论 -
Java内存模型(Java Memory Model ,JMM)
Java内存模型(Java Memory Model ,JMM)JMM是和多线程相关的,他描述了一组规则或规范,这个规范定义了一个线程对共享变量的写入时对另一个线程是可见的。目的是解决由于多线程通过共享内存进行通信时,存在的原子性、可见性(缓存一致性)以及有序性问题。原子性线程是CPU调度的基本单位。CPU有时间片的概念,会根据不同的调度算法进行线程调度。所以在多线程场景下,就会发生原子性问题。因为线程在执行一个读改写操作时,在执行完读改之后,时间片耗完,就会被要求放弃CPU,并等待重新调度。这种情况原创 2020-05-20 13:43:54 · 130 阅读 · 0 评论 -
TreeSet
TreeSetTreeSet是Set的一个子类,TreeSet集合是用来对象元素进行排序的,保证元素的唯一。那TreeSet为什么能保证元素唯一?如何指定比较的规则,需要在自定义类中实现Comparable接口,并重写接口中的compareTo()方法public class Person implements Comparable { private String name; private int age; public int compareTo(Object o)原创 2020-05-18 18:36:41 · 139 阅读 · 0 评论 -
volatile引出的单例模式之双重检查
volatile 作用!!!!保证线程可见性(MESI,利用CPU的缓存一致性协议)禁止指令重排序(CPU)单例模式之双重检查在实现单例模式时,如果未考虑多线程的情况,就容易写出下面的错误代码:public class Singleton { private static Singleton uniqueSingleton; private Singleton() { } public Singleton getInstance() { if原创 2020-05-16 14:09:12 · 576 阅读 · 1 评论 -
Synchronized
先了解两个概念:类对象、对象实例类对象(Class):首先,类是对一些列抽象事物的概括,类中包括属性,方法等。当程序中需要使用某个Class时,类 加载器先从缓存区中搜寻该Class,只有当缓存区中不存在该Class对象时,系统才会读取该类对应的二进制数据,并将其转换成Class对象,存入缓冲区中 。( 这就是为很么修改了Class后,必须重新启动JVM,程序所做的修改才会生效的原因),当我们需要实例化任何一个类时(例如 new Student() ),JVM会首先尝试看看在内存中是否有这个Stu原创 2020-05-16 13:08:00 · 125 阅读 · 0 评论 -
Java集合框架知多少?
Java集合框架知多少?Arraylist 与 LinkedList 异同是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;底层数据结构: Arraylist 底层使用的是Object数组;LinkedList 底层使用的是双向循环链表数据结构;插入和删除是否受元素位置的影响: ① ArrayList 采用数组存储,所以插入和删除元...原创 2019-08-08 19:45:58 · 157 阅读 · 0 评论 -
String和StringBuffer、StringBuilder的区别是什么String为什么是不可变的?
可变性简单的来说:String 类中使用 final 关键字字符数组保存字符串,private final char value[],所以 String 对象是不可变的。而StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串char[]value 但是没有用...原创 2019-08-08 19:05:03 · 372 阅读 · 2 评论 -
jvm调优基础以及gc(运行时数据区堆和栈)
jdk先要搞清楚jdk jre jvm之间的关系 网上找了一张图。从小往大说就是jvm(运行时数据区) 加上一些api 如JDBC JNDI 等等很多就是 jre . jre再加上 一些java自带的工具(jconsole、javaVisualVM等,下图蓝色部分)就变成了jdk ; 运行时数据区-也就是常说的堆和栈下图是jvm内存模型JMM大致图,内存分为堆内存和栈内存和栈内存。(...原创 2019-07-26 14:56:06 · 169 阅读 · 0 评论 -
int和Integer带来的坑
int和Integer带来的坑请看代码请看代码public static void mian(String[] args){ Integer a=0; Integer b=0; int c =300; int d=300; System.out.println(a==b); System.out.println(c==d);}大家猜猜输出是什么输出结果(这个结果在低版本的J...原创 2019-05-07 14:10:28 · 264 阅读 · 0 评论