Open realpdai opened 3 years ago
常用开发库 - Spring常用工具类。其他工具类的package应该是org.springframework.util
而不是org.springframework.util.xml
l链接:https://pdai.tech/md/develop/package/dev-package-x-spring-util.html
小建议: 关于SpringBoot统一接口封装文章中的Http状态码可以复用springframework的 HttpStatus枚举类: /spring-web/5.3.22/spring-web-5.3.22.jar!/org/springframework/http/HttpStatus.class:11
大佬你好 文章:JUC集合:BlockingQueue详解 链接:https://pdai.tech/md/java/thread/java-thread-x-juc-collection-BlockingQueue.html 章节:BlockingQueue 的方法 表格中的方法:element、poll、peek和take应该都是无参的😁
https://pdai.tech/md/java/thread/java-thread-x-lock-all.html
首先ReentrantLock和NonReentrantLock都继承父类AQS,其父类AQS中维护了一个同步状态status来计数重入次数,status初始值为0。
ReentrantLock 和 NonReentrantLock 并非直接继承AQS,而是使用 Sync 静态内部类去继承父类AQS,用于辅助实现
@dreaming-coder
大佬,您Spring AOP基础里,XML Schema 示例的输出结果 后置通知和最终通知顺序反了吧?我自己写代码发现后置在前不同版本执行顺序真不一样,相同版本,schema配置和注解配置也不一样...这咋整 ^_^!!
Spring 5.2+ 修复了这个问题
@SSSDNSY
小建议: 关于SpringBoot统一接口封装文章中的Http状态码可以复用springframework的 HttpStatus枚举类: /spring-web/5.3.22/spring-web-5.3.22.jar!/org/springframework/http/HttpStatus.class:11
实际情况是,会结合业务场景增加很多自定义的code, 而不仅仅是HttpStatus
@xiangyanlin
常用开发库 - Spring常用工具类。其他工具类的package应该是
org.springframework.util
而不是org.springframework.util.xml
l链接:https://pdai.tech/md/develop/package/dev-package-x-spring-util.html
感谢指正,已经修正
@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
感谢指出,已经完善
@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
本地执行后,没有问题。建议执行下看看~
@TomfengGitHub
出自 java IO框架 https://pdai.tech/md/java/io/java-io-basic-category.html 字节流读取单个字节,字符流读取单个字符(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码是 3 个字节,
中文编码是 2 个字节。)应该是:UTF-8 编码的中文一个汉字三个字节。 GBK编码,一个汉字占两个字节。
感谢指出,已经完善
@zssyrr
大佬你好 文章:JUC集合:BlockingQueue详解 链接:https://pdai.tech/md/java/thread/java-thread-x-juc-collection-BlockingQueue.html 章节:BlockingQueue 的方法 表格中的方法:element、poll、peek和take应该都是无参的😁
感谢指出,已经修正
@yang-kun-o
https://pdai.tech/md/java/thread/java-thread-x-lock-all.html
- 可重入锁 VS 非可重入锁
首先ReentrantLock和NonReentrantLock都继承父类AQS,其父类AQS中维护了一个同步状态status来计数重入次数,status初始值为0。
ReentrantLock 和 NonReentrantLock 并非直接继承AQS,而是使用 Sync 静态内部类去继承父类AQS,用于辅助实现
嗯,准确的来说确实是这样。广义上来说认为都继承父类AQS,也是可以的。
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,类比在这里每个顾客对应每个服务员感觉不太合理 应该还有个大堂经理,为每个到店的顾客指定一位服务员
秒杀项目的资料不见啦
【类的核心方法 - 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
大佬你好,感谢你的文章分享,有一个细节上的文字错误 文章: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注入。 问题:此处多了个符合
为什么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
Java IO - 分类(传输,操作)--IO理解分类 - 从传输方式上
https://pdai.tech/md/java/io/java-io-basic-category.html
如下内容错别字
字节是[个]{给}计算机看的
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)
内容 "作为旧记录,既在undo log中有当前行的拷贝副本",既在 -> 即在
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。
这里的返回值是表示在等待获取锁的过程中是否发生过中断。在成功获取资源之前,该方法不会返回。
作者您好,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
pdai你好。 纠错文章连接:https://pdai.tech/md/java/collection/java-collection-LinkedList.html#linkedlists%E5%AE%9E%E7%8E%B0 错误点:第二个二级标题应该是LinkedList实现,你多写了一个s(写成了LinkedLists)
堆排序介绍中图片的性质二
与原文不符
https://www.pdai.tech/md/db/sql-mysql/sql-mysql-mvcc.html#mvcc的实现原理
在这个章节的序言中写的是,“它的实现原理主要是依赖记录中的 3个隐式字段,undo日志 ,Read View 来实现的”。 实际应该是4 个隐式字段。
错误路径: java面向对象基础 原文: 实现关系 (Realization) 用来实现一个接口,在 Java 中使用 implement 关键字 应改为 implements关键字
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
的含义
文章内容不错!好几处错别字啊 作者发布之前最好能有校验一下。
文章:Java 8 - Optional类深度解析 位置:利用一个 supplier 函数来解决嵌套路径的问题的【代码】中,第二行最后多了一个分号
归并排序的空间复杂度是O(n)次吧
错别字反馈
MySQL - 数据类型 链接:https://pdai.tech/md/db/sql-mysql/sql-mysql-theory.html
页尾的最后选择表示符(identifier)一节:“因为插入值会随机的写入到索引的不同位置,所以使得INSERT语句更慢。这会导致叶分裂、磁盘随机访问”。其中叶分裂,应为页分裂吧
上面引用的FIFO是队列,真正的策略是LRU,最近最少使用
@aljg1999
https://pdai.tech/md/java/collection/java-map-LinkedHashMap&LinkedHashSet.html LinkedHashMap除了可以保证迭代顺序外,还有一个非常有用的用法: 可以轻松实现一个采用了FIFO替换策略的缓存
上面引用的FIFO是队列,真正的策略是LRU,最近最少使用
FIFO也是一种常见的缓存策略,和LRU是两种不同的设计。这里的例子是通过类似队列的FIFO方式来实现FIFO模式的缓存策略。
@xiaoluxiang
错别字反馈
MySQL - 数据类型 链接:https://pdai.tech/md/db/sql-mysql/sql-mysql-theory.html
页尾的最后选择表示符(identifier)一节:“因为插入值会随机的写入到索引的不同位置,所以使得INSERT语句更慢。这会导致叶分裂、磁盘随机访问”。其中叶分裂,应为页分裂吧
thanks, 已经修正,周末发布上去。
@Alexleslie
归并排序的空间复杂度是O(n)次吧
是的,归并排序的时间复杂度是O(N*lgN),空间复杂度是O(n)
@Cookie8421
文章:Java 8 - Optional类深度解析 位置:利用一个 supplier 函数来解决嵌套路径的问题的【代码】中,第二行最后多了一个分号
thanks, 已经修复,周末更新上去。
@754258817github
文章内容不错!好几处错别字啊 作者发布之前最好能有校验一下。
感谢建议。
@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, 已经提交更新,会在周末更新网站。
@computer-idol
错误路径: java面向对象基础 原文: 实现关系 (Realization) 用来实现一个接口,在 Java 中使用 implement 关键字 应改为 implements关键字
thx, 已经修复,会在周末更新网站。
@Lazarus1995
https://www.pdai.tech/md/db/sql-mysql/sql-mysql-mvcc.html#mvcc的实现原理
在这个章节的序言中写的是,“它的实现原理主要是依赖记录中的 3个隐式字段,undo日志 ,Read View 来实现的”。 实际应该是4 个隐式字段。
thanks, 已经修正,将在周末更新网站。
@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””
感谢指出,已经修正,周末更新网站。
@Cyan-N
pdai你好。 纠错文章连接:https://pdai.tech/md/java/collection/java-collection-LinkedList.html#linkedlists%E5%AE%9E%E7%8E%B0 错误点:第二个二级标题应该是LinkedList实现,你多写了一个s(写成了LinkedLists)
感谢指出,已经修复,周末更新网站。
@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
感谢指出,已经修复,周末更新。
@cui-zh
MySQL - MySQL InnoDB的MVCC实现机制
内容 "作为旧记录,既在undo log中有当前行的拷贝副本",既在 -> 即在
感谢指出,已经修正。
@x1200085
Java IO - 分类(传输,操作)--IO理解分类 - 从传输方式上
https://pdai.tech/md/java/io/java-io-basic-category.html
如下内容错别字
字节是[个]{给}计算机看的
感谢指出,已经修正。
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不正说明了获取到资源了?
大佬你好,感谢你的文章分享,有一个细节上的文字错误 文章: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注入。 问题:此处多了个符合
感谢指出,已经修正~
【类的核心方法 - 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~
https://www.pdai.tech/md/about/me/blog-question.html