java基础
文章平均质量分 91
❀神花❀
忙着上班,暂时没时间更新博客
展开
-
Java基础复习(九):异常、枚举、反射、注解
文章目录异常枚举反射注解Java复习的差不多了,但是怕面试挑冷门知识点问,还是集中做一个总结吧异常枚举反射注解原创 2021-10-16 12:44:53 · 736 阅读 · 0 评论 -
遇到的关于Java迭代器的奇怪问题——迭代中remove不抛异常
某个和迭代器相关的问题。在最近的面试和笔试中遇到多次。ArrayList<String> integers = new ArrayList<>(); integers.add("1"); integers.add("2"); for(String s:integers){ if(s.equals("1")){ integers.remove("1"); }原创 2021-09-23 22:35:29 · 367 阅读 · 0 评论 -
谈谈Java序列化与深拷贝
文章目录序列化理解太难了,光搁那复习多线程和集合了,结果面试现在都挑序列化问序列化理解原创 2021-09-10 13:47:15 · 807 阅读 · 0 评论 -
浅谈spring框架
文章目录spring理解IOC和DI理解AOPIOC原理AOP原理事务传播行为bean生命周期循环依赖问题注解的实现模拟框架识别注解springMVC理解MVC请求处理流程springBoot设计模式spring理解IOC和DI理解AOPIOC原理AOP原理事务传播行为bean生命周期循环依赖问题注解的实现模拟框架识别注解springMVC理解MVC请求处理流程springBoot设计模式...原创 2021-07-25 18:56:19 · 372 阅读 · 1 评论 -
聊一聊GC的内容
文章目录堆区的内存清理对象判活可达性分析STW安全点并发的可达性分析GC算法标记复制算法标记清除算法标记整理算法跨度引用问题经典垃圾回收器serialserial OldparNewparallel scavengerparallel oldCMSG1年轻代GCmixed GCFull GC常见GC参数堆区的内存清理对象判活可达性分析STW如果简单粗暴,那么就顺着GC root遍历整个对象图即可,但是如果需要顾及停顿时间,则可以考虑并发的可达性分析安全点并发的可达性分析GC算法标记复制算法原创 2021-07-24 22:44:07 · 338 阅读 · 0 评论 -
聊聊四大引用和引用对象
文章目录四种引用引用对象引用队列终结器引用finalize方法对象的三种状态对象的回收内存泄露问题内存泄露的排查与解决threadLocal原理内存泄露问题WeakHashMap四种引用引用对象引用队列终结器引用finalize方法对象的三种状态对象的回收内存泄露问题内存泄露的排查与解决threadLocal原理内存泄露问题WeakHashMap...原创 2021-07-16 22:27:47 · 331 阅读 · 0 评论 -
设计:死锁、哲学家进餐问题
文章目录理解死锁写一个死锁检测死锁哲学家进餐问题理解死锁写一个死锁检测死锁哲学家进餐问题原创 2021-07-03 16:40:29 · 235 阅读 · 0 评论 -
java基础复习(八):聊聊synchronized和Lock/AQS
文章目录对线程安全问题的思考解构i++什么是同步和互斥线程通信为什么需要同步线程安全问题的解决方案加锁乐观锁与悲观锁无锁线程隔离threadLocal基本原理内存泄露问题Java内存模型原子/可见/有序问题的产生as-if-serial原则happens-before规则缓存一致性协议MESI缓存行总线嗅探CAS自旋锁(轻量级锁)无锁CAS存在的问题版本号CAS的内存语义synchronizedsynchronized的使用synchronize的内存语义jvm中的synchronizedsynchroni原创 2021-06-27 20:51:19 · 484 阅读 · 0 评论 -
java基础复习(七):谈谈volatile
文章目录线程安全问题出现的原因原子性可见性有序性Java内存模型JMM中的原子/可见/有序问题as-if-serial原则happens-before规则理解同步和互斥理解volatilevolatile的使用volatile的特性volatile原理解构i++对volatile变量i++的理解线程安全问题出现的原因程序最开始是静态的、原子的、顺序执行的,虽然CPU利用率不高(CPU总是能有时间偷懒),但是程序员需要操心的问题不多。为了提升效率,陆续引入进程和线程的概念,并且实现了相应的数据结构。程序变原创 2021-06-06 20:33:06 · 153 阅读 · 1 评论 -
谈谈JDBC以及mybatis框架
文章目录理解JDBCJDBC连接的本质JDBC流程mybatis框架两个占位符mybatis缓存借助反射实现:结果集封装对象设计模式理解JDBCJDBC连接的本质JDBC流程mybatis框架两个占位符mybatis缓存借助反射实现:结果集封装对象设计模式...原创 2021-06-03 17:47:49 · 370 阅读 · 0 评论 -
理解CAS与锁
文章目录理解锁CAS乐观锁和悲观锁内存语义特点ABA写一个自旋锁理解锁锁是什么?一个变量。线程A看见这个变量已经有主人了,它要么等待、要么去sleep、要么放弃,线程B释放锁就是将这个锁变量的主人重新置空。那么无论是获取锁的操作还是释放锁的操作,本身都是应该是原子的,应该是一个事务!我们平时更关心的是加锁和解锁之间的代码,那么上锁和解锁本身如何保证原子性?我只能说方式有很多,不过主流的实现方案是基于CAS指令。总结,锁就是一个变量,访问一个变量前先抢占锁,这种访问策略也称为悲观锁策略。阻塞和非阻塞主要原创 2021-06-02 17:59:23 · 581 阅读 · 0 评论 -
java基础复习(六):容器类库
文章目录理解容器的本质容器与数组容器的最佳实践思考:set、list、map接口ArrayList和linkedList共同点思考细节对比选择双向链表还是单链表选择链表还是数组随机访问复杂度对比hashMaphashCode()与hash()哈希函数的作用hashCode的作用分析hashCode的实现(31)扩容原理jdk7死循环的产生对比1.7与1.8的hashMap实现阈值问题什么是loadfactor为啥树化阈值为8,而恢复为6红黑树性质解决哈希冲突的办法哈希函数的其他实现put与get方法的实现简原创 2021-06-02 16:37:26 · 357 阅读 · 0 评论 -
java基础复习(五):线程和线程池
文章目录理解线程操作系统的线程与虚拟机的线程线程模型线程的状态创建线程的几种方式start与run本质区别线程池的引入线程池核心参数工作队列类型拒绝策略类型线程池的几种类型简述线程池原理线程池异常处理细节shutDown与shutDownNowfutureTaskexecute与submit线程池状态理解线程操作系统的线程与虚拟机的线程线程模型线程的状态创建线程的几种方式start与run本质区别线程池的引入线程池核心参数工作队列类型拒绝策略类型线程池的几种类型简述线程池原理线程原创 2021-05-23 20:19:02 · 239 阅读 · 0 评论 -
聊聊常见设计模式
文章目录单例模式饿汉式懒汉式线程安全懒汉式基于内部类基于枚举代理模式动态代理与静态代理jdk动态代理cglib动态代理迭代器模式模板方法模式适配器模式装饰者模式单例模式饿汉式懒汉式线程安全懒汉式基于内部类基于枚举代理模式动态代理与静态代理jdk动态代理cglib动态代理迭代器模式模板方法模式适配器模式装饰者模式...原创 2021-05-20 18:57:37 · 133 阅读 · 0 评论 -
java基础复习(四):面向对象深度解析
文章目录理解面向对象三大特性类与对象类加载过程static对象的创建new关键字做了什么new的执行细节this和superthis的本质this与static无法共存的本质super的本质重写与重载接口与抽象类理解面向对象三大特性类与对象类加载过程static对象的创建new关键字做了什么new的执行细节this和superthis的本质this与static无法共存的本质super的本质重写与重载接口与抽象类...原创 2021-05-17 22:46:30 · 139 阅读 · 0 评论 -
java基础复习(三):深入理解关键字final及内部类
finalfinal直译就是最终的、不改变的。它可以修饰的地方很多:局部变量、静态变量、实例变量(所有的变量,包括形参,它也是特殊的局部变量)类、方法也都可以修饰。这么看来,它似乎可以作用在任何位置。那么我们分别列举一些他们在不同位置到达的不同效果吧。【1】修饰变量:修饰任何变量,都使得为该变量开辟的内存空间仅能存放一次值,且不可以修改。这个值可以是一个字面量,也可以是一个地址值。(如果更具体一点:基本类型变量的值不能变,引用类型指向的对象不能变)【2】修饰方法:方法不能被重写。显然方法被修饰为f原创 2021-05-14 18:57:49 · 357 阅读 · 0 评论 -
java基础复习(二):深入理解 java.lang.String以及对线程安全问题的思考
标题如何理解String不可变StringString的常量池反编译:访问字面量字面量的解析字符串常量池深度分析经典问题:new String () 和 intern()String的优点如何理解String我们提到string,总是离不开“字面量”和“对象”。那么string到底底层是一个什么?string底层就是一个字符数组。如果学过C语言,肯定知道:C语言的字符数组和字符串联系非常密切。C语言通过使用’/0’标志字符串的结尾,如果而string的长度就是字符数组的长度减去尾部的’/0’。现在让你实原创 2021-05-14 15:03:00 · 2332 阅读 · 0 评论 -
java基础复习(一):对基本类型与引用类型的深度思考
目录从内存层面理解占用大小栈中存储堆中存储引用类型值与引用传递问题从内存层面理解java中具有八大基本类型,分别是boolean、byte、char、short、int、float、double、long。还有一个引用类型。其中我们可以通过引用类型间接操作对象,而我们可以通过基本类型变量直接修改内存中的值。引用类型的大小和jvm的位数有关,jvm位数的大小决定了指令所覆盖的内存范围。内存就是一个特别大的字节数组,一位的CPU能够寻址的范围为2——就是0和1。而CPU的位宽越大,CPU的寻址范围就越原创 2021-05-12 20:19:44 · 238 阅读 · 0 评论