原创 面試題:出現次數的Top K問題

題目: 給定String類型的數組strArr,再給定整數k,請嚴格按照排名順序打印出現次數前k名的字符串。 舉例: strArr=[“1”,”2”,”3”,”4”], k=2 No.1:1,times:1 No.1:

原创 2017春招實習總結篇

春招在基友的幫助下,從三月初開始準備: 阿里(螞蟻金服、菜鳥、河馬鮮生事業部內推):一面掛。。。 1.請自我介紹 2、項目中Mina框架的特點 3、spring中AOP的原理機制 4、TCP/IP的三次握手協議、四次揮手

原创 面試題:Java中ArrayList循環遍歷並刪除元素的陷阱

面試官問到這個問題時,當時有點沒反應過來,多瞭解哈 先看測試案例: import java.util.ArrayList; public class ArrayListRemove {

原创 多線程系列提高(7)--同步工具類

同步工具類可以是任何一個對象,只要它根據其自身的狀態來協調線程的控制流。阻塞隊列可以作爲同步工具類,其它類型的同步工具類還包括信號量(Semaphore)、欄柵(Barrier)、以及閉鎖(Latch)。 所有的同步工具類都包含

原创 多線程提高系列(1)--線程的優勢以及風險性

一、線程的優勢 (1)充分發揮多處理器的強大能力:由於線程是CPU調度和分配的基本單位,因此如果在程序中只有一個線程,那麼最多同時在一個處理器上運行。在雙核處理器系統上,單線程的程序只能使用一半的CPU資源,而在擁有100個處理器

原创 十、編解碼技術--Java序列化

Java自身的序列化機制,就是只需要序列化的POJO對象實現Java.io.Serializable接口,根據實際情況生成序列ID,這個類就能夠通過java.io.ObjectInput和java.io.ObjectOutput序列化和反

原创 2、String數據類型的操作

一、概述: 字符串類型是Redis中最爲基礎的數據存儲類型,它在Redis中是二進制安全的,這便意味着該類型可以接受任何格式的數據,如JPEG圖像數據或Json對象描述信息等。在Redis中字符串類型的Value最多可以容納的數據長度是5

原创 二、基於BIO、僞異步IO、NIO的Java代碼實例

1、BIO代碼實例 服務端: package BIODemo; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; /**

原创 多線程系列提高(8)--取消與關閉

任務和線程的啓動很容易,然後讓它們運行直到結束,或者讓它們自行停止。但是,如果我們希望提前結束任務或者線程,或者是因爲用戶取消了當前操作,或者應用程序需要被快速的關閉。Java中沒有提供任何機制來安全的終止線程,但它提供了中斷,這是一種協

原创 七、分隔符和定長解碼器的應用(1)

TCP以流的方式進行數據傳輸,上層的應用協議爲了對消息進行區分,往往採用如下四種方式: (1)消息長度固定,累計讀取到長度總和爲定長LEN的報文後,就認爲讀取到了一個完整的信息;將計數器置位,重新開始讀取下一個數據報; (2)將回車換

原创 3、List操作

一、概述: 在Redis中,List類型是按照插入順序排序的字符串鏈表。和數據結構中的普通鏈表一樣,我們可以在其頭部(left)和尾部(right)添加新的元素。在插入時,如果該鍵並不存在,Redis將爲該鍵創建一個新的鏈表。與此相反,如

原创 1、redis入門第一篇

redis安裝 系統環境:Linux CentOS7 1、到官網下載最新stable版 2、解壓源碼並進入目錄 3、 make 4、 可選 make test (可能出現need tcl>8.4,yum install tcl

原创 十一、Google Protobuf 編解碼

Protobuf是一個靈活、高效、結構化的數據序列化框架,相比於XML等傳統的序列化工具,它更小、更快、更簡單。Protobuf支持數據結構化一次可以到處使用,甚至跨語言使用,通過代碼生成工具可以自動生成不同語言版本的源代碼,甚至可以在使

原创 Spring技術內幕--(1)Spring的設計理念和整體架構

一、Spring的設計目標 1、設計理念 在Java EE的應用開發中,支持POJO和使用JavaBean的開發方式,使應用面向接口開發,充分支持OO(面向對象)的設計方法。 2、與傳統Java EE開發的區別 (1)在Java EE應用

原创 五、Netty5解決TCP粘包問題

我們在前面的Demo中並沒有考慮到讀半包問題,這在功能測試中往往沒有問題,但是一旦壓力上來,或者發送大報文之後,就會存在粘包和拆包問題,如果代碼沒有考慮,往往就會出現解碼錯位或者錯誤,導致程序不能正常運行。下面使用netty的半包解碼器來