FraserYu / myBlogTalk

个人博客评论仓库
https://dayarch.top
0 stars 0 forks source link

留言交流 | 日拱一兵 #14

Open FraserYu opened 4 years ago

FraserYu commented 4 years ago

https://dayarch.top/comments/

技术有时很枯燥,需要用有趣的方式解读.

open-snail2 commented 4 years ago

加我QQ 1250281049,可以交换友情链接 我的站 www.byteblogs.com

FraserYu commented 4 years ago

@zsg1994 加我QQ 1250281049,可以交换友情链接 我的站 www.byteblogs.com

麻烦按照 https://dayarch.top/friends 中的要求提供一下信息,谢谢

2662419405 commented 4 years ago

想请教一下楼主 头部的自动打代码的是自己写的js吗,还是接口呢,想学一下

FraserYu commented 4 years ago

@2662419405 想请教一下楼主 头部的自动打代码的是自己写的js吗,还是接口呢,想学一下

我拷贝别的主题的代码库...

2662419405 commented 4 years ago

好的楼主,感谢

nameyou commented 4 years ago

博客是开源的项目吗?想要喜欢这个风格

FraserYu commented 4 years ago

@nameyou 博客是开源的项目吗?想要喜欢这个风格

是开源的,快看:https://github.com/xaoxuu/hexo-theme-material-x

lishaolian commented 4 years ago

请问博主在博客中的图片是用什么工具画的 image

xiaokexiang commented 4 years ago

博主,你好,看了你的ReentrantReadWriteLock中关于锁降级的时候,有个疑问还请解答下。 在博客中你采用了Oracle官网文档的示例

rwl.writeLock().lock();
try { 
     if (!cacheValid) {
           data = ...
           cacheValid = true;
      }
      rwl.readLock().lock();
 } finally {
      rwl.writeLock().unlock();
}

首先我能理解,你说的为什么要使用锁降级的解释,但我不明白的是:如果线程A第一个获取了写锁,进入了if (!cacheValid)修改了data和cacheValid,那么即使他后面释放了写锁,线程B获取了写锁,可是基于上述代码,线程B无法进入if (!cacheValid),也就无法修改data,那么最终在use中使用的data还是线程A修改的data呀,这个例子即使不使用锁降级也不会出现缓存覆盖的问题啊,我的理解是否错了,还请博主帮忙解释下。

FraserYu commented 4 years ago

@xiaokexiang 博主,你好,看了你的ReentrantReadWriteLock中关于锁降级的时候,有个疑问还请解答下。 在博客中你采用了Oracle官网文档的示例

rwl.writeLock().lock();
try { 
     if (!cacheValid) {
           data = ...
           cacheValid = true;
      }
      rwl.readLock().lock();
 } finally {
      rwl.writeLock().unlock();
}

首先我能理解,你说的为什么要使用锁降级的解释,但我不明白的是:如果线程A第一个获取了写锁,进入了if (!cacheValid)修改了data和cacheValid,那么即使他后面释放了写锁,线程B获取了写锁,可是基于上述代码,线程B无法进入if (!cacheValid),也就无法修改data,那么最终在use中使用的data还是线程A修改的data呀,这个例子即使不使用锁降级也不会出现缓存覆盖的问题啊,我的理解是否错了,还请博主帮忙解释下。

不好意思,回复的稍稍晚了一些,你的说明我理解,cacheValid 是被 volatile 修饰,只能保证可见性,不能保证原子性,例子是没有修改 cacheValid 为false的情况, 万一有就会出现我文中说明的那种情况,所以说最终结论是,如果用不到后续变量就不需要锁的降级 ,不知道这样解释你是否理解呢呢?

FraserYu commented 4 years ago

@lishaolian 请问博主在博客中的图片是用什么工具画的 image

draw.io 下的misc 选项可以调节参数,另外 PPT 是最大的神器

k8nice commented 3 years ago

大佬威武,我来也