原创 java jdk中自帶的基於接口的動態代理實現方式和cglib基於子類的動態代理舉例,使用和記憶

動態代理的作用:在不改變源碼的情況下增強方法; 舉個例子,在進行簡單的jdbc操作的時候,你想做到每執行一次sql語句就打印一句話,作爲日誌. 說明:本例子是基於接口的動態代理,(當然也有基於子類的動態代理模式了)[點擊這裏連接到

原创 java中讀取properties文件內容(標準讀法,降低耦合度利用class.getResourceAsStream)

首先就是新建一個properties文件了,eclipse中新建一個properties文件的方式就是new-file-然後起文件名把後綴改爲properties就行了; 然後就是讀取文件的操作了: public class Te

原创 用原生jdk實現tomcat的功能 --靜態網頁

用Socket編程來實現tomcat對於瀏覽器輸入uri和顯示對應的頁面功能:此篇博客就用了一個TestSevlet類和兩個html頁即可實現; 下一篇博客:原生jdk實現tomcat功能+對比servletapi和tomcat執

原创 八皇后問題解答-最經典的回溯算法(遞歸和非遞歸)+暴力-java編寫最簡代碼

八皇后問題來源: 八皇后問題,一個古老而著名的問題,是回溯算法的典型案例。該問題由國際西洋棋棋手馬克斯·貝瑟爾於 1848 年提出:在 8×8 格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列

原创 java中使用cglib和asm實現基於子類(java簡單類)實現的動態代理實例+基於接口實現動態代理

動態代理的作用:在不改變源碼的情況下增強方法; 舉個例子,在進行簡單的jdbc操作的時候,你想做到每執行一次sql語句就打印一句話,作爲日誌. 說明:本例子是基於子類(任何一個java普通類)的動態代理,(當然也有基於接口的動態代

原创 java實現赫夫曼樹以及赫夫曼編碼和解碼(用byte[])

首先對於赫夫曼編碼有個大概的理解:赫夫曼編碼(Huffman Coding),又稱霍夫曼編碼,是一種編碼方式,可變字長編碼(VLC)的一種。Huffman於1952年提出一種編碼方法,該方法完全依據字符出現概率來構造異字頭的平均長

原创 怎麼理解KMP算法中的next數組(爲甚有時候加一有時候不加一?)

KMP算法怎麼來的和找規律,以及對於BF算法他的主要區別就不再贅述我們,我們來說一下怎麼用最快的速度加上已知規律找到給定字符串的next數組(C語言中和java中都適用): 我們已經找到了部分規律:next數組中的值可能和已匹配部

原创 全排列-java實現 遞歸和回溯 交換兩種方式

首先我們用一種比較容易理解的回溯方式–將我們需要做全排列的所有元素想象成一顆樹,我們只用對這個樹進行遍歷即可,把結果放入集合中去就行了;放入的條件當然是集合中元素的數量跟我們給定的元素數量相等;那[1,2,3]舉例: 那麼這種方式

原创 java怎麼打印一顆二叉樹(赫夫曼樹,排序樹,avl樹等)的結構

相信有好多正在學習樹的同學爲一個事情而苦惱——一個給定二叉樹或者是我們進行某種操作之後的二叉樹不會遍歷看到他的結構!這個問題也苦惱了我好久,當我解決了之後就想立刻分享出來供大家消遣;先來看一下運行後的結果: 這哪個是根結點等的呢

原创 java對於粘貼板的操作(複製和粘貼),系統粘貼板(包含圖片和文本)

Java提供兩種類型的剪貼板:系統的和本地的. (1)本地剪貼板只在當前虛擬機中有效.Java允許多個本地剪貼板同時存在,可以方便地通過剪貼板的名稱來進行存取訪問. (2)系統剪貼板與同等操作系統直接關連,允許應用程序與運行在該操

原创 原生jdk實現tomcat功能+對比servletapi和tomcat執行流程分析 --動態版

接上文:實現tomcat對於靜態資源的功能; 本文增加動態功能以及對比servletapi,項目目錄大概就是這樣html主要是靜態的上篇文章說的 package cn.wcy.mytomcat2; import java.io.