原创 單鏈表操作

這篇文章的目的只是爲了自己複習單鏈表而寫,裏面的代碼沒有經過實際測試。只是好讓自己保持思路。 刪除鏈表節點/* 單鏈表刪除節點 */ Node *del(Node *head, int num) { Node *p1, *p2; p

原创 只遍歷一次單鏈表找出中間節點的算法

要求:只遍歷一次單鏈表找出中間節點的算法 思路:設立兩個指針,比如p0和p1, p0=p1=head。p0每次移動兩個位置,p1每次移動一個位置,即p0=p0->next->next, p1=p1->next。當p0到達最後一個結點時,p

原创 Java字符編碼—Unicode與UTF-8的區別

Unicode字符集 Unicode,是計算機科學領域裏的一項業界標準。爲每種語言中的每個字符設定了統一併且唯一的整數值,把這個數值稱爲碼點(Code Point)。 但是它並不規定計算機如何存儲和傳輸這個數值(以多少個字節存儲,

原创 Tinyhttpd源碼解析

簡介 Tinyhttpd是一輕量級的web服務器,它由美國學生J. David Blackstone於1999年在學習網絡課程時編寫。源碼不到500行,非常適合學習Web編程和Linux/Unix編程接口。 其源碼見Tinyhttpd 分

原创 Java併發執行任務的幾種方式

背景 在編寫業務代碼時經常遇到併發執行多個任務的需求,因爲串行執行太慢,會影響業務代碼性能。特別對於直接面向普通用戶的業務來說用戶體驗至關重要,保證用戶體驗重要的一點是要“快”。業務代碼中經常需要調用其它業務接口或者同時從多個數據源取數據

原创 行編輯器

題目 你知道行編輯器嗎?不知道也沒關係,現在我會告訴你: 1.如果你收到一個’#’,那麼你應該刪掉一個你已經收到的字符,不包括’#’; 2.如果你收到一個’@’,那麼你應該把你收到的一整行都刪掉。 (‘#’和‘@’都爲不可見字符。)

原创 JAVA類加載器原理

ClassLoader用於在運行時加載class文件。可以從文件系統、網絡及其他源加載 Java有三個默認的ClassLoader,分別是:Bootstrap、Extension、System or Application類加載器。每一種

原创 硬幣組合問題

題目 假設我們有8種不同面值的硬幣{1,2,5,10,20,50,100,200},用這些硬幣組合夠成一個給定的數值n。例如n=200,那麼一種可能的組合方式爲 200 = 3 * 1 + 1*2 + 1*5 + 2*20 + 1 * 5

原创 nginx自定義字符串

ngx_str_t是nginx自定義的字符串格式,其定義在ngx_string.h中,如下: typedef struct { size_t len; //字符串長度,不含'\0' u_char *dat

原创 最長連續子數組和爲0

題目 找出最長的連續子數組,其和爲0。 分析 窮舉法:兩次掃描數組把所有的和爲0的子數組長度均找出,然後再選擇最大的。時間複雜O(n2) 。 改進:給定一個數組如,1, 2, 3, 4, -1, -2, -4, -3, 1, 1,1,1,

原创 最長迴文串

題目 迴文串是指給定一個字符串,字符串的第一個字符等於最後一個字符,第n個字符等於倒數第n個字符,比如”a”, “aa”, “aba”, “abba”都是迴文串。現在給定一個字符串,返回其中最長的迴文子串,如果有多個一樣長的子字符串,則返

原创 【轉】Google如何管理20億行代碼

《Wired》今天一篇文章談到Google的代碼量已達到20億行,並簡單介紹了Google是如何管理這些代碼的。 這20億行代碼,涉及搜索、Gmail、文檔、地圖、YouTube、Google+等絕大多數Google提供的服務,存儲在“一

原创 猴子分桃子問題

題目 題目:海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子憑據分爲五份,多了一個,這隻猴子把多的一個扔入海中,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五隻猴子

原创 計數排序

原理 通過統計各個元素出現次數,以決定元素的位置。 應用場景 適合元素值不大,且重複較多的情況。計數排序的精髓在於通過統計次數進行排序,相比於比較排序算法,性能更佳。當適用場景有限,比如對公司員工按年齡排序等。 性能 時間複雜度僅O(n)

原创 elasticsearch節點角色

在生產環境下,如果不修改elasticsearch節點的角色信息,在高數據量,高併發的場景下集羣容易出現腦裂等問題。 默認情況下,elasticsearch集羣中每個節點都有成爲主節點的資格,也都存儲數據,即雙重角色。 由兩個屬性控制: