![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java
记录基础知识
胡歌_北京分歌
菜鸟养成计划
展开
-
【十年老java都不一定知道的秘密】【mybatis sqlsession 一级缓存 什么时候创建的 什么时候销毁的】springboot+mysql+mybatis
springboot 或者mvc 集成mybatis后。不需要我们手动创建和销毁sqlsession,这会让人产生很大的困惑,sqlsession 究竟是什么时候创建的 什么时候销毁的。我怎么知道我的查询是否能够使用一级缓存。如果我循环分页查询数据 不需要一级缓存来占用我们程序的内存 我们应该怎么处理来保证不使用一级缓存?我搜索了很多相关资料,没有一处能讲的明白,所以那就我来验证一下。controllerservice@Override// mapper 两个 是否相同。原创 2024-07-26 16:19:49 · 599 阅读 · 0 评论 -
【synchronized】再也不迷惑究竟锁到了什么
synchronized 锁 看看锁哪里了。class 和 对象是不同的 ,方法上加 static 会锁在 class 上。不加会锁对象上。同一个对象的 多个 synchronized 是存在竞争的不同对象的 相同 synchronized 方法 是不存在竞争的。原创 2024-04-04 21:49:18 · 1629 阅读 · 0 评论 -
【多线程】奇奇怪怪的问题
jstack是java虚拟机自带的一种堆栈跟踪工具。jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息。原因 threadStatus 初始值是0 跑过一次后是个非0的值 在第二遍就会报错。使用arthas 执行 thread -b 可以检查死锁。执行后如果有死锁直接就输出详细信息了。原创 2024-04-04 20:59:12 · 236 阅读 · 0 评论 -
Java【线程池】你应该了解的所有知识点
问题:那同样存在另外一个问题 假如我的阻塞队列使用的是优先级队列,且最大容量为100 ,核心线程数5 最大线程数10,我按优先级从高到低 依次发送115个任务,核心线程数5个线程正在执行优先级最高的5个任务,队列里存放在优先级从6到第105个任务,优先级为106到115的任务创建了最大线程数来执行,这样是不是就不满足优先级高的任务先执行了?线程池使用阻塞队列的原因主要是为了解决线程之间的协作和任务管理问题。当阻塞队列已满,且线程池中的线程数小于最大线程数时,线程池会创建额外的线程来执行新提交的任务。原创 2024-04-04 16:57:50 · 744 阅读 · 0 评论 -
JDK 版本变化 历史 和对应功能示例
Java 9模块化系统是一种运行时的模块管理机制,它改善了代码的封装性、可维护性,并提供了模块间明确的依赖关系和访问控制。Maven主要关注于项目构建阶段,它通过自动化构建流程、管理依赖等功能来简化Java项目的构建和管理。虽然两者在某种程度上都涉及到了代码组织和重用,但它们的关注点、目标和功能有着本质的不同。原创 2024-04-02 20:11:15 · 2195 阅读 · 0 评论 -
ConcurrentHashMap很难?
知识点就这么多,看多了累脑子。原创 2024-04-01 21:36:05 · 140 阅读 · 0 评论 -
HashMap 考点 闭眼背诵 + 深入了解
根据key 来计算在数组中的位置时 使用到key的hashcode 此时会使用key的hashCode 异或自己的高十六位 与上。扩容的时候 会扩容自己的2倍,在扩容时,旧的数组的位置要么是在原位置 要么是在原位置数加上原来的容量的位置。此时有一个巧妙算法,新增加的一位二进制数 直接与hashkey 就可以获得在新数组中的位置了。为了解决极端情况下 hash冲突导致的获取键值效率低的问题。数组大小减一的值 来计算key在数组中的位置。初始默认大小为16 默认负载因子0.75。,这样的修改 可以使得。原创 2024-04-01 20:50:42 · 312 阅读 · 0 评论 -
AQS (AbstractQueuedSynchronizer 抽象队列同步器)重要知识概述
Node 节点的属性有 前指针 后指针 当前线程。Node节点的 head 和tail。我们要了解到的她的重要属性是。如果有锁 则会存储当前锁的线程。维护需要加锁的排队的线程。原创 2024-04-01 20:37:39 · 200 阅读 · 0 评论 -
都有哪些阻塞队列
ArrayBlockingQueue:基于数组的有界阻塞队列。它具有固定的容量,需要在创建时指定。ArrayBlockingQueue内部使用ReentrantLock进行同步。由于基于数组实现,它的吞吐量和性能表现较为稳定,适用于需要固定容量的场景。LinkedBlockingQueue:基于链表的阻塞队列。它可以是有界的,也可以是无界的(默认情况下容量为Integer.MAX_VALUE)。LinkedBlockingQueue内部使用两把锁(分别用于插入和删除操作)进行同步,以实现更高的并发性能。原创 2024-04-01 20:30:32 · 179 阅读 · 0 评论 -
volatile 关键字
1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。2)禁止进行指令重排序。截图源码来自于jdk8。原创 2024-04-01 20:26:38 · 197 阅读 · 0 评论 -
【泛型】的三种使用
Java 泛型(generics)是 JDK 5 中引入的特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。原创 2024-04-01 20:13:38 · 104 阅读 · 0 评论 -
记录 特殊的循环跳出方法 continue return 加 retry标识的用法
【代码】记录 特殊的循环跳出方法 continue return 加 retry标识的用法。原创 2024-04-01 20:04:51 · 108 阅读 · 0 评论 -
【多线程的三种实现方式】
start():新启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到 CPU 时间片,就开始执行 run() 方法。run():普通的方法调用,在主线程中执行,不会新建一个线程来执行。原创 2024-04-01 19:46:21 · 110 阅读 · 0 评论 -
【面试考点】 String s = new String(“xyz“) 创建了几个对象
如果字符串常量池里没有“xyz”,则创建一个放常量池里,再创建一个对象放堆里,堆里的对象引用常量池里的“xyz”.如果字符串常量池里有“xyz”,则创建一个对象放堆里,去引用常量池里的“xyz”.原创 2024-03-30 17:36:14 · 110 阅读 · 0 评论 -
【面试考点】 String和StringBuilder、StringBuffer的区别
StringBuilder:StringBuffer 的非线程安全版本,没有使用 synchronized,具有更高的性能,推荐优先使用。String:String 的值被创建后不能修改,任何对 String 的修改都会引发新的 String 对象的生成。StringBuffer:跟 String 类似,但是值可以被修改,使用 synchronized 来保证线程安全。(翻源码看看 就这俩 用的时候看看呗,为啥一定要记得住 我就记住不)原创 2024-03-30 17:30:32 · 77 阅读 · 0 评论 -
java异常类速看
OutOfMemoryError 堆内存溢出异常(看看是不是在不听的创建对象还无法销毁)StackOverflowError 堆栈溢出异常(常见示例 ab俩方法互相无限调用)NullPointerException 空指针异常("."前面的为空了)FileNotFoundException 文件找不到异常。InterruptedException 线程的异常。ClassCastException 类型转换异常。RuntimeException 运行时异常。IOException 输入输出异常。原创 2024-03-30 17:26:27 · 107 阅读 · 0 评论 -
Integer 类型的值比较大小 必须用equals的原因
【代码】Integer 类型的值比较大小 必须用equals的原因。原创 2024-03-30 17:07:15 · 158 阅读 · 0 评论 -
java基本数据类型长度
在计算机中 存储信息最小的单位是bit(比特、位 、比特位) 1 bit 只有0和1 两种状态。8bit 是一个字节 Byte。原创 2024-03-30 16:51:20 · 127 阅读 · 0 评论 -
原码补码反码
反码: 正数的反码 是原码本身。负数的反码 是符号位不变 其余位取反。负数的补码是反码加1。1 的原码是 0000,0001。-1的原码是 1000,0001。2 的原码是 0000,0010。3 的原码是 0000,0011。1 的反码是 0000,0001。-1的反码是 1111,1110。2 的反码是 0000,0010。3 的反码是 0000,0011。1 的反码是 0000,0001。-1的反码是 1111,1111。2 的反码是 0000,0010。3 的反码是 0000,0011。原创 2024-03-30 16:43:46 · 126 阅读 · 0 评论