原创 結構體內存佈局`alignof`

首先看看下面這個程序輸出 #include <stdio.h> #include <stdint.h> #include <stdalign.h> typedef uint32_t MYSIZE; struct Node {

原创 golang http 請求

1. 使用默認http.Client{} 使用標準庫的http.Post方法。 postData = ` { "name": "jian", "age":20 }` resp, err := http.Post("url

原创 模擬任務流程編排(nodejs)

實現一個TaskMan,當: TaskMan('john') /** output: hi, I am john */ TaskMan('john').doSomething('go to work') /** output: hi,

原创 Processes, threads and goroutines

Processes進程 起初,計算機在批處理模式下一個一個地執行任務。後來在上世紀60年代開發了多任務分時操作系統,在70年代 被廣泛用於網絡服務器、ftp、telnet、以及後來地httpd上,httpd使用fork子進程的方式來處理每

原创 程序的編譯與執行過程

本文以C程序爲例。 構建C程序需要4個步驟,分別使用4個工具完成: preprocessor, compiler, assembler, and linker.四步完成後生成一個可執行文件。 第一步,預處理. 這一步處理 頭文件、條

原创 mysql事務模型

說起事務,得先說說mysql ACID。 ACID 是 atomicity, consistency, isolation, and durability 的英文首字母縮寫,即原子性、一致性、隔離性和持久性。一個數據庫系統需要這四點,m

原创 數據庫的存儲和讀取

reference: https://www.reddit.com/r/Database/comments/27u6dy/how_do_you_build_a_database/ 大多數數據庫使用C編寫,使用B-tree數據結構存儲數

原创 mysql主從同步錯誤恢復

1 確認錯誤 在mysql從庫上執行: show slave status \G; 輸出從庫同步過程中遇到的錯誤sql語句。 2 關閉從庫,跳過錯誤 stop slave; 然後執行: SET GLOBAL SQL_SLAVE_SKIP_

原创 linux臨時端口(port)以及最大值

在一個Linux上跑一個服務,需要指定一個監聽端口(系統調用listen),當client請求服務時,系統爲該請求建立 tcp連接,該連接的port值是一個隨機數字。該數字的取值範圍配置在 /proc/sys/net/ipv4/ip_l

原创 mysql 數據庫磁盤佔用量統計

查看某個表的磁盤佔用量 select (data_length+index_length)/1024/1024 M from information_schema.tables where table_s

原创 pt-online-schema-change 存在 trigger的表無法改動 hack

pt-online-schema-change,一個用來修改線上數據庫表的工具,可以在不影響業務(鎖表)的情況下,修改數據表。 不過表裏有索引,那麼pt-online-schema-change會報錯: The table ‘your

原创 一行bash命令http server

while true; do { echo -e ‘HTTP/1.1 200 OK\r\n’; echo hello world; } | nc -l 8080; done 功能稍微健全一點的可以參考這裏https://github.

原创 macos修復hostname被篡改爲bogon

帶着mac去了外地,打開terminal準備連接公司的開發機。這時發現terminal上顯示的hostname被篡改爲bogon。 bogon是誰,難道有人動了我的電腦,回想一下沒有啊。難道有吊炸天的hacker黑了我的電腦然後改了一下

原创 AB測試與結果繪圖

最近在排查問題過程中,使用ab工具對一個線上系統做了一個簡單壓測。ab工具是Apache 出的一個http壓測工具,具體使用可以參考網上很多教程,簡單的使用如下: ab -n 1000 -c 10 www.baidu.com/ 輸出:

原创 LRU緩存算法

注:本文使用golang語言表述。 LRU(least recently used)是一個緩存剔除策略算法,在緩存容量不足的時候,將最不常用的一個或多個緩存相剔除,騰出空間以便後續緩存使用。 實現一個LRU cache LRU cac