HiSEN

Personal Technology Blog

0%

0. 背景

某做科研的朋友
需要对一些地点的坐标
然后在 WGS-84 坐标系的底图上呈现相关内容

BD09 vs WGS84
北京韩美林艺术馆,BD09:116.68347847243588,39.88148624000483
北京韩美林艺术馆,WGS84:116.67097966259838,39.87446583754102

1. 准备

1.1 寻找成品

找了几个网址,反馈说之前用过坐标不准确

1.2 使用百度地图 API

1.2.1 注册百度地图开放平台

服务免费
需要实名认证
网址:lbsyun.baidu.com

Read more »

零、背景

鉴于目前 Redis 使用广泛
虽然数据结构、API 比较简单
但是想使用好,还是有一定难度
建议了解下《Redis 开发与运维》
以达到知其然且知其所以然的境界

一、使用场景

大规模互联网在线应用
流量比较大,响应时间要求高
Redis 作为一款流行的高性能数据库

对于读多写少的场景,一般作为缓存使用
某大型电商订单系统读写比大概在 10:1
并且订单读取 90% 的流量都是创建订单当天查询

对于可容忍丢数据,但是对性能有极致要求,
比如优惠券发放,流量高,这种情况下当做 DB 用也挺好。

二、问题与建议

2.1 常见问题

  • 网络抖动导致 redis 操作失败
  • 定时任务清理过期 key 导致 IOPS 高
    • redis 做了二次开发,更激进的惰性删除( 针对大面积过期场景 )
  • 热 key 导致流量倾斜
    • 考虑 Server 端旁路监听,做统计,然后推送到客户端做内存缓存
    • 京东有开源热 Key 方案
  • redis slot 分配不均匀,导致某节点提前内存告警
    • 建议分配内存按 slot 分配,而不是节点

2.2 建议

  • 缓存时间动态可配
Read more »

零、背景

最近在做重构的项目
进入阶段性收尾阶段
总结记录下相关的内容
方便大家遇到类似问题可以想起有某个地方可以参考

一、初识 AOP

目前的 AOP 应用,由于公司生态体系不够完善
利用 AOP + ThreadLocal(transmittable-thread-local,ttl)
做一部分链路追踪的事情( 耗时打印,traceId 处理 )
这部分倒是很简单,只是之前用的很少

PS:链路追踪蛮重要,针对排查问题,性能监控等大有帮助,多关注开源协议/实现( 如 CNCF )

二、初识 BeanPostProcess

2.1 应用场景

目前做的项目当中,有一个 IDC 负载均衡的工具
有设置当前机器所属机房的方法,但是没有提供从配置文件读取的能力
因为 IDC 路由不生效,会造成跨机房访问,导致访问延迟偏高( 回头再写性能优化相关内容 )

Read more »

零、背景

最近在做数据迁移
为了加速迁移速度
其中就需要把查询到的数据( max 100 条)
拆分成 5 份,然后执行 5 个子任务,加速处理

一、代码

1.1 常规做法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static <T> List<List<T>> split2(List<T> lists, int subCount) {
if (CollectionUtils.isEmpty(lists) || subCount < 1) {
return null;
}

List<List<T>> result = new ArrayList<>();

int size = lists.size();
int count = (size + subCount - 1) / subCount;

for (int i = 0; i < count; i++) {
List<T> subList = lists.subList(i * subCount, (Math.min((i + 1) * subCount, size)));
result.add(subList);
}
return result;
}

1.2 新颖做法

Read more »

零、背景

过年期间,看到 github 关注的人的动态当中
有人 star 了这个项目 Rust语言圣经
这些年也听说过 Rust,一直没有特意去了解
当我看到大佬也关注了这个课程的时候
感觉应该是一个不错的学习资料

前面介绍学习的好处让我心动了
就跟着学习了前面 4 节课
目前感觉良好
有空继续学

不得不说,环境搭建特别方便!

一、实践

Read more »

零、摘要

回顾 2021

  1. 【完成】换了一份不错的工作;
  2. 【完成】坚持阅读,追求质量;
  3. 【待办】运动量不够,锻炼偏少;

展望 2022

  1. 体重控制在 65Kg 以内,学会自由泳;
  2. 持续阅读,技术与非技术书籍交替看,5 本基础书;
  3. 深入理解公司内部技术栈、深入了解 2-3 条业务线;
  4. 重新学习 Dubbo,学习设计理念,以及分布式系统架构;

一、成长

技术方面今年感觉成长不是太明显
有所改变的是会深入洞察需求
逐步完善设计之后开始 coding,而不是着急开始。

对于技术底层也有一定地涉猎,更多地可能是在钻电商业务。

Read more »

零、背景

同事分享《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 »