c#总结最近的几项重要代码
java的代碼就不說了,畢竟不是我的主業。
1.c#數據庫連接池Hikari.
? ?(1)動態加載各類數據庫驅動
? (2)支持簡單配置文件
(3)支持按照名稱多數據庫調用
(4)使用簡潔
?單數據庫使用:
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.LoadConfig("Hikari.txt");
HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig); 獲取連接:
hikariDataSource.GetConnection();
連接池管理類獲取
ManagerPool.Instance.GetDbConnection(MySql);
項目地址:
https://github.com/jinyuttt/Hikari.git 2.c#數據庫封裝DBQuerySharp
(1)各類數據庫均有,功能齊備
(2)有SQL,NoSQL樣例,完善了封裝
(3)封裝成了服務化模型。擴展使用和優化
(4)有查詢的緩存優化樣例。
整個包括了SQL數據庫(連接池任意配置),本地KV數據庫(berkeleydb),本地SQL數據庫(Sqlite),內存SQL數據庫(Sqlite),內存NOSQL數據庫(redis),內存KV存儲(LRU緩存)
(5)相關項目
1.sqilte 2.berkeleydb 3.一般數據庫使用(通過Hikari) 4.redis ? 包含其他項目: 1.序列化 2.通信 3.自定義數據庫連接池
項目地址:
https://github.com/jinyuttt/DBQuerySharp.git 3.本地緩存JYCache
? (1)完全本地換K-V緩存
(2)實現FIFO,LRU,LFU策略
使用示例:
CacheConfig config = new CacheConfig();
config.CacheTime = 1800;//(時間都是秒)
config.Policy = CachePolicy.FIFO;//設置消失策略
ICache<int,int> cache=CacheFactory<int, int>.Create(config);
cache.CacheRemoveListener += Cache_CacheRemoveListener;
cache.Add(1, 1,10);//單獨設置key保持10秒
項目地址:
https://github.com/jinyuttt/JYCache.git 4.Hash一直負載均衡LoadBalanceHash
? (1)實現Hash一致算法。算法原理網上搜索很多,我就不說了。只需要搜索“Hash一致”
(2)這方面我不擅長,主要是參閱網友的東西。我的封裝包括了2個項目。一個是網上原理KetamaHash .
? (3)主要參閱:https://www.cnblogs.com/daizhj/archive/2010/08/24/1807324.html;
? ? ? ? ? ? ? ? ? ? ? ??https://blog.csdn.net/cywosp/article/details/23397179/
?(4)代碼說明
?參考網上的代碼就不說了,一模一樣。主要是MD5+SortedList.
這里說我測試的另外一個組合。MurmurHash+SortedList.這個是充分驗證了效率的。
MurmurHash算法比較快,網上多少MD5.用法基本可以一樣,但是我沒有使用原來進行分組了。底層存儲我測試了SortedDictionary,SortedList以及自定義紅黑樹(gi網友的,可以使用)。他們的主要問題都是在獲取Key右側最近的節點。都沒有提供現成的。所以測試很慢。
最后測試MurmurHash+SortedList.但是多了一層封裝。我將其SortedList與紅黑樹合并(也可以直接自己封裝一個類結構,項目中也有樣例)。在初始化時,數據添加到紅黑樹中。然后通過UpdateSort快速遍歷,將數據導入SortedList存儲使用,這樣就啟用了其中為Hash一致封裝的功能TialNode.但是這里不能使用網上的方法,用linq查詢,太慢。我在內部直接使用二分法進行搜索。后面說原因。采用這種辦法會很快,而且直接返回最右側的一個值。這里強調一個問題,不能使用多線程分片查詢,更加慢。經過測試,每個線程都是一樣的時間,和應該線程直接查詢一樣的時間使用。都是很短的時間大約一個線程30-800(比毫秒還小的那個單位)。我測試使用的分片方法任然在,但是不能使用。這個可能和數據量有關,一個線程的數據量沒有千萬級就不要測試了,二分法的方法已經夠快了,一次干掉一般的數據,沒有幾次就結束了。
最后說說碰上的一個小問題:比較SortedDictionary, SortedList。我推薦一篇文章,是我自己查閱源碼(net core)之后,認為這篇文章是真實的。博文地址:https://blog.csdn.net/ma_jiang/article/details/78600043。我比較認可。也正是由于2者的結構,所以我最后采用SortedList來實現Hash一致。
? 關于這個問題說2點:SortedList內存小,而且是線性數組實現的Key與value。SortedDictionary則是二叉樹。查詢一個是二分法,一個是二叉樹。另外一個困惑是,我采用紅黑樹搜索居然達不到它們2者的速度,我感覺奇怪。后面我再繼續測試吧。
項目地址:
https://github.com/jinyuttt/LoadBalanceHash.git ?
?
?
?
轉載于:https://www.cnblogs.com/jinyu20180311/p/10386297.html
總結
以上是生活随笔為你收集整理的c#总结最近的几项重要代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1元红包换雪诺亏吗
- 下一篇: 移动端丨-webkit-overflow