原创 ThreadLocal源碼解讀

ThreadLocal的作用 用於實現線程內的數據共享,即對於相同的程序代碼,多個模塊在同一個線程中運行時要共享一份數據,而在另外線程中運行時又共享另外一份數據。   ThreadLocal的主要方法 主要方法有 get(),set(),

原创 手寫一個簡化版Mybatis

1、引包 引入dom4j包以及數據庫連接包,我用的是mysql數據庫,因此引入mysql-connector包 2、數據庫創建 數據庫比較簡單,創建sql如下 CREATE DATABASE db_test; use db_test;

原创 自己動手實現BlockingQueue

    Java的java.util.concurrent.*包下有許多在併發場景下使用的集合,ArrayBlockingQueue是其中之一,它是一個循環隊列,這個隊列的特別之處在於take方法與put方法,分別對應隊列的元素出列和元素

原创 【算法】跳石板問題(廣度優先搜索)

題目描述(來源:網易的筆試題) 小易來到了一條石板路前,每塊石板上從1挨着編號爲:1、2、3.......這條石板路要根據特殊的規則才能前進:對於小易當前所在的編號爲K的 石板,小易單次只能往前跳K的一個約數(不含1和K)步,即跳到K+X

原创 關於 0.1+0.2 == 0.3 不成立的一些細節

很早之前看到一關於js的問題,如下實際上 0.1+0.2 != 0.3 這個問題不是js特有,來看一段java代碼 @Test public strictfp void test() { System.out

原创 ArrayBlockingQueue源碼解讀

public ArrayBlockingQueue(int capacity, boolean fair) { if (capacity <= 0) throw new IllegalArgumentExcepti

原创 迷宮的生成——深度優先搜索

生成一個迷宮的算法有好幾種,下面來介紹一下用深度優先搜索的思想來生成一個迷宮。   算法描述 迷宮的初始狀態是一張有衆多單元格組成的網格,單元格的初始狀態是“四面有牆”,DFS的步驟如下 1.將起點作爲當前迷宮單元並標記爲已訪問 2.

原创 第九屆藍橋杯國賽參賽心得

ps:這是我第一次參加藍橋杯的國賽,非專門玩ACM的,也很少去徹底鑽研很高深的算法        我參加的是C/C++大學B組,客觀來說題目從題難度不高,總共6道,我估計自己做出了4.5道,最後拿的是國二,沒有一等獎有點遺憾,不過歸根結底

原创 用Java寫一個Photo Mosaic

早在兩星期前也寫了個“馬賽克拼圖”,不過只支持黑白色的圖片,昨天試了下拼彩色圖片,先來一張預覽圖,效果還是可以的實現思路1、準備大量小張方形素材,爲了方便表述,姑且稱這些圖片爲“Tile”2、對於每一個Tile,作如下處理:統一壓縮成同一

原创 ServerSocket實現超簡單HTTP服務器

1、相關知識簡介 HTTP協議 HTTP是常用的應用層協議之一,是面向文本的協議。HTTP報文傳輸基於TCP協議,TCP協議包含頭部與數據部分,而HTTP則是包含在TCP協議的數據部分,如下圖 HTTP報文本質上是一個TCP報文,數據部

原创 用Java實現簡單的“馬賽克拼圖”

先來一張效果圖這些頭像都來自微信好友的,放大看這不過是一張衆多頭像拼成的大圖,縮小或遠看能夠發現這些頭像其實拼出了一個有趣的圖案。這個實現思路並不複雜(這個思路暫時只針對黑白的圖片,如果要支持彩圖會更復雜一點,可以瞭解下 foto-mos

原创 【算法題】不使用四則運算求A+B

題目描述 最近看到一道比較有趣的算法題,原題是這樣的: 寫一個函數,求兩個整數(int)之和,要求在函數體內不得使用+、-、*、/四則運算符號。 我的解法 public int add(int num1, int num2) {

原创 SHA1算法以及Java代碼實現(不使用MessageDigest類)

SHA1是常見的哈希函數之一,關於哈希函數的內容,可以看一看這篇文章 http://blog.csdn.net/shaoqunliu/article/details/52078869 最近課程上了點密碼學,稍微瞭解了下哈希函數,並且試

原创 Java NIO實現WebSocket服務器

簡介 在HTTP請求中,服務器往往處於被動的一方,通常都是客戶端向服務器發送請求時,服務器纔會做出響應,服務器並不會主動向客戶端推送消息。因此WebSocket API就爲此誕生。WebSocket API是HTML5中的一大特色,能夠使

原创 回溯法簡單應用--解數獨

簡單介紹 數獨是當下較爲流行的數學遊戲之一。通常數獨由9x9的格子構成,其中將9x9的格子分爲9個3x3的區域,稱爲“宮”(通常宮與宮之間會用較粗的線來分隔)。遊戲的目標則是在格子中填滿1~9的數字,並且使得數字之間滿足一定的約束條件。