获得徽章 6
世界上最简单的数据库:
#!/bin/bash
db_set () {
echo "$1,$2" >> database
}
db_get () {
grep "^$1," database | sed -e "s/^$1,//" | tail -n 1
}
#!/bin/bash
db_set () {
echo "$1,$2" >> database
}
db_get () {
grep "^$1," database | sed -e "s/^$1,//" | tail -n 1
}
展开
评论
点赞
DDD领域驱动设计关心的是业务中的领域划分(战略设计)和领域建模 (战术设计),其开发过程不再以数据模型为起点,而是以领域模型为出发点。领域模型对应的是业务实体,在程序中主要表现为类、聚合根和值对象,它更加关注业务语义的显性化表达,而不是数据的存储和数据之间的关系。这是“领域驱动设计”和“数据驱动设计”之间显著的区别。
评论
点赞
String isocode = user.getAddress(). getCountry(). getIsocode().toUpperCase();
因为任何访问对象方法或属性的调用都可能导致NPE,因此如果我
们要确保不触发异常,就得在访问每一个值之前对其进行明确的检查:
if (user != null) {
Address address = user.getAddress();
if (address != null) {
Country country = address.getCountry();
if (country != null) {
String isocode = country.getIsocode();
if (isocode != null) {
isocode = isocode.toUpperCase();
}
}
}
}
可以用Optional来代替冗长的null检查:
String isocode = Optional.ofNullable(user)
.flatMap(User::getAddress)
.flatMap(Address::getCountry)
.map(Country::getIsocode)
.orElse("default");
因为任何访问对象方法或属性的调用都可能导致NPE,因此如果我
们要确保不触发异常,就得在访问每一个值之前对其进行明确的检查:
if (user != null) {
Address address = user.getAddress();
if (address != null) {
Country country = address.getCountry();
if (country != null) {
String isocode = country.getIsocode();
if (isocode != null) {
isocode = isocode.toUpperCase();
}
}
}
}
可以用Optional来代替冗长的null检查:
String isocode = Optional.ofNullable(user)
.flatMap(User::getAddress)
.flatMap(Address::getCountry)
.map(Country::getIsocode)
.orElse("default");
展开
评论
点赞
研发&测试关系:
1.矛与盾的关系,研发是盾,测试是矛,相互切磋,共同成长
2.研发要有"我做的系统没有漏洞,我的系统是完美的" 的信仰
3.测试要有"没有我攻克不了的系统,经过我测试的系统才是完美的" 的信仰
改变陈旧的观念:
1.研发做出功能就可以了,太low了,随便一人看本编程书就能做出
2.只做功能测试就可以了,太low了,随便一人就能做了
我们要做精的东西,做精!
我们考虑更多,做更高级的东西:
1.考虑系统完整性、稳定性、安全性、合理性、业务量等
2.考虑每个服务兼容性、可用性、并发性、QPS、TPS、耗时、熔断、限流等
结果Check:
1.服务&产品检查
2.输出内容 文档&代码 检查
产品需求&项目需求
1.矛与盾的关系,研发是盾,测试是矛,相互切磋,共同成长
2.研发要有"我做的系统没有漏洞,我的系统是完美的" 的信仰
3.测试要有"没有我攻克不了的系统,经过我测试的系统才是完美的" 的信仰
改变陈旧的观念:
1.研发做出功能就可以了,太low了,随便一人看本编程书就能做出
2.只做功能测试就可以了,太low了,随便一人就能做了
我们要做精的东西,做精!
我们考虑更多,做更高级的东西:
1.考虑系统完整性、稳定性、安全性、合理性、业务量等
2.考虑每个服务兼容性、可用性、并发性、QPS、TPS、耗时、熔断、限流等
结果Check:
1.服务&产品检查
2.输出内容 文档&代码 检查
产品需求&项目需求
展开
评论
点赞
轻量级锁是通过自旋锁进行多次CAS重试
JDK1.6,默认10次的次数
JDK1.6以后,更具上次自旋所使用的时间
synchronized锁膨胀:程序中计算一次hashCode,就无法使用偏向锁,即使使用了,也由偏向锁变成重量级锁
JDK1.6,默认10次的次数
JDK1.6以后,更具上次自旋所使用的时间
synchronized锁膨胀:程序中计算一次hashCode,就无法使用偏向锁,即使使用了,也由偏向锁变成重量级锁
展开
评论
点赞