序
又到了寫年終總結(jié)的時候了。每當(dāng)這個時候思緒總是翻江倒海,因為太久沒有反思和總結(jié)的緣故,一年才總結(jié)一次,確實(shí)是有點(diǎn)久,欠的賬的太多,梳理起來有點(diǎn)費(fèi)勁。這里依舊還是寫跟點(diǎn)跟工作/技術(shù)相關(guān)的總結(jié)。
盤點(diǎn)
2017這一年自己從前到后主導(dǎo)了個小項目,技術(shù)體系使用的openresty + spring boot/cloud + postgres + statsd + graphite + grafana + sentry + elasticsearch + kafka + docker + kubernetes。這一年依舊是延續(xù)上面的技術(shù)架構(gòu)進(jìn)行深入:
- docker & kubernetes(
使用級別)
停留在使用階段,考慮到云平臺技術(shù)的成熟,假設(shè)自己出去創(chuàng)業(yè),感覺也用不到自己去搭建kubernetes,直接用阿里云、騰訊云等的kubernetes的基礎(chǔ)設(shè)置就可以了,于是就沒有深入研究。
- spring cloud(
實(shí)踐及擴(kuò)展級別)
這一年算是深入實(shí)踐了一把spring cloud,不過生產(chǎn)還停留在Camden.SR6的版本,現(xiàn)在的GA版已經(jīng)是Edgware,pre版本已經(jīng)到了Finchley M4。而且從Camden版本到以上版本遷移的話,貌似有一些不兼容或變動,有點(diǎn)疲于跟進(jìn),另外主要是生產(chǎn)已經(jīng)穩(wěn)定運(yùn)行了,就沒有力氣再去折騰升級了,維穩(wěn)為主。等做下一個項目的時候再考慮直接用最新版吧。不過隨著service mesh的成熟,分布式的這一套更進(jìn)一步固化到基礎(chǔ)設(shè)置里頭,感覺spring cloud后續(xù)可能優(yōu)勢就不那么明顯了。而且隨著go語言流行,以及相關(guān)生態(tài)的豐富,漸漸的也有很多高并發(fā)服務(wù)采用go來替代java了,后續(xù)如果不是業(yè)務(wù)特性強(qiáng)的應(yīng)用,可能用java的優(yōu)勢就不那么大了。就像Java未來也許不再是電商的首選開發(fā)語言這篇文章說的。
- spring security(
使用及擴(kuò)展級別)
這一年又去看看了spring security,還有spring security oauth2,感覺少點(diǎn)什么,缺乏將一整套技術(shù)實(shí)施去替代既有的權(quán)限控制體系,沒有大規(guī)模去應(yīng)用,總感覺沒有深入理解。另外開始重視系統(tǒng)安全方面的知識,學(xué)習(xí)中。
- kafka(
使用及了解基本原理)
kafka版本太雜,公司有的用0.8,有的用0.9,有的用0.10,17年推出了0.11,緊接著1.0版本也出來了,對于初學(xué)者來說,感覺有點(diǎn)措手不及,一入技術(shù)深似海,真的是學(xué)海無涯啊,于是就只能挑著點(diǎn)看了。主要是研究了0.8版本的一些使用和實(shí)現(xiàn)細(xì)節(jié),另外研究了0.9版本與0.8版本的一些區(qū)別,還有就是今年主推的kafka stream,后續(xù)可能基于1.0版本再去深入了解。
- redis / postgres / mongo / elasticsearch(
使用級別)
這些今年用的不多,也就用一用。
說說關(guān)系型數(shù)據(jù)庫,一直對SQL不感興趣,也沒有深入研究,大底是面向?qū)ο罂吹奶嗔?,另外看過了太多復(fù)雜業(yè)務(wù)需求寫復(fù)雜SQL然后把系統(tǒng)搞掛的例子,總是覺得通過其他方式的實(shí)現(xiàn)是可以替代復(fù)雜SQL的,而且性能更優(yōu)。NOSQL的出現(xiàn),很多非事務(wù)性的查詢,基本都可以通過將數(shù)據(jù)按查詢需求結(jié)構(gòu)化/冗余化同步到NOSQL里頭來實(shí)現(xiàn)。
其他幾個NOSQL,若要排行,估計redis得優(yōu)先,畢竟使用太廣了,明年估計得再深入學(xué)學(xué)redis;對mongo不是太有好感,像分片復(fù)制啥的,感覺都不如elasticsearch成熟,這里頭要在排序,elasticsearch排在mongo前面;elasticsearch的話,以前有想過要深入學(xué)習(xí)的,不過版本變化太快了,以前還是1.x版本,如今都6.x版本了,欲哭無淚,特別是java api的使用,學(xué)的疲于奔命。還有就是mongo跟elasticsearch的查詢語法學(xué)習(xí)成本太高了,elasticsearch還好一點(diǎn),有ES SQL插件大部分場景可以用SQL來查詢,還是比較爽歪歪的,mongo就沒有SQL插件來查,于是就更不想學(xué)mongo了。
- rabbitmq(
基本使用)
對于消息隊列,傳統(tǒng)的mq當(dāng)中,就屬rabbitmq最耀眼了,不過隨著kafka、rocketmq的出現(xiàn),有點(diǎn)被淹沒了。不過還是值得一學(xué)的,有待深入實(shí)踐。重點(diǎn)看open-messaging規(guī)范,從這個入手。
- openresty(
稍微上手)
第一次寫lua,感覺調(diào)試特別費(fèi)勁,沒有idea可以提示,總是不斷來來回回重啟,請求,看日志驗證;后來寫多了,稍微上手,感覺還可以,主要是nginx秒級重啟,非常爽。有待深入研究。不過隨著go的出現(xiàn),后續(xù)go也有網(wǎng)關(guān)出來,比如janus,目測二者可以拼一拼。
- arch / system design(
入門級別)
系統(tǒng)架構(gòu)方面,感覺還出處于入門級別,后續(xù)有待深入學(xué)習(xí)和提高,不僅僅是技術(shù)架構(gòu),還有業(yè)務(wù)架構(gòu)。
評價
收獲
體驗了一下從零到一的后端技術(shù)架構(gòu)與實(shí)現(xiàn),期望是初步具備了一個人出去創(chuàng)業(yè)拉起一整套后端技術(shù)架構(gòu)與實(shí)現(xiàn)的能力不足
系統(tǒng)訪問量太低,不容易暴露問題,部分技術(shù)實(shí)現(xiàn)在訪問量在百萬級、千萬級、億級是不同的,而且高并發(fā)場景會把一些技術(shù)實(shí)現(xiàn)的不是太好的問題給暴露出來,這點(diǎn)算是今年做的這個項目的硬傷的。
目標(biāo)完成情況
- 繼續(xù)每天sg博客,繼續(xù)提升sg聲望(
完成)
這個算是完成了,16年突破1000聲望,17年突破6000聲望
- 多回答stackoverflow的問題(
不達(dá)標(biāo))
這個完成的不大好,16年是255聲望,17年是457聲望,總體上升24052名,不過排行在98894
- 每周末技術(shù)復(fù)盤(
沒完成)
這個幾乎是沒完成,是最致命的,18年要嚴(yán)抓這個
- 夏天還是需要繼續(xù)跑步,期望能學(xué)會游泳(
完成)
游泳沒學(xué),但是跑步是有堅持的,除了下雨還有加班太累沒有跑,其他基本是每周一跑,17年累計跑了80多公里,巔峰時期一次可以跑4km,但是持續(xù)不久,18年希望能多跑幾次5km。
- 少加班、多提升時間以及項目管理能力(
不達(dá)標(biāo))
習(xí)慣性加班,感覺身體要被加班逐漸加班壞了,時間規(guī)劃不大好,好幾次研究問題研究好幾個小時到一兩點(diǎn)才睡,對身體損傷太大。
展望
2018年學(xué)習(xí)計劃:
- 重點(diǎn)學(xué)習(xí)
系統(tǒng)架構(gòu)(
CASE MOCK)、深入系統(tǒng)安全(OWASP)、深入分布式緩存(redis)、深入研究open-tracing(kafka)、深入研究nginx/openresty
非技術(shù)類,目標(biāo)是研究金融投資相關(guān)以及跟技術(shù)的結(jié)合。
- 前沿技術(shù)探索
service mesh,spring cloud可能風(fēng)頭正勁,但是也僅僅限于java領(lǐng)域,但是service mesh可是不限語言的,進(jìn)一步將分布式架構(gòu)固化在底層,目測又是一場技術(shù)變革。
AI這塊,一直想學(xué),但是沒找到動力去開始,估計先從一些機(jī)器學(xué)習(xí)的理論開始,找實(shí)踐點(diǎn)切入邊學(xué)邊實(shí)踐。
具體指標(biāo)
硬性指標(biāo)
- 繼續(xù)每天sg,sg聲望突破10000
- stackoverflow聲望突破1000
- 每周技術(shù)復(fù)盤/CASE STUDY(
完成let it crash系列) - 每周完成至少一篇投資類文章(
逐步深入金融業(yè)務(wù)知識) - 年度跑步公里數(shù)達(dá)到100+公里
軟性目標(biāo)
- 完成系統(tǒng)安全、分布式緩存、open-tracing、nginx/openresty的學(xué)習(xí)
- service mesh研究與實(shí)踐
- 金融技術(shù)相關(guān)嘗試
- 高并發(fā)多找機(jī)會實(shí)踐
- 多研究優(yōu)秀的開源項目架構(gòu)/代碼
- 多寫開源項目
文章導(dǎo)航
docker / kubernetes
- docker的網(wǎng)絡(luò)配置
- docker修改打開文件數(shù)
- docker-machine指定cpu個數(shù)
- dockerfile中apt-install處理continue
- docker運(yùn)行prometheus
- docker運(yùn)行jenkins
- docker運(yùn)行oracle11g
- docker安裝tesseract
- Dockerfile安裝maven
- docker搭建mongo副本集
- docker運(yùn)行consul cluster
- docker運(yùn)行drill 1.10.0
- docker java8安裝JCE
- ubuntu docker手工安裝java8
- docker運(yùn)行seyren
- docker-compose運(yùn)行sentry
- docker運(yùn)行mywebsql
- docker運(yùn)行storm及wordcount實(shí)例
- docker運(yùn)行kafka manager
- docker化360的pika
- ubuntu安裝chrome及firefox
- kompose神器使用
- kubernetes的service的類型
- 使用kubernetes的deployment進(jìn)行RollingUpdate
- 優(yōu)雅地關(guān)閉kubernetes中的nginx
- mac安裝kubernetes并運(yùn)行echoserver
- kubernetes安裝heapster、influxdb及grafana
- kubernetes部署rabbitmq集群
http / tcp / network / io
- 關(guān)于cookie的幾個屬性
- Cache-Control參數(shù)
- netstat及tcp狀態(tài)
- 關(guān)于netstat的ListenOverflows等參數(shù)
- tcp的半連接與完全連接隊列
- 關(guān)于netstat的ListenOverflows等參數(shù)
- 異步IO
- IO密集型的線程池大小設(shè)置
- netty的Sharable到底是干嘛用的
- webmagic小試牛刀
- httpclient參數(shù)配置
- apache的HttpClient的默認(rèn)重試機(jī)制
- httpclient訪問https
- restTemplate訪問https
- RestTemplate的converters配置
- RestTemplate設(shè)置通用header
- RestTemplate獲取文件的contentType
- springboot配置okhttp3
nginx / openresty
- 聊聊nginx的幾個常見異常
- 聊聊nginx報錯499問題
- 聊聊nginx與tomcat的5xx
- nginx lua重置請求參數(shù)及常量備忘
- nginx域名配置非80端口的301跳轉(zhuǎn)
- nginx lua指令執(zhí)行順序
- 使用nginx capture的注意事項
- nginx的upstream異常
- openresty安裝及使用LuaXml
- nginx的proxy_redirect
tomcat
- springboot的tomcat啟動過程
- tomcat線程池策略
- tomcat的acceptCount與maxConnections
- tomcat的acceptCount、maxThreads、connectionTimeout參數(shù)調(diào)整
- springboot增加tomcat的metrics
- tomcat jdbc pool高級配置
- tomcat jdbc pool的borrow和return
- tomcat的jdbc連接池PoolExhaustedException
- tomcat jdbc連接池的suspect、abandon操作解析
- tomcat jdbc SlowQueryReport的實(shí)現(xiàn)解讀
- 淺析tomcat jdbc的ResetAbandonedTimer
- springboot訪問tomcat的SlowQueryReport
- tomcat如何關(guān)閉response的outputStream
java / jvm
- Java8的allMatch
- java9系列(一)安裝及jshell使用
- java9系列(二)docker運(yùn)行java9
- java重寫equals及hashcode方法
- threeten-extra使用實(shí)例
- Java將枚舉序列化為對象
- java計算集合交差并集
- java計算集合對稱差
- java字符全角半角轉(zhuǎn)換
- 使用prettyTime格式化時間
- java如何獲取hdd序列號
- CompletableFuture的執(zhí)行線程
- ForkJoinPool的commonPool相關(guān)參數(shù)配置
- java取消線程實(shí)例
- java8的CompletableFuture使用實(shí)例
- 線程池工作竊取實(shí)例
- fastjson獲取unknown的字段
- rocksdb的jni加載
- 使用common-codec進(jìn)行md5加密
- lombok的builder設(shè)置默認(rèn)值的問題
- 聊聊lombok構(gòu)造模式的參數(shù)校驗
- 聊聊querydsl的生成類
- 記一個toJSONString異常
- 解決SAXNotRecognizedException
- java計算object大小
- 使用SXSSFWorkbook來導(dǎo)出excel
- TransferQueue實(shí)例
- Deque的使用實(shí)例
- SynchronousQueue使用實(shí)例
- java降低競爭鎖的一些方法
- ArrayBlockingQueue與LinkedBlockingQueue
- ConcurrentLinkedQueue使用實(shí)例
- futureTask的超時原理解析
- JIT編譯器版本
- jvm參數(shù)查看
- GC日志參數(shù)
- jvm的gc線程數(shù)計算公式
- jvm堆大小配置建議
- CMS收集器
- jvm分層編譯級別
- jvm代碼緩存
- 解決jd-gui在Sierra下閃退問題
- 聊聊jvm的PermGen與Metaspace
image / pdf
- 聊聊Color中的alpha值
- 聊聊ImageIO使用argb操作jpg的bug
- 使用BufferedImage進(jìn)行漸變色操作
- 聊聊selenium的webdriver的超時參數(shù)
- 聊聊Selenium不同webdriver的構(gòu)造
- 解決WebDriverWait中的cannot be applied的問題
- 聊聊phantomjs的優(yōu)化措施
- phanbedder使用實(shí)例
- java對圖片進(jìn)行壓縮和resize
- 使用imgscalr進(jìn)行圖片操作
- 使用tesseract進(jìn)行圖形驗證碼識別
- 使用asprise進(jìn)行圖片驗證碼識別
- 使用zxing生成和識別二維碼
- 聊聊zxing的qrcode
- 聊聊qrcode的detect position
- 記一個OfficeException
- jodconverter4.1.0版本改進(jìn)解析
- 使用pdfdom將pdf轉(zhuǎn)為html
- 使用pdfbox實(shí)現(xiàn)pdf轉(zhuǎn)image
- 使用tika將pdf轉(zhuǎn)為html
spring-boot
- SpringMVC數(shù)據(jù)綁定實(shí)例
- spring mvc如何計算BEST_MATCHING_PATTERN_ATTRIBUTE
- spring mvc中的幾類攔截器對比
- springmvc不斷輸出文本到網(wǎng)頁
- springboot定制404錯誤信息
- 使用spring mail發(fā)送html郵件
- SpringBoot配置文件日期屬性轉(zhuǎn)換實(shí)例
- spring獲取controller方法中自定義注解的信息
- springboot的PathVariable接收參數(shù)值帶點(diǎn)號問題
- 文件下載分chunk寫
- 解決metrics-spring與springboot1.4不兼容問題
- springboot動態(tài)加載sigar
- springboot動態(tài)加載native類庫
- springboot不同servlet容器benchmark
- springboot運(yùn)行時加載statsd-jvm-profiler
- springboot的HealthAggregator
- 關(guān)閉spring boot jackson的FAIL_ON_EMPTY_BEANS
- springboot異步mvc使用threadlocal的正確姿勢
- springboot設(shè)置RestTemplate的超時時間
- springboot的ApplicationReadyEvent
- 使用reactor eventbus進(jìn)行事件驅(qū)動開發(fā)
- spring event發(fā)布及監(jiān)聽實(shí)例
- 如何在async線程中訪問RequestContextHolder
- 聊聊spring的async注解
- 聊聊TaskExecutor的spring托管
- springboot的diskSpaceHealthIndicator
- 在springboot中擴(kuò)展tomcat的executor
- 解決springboot讀取jar包中文件的問題
- springboot的ConfigurationProperties使用
- spring boot admin 使用consul discovery
- 使用cached的wrapper類讀取請求響應(yīng)內(nèi)容
- 重復(fù)消費(fèi)input stream的方法
- springboot Environment注入異常
- reactor自定義RejectedExecutionHandler
- logback輸出日志到sentry
- logback日志增加行號
- activiti的job設(shè)計淺析
- quartz設(shè)置misfire策略
- quartz的api及數(shù)據(jù)庫表映射解析
- 使用springboot構(gòu)造quartz的rest api
- 聊聊quartz的調(diào)度及性能
- springboot集成quartz2.3.0
- springboot集成mqtt
- springboot中使用esper入門
spring-cloud
- zuul修改請求url
- 修復(fù)zuul跨域配置異常
- zuul自定義SimpleHostRoutingFilter
- zuul轉(zhuǎn)發(fā)的一些常見異常
- ZuulFilter的order小結(jié)
- zuul進(jìn)行rate limit
- zuul添加request header
- zuulfilter獲取proxy的id
- zuul的forward error
- zuul修改請求響應(yīng)body
- zuul修改request query param
- zuul動態(tài)路由加載配置
- zuul文件大小限制
- zuul轉(zhuǎn)發(fā)Set-Cookie丟失問題
- SpringCloud運(yùn)行時刷新數(shù)據(jù)源相關(guān)配置
- 聊聊Spring Cloud Config的ConfigClientWatch
- 記一個hystrix異常
- hystrix MaxConcurrentConnections reached 異常
- feign client的retry及超時設(shè)置
- feignclient設(shè)置hystrix參數(shù)
- feignclient的攔截
- 關(guān)于feign client觸發(fā)熔斷的異常
- spring cloud feign使用okhttp3
- spring cloud feign 上傳文件
- spring cloud eureka 參數(shù)配置
- 理解eureka的自我保護(hù)機(jī)制
- EurekaClient如何更新注冊信息
- eureka如何剔除實(shí)例
- eureka的驚群效應(yīng)
- eureka的RateLimiter
- spring cloud atlas使用
- 在spring cloud中使用springboot admin
- ribbon static server list
- 關(guān)于ribbonClient配置的一個坑
- ribbon設(shè)置url級別的超時時間
- ribbon個性化參數(shù)設(shè)置
- ribbon的ServerListRefreshInterval
- ribbon使用eureka的meta進(jìn)行動態(tài)路由
- springcloud基于ribbon的canary路由方案
- consul的server模式啟用ui
- springcloud文件上傳文件名亂碼
security / spring security / oauth2
- java加解密實(shí)例
- 使用aerogear生成totp
- 聊聊二維碼登錄
- 聊聊directory traversal attack
- 聊聊session fixation attacks
- 聊聊springboot session timeout參數(shù)設(shè)置
- spring security動態(tài)配置url權(quán)限
- spring security動態(tài)配置權(quán)限的方案2
- spring security運(yùn)行時配置ignore url
- spring security免登錄動態(tài)配置方案2
- spring security ajax登錄及返回
- spring security自定義AuthenticationEntryPoint
- spring security自定義指南
- 聊聊spring security的role hierarchy
- 聊聊SecurityContextPersistenceFilter
- 聊聊FilterSecurityInterceptor
- 聊聊spring security的賬戶鎖定
- 聊聊SwitchUserFilter的使用
- SwitchUserFilter源碼解析
- 聊聊spring security的permitAll以及webIgnore
- 列出spring security的所有SecurityFilterChain
- spring security filter獲取請求的urlpattern
- 解決spring security自定義filter重復(fù)執(zhí)行問題
- oauth2四種授權(quán)方式小結(jié)
- spring security oauth2 client_credentials模式
- spring security oauth2 password授權(quán)模式
- spring security oauth2 authorization code模式
- spring security oauth2 implicit模式
- 使用spring-security-oauth2作為client實(shí)現(xiàn)
- spring security oauth2之refresh token
- 聊聊spring security oauth2的password方式的認(rèn)證
- 聊聊spring security oauth2的幾個endpoint的認(rèn)證
- spring security oauth2使用redis存儲token
- spring security oauth2 allowFormAuthenticationForClients原理解析
jdbc / redis / elasticsearch / mongo
- 聊聊sql的并發(fā)update
- 拖拽數(shù)據(jù)庫設(shè)計方案小結(jié)
- javax的PrePersist注解
- jdbc連接pg數(shù)據(jù)庫timeout
- 記一個pg連接數(shù)過多的異常
- 利用hibernate生成建表語句
- 聊聊hibernate的hbm2ddl的實(shí)現(xiàn)
- spring data jpa數(shù)據(jù)變更審計
- javer的表結(jié)構(gòu)設(shè)計
- 使用envers記錄數(shù)據(jù)變更版本
- 聊聊spring jdbc的RowMapper
- spring-data-jpa設(shè)置fetchsize
- spring-data-jpa的auditor設(shè)置
- spring-data-jpa軟刪除方案
- spring data jpa 使用native sql實(shí)例
- jpa存儲byte到postgresql
- mybatis spring boot starter配置
- jpa postgresql 使用uuid作為主鍵
- mongo查看數(shù)據(jù)庫空間大小
- redis監(jiān)控命令
- 聊聊jesque的幾個dao
- 聊聊jesque在redis中的數(shù)據(jù)結(jié)構(gòu)
- 聊聊jesque的event機(jī)制
- 聊聊jesque的WorkerImpl與WorkerPool
- springboot使用jest操作elasticsearch
- 修復(fù)jest的Connection is still allocated異常
- mongo的geo查詢
kafka
- 聊聊spring對kafka的集成方式
- springboot集成akka
- spring cloud stream kafka實(shí)例
- spring-cloud-stream-binder-kafka屬性配置
- kafka0.8生產(chǎn)者實(shí)例
- kafka0.8消費(fèi)者實(shí)例
- kafka0.8生產(chǎn)者配置參數(shù)解析
- kafka0.8生產(chǎn)者異常處理
- 聊聊kafka的partition分配
- 聊聊kafka0.8的consumer超時時間屬性
- 聊聊kafka0.8的topic的partition以及topicCountMap
- 聊聊kafka consumer offset lag increase異常
- 聊聊kafka consumer offset lag的監(jiān)控
- 聊聊kafka 0.8 ConsumerFetcherManager的MaxLag指標(biāo)
- 聊聊kafka client chunkQueue 與 MaxLag值
- kafka0.10client使用實(shí)例
- 聊聊spring kafka的retry
- 聊聊spring for kafka的AckMode
- spring for kafka自動配置及配置屬性
- 自定義spring kafka consumer 線程池
- 聊聊kafka的group coordinator
- 聊聊kafka client的auto commit
- 聊聊spring for kafka對producer的封裝與集成
- 聊聊spring for kafka對consumer的封裝與集成
- kafka streams的join實(shí)例
- 自定義kafka streams的processor
- kafka stream errorlog報警實(shí)例
- kafka stream word count實(shí)例
監(jiān)控
- spring boot admin slack報警
- springboot讀取dropwizard的metrics
- springboot輸出metrics到prometheus
- 輸出hystrix指標(biāo)到dropwizard metrics
- Prometheus的架構(gòu)及持久化
- 通過jmx監(jiān)控docker中的java應(yīng)用
- 使用pcp監(jiān)控spring boot的docker應(yīng)用
- docker運(yùn)行badjs
- 使用grafana4的alert功能
- 在java里頭讀取/proc/net/dev
- curl記錄響應(yīng)時間
- 進(jìn)程cpu使用率的計算
- java獲取指定進(jìn)程的stat
- 關(guān)于statsd timer的幾個指標(biāo)
- 關(guān)于graphite的幾個function
- 關(guān)于codahale的HistogramMetric
- grafana使用mysql存儲
- SlidingTimeWindowReservoir的大小控制
- grafana高可用架構(gòu)
- sentry8.15禁用注冊
arch / design / data structure
- ArchiMate分層概念
- 聊聊partition的方式
- 聊聊replication的方式
- 分布式id生成方案概述
- 聊聊base62與tinyURL
- 高性能SPSC無鎖隊列設(shè)計之路
- 緩存的Cache Aside模式
- JCTools簡介
- HashedWheelTimer算法詳解
- lamport面包店算法簡介
- 使用ratelimitj進(jìn)行api的限流
- 基于權(quán)重的隨機(jī)負(fù)載均衡路由算法
- hyperloglog的java版使用
- 聊聊jump consistent hash
- bloomfilter的簡單實(shí)現(xiàn)
- 使用合適的數(shù)據(jù)結(jié)構(gòu)統(tǒng)計單詞次數(shù)
- 敏感詞檢測算法小結(jié)
- Trie樹使用實(shí)例
- 聊聊GenericObjectPool的泄露檢測
- GenericObjectPool參數(shù)解析
- shedlock源碼解析
- 使用shedlock將spring schedule上鎖
mac /linux /app build
- 動態(tài)生成ios plist的方法
- ios打包報錯:User interaction is not allowed
- zsh: you have running jobs
- 使用sed替換文本
- mac unable to get application ASN from launchservicesd
- mac上Tesseract3.04.01_2樣本訓(xùn)練
- mac安裝consul
- shell獲取文件大小及checksum
- apk文件的sign以及align命令
測試 / 部署
- 使用JUnitParams簡化Parameterized tests
- 如何批量壓測登錄態(tài)的接口
- 使用jmh進(jìn)行微基準(zhǔn)測試
- 關(guān)于性能測試的幾個要點(diǎn)
- Delivery Pipeline
- 使用postman作為rest api自動化測試工具
- 批量執(zhí)行newman
- jenkins的bash shell使用boolean值
- jenkins推送鏡像到私有docker-registry
- jenkins構(gòu)建docker鏡像
- jenkins集成java靜態(tài)代碼分析工具
- sonar自定義規(guī)則
- jenkins集成sonarqube
- 部署本地jar到maven私服倉庫
- mac安裝gitlab-ci-multi-runner運(yùn)行sonar
- maven倉庫jar包發(fā)布指南
- maven加載外部依賴包
- maven的test使用main的resources