原创 golang通道的順序性保證

一個通道上的第n次成功發送操作的開始發生在此通道上的第n次成功接收操作完成之前,無論此通道是緩衝的還是非緩衝的。 一個容量爲m通道上的第n次成功接收操作的開始發生在此通道上的第n+m次發送操作完成之前。 特別地,如果此通道是非緩

原创 golang的加鎖map與syncmap性能分析

syncmap是golang1.5引入的線程安全的map,以下是測試程序,結論: 不建議使用sync.map, 原因: 1. 性能不及加鎖的map, 2. 對json不友好 測試程序: package main_test imp

原创 go中struct實現多個接口.type會顯示哪個接口

package main import ( "fmt" "reflect" ) type IntF1 interface { show1() string } type IntF2 interface { show2

原创 Centos7 虛擬機強制關機提示進入緊急模式failed to mount /sysroot

xfs_repair -v -L /dev/dm-0 用這句,很管用,不知道爲什麼,以後再探索。 參考: https://blog.csdn.net/shine_journey/article/details/81095136

原创 golang的[]byte與string之間高效轉換

golang的[]byte個string一個是可變類型一個是不可變類型,轉換的時候會重新開闢內存,在程序併發即使上百萬的時候會出現內存問題,以下是unsafe的轉換方法 package main import ( "fm

原创 C#數據結構之鏈表的總結

此處定義單鏈表的數據結構與LeetCode上相同,爲: public class ListNode { public int val;

原创 C#實現和調用WebService

Webservice本本身是使用的soap+WSDL+UDDI三者的組合, soap用來描述傳遞信息的格式, WSDL 用來描述如何訪問具體的接口, uddi用來管理,分發,查詢webService。 但是C#在這個基礎上又做了進

原创 C#中的HashSet, HashTable, Dictionary的區別

HashSet和Python中的Set差不多,都是爲邏輯運算準備的,HashSet不允許數據有重複,且存入的時單值不是鍵值對。 HashTable和Dictionary差不多,但是他們的實現方式時不同的,Dictionary俗稱

原创 Python的實例方法,類方法和靜態方法的區別

OOP是一種編程思想,各種語言對這種思想的實踐都不盡相同,這體現在他們的語法當中 class Test(object): class_name = "Test" def __init__(self):

原创 leveldb持續寫入場景下速度變慢

go語言版本實現: https://github.com/syndtr/goleveldb 官方宣稱可以達到30w的qps,但是該go語言版本實測但qps大於20w時,一開始寫入速度正常,但是持續寫入幾分鐘後,寫入速度由十幾毫秒變

原创 編譯vim8提示if_perl.xs:57:20: fatal error: EXTERN.h: No such file or directory

是由vim導致的,兩種辦法: 1). yum install perl-ExtUtils-Embed 安裝perl-ExtUtils-Embed 2). ./configure去掉–enable-perlinterp

原创 LeetCode之653. Two Sum IV - Input is a BST

* 這題屬於Two Sum題,將BST中根遍歷存到數組當中,轉換爲數組的Two Sum問題即可 * C # 代碼 public bool FindTarget(TreeNode root, int k) {

原创 LeetCode之687. Longest Univalue Path

本題目的是在一棵二叉樹中尋找彼此連接的連續節點的最長長度,返回連接的邊數,提示: 連續節點可經過根節點也可以不經過根節點 思路: 從葉子節點開始尋找左右子節點和本身相同的節點, 若全相同則加1, 使用遞歸。 C# 代碼 /**

原创 Python中對json進行編碼和解碼的問題

在web開發中經常會在前後端之間通過json傳遞數據,但是又不能像客戶端編程那樣直接傳遞對象。所以json用於將兩邊的對象編碼成數據,再在另一邊解碼出來。傳遞的過程中要先構造json對象,再將json對象編碼爲json字符串,而在接收