![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础理论
文章平均质量分 87
Java基础理论
一码归一码@
为我引杯添酒饮,与君把箸击盘歌
展开
-
并发编程下的集合:数组寻址、LinkedList、HashMap、ConcurrentHashMap
如果发现hash取模后的数组索引位下无元素则直接新增,若不是空那就说明存在hash冲突,则判断数组索引位链表结构中的第一个元素的key以及hash值是否与新的key一致则直接覆盖,若不一致则判断当前的数组索引下的链表结构是否为红黑树,若为红黑树则走红黑树的新增方法,若不为红黑树则遍历当前链表结构,遍历中发现某个节点元素的next为null是则直接将新元素指针与next进行关联,若在遍历到next为空前判断到,某个节点的key以及key的hash值与新的key与新的keyhash值一致时则走覆盖。原创 2024-01-04 11:17:45 · 1345 阅读 · 0 评论 -
Java集合基础篇:ArrayList与LinkedList、ArrayList与Vector、HashMap1.7与1.8、HashTable、ConcurrentHashMap 的区别
简而言之,数据是存放在堆内存中的,oldTable与newTable之间的移动是改变了每一个节点引用,并不是改变了数据,头插法的问题关键在于链表相互关联,导致死循环,cpu暴增100%问题。HashTable采用的是rehash方法进行扩容,而HashMap采用的是resize方法进行扩容。1.8中若resize空参会创建Table有参则是扩容,而1.7中的resize只是扩容。HashMap1.7用的是数组加链表,1.8用的数组加链表加红黑树。1.7是先扩容后插入,1.8是先插入后扩容。原创 2023-12-04 11:27:26 · 1009 阅读 · 1 评论 -
JDK 21 新特性一览
通过高效地调用外来函数(即 JVM 之外的代码)和安全地访问外来内存(即 JVM 管理之外的内存),API 使 Java 程序能够调用本地库和处理本地数据,而不会出现 JNI 的脆性和危险。与使用单独的 Java 不同,学生可以为单类程序编写精简的声明,然后随着技能的提高无缝扩展他们的程序,使用更高级的功能。使用未命名模式和未命名变量来增强 Java 语言的功能。字符串模板,可以像其他语言那样子方便的做字符串拼接,是+号,StringBuilder,MessageFormat之外更方便的字符串拼接方法。原创 2023-11-28 13:34:50 · 2560 阅读 · 0 评论 -
Jdk1.8日期类(LocalDate、LocalTime、LocalDateTime)
Jdk1.8新增三大日期常量类,与String类相同都是通过final来修饰,线程安全。LocalDate:表示日期(年月日)LocalTime :表示时间(时分秒)LocalDateTime:表示时间+ 日期 (年月日时分秒),是java8最常用的日期类。原创 2023-12-05 13:41:11 · 1988 阅读 · 0 评论 -
SpringCloud Alibaba集成 Gateway(自定义负载均衡器)、Nacos(配置中心、注册中心)、Loadbalancer
要为未被某些网关路由谓词处理的请求提供相同的CORS配置,请将属性spring.cloud.gateway.globalcors.add-to-simple-url-handler-mapping设置为true。断言(Predicate):Java8中的断言函数,Spring Cloud Gateway中的断言函数输入类型是 Spring5.0框架中的ServerWebExchange。对于所有GET请求的路径,来自docs.spring.io的请求都将允许CORS请求。原创 2023-12-27 09:54:24 · 3411 阅读 · 3 评论 -
Java常量池理论篇:Class常量池、运行时常量池、String常量池、基本类型常量池,intern方法1.6、1.7的区别
JDK1.6intern方法:变量hello调用intern方法,首先会去String常量池中找是否有hello这个常量,当发现未找到时则把堆中的hello对象的“hello”复制到String常量池,若发现String常量池中有“hello”时则会将常量池中的“hello”返回给helloTwo。基本类型的常量池更偏向于缓存的概念,每个基本类型的包装类都有对应的内部缓存类,若发现所需数据已完成缓存则直接从缓存对象的cache数组中获取。运行时常量池区域是在方法区中。String intern方法。原创 2023-12-05 13:41:21 · 1334 阅读 · 1 评论 -
后端-锁专题:synchronized(java对象结构、锁的类型、锁升级流程...)
jvm启动后四秒对象为匿名偏向锁,当对象被某线程尝试加锁并加锁成功后升级为偏向锁,当其他线程也尝试获取该锁资源时,就会升级为轻量级锁,这时竞争的线程就会一直cas去尝试加锁。匿名偏向锁:JVM启动后根据参数-XX:BiasedLockingStartupDelay配置的几秒后创建的对象都是匿名对象,默认是四秒,四秒后创建的对象在偏向标记位为1,此时mark word的线程id为0。偏向锁:当有线程获取到锁后,该锁的状态为偏向锁,偏向锁标记位为1且线程id不为0。boolean:8字节 64位。原创 2023-11-21 18:02:17 · 569 阅读 · 0 评论 -
Java 使用oshi获取当前服务器状态cpu、内存、存储等核心信息
获取时与windows窗口等查看CUP利用率的信息有差异,本身CUP利用率存在很大的波动。原创 2023-12-08 10:31:04 · 2848 阅读 · 1 评论 -
并发:并发的三大特性以及三大问题、volatile 如何保证可见性有序性的、什么是重排序,为什么要禁止重排序、什么是并发什么是并行
保证一段代码或者说一段逻辑,在一段时间内只有一个线程去执行,要么成功要么失败,这个期间不被其他线程所干扰。从JMM角度来看问题,count++非原子操作场景,以下是JMM进行count++的流程:1、count首先会从主内存中read操作读取出来。2、count会被load操作读到工作副本中。3、count会通过use操作交给执行引擎去操作。4、最后赋值assign到工作副本中。5、将工作副本中的count通过store转送至主内存。6、通过write操作写入主内存这一系列操作中每一个操作都是原子操作,但是原创 2023-11-17 13:51:45 · 36 阅读 · 0 评论 -
Java 类加载机制,什么是双亲委派、双亲委派机制是什么,带来的好处是什么、类的加载流程
java 类加载机制与流程,双亲委派机制原创 2023-11-16 14:56:25 · 35 阅读 · 1 评论