Chương 1: Tổng quan về Golang và Angular Chương 2: Phat irién we bsite trén nén tang GoLang va. Angular Chuong 3: Xay dung hé thong Quan by thi dua — khen thong tai truéng Dai hoc Quang Nam KET LUAN TAI LIEU THAM KHAO Phan 2: NOI DUNG NGHIEN CUU CHUONG 1: TONG QUAN VE GOLANG VA ANGULAR 1. Tổng quan về GoLang 1. Giới thiệu GoLang Go là một ngôn ngữ lập trình được thiết kế dựa trên tư duy lập trình hệ thống.
Go được phát triển bởi Robert Griesemer, Rob Pike va Ken Thompson tại Google vào năm 2007. Điểm mạnh của Go là bộ thu gom rác và hỗ trợ lập trình đồng thời (trong tự như đa luồng — multihreading). Go là một ngôn ngữ lập trình đồng bộ, được biên dịch có cú pháp khá cơ bản như C/C++, Java, Pascal. Go được giới thiệu vào năm.
2009 và được sử dụng hầu hết trong các sản phẩm của Google. Người ta thường sử dụng Go cho Backend Application hoặc hệ thống API nâng cao. Trong năm 2019 này, Go sẽ phát triển Go Module giúp cho việc triển khai dự án Go đễ dàng hơn, giảm sự phụ thuộc vào GoPath như trước đây. Trang web chính thức của ngôn ngữ GoLang là http:/golang.
Ngôn ngữ GoLang có một hình thái và ngữ nghĩa lập trình riêng, giúp nó đảm bảo hiệu suất làm việc mà vẫn mang lại những điều thú vị khi ta lập trình với nó. GoLang cũng cung cấp một bộ thư viện chuẩn khá toàn diện, nó cung cấp tất cả các package cốt lõi cần đẻ xây dựng chương trình. Một số đặc điểm của GoLang Các đặc điểm nổi bật của GoLang có thể liệt kê ra gồm có: - Go là ngôn ngữ lập trình biên soạn (compiled language). Phần mềm viết bởi Go cần được biên soạn sử dụng Go compile trước khi có thể chạy được.
- Go có cú pháp trơng tự như C. - Go là ngôn ngữ lập trình kiểu tĩnh (hay static type), cdc biến hoặc dữ liệu trong GoLang sẽ không thay đổi trong suốt chương trình. - GoLang hỗ trợ xử lí đa luồng multi-threadiing thông qua các khái niệm -4- GoRoutine va Channel. - GoLang hễ trợ tính năng quản lí bộ nhớ mạnh mẽ mà C không có.
- GoLang sở hữu một bộ thư viện phong phú mà lập trình viên có thể tận dung. Ngôn ngữ lập trình GoLang đã được ra mắt cộng đồng vào tháng 11/2019 va được sử dụng trong một số hệ thống của gã khổng lẻ công nghệ Google. Ngoài ra GoLang cũng là ngôn ngữ được sử dụng đẻ viết phần mềm nỏi tiếng Docker. Concurrency: \ Scalability: Error Checks: Hình 1.1: Các đặc điểm của Golang 1.
Các tính năng cốt lõi của GoLang Các tính năng của GoLang có thể liệt kê ra như sau: -3- - Cross plaform: Ngôn ngữ Go cũng biên dịch như Java, nhưng không như Java phải cần Java Virtual Machine để thực thi vì Java biên dịch ra Byte code. Go biên dịch ra mã máy (Machine code) nên có thể chạy ngay với hệ điều hành nó biên dịch mà không cần cài đặt gì thêm. Nghĩa là từ máy tính của mình có thể biên dịch ra các chương trình chạy được trên Mac, Windows, Linux sau khi biên dịch, chỉ cần 1 file duy nhất, copy đến hệ điều hành đích là chạy, rất đơn giản! Đây là tính năng ấn tượng nhất, bao gềm cả việc build rất nhanh. - Sử dụng nhiều Core: Ö những năm 90, một trong những thay đổi lớn nhất của phần cứng máy tính đó chính là việc bổ sung thêm các core.
Quad-cores và Octa- cores CPUs giúp nâng cao đáng kế hiệu năng xử lí. Tuy nhiên, các ngôn ngữ được tạo ra vào trước thời điểm đó chỉ chạy trên các máy tính đơn nhân, và chúng được xây dụng không phải chủ đích đẻ chạy trên nhiều nhân của CPU. Nhưng Go thì khác, việc sinh sau đẻ muộn đã tạo ra lợi thế cho nó, phần cứng có thể mở rộng core, khiến cho Go trở thành ngôn ngữ có thể đễ dàng tương thích hon. - tấn đề tương tranh (Concurreney và Goroutine): Concurrency là tính năng, chủ lực của ngôn ngữ lập trình Go đề tận dụng năng lực xử lí của CPU.
Thông thường các ngôn ngữ lập trình khác phải phụ thuộc sự cấp phát tài nguyên của hệ thống điều hành để có thể chạy được concurrency, trong khi đó Go có thể chạy concurrency mà không phụ thuộc hệ điều hành. Khái niệm concurrency gần giếng với thread, các tác vu trong concurrency duoc gọi là goroutine. Trong Go thì việc giao tiếp giữa các goroutine khá đơn giản với channel (kênh), có thể truyền dữ liệu giữa các goroutine với nhau bằng bất cứ loại dữ liệu nào. Nhờ việc sử dụng bộ vi xử lí đa nhân, mỗi goroutine chỉ sử dụng 2KB bộ nhớ, như vậy chúng ta có thể tạo ra hàng triệu goroutine bất kỳ lúc nào.
Goroutine dem lại những lợi ích: + Sử dụng bộ nhớ một cách linh hoạt cho vùng nhớ stack, sẽ tự tăng vùng nhớ khi cần thiết. + Thời gian khởi động của goroutine nhanh hơn so với Thread. + Giao tiếp giữa các goroutine sử dụng channel cực an toàn. + Goroutine va OS Thread khéng tổn tại song song nhau.
Mỗi goroutine có thể chạy đồng thời nhiều threads, chúng có thể ghép vào OS Threads. - Đễ đăng bảo trì: Cú pháp của Go cực kì đơn giản, không có những cú pháp quá phức tạp giếng như các ngôn ngữ khác. Những người phát triển Go đến từ Google, nới có quy mô code-base lớn và hàng nghìn developers cùng làm việc. Vì vay source code phải đơn giản để bất kì developers nào cũng có thé hiểu được và mỗi đoạn code đều hạn chế tối thiểu side-effect.
Điều đó làm cho code có thể bảo trì hoặc nâng cấp một cách dé dang và đơn giản hơn. - Bỏ qua nhiều đặc tính của lập trình OOP: Không có class mà mọi thứ đều được gói vào trong các package. Go chỉ có struct (cấu trúc). Không hễ trợ kế thừa, không có constructor (ham tạo), anotation (chú thích), generics (kiểu dữ liệu không định nghĩa trước) hay exceptions (xử lí ngoại lệ).
Chính vì vậy mà Go trở nên khác biệt so với phần còn lại. Nhìn theo mặt tích cực, nó khiến code trở nên sáng sủa, ngắn gon và dễ hiểu hơn. Ưu điểm và nhược điểm của GoLang a) Un diém: - Tếc độ thực thi nhanh nhờ biên dịch thẳng ra mã máy. - Linh hoạt: Trình compile biên dịch ra mã nhị phân và chạy được trên các nền tảng hệ điều hành khác nhau.
- Khả năng tương thích: Có thể liên kết với các thư viện bên ngoài hoặc thực hiện các lệnh gọi hệ thống. - Hỗ trợ: Go được cài đặt mặc định trong nhiều bản phát hành phổ biến của Linux cũng như nhận được sự hễ trợ tương thích trên nhiều IDE (Visual studio code, Atom, Komodo IDE, GoLand). b) Nhược điểm: - Do kích thước nhỏ gọn nên một số tính năng trong lập trình OOP sẽ không có trong Go. - Kích thước chương trình sau khi đóng gói lớn: Code được biên dịch theo kiểu static theo mặc định.
Các này làm đơn giản hoá quá trình xây dựng và triển khai -7- nhung dan dén chi mét doan code don gian “Hello world!” lai nang dén 1.5MB trén windows 64-bit. - Document page không được trau chuốt như những ngôn ngữ khác. - Quản lí lễi trong GoLang đòi hỏi bạn phải thực hiện kiểm tra lỗi rõ ràng, có thể khiến cho việc xử lí lỗi trở nên khó khăn. Tuy nhiên nếu hiểu được các quản lí lãi trong GoLang thì nó sẽ trở thành ưu điểm vì bạn sẽ có một ứng dụng về tổng thẻ là sạch hơn.
Cài đặt GoLang và yêu cầu hệ thống Cài đặt môi trường GoLang khá đơn giản, thông qua các bước như sau: ~ Bước 1: Cài đặt Go runtime Downloads Aller downloadingu biney we euse suitable for your ssi, please foo the islllalion msvustons Hf you are building for scurce, fallow the souroe instalation instructions ‘See the velsase history for ors info7mat on about Go velsesas Featured downloads Mero: LWincows Apple macOS Linux >>”. mac fut ena F—.124 linux-amdéd tar.2: Các bộ cài đặt của Go trên các nên tảng Tuy cập vào website https://golang.org/dl và chạy file go<version>.msi (32-bit) hodc go<version>.msi (64- bit), tuy vào hệ điều hành bạn đang sử dụng. Bộ cài này rất tiện lợi, nó sẽ tự động config hết mọi thứ cần thiết. - Bước 2: Cài đặt biến môi trường: Click chuột phải vào My computer chọn Properties, chọn tab Advanced và click nút Enviroment Variables.
Tao mét biến mới tên là GoReot với giá trị là CAGo. Sau d6 chon biến PATH có sẵn, thêm vào sau dấu chấm phẩy; cuối dòng đường dẫn sau: CGo\bm Hình 1.3: Thiết lập biến môi trường cho Go ~ Bước 3: Chạy thử 'Vào terminal trên Linux/MacOS hoặc command line trên Windows và gõ lệnh sau: $go version. Néu Go duoc cài đặt day đủ thì nội dung ouput sẽ giống như thé nay: go version go1. Seanad eee Hình 1.4: Kiểm tra tuết lập môi trường Go ~ Bước 4: Viết chương trình đầu tiên với GoLang Hiện nay có rất nhiều IDE hễ trợ cho lập trình Go, trong đó có thể kế đến như Visual Studio Code, Atom, LiteIDE, Wide.
Mét IDE ntra rat manh mé va được tạo ra nhằm cung cấp môi trường làm việc tốt nhất cho Go dé chinh la GoLand — IDE trên nên tảng Intelli7 với tính năng hễ trợ mã hoá, trình gỡ lỗi và thiết bị đầu cuối tích hợp. Ở đây em chọn GoLand làm IDE để lập trình GoLang. Giao diện startup của GoLand: ar ee es ace ae GoLand Version 2019, +E Na Pol 1 Open Project, # Lheecsuktrer Verien Control ~ .eng)2U3IUIL1-AP chất .Jahoang\e_sngìthd 2 ~esktop ere pacssepp seesamareet sả.5: Giao điện Startup phan mém GoLand Chon New Project => sau đó chọn kiểu project là Go Module rồi thiết lập project name,các cầu hình khác ta có thể đẻ mặc định, sau đó nhấn chon Create. lsEten Phøơng: 3adinfsuEzomeDsjzrt 39800 SỬ a2 mm › š % Das nine Pry im we [1Vehdeingmeáe 2 TT © Rev pp Beokxee Bo a Hình 1.6: Tao du Gn GoLang Cấu trúc project của chương trình Go như hình bên.
Trong đó ta để ý đến Extenal Libraries. Đây chính là cơ chế quan li package trong Go. Mễi package chính là một project GoLang được viết sẵn cho những mục đính cụ thể và chúng ta có thể gọi ra để sử dụng khi cần. Nó giống như viée Add reference cdc thu vién dll trong lap trình C#.mod © ill External Libraries li Go Moduler “Hello ~ ØGosDKIrla a archive buns rae bytes end ere es context crypto poses etnies encoding eee fog tent Hình 1.7: Cấu trúc dự án Go Để cài đặt thêm package, trong terminal của GoLand ta dùng lệnh go get <package-name>.
Hầu hết các package của Go đều nằm trên github. Vi du dé cai package gorm (Database ORM cho Go), ta g6 nhu sau: Go get github.