JavaGuide icon indicating copy to clipboard operation
JavaGuide copied to clipboard

「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!

Results 145 JavaGuide issues
Sort by recently updated
recently updated
newest added

Hi! First of all, I just want to say that this is an amazing resource for learning Java. You have done a very good job. I'm just wondering if an...

enhancement
help wanted

"会使用 Thread内部都是使用仅有那个ThreadLocalMap 存放数据的",读了很多次,还没没读懂

_在执行monitorenter时,会尝试获取对象的锁,如果锁的计数器为 0 则表示锁可以被获取,获取后将锁计数器设为 1 也就是加 1。 在执行 monitorexit 指令后,将锁计数器设为 0,表明锁被释放。如果获取对象锁失败,那当前线程就要阻塞等待,直到锁被另外一个线程释放为止。_ 在第二段话后补的_如果获取对象锁失败,那当前线程就要阻塞等待,直到锁被另外一个线程释放为止。_ 是否应该放到第一段获取锁的描述后面?

[1.5.8. HashMap 有哪几种常见的遍历方式?](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/Java%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98.md#158-hashmap-%E6%9C%89%E5%93%AA%E5%87%A0%E7%A7%8D%E5%B8%B8%E8%A7%81%E7%9A%84%E9%81%8D%E5%8E%86%E6%96%B9%E5%BC%8F) 此处引用公众号文章中, 对于parallelStream遍历方式的性能分析有误 先说结论, 存在阻塞时parallelStream性能最高, 非阻塞时parallelStream性能最低 当遍历不存在阻塞时, parallelStream的性能是最低的: ``` Benchmark Mode Cnt Score Error Units Test.entrySet avgt 5 288.651 ± 10.536 ns/op Test.keySet avgt 5 584.594 ± 21.431...

typo

![image](https://user-images.githubusercontent.com/22882546/129992369-59afc933-c365-423b-93d2-90e03e9a2b1c.png) 在此处,建议作者把 Class clazz = ClassLoader.loadClass("cn.javaguide.TargetObject"); 改成更详细的先初始化对应ClassLoader对象,然后再通过对象调用loadClass方法,这样书写容易导致误导.

待处理

看这个文件结构是使用`docsify`做的 [docsify文档](https://docsify.js.org/#/zh-cn/quickstart) 可以考虑一下,方便阅读, 类似这种 https://googalambition.github.io/#/

enhancement
help wanted
awesome
待处理

原文 ``` 运行时常量池主要回收的是废弃的常量。那么,我们如何判断一个常量是废弃常量呢? 假如在常量池中存在字符串 "abc",如果当前没有任何 String 对象引用该字符串常量的话,就说明常量 "abc" 就是废弃常量,如果这时发生内存回收的话而且有必要的话,"abc" 就会被系统清理出常量池。 ``` 字符串常量池已经在堆中开辟一块空间存储了,运行时常量池里面没有字符串常量了。回收方法区更谈不上回收字符串常量池了,这里是有点小问题的。

enhancement
discuss

使用索引的注意事项?下第9点"删除长期未使用的索引,不用的索引的存在会造成不必要的性能损耗 MySQL 5.7 可以通过查询 sys 库的 chema_unused_indexes 视图来查询哪些索引从未被使用",视图应该为 "schema_unused_indexes".

静态方法是属于类的而动态方法属于实例对象,因此在类加载的时候就会为其分配内存,可以通过类名直接去访问,非静态成员(变量和方法)属于类的对象,所以只有该对象初始化之后才存在,然后通过类的对象去访问。所以说如果我们在静态方法中调用非静态成员变量会超前,可能会调用了一个还未初始化的变量,因此编译器会报错。

enhancement

https://snailclimb.gitee.io/javaguide/#/docs/java/basis/Java%E5%B8%B8%E8%A7%81%E5%85%B3%E9%94%AE%E5%AD%97%E6%80%BB%E7%BB%93 知识点:为什么构造器中this()和super()构造器调用方法必须放在第一行并且**二者不能同在一个构造方法**。 原因: 我的理解是:实质上就是保证实例要从父类开始逐级初始化,完成各个子父类属性加载和方法重写覆盖、叠加成最终实例的属性和方法。super()和this()构造方法调用的最终结果都是完成一次初始化过程,为了不对对象反复初始化,因为二者既不能在同一个构造方法,而且也必须在第一行。(我JVM知识不够,不能从底层解释。) super(参数列表)执行的操作父类初始化,为了保证初始化的顺序(父类到子类逐层初始化),其需要放在构造方法的第一行。当第一行没有写super()语句时,编译器会自动在构造方法的第一行加上无参super()语句。所以不管子类实例有多少重载的构造方法,最终层的构造器都会在第一行显式或者隐式的调用super(参数列表)才能保证初始化顺序。 this(参数列表)调用实例构造方法,最终结果都是完成父类的初始化,如果不放在第一行,隐式无参的super()就会导致对象反复初始化。 如果super(参数列表)和super(参数列表)同时在同一个构造方法里不论二者顺序,也会导致对象反复初始化。 参考: [https://blog.csdn.net/jianbai_/article/details/97424949](https://blog.csdn.net/jianbai_/article/details/97424949) 希望能和大家探讨学习下各自的理解

discuss