Time of Update: 2018-08-20
1.問題描述:將兩個排序鏈表合并為一個新的排序鏈表 2.解題思路:遍曆兩個鏈表的公用長度,根據節點值得大小來改變每次節點的串連,然後判斷那條鏈表還有剩餘,最後將較長鏈表的剩餘部分追加到節點的後面 3.通過的代碼: /** * Definition of ListNode * class ListNode { * public: * int val; * &
Time of Update: 2018-08-20
連結 LeetCode題目:https://leetcode.com/problems/merge-two-sorted-lists GitHub代碼:https://github.com/gatieme/LeetCode/tree/master/021-MergeTwoSortedLists CSDN題解:http://blog.csdn.net/gatieme/article/details/51094742 題意 Merge
Time of Update: 2018-08-20
資料結構 隊列 集合 鏈表、數組 字典、關聯陣列 棧 樹 二叉樹 完全二叉樹 平衡二叉樹 二叉尋找樹(BST) 紅/黑樹狀結構 B-,B+,B*樹 LSM 樹 BitSet 常用演算法 排序、尋找演算法 選擇排序
Time of Update: 2018-08-20
假如有幾個數字int score[] = {67, 69, 75, 88}; 按照從大到小排序。 有2種思路,第一種,score[j] 和 score[j+1] 比較 如果 前者比後者小,把前者和後者調換順序,兩兩調換後一輪下來 最小的會被排到最後去。每一輪j都從0開始,當i輪排序,就有最後面的i個數字因為他是最小的,所以後面的每輪都不用理他了,也就是 score.length-1-i 往後的數不用管了,如上,第一輪有4個數字 i為0
Time of Update: 2018-08-20
轉載請註明出處: http://blog.csdn.net/gane_cheng/article/details/52652705 http://www.ganecheng.tech/blog/52652705.html (瀏覽效果更好) 排序演算法經過了很長時間的演變,產生了很多種不同的方法。對於初學者來說,對它們進行整理便於理解記憶顯得很重要。每種演算法都有它特定的使用場合,很難通用。因此,我們很有必要對所有常見的排序演算法進行歸納。
Time of Update: 2018-08-20
前言: 最近被網路爬蟲中的去重策略所困擾。使用一些其他的“理想”的去重策略,不過在運行過程中總是會不太聽話。不過當我發現了BloomFilter這個東西的時候,的確,這裡是我目前找到的最靠譜的一種方法。 如果,你說URL去重嘛,有什麼難的。那麼你可以看完下面的一些問題再說這句話。 關於BloomFilter: Bloom filter 是由 Howard Bloom 在 1970
Time of Update: 2018-08-20
總述 1、求解思路:把問題分解為多個子問題,只要依次求出子問題的最優解,就能得到最終問題的最優解。即,只需要考慮局部最優,就能得到全域最優。 2、局限性:需要先確認一個問題具有上述特點,才能使用貪心演算法求解。 適用情境 1、單源最短路經問題 2、最小產生樹問題 3、可任意分割的背包問題。如果不可以任意分割,就需要用動態規劃求解。 4、某些情況下,即使貪心演算法不能得到整體最優解,其最終結果卻是最優解的很好近似。 5、活動安排
Time of Update: 2018-08-20
•一種基於剪枝( α-βcut-off)的深度優先搜尋(depth-first search)。 •將走棋方定為MAX方,因為它選擇著法時總是對其子節點的評估值取極大值,即選擇對自己最為有利的著法; •將應對方定為MIN方,因為它走棋時需要對其子節點的評估值取極小值,即選擇對走棋方最為不利的、最有鉗製作用的著法。 •在對博弈樹採取深度優先的搜尋策略時,從左路分枝的分葉節點反向推算得到某一層MAX節點的值,可表示到此為止得以“落實”的著法最佳值,記為α。
Time of Update: 2018-08-20
轉載請註明出處:勿在浮沙築高台http://blog.csdn.net/luoshixian099/article/details/51908175 關於圖的幾個概念定義: 連通圖:在無向圖中,若任意兩個頂點 vi v_i與 vj v_j都有路徑相通,則稱該無向圖為連通圖。 強連通圖:在有向圖中,若任意兩個頂點 vi v_i與 vj
Time of Update: 2018-08-20
前言 Nobody can go back and start a new beginning,but anyone can start today and make a new ending. Name:Willam Time:2017/3/8 1、最短路徑問題介紹 問題解釋: 從圖中的某個頂點出發到達另外一個頂點的所經過的邊的權重和最小的一條路徑,稱為最短路徑 解決問題的演算法: 迪傑斯特拉演算法(Dijkstra演算法)
Time of Update: 2018-08-20
ACID特性 資料庫管理系統中事務(transaction)的四個特性(分析時根據首字母縮寫依次解釋):原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability) 所謂事務,它是一個操作序列,這些操作要麼都執行,要麼都不執行,它是一個不可分割的工作單位。(執行單個邏輯功能的一組指令或操作稱為事務) 詳解 1. 原子性
Time of Update: 2018-08-20
在ReentrantLock中很明顯可以看到其中同步包括兩種,分別是公平的FairSync和非公平的NonfairSync。公平鎖的作用就是嚴格按照線程啟動的順序來執行的,不允許其他線程插隊執行的;而非公平鎖是允許插隊的。
Time of Update: 2018-08-20
在《Java並發實戰》一書的第15章中有一個用原子變數實現的並發棧,代碼如下: public class Node {public final String item;public Node next;public Node(String item){this.item = item;}} public class ConcurrentStack {AtomicReference<Node> top = new
Time of Update: 2018-08-20
一、裝飾模式 最明顯的就是cache包下面的實現 Cahe、LoggingCache、LruCache、TransactionalCahe...等 以LoggingCache為例,UML圖 Cache cache = new
Time of Update: 2018-08-20
單例模式:單例模式的意思就是只有一個執行個體。單例模式確保某一個類只有一個執行個體,而且自行執行個體化並向整個系統提供這個執行個體。這個類稱為單例類。 單例模式有三種:懶漢式單例,餓漢式單例,登記式單例。 1.懶漢式單例 優點:第一次調用才初始化,避免記憶體浪費。 缺點:必須加鎖synchronized 才能保證單例,(如果兩個線程同時調用getInstance方法,會chuxia)但加鎖會影響效率。 2.餓漢式單例
Time of Update: 2018-08-20
http://fuxueliang.com/java/2013/06/26/junit-4-vs-testng--comparison/ 這兩天在看一本書《Java測試新技術TestNG和進階概念》,作者是 TestNG 的創始人,瞭解了不少關於 TestNG
Time of Update: 2018-08-20
當緩衝需要被清理時(比如空間佔用已經接近臨界值了),需要使用某種淘汰演算法來決定清理掉哪些資料。常用的淘汰演算法有下面幾種: FIFO:First In First Out,先進先出。判斷被儲存的時間,離目前最遠的資料優先被淘汰。 LRU:Least Recently Used,最近最少使用。判斷最近被使用的時間,目前最遠的資料優先被淘汰。 LFU:Least Frequently
Time of Update: 2018-08-20
俗話說,站在巨人的肩膀上看世界,一般學習的時候也是先總覽一下整體,然後逐個部分個個擊破,最後形成思路,瞭解具體細節,Tomcat的結構很複雜,但是 Tomcat 非常的模組化,找到了 Tomcat最核心的模組,問題才可以遊刃而解,瞭解了Tomcat的整體架構對以後深入瞭解Tomcat來說至關重要。 一、Tomcat頂層架構 先上一張Tomcat的頂層結構圖(圖A),如下:
Time of Update: 2018-08-20
1.為什麼要使用memcache 由於網站的高並發讀寫需求,傳統的關係型資料庫開始出現瓶頸,例如: 1)對資料庫的高並發讀寫: 關係型資料庫本身就是個龐然大物,處理過程非常耗時(如解析SQL語句,交易處理等)。如果對關係型資料庫進行高並發讀寫(每秒上萬次的訪問),那麼它是無法承受的。 2)對海量資料的處理: 對於大型的SNS網站,每天有上千萬次的資料產生(如twitter, 新浪微博)。對於關係型資料庫,如果在一個有上億條資料的資料表種尋找某條記錄,效率將非常低。
Time of Update: 2018-08-20
用過memcache的人都有一個疑惑,那就是memcache中為什麼會有一個add方法、一個set方法、一個replace呢,這幾個方法又有著什麼樣的區別呢,下邊我們來分析下這幾個方法的不同之處: memcache::add 方法:add方法用於向memcache伺服器添加一個要緩衝的資料。 memcache::set 方法:set方法用於設定一個指定key的緩衝內容,set方法是add方法和replace方法的集合體 mmecache::replace方法: