原创 各種排序算法python和java實現(二)
第一篇博客實現了三種最基本最簡單的排序算法,本篇文章將在這三種算法的基礎上稍微演變一下。 1.快排 光從名字看就知道速度肯定不差,前一篇講的冒泡排序,怎麼看都不算是一種好的排序算法,裏面充斥了太多的無謂的交換動作,時間複雜度倒是很穩定o(
原创 jvm的happens-before原則
提到併發,通常首先想到是鎖,其實對共享資源的互斥操作是一方面,在java中還有一方面是內存的可見性和順序化,瞭解JMM的同學可能會更清楚些,內存可見性和順序性同樣非常重要,在這裏簡單提一下JMM模型,首先介紹一下SMP(對稱多處理結構)如
原创 關於類的初始化
網上看到一個非常有意思的java面試題,感覺裏面有不少可以講的東西,拿來與大家分享一下: 題目很簡潔就是給出下面這段程序的輸出內容: public class DispatchTest { public static void mai
原创 一個關於awk命令和sort命令的小例子
假設現在有如下一個txt的文本記錄: a|b|c|150203161843.289||| 1|2|c|150203161843.300||| a|m|c|150203161943.289||| |b|c|150203162843.289|
原创 從一道題目看類加載
有一道非常經典的題目,如果對虛擬機加載類的過程不熟悉,很容易就答錯,題目如下: public class Singleton { public static Singleton instance = new Singleton();
原创 tomcat系列之類加載器
jvm中有三種類加載器,好吧,爲了介紹tomcat中的類加載器,先來普及下類加載器的概念,參見這篇文章——JVM類加載器 。 就像JVM的類加載器一樣,爲了安全tomcat中自己擴展了幾種類加載器,分別來加載不同路徑下的lib庫,因爲
原创 JVM中方法調用的實現
我們寫代碼時方法調用是最常見的場景,但是這種最常見的場景在JVM中是如何實現的呢,下面就一起來探索一番。 注:博客內容參考了周志明的《深入理解java虛擬機》,如果大家想了解的更詳細推薦這本書,另外還有一本比較久遠的《深入java虛擬機第
原创 各種排序算法python和java實現(一)
先從最簡單的實現冒泡排序: # -*- coding: UTF-8 -*- intarray=[3,4,5,1,2,0,6,9,7] def bubble(array): for i in range(1,len(array))
原创 tomcat系列之整體結構
本系列文章是基於tomcat6.0的源碼。首先分析一下tomcat的啓動腳本,windows下的bat if "%OS%" == "Windows_NT" setlocal rem ----------------------------
原创 jdk集合源碼之LinkedList
LinkedList不同於ArrayList,它底層使用的是雙向循環鏈表實現的。繼承自AbstractSequentialList<E>不支持隨機訪問,同時一個LinkedList也是一個雙端隊列,支持從兩端的增刪,雙端隊列在某些多線程
原创 持續集成(Continuous Integration)
持續集成 作者:Martin Fowler 譯者:滕雲 原文發佈時間:2006年5月1日 翻譯時間:2012年2月25日 原文鏈接:http://www.martinfowler.com/articles/c
原创 jdk集合源碼之ArrayList
經常使用jdk提供給我們的集合,比如ArrayList,LinkedList,HashMap等等,還學習過他們之間的不同和相同點,比如ArrayList查詢快,新增刪除慢,LinkedList則相反,沒有看過底層的源碼,是沒辦法理解這些
原创 jdk集合源碼之HashMap
分析完數組和鏈表,再來分析下HashMap的源碼,基於K-V方式的存儲結構,簡單想象一下,典型的實現是基於數組+鏈表,正好我們前面分析完了數組和鏈表。廢話不多說,直接上源碼。 還是先從構造函數看起: public HashMap(
原创 python小練習
python版本使用的是2.7 工作中正好將正在學習的python用上,如果使用java寫的話太麻煩,代碼行數遠比python要多。 第一個例子是根據id的列表生成insert語句插入到某個簡單的表,因爲需要做聯合查詢,所以新建一張一個字
原创 由一道題目引出的java多態
某次逛論壇時發現一個非常有意思的題目,如下: class A<B> { public String show(A obj) { return ("A and