原创 ONNX Runtime 源碼閱讀:模型推理過程概覽

簡介 ONNX Runtime是一個用於ONNX(Open Neural Network Exchange)模型推理的引擎。微軟聯合Facebook等在2017年搞了個深度學習以及機器學習模型的格式標準–ONNX,順路提供了一個專

原创 FlatBuffer內部解析原理簡介

簡介 Flatbuffer 是一個高效的跨平臺、支持多種語言序列化數據的庫。最初由谷歌爲遊戲開發而開發的,現在也用於多種對性能要求嚴苛的應用中。FlatBuffer有以下優點(直接翻譯官網文檔,詳細介紹看這裏): 可不需要解析、

原创 一文教你如何用Python讀取圖片GPS定位

起因 早上起來,看到有人問Python獲取一張JPG格式圖片拍攝的時候的GPS定位的代碼。GPS應該說是個敏感的信息,既然有人想讀取我們的信息,那麼我們至少應該直到我們的敏感信息被保存在了哪裏。 研究了一天,四處蒐集文檔,對着一張

原创 LLVM,一堆積木的故事

如果我說,C可以像Java一樣被虛擬機解釋執行,也可以對熱點代碼使用Just-In-Time(JIT)技術編譯,也可以實現“一次編譯,到處運行”,你信嗎? 少俠且慢動手,聽我解釋!無論是相對高級的語言,如Python、Java(這

原创 Ubuntu 登錄界面無限循環無法登陸解決方案

背景 復工第一天,再次登錄公司電腦的時候,Ubuntu每次驗證完密碼都會再次跳轉登錄界面,重啓電腦什麼的都不好使。 解決方案 Ubuntu UI界面進不去,只能先用TTY1進去,發現各項功能都還好使,因此懷疑就是Ubuntu的圖形

原创 U盤製作Ubuntu啓動盤後無法格式化解決辦法

起因 在Ubuntu14.04中使用Startup Disk Creator將一個32G 的U盤製作成了一個Ubuntu16.04的安裝盤,之後發現該U盤可用空間只剩下幾M可用,在Windows下格式化也只會得到幾M空間。在Ubu

原创 Composition, Aggregation and Association

平常不管是寫代碼或者是讀代碼,爲了清晰的表示類與類之間的關係,我們需要畫UML圖。而想要清晰明瞭的表達類之間的關係,首先要直到它們之間都存在一些什麼關係。 簡單的說,類與類之間通常有以下這幾種關係: 繼承(Inheritance

原创 冰山之下:使用new申請內存的背後

起因 客戶在使用動態鏈接庫的過程中發生異常,種種原因導致目前無法獲取到該庫的源碼,客戶方面也沒有給出足夠的信息,包括交叉編譯工具鏈、系統配置等。由於是生產庫,輸出信息也少的可憐,但是不管怎麼樣還是要恰飯的,要恰飯就要解決問題,也就

原创 內存對齊是什麼?爲什麼要對齊?怎麼對齊?

看C++源碼遇到一個比較陌生的語法:__attribute__((aligned)),例如int x __attribute__ ((aligned (16))) = 0;,秉持着不懂就要問的態度,諮詢了下搜索引擎。發現__att

原创 ONNX Runtime 源碼閱讀:引擎運行過程總覽

推薦閱讀 ONNX Runtime 源碼閱讀:模型推理過程概覽 ONNX Runtime 源碼閱讀:模型結點串行執行順序的確定 ONNX Runtime 源碼閱讀:模型分區的實現 之前的文章中,我們一直從源碼細節的角度去看某個

原创 從《七里香》到GCC as彙編語言

0. 起因 上週末下着大雨,自己在家吃着火鍋聽着歌,聽到周杰倫的《七里香》,裏面有句歌詞: 雨下整夜,我的愛溢出就像雨水 聽到“溢出”這個詞我腦子裏就想到的棧溢出,我就將歌詞篡改成“雨下整天,我的佔溢出就像雨水”發了朋友圈,並

原创 Kibana插件開發之環境搭建

1. 簡介 Kibana是 Elastic Stack(簡稱ES)的一個窗口,通過它你可以很輕易對ES內部的數據進行處理。例如可以通過Kibana對Elasticsearch(Elasticsearch簡單的講就是一個數據庫)內的

原创 RPC原理與FastRPC實現

0. 起因 最近看文檔,發現一些組件是通過FastRPC來進行溝通的,並且偶爾看到某些場景下在FastRPC上的時間消耗好像也蠻可觀,恰好FastRPC是開源的,因此決定看看FastRPC具體的實現。 1. RPC簡介 當初在學J

原创 一隻Python小爬蟲的Linux定時任務之旅

目錄 起因 systemd守護進程 單元(Units) 3.1. 單元加載路徑(Unit load path) 3.2. 通用節(section) 3.2.1. [Unit] 3.2.2. [Install] Service配置

原创 Docker,系統影分身之術

目錄 Docker安裝 1.1. Windows 1.2. Ubuntu Docker容器的使用 2.1. 啓動一個新的容器 2.2. 掛起運行的程序 2.3. 重啓被掛起的程序 2.4. 終止容器運行 2.5. 重新運行已有容