原创 C#如何正確的做深拷貝

估計很多人在網上看到各種各樣的DeepClone實現, 例如:   1. 通過BinaryFormatter進行二進制序列化  這玩意兒序列化出來的東西還帶namespace類型, 尺寸非常大, 調試一下就知道極其不靠譜  有些人又開始動歪

原创 C# Protobuf如何做到0分配內存的序列化

題目很簡單, 就是IMessage對象怎麼變成Byte[]   答案1: msg.ToByteArray() 這肯定不符合我們的要求   答案2: using var memoryStream = new MemoryStream()

原创 最近很火的namebase羊毛, 手把手教你怎麼薅

閒話少說直接說步驟: 1. 羊毛     https://www.namebase.io/airdrop     要求條件: 1) 要有github賬號 2) 2019年2月之前有16+個follower 3) 要有當時的私鑰 2. 先去n

原创 多讀少寫場景下多線程鎖衝突的降低

服務器內經常會有一些多讀少寫的場景, 具體問題需要分析一下, 如果是這種場景, 這邊提供一個思路來降低多線程程序鎖的衝突, 進而極大的提升程序的性能.   例如一個Dictionary<String, String> A, 需要多讀少寫,

原创 dotMemory 2019.3.1一直試用

創建一個bat腳本, 裏面寫上: reg delete HKEY_CURRENT_USER\Software\JetBrains\dotMemory /freg delete HKEY_CURRENT_USER\Software\Micro

原创 好用的低延遲vps

ZeptoVM是一個俄羅斯的雲提供商, 由於提供了黑龍江北邊的機房, 所以延遲比較低         注意一定要選Khabarovsk節點, 這個節點延遲很低, 我在上海延遲大約有70ms 缺點就是比較貴, 按照年付費價格才和其他的vp

原创 rust下根據protobuf的消息名創建對象實例

在C++裏面, 我們可以根據一個消息的名稱, 動態的創建一個實例 google::protobuf::Descriptor* desc = google::protobuf::DescriptorPool::generated_

原创 [Linux]Debian 9重啓DNS重置問題

先編輯/etc/resolv.conf, 添加一個DNS, 比如114.114.114.114 然後sudo apt-get install resolvconf 然後編輯/etc/resolvconf/resolv.conf.d/orig

原创 String.IndexOf

還是上次那個json解析程序的優化, 雖然速度已經比較理想, 但是看到IndexOf佔到整個解析時長的20%+, 心裏還是不爽. 我寫的IndexOf是按照UTF16字符, 一個字符一個字符去比較的, 所以當時能想到的辦法, 就是一次比較多

原创 實現一個簡單的ConnectionPool

看了一圈, 沒看到稍微好用的ConnectionPool, 除了一個aiomysql, 但是這個是異步的, 我暫時沒有用到這麼高版本的Python, 所以就動手造一個輪子. 原理比較簡單, 先造一個線程安全的集合, 無非就是Lock+Set

原创 leveldb和fork的初始化順序

我們服務器內用leveldb存一些不是很重要的, 但是又需要(半)持久化的東西. 可是自從2016到現在, 碰見好幾次不同類型的死鎖. 直到今天, 才發現真正的原因, 那就是leveldb不支持fork. 所以在你使用leveldb的時候,

原创 C#裏面濫用String造成的性能問題

前兩天給我們的json寫一個解析函數, 之前用的正宗的json parser, 支持完整的json特性. 但是實際上我們用到特性, 只有key-value的映射, value的類型只有數字和字符串兩種類型. 由於parse的速度比較慢, 所

原创 C#代碼中插入X86彙編

這兩天在看C# SIMD相關的東西, 在爆棧上面搜到一段代碼, 表示很震驚, 還是得貼出來… 1 [UnmanagedFunctionPointer(CallingConvention.StdCall)] 2 delegate vo

原创 避免使用HttpClient的系統代理

這兩天在玩Consul, 他的.Net驅動使用了HttpClient來發送Http請求. 但是我的電腦上裝有SS, 所以請求會被SS過濾一次, 然後導致請求的延遲一直比較高. 然後只需要改寫一下HttpClient的Proxy規則, 就可以

原创 正確理解Handle對象

上古時期的程序員, 肯定都知道Handle對象, 一般中文翻譯成句柄. 一般的Handle在實現上, 都是一個整數, 而這個整數可以理解爲一個指針, 指針指向的地址呢, 又保存了另外一個指針. 之所以這麼搞, 是因爲這樣搞可以讓真實的對象可