realpdai / tech-arch-doc-comments

Java 全栈知识体系 (留言区)
https://www.pdai.tech
MIT License
154 stars 44 forks source link

[Vssue]反馈问题 #5

Open realpdai opened 3 years ago

realpdai commented 3 years ago

https://www.pdai.tech/md/about/me/blog-question.html

xiangyanlin commented 2 years ago

常用开发库 - Spring常用工具类。其他工具类的package应该是org.springframework.util 而不是org.springframework.util.xml l链接:https://pdai.tech/md/develop/package/dev-package-x-spring-util.html

SSSDNSY commented 2 years ago

小建议: 关于SpringBoot统一接口封装文章中的Http状态码可以复用springframework的 HttpStatus枚举类: /spring-web/5.3.22/spring-web-5.3.22.jar!/org/springframework/http/HttpStatus.class:11

zssyrr commented 2 years ago

大佬你好 文章:JUC集合:BlockingQueue详解 链接:https://pdai.tech/md/java/thread/java-thread-x-juc-collection-BlockingQueue.html 章节:BlockingQueue 的方法 表格中的方法:element、poll、peek和take应该都是无参的😁

yang-kun-o commented 2 years ago

https://pdai.tech/md/java/thread/java-thread-x-lock-all.html

  1. 可重入锁 VS 非可重入锁

首先ReentrantLock和NonReentrantLock都继承父类AQS,其父类AQS中维护了一个同步状态status来计数重入次数,status初始值为0。

ReentrantLock 和 NonReentrantLock 并非直接继承AQS,而是使用 Sync 静态内部类去继承父类AQS,用于辅助实现

realpdai commented 2 years ago

@dreaming-coder

大佬,您Spring AOP基础里,XML Schema 示例的输出结果 后置通知和最终通知顺序反了吧?我自己写代码发现后置在前 不同版本执行顺序真不一样,相同版本,schema配置和注解配置也不一样...这咋整 ^_^!!

Spring 5.2+ 修复了这个问题

realpdai commented 2 years ago

@SSSDNSY

小建议: 关于SpringBoot统一接口封装文章中的Http状态码可以复用springframework的 HttpStatus枚举类: /spring-web/5.3.22/spring-web-5.3.22.jar!/org/springframework/http/HttpStatus.class:11

实际情况是,会结合业务场景增加很多自定义的code, 而不仅仅是HttpStatus

realpdai commented 2 years ago

@xiangyanlin

常用开发库 - Spring常用工具类。其他工具类的package应该是org.springframework.util 而不是org.springframework.util.xml l链接:https://pdai.tech/md/develop/package/dev-package-x-spring-util.html

感谢指正,已经修正

realpdai commented 2 years ago

@zssyrr

大佬你好,在文章: 关键字: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

感谢指出,已经完善

realpdai commented 2 years ago

@xiangboit

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

本地执行后,没有问题。建议执行下看看~

realpdai commented 2 years ago

@TomfengGitHub

出自 java IO框架 https://pdai.tech/md/java/io/java-io-basic-category.html 字节流读取单个字节,字符流读取单个字符(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码是 3 个字节,中文编码是 2 个字节。)

应该是:UTF-8 编码的中文一个汉字三个字节。 GBK编码,一个汉字占两个字节。

感谢指出,已经完善

realpdai commented 2 years ago

@zssyrr

大佬你好 文章:JUC集合:BlockingQueue详解 链接:https://pdai.tech/md/java/thread/java-thread-x-juc-collection-BlockingQueue.html 章节:BlockingQueue 的方法 表格中的方法:element、poll、peek和take应该都是无参的😁

感谢指出,已经修正

realpdai commented 2 years ago

@yang-kun-o

https://pdai.tech/md/java/thread/java-thread-x-lock-all.html

  1. 可重入锁 VS 非可重入锁

首先ReentrantLock和NonReentrantLock都继承父类AQS,其父类AQS中维护了一个同步状态status来计数重入次数,status初始值为0。

ReentrantLock 和 NonReentrantLock 并非直接继承AQS,而是使用 Sync 静态内部类去继承父类AQS,用于辅助实现

嗯,准确的来说确实是这样。广义上来说认为都继承父类AQS,也是可以的。

quan7u commented 2 years ago

Java NIO - IO多路复用详解 现实场景 https://pdai.tech/md/java/io/java-io-nio-select-epoll.html#%E7%8E%B0%E5%AE%9E%E5%9C%BA%E6%99%AF

于是还有一种办法(方法B),老板马上新雇佣99名服务员,同时印制99本新的菜单。 ...... 方法B: 使用线程进行处理的 阻塞式/非阻塞式 同步IO

这里比喻的多线程 BIO 不太合理,通常 Server 只能通过主线程来 accept,类比在这里每个顾客对应每个服务员感觉不太合理 应该还有个大堂经理,为每个到店的顾客指定一位服务员

