原创 Connection is not associated with a managed connection

Connection is not associated with a managed connection 

原创 hashMap僞代碼

hashMap原理的僞代碼 V put(K k , V v) { int hashCode = hashCode(k); Node node = new Node(k, v); if (table[hashCode] =

原创 二叉樹僞代碼

Node { int key; E item; Node parent; Node leftChild; Node rightChild; } BinaryTree { Node root; Node f

原创 LinkedList僞代碼

在表頭插入和刪除速度很快,僅需改變一兩個引用值,所以花費 O(1) 的時間。 平均起來,查找、刪除和在指定節點後面插入都需要搜索鏈表中的一半節點,需要O(N)次比較。 在數組中執行這些操作也需要 O(N) 次比較,但是鏈表仍然要比數組快

原创 快速排序算法

分治法 O(nlogn) pivot 基準元素 選定了基準元素以後,我們要做的就是把其他元素當中小於基準元素的都移動到基準元素一邊,大於基準元素的都移動到基準元素另一邊。 具體如何實現呢?有兩種方法: 1.挖坑法 2.指針交換法

原创 基礎排序算法

冒泡排序最好的情況是初始狀態是正序的, 一次掃描即可完成排序,所以最好的時間複雜度爲 O(N); 最壞的情況是反序的,此時最壞的時間複雜度爲 O(N^2)。 平均情況,每輪 N/2 次循環,N 輪時間複雜度爲 O(N^2)。 publi

原创 踩到的swich的坑

swtich()變量類型只能是int、short、char、byte和enum類型(JDK 1.7 之後,類型也可以是String了)。當進行case判斷時,JVM會自動從上到小掃描,尋找匹配的case,可能存在以下情況:  

原创 編碼解碼技術

什麼是對象的編碼,解碼,其實就是序列化和反序列化,就是java對象和字節序列之間的轉換過程。 把對象轉換爲字節序列的過程稱爲對象的序列化。 把字節序列恢復爲對象的過程稱爲對象的反序列化。   java對象的序列化方式大概有兩種 1. 文本

原创 Oracle索引

  基本語法 create index index_name on table_name(column_name);   什麼字段不適合建立索引,對於基數低的字段,基數低,表示在索引列中,所有取值的數量比表中的行的數量要少。比如性別

原创 TCP 粘包和拆包

由於TCP無法理解上層的業務數據,所以底層無法保證數據包不被拆分和重組 所以我們需要在上層設計協議棧來解決這個問題。 主流的協議方案有 1. 消息定長 2. 在包尾部增加換行回車符 3. 將消息分成消息頭和消息體 4. 其他   爲了展現

原创 分割符和定長解碼器的應用

DelimiterBasedFrameDecoder 分隔符解碼器 FixedLengthFrameDecoder 定長解碼器   使用也非常簡單,只需要加到Handler裏面去就可以了 ServerBootstrap bootstra

原创 英語學習

refactor 重構 snapshot 快照 imcompaible 不兼容 embrace 包括 flexibility 靈活性 many kinds of 許多種類的 depends on the application needs

原创 IDEA無法打斷點的原因

如圖所示,當開啓debug,之後,斷點從紅色變成了上面這個樣子 原因是遠程服務器上,這一行沒有代碼,是空行,不能打斷點。 所以你需要將你的代碼和服務器上的代碼同步一下,這樣才能成功打斷點。

原创 Google protobuf 編碼解碼

官網 https://developers.google.com/protocol-buffers Protocol buffers are a language-neutral, platform-neutral extensible

原创 英語學習 Spring文檔閱讀生詞(一)

閱讀地址 https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#spring-core   pivotal 關鍵的 absolute