原创 MyBatis(5):MyBatis 集成 Spring 事務管理(上)

單獨使用MyBatis對事物進行管理 前面MyBatis的文章有寫過相關內容,這裏繼續寫一個最簡單的Demo,算是複習一下之前MyBatis的內容吧,先是建表,建立一個簡單的Student表: create table stude

原创 HashMap的設計原理與實現分析

          HashMap在Java開發中有着非常重要的角色地位,每一個Java程序員都應該瞭解HashMap。     本文主要從源碼角度來解析HashMap的設計思路,並且詳細地闡述HashMap中的幾個概念,並深入探討Ha

原创 Java動態代理機制詳解(JDK 和CGLIB)

class文件簡介及加載      Java編譯器編譯好Java文件之後,產生.class 文件在磁盤中。這種class文件是二進制文件,內容是隻有JVM虛擬機能夠識別的機器碼。JVM虛擬機讀取字節碼文件,取出二進制數據,加載到內

原创 hashMap和Hashtable的區別

原文地址:http://www.cnblogs.com/lzrabbit/p/3721067.html#h1 HashMap和Hashtable的區別 兩者最主要的區別在於Hashtable是線程安全,而HashMap則非線程安全

原创 數據結構之快速排序

以前對快速排序,僅僅停留在記憶代碼的階段,今天,我真正理解了該排序算法的原理,利用自己腦袋中的理解,在這裏用Java語言實現,以便自己以後複習。 快速排序 package sort; /** * @packagname:sort

原创 《java高併發程序設計》讀書筆記(3)

多線程的團隊協作:同步控制 重入鎖:這種鎖可以反覆進入,可以響應中斷(lockInterruptibly()方法),可以申請等待時限(tryLock(),tryLock(long timeout, TimeUnit unit)),可以產

原创 《java高併發程序設計》讀書筆記(4)

提高鎖性能 如何提高鎖性能 減小鎖持有的時間 減小鎖粒度 鎖分離 鎖粗化 java虛擬機對鎖優化的處理 偏向鎖:如果一個線程獲得了鎖,那麼鎖就進入偏向模式,當這個線程再次請求鎖時,無須再做任何同步操作,這樣可以節省大量有關鎖申請的操

原创 Elasticsearch知識總結

前言 該文章是我讀《Elasticsearch權威指南》後的知識總結,學習任何一門技術,讀任何一本書都需要總結知識經驗,好記性不如爛筆頭,初識elasticsearch,如有總結不恰當的地方,還請各路大神不吝賜教。 Elasticsear

原创 《java8 in action》讀書筆記(1)

行爲參數化 官方解釋:讓方法接受多種行爲(或戰略)作爲參數,並在內部使用,來完成不同的行爲。 代碼解釋: class Apple{ private String colors; private int weigth;

原创 高版本logstash收集log4j日誌

前言 logstash在舊版本中有log4j輸入插件可以直接通過項目中配置log4j來實現日誌的收集,但是在高版本的logstash利用log4j插件是收集日誌時一直收集不到, 通過閱讀最新官方文檔,才發現高版本logstash的log4

原创 《java高併發程序設計》讀書筆記(1)

併發幾個重要的概念 同步&異步 二者一般都指方法的調用,同步方法一旦調用開始,調用者必須等到方法調用返回後才能繼續後續的行爲,異步方法調用更像一個消息傳遞,一旦開始,方法調用就會立即返回,調用者可以繼續後續的操作。而異步方法通常會在另外

原创 《java高併發程序設計》讀書筆記(2)

有關線程必知 線程&進程 - 線程:輕量級進程是程序執行的最小單位。 - 進程:計算機中程序關於某數據集合上的一次運行活動是系統進行資源分配和調度的基本單位,是操作系統結構的基礎,是線程的容器。 線程的基本操作 新建線程

原创 數據結構之隊列(鏈式存儲)

一:隊列結點 package linkedqueue; /** * @packagname:linkedqueue * @classname:LinkedQueueNode * @date:2017/1/25 * @author

原创 Java中的參數傳遞

關於Java傳參時是引用傳遞還是值傳遞,一直是一個討論比較多的話題,有論壇說Java中只有值傳遞,也有些地方說引用傳遞和值傳遞都存在,比較容易讓人迷惑。關於值傳遞和引用傳遞其實需要分情況看待,今天學習和分析一下,着急可以先看最後的結論。

原创 數據結構之選擇排序

已經學習Java接近三年的cullinans,回頭再看數據結構的一些知識,果然和剛學時不一樣,今日記錄下自己對這些知識的理解,以便自己不斷重複更加深入的理解。 選擇排序 package sort; /** * @packagname