0%

一、背景

翻看书签的时候偶然发现 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 »

一、背景

最近在看代码,发现一个 Date 格式化为 String 的方法。

1
2
3
public String dateFormatString() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(date);
}

看到这个方法想到

  • 每次都 new 一个 format 会快么(非线程安全,得每次都 new)?
  • SimpleDateFormat 格式化快么?
  • “yyyy-MM-dd HH:mm:ss.SSS” 改成静态常量会不会快点?

带着以上三个疑问,就想着做个对比测试。
恰巧最近在 perfma 社区看 jvm 相关内容时,刷到了『性能调优必备利器之 JMH』

优点:不用自己写相关统计代码,而且统计方式有多种

二、结论

性能从低到高

  • Java.text.SimpleDateFormat
  • org.apache.commons.lang.time.DateFormatUtils
  • org.joda.time.DateTime
Read more »

一、结论

JDK8 因未指定 MetaSpace 大小,程序启动过程中元空间不够用,触发 full gc。

详细如下:
JDK8 因未指定 MetaSpace 大小,默认初始大小约 21M
程序启动,元空间大小占用稳定在 90M
因为超过了默认元空间大小,导致元空间扩容(每次扩容会 full gc)
从 GC 日志来看,每次元空间扩容都是增加 20M 左右,所以程序启动时 full gc 4 次

二、问题

应用启动时出现 full gc;

gc日志重点:GC (Metadata GC Threshold) [PSYoungGen: 354024K->15340K(1376256K)

三、排查过程

Read more »