原创 劍指Offer——(43)左旋轉字符串

題目描述: 彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對於一個給定的字符序列S,請你把其循環左移K位後的序列輸出。例如,字符序列S=”abcXYZdef”,要求輸出循

原创 劍指Offer——(41)和爲S的兩個數字

題目描述: 輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,使得它們的和正好是S。如果有多對數字的和等於S,輸出任意一對即可 實現如下: //使用兩個指針,分別指向排序數組的第一個元素和最後一個元素,它們是最小值和最大

原创 Nginx中的驚羣現象解決方法

*什麼是驚羣現象?Nginx中用了什麼方法來避免這種問題的發生?本篇就解決這兩個問題。。。→_→* 驚羣現象的定義與危害 在Nginx中,每一個worker進程都是由master進程fork出來的。master進程創建socke

原创 我爲什麼要搬離CSDN Blog?

終於要搬家啦 傳送門:https://kongkongk.github.io/ What 從大學開始,逐漸深入接觸計算機相關知識,當時也有產出一些總結(無論是紙質化或本地markdown),俗稱個人筆記。後來接觸到 CSDN,纔有

原创 劍指Offer——(35)數組中的逆序對

題目描述: 在數組中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。並將P對1000000007取模的結果輸出。即輸出P%1000000007 輸入描述:

原创 Linux內核中的互斥操作(2)——自旋鎖

*本篇來看看多次在內核中出現的spin_lock——自旋鎖,到底是個什麼東西。。。→_→* 內核中的spin_lock() spin_lock()源代碼 static inline void spin_lock(spinloc

原创 Linux內核中的互斥操作(3)——讀寫鎖

*對內核中的信號量和自旋鎖經過源碼剖析後,再來看最後一個內核中的互斥操作——讀寫鎖。。。→_→* 初始化讀寫鎖 讀寫鎖的類型定義 typedef struct { //不調試時,讀寫鎖實際上就是一個無符號整形。通過下面的

原创 設計模式——工廠模式

*除了單例模式和觀察者監聽者模式,本篇再介紹一下工廠模式。。。→_→* 面向對象編程中出現的問題 在面向對象編程中,可能會會由一種父類派生出許許多多的子類。而當我們在使用new實例化一個子類對象之前,也可能需要進行很多提前操作,

原创 設計模式——抽象工廠模式

*工廠模式解決了一部分問題,但還有一些缺點,所以這時抽象工廠模式應運而生。。。→_→* 在閱讀本文之前,需要了解一些知識點。。。請戳傳送門——工廠模式 工廠模式與抽象工廠模式的區別 工廠模式中,在工廠子類中無論多麼辛苦的製造產品

原创 劍指Offer——(39)平衡二叉樹

題目描述: 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 實現如下: //如果二叉樹中的任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹 //利用對二叉樹的後序遍歷,自底向上的判斷是否爲平衡二叉樹 //若某一結

原创 第一次技術面試

*一上來沒有自我介紹。。直接就開始了。。套路不對啊。。→_→* 問會哪些語言,JAVA、python、腳本語言會不會?(尷尬。。都只是瞭解) 說一下TCP的三次握手和四次揮手?(就開始說每一步的流程和狀態變化,順便再說幾句三次握

原创 劍指Offer——(44)翻轉單詞順序列

題目描述: 牛客最近來了一個新員工Fish,每天早晨總是會拿着一本英文雜誌,寫些句子在本子上。同事Cat對Fish寫的內容頗感興趣,有一天他向Fish借來翻看,但卻讀不懂它的意思。例如,“student. a am I”。後來才意

原创 劍指Offer——(34)第一個只出現一次的字符位置

題目描述: 在一個字符串(1<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置 實現如下: //在線測試用例非常的坑。。。→_→ //1.需要返回的是下標 //2.測試用例中區分大小寫

原创 劍指Offer——(37)數字在排序數組中出現的次數

題目描述: 統計一個數字在排序數組中出現的次數。 實現如下: 方法一 //利用count計數,時間複雜度O(n) class Solution { public: int GetNumberOfK(vector<in

原创 劍指Offer——(36)兩個鏈表的第一個公共結點

題目描述: 輸入兩個鏈表,找出它們的第一個公共結點。 實現如下: //節點結構體定義 struct ListNode { int val; struct ListNode *next; ListNod