原创 聊聊 Go 邊界檢查消除

前言 在這篇文章中碰巧看到了Go邊界檢查消除相關的討論. 我也藉此簡單聊聊. 有這樣一段代碼, 非常簡單, 就是一段求向量點積的程序: func sum(a, b []int) int { if len(a) != len(b) {

原创 Go打包附件內容到執行文件

前言 如果我們的應用在啓動的時候需要對數據庫進行初始化(比如建表等), 可以通過讀取.sql文件內容直接執行. 但是, 這樣會帶出一個問題: 在發送可執行文件的時候, 需要連帶着附件文件, 並且相對路徑還不能出錯. 這樣太麻煩了 有時我們

原创 PHP獲取Opcode及C源碼

是什麼 在開始之前, 必須要先介紹一下Opcode是什麼. 衆所周知, Java在執行的時候, 會將.java後綴的文件預先編譯爲.class字節碼文件, JVM加載字節碼文件進行解釋執行. 而字節碼文件存在的意義, 就是爲了加速執行. 那

原创 進程切換時是如何保存上下文的

前言 當前操作系統大部分採用分時的進程調度, 既每個進程運行一小段時間, 然後切換到下一個進程運行, 依次往復. 當進程運行的時候是獨佔CPU的, 此時操作系統是無法強行介入的, 爲了將執行權讓出來, 就需要硬件的配合了. 硬件每個一個時鐘

原创 hbase/thrift/go連接失敗

問題 在通過Go連接hbase的過程中, 發現 get操作可以查到數據, 但是scanner命令訪問數據失敗, 也沒有報錯, 就是單純的查不到數據. 而且Python PHP都一切正常. 這裏簡單複述一下我出現問題的情況, 安裝過程和網上大

原创 《論可計算數及其在判定上的應用》簡單理解

剛剛拜讀了一本書, 《圖靈的祕密》. 該書介紹了圖靈的論文《論可計算數及其在判定上的應用》, 其指出: 一個擁有鉛筆, 紙和一串明確指令的人類計算者, 可以被看做是一種圖靈機. 那麼圖靈機是什麼呢? 是圖靈爲了描述可計算數而引出的一個虛構的

原创 HBase 命令行

目錄讀取數據單條數據查詢全表掃描數據過濾屬性字段過濾數量限制row key 過濾排序其他條件過濾對FILTER進行額外的補充介紹row key 過濾列名過濾列值過濾數量過濾腳本查詢其他命令 hbase是一款分佈式數據庫. 其對數據的索引只通

原创 GO 內存對齊

前言 之前遇到過這樣一個情況(發現問題的結構體並不長這樣, 不過爲了引出問題, 改了一下): type Test struct { b bool i3 int32 i8 int8 i64 int64 by byte } func

原创 Hello IPv6

前言 IPv4 大家都不陌生, 就是我們平常使用的32位網絡地址. 但是, 因爲可能在其發展初期, 並沒有考慮的十分全面, 故而其存在一些缺陷: 32位二進制僅支持約43億個設備, 還不到全球的人口數量. (故而現在依賴於各種局域網轉換技

原创 git 子模塊在項目中的使用

在公司的項目中, 經常會遇到一些公共的內容, 多個項目中間通用的, 不可能每次都將整個代碼複製一遍, 遇到這種情況有很多不同的解決方案, 一般來說, 項目是通過 git 來管理的, 巧了, git 也同樣支持子模塊. 創建子模塊 git s

原创 IP 數據報首部分析

來來來, 爺們. 不是一直說紙上得來終覺淺麼. 今咱就抓個數據報具體看一看真實網絡中的 IP 報首部. 操作方法很簡單, 使用wireshark進行抓包. 抓包後隨便找個包看一下就行, 畢竟所有通信的包都需要經過網絡層.(同時, wires

原创 計算機網絡-信道複用技術

還記得計算機網絡中的信道複用技術麼? 來來來, 一起復習一下. why 問: 什麼是信道複用. 在回答這個問題之前先看這樣一個場景: 其中u1 u2是兩個用戶, 如果這兩個用戶之間連通的信道在他們使用過程中, 被他們完全佔用了, 其他人就

原创 golang chan 探究

前言 之前在看golang多線程通信的時候, 看到了go 的管道. 當時就覺得這玩意很神奇, 因爲之前接觸過的不管是php, java, Python, js, c等等, 都沒有這玩意, 第一次見面, 難免勾起我的好奇心. 所以就想着看一看

原创 golang 多協程的同步方法總結

之前用 go 寫一個小工具的時候, 用到了多個協程之間的通信, 當時隨手查了查, 結果查出來一大坨, 簡單記錄一下. golang中多個協程之間是如何進行通信及數據同步的嘞. 共享變量 一個最簡單, 最容易想到的, 就是通過全局變量的方式,

原创 crontab 指令筆記

前言 之前有個定時任務, 需要每天的9點和21點定時跑. 當時我是這麼寫的: 0 9 * * * XXX 0 21 * * * XXX 當時經過高人指點, 發現這兩條命令可以寫成一條: 0 9,21 * * * XXX 好羞恥... 於