正則難理解因為里面有一個等價的概念,這個概念大大增加了理解難度,讓很多初學者看起來會蒙,如果把等價都恢復成原始寫法,自己書寫正則就超級簡單了,就像說話一樣去寫你的正則了: 等價: ?,*,+,\d,\w 都是等價字符 ?等價于匹配長度{0,1} *等價于匹配長度{0,} +等價于匹配長度{1,} \d等價于[0-9] \w等價于[A-Za-z0-9]。常用運算符與表達式: ^ 開始 () 域段
正則難理解因為里面有一個等價的概念,這個概念大大增加了理解難度,讓很多初學者看起來會蒙,如果把等價都恢復成原始寫法,自己書寫正則就超級簡單了,就像說話一樣去寫你的正則了: 等價: ?,*,+,\d,\w 都是等價字符 ?等價于匹配長度{0,1} *等價于匹配長度{0,} +等價于匹配長度{1,} \d等價于[0-9] \w等價于[A-Za-z0-9]。常用運算符與表達式: ^ 開始 () 域段
快速排序算法快速排序是由東尼·霍爾所發展的一種排序算法。在平均狀況下,排序 n 個項目要Ο(n log n)次比較。在最壞狀況下則需要Ο(n2)次比較,但這種狀況并不常見。事實上,快速排序通常明顯比其他Ο(n log n) 算法更快,因為它的內部循環(inner loop)可以在大部分的架構上很有效率地被實現出來。快速排序使用分治法(Divide and conquer)策略來把一個串行(list)分為兩個子串行(sub-lists)。算法步驟從數列中挑出一個元素,稱為 “基準”(piv
在.net的世界里,程序員只負責使用new創建對象,而對象的銷毀則完全交給垃圾回收器負責,只有當發生垃圾回收的時候,.net中的類型才會被銷毀。這通常不會引起什么不妥。但是,當使用了非托管的com對象的時候,則會帶來特別的問題。com使用引用計數來確定對象的生存期,com客戶每次引用對象的時候,就調用IUnKnown->AddRef(),而每次釋放對象的時候,就調用IUnKnown->Release(),一旦引用計數達到零,就釋放實例。問題就這樣產生了,讓我們看下面的代碼:
BHO(Browser Helper Object,瀏覽器輔助對象,簡稱BHO)。BHO是微軟推出的作為瀏覽器對第三方程序員開放交互接口的業界標準,通過簡單的代碼就可以進入瀏覽器領域的“交互接口”(INTERACTIVED Interface)。通過這個接口,程序員可以編寫代碼獲取瀏覽器的行為,比如“后退”、“前進”、“當前頁面”等,利用BHO的交互特性,程序員還可以用代碼控制瀏覽器行為,比如修改替換瀏覽器工具欄,添加自己的程序按鈕等。這些在系統看來都是沒有問題的。BHO原來的目的是
封裝就是將屬性私有化,提供公有的方法訪問私有屬性。做法就是:修改屬性的可見性來限制對屬性的訪問,并為每個屬性創建一對取值(getter)方法和賦值(setter)方法,用于對這些屬性的訪問。如:private String name;public String getName(){  
經典算法之Kruskal算法一:思想 若存在M={0,1,2,3,4,5}這樣6個節點,我們知道Prim算法構建生成樹是從”頂點”這個角度來思考的,然后采用“貪心思想”來一步步擴大化,最后形成整體最優解,而Kruskal算法有點意思,它是站在”邊“這個角度在思考的,首先我有兩個集合。1. 頂點集合(vertexs): 比如M集合中的每個元素都可以認為是一個獨根樹(是不是想到了并查集?)。2.邊集合(edges):&nbs