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