gminc

@gminc

Joined on Oct 20, 2020

  • 序列化程序會將物件轉換成位元組資料流,以將物件儲存或傳輸到記憶體、資料庫或檔案。 其主要目的是儲存物件的狀態,這樣就能在需要時重新建立該物件。 反向的程序則稱為還原序列化。 圖片來源: 微軟文件 The object is serialized to a stream that carries the data. The stream may also have information about the object's type, such as its version, culture, and assembly name. From that stream, the object can be stored in a database, a file, or memory. 序列化的用法 序列化可讓開發人員儲存物件的狀態,並視需要重新建立物件,以提供物件和資料交換的儲存體。 透過序列化,開發人員可以執行下列動作: 使用 web 服務將物件傳送到遠端應用程式
     Like  Bookmark
  • 官方文件 提供類別,用來傳送 HTTP 要求,以及從 URI 所識別的資源接收 HTTP 回應。 // HttpClient is intended to be instantiated once per application, rather than per-use. See Remarks. static readonly HttpClient client = new HttpClient(); static async Task Main() { // Call asynchronous network methods in a try/catch block to handle exceptions. try
     Like  Bookmark
  • 字串中的每個字元都是由 Unicode 純量值所定義,也稱為 Unicode 程式碼點或 Unicode 字元的序數 (數值) 值。 每個程式碼點都是使用 UTF-16 編碼進行編碼,而編碼的每個專案的數值會以物件來表示 Char 。 字串是用來表示文字的連續字元集合。 String記憶體中物件的大小上限為 2 GB 或大約1000000000個字元。 字串的操作通常考量以下兩點: 封裝次數 記憶體消耗
     Like  Bookmark
  • 要完整的複製整棵樹 :evergreen_tree: 必須要完整走訪過每個節點 Node 要在判斷內 new,不然新複製的數每個最底下的分支會多一個裡面沒東西的 Node public Node CopyNode(Node originalNode) { Node clonedNode = null; if (originalNode != null) { clonedNode = new Node();
     Like  Bookmark
  • 在同一個方法中,自己呼叫自己,用來處理重複的動作 以階乘 n! 為例 fn(1) = 1 fn(2) = 2 * 1 fn(3) = 3 * 2 * 1 fn(4) = 4 * 3 * 2 * 1 :arrow_down: :arrow_down: :arrow_down:
     Like  Bookmark
  • 在使用 C# WinForm 的 DataGridView 時發現沒辦法直接把 HashSet 直接餵給它 :shark: DataGridView.DataSource = new HashSet<T>(); // 編譯失敗 需要多加上 ToArray() 或是 ToList() 才能夠成功 DataGridView.DataSource = new HashSet<T>().ToArray(); // 編譯成功
     Like  Bookmark
  • 在看別人的程式碼中注意到有些型別後面會加上問號? double? pi = 3.14; char? letter = 'a'; int? m = m2; bool? flag = null; // An array of a nullable value type: int?[] arr = new int?[10];
     Like 1 Bookmark
  • 類別 Java 是一個全物件導向程式語言(Objected-Oriented Program Language, OOPL),所有東西都會被放在類別裡,類別就像模板,通過類別 new 出來的東西就叫做物件(會存在 heap 中),類別也是一種參考資料型態 類別會描述物件,用以下兩種方式: 屬性(Property): 類別中的屬性 方法(Method): 類別中的功能 類別的命名一定是大寫開頭(巴斯塔命名法) package 命名為全小寫不做區隔
     Like  Bookmark
  • 遞迴 public static viod test() { } 函式自己呼叫自己 如使用遞迴,通常程式效能會較差 一定要設終止條件不然會無限執行 遞迴應用: 費式數列
     Like  Bookmark
  • while 迴圈 public class ConterControlled { public static void main(String[] args) { int counter = 1; while (counter <= 10) { System.out.println(counter); ++counter; } } }
     Like  Bookmark
  • 語法 public class MainClass { public static void main(String[] args) { // TODO int a = 0; while (a > 0) { // TODO } } }
     Like  Bookmark
  • 最小公因數開始排 (假設必定 n < k) public class MainClass { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int k = scanner.nextInt(); for (int i = 1; i <= n; i++) { if (n % i == 0 && k % i == 0) { System.out.print(i + " ") }
     Like  Bookmark
  • 隨機亂數 public class MainClass { public static void main(String[] args) { Scanner sc = new.Scanner(System.in); double r = Math.random(); int r = (int)(Math.random() * 10); } } double + Math.random() 會隨機產生 0 ~ 1 之間的 double (預設)
     Like  Bookmark
  • 關係運算子 !(nut):也可用來反轉布林值 if & else if & else public class MainClass { public static void main(String[] args) { if () { // 小括號裡面放的是 boolean,true 才會執行 } else if () { // Action
     Like  Bookmark
  • public class MainClass { public static viod main(String[] args) { Scanner scan = new Scanner(System.in); // Scanner 是類別 scan 是名稱也是變數,可以自己定義 // scan 是用來存放 Scanner 實體的空間 // new Scanner(System.in) 是在 Heap 中創建 Scanner 的實體 // 會把 new Scanner(System.in) 的位置丟到 scan 裡面 int a; a = scan.nextInt(); // "." 代表後面接 Scanner 可以使用的"方法 (功能?)",也會顯示會回傳的數值型態,其中 nextInt 是擷取使用者輸入整數的方法,輸入其他型別會錯誤
     Like  Bookmark
  • 鍊式調用 chain 存取修飾詞 可以被混用 static public static int Number() { } 從程式創建的一開始即存在 生命週期和整個程式一樣長
     Like  Bookmark
  • java 的編譯和執行 JVM: Java Virtual Machine 不同平台有不同的 JVM 來執行同樣的 bytecode 以 JVM 為分水嶺,把東西丟到 JVM 跑的時候就是執行時期,反之為編譯時期 在 IDE 中按下 Play 會自動存一個 .class 的檔案 編譯時期產生和執行時期產生的相同字串會存在不同的記憶體位置 . 在參考資料型態中,可以用 . 呼叫相應的 function()
     Like  Bookmark
  • 屬於參考資料型態 一般參考資料型態在呼叫時需要 new,但 String 不用 所有需要加 new 的程式代表都要在執行時期才能被決定 (就算先寫好預計創建的空間數,系統也不會先行判斷要創造幾個空間) String str = "123"; 字串池 String Pool 因為字串沒有固定大小,所以放在記憶體 heap 裡,和 array 一樣
     Like  Bookmark
  • 陣列的記憶體配置 記憶體管理 陣列一旦被創建,長度就不能被改變,同時也是一塊連續的記憶體 讓 Array 擴充的方法: 建立一個新的並將舊的資料放進去 通常會根據 2 倍逐漸擴大 public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; System.out.println(arr.length); // 5
     Like  Bookmark
  • 函式定義 把會重複的動作合併,把方法定義出來 函示在物件導向中隸屬於某一類別(Class): 如下方的 MainClass,故稱為成員函式(member function),又稱為方法(method) 通常一個功能由多種函式組成 public class MainClass { public static viod main(String[] args) { Scanner scan = new Scanner(System.in); int a; a = scan.nextInt();
     Like  Bookmark