博客 / 列表

扣釘日記 - 正則表達式技巧與注意事項

原創:打碼日記(微信公眾號ID:codelogs),歡迎分享,轉載請保留出處。 簡介 現如今,正則表達式幾乎是程序員的必備技能了,它入手確實很容易,但如果你不仔細琢磨學習,會長期停留在正則最基本的用法層面上。 因此,本篇文章,我會介紹一些能用正則解決的場景,但這些場景如果全自己琢磨實現的話,需要花一些時間才能完成,或者就完全想不出來,另外也會介紹一些正則表達式的性能問題。 匹配多個單詞 比如

regexp , 正則表達式

扣釘日記 - 傳參base64時的+號變空格問題

原創:扣釘日記(微信公眾號ID:codelogs),歡迎分享,非公眾號轉載保留此聲明。 問題發生 上上週,看到一位老哥找我們組同事聯調接口,不知道是什麼問題,兩人坐一起搞了快1個小時,看起來好像有點複雜。 突然,老哥發出一聲卧槽,"我傳參裏的+號,到你這怎麼變成了空格!",這個聲音很大,我明顯的聽到了,很快,我就大概Get到了他們的問題點。 我猜測他們遇到的問題大概如下: 我們的接口協議上,都

urlencode , base64

扣釘日記 - 我有一篇Java Stream使用手冊,學了就是你的了!

原創:扣釘日記(微信公眾號ID:codelogs),歡迎分享,非公眾號轉載保留此聲明。 簡介 日常編程工作中,Java集合會經常被使用到,且經常需要對集合做一些類似過濾、排序、對象轉換之類的操作。 為了簡化這類操作,Java8添加了一套新的Stream API,使用方式就像寫SQL一樣,大大簡化了這類處理的實現代碼量與可讀性。 基礎Stream函數 比如,我們要查詢雙11期間交易額最大的10筆訂單

JAVA , stream

扣釘日記 - 記一次使用gdb診斷gc問題全過程

原創:扣釘日記(微信公眾號ID:codelogs),歡迎分享,轉載請保留出處。 簡介 上次解決了GC長耗時問題後,系統果然平穩了許多,這是之前的文章《GC耗時高,原因竟是服務流量小?》 然而,過了一段時間,我檢查GC日誌時,又發現了一個GC問題,如下: 從這個圖中可以發現,我們GC有一些尖峯,有時會突然有大量的內存分配。 查看GC日誌,發現有大對象分配的記錄,如下: $ gre

gdb , jvm調優 , gc , Linux

扣釘日記 - Java8中那些方便又實用的Map函數

原創:扣釘日記(微信公眾號ID:codelogs),歡迎分享,轉載請保留出處。 簡介 java8之後,常用的Map接口中添加了一些非常實用的函數,可以大大簡化一些特定場景的代碼編寫,提升代碼可讀性,一起來看看吧。 computeIfAbsent函數 比如,很多時候我們需要對數據進行分組,變成MapInteger, List?的形式,在java8之前,一般如下實現: ListPayment paym

hashmap , JAVA , 後端

扣釘日記 - 拒絕蠻力,高效查看Linux日誌文件!

原創:扣釘日記(微信公眾號ID:codelogs),歡迎分享,轉載請保留出處。 簡介 日常分析問題時,會頻繁地查看分析日誌,但如果蠻力去查看日誌,耗時費力還不一定有效果,因此我總結了在Linux常用的一些日誌查看技巧,提升日誌閲讀效率。 grep查找日誌 在我們查找某些異常日誌時,經常需要同時查看異常前面或後面的一些日誌,因為有時前面或後面的日誌就已經標識出異常原因了,而grep的-A、-B、-C

awk , less , Linux

扣釘日記 - hex,base64,urlencode編碼方案對比

原創:打碼日記(微信公眾號ID:codelogs),歡迎分享,轉載請保留出處。 簡介 在工作過程中,我們慢慢會了解到hex、base64、urlencode這3種常見的字節編碼方案,它們是如此的熟悉,可是經常我們自己也説不清為啥要使用它們,下面我會詳細解釋下。 hex編碼 hex編碼,又稱十六進制編碼(也稱base16),一般用於方便人們查看二進制文件內容,它將字節數據中的每4個bit使用數字(0

urlencode , base64 , hex

扣釘日記 - 字符編碼解惑

原創:打碼日記(微信公眾號ID:codelogs),歡迎分享,轉載請保留出處。 簡介 現代編程語言都抽象出了String字符串這個概念,注意它是一個高級抽象,但是計算機中實際表示信息時,都是用的字節,所以就需要一種機制,讓字符串與字節之間可以相互轉換,這種轉換機制就是字符編碼,如GBK,UTF-8 所以可以這樣理解字符串與字符編碼的關係: 字符串是一種抽象,比如java中的String類

utf-8 , 字符編碼 , unicode