原创 Go語言 ReadLine()異常、緩衝區問題

這裏寫目錄標題一、前言二、正文:直接上測試程序代碼:test.txt文件內容:程序輸出:分析:三、源碼分析:解決方法 一、前言 近期項目用到了Go語言中的Readline去文件中逐行讀取記錄,但是有一些異常行信息的長度特別大(超過

原创 數據結構與算法 ——括號匹配

括號匹配 一、概念 基礎概念:通過棧,實現括號的匹配判斷。 二、代碼及過程 /** * *括號匹配 * **/ #include <stdio.h> #include <stdlib.h> typedef struct Lis

原创 ThinkPHP5 源碼剖析(批量getShell原理)

前言: === 廢話!!可跳過 === 近日,導師給了個不大不小的任務 導師之前面試我的時候,看我的簡歷上(chui)寫(niu)着(pi)閱讀過TP3源碼並自己根據思想寫了個PHP框架。 剛好公司有個之前外包出去的項目是用的TP

原创 PHPStorm + Xdebug無法單步調試

前言: 好早之前,弄過一次Xdebug。 那個時候用的是sublime配合的xdebug。 結果各種踩坑,不兼容。畢竟xdebug對sublime的支持本來就不友好。 最近在追TP5的源碼,var_dump、print_r用起來顯

原创 深入理解ob_flush和flush的區別

之前在寫爬蟲的時候就被這兩個刷新緩衝區的函數給迷惑了好久。後來查找了很多資料弄懂之後,現在在公司做項目的時候又遇到這兩個刷新函數。 不過之前在爬蟲那篇博客僅僅簡單提了幾句,有一些細節的地方都忘得差不多了,這次重新用到就記錄下了。

原创 MQ消息中間件比較

MQ特點 1、先進先出 不能先進先出,都不能說是隊列了。消息隊列的順序在入隊的時候就基本已經確定了,一般是不需人工干預的。而且,最重要的是,數據是隻有一條數據在使用中。 這也是MQ在諸多場景被使用的原因。 2、發佈訂閱 發佈訂閱是

原创 工作中隨手小筆記~

函數與類的區別: 類是有狀態的,而函數無狀態的,所以函數與類之間最大的區別在於是否有狀態,落到更實際的點就是方法與方法之間是否需要共享數據,如果需要共享數據,則可以寫成類的方法,如果不需要共享數據,那就可以用寫成函數。 很多時候我

原创 MYSQL優化彙總

一、表結構設計優化 a、字段選取 varchar 是可變長字符串,不預先分配存儲空間,長度不要超過 5000,如果存儲長度大於此值,定義字段類型爲 TEXT,獨立出來一張表,用主鍵來對應,避免影響其它字段索引效率。 說明:v

原创 數據結構與算法 ——二叉排序樹

二叉排序樹 一、概念 基礎概念:二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹: 若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若右子樹不空,則右子樹上所有結點的值均大於或等於它的根結點的值; 左、右子樹也分別爲

原创 數據結構與算法 ——堆排序

堆排序 一、概念 基礎概念:堆排序是利用堆這種數據結構而設計的一種排序算法,堆排序是一種選擇排序,它的最壞,最好,平均時間複雜度均爲O(nlogn),它也是不穩定排序。 通俗理解: 將待排序序列構造成一個大頂堆,此時,整個序列的最大值

原创 數據結構與算法 —— 計數排序

計數排序 一、概念 基礎概念:計數排序是一個非基於比較的排序算法,該算法於1954年由 Harold H. Seward 提出。它的優勢在於在對一定範圍內的整數排序時,它的複雜度爲Ο(n+k)(其中k是整數的範圍),快於任何比較排序算

原创 數據結構與算法 ——希爾排序

希爾排序 一、概念 基礎概念:希爾排序(shell sort)這個排序方法又稱爲縮小增量排序,是1959年D·L·Shell提出來的。該方法的基本思想是:設待排序元素序列有n個元素,首先取一個整數increment(小於n)作爲間隔將

原创 用戶喜好_字節跳動2018校招後端方向(第二批)

題目: 爲了不斷優化推薦效果,今日頭條每天要存儲和處理海量數據。假設有這樣一種場景:我們對用戶按照它們的註冊時間先後來標號,對於一類文章,每個用戶都有不同的喜好值,我們會想知道某一段時間內註冊的用戶(標號相連的一批用戶)中,有多少用

原创 數據結構與算法 ——二分查找

二分查找 一、概念 基礎概念:二分查找又稱折半查找,它是一種效率較高的查找方法。 二分查找要求:線性表是有序表,即表中結點按關鍵字有序,並且要用數組作爲表的存儲結構。不妨設有序表是遞增有序的。 通俗理解:每次首先找到數組的中間位置(m

原创 數據結構與算法 ——二叉樹的非遞歸遍歷

二叉樹的非遞歸遍歷 一、概念 基礎概念:二叉樹的非遞歸遍歷是通過棧來實現的,通過使用棧保存節點信息,實現非遞歸的遍歷二叉樹。 二、代碼及過程 /** * *二叉樹非遞歸實現 * ***/ #define maxSize 100 #d