LocoLi137 commented 2 years ago

秒杀项目的资料不见啦

harlanonepiece commented 2 years ago

https://pdai.tech/md/java/thread/java-thread-x-lock-AbstractQueuedSynchronizer.html#%E7%B1%BB%E7%9A%84%E6%A0%B8%E5%BF%83%E6%96%B9%E6%B3%95---acquire%E6%96%B9%E6%B3%95

【类的核心方法 - acquire方法】 里面的一个小点:调用acquireQueued方法,此方法完成的功能是Sync queue中的结点不断尝试获取资源,若成功,则返回true,否则,返回false。 这里按照JDK1.8的方法说明,应该是“等待过程中被中断,则返回true” ,而并非获取资源成功与否返回true/false.

JDK1.8注释原文: Acquires in exclusive uninterruptible mode for thread already in queue. Used by condition wait methods as well as acquire. Params: node – the node arg – the acquire argument Returns: true if interrupted while waiting

Qbsstg commented 2 years ago

大佬你好,感谢你的文章分享,有一个细节上的文字错误 文章:Spring基础-Spring核心之控制反转 链接:https://www.pdai.tech/md/spring/spring-x-framework-ioc.html#%E6%B3%A8%E8%A7%A3%E6%B3%A8%E5%85%A5 章节:注解注入 原文:byType:查找所有的set方法,将符合符合参数类型的bean注入。 问题:此处多了个符合

vickkkyz commented 2 years ago

为什么java基础部分和CS-notes的一毛一样?你们是同一个人吗?http://www.cyc2018.xyz/Java/Java%20%E5%9F%BA%E7%A1%80.html#%E4%B8%8D%E5%8F%AF%E5%8F%98%E7%9A%84%E5%A5%BD%E5%A4%84

x1200085 commented 2 years ago

Java IO - 分类(传输,操作)--IO理解分类 - 从传输方式上

https://pdai.tech/md/java/io/java-io-basic-category.html

如下内容错别字

字节是[个]{给}计算机看的

nervose commented 2 years ago

https://pdai.tech/md/java/thread/java-thread-x-key-volatile.html#%E5%AE%9E%E7%8E%B0%E5%8F%AF%E8%A7%81%E6%80%A7 中有以下描述 “为什么会出现b=2;a=3和b=3;a=1这种结果呢? 正常情况下,如果先执行change方法,再执行print方法,输出结果应该为b=3;a=3。相反,如果先执行的print方法,再执行change方法,结果应该是 b=2;a=1。那b=3;a=1的结果是怎么出来的? 原因就是第一个线程将值a=3修改后,但是对第二个线程是不可见的,所以才出现这一结果。如果将a和b都改成volatile类型的变量再执行,则再也不会出现b=2;a=3和b=3;a=1的结果了。"

私以为在VolatileTest的测试中出现a=3;b=2的情况是存在,无法通过将a和b都改成volatile类型的变量来避免。(可能的顺序:线程1执行完a=3后,线程2执行了print方法,然后线程1继续执行b=a)

ghost commented 2 years ago

MySQL - MySQL InnoDB的MVCC实现机制

内容 "作为旧记录,既在undo log中有当前行的拷贝副本",既在 -> 即在

nervose commented 2 years ago

https://pdai.tech/md/java/thread/java-thread-x-lock-AbstractQueuedSynchronizer.html#%E7%B1%BB%E7%9A%84%E6%A0%B8%E5%BF%83%E6%96%B9%E6%B3%95---acquire%E6%96%B9%E6%B3%95 中有以下描述: 调用acquireQueued方法,此方法完成的功能是Sync queue中的结点不断尝试获取资源,若成功,则返回true,否则,返回false。

这里的返回值是表示在等待获取锁的过程中是否发生过中断。在成功获取资源之前,该方法不会返回。

micro-coding commented 2 years ago

作者您好,ES详解 - 入门:查询和聚合的基础使用 https://www.pdai.tech/md/db/nosql-es/elasticsearch-x-usage.html, 批量索引文档章节中下载测试数据的下载连接已经失效,补充说明中ES官方库目录结构也已经更新。建议更新下数据下载地址:https://github.com/elastic/elasticsearch/blob/v6.8.18/docs/src/test/resources/accounts.json

Cyan-N commented 2 years ago

pdai你好。 纠错文章连接:https://pdai.tech/md/java/collection/java-collection-LinkedList.html#linkedlists%E5%AE%9E%E7%8E%B0 错误点:第二个二级标题应该是LinkedList实现,你多写了一个s(写成了LinkedLists)

zhoumaogen commented 2 years ago

堆排序介绍中图片的性质二与原文不符

QQQZZZY commented 2 years ago

https://www.pdai.tech/md/db/sql-mysql/sql-mysql-mvcc.html#mvcc的实现原理

在这个章节的序言中写的是,“它的实现原理主要是依赖记录中的 3个隐式字段,undo日志 ,Read View 来实现的”。 实际应该是4 个隐式字段。

computer-idol commented 2 years ago

错误路径: java面向对象基础 原文: 实现关系 (Realization) 用来实现一个接口,在 Java 中使用 implement 关键字 应改为 implements关键字

SummerLPeng commented 2 years ago

hi pdai 您好,首先感谢您的无私分享 在 ArrayQueue 的源码讲解中 pollFirst() 方法。代码块中的 h 变量未查询相关定义。因此我看了下 ArrayQueue 的源码。

public E pollFirst() {
    int h = head;
    @SuppressWarnings("unchecked")
    E result = (E) elements[h];
    // Element is null if deque empty
    if (result == null)
        return null;
    elements[h] = null;     // Must null out slot
    head = (h + 1) & (elements.length - 1);
    return result;
}

此处建议您有时间的时候将文档中的源码替换一下,以便后续读者能够准确的明白变量 h 的含义

754258817github commented 2 years ago

文章内容不错!好几处错别字啊 作者发布之前最好能有校验一下。

Cookie8421 commented 2 years ago

文章:Java 8 - Optional类深度解析 位置:利用一个 supplier 函数来解决嵌套路径的问题的【代码】中,第二行最后多了一个分号

SugarFatFree commented 2 years ago

网站已无法打开,https://[www.pdai.tech](https://www.pdai.tech/)/

Alexleslie commented 2 years ago

归并排序的空间复杂度是O(n)次吧

xiaoluxiang commented 2 years ago

错别字反馈

MySQL - 数据类型 链接:https://pdai.tech/md/db/sql-mysql/sql-mysql-theory.html

页尾的最后选择表示符(identifier)一节:“因为插入值会随机的写入到索引的不同位置,所以使得INSERT语句更慢。这会导致叶分裂、磁盘随机访问”。其中叶分裂,应为页分裂吧

aljg1999 commented 2 years ago

https://pdai.tech/md/java/collection/java-map-LinkedHashMap&LinkedHashSet.html LinkedHashMap除了可以保证迭代顺序外,还有一个非常有用的用法: 可以轻松实现一个采用了FIFO替换策略的缓存

上面引用的FIFO是队列,真正的策略是LRU,最近最少使用

realpdai commented 2 years ago

@aljg1999

https://pdai.tech/md/java/collection/java-map-LinkedHashMap&LinkedHashSet.html LinkedHashMap除了可以保证迭代顺序外,还有一个非常有用的用法: 可以轻松实现一个采用了FIFO替换策略的缓存

上面引用的FIFO是队列,真正的策略是LRU,最近最少使用

FIFO也是一种常见的缓存策略,和LRU是两种不同的设计。这里的例子是通过类似队列的FIFO方式来实现FIFO模式的缓存策略。

realpdai commented 2 years ago

@xiaoluxiang

错别字反馈

MySQL - 数据类型 链接:https://pdai.tech/md/db/sql-mysql/sql-mysql-theory.html

页尾的最后选择表示符(identifier)一节:“因为插入值会随机的写入到索引的不同位置,所以使得INSERT语句更慢。这会导致叶分裂、磁盘随机访问”。其中叶分裂,应为页分裂吧

thanks, 已经修正,周末发布上去。

realpdai commented 2 years ago

@Alexleslie

归并排序的空间复杂度是O(n)次吧

是的,归并排序的时间复杂度是O(N*lgN),空间复杂度是O(n)

realpdai commented 2 years ago

@SugarFatFree

网站已无法打开,https://[www.pdai.tech](https://www.pdai.tech/)/

网站应该是正常的,看看是否挂了代理,或者有额外防火墙。

realpdai commented 2 years ago

@Cookie8421

文章:Java 8 - Optional类深度解析 位置:利用一个 supplier 函数来解决嵌套路径的问题的【代码】中,第二行最后多了一个分号

thanks, 已经修复,周末更新上去。

realpdai commented 2 years ago

@754258817github

文章内容不错!好几处错别字啊 作者发布之前最好能有校验一下。

感谢建议。

realpdai commented 2 years ago

@SummerLPeng

hi pdai 您好,首先感谢您的无私分享 在 ArrayQueue 的源码讲解中 pollFirst() 方法。代码块中的 h 变量未查询相关定义。因此我看了下 ArrayQueue 的源码。

public E pollFirst() {
    int h = head;
    @SuppressWarnings("unchecked")
    E result = (E) elements[h];
    // Element is null if deque empty
    if (result == null)
        return null;
    elements[h] = null;     // Must null out slot
    head = (h + 1) & (elements.length - 1);
    return result;
}

此处建议您有时间的时候将文档中的源码替换一下,以便后续读者能够准确的明白变量 h 的含义

great, thx, 已经提交更新,会在周末更新网站。

realpdai commented 2 years ago

@computer-idol

错误路径: java面向对象基础 原文: 实现关系 (Realization) 用来实现一个接口,在 Java 中使用 implement 关键字 应改为 implements关键字

thx, 已经修复,会在周末更新网站。

realpdai commented 2 years ago

@Lazarus1995

https://www.pdai.tech/md/db/sql-mysql/sql-mysql-mvcc.html#mvcc的实现原理

在这个章节的序言中写的是,“它的实现原理主要是依赖记录中的 3个隐式字段,undo日志 ,Read View 来实现的”。 实际应该是4 个隐式字段。

thanks, 已经修正,将在周末更新网站。

realpdai commented 2 years ago

@yezi5

作者您好。 纠错文章链接:https://pdai.tech/md/db/sql-lan/sql-lan-pratice.html 错误点1:练习15,查询所有学生的Sno、Cname和Degree列。案例sql查询的是sno、cno、degree。 错误点2:练习30,查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. 案例sql少了条件“选修编号为“3-105””

感谢指出,已经修正,周末更新网站。

realpdai commented 2 years ago

@Cyan-N

pdai你好。 纠错文章连接:https://pdai.tech/md/java/collection/java-collection-LinkedList.html#linkedlists%E5%AE%9E%E7%8E%B0 错误点:第二个二级标题应该是LinkedList实现,你多写了一个s(写成了LinkedLists)

感谢指出,已经修复,周末更新网站。

realpdai commented 2 years ago

@micro-coding

作者您好,ES详解 - 入门:查询和聚合的基础使用 https://www.pdai.tech/md/db/nosql-es/elasticsearch-x-usage.html, 批量索引文档章节中下载测试数据的下载连接已经失效,补充说明中ES官方库目录结构也已经更新。建议更新下数据下载地址:https://github.com/elastic/elasticsearch/blob/v6.8.18/docs/src/test/resources/accounts.json

感谢指出,已经修复,周末更新。

realpdai commented 2 years ago

@cui-zh

MySQL - MySQL InnoDB的MVCC实现机制

内容 "作为旧记录,既在undo log中有当前行的拷贝副本",既在 -> 即在

感谢指出,已经修正。

realpdai commented 2 years ago

@x1200085

Java IO - 分类(传输,操作)--IO理解分类 - 从传输方式上

https://pdai.tech/md/java/io/java-io-basic-category.html

如下内容错别字

字节是[个]{给}计算机看的

感谢指出,已经修正。

realpdai commented 2 years ago

https://pdai.tech/md/java/thread/java-thread-x-lock-AbstractQueuedSynchronizer.html#%E7%B1%BB%E7%9A%84%E6%A0%B8%E5%BF%83%E6%96%B9%E6%B3%95---acquire%E6%96%B9%E6%B3%95 中有以下描述: 调用acquireQueued方法,此方法完成的功能是Sync queue中的结点不断尝试获取资源,若成功,则返回true,否则,返回false。

这里的返回值是表示在等待获取锁的过程中是否发生过中断。在成功获取资源之前,该方法不会返回。

对,字面上是这个意思~ 本质上独占方式获取资源,不就是这样么,成功获取了才会中断,中断返回true不正说明了获取到资源了?

realpdai commented 2 years ago

大佬你好,感谢你的文章分享,有一个细节上的文字错误 文章:Spring基础-Spring核心之控制反转 链接:https://www.pdai.tech/md/spring/spring-x-framework-ioc.html#%E6%B3%A8%E8%A7%A3%E6%B3%A8%E5%85%A5 章节:注解注入 原文:byType:查找所有的set方法,将符合符合参数类型的bean注入。 问题:此处多了个符合

感谢指出,已经修正~

realpdai commented 2 years ago

https://pdai.tech/md/java/thread/java-thread-x-lock-AbstractQueuedSynchronizer.html#%E7%B1%BB%E7%9A%84%E6%A0%B8%E5%BF%83%E6%96%B9%E6%B3%95---acquire%E6%96%B9%E6%B3%95

【类的核心方法 - acquire方法】

里面的一个小点:调用acquireQueued方法,此方法完成的功能是Sync queue中的结点不断尝试获取资源,若成功,则返回true,否则,返回false。

这里按照JDK1.8的方法说明,应该是“等待过程中被中断,则返回true” ,而并非获取资源成功与否返回true/false.

JDK1.8注释原文:

Acquires in exclusive uninterruptible mode for thread already in queue. Used by condition wait methods as well as acquire.

Params:

node – the node

arg – the acquire argument

Returns:

true if interrupted while waiting

一个意思,独占模式只有获取到资源才会中断,被中断返回true~