原创 不管你信不信,反正我信了 - 怎樣做好程序員

很多程序員, 包括我自己, 在職業生業道路上前進時會陷入一個誤區, 認爲對程序員而言最重要的是技術,因而不斷的提升技術水平來武裝自己。   他們寫代碼是以技術爲驅動的,比如說在項目中使用XX高端的技術,實現XX設計模式、精妙算法。 這沒有什

原创 吸取教訓:一段網上找的代碼突然爆了,項目出現大BUG

本人是做遊戲服務器開發的,碰到一個需求,給符某些要求的玩家的發送道具獎勵,獎勵的數量根據離線的天數計算。 這個需求實現起來很簡單,只需要在玩家上線的時候計算上次離線時間和當前時間間隔的天數,然後根據策劃的算法,計算出道具種類與數量,發一封郵

原创 網站出現bug,我深夜被叫醒處理,用一個觸發器解決了問題

凌晨兩點,我正在睡夢之中,此時電話忽然想起,在漆黑的深夜中顯得格外刺耳。 這個時間點電話響了肯定沒好事,因爲我的手機在夜間模式下,除非被同一個電話號碼打三次,否則是靜音,因此電話那邊的人肯定有急事找我。我心一下子緊繃,睡意全無。 來電的是一

原创 領導要求996,我拒絕了

一 互聯網公司程序員,前些天項目趕進度,被強制加班。 我們公司以前也是鼓勵員工加班,但比較隱晦, 不是強制的,而這次是上司直接發話,必須要加班,否則工作無法完成的責任會扣到你頭上。 被要求強行加班,無償的,而且是喪心病狂的996,我臉上顯得

原创 合理的估算Java線程池大小的方法

網上有給出簡單的線程池大小估算方法 如果是CPU密集型應用,則線程池大小設置爲N+1 如果是IO密集型應用,則線程池大小設置爲2N+1 然而這兩個公式顯然是不管用的,除非整個CPU服務於一個線程池<br /> <br />管用的估算方法

原创 Java不魔改默認線程池機制來實現可伸縮的線程池

java的線程池提供設置基本大小和最大大小兩個參數來實現可伸縮的線程池 public ThreadPoolExecutor(int corePoolSize, int max

原创 利用SynchronousQueue多線程處理ActiveMQ消息

當我們想通過多條線程處理activemq中的消息,直覺上會使用固定大小線程池去處理,然而這種方式並不妥當,這麼做我們只是將消息從activemq轉移到線程池的阻塞隊列之中,當線程池開始工作,activemq中的消息快速被消費完畢,而消息所代

原创 Java I/O 中InputStream和Reader的使用規律

當我們使用java io系統進行外部數據讀取,如網絡、文件等內容讀取很容易被複雜的類庫搞的頭昏腦脹,歲雖然要理解java的io系統以及複雜的類層次結構是一項艱難的任務,所以對於通過類庫滿足我們的需求通常是千遍一律的,比如如何讀取到互聯網上一

原创 javascript中caller與callee的作用以及用法

javascript中caller與callee的作用以及用法 這兩個關鍵字在平時編碼中幾乎難以用到,但它們既然存在於javascript語言體系中,那麼還是有必要了解下。 caller是javascript函數類型的一個屬性,它引用調用當

原创 java stream api reduce與collect的用法差異

java stream api reduce與collect的用法差異 java stream api中 reduce與collect 在功能上有差異也有重疊,但是重疊部分的實現也存在差異。 比入我們要爲一個數值列表求和,求和的結果將從in

原创 java stream api中的reduce方法使用

java stream api中的reduce方法使用 java stream api是對函數式編程的支持,雖然stream api和c# linq比起來就是拖拉機和法拉利的區別,不過勉強能用,總比沒有強。 stream api的reduc

原创 生產環境出現事故,開發和運維都有責任,到底該誰背鍋

發生一檔子事情,公司技術團隊之中有兩個部門,一個開發一個運維,開發負責公司項目軟件項目實現,運維負責項目運行生產環境服務器與數據的管理與維護。 前兩天生產環境發生一起故障,項目依賴的redis服務器由於內存不足而出現寫入故障,有一批用戶丟失

原创 Java線程池執行任務的兩種機制,invokeAll和 CompletionService

通常Java線程池執行的任務有兩種類型,一種是不帶返回值的Runnable, 另一種是帶返回值的Callable。 對於不帶返回值的任務通常我們不太關注任務是否執行結束以及結束後應該做做些什麼,我們將任務提交給線程池, 然後顧自己幹別的事情

原创 JMX的用處及用法

JMX最常見的場景是監控Java程序的基本信息和運行情況,任何Java程序都可以開啓JMX,然後使用JConsole或Visual VM進行預覽。下圖是使用Jconsle通過JMX查看Java程序的運行信息 爲Java程序開啓JMX很簡單

原创 關於SingleThreadExecutor以及FinalizableDelegatedExecutorService

關於SingleThreadExecutor以及FinalizableDelegatedExecutorService Executors.newSingleThreadExecutor方法用於創建只用單個線程處理任務的線程池,此方法是一個