原创 Zuul 2是如何動態加載Filter的?

Zuul 2沿用了Zuul 1的責任鏈模式的設計,其網關核心功能還是通過Filter鏈來實現的。要熟練使用和擴展Zuul 2的功能,必須要瞭解其Filter的加載和執行機制。另外,Zuul 2使用Guice作爲依賴注入工具,因此在

原创 來,手把手教你編譯OpenJDK源代碼

從哪搞到OpenJDK的源代碼? OpenJDK的官網在這裏:https://hg.openjdk.java.net/,裏面可以看到不同版本的jdk分支。OpenJDK使用Mercurial來做SCM,安裝好Mercurial之後

原创 服務治理實戰——閒時主動GC

服務治理實戰——閒時主動GC 前言 看到這個標題可能有些同學會質疑:什麼?Java的GC還能主動去做?——您別說,還真的可以。我來給大家分享一下在之前公司做的這個有意思的功能:在夜半無人私語時、業務流量低谷中主動去做一個高效的Fu

原创 服務治理雜談——版本管理怎麼做

前言 在前幾天的工作對接中,發現有的同學對服務的版本管理意識有點模糊,這裏結合前公司的版本管理規範簡單談一下微服務的版本管理應該怎麼做,權當拋磚引玉。 一、背景 在服務提供期間,我們常常會對服務有一些BugFix、或者是一些內部邏

原创 元宵佳節,程序員小明被女友罰寫一萬遍“我愛你”,還不準用循環和遞歸?!

元宵佳節,風流倜儻的程序員小明終於東窗事發,被他那聰明漂亮、溫柔大方的女朋友小芳發現了他的風流往事,被罰寫一萬遍“我愛你”,還不準用循環和遞歸!請看機智的小明如何從容應對 😘 文末有小明的獨家把妹祕笈哦~ 運算符重載 >>>

原创 用戶密碼存儲與校驗方案

一、密碼存儲流程 用戶密碼使用 隨機加鹽 方式存儲,存儲流程如下: 生成隨機鹽s; 隨機鹽s與密碼明文p拼接得到待哈希串m; hash(m)得到密文e; 哈希函數代號c+特定分隔符+隨機鹽s+特定分隔符a+密文e=最終入庫的字符

原创 MySQL / TiDB數據遷移及驗證

一、環境準備 1.1 工具介紹 數據量比較大,使用MySQL官方自帶的mysqldump難以滿足需求的時候,可以使用mydumper執行數據遷移工作。mydumper 最突出的特性就是可採用多線程並行備份,極大提高了數據導出的速度

原创 Hadoop Hive Spark安裝配置指南

1 安裝Hadoop 1.1 下載hadoop-2.7.x壓縮包並解壓至目標目錄,修改$HODOOP_HOME/etc/hadoop下幾個文件: hadoop-env.sh,檢查JAVA_HOME、HADOOP_CONF_DIR配置

原创 自定義Metrics埋點方案

一、背景 1.1 什麼是埋點? 有別於前端的埋點,我們這裏主要討論的是後端的代碼埋點,埋的是一些預定義或者自定義的關於系統業務、性能方面的Metrics。Metrics,就是度量的意思,主要是爲了給某個系統某個服務做監控、做統計。 1

原创 Redis Lua腳本開發之從入門到忘記

一、Lua快速入門 1.1 Lua簡介 Lua是一門簡潔小巧的腳本語言,由C語言編寫,一般用來做擴展程序,嵌入在Nginx/Redis等中間件或者其它牛逼語言中使用。 1.1.1 Lua特性 輕量級:它用標準C語言編寫並以源代碼形式

原创 Redis進程異常退出排查

Redis進程異常退出排查 一、排查思路 1. 是否因爲系統內存不足被oom killer殺掉; 如果是oom killer殺掉的話,一般會在/var/log/*留下日誌,dmesg也應該能查到,可以使用命令搜索: dmesg | e

原创 Redis Cluster搭建與維護

1 安裝搭建 1.1 Redis安裝 1.1.1 下載安裝redis mkdir -p /opt/redis-4.0.9 && cd /opt/redis-4.0.9 wget http://download.redis.io/relea

原创 JMH使用說明

JMH使用說明 一、概述 JMH,即Java Microbenchmark Harness,是專門用於代碼微基準測試的工具套件。何謂Micro Benchmark呢?簡單的來說就是基於方法層面的基準測試,精度可以達到微秒級。當你定位到熱點

原创 Java notify和notifyAll源碼分析與性能對比

Java notify和notifyAll源碼分析與性能對比 一、源碼剖析 首先,看看在synchronizer.cpp中notify和notifyall的實現: void ObjectSynchronizer::notify(Handl