0%

零、背景

同事分享《Effective Java》
其中第十章,并发部分例子有争议
变量是否需要(代码如下) static?
几个大佬说需要加,我众目睽睽下反驳不需要,略尴尬

// 是否需要加 static?才能保证单例正确
private volatile Singleton singleton;

一、程序关键代码

1.1 原程序(错误)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Singleton {
private volatile Singleton singleton;

public Singleton() {
}

private Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}

1.2 正确程序

Read more »

零、背景

不知在哪听说过陆奇的传说
对于一位地位如此之高的华人
甚是敬仰,奈何相关资料甚少,很难深入了解
不像李开复、吴军那样,出过一些书,了解可以多些

榜样的力量或许很虚,关键看自己能悟多少,是否坚持行动。共勉!

一、工程领导(Engineering Leadership)

  • Believe in 技术
    未来任何一个工业都会变成软件工业。
  • 站在巨人的肩膀上做创新
    你所写的每一行代码是否值得?
  • 追求 Engineering Excellence
    追求工程技术的卓越的能力。
  • 每天学习
    每天学习,每天都争取变地更好。
    学经济、学产品、懂商业、懂生态。
  • Ownership
    把公司的事业,当成是自己的事业,own everything。从我做起,从身边的每一件事做起。

二、关于陆奇的文章

Read more »

一、背景

翻看书签的时候偶然发现 RASP 两个收藏
脑子里毫无相关内容,细看之下,收获不小
ps:是不是看看收藏夹,能有意外收获

安全无小事,从点滴做起。要有安全意识
安全投入的比例,可以根据公司所处的行业公司规模进行相应调整。
安全投入包括:软件安全设计、招人、买设备、买服务、做评估。

二、介绍

2.1 RASP 是什么

RASP( Runtime Application Self-Protection )是一种在运行时检测攻击并且进行自我保护的一种技术。

OpenRASP 架构

2.2 RASP 优缺点

化繁为简,抓住事情的本质,这就是优势。

Read more »

一、背景

曾经整理过一个帖子,不过是在公司内网。
今天突然想起,博客上零散的 jvm 相关内容,
但未系统整理相关知识和工具,遂写一篇文章。

学习的过程需要不断发现好的资源,深入钻研某个领域。

二、知识

2.1 图书

  • 《深入理解 Java 虚拟机》
  • 《Java 性能优化权威指南》
  • 《性能之巅》

2.2 文档

2.3 文章

Read more »

一、背景

最近做项目有一个地址库文件需要放在后端
由于文件在 jar 包中的问题,一些读取文件的姿势失效(方便的 Guava Files)
最后通过 getResourceAsStream 解决

接下来遇到了一件奇怪的事情,部分汉字乱码了,
调整编码,重新编辑汉字都试过了,无法解决。

最后求助于百度搜索,得到了一些有效的信息。
汉字是两个字节的,如果每次读固定个字节,可能会把汉字截断,造成乱码。
再次印证了基础知识的重要性!

二、相关代码

2.1 罪魁祸首

利用缓冲区读取文件,会出现边界情况下把汉字分割成两次来读。

Read more »

一、背景

之前京东组里有同事使用二进制优化支付密码打标性能(大促 QPS 数百万),节省内存资源。
随说:存二进制报文小,传输快,反序列化快(之前存 JSON 对象),节省缓存。

目前公司遇到个套餐打标,也通过二进制实现简单高效得解决掉了。
随说:目前倒不是要求性能,只是这么设计扩展性好,操作简单。

知识点:二进制、与运算

二、设计

打标,无非就是识别某个东西是不是包含某些属性。
那么有什么好的办法能做到通用与高效?
如果固定映射,扩展性不好,查询逻辑费劲,存储成本偏高。

目前相对较好的方案是通过二进制位来做标记,再结合与运算,快速找出数据。
随说:Java MySQL 均支持与运算

套餐VIP1VIP2VIP3标记值
A1117
B1106
C1004

如上表所示,相应套餐的购买资格标记。

Read more »

零、背景

由于近期换工作,停下了技术书籍,去了解行业
《移动健康和智慧医疗》算是互联网医疗的科普资料
前面部分的内容已经后面部分国际案例,了解之用足够
里面提到的『量化自我』,如果把世界量化分析,岂不是美哉?
随说:前提是大家相信分析出来的结论,以及按建议行事。

一、微博读后感

《移动健康和智慧医疗》0711~0717
过去人口红利式的告诉发展逐渐降速
老龄化突显使疾病预防和控制更重要

医疗信息化建设提升医疗系统效率
医疗数据收集与分析改进医疗方案
多维度健康数据分析建议促进健康

减少医疗信息不对称
降低患者再次入院率
早运动早发现早治疗
有效地减少医疗支出

互联网医疗典型方向:

  1. 促进健康
  2. 慢性病管理
  3. 诊断治疗(非急症性疾病)
  4. 院外康复指导和干预

二、摘抄(医疗相关)

Read more »

一、简短感受

简单介绍,《凤凰架构》作者,周志明。
他最出名的书籍非《深入理解Java虚拟机》莫属了
书中了解到他对技术的态度,以及持续奋战一线值得学习,《程序员之路》值得一看(底部有链接)。

阅读时间:0531~0612
构建凤凰磐涅般的系统
介绍了一整套技术体系
穿插着技术的来龙去脉
着实是一部不错的书籍
架构的前提是足够了解
综合实际情况做出权衡
给人感觉不太像架构书
总的来说还是值得一看

用输出倒逼输入
这就是写博客等其它输出手段的作用

目前的软件没有烟囱式的,都是金字塔类型,所以底层基础要牢固!

二、部分摘抄

Read more »

一、背景

作为一个软件开发工程师,日常很多机会和英文打交道。
特别是上一份工作,做全球支付项目,需要用到英文与国际友人沟通。
奈何自己的英语水平捉襟见肘,于是经常会有意地去收集相关的文章。

今天心血来潮,再次看了一下之前收藏的相关文章,感觉收获不少。
于是就想写一篇文章归集一下相关的内容,方便日后翻阅,顺便分享给有需要的人。

二、资源

复旦大学中文系教授严峰

Read more »

零、背景

在压测过程中发现有部分 redis cluster 节点内存占用比其它节点高(来自监控)

内存倾斜的隐患

  1. 更早达到容量瓶颈,触发淘汰策略
  2. 承担更多的负载( 读 / 写 ),导致节点压力增大,可能触发宕机。

一、问题

redis cluster slot 分配不均匀
redis cluster 集群内存分配算法的缺陷
问题算法:单节点内存 = 集群总内存 / 节点数

合理算法:单节点内存 = (集群总内容 / slot 数量) * 当前节点 slot 数量

二、排查

2.1 key 分布问题?

Read more »