原创 開啓數據庫中間件之路

一、業務背景 1、爲什麼需要中間件? 談起爲什麼需要數據庫中間件,我們首先談談一個典型的網站架構演進。系統架構隨着業務的變化演進,從而推動各種技術的發展,而數據庫中間件技術就是在架構演進中出現的。 (1)初始架構方案 初始架構如上圖所示

原创 數據庫中間件起源之一-我怎麼入坑了

1、談談自己爲什麼要寫這個? 我是2018年7月份畢業的,2018年4月份就進入公司實習,在實習過程中接觸java,接觸java中間件。從實習算起也是工作有兩年的時間了,兩年時間說長不長,說短也不短。後來隨着公司業務發展,我也轉向大數據開

原创 C++內部鏈接和外部鏈接

當一個實現文件(.cpp ...)編譯時,預處理器(CPP)首先遞歸的包含頭文件,形成一個保含有所有必要信息的單個源文件. 這個源文件稱爲 編譯單元. 內部連接 如果一個名稱對於它的編譯單元來說是局部的, 並且在連接的時候不可能與其

原创 鋸齒形字符串轉換問題

問題描述:給定一個字符串,以及鋸齒深度n,把該字符串轉換成鋸齒形的模式後按行輸出。 舉例如下: string str="0123456789";n=4; 鋸齒表述如下: 0         6 1     5  7 2  4     8

原创 數據庫分庫分表方案

數據庫的拆分方式有兩種:水平拆分和垂直拆分。水平拆分關注的單表數據量過大的問題,對於上千萬過億行數據的表來說,單表數據量過大,查詢和變更的成本會變大,同時單庫的吞吐量也會達到瓶頸,會同時對業務造成影響。水平拆分的目的就是爲了將單表拆分爲多

原创 ZooKeeper產生的背景

        在上一篇文章中提到,ZK是一個分佈式的、開源的、分佈式應用程序協調服務。這其中提到三個概念分佈式、開源和協調服務。開源很好理解,ZK代碼的源代碼你可以在網上找到,你也可以自己修改和發佈,這都是基於開源協議而來的。在全球最大

原创 ZooKeeper學習之它能幹什麼?

最近在學習ZooKeeper(以後都用ZK代稱),爲了驗證自己的學習,希望對ZK相關的知識進行整理,一方面檢驗學習成果,一方面進行筆記整理。         一般而言,我們學習一件東西的動機是這個東西對我們有用,不管是當前立即能帶來效用還

原创 求鏈表中倒數第K個節點

思路:     用兩個指針,第一個指針西安走k-1步,然後兩個指針再一起走。當第一個指針走到尾節點時,第二個指針指向的就是倒數第K個節點。 證明:     設節點個數爲m, 則第一個指針兩次分別走了k-1, n-k+1步;     第二個

原创 shell正則表達式

元字符及其在正則表達式上下文中的行爲:  \ 將下一個字符標記爲一個特殊字符、或一個原義字符、或一個後向引用、或一個八進制轉義符。      ^ 匹配輸入字符串的開始位置。如果設置了 RegExp 對象的Multiline 屬性,^ 也匹

原创 最長無重複字符子串問題

問題描述:給定一個字符串,返回該字符串中最大子串,該子串滿足連續,並且其中沒有重複字符。 leetcode c++代碼的一種解法如下: class Solution { public: int lengthOfLongestSub

原创 單鏈表的反轉算法

經典單鏈表反轉問題,不增加額外空間消耗,去對單鏈表進行翻轉,輸出逆序後的鏈表。 具體執行過程如下所示: 上圖顯示了單鏈表翻轉算法的步驟示意圖, 核心代碼如下: while head->next!=NULL head->next

原创 git從遠程庫獲得最先版本

使用git從遠程庫更新下載代碼到本地庫方法: 1. 查看遠程倉庫 $:git remote -v origin  https://github.com/qinchao0525/MiniFTP.git (fetch) origin  htt

原创 十大排序算法之歸併排序算法

歸併排序算法: /* 歸併排序,算法時間複雜度爲:O(nlogn), 穩定排序算法 Written by: Qinchao Time:2016/12/3 Language: C++ */ const int INFTY = 2147483

原创 十大經典排序算法之交換排序

交換排序算法: 一、冒泡法: /* 冒泡排序,算法時間複雜度爲:O(n^2),穩定的排序算法 Written by: Qinchao Time:2016/12/3 Language: C++ */ void bubblesort_6(ve

原创 C++空類默認產生的成員函數

class Empty { public: Empty(); // 缺省構造函數 Empty( const Empty& ); // 拷貝構造函數 ~Empty(); // 析構函數