มาต่อกันที่ part 2 นะครับ part นี้ จะเน้นไปที่ class และ object ต่างๆใน js, java, framework spring boot
- List vs Arraylist (java)
list ถือเป็น interace extends collection ส่วน arraylist ที่เป็น class ใน collection ที่หยิบความสามารถของ list มาต่อยอด (implements) โดยเพิ่ม ความสามารถในการเพิ่มขนาดข้อมูลเข้ามา เรียกสรุปๆว่า nickname ของ arraylist คือ dynamic array that contains objects
source : https://techdifferences.com/difference-between-list-and-arraylist-in-java.html - Primitive type vs Reference type (java)
“reference type” ก็คือการอ้างอิง หรือคือ เป็นเพียง pointer ชี้ไปที่ตำแหน่งของข้อมูลนั้นๆ แตกต่างจาก “primitive type” ที่ ส่งเป็น value (pass by value) โดย primitive มีเพียงแค่ 8 ตัวเท่านั้น คือ boolean byte short char int long float double นอกเหนือจากนั้นจะเป็น reference type ทั้งนั้น เช่น array object String(เป็น object ที่ดึง char มาใช้)
ตัวอย่าง(js) let a = [1,2,3]; let a =b; console.log(b); //output [1,2,3]
source : https://stackoverflow.com/questions/8790809/whats-the-difference-between-primitive-and-reference-types
source : https://javarevisited.blogspot.com/2015/09/difference-between-primitive-and-reference-variable-java.html <- อันนี้รูปเดียวจบ - HashSet & HashMap
HashSet คือ รูปแบบชุดข้อมูลที่มีไม่มีลำดับข้อมูล และไม่สามารถเก็บข้อมูลซ้ำกันได้ หากเพิ่มข้อมูลที่จัดเก็บอยู่แล้ว จะทำการเก็บข้อมูลทับข้อมูลเดิม
HashMap คือ ชุดข้อมูลที่ใช้การจัดเก็บข้อมูลในรูปแบบ Key กับ Value โดนที่ Key นั้นไม่สามารถเก็บข้อมูลซ้ำกันได้ แต่ Value สามารถเก็บข้อมูลซ้ำกันได้ และการจัดเก็บข้อมูลไม่มีการจัดลำดับ เทียบได้กับ Object ของ JavaScript
source : codecamp3 slide - Servlet vs Spring MVC
ทำไมเราจึงควรใช้ Spring เพราะ “Spring ทำทุกสิ่งที่ servlet ทำได้ และใช้เวลา setting ที่เร็วกว่า”
อีกปัจจัยสำคัญคือการใช้ API ที่ Servlet ทำได้แค่ low level api และจัดการกับปัจจัยเหล่านี้ค่อนข้างยุ่งยาก validation, REST, request/response body for JSON, form binding
— Spring เริ่มมีการใช้ xml mapping ในการอ้างอิง เพื่อโยน class ข้ามกันไปมา หรือคือเกิด dependency injection ได้นั้นเอง
— อีกทั้ง spring ยังมีความง่ายในการใช้ mvc ทำให้ scalability ต่อไปได้ง่าย และที่ขาดไม่ได้ที่ทำให้ทุกคนหันมาใช้ spring คือหลักการ Dependency injection (DI) ที่ทำให้การ testing กลายเป็นเรื่องง่าย
— Spring อาศััยหลัก Invertion of Controll (IOC) ในการออกแบบ และกำเนิดซึ่ง IoC Container ที่คอยสร้าง object และ inject ไปให้ object ที่ต้องการใช้งาน รวมทั้งดูแล object ที่สร้างขึ้นดังกล่าวไปตลอดตั้งแต่กำเนิดจนทำลาย ทำให้ coder ไม่ต้องสนใจโครงสร้างมากนัก สนใจแต่เพียง business logic เพียงอย่างเดียว
— Spring สนับสนุน messaging-based application คืออะไร? นั่นคือ ทำให้สามารถสื่อสารกันแบบ aysnchronous message คือข้อความที่ component ใน software ส่งหากันอย่างอิสระ โดยไม่ต้องรอข้อความตอบกลับก่อนจะทำงานอย่างอื่น หรือส่งข้อความอื่นได้ต่อไป
— Spring มี DispatcherServlet ที่ช่วยจัดการให้การทำงานในรูปแบบ mvc นั้นง่ายขึ้นไปอีก ซึ่งอาจถือได้ว่าเป็นหัวใจสำคัญของ Spring web application
source : https://stackoverflow.com/questions/10775522/raw-servlet-vs-spring-mvc , codecamp3 slide - Spring MVC vs Spring Boot
“Spring boot = ready product” แค่สร้าง ก็ใช้งานจริงได้เลย
— Spring Boot ช่วย bypass config ต่างๆ ทำให้ไม่ต้องนั่งเขียน config เยอะแยะแบบ Spring (ตัด xml )
— Spring Boot มี tools เพิ่ม ที่ช่วยให้การทำงานง่ายขึ้นนั้นเช่น spring security - Hashing vs encrypt
การ Hashing ต่างกัน encrypt คือ hashing ไม่สามารถถอดข้อมูลกลับไปได้ แต่ encrypt สามารถแกะรอยกลับไปได้ ดังนั้นการใช้ Hashing จึงช่วยรักษาความปลอดภัยได้ดียิ่งขึ้น
ก็ขอจบ part 2 ไว้เท่านี้นะครับ ส่วน angular, deploy คงต้องโยนไป part ถัดๆไป