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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面试官:实现一个带值变更通知能力的Dictionary

發布時間:2023/12/4 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试官:实现一个带值变更通知能力的Dictionary 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如題, 你知道字典KEY對應的Value什么時候被覆蓋了嗎?

最近大家都在追.Net6 update,咱還是保持節奏,通用語言聊技術。

沒背景說個鏟鏟

? ? ? ?上文中?數據獲取組件維護了業務方所有(在用)的連接對象,DBA能在后臺無侵入的切換備份庫。

如何主動清空.NET數據庫連接池?

上文中:DBA在為某個配置字符串切換新的連接信息時,SDK利用ClearPool(DBConnection conn)方法清空與這個連接相關的連接池。

清空的時機:維護在用連接的字典鍵值發生變更。

今天本文就來實現一個帶值變更通知能力的字典。

五毛錢的編程實踐

關鍵字:變更 通知 字典

using?System; using?System.Collections.Generic; using?System.Text; namespace?DAL {public?class?ValueChangedEventArgs<TK>?:?EventArgs{public?TK?Key?{?get;?set;?}public?ValueChangedEventArgs(TK?key){Key?=?key;}}public?class?DictionaryWapper<TKey,?TValue>{public?object??objLock?=?new?object();private?Dictionary<TKey,?TValue>?_dict;public?event?EventHandler<ValueChangedEventArgs<TKey>>?OnValueChanged;public?DictionaryWapper(Dictionary<TKey,?TValue>?dict){_dict?=?dict;}public?TValue?this[TKey?Key]{get?{?return?_dict[Key];?}set{lock(objLock){try{if?(_dict.ContainsKey(Key)?&&?_dict[Key]?!=?null?&&?!_dict[Key].Equals(value)){OnValueChanged(this,?new?ValueChangedEventArgs<TKey>(Key));}}catch?(Exception?ex){Console.WriteLine($"檢測值變更或者觸發值變更事件,發生未知異常{ex}");}finally{_dict[Key]?=?value;}}}}} }

旁白:

1.定義值變更事件OnValueChanged?和變更時傳遞的事件參數ValueChangedEventArgs<TKey>2.如何定義值變更,也就是如何判定值類型、引用類型的相等性? ? ? ? ? #equal、hashcode#3.DictionaryWapper的表征實現也得益于C#索引器特性


訂閱值變更事件

var?_dictionaryWapper?=?new?DictionaryWapper<string,?string>(new?Dictionary<string,?string>?{?}); _dictionaryWapper.OnValueChanged?+=?new?EventHandler<ValueChangedEventArgs<string>>(OnConfigUsedChanged); //---- public?static?void?OnConfigUsedChanged(object?sender,?ValueChangedEventArgs<string>?e) {Console.WriteLine($"字典KEY:{e.Key}的值發生了變更,請注意...");?????????? }

最后像正常Dictionary一樣為DictionaryWapper添加鍵值對:

?_dictionaryWapper[$"{dbConfig}:{connectionConfig.Provider}"]?=?connection.ConnectionString;

五毛錢的結尾語

OK,本文實現了一個帶值變更通知能力的字典,算是一個剛性需求。

通過本文,重溫了C# event?、索引器的用法,基礎不牢,地動山搖。

?性感豹紋

??三分鐘掌握共享內存 & Actor并發模型

?如何主動清空.NET數據庫連接池?

?鵝廠二面,Nginx回憶錄

?Redis分布式鎖抽絲剝繭

?看過這么多爆文,依舊走不好異步編程這條路?

?誰說docker-compose不能水平擴展容器、服務多實例?

?Kubernetes探針踩坑記

?難纏的布隆過濾器,這次終于通透了

由于微信公眾號修改了推送規則,為便于大家及時收到我的不定時推送,加星標、一鍵三連互動、加好友(hihuangjun),不失為良策,就醬!

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的面试官:实现一个带值变更通知能力的Dictionary的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。