日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

c#总结最近的几项重要代码

發(fā)布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#总结最近的几项重要代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

java的代碼就不說了,畢竟不是我的主業(yè)。

1.c#數(shù)據(jù)庫連接池Hikari.

? ?(1)動態(tài)加載各類數(shù)據(jù)庫驅(qū)動

? (2)支持簡單配置文件

(3)支持按照名稱多數(shù)據(jù)庫調(diào)用

(4)使用簡潔

?單數(shù)據(jù)庫使用:

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#數(shù)據(jù)庫封裝DBQuerySharp

(1)各類數(shù)據(jù)庫均有,功能齊備

(2)有SQL,NoSQL樣例,完善了封裝

(3)封裝成了服務(wù)化模型。擴(kuò)展使用和優(yōu)化

(4)有查詢的緩存優(yōu)化樣例。

整個包括了SQL數(shù)據(jù)庫(連接池任意配置),本地KV數(shù)據(jù)庫(berkeleydb),本地SQL數(shù)據(jù)庫(Sqlite),內(nèi)存SQL數(shù)據(jù)庫(Sqlite),內(nèi)存NOSQL數(shù)據(jù)庫(redis),內(nèi)存KV存儲(LRU緩存)

(5)相關(guān)項目

1.sqilte 2.berkeleydb 3.一般數(shù)據(jù)庫使用(通過Hikari) 4.redis ? 包含其他項目: 1.序列化 2.通信 3.自定義數(shù)據(jù)庫連接池

項目地址:

https://github.com/jinyuttt/DBQuerySharp.git

3.本地緩存JYCache

? (1)完全本地?fù)QK-V緩存

(2)實現(xiàn)FIFO,LRU,LFU策略

使用示例:

CacheConfig config = new CacheConfig();
config.CacheTime = 1800;//(時間都是秒)
config.Policy = CachePolicy.FIFO;//設(shè)置消失策略
ICache<int,int> cache=CacheFactory<int, int>.Create(config);
cache.CacheRemoveListener += Cache_CacheRemoveListener;
cache.Add(1, 1,10);//單獨設(shè)置key保持10秒

項目地址:

https://github.com/jinyuttt/JYCache.git

4.Hash一直負(fù)載均衡LoadBalanceHash

? (1)實現(xiàn)Hash一致算法。算法原理網(wǎng)上搜索很多,我就不說了。只需要搜索“Hash一致”

(2)這方面我不擅長,主要是參閱網(wǎng)友的東西。我的封裝包括了2個項目。一個是網(wǎng)上原理KetamaHash .

? (3)主要參閱:https://www.cnblogs.com/daizhj/archive/2010/08/24/1807324.html;

? ? ? ? ? ? ? ? ? ? ? ??https://blog.csdn.net/cywosp/article/details/23397179/

?(4)代碼說明

?參考網(wǎng)上的代碼就不說了,一模一樣。主要是MD5+SortedList.

這里說我測試的另外一個組合。MurmurHash+SortedList.這個是充分驗證了效率的。

MurmurHash算法比較快,網(wǎng)上多少MD5.用法基本可以一樣,但是我沒有使用原來進(jìn)行分組了。底層存儲我測試了SortedDictionary,SortedList以及自定義紅黑樹(gi網(wǎng)友的,可以使用)。他們的主要問題都是在獲取Key右側(cè)最近的節(jié)點。都沒有提供現(xiàn)成的。所以測試很慢。

最后測試MurmurHash+SortedList.但是多了一層封裝。我將其SortedList與紅黑樹合并(也可以直接自己封裝一個類結(jié)構(gòu),項目中也有樣例)。在初始化時,數(shù)據(jù)添加到紅黑樹中。然后通過UpdateSort快速遍歷,將數(shù)據(jù)導(dǎo)入SortedList存儲使用,這樣就啟用了其中為Hash一致封裝的功能TialNode.但是這里不能使用網(wǎng)上的方法,用linq查詢,太慢。我在內(nèi)部直接使用二分法進(jìn)行搜索。后面說原因。采用這種辦法會很快,而且直接返回最右側(cè)的一個值。這里強(qiáng)調(diào)一個問題,不能使用多線程分片查詢,更加慢。經(jīng)過測試,每個線程都是一樣的時間,和應(yīng)該線程直接查詢一樣的時間使用。都是很短的時間大約一個線程30-800(比毫秒還小的那個單位)。我測試使用的分片方法任然在,但是不能使用。這個可能和數(shù)據(jù)量有關(guān),一個線程的數(shù)據(jù)量沒有千萬級就不要測試了,二分法的方法已經(jīng)夠快了,一次干掉一般的數(shù)據(jù),沒有幾次就結(jié)束了。

最后說說碰上的一個小問題:比較SortedDictionary, SortedList。我推薦一篇文章,是我自己查閱源碼(net core)之后,認(rèn)為這篇文章是真實的。博文地址:https://blog.csdn.net/ma_jiang/article/details/78600043。我比較認(rèn)可。也正是由于2者的結(jié)構(gòu),所以我最后采用SortedList來實現(xiàn)Hash一致。

? 關(guān)于這個問題說2點:SortedList內(nèi)存小,而且是線性數(shù)組實現(xiàn)的Key與value。SortedDictionary則是二叉樹。查詢一個是二分法,一個是二叉樹。另外一個困惑是,我采用紅黑樹搜索居然達(dá)不到它們2者的速度,我感覺奇怪。后面我再繼續(xù)測試吧。

項目地址:

https://github.com/jinyuttt/LoadBalanceHash.git

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/jinyu20180311/p/10386297.html

總結(jié)

以上是生活随笔為你收集整理的c#总结最近的几项重要代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。