【Git】- 如何使用 SSH 連線到 Git
前言這邊主要是針對使用SSH方式進行Git操作,因為有時候會遇到需要使用SSH方式進行操作,因此這邊紀錄一下。
什麼是 SSH(Secure Shell)SSH(Secure Shell)是一種網路協議,用於安全地在網絡上進行數據通信、遠程訪問和遠程管理。SSH 的目的是通過加密和認證機制來保護網絡通信的安全性,特別是在不受信任的網絡中進行數據傳輸。
遠程登錄(Remote Login):SSH 允許用戶從遠程位置(例如家中或辦公室之外)安全地登錄到遠程服務器或計算機上,並在遠程計算機上運行命令。
文件傳輸(Secure File Transfer):SSH 提供了安全的文件傳輸機制,允許用戶在本地計算機和遠程服務器之間傳輸文件,這種機制通常用於上傳或下載文件。
遠程管理(Remote Management):系統管理員可以使用 SSH 遠程管理遠程服務器或設備,包括配置、監控和維護。
安全性
加密(Encryption):SSH 使用加密算法對數據進行加密,使得數據在傳輸過程中無法被未經授權的第三方窺探或修改。
身份驗證(Authentication):SSH 使用公鑰加 ...
【Git】- 使用 git reset 復原及還原專案資料
專案有時因功能需求或是其他原因,會需要回復到之前的版本。通常會有兩種狀況不是專案壞掉、設定檔跑掉,初起可以先用以下做法來驗證。
還原方式一、還原最新的commit通常使用時機會是因為專案壞掉,或是設定檔跑掉,可以先還原最新的commit。
1git reset --hard HEAD
二、還原其他commit指令若發現還原最新的commit後,還是有問題,可以使用以下指令還原其他commit。
1git reset --hard <commit id>
補充.git 是git的版本控制資料夾,裡面存放了git的版本控制資料,如果刪除了這個資料夾,就無法使用git來控制版本了,但是這並不會影響到你的專案資料,只是無法使用git來控制版本。
相對,如果你只有取得一個.git是可以利用 git reset把資料還原回來,可以不必要打包太大資料給對方。
[筆記]C# - DI / IOC 差異
DI 依賴注入 (Dependency Injection)是 DI 的一種實現方式,它將對象的創建和生命週期管理交給 IoC 容器來處理。
1定義 : A物件程式內部需要使用B物件 , 則 B 物件中有依賴的成份。
IOC 控制反轉 (Inversion of Control)是一種軟體設計模式,指的是將對象創建和生命週期管理的責任轉移到 IoC 容器中,容器負責解析依賴關係,並將需要的對象注入到其它對象中。這樣做的好處是降低代碼的耦合性,增加代碼的靈活性和可測試性。
1定義 : A 物件與 B 物件控制權由第三方容器控制。
結論IoC 是一種設計模式,而 DI 則是 IoC 的一種具體實現方式。使用 DI 的好處是可以使代碼更加靈活和可測試,因為對象的依賴關係被轉移到了容器中,可以方便地模擬和測試各個對象。同時,使用 DI 還可以提高代碼的可讀性和可維護性,因為代碼中不再包含創建和管理依賴關係的代碼。
[筆記]C# Scaffold Entity Framework
Scaffold又可稱”鷹架”、”支架”。Scaffold 是可以解釋為程式碼產生器,可以透由指令產生出想要的檔案、專案,使用部分通常是透由指令方式呼叫、產生指令。dotnet.exe內也有提供scaffold概念。
專案Net Core SDK安裝時候會提供預先定義的 scaffold 範本(example: dotnet.exe)。 以下指令參考 :
展開 dotnet.exe 清單 : dotnet new --lists
求救指令 : dotnet new -h
Entity Framework CoreEF Core 使用方式與 EF 不同,EF Core 基於 Scaffolding 實體類型類別和 DbCoNtext 類別的程式。可以透由套件管理員主控台 (PMC):Scaffold-DbContext或是 NET 命令列介面 (CLI): dotnet ef dbcontext scaffold 產生出檔案。
注意事項
必須使用Microsoft.EntityFrameworkCore.Design NuGet 套件
需要安裝相關工具 :
套件管理員主控台 ...
[筆記]C# ORM 物件關係映像
物件關係映像 Object Relational Mapping是一種軟體開發技術,它將關聯式資料庫中的資料表映射到物件導向程式語言中的物件,從而實現程式語言與資料庫之間的無縫集成。
ORM 框架通常提供以下功能:
對象映射:ORM 框架會自動將資料庫表格映射到物件,開發人員可以像使用任何物件一樣使用這些物件。
關聯性映射:ORM 框架可以處理表格之間的關係,使開發人員可以輕鬆地編寫與關聯性相關的程式碼。
資料庫操作:ORM 框架提供了一套 API,使開發人員可以方便地對資料庫進行 CRUD 操作。
查詢語言支持:ORM 框架通常提供了一套自己的查詢語言,開發人員可以使用這些查詢語言方便地查詢資料庫。
ORM 框架的好處是可以減少對於 SQL 的依賴,減少了對於資料庫的複雜性,讓開發人員可以更專注於物件導向程式設計,並且可以提高開發效率。但是使用 ORM 框架也存在一些缺點,比如在效能上可能會有些影響,需要仔細選擇適合的 ORM 框架並進行優化。
結論物件關係映像是 “物件”與”資料庫”之間對應的一種技術,例如 : “Entity Framework”。特色是資料透過【物件方式】 ...
[筆記]C# 命名原則 PascalCase、camelCase、Hungarian notation
命名原則一、小駝峰式命名法 (lower camel case)又稱「camel Case 」。把字首字母改為小寫其他改為大寫,例如 : dataTable、fileName、userDetail。
二、大駝峰式命名法 (upper camel case)又稱「Pascal Case 」。把每一個前面第一個字首字母改為大寫,例如 : DataTable、FileName、UserDetail。
三、匈牙利命名法(Hungarian notation)匈牙利命名法的基本思想是在變數名稱前面添加一個或多個簡稱,這個簡稱表示該變數的數據類型或其他屬性。例如,字串變數可以使用 “str” 的前綴,整數變數可以使用 “i” 的前綴等等。這些前綴使代碼更易於閱讀,因為它們提供了有關變數類型和用途的重要信息。
匈牙利命名法前綴:
str:字串類型
i:整數類型
b:布林類型
f:浮點數類型
o:物件類型
123string strName;int iAge;bool bIsEnabled;
軟體開發中已經不再廣泛使用匈牙利命名法,因為它可能會導致變數名稱變得冗長且容易混淆。取而代之的是,一些 ...
[筆記]C# In 泛型修飾詞
泛型修飾詞泛型修飾詞用於指定泛型類型參數,以便在編譯時使用具體的類型。泛型修飾詞使用尖括號”< >”表示,放置在類型名稱的後面。可以定義一個泛型類型List,其中T是一個類型參數:
1234567891011121314151617public class List<T>{ private T[] items; public List() { items = new T[0]; } public void Add(T item) { // Add item to the list } // Other methods here}
在上面的示例中,T是一個泛型類型參數,可以代表任何類型。當創建List物件時,必須指定T的具體類型,例如:
1234List<int> intList = new List<int>();List<string> stringList = ne ...
[筆記]C# Where 泛型類別條件約束
泛型類別條件約束(generic class constraint)用來指定泛型型別參數的約束條件,限制它必須是特定的型別或符合某些條件。
指定泛型型別參數必須繼承自特定的基底類別或介面
1234public class MyClass<T> where T : MyBaseClass{ // MyClass<T> 的程式碼}
MyClass 泛型類別指定了泛型型別參數 T 必須繼承自 MyBaseClass 基底類別。這樣一來,在定義 MyClass 物件時,T 的型別必須符合這個條件,否則就會編譯錯誤。
指定泛型型別參數必須是值型別或可為空的值型別
12345public class MyClass<T> where T : struct{ // MyClass<T> 的程式碼}
MyClass 泛型類別指定了泛型型別參數 T 必須是值型別或可為空的值型別。這樣一來,在定義 MyClass 物件時,T 的型別必須符合這個條件,否則就會編譯錯誤。
指定泛型型別參數必須有預設的建構 ...
[筆記]C# out、ref關鍵字差異
out 關鍵字out 關鍵字表示該參數是一個輸出參數,方法將為其賦值。使用 out 關鍵字的參數在方法調用之前不需要賦值。在方法內部,out 參數必須賦值,否則編譯器會報錯。以下是使用 out 關鍵字的範例:
12345678void Calculate(int input, out int output){ output = input * 2;}int input = 5;int result;Calculate(input, out result);
上面範例中,Calculate 方法帶有一個 input 參數和一個 out output 參數。Calculate 方法內部賦值了 output 參數,因此可以在方法調用後使用 result 變數來獲取方法的計算結果。
ref 關鍵字ref 關鍵字則表示該參數是一個引用參數,方法可以修改其值並且這些修改也會影響到參數的原始值。使用 ref 關鍵字的參數必須在方法調用之前賦值。以下是使用 ref 關鍵字的範例:
1234567void Increment(ref int value){ va ...
[筆記]C# 實體化與抽象化
實體類別實體類別是具體的類別,可以直接實例化為物件,並對其進行操作。實體類別可以包含屬性、方法、事件等成員,並且可以被其他類別繼承。以下是一個示例:
123456789101112131415161718public class Person{ public string Name { get; set; } public int Age { get; set; } public void SayHello() { Console.WriteLine("Hello, my name is " + Name + " and I am " + Age + " years old."); }}// 實例化一個Person物件Person p = new Person();p.Name = "John";p.Age = 30;// 呼叫方法p.SayHello();
抽象類別抽象類別是一種特 ...