V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  chanlk  ›  全部回复第 6 页 / 共 12 页
回复总数  233
1  2  3  4  5  6  7  8  9  10 ... 12  
2022-06-24 13:58:13 +08:00
回复了 idragonet 创建的主题 深圳 深圳住房公积金不能申请异地房产还贷?
提取?提取的话想干嘛就干嘛啊
2022-06-15 16:04:59 +08:00
回复了 chanlk 创建的主题 全球工单系统 华为云 OBS 难用死了
@bootvue 后面没用 sdk 了,看着 sample http 调用写的,各种手动拼凑各种奇怪格式的请求头,磕磕绊绊,太难了
2022-06-13 11:08:19 +08:00
回复了 ecloud 创建的主题 Nintendo Switch 我是否真的需要买台 NS?
塞尔达出了 DLC 捆绑的卡带,国行可以玩;
不过,别买国行 别买国行 别买国行
2022-05-23 18:20:30 +08:00
回复了 chanlk 创建的主题 Apple AppStore 下载不可用/极慢
@JimmyLX IPhone12 移动 4G 5G 都不行,打开 bilibili 微信 qq 音乐都没问题
2022-05-23 16:23:56 +08:00
回复了 chanlk 创建的主题 Apple AppStore 下载不可用/极慢
开了个 VPN 就快了 但是我的又不是美区 ID 凌乱了
2022-05-10 14:22:14 +08:00
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
@az467 @nlzy @documentzhangx66

关于第二个问题:结论是对的,是我弄错了,sorry ;
我前面说能复现的代码是错的,代码如下:

class Scratch {

int a = 0;
boolean flag = false;

public static void main(String[] args) {

final Scratch scratch = new Scratch();
new Thread(() -> {
while (true) {
scratch.reader();
}
}).start();

new Thread(() -> {
while (true) {
scratch.writer();
}
}).start();
}

public void writer() {
flag = false;
a = 41;
a = 42;
flag = true;
}

public void reader() {
if (flag) {
if (a != 42) {
System.out.println("error!");
}
}
}
}

这里我搞错了,这里能打印出 a!=42 明显是线程切换导致的, 不能画蛇添足在上面再次为 a 赋值的。

一个值得提醒的现象:
示例代码中即使把 flag 的 volatile 去掉,a 的值也无法复现出 0 的情况(jdk7/jdk8 均不行),查资料说 x86cpu 不支持写重排序,x86cpu 的市场占有率那么高,所以大部分同学都无法复现,mac m1 的同学可以试试能不能复现

我的想法和 documentzhangx66 同学的是一样的,但是 volatile 的能力其实很强的,az467 发的那个文章写的很清楚了

最后,个人愚见,如 volatile 那么底层的工具,没有特殊的需求还是尽量少用,用更加上层的工具在开发和后续的维护上都更合适些
2022-05-08 12:26:50 +08:00
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
@documentzhangx66 @nlzy 感谢回答~
问题一那个应该是伪代码哈, 然后是先做了 Happens-before 的假设再说行为, 是对的;
问题二那个确实是错的,我直接跑了下代码,确实会出现 flag==true 的时候 a!=42 的情况
2022-05-07 17:39:09 +08:00
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
@alen0206 截图 2 的那个 reader 中当 flag==true 的时候,i 不一定是 42 吧; writer 中代码是可以重排序的,a 也没有保证写入 42 后能够立刻被另一个线程可见
2022-05-07 17:36:42 +08:00
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
@alen0206 嗯是的是的,截图 1 的那句话是对的,那个是伪代码,加上各种手段使得它满足 Happens-Before ,然后就可以操作 b 执行后,变量 j 的值一定是等于 1 。
2022-05-07 17:24:30 +08:00
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
是两个截图,格式没弄好 (⊙︿⊙)
2022-04-01 11:46:45 +08:00
回复了 villivateur 创建的主题 程序员 StackOverflow 今天的愚人节玩笑不错
@chanlk 你们管 3d glasses 叫 titok 啊。。。
2022-04-01 11:46:04 +08:00
回复了 villivateur 创建的主题 程序员 StackOverflow 今天的愚人节玩笑不错
tiktok 风是哪个 没找到
2022-02-18 09:24:04 +08:00
回复了 kenanremix 创建的主题 摄影 2022 年 2 月 有朋友能否推荐下新手单反呢 谢谢!
富士 xs-10
2022-01-07 14:37:29 +08:00
回复了 LoneFireBlossom 创建的主题 macOS 如果你不想天天被 bug 气到,就不要买 Mac
外接硬盘的体验巨巨巨巨巨巨烂!!!休眠和电池管理也做得稀巴烂!
2022-01-06 10:05:40 +08:00
回复了 sivacohan 创建的主题 分享发现 ApiFox 获得 preA 轮 3000 万融资
话说为啥我的 postman 那么那么卡,而且吃好多内存,有 V 友一样的吗,api 才 100 多个
2021-11-23 17:59:01 +08:00
回复了 chanlk 创建的主题 程序员 不同子系统间如何优雅地传递消息
@ospider 用了,接口多了没这种会疯的
2021-11-23 15:03:13 +08:00
回复了 chanlk 创建的主题 程序员 不同子系统间如何优雅地传递消息
其实好像也不是什么难题,用 MQ 就好,难的是推动各个模块的同事去一起做
2021-11-23 14:55:59 +08:00
回复了 chanlk 创建的主题 程序员 不同子系统间如何优雅地传递消息
统一回复 rpc 的老哥们;
rpc 在其中的一个子模块里用到了,里面十几个模块都可以相互调用;
不同语言间的 rpc 我看了下不太好弄;
而且在之前的架构设计上就把这几个子系统做得很独立,rpc 会耦合起来(也许是我 rpc 用得不太对);
因为也有多地部署的需求,像流媒体系统这种;
2021-11-17 11:44:41 +08:00
回复了 youshangdepangzi 创建的主题 职场话题 技术贼烂, 45*16,公司很大,但传统公司。
咱们公司叫啥名字?
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5114 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 104ms · UTC 03:47 · PVG 11:47 · LAX 20:47 · JFK 23:47
Developed with CodeLauncher
♥ Do have faith in what you're doing.