4 月 18 2010
C# 的 ==、Equals 與 JAVA 的 ==、equals
剛感到好奇,各在 C# 與 JAVA 寫測試程式。
- C#:
Object myObj1 = 1; Object myObj2 = myObj1; Object myObj3 = 1; Console.WriteLine("myObj2.Equals(myObj1) = " + myObj2.Equals(myObj1)); Console.WriteLine("myObj3.Equals(myObj1) = " + myObj3.Equals(myObj1)); Console.WriteLine("(myObj2 == myObj1) = " + (myObj2 == myObj1)); Console.WriteLine("(myObj3 == myObj1) = " + (myObj3 == myObj1));
結果:
myObj2.Equals(myObj1) = True myObj3.Equals(myObj1) = True (myObj2 == myObj1) = True (myObj3 == myObj1) = False
- JAVA:
Object myObj1 = 1; Object myObj2 = myObj1; Object myObj3 = 1; System.out.println("myObj2.equals(myObj1) = " + myObj2.equals(myObj1)); System.out.println("myObj3.equals(myObj1) = " + myObj3.equals(myObj1)); System.out.println("(myObj2 == myObj1) = " + (myObj2 == myObj1)); System.out.println("(myObj3 == myObj1) = " + (myObj3 == myObj1));
結果:
myObj2.equals(myObj1) = true myObj3.equals(myObj1) = true (myObj2 == myObj1) = true (myObj3 == myObj1) = true
7 月 31 2020
MySQL 8.0.20 升級後記(踩 & 拆雷記)
續前一篇,這陣子除了表訂工作之外,就是觀察 MySQL 升級後有哪些地雷被引爆,接著開始救傷。
一顆跟 Java/JDBC 有關,錯誤訊息如下圖;原因是 MySQL 8 沒有 query_cache_size 等等的參數,而解決方式是更新 MySQL Connector/J。
另外一顆的成因/故事就比較長了…
MySQL 8 之前的版本,我們習慣把 character_set_server 設為 utf8 ,而 collation_server 設為 utf8_general_ci ;升版前看到這兩個變數預設值都換掉了,就很開心的拿掉… 於是部份(年紀比較大)的 PHP web server 就爆了,錯誤訊息如下圖。
初步研判以為是 PHP 認不得 utf8mb4 ,仔細追查後發現真因是「認不得 utf8mb4_0900_ai_ci」,解決方式是把 collation_server 設為 utf8mb4_general_ci 。
附帶一提, PHP 5.3 的 ext/mysqlnd 沒這問題,僅 5.4 ~ 5.6 受影響,而 PHP 7 之後都支援 UCA Ver.9 的 collations …
By Joe Horn • Database, JAVA, PHP 0 • Tags: charset, collation, JAVA, JDBC, MySQL, mysqlnd, PHP, uca