Open realpdai opened 3 years ago
@JoeyHe912
有序集合的成员是唯一的,但分数(score)却可以重复。【集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。】 方括号中的内容在这里好像不太对
感谢指出,已经更新
@1401236660
HashSet不是基于HashMap实现的吗
是基于HashMap实现
感谢大佬回复在这个页面中Hashset的表述似乎有点问题
------------------ 原始邮件 ------------------ 发件人: "realpdai/tech-arch-doc-comments" @.>; 发送时间: 2022年5月4日(星期三) 晚上9:11 @.>; @.**@.>; 主题: Re: [realpdai/tech-arch-doc-comments] [Vssue]反馈问题 (#5)
@1401236660
HashSet不是基于HashMap实现的吗
是基于HashMap实现
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
@1401236660
感谢大佬回复在这个页面中Hashset的表述似乎有点问题
------------------ 原始邮件 ------------------ 发件人: "realpdai/tech-arch-doc-comments" @.>; 发送时间: 2022年5月4日(星期三) 晚上9:11 @.>; @.**@.>; 主题: Re: [realpdai/tech-arch-doc-comments] [Vssue]反馈问题 (#5)
@1401236660
HashSet不是基于HashMap实现的吗
是基于HashMap实现
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
反馈问题时:
作者你好,java基础中有一个打印的输出英文错误了,Instument -> Instrument。
@XiangqiancaoClark
作者你好,java基础中有一个打印的输出英文错误了,Instument -> Instrument。
感谢指出,已经修正
https://pdai.tech/md/algorithm/alg-sort-x-select.html 选择排序的稳定性 选择排序不是稳定的算法
作者大大,你的项目部分,两年没更新了,说,是不是不想更新了.
MyBatis的缓存机制整体设计以及二级缓存的工作模式## 输入图片说明
最后多了个尾巴
最理想的解决方案就是: 对于某些表执行了更新(update、delete、insert)操作后,如何去清空跟这些表有关联的查询语句所造成的缓存; 这样,就是以很细的粒度管理MyBatis内部的缓存,使得缓存的使用率和准确率都能大大地提升。
那么 如何去清空跟这些表有关联的查询语句所造成的缓存 呢?
作者您好,在https://www.pdai.tech/md/db/sql-lan/sql-lan.html SQL语言 - SQL语法基础一章中,修改表一节,可以增加一个修改字段名称和属性的SQL
-- ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型 约束条件 ALTER TABLE mytable CHANGE col col1 CHAR(32) NOT NULL DEFAULT '123';
@WhiskyZW
https://pdai.tech/md/algorithm/alg-sort-x-select.html 选择排序的稳定性 选择排序不是稳定的算法
你提的这个点很好,在选择排序的算法稳定性上是有一些争议的:
不过,一般提到排序算法时,大家往往会默认是数组实现,所以认为选择排序是不稳定的。
(感谢指出,已经补充了相关内容)
@smallMQ
作者大大,你的项目部分,两年没更新了,说,是不是不想更新了.
目前正在更新SpringBoot相关的文章,后续会重新整理下项目部分
@JoeyHe912
MyBatis的缓存机制整体设计以及二级缓存的工作模式## 输入图片说明
最后多了个尾巴
最理想的解决方案就是: 对于某些表执行了更新(update、delete、insert)操作后,如何去清空跟这些表有关联的查询语句所造成的缓存; 这样,就是以很细的粒度管理MyBatis内部的缓存,使得缓存的使用率和准确率都能大大地提升。
那么 如何去清空跟这些表有关联的查询语句所造成的缓存 呢?
感谢指出,已更新
@CodeHourra
作者您好,在https://www.pdai.tech/md/db/sql-lan/sql-lan.html SQL语言 - SQL语法基础一章中,修改表一节,可以增加一个修改字段名称和属性的SQL
-- ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型 约束条件 ALTER TABLE mytable CHANGE col col1 CHAR(32) NOT NULL DEFAULT '123';
感谢,已经增加
作者在底下把代码的文件名写上比较方便查看。
快速排序 https://www.pdai.tech/md/algorithm/alg-sort-x-fast.html 配图后面的过程注释写得不对,看有点绕。 你可以参考这篇文章:https://wiki.jikexueyuan.com/project/easy-learn-algorithm/fast-sort.html 非常通俗易懂。每次交换都是左右两边,分别比 x 大和小的两个数交换位置。示例代码应该尽量简洁易懂,别的不说就打印数组,明明可以 System.out.println(Arrays.toString(a)); 搞定,非要写 for 语句,看得累啊。
@aniual
作者在底下把代码的文件名写上比较方便查看。
是哪块的代码
@zbseoag
快速排序 https://www.pdai.tech/md/algorithm/alg-sort-x-fast.html 配图后面的过程注释写得不对,看有点绕。 你可以参考这篇文章:https://wiki.jikexueyuan.com/project/easy-learn-algorithm/fast-sort.html 非常通俗易懂。每次交换都是左右两边,分别比 x 大和小的两个数交换位置。示例代码应该尽量简洁易懂,别的不说就打印数组,明明可以 System.out.println(Arrays.toString(a)); 搞定,非要写 for 语句,看得累啊。
感谢你的建议
https://www.pdai.tech/md/db/nosql-redis/db-redis-data-types.html Redis 入门-数据类型:5种基础数据类型详解中,list列表下。「命令使用」表格的最后一行-「使用」一列,LINEX key index,LINEX 少了字母 D。应该是 LINDEX
@yangleduo617
https://www.pdai.tech/md/db/nosql-redis/db-redis-data-types.html Redis 入门-数据类型:5种基础数据类型详解中,list列表下。「命令使用」表格的最后一行-「使用」一列,LINEX key index,LINEX 少了字母 D。应该是 LINDEX
感谢指出,已经更新
作者你好 链接 https://www.pdai.tech/md/project/project-a-2-2.html 中,”MyBatis栈技术例子“下两个项目的代码都访问不到
@MurphyZX
作者你好 链接 https://www.pdai.tech/md/project/project-a-2-2.html 中,”MyBatis栈技术例子“下两个项目的代码都访问不到
项目系列会重新整理。
MyBatis技术栈的例子以及SpringBoot的集成代码仓库可以看
相关系列可以看:
https://www.pdai.tech/md/java/io/java-io-basic-code-outputstream.html
这些地方的讲解太少了,有的只有一些源码注释
作者你好,在Java基础-知识点中String的intern方法中这段 在 Java 7 之前,字符串常量池被放在运行时常量池中,它属于永久代。而在 Java 7,字符串常量池被移到 Native Method 中。这是因为永久代的空间有限,在大量使用字符串的场景下会导致 OutOfMemoryError 错误。 字符串常量池一直在方法区只是java 7后hotspot通过移到堆中来实现方法区。
《关键字: synchronized详解》一文中,“可重入原理:加锁次数计数器”部分,对于可重入的分析有误。该章节举例是 执行一个 sychronized 代码块,然后继续调用一个 sychronized 修饰的静态方法,并进行以下描述:
那么这个正在执行的线程还需要获取该锁吗? 答案是不必的,从上图中就可以看出来,执行静态同步方法的时候就只有一条monitorexit指令,并没有monitorenter获取锁的指令。
第一点错误,一个 sychronized 代码块反编译后会出现一个 monitorenter 对应两个 monitorexit , 一个是正常执行结束解锁,另一个是用于异常处理情况的解锁操作。 而不是静态同步方法的monitorexit。静态方法的同步通过 flags 标记进行的。
第二点错误,假设我们把方法换成普通同步方法,那么调用普通同步方法的指令是:
invokevirtual
普通同步方法生成的字节码是:
void method();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=1
0: ldc #7 // class javatest/Sync
2: dup
3: astore_1
4: monitorenter
5: getstatic #9 // Field java/lang/System.out:Ljava/io/PrintStream;
8: ldc #26 // String method
10: invokevirtual #17 // Method java/io/PrintStream.print:(Ljava/lang/String;)V
13: aload_1
14: monitorexit
15: goto 23
18: astore_2
19: aload_1
20: monitorexit
21: aload_2
22: athrow
23: return
其中也有一组 monitorenter 和 monitorexit (数量 1: 2)。 所以,关于这部分描述,无法证明可重入特性。
@ywx2785315
https://pdai.tech/md/spring/springboot/springboot-x-mongodb-template.html 这个好像是空的
SpringBoot系列还没有更新完,持续更新中...
@Max-Lee1993
https://www.pdai.tech/md/java/io/java-io-basic-code-outputstream.html
这些地方的讲解太少了,有的只有一些源码注释
感谢指出,已经更新inputStream和outputStream的内容
@tkj4570
作者你好,在Java基础-知识点中String的intern方法中这段 在 Java 7 之前,字符串常量池被放在运行时常量池中,它属于永久代。而在 Java 7,字符串常量池被移到 Native Method 中。这是因为永久代的空间有限,在大量使用字符串的场景下会导致 OutOfMemoryError 错误。 字符串常量池一直在方法区只是java 7后hotspot通过移到堆中来实现方法区。
嗯,你说的很对,因为方法区是虚拟机规范中逻辑概念,字符串常量池属于运行时常量,从逻辑区域上说肯定是在方法区的。hostspot 在java6及之前版本,方法区是由永久代实现的,这个时期一般说方法区就是永久代;在java7中将字符串常量池和静态变量转移到了堆中实现,其它(类型信息、字段、方法、常量)仍在永久代中实现;在java8中,永久代被本地内存的元空间替代。
感谢指出,已经更新相关内容,做了更详细解释。
地址: https://pdai.tech/md/java/thread/java-thread-x-theorty.html
原子性:分时服用引起
著作权归https://pdai.tech所有。 链接:https://pdai.tech/md/java/thread/java-thread-x-theorty.html
经典的转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。 试想一下,如果这2个操作不具备原子性,会造成什么样的后果。假如从账户A减去1000元之后,操作突然中止。然后又从B取出了500元,取出500元之后,再执行 往账户B加上1000元 的操作。这样就会导致账户A虽然减去了1000元,但是账户B没有收到这个转过来的1000元。 所以这2个操作必须要具备原子性才能保证不出现一些意外的问题。
这个例子描述不清晰,“然后又从B取出了500元,取出500元之后,再执行 往账户B加上1000元 的操作” 无法推断出 “这样就会导致账户A虽然减去了1000元,但是账户B没有收到这个转过来的1000元”
Java 基础 - 反射机制详解 - 反射基础 Run-Time Type Indentification 应该是RTTI吧而不是RTIT 算一个小错误吧无伤大雅
出处:https://pdai.tech/md/java/io/java-io-basic-code-inputstream.html 副标题:InputStream 类实现关系 摘要:OutputStream是输入字节流,具体的实现类层次结构如下: 文字错误:摘要应该是 InputStream而非OutputStream
@JcyDShanks
《关键字: synchronized详解》一文中,“可重入原理:加锁次数计数器”部分,对于可重入的分析有误。该章节举例是 执行一个 sychronized 代码块,然后继续调用一个 sychronized 修饰的静态方法,并进行以下描述:
那么这个正在执行的线程还需要获取该锁吗? 答案是不必的,从上图中就可以看出来,执行静态同步方法的时候就只有一条monitorexit指令,并没有monitorenter获取锁的指令。
第一点错误,一个 sychronized 代码块反编译后会出现一个 monitorenter 对应两个 monitorexit , 一个是正常执行结束解锁,另一个是用于异常处理情况的解锁操作。 而不是静态同步方法的monitorexit。静态方法的同步通过 flags 标记进行的。
第二点错误,假设我们把方法换成普通同步方法,那么调用普通同步方法的指令是:
invokevirtual
普通同步方法生成的字节码是:
void method(); descriptor: ()V flags: (0x0000) Code: stack=2, locals=3, args_size=1 0: ldc #7 // class javatest/Sync 2: dup 3: astore_1 4: monitorenter 5: getstatic #9 // Field java/lang/System.out:Ljava/io/PrintStream; 8: ldc #26 // String method 10: invokevirtual #17 // Method java/io/PrintStream.print:(Ljava/lang/String;)V 13: aload_1 14: monitorexit 15: goto 23 18: astore_2 19: aload_1 20: monitorexit 21: aload_2 22: athrow 23: return
其中也有一组 monitorenter 和 monitorexit (数量 1: 2)。 所以,关于这部分描述,无法证明可重入特性。
感谢指出,相关文章已经更新
@pangff
地址: https://pdai.tech/md/java/thread/java-thread-x-theorty.html
原子性:分时服用引起
著作权归https://pdai.tech所有。 链接:https://pdai.tech/md/java/thread/java-thread-x-theorty.html
经典的转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。 试想一下,如果这2个操作不具备原子性,会造成什么样的后果。假如从账户A减去1000元之后,操作突然中止。然后又从B取出了500元,取出500元之后,再执行 往账户B加上1000元 的操作。这样就会导致账户A虽然减去了1000元,但是账户B没有收到这个转过来的1000元。 所以这2个操作必须要具备原子性才能保证不出现一些意外的问题。
这个例子描述不清晰,“然后又从B取出了500元,取出500元之后,再执行 往账户B加上1000元 的操作” 无法推断出 “这样就会导致账户A虽然减去了1000元,但是账户B没有收到这个转过来的1000元”
例子已经更换了,感谢指出
@ZJamss
Java 基础 - 反射机制详解 - 反射基础 Run-Time Type Indentification 应该是RTTI吧而不是RTIT 算一个小错误吧无伤大雅
已经修正,感谢指出
@zhiyu1998
MVCC中:https://www.pdai.tech/md/db/sql-mysql/sql-mysql-mvcc.html#%E4%BB%80%E4%B9%88%E6%98%AF%E5%BD%93%E5%89%8D%E8%AF%BB%E5%92%8C%E5%BF%AB%E7%85%A7%E8%AF%BB 中的undo日志第一个词错了,“Innodb”忘记写I
已经修正,感谢指出
@harlanonepiece
出处:https://pdai.tech/md/java/io/java-io-basic-code-inputstream.html 副标题:InputStream 类实现关系 摘要:OutputStream是输入字节流,具体的实现类层次结构如下: 文字错误:摘要应该是 InputStream而非OutputStream
已经修正,感谢指出
纠错 https://pdai.tech/md/java/advanced/java-advanced-spi.html
原文 接下来可以在resources下新建META-INF/services/目录,然后新建接口全限定名的文件:com.cainiao.ys.spi.learn.Search,里面加上我们需要用到的实现类 com.cainiao.ys.spi.learn.Search
问题 com.cainiao.ys.spi.learn.Search 应该是 com.cainiao.ys.spi.learn.FileSearch
@mashunjie9527
纠错 https://pdai.tech/md/java/advanced/java-advanced-spi.html
原文 接下来可以在resources下新建META-INF/services/目录,然后新建接口全限定名的文件:com.cainiao.ys.spi.learn.Search,里面加上我们需要用到的实现类 com.cainiao.ys.spi.learn.Search
问题 com.cainiao.ys.spi.learn.Search 应该是 com.cainiao.ys.spi.learn.FileSearch
感谢指正,已经修复。
@zssyrr
大佬你好,在“java并发-基础”章节(https://pdai.tech/md/java/thread/java-thread-x-theorty.html)中,关于原子性的讲解的例子中最后一句话“结果可能是1而不是2”,个人认为表述有误,是否应该改为“结果可能是2而不是3”?
good catch, 已经修复
https://www.pdai.tech/md/java/basic/java-basic-x-generic.html 如何理解类型擦除后保留的原始类型?这个标题后第四个代码块,中不指定泛型的时候,代码注解错误,应该是String类型而不是float
@jiumengyixian
https://www.pdai.tech/md/java/basic/java-basic-x-generic.html 如何理解类型擦除后保留的原始类型?这个标题后第四个代码块,中不指定泛型的时候,代码注解错误,应该是String类型而不是float
感谢指出,已经更新
@zszdevelop
- 《架构之高并发:降级和熔断》,熔断流程https://pdai.tech/md/arch/arch-y-reduce.html#%E7%86%94%E6%96%AD%E6%B5%81%E7%A8%8B
- 现在只有一张图,希望可以补充一下流程 可参考:https://www.toutiao.com/article/6835972895500403212/?&source=m_redirect&wid=1656766761850
已经补充推荐内容,感谢
大佬你好,在文章: 关键字:volatile详解(https://pdai.tech/md/java/thread/java-thread-x-key-volatile.html)中 章节:实现可见性 中间有一句话:“直观上说,这段代码的结果只可能有两种:b=3;a=3 或 b=2;a=1。”个人认为,这段代码的结果直观上说还有第三种:b=2;a=3
出自 java IO框架
https://pdai.tech/md/java/io/java-io-basic-category.html
字节流读取单个字节,字符流读取单个字符(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码是 3 个字节,中文编码是 2 个字节。)
应该是:UTF-8 编码的中文一个汉字三个字节。 GBK编码,一个汉字占两个字节。
大佬,您Spring AOP基础里,XML Schema 示例的输出结果 后置通知和最终通知顺序反了吧?我自己写代码发现后置在前
不同版本执行顺序真不一样,相同版本,schema配置和注解配置也不一样...这咋整 ^_^!!
https://www.pdai.tech/md/java/thread/java-thread-x-juc-AtomicInteger.html AtomicStampedReference解决CAS的ABA问题 输出举例是错误的正确的输出 操作线程Thread[主操作线程,5,main],初始值 a = 1 操作线程Thread[干扰线程,5,main],【increment】 ,值 = 2 操作线程Thread[干扰线程,5,main],【decrement】 ,值 = 1 操作线程Thread[主操作线程,5,main],CAS操作结果: false
https://www.pdai.tech/md/about/me/blog-question.html