首页   注册   登录
 PonysDad 最近的时间轴更新
已经毕业 3 年,无经验转 java 后端开发,工作(广州)该如何找?

- 学过计算机专业基础理论(操作系统原理,计算机网络,数据库系统概论,数据结构与算法和软件工程)

- 熟悉 java JavaScript AnuglarJS MySQL Mybatis SpringBoot SpringCloud RabbitMQ Redis

- 项目经验的话,跟着网上做过一个社交平台项目,使用 SpringCloud 微服务
174 天前

PonysDad

V2EX 第 379400 号会员,加入于 2019-01-23 13:32:27 +08:00
PonysDad 最近回复了
18 天前
回复了 PonysDad 创建的主题 Java 关于 Builder 模式线程安全的疑问
@billlee @vjnjc

《 Effective Java 》中有一段这样的描述:
-----------------------------------------------------------------------------------------------------------------------------
不幸的是,JavaBeans 模式本身有严重的缺陷。由于构造方法在多次调用中被分割,所以在构造过程中 JavaBean
可能处于不一致的状态。该类没有通过检查构造参数参数的有效性来执行一致性的选项。在不一致的状态下尝试使用
对象可能会导致与包含 bug 的代码大相径庭的错误,因此很难调试。
-----------------------------------------------------------------------------------------------------------------------------
一直模拟出构造方法被割裂而导致的不一致。
不知道大家有没有一个很好例子?
20 天前
回复了 reannull 创建的主题 问与答 科技公司起名求推荐
真锤子科技有限公司
21 天前
回复了 PonysDad 创建的主题 Java 关于 Builder 模式线程安全的疑问
@billlee
一针见血。
我漏看了 return new Address(id, street);是传递两个值过去的,且一直在纠结这个构造函数 final 域的问题。
addressBuilder.id = 1L;
addressBuilder.street = "street 1";
只有这两句可以被重排。
剩下的是内存可见性问题。
22 天前
回复了 PonysDad 创建的主题 Java 关于 Builder 模式线程安全的疑问
这一行是接在
Address address = addressBuilder.build();
后面
22 天前
回复了 PonysDad 创建的主题 Java 关于 Builder 模式线程安全的疑问
obj = address;

补上编译后代码漏了上面一行。
22 天前
回复了 PonysDad 创建的主题 Java 关于 Builder 模式线程安全的疑问
@billlee @vjnjc
我感觉用 builder pattern 构造 immutable 对象也不是线程安全的。
```java
Address address = Address.builder()
.id(1L)
.street("street 1")
.build();
```
可能编译后(指令重排)如下:
```java
AddressBuilder addressBuilder = new AddressBuilder();
Address address = addressBuilder.build();
addressBuilder.id = 1L;
addressBuilder.street = "street 1";
```
这时候,线程 B 可能读取到 address 实例未初始化的值。

但是如果使用构造函数实例化,final 内存模型能保证 address 已经初始化完毕。

不知道我的理解是否有错?
请不吝赐教。
我!年轻人!渴望力量!敢问怎么成长起来的!
@petelin 你是对的。题主想表达的意思应该是比特币在 cap 理论限制下,怎么做到达成一致性的。比特币确实是巧妙地绕过了,但没解决。
41 天前
回复了 Raven316 创建的主题 问与答 一个质数相关的问题
列个线性同余方程就解就可以了
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4079 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 16ms · UTC 09:27 · PVG 17:27 · LAX 01:27 · JFK 04:27
♥ Do have faith in what you're doing.