原创 認識分佈式系統etcd

一 etcd的作用      etcd是一個高可用的鍵值存儲系統,主要用於共享配置和服務發現。etcd是由CoreOS開發並維護的,靈感來自於 ZooKeeper 和 Doozer,它使用Go語言編寫,並通過Raft一致性算法處理日誌複製

原创 重載new和delete來檢測內存泄漏導致placement new操作符不能使用解決辦法

爲了檢測內存泄露,重載new和delete來檢測內存泄漏結果導致placement new操作符不能使用。  void *operator new(size_t size, const char *file, unsigned int

原创 TiDB 優化方案和常見問題

一 關於tidb的排序      1. 按照字節序的順序掃描的效率是比較高的;      2. 連續的行大概率會存儲在同一臺機器的鄰近位置,每次批量的讀取和寫入的效率會高;      3. 索引是有序的(主鍵也是一種索引),一行的每一列的

原创 dynamic_cast揹着你偷偷做了什麼

 首先說到c++常用的四中轉換類型,我們都很清楚,分別是下面四中   1 const_cast  const_cast<目標類型>(標識符):目標類型只能是指針或者引用2 static_cast      類似C風格的強制轉換,進行無條件

原创 c++後臺開發知識點收藏

收藏一些後臺開發相關的知識點 1 linux系統   https://blog.csdn.net/ThinkWon/article/details/104588679 2 mysql數據庫 https://thinkwon.blog.cs

原创 用ECS架構完美實現幀同步

      很早之前寫過一篇關於網絡遊戲同步方案的文章:網絡遊戲網絡同步方案的選擇,裏面談到幀同步,這裏就談一下幀同步的一種實現方式吧,主要還是以收集資料爲主。       首先說一下幀同步最簡單的一種實現,很簡單就是服務器對客戶端上行的

原创 Longest Substring Without Repeating Characters

Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", t

原创 喚醒線程是否要持有鎖(Signal With Mutex Locked Or Not?)

    我們經常需要通過某種條件去喚醒和阻塞一個線程,我們喚醒線程時是否需要繼續持有鎖呢,換句話說我們是先釋放鎖再喚醒還是先喚醒再釋放鎖呢?      pthread_mutex_lock(&mutex); predicate=true

原创 記一個被自己忽略的知識點(指針本身的長度到底由什麼決定)

     通常我們計算指針的長度會用到sizeof(void*),我一直片面的任務指針的大小和int類型的大小是一樣的,但是在一次core dump崩潰調試的過程中看到一個指針的長度竟然是64位的就以爲指針是個野指針,但是最後發現問題不在

原创 基於skiplist實現高效的排行算法(redis zset)

  首先什麼是skiplist,在往下看之前先看一下下面幾篇文章吧   我之前寫的一篇關於skipList的文章     深入理解skiplist        瞭解skiplist後我們說道排行榜,排行榜實際上就是一種排序算法,常見的排

原创 MySQL InnoDB索引原理詳解

1 簡介               索引(Index)是幫助MySQL高效獲取數據的數據結構。我們知道,數據庫查詢是數據庫的最主要功能之一。但每種查找算法都只能應用於特定的數據結構之上,例如二分查找要求被檢索數據有序,而二叉樹查找只能應

原创 單線程讀單線程寫一個變量是否一定要加鎖

  單線程讀單線程寫一個變量是否需要加鎖,剛畢業的時候我會有這樣的想法:一個線程只讀並沒有改變變量的值並不會有兩個線程同時寫一個變量產生競態,所以不用加鎖,但是工作中長者給我指導都是多線程必須加鎖,所以我也沒有深究這個問題,從來沒有想過爲

原创 從零開始搭建tidb集羣

參考文章:TiDB-Ansible 部署方案     很早就想親手搭一下tidb集羣,昨天搞了一下午結果失敗了(因爲自己買的機器配置太低,還有自己配置環境的時候有些配置沒配好),今天把之前的機器刪掉又重新申請機器按照文檔把所有的步驟重新走

原创 關於智能指針的一個疑問

     c++中最大的問題就是內存管理問題也就是指針,當一個指針在程序中到處傳的時候,經常會出現多次銷燬,或者用到一個已經被釋放的指針(野指針),特別是在多線程中這種情況更加難以處理,根本不知道什麼時候會在哪個線程中被釋放,雖然c++1

原创 redis 的持久化機制

     之前去面試,問到redis的持久化問題,雖然知道一點但是有一些細節還不是很清楚 ,隨意這裏記錄下有關redis 的持久化的問題,redis跟memcached類似,都是內存數據庫,不過redis支持數據持久化,也就是說redis