Jeff Xun

Results 17 comments of Jeff Xun

我整理了下代码,把扫描包下class的逻辑移动到了utils中

> * 这个并非不知道可以扫描加载,现在的手动模式也挺好的 > * 排列顺序也是重要原因 所以是让我关闭这个 PR吗?还是让我改进下 支持排序(分类后排序)?

我也期待有这个功能。那目前的情况,要如何简单的达到相同(或类似)的效果呢?框架如何可以干涉自动读取不同环境的 .env

Please HELP!I use Ubuntu16.04 with terminology,when I use pokemon or ichooseyou command in it, I got an error : ERR:terminology media.c:1237 media_add() can not decode '/home/xjj/.local/lib/python3.6/site-packages/pokemonterminal/Images/Generation I - Kanto/001.jpg' ERR:eo...

Year,Python 3.6,I reinstalled terminology, and this time I changed a way to succeed! Thank you for your contribution

@flying81621 不知道你还有疑惑吗 > 我看了很多关于轻量级锁加锁解锁的文章,有个疑问一直没明白,包括看了你这篇。首先说CAS操作,三个要素,原值、期望值、对象,原值一定是从现对象里得到的没疑问吧?线程A加锁,CAS将锁对象对象头替换成指向线程A的Lock Record的地址,在这里,原值:对象mark word中的内容,也就是hashcode,期望值:本线程Lock Record地址,对象:锁对象,在替换成功后我们说线程A获得了锁,OK,线程A开始执行同步代码块,在它执行完之前,线程B来获取锁,发现属于轻量级锁标志,于是CAS替换mark word,此时CAS的原值仍然为为锁对象的mark word吧,而此时锁对象mark word中记录的不再是hashcode而是指向线程A的Lock Record的地址,但是对于CAS它管你对象头存的是什么,现在获取到什么,什么就是原值,于是:原值:对象头中指向线程A中LR的地址,期望值:线程B中LR(目前对他来说,是将锁对象中指向线程A中LR的地址存入本线程LR)的地址,目标对象:锁对象,怎么会CAS不成功?于是现在线程B也获取到锁,两个线程都会在执行同步代码块!这个问题你能解释下吗?希望不要用他就是这样就是那样来解释。另外,轻量级锁解锁时,除了现在锁对象已经变成了重量级锁外,解锁的CAS什么场景下会失败,能举出具体案例吗? ----- 首先A线程通过CAS替换markword替换成功,表明A线程获取了锁,这里应该大家都没问题。 然后是B线程,你的问题取决于B线程是什么时候到达synchronized的。 1.如果它和A几乎同时到达, B就会看到对象头当前处于无锁状态,B就会进行CAS去尝试替换对象的markword,那么A和B之中必定只有一个线程会成功,另一个就是失败的。 2.如果它是在A已经CAS完成后才到达的synchronized,那么B就会看到对象的markword就不是无锁状态,B就会知道当前存在并发,它接下去要做就是**锁膨胀**流程,这个时候B要把markword改成inflating状态就是全部都是0(同样也是使用CAS),来告诉其他线程正在进行锁膨胀。 不知道我的回答能否解决你心中的疑惑

@flying81621 不知道你还有疑惑吗 > 我看了很多关于轻量级锁加锁解锁的文章,有个疑问一直没明白,包括看了你这篇。首先说CAS操作,三个要素,原值、期望值、对象,原值一定是从现对象里得到的没疑问吧?线程A加锁,CAS将锁对象对象头替换成指向线程A的Lock Record的地址,在这里,原值:对象mark word中的内容,也就是hashcode,期望值:本线程Lock Record地址,对象:锁对象,在替换成功后我们说线程A获得了锁,OK,线程A开始执行同步代码块,在它执行完之前,线程B来获取锁,发现属于轻量级锁标志,于是CAS替换mark word,此时CAS的原值仍然为为锁对象的mark word吧,而此时锁对象mark word中记录的不再是hashcode而是指向线程A的Lock Record的地址,但是对于CAS它管你对象头存的是什么,现在获取到什么,什么就是原值,于是:原值:对象头中指向线程A中LR的地址,期望值:线程B中LR(目前对他来说,是将锁对象中指向线程A中LR的地址存入本线程LR)的地址,目标对象:锁对象,怎么会CAS不成功?于是现在线程B也获取到锁,两个线程都会在执行同步代码块!这个问题你能解释下吗?希望不要用他就是这样就是那样来解释。另外,轻量级锁解锁时,除了现在锁对象已经变成了重量级锁外,解锁的CAS什么场景下会失败,能举出具体案例吗? ----- 首先A线程通过CAS替换markword替换成功,表明A线程获取了锁,这里应该大家都没问题。 然后是B线程,你的问题取决于B线程是什么时候到达synchronized的。 1.如果它和A几乎同时到达, B就会看到对象头当前处于无锁状态,B就会进行CAS去尝试替换对象的markword,那么A和B之中必定只有一个线程会成功,另一个就是失败的。 2.如果它是在A已经CAS完成后才到达的synchronized,那么B就会看到对象的markword就不是无锁状态,B就会知道当前存在并发,它接下去要做就是**锁膨胀**流程,这个时候B要把markword改成inflating状态就是全部都是0(同样也是使用CAS),来告诉其他线程正在进行锁膨胀。 不知道我的回答能否解决你心中的疑惑

I don't understand why I haven't modified other files (except README), why does it cause the build to fail?

ch1 ..为什么我没看到有 ch1 的分支。。