發表文章

自救必看三大準則

EFCore語法兼容性

圖片
         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)         {              if (!optionsBuilder.IsConfigured) optionsBuilder.UseSqlServer(@setDBConnString, o => o. UseCompatibilityLevel(110) );         } UseCompatibilityLevel 不同層級 參考來源: https://learn.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-ver16#compatibility_level--160--150--140--130--120--110--100--90--80-

將表單欄位轉為 Json,自建 serializeJson 方法

 jquery 轉 QueryString 或 Json 的方式太不貼心 就自建寫了一個 ( function($){           $.fn.serializeJson= function(){                var serializeObj={};                var array= this.serializeArray();                var str= this.serialize();               $(array).each( function(){                    if(serializeObj[ this.name]){                        if($.isArray(serializeObj[ this.name])){                           serializeObj[ this.name].push( this.value);                       } else{                           serializeObj[ this.name]=[serializeObj[ this.name], this.value];                       }                   } else{                       serializeObj[ this.name]= this.value;                    }               });                return serializeObj;           };       })(jQuery);  貼在 jquery.min.js 裡面,最下面也可以 接著就能使用。 console.log($( this).serializeJson());   參考: https://developer.aliyun.com/article/351410

【設定衝突】用戶端和伺服器無法溝通 因為它們沒有公用的演算法

圖片
  本機安全性過高, 有可能造成SSMS工具,無法與SQL Server連線 最快恢復方式, 是把SSL/TLS直接刪掉 不必重開機, 把SSMS關掉重新連線 完成 ~

CQRS 是什麼 ?

圖片
  Brobridge   過去在指導客戶進行微服務架構設計時,總不免講到「命令與查詢責任分離(CQRS, Command Query Responsibility Segregation)」,這個詞因為對許多人來說很陌生,通常又被人簡化理解為「讀寫分離」。在微服務架構的領域中,CQRS 主要被用於解決資料庫效能問題、讓實現資料分散化的目標。當然,一涉及分散式架構,其中就帶來更多議題,如:如資料一致性、交易處理等。 由於 CQRS 的概念在分散式系統,以及現今的微服務架構下被廣泛應用,小從資料儲存,大到整個服務應用系統層面都可以看到其存在,而且使用方法和層面非常多元且複雜,往往我們很難單從一些表面上的名詞和概念就能完全理解 CQRS 所帶來的好處,和對於微服務架構的重要性。‌ 有鑑於此, 本文將分成「資料庫系統」以及「應用程式」兩個角度,來討論 CQRS 模式在實務上的應用方法 ,也試著利用簡單的方式說明實務面我們如何採用這樣的設計模式。 什麼是 CQRS? ‌ 這個概念來自於物件導向的「命令與查詢分離(CQS, Command Query Separation)」,出自於 1987 年 Betrand Meyer 的 Object-Oriented Software Construction(物件導向軟體建構)一書,其原始概念是我們可以把物件操作分為命令(Command)和查詢(Query)兩種形式。 而這兩種操作的行為分別為: 命令(Command):執行後 會改變物件狀態 。 查詢(Query):查看物件結果,而且 不會改變物件的狀態、對物件本身沒有副作用 。 類似的概念,我們可以應用在分散式架構或微服務架構之下,只是我們不討論物件的行為,取而代之的是服務的行為,在實務上,此概念主要是用來解決資料操作的效率、服務責任的劃分,以及分散式系統下利用「重複性」來提升系統整體效能的問題。 如果你閱讀過我們的另一篇文章:「 淺談微服務拆分原理 」,裡面對於服務進行業務拆分的部分,圖上 Action 所表示的「 Commands/Query 」指的就是 CQRS 當中的命令和查詢。 資料庫系統的 CQRS 實現 ‌ 以往在討論服務系統設計時,因為資料庫總是會遭遇到效能瓶頸,就會嘗試使用「讀寫分離」來解決問題,所以這樣的做法早就被大量使用。資料儲存層面的 CQRS,一直都是

【BUG】錯誤 0152: 找不到非變異名稱為 'System.Data.SqlClient' 之 ADO.NET 提供者的 Entity Framework 提供者。

圖片
System.Data.Entity.Core.MetadataException: 指定的結構描述無效。錯誤: xxx.ssdl(2,2) :   錯誤 0152: 找不到非變異名稱為 'System.Data.SqlClient' 之 ADO.NET 提供者的 Entity Framework 提供者。 查網路半天,一開始還以為是 EntityFramework 出錯, 最後才發現,原來只是與 *.edmx 同層的專案, 沒有安裝套件 System.Data.SqlClient ......

【線程】基礎知識-執行緒生命週期

圖片
  一個執行緒的生命週期,可以分作數個狀態,如下圖所示: 當你實例化一個Thread物件後,必須使用start()方法啟用它,start()方法只能執行一次,重複執行start()方法,會丟出IllegalThreadStateException。執行 start() 之後,執行緒並非馬上執行,而是進入 可執行(Runnable)狀態 ,必須由排班器將執行緒排入CPU 執行(Running) 。 執行緒有其優先權,由 1(Thread.MIN_PRIORITY)到10(Thread.MAX_PRIORITY) , 預設是 Thread.NORM_PRIORITY(5) ,您可以使用Thread的 setPriority() 方法來設定執行緒的優先權,設定必須在1到10之間,否則會丟出 IllegalArgumentException 。優先權高的執行緒會先被執行完畢,然後才會輪到優先權低的執行緒,如果優先權相同,則 輸流執行(Round-robin方式) 。 決大多數的作業系統都支援 timeslicing ,簡單的說就是作業 系統會為每個執行緒分配一小段CPU時間(quantum),時間一到就換下一個執行緒,即使現有的執行緒還沒結束。對於不支援timeslicing的 作業系統,每一個執行緒必須完成後,才能輪到下一個執行緒,在這樣的作業系統中,如果想要讓目前執行緒禮讓一下其它執行緒,讓它們有機會取得執行權, 可以在呼叫緒行緒的 yield() 方法,例如:     Thread thread = new Thread(new Runnable() {         public void run() {             // ....             while(true) {                 // ....                 Thread.yield();  // 暫時讓出執行權             }         }     });     thread.start(); yield()方法讓同樣優先權的執行緒有被執行的機會,當執行緒執行yield()方法讓出執行權時,它會再度加入執行緒的 排班,等待再度取得執行權,對於支援timeslicing的作業系統,呼叫yield()是不太需要的,因為作業系統會自

【C#應用】導入Jenkins

 架設完成 Jenkins 後,來實用吧。 選擇 管理Jenkins > 管理外掛程式