原创 連接SQL Server報錯

將框架從.NET6升級到8,順便將各種依賴包也升級,容器化部署到測試環境後,SQL Server連接不了了: [2024-05-13 13:48:10 ERR] [Microsoft.EntityFrameworkCore.Databas

原创 RabbitMQ Stream類型隊列

RabbitMQ提供了三種類型的隊列: Classic Quorum Stream 官方文檔 對於流隊列的描述是:高性能、可持久化、可複製、非破壞性消費、只追加寫入的日誌 使用場景: 一個隊列將同一條消息分發給不同消費者

原创 Python日誌和配置庫

日誌和配置是應用不可缺少的部分,本文用於介紹dynaconf和loguru的簡要用法。 dynaconf dynaconf是一個配置管理包,支持多種配置文件格式,如:toml、yaml、json、ini及環境變量等 pip install

原创 Python刪除註冊表鍵及其子項

Python中可以使用winreg模塊中的DeleteKey方法來刪除註冊表中的鍵,但該方法不能刪除包含子鍵的鍵。所以,在刪除某個鍵時要先刪除它的所有子鍵,這裏藉助棧結構通過循環迭代的方式來獲取註冊表鍵的所有子鍵及子鍵的子鍵。完整代碼如下:

原创 Python實現一個簡單的棧結構

基於list來實現一個棧: class SimpleStack: def __init__(self): self.__stack: list = [] ​ def __iter__(self):

原创 EFCore記錄慢查詢日誌

在生產環境中,通常有DBA同事對數據庫進行監控,在發現如慢查詢等問題時反饋給開發團隊進行解決。 .NET平臺提供了診斷機制,藉助該機制可以實現EFCore記錄慢查詢日誌功能,這樣開發團隊就可以通過日誌告警發現慢查詢問題而無需被動依賴DBA同

原创 rsync同步SQLite3文件API返回舊數據

問題描述 EFCore cannot get new value in docker, if use rsync replace sqlite file 基於.NET6開發一個查詢SQLite的API,使用Docker進行部署,通過掛載的方

原创 Docker容器訪問SQL Server 拋異常:SSL Provider, error: 31 - Encryption(ssl/tls) handshake failed

在測試環境部署服務後,調用API會拋出以下異常: Microsoft.Data.SqlClient.SqlException (0x80131904): A connection was successfully established

原创 ASP.NET Core解析Protobuf格式數據

ASP.NET Core通過IInputFormatter來解析輸入的數據,並進行模型綁定(Model Binding);通過IOutputFormatter來解析輸出的數據,來格式化響應(format response)。   兩個Nug

原创 使用Docker在本地搭建Rabbitmq集羣

本文用於演示如何在本地使用Docker搭建RabbitMQ集羣。 erlang cookie erlang節點間通訊需要具有相同的erlang cookie值,erlang cookie的值在.erlang.cookie文件中,位置在家目錄

原创 EFCore慢查詢日誌記錄

在生產環境中,通常有DBA同事對數據庫進行監控,在發現如慢查詢等問題時反饋給開發團隊進行解決。 .NET平臺提供了診斷機制,藉助該機制可以實現EFCore記錄慢查詢日誌功能,這樣開發團隊就可以通過日誌告警發現慢查詢問題而無需被動依賴DBA同

原创 分佈式環境下唯一id生成方案

在分佈式系統中,全局唯一id算是一個基本需求,對於全局唯一id通常要求: 全局唯一 趨勢遞增 id的值遞增但可以不連續 單調遞增 後面產生的id值一定大於前面的id值 信息安全 id值不能暴露出業務數據信息 ⚠️ 許多

原创 基於Redis實現令牌桶限流

常用限流算法有漏桶算法和令牌桶算法,本文藉助Redis的redis_cell模塊來實現令牌桶算法限流。 構建鏡像並啓動容器 FROM redis:latest ARG cell_dir=/lib/redis_modules/redis

原创 異步與協程

前段時間有同事問了一個問題:JavaScript是單線程運行代碼,那麼如下代碼片段中,同樣是執行func1和func2,爲什麼只用 Promise.all 相比於直接執行 await func1();await func2(); 速度更快:

原创 實現JavaScript繼承

使用TypeScript或者ES2015+標準中的extends關鍵字是很容易實現繼承的,但這不是本文的重點。JS使用了基於原型(prototype-based)的繼承方式,extends只是語法糖,本文重點在於不使用extends來自己實