
Java
文章平均质量分 82
秦沙
10 年 互联网软件开发相关经验;
精通 Java 语言,debug过JVM源码;
有大数据处理经验,Hive表100 TB级别、MySQL千万数据级别;
熟悉高并发、网络编程技术、分布式服务,参与过唯品会 OSP 框架以及配置中心的研发和维护,大促峰值调用达数十亿次,参
与过唯品会开源工具集 vjtools研发,github stars 6k+;
展开
-
来,手把手教你编译OpenJDK源代码
从哪搞到OpenJDK的源代码?OpenJDK的官网在这里:https://hg.openjdk.java.net/,里面可以看到不同版本的jdk分支。OpenJDK使用Mercurial来做SCM,安装好Mercurial之后可以使用如下命令克隆OpenJDK的源代码:apt-get install -y mercurialhg clone http://hg.openjdk.java.n...原创 2020-02-27 23:01:17 · 6678 阅读 · 0 评论 -
服务治理实战——闲时主动GC
百亿级流量服务治理实战——闲时主动GC前言看到这个标题可能有些同学会质疑:什么?Java的GC还能主动去做?——您别说,还真的可以。我来给大家分享一下在之前公司做的这个有意思的功能:在夜半无人私语时、业务流量低谷中主动去做一个高效的Full GC。文末有彩蛋哟~缘由就算可以主动执行GC,可是为什么要这么做呢?对象固有一死,GC这玩意是早晚都要发生的。如果不巧在业务流量高峰的时候old g...原创 2019-12-12 16:30:27 · 1346 阅读 · 2 评论 -
服务治理杂谈——版本管理怎么做
一、背景在服务提供期间,我们常常会对服务有一些BugFix、或者是一些内部逻辑的更改、又或者是代码的优化。在于版本管理的角度来说,每当我们对已发布的代码进行更新以后,需要进行服务版本的升级。如SayHelloService v1.0.0服务进行了Bug的修复,下次升级的服务版本应该需要递增,如1.0.1或1.2.0等。BugFix常有,那服务版本也会常常会有变化,这样已提供给接入方的客户端是否...原创 2019-12-05 10:41:31 · 861 阅读 · 0 评论 -
用户密码存储与校验方案
一、密码存储流程用户密码使用 随机加盐 方式存储,存储流程如下:生成随机盐s;随机盐s与密码明文p拼接得到待哈希串m;hash(m)得到密文e;哈希函数代号c+特定分隔符+随机盐s+特定分隔符a+密文e=最终入库的字符串i;二、校验密码流程网站使用HTTPS,前端将用户在界面输入的用户名user和密码明文pwd传输到后台;登录接口接收到登录请求后,根据用户名user提取上述存...原创 2019-11-12 11:22:58 · 1160 阅读 · 0 评论 -
Java notify和notifyAll源码分析与性能对比
Java notify和notifyAll源码分析与性能对比一、源码剖析首先,看看在synchronizer.cpp中notify和notifyall的实现:void ObjectSynchronizer::notify(Handle obj, TRAPS) { if (UseBiasedLocking) { BiasedLocking::revoke_and_rebia...原创 2018-02-27 11:56:49 · 997 阅读 · 1 评论 -
JMH使用说明
JMH使用说明一、概述JMH,即Java Microbenchmark Harness,是专门用于代码微基准测试的工具套件。何谓Micro Benchmark呢?简单的来说就是基于方法层面的基准测试,精度可以达到微秒级。当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用JMH对优化的结果进行量化的分析。原创 2018-03-01 12:22:18 · 22008 阅读 · 5 评论 -
自定义Metrics埋点方案
一、背景1.1 什么是埋点?有别于前端的埋点,我们这里主要讨论的是后端的代码埋点,埋的是一些预定义或者自定义的关于系统业务、性能方面的Metrics。Metrics,就是度量的意思,主要是为了给某个系统某个服务做监控、做统计。1.2 为什么需要埋点?不同的IT系统有各自关注的业务场景和关键细节,需要通过埋点来获知当前系统运行的状况,埋点数据采集起来也可以用于事后统计分析。以服务注册中心为例...原创 2019-01-01 00:29:34 · 9643 阅读 · 1 评论 -
Zuul 2是如何动态加载Filter的?
Zuul 2沿用了Zuul 1的责任链模式的设计,其网关核心功能还是通过Filter链来实现的。要熟练使用和扩展Zuul 2的功能,必须要了解其Filter的加载和执行机制。另外,Zuul 2使用Guice作为依赖注入工具,因此在开始分析之前,我们需要大致了解Guice的基本原理和用法:Guide to Google Guice为了了解Zuul 2的filter加载机制,我们从入口开始看起。在官...原创 2019-05-31 18:38:52 · 1420 阅读 · 1 评论