亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Dictionary中怎么批量插入日志數據

發布時間:2021-08-06 16:06:04 來源:億速云 閱讀:154 作者:Leah 欄目:編程語言

本篇文章為大家展示了Dictionary中怎么批量插入日志數據,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

問題窺探

首先,我想到的是Dictionary,對于C#中的Dictionary類相信大家都不陌生,這是一個Collection(集合)類型,可以通過Key/Value(鍵值對的形式來存放數據;該類最大的優點就是它查找元素的時間復雜度接近O(1),實際項目中常被用來做一些數據的本地緩存,提升整體效率。Dictionary是非線程安全的類型,可以實現先添加到內存當中,在批量保存進去數據庫。

主要代碼實現

1、定義一個Dictionary。

private readonly Dictionary<string, Tuple<ObjectInfo, object>> _storage = new Dictionary<string, Tuple<ObjectInfo, object>>(StringComparer.OrdinalIgnoreCase);

2、添加元素,操作的時候需要對其進行線程安全處理,最簡單的方式就是加鎖(lock)。

public bool SaveObject<T>(string path, T value) where T : class {             if (String.IsNullOrWhiteSpace(path))                 throw new ArgumentNullException("path");              lock (_lock) {                 _storage[path] = Tuple.Create(new ObjectInfo {                     Created = DateTime.Now,                     Modified = DateTime.Now,                     Path = path                 }, (object)value);                  if (_storage.Count > MaxObjects)                     _storage.Remove(_storage.OrderByDescending(kvp => kvp.Value.Item1.Created).First().Key);             }              return true;         }

3、定義一個隊列,定時消費日志。

public DefaultEventQueue(ExceptionlessConfiguration config, IExceptionlessLog log, ISubmissionClient client, IObjectStorage objectStorage, IJsonSerializer serializer, TimeSpan? processQueueInterval, TimeSpan? queueStartDelay) {             _log = log;             _config = config;             _client = client;             _storage = objectStorage;             _serializer = serializer;             if (processQueueInterval.HasValue)                 _processQueueInterval = processQueueInterval.Value;              _queueTimer = new Timer(OnProcessQueue, null, queueStartDelay ?? TimeSpan.FromSeconds(2), _processQueueInterval);         }

這里刪除的時候也需要lock 操作。

public bool DeleteObject(string path) {             if (String.IsNullOrWhiteSpace(path))                 throw new ArgumentNullException("path");              lock (_lock) {                 if (!_storage.ContainsKey(path))                     return false;                  _storage.Remove(path);             }              return true;         }
public IEnumerable<ObjectInfo> GetObjectList(string searchPattern = null, int? limit = null, DateTime? maxCreatedDate = null) {             if (searchPattern == null)                 searchPattern = "*";             if (!maxCreatedDate.HasValue)                 maxCreatedDate = DateTime.MaxValue;              var regex = new Regex("^" + Regex.Escape(searchPattern).Replace("\\*", ".*?") + "$");             lock (_lock)                 return _storage.Keys.Where(k => regex.IsMatch(k)).Select(k => _storage[k].Item1).Where(f => f.Created <= maxCreatedDate).Take(limit ?? Int32.MaxValue).ToList();         }

上述內容就是Dictionary中怎么批量插入日志數據,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邛崃市| 泸溪县| 南通市| 新化县| 渝中区| 通渭县| 滨州市| 陈巴尔虎旗| 南丹县| 乌兰县| 上饶县| 股票| 商水县| 滦南县| 保靖县| 同仁县| 大庆市| 长岛县| 鹤壁市| 永川市| 水富县| 托克逊县| 盐山县| 靖安县| 大安市| 炎陵县| 萍乡市| 东至县| 盘锦市| 康平县| 西和县| 博兴县| 石林| 望城县| 柳河县| 昂仁县| 临武县| 固原市| 德兴市| 横山县| 扎赉特旗|