原创 二分查找及變體

       二分查找,如何用最勝內存的方式實現快速查找         針對有序數據集合的查找算法,二分查找。        問題:假設我們有1000萬個整數數據,每個數據佔8個字節,如何設計數據結構和算法快速判斷某個整數是否

原创 字符串模式匹配:BF算法和RK算法

BF算法(暴力匹配算法,也叫樸素匹配算法).性能不是很高。        我們在主串中,檢查起始位置分別是0.1.2…n-m且長度爲n-m+1個子串,看有沒有跟模式串匹配的。(在A中查找B,A就是主串,B就是模式串,且A>B

原创 停不下來使用的散列表

散列表(hash table)        散列思想:散列表用的是數組支持按照下標隨機訪問數據的特性,所以散列表其實就是數組的一種擴展,由數組演化而來,如果沒有數組,就沒有散列表。        散列表用的就是數組支持按照下標

原创 記隨筆

DELETE a.* FROM EST_BIND_HOUSE_EQUALLY a LEFT JOIN EST_BIND_HOUSE_COST b ON a.house_id = b.house_id AND a.cost_valu

原创 哈希算法應用場景

哈希算法        將任意長度的二進制值串映射爲固定長度的二進制值串,這個映射的規則就是哈希算法,而通過原始數據映射之後得到的二進制值串就是哈希值。        優秀哈希算法需要具備的        1.從哈希值不能方向推

原创 MySQL防止重複插入相同記錄 insert if not exists

轉載地址:https://blog.csdn.net/u012400305/article/details/80857804 實測有效

原创 JAVA的網絡

關於JAVA的網絡,之前有個比喻形式的總結,分享給大家: 例子:有一個養雞的農場,裏面養着來自各個農戶(Thread)的雞(Socket),每家農戶都在農場中建立了自己的雞舍(SocketChannel) 1、BIO:Block

原创 BM算法

BM(Boyer-Moore)算法,非常高效的字符串匹配算法。        BM算法的核心思想        我們把模式串和主串的匹配過程,看作模式串在主串中不停地往後滑動。當遇到不匹配的字符時,BF 算法和 RK 算法的做法

原创 面試時的經典排序總結

排序        實際開發中,爲什麼我們更傾向於使用插入排序而不是冒泡排序?        答:從代碼實現上來看,冒泡排序的數據交換要比插入排序的數據移動要複雜,冒泡排序需要3個賦值操作,而插入排序只需要1個,所以在對相同數

原创 鏈表建議

       鏈表的經典應用場景:LRU緩存淘汰算法        常見的策略有:先進先出策略FIFO(First in,First out),最少使用策略LFU(Least Frequantly Used),最近最少使用策略LR

原创 java核心技術卷 -- 網絡編程

1.4因特網地址        是用一串數字表示的主機地址,一個因特網地址是由4個字節組成,如果需要在主機名和因特網地址之間進行轉換,就需要使用InetAddress類        只要主機操作系統支持IPV6格式的因特網地址

原创 數組基本概念

       線性表:線性表就是數據排成像一條線一樣的結構,每個線性表上的數據最多隻有前和後兩個方向,有數組,鏈表,隊列,棧等都是線性表結構        非線性表:比如二叉樹,堆,圖等,非線性表中,數據之間並不是簡單的前後關係

原创 如何求出最大公約數

       題目:        寫一段代碼,求出兩個數的最大公約數,要儘量優化算法的性能。        1.暴力枚舉        2.輾轉相除法        兩個正整數a和b(a>b),他們的最大公約數等於a除以b的餘數

原创 判斷鏈表有環

       題目:        有一個單向鏈表,表中可能出現環,怎麼判斷是否有環。        思路:                       首先創建兩個指針p1和p2,讓他們同時指向這個鏈表的頭結點,然後開始一個大的

原创 最小棧的實現

       題目:        實現一個棧,該棧帶有出棧,入棧,取最小元素3個方法,要保證3個方法的時間複雜度都是O(1);        解題思路:        1.設原有的棧叫做棧A,此時額外創建一個棧B,用於輔助棧A