Skip to content

Commit

Permalink
update link chapter
Browse files Browse the repository at this point in the history
  • Loading branch information
quocanh1897 committed Sep 17, 2019
1 parent ee58774 commit ff7736f
Show file tree
Hide file tree
Showing 47 changed files with 253 additions and 701 deletions.
8 changes: 7 additions & 1 deletion ch1-basic/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,10 @@ Trong khi học, hãy cố gắng giải quyết một số vấn đề nhỏ v
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch1-01-genesis.md">Phần 1.1 &gt</a> </span>
</div>
</div>


## Liên kết
* Phần tiếp theo: []()
* Phần trước: []()
* [Mục lục](../SUMMARY.md)
22 changes: 17 additions & 5 deletions ch1-basic/ch1-01-genesis.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,20 @@ Hello World
```

<div style="display: flex; justify-content: space-around;">
<span> <a href="./README.md">&lt Chương 1</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch1-02-hello-revolution.md">Phần 1.2 &gt</a> </span>
</div>
<div>
<a href="./README.md">&lt Chương 1</a>
</div>
<div>
<a href="../SUMMARY.md"> Mục lục</a>
</div>
<div>
<a href="./ch1-02-hello-revolution.md">Phần 1.2 &gt</a>
</div>
</div>

## Liên kết
* Phần tiếp theo: [Sự tiến hóa của "Hello World"
](./ch1-02-hello-revolution.md)
* Phần trước: [Chương 1](./README.md)
* [Mục lục](../SUMMARY.md)

12 changes: 6 additions & 6 deletions ch1-basic/ch1-02-hello-revolution.md
Original file line number Diff line number Diff line change
Expand Up @@ -361,9 +361,9 @@ func main() {
Lúc này, Go cuối cùng đã hoàn thành việc chuyển đổi từ ngôn ngữ C của kỷ nguyên đơn lõi sang một ngôn ngữ lập trình đa dụng của môi trường đa lõi trong kỷ nguyên Internet thế kỷ 21.


<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch1-01-genesis.md">&lt Phần 1.1</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch1-03-array-string-and-slice.md">Phần 1.3 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Array, strings và slices
](./ch1-03-array-string-and-slice.md)
* Phần trước: [Nguồn gốc của ngôn ngữ Go
](./ch1-01-genesis.md)
* [Mục lục](../SUMMARY.md)
12 changes: 6 additions & 6 deletions ch1-basic/ch1-03-array-string-and-slice.md
Original file line number Diff line number Diff line change
Expand Up @@ -477,9 +477,9 @@ a[len(a)-1] = nil
a = a[:len(a)-1]
```

<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch1-02-hello-revolution.md">&lt Phần 1.2</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch1-04-func-method-interface.md">Phần 1.4 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Functions, Methods và Interfaces
](./ch1-04-func-method-interface.md)
* Phần trước: [Sự tiến hóa của "Hello World"
](./ch1-02-hello-revolution.md)
* [Mục lục](../SUMMARY.md)
12 changes: 6 additions & 6 deletions ch1-basic/ch1-04-func-method-interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -562,9 +562,9 @@ Việc khởi tạo và thực thi chương trình Go luôn bắt đầu từ h

Cần lưu ý rằng trước khi hàm nào khác được thực thi thì tất cả code đều chạy trong cùng một Goroutine `main.main`, đây là thread chính của chương trình. Do đó, nếu một Goroutine khởi chạy trong hàm `main.main` thì nó chỉ có thể được thực thi sau khi vào chương trình đã thực thi xong `init`.

<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch1-03-array-string-and-slice.md">&lt Phần 1.3</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch1-05-concurrency-parallelism.md">Phần 1.5 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Mô hình lập trình đồng thời và lập trình song song
](./ch1-05-concurrency-parallelism.md)
* Phần trước: [Array, strings và slices
](./ch1-03-array-string-and-slice.md)
* [Mục lục](../SUMMARY.md)
12 changes: 6 additions & 6 deletions ch1-basic/ch1-05-concurrency-parallelism.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,9 @@ func main() {

Ở phần tiếp theo chúng ta sẽ đi tới những ví dụ phức tạp hơn như cách xử lý race-condition trong Golang, sử dụng channel để chặn các goroutine,...

<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch1-04-func-method-interface.md">&lt Phần 1.4</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch1-06-common-concurrency-mode.md">Phần 1.6 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Mô hình thực thi đồng thời
](./ch1-06-common-concurrency-mode.md)
* Phần trước: [Functions, Methods và Interfaces
](./ch1-04-func-method-interface.md)
* [Mục lục](../SUMMARY.md)
10 changes: 4 additions & 6 deletions ch1-basic/ch1-06-common-concurrency-mode.md
Original file line number Diff line number Diff line change
Expand Up @@ -859,9 +859,7 @@ Khi hàm `main` kết thúc hoạt động, nó được thông báo bằng lệ

Concurrency là một chủ đề rất lớn, và ở đây chúng tôi chỉ đưa ra một vài ví dụ về lập trình concurrency rất cơ bản. Tài liệu chính thức cũng có rất nhiều cuộc thảo luận về lập trình concurrency, có khá nhiều cuốn sách thảo luận cụ thể về lập trình concurrency trong Golang. Độc giả có thể tham khảo các tài liệu liên quan theo nhu cầu của mình.

<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch1-05-concurrency-parallelism.md">&lt Phần 1.5</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch1-07-error-and-panic.md">Phần 1.7 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Error và Exceptions](./ch1-07-error-and-panic.md)
* Phần trước: [Mô hình lập trình đồng thời và lập trình song song](./ch1-05-concurrency-parallelism.md)
* [Mục lục](../SUMMARY.md)
11 changes: 5 additions & 6 deletions ch1-basic/ch1-07-error-and-panic.md
Original file line number Diff line number Diff line change
Expand Up @@ -432,9 +432,8 @@ func main {

Nhưng làm như vậy sẽ đi ngược lại với triết lý lập trình đơn giản và dễ hiểu của Go.

<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch1-06-common-concurrency-mode.md">&lt Phần 1.6</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="../ch2-cgo/README.md">Chương 2 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Chương 2](../ch2-cgo/README.md)
* Phần trước: [Mô hình thực thi đồng thời
](./ch1-06-common-concurrency-mode.md)
* [Mục lục](../SUMMARY.md)
10 changes: 4 additions & 6 deletions ch2-cgo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@ Tuy nhiên ta cũng không nên lạm dụng CGO vì vấn đề hiệu suất,
</div>
<br/>

<div style="display: flex; justify-content: space-around;">
<span> <a href="../ch1-basic/ch1-07-error-and-panic.md">&lt Phần 1.7</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch2-01-quick-start.md">Phần 2.1 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Quick Start](./ch2-01-quick-start.md)
* Phần trước: [Chương 1](../ch1-basic/README.md)
* [Mục lục](../SUMMARY.md)
11 changes: 5 additions & 6 deletions ch2-cgo/ch2-01-quick-start.md
Original file line number Diff line number Diff line change
Expand Up @@ -273,9 +273,8 @@ func SayHello(s string) {

Có vẻ như tất cả đều được viết bằng Go, nhưng việc triển khai từ hàm `main()` của ngôn ngữ Go đến phiên bản ngôn ngữ C đã tự động tạo ra hàm `SayHello`, rồi cuối cùng trở lại môi trường ngôn ngữ Go.

<div style="display: flex; justify-content: space-around;">
<span> <a href="./README.md">&lt Mở đầu</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch2-02-cgo-foundation.md">Phần 2.2 &gt</a> </span>
</div>

## Liên kết
* Phần tiếp theo: [CGO Foundation](./ch2-02-cgo-foundation.md)
* Phần trước: [Chương 1](../ch1-basic/README.md)
* [Mục lục](../SUMMARY.md)
12 changes: 6 additions & 6 deletions ch2-cgo/ch2-02-cgo-foundation.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,9 @@ Ví dụ các build flag sau chỉ ra rằng việc build chỉ được thực
Trong đó, dấu phẩy (`,`) nghĩa là ****. Khoảng trắng (` `) nghĩa là **hoặc**.


<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch2-01-quick-start.md">&lt Phần 2.1</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch2-03-type-conversion.md">Phần 2.3 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Chuyển đổi kiểu dữ liệu
](./ch2-03-type-conversion.md)
* Phần trước: [Quick Start
](./ch2-01-quick-start.md)
* [Mục lục](../SUMMARY.md)
12 changes: 6 additions & 6 deletions ch2-cgo/ch2-03-type-conversion.md
Original file line number Diff line number Diff line change
Expand Up @@ -478,9 +478,9 @@ Sau đây cho thấy luồng cụ thể của thao tác chuyển đổi giữa c

Đối với các tính năng thường được sử dụng trong CGO, tác giả package [github.com/chai2010/cgo](https://github.com/chai2010/cgo), đã cung cấp các chức năng chuyển đổi cơ bản. Để biết thêm chi tiết hãy tham khảo code hiện thực.

<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch2-02-cgo-foundation.md">&lt Phần 2.2</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch2-04-function-call.md">Phần 2.4 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Lời gọi hàm
](./ch2-04-function-call.md)
* Phần trước: [Chuyển đổi kiểu dữ liệu
](./ch2-03-type-conversion.md)
* [Mục lục](../SUMMARY.md)
12 changes: 6 additions & 6 deletions ch2-cgo/ch2-04-function-call.md
Original file line number Diff line number Diff line change
Expand Up @@ -174,9 +174,9 @@ void foo() {

Khi export interface của ngôn ngữ C, ta cần đảm bảo rằng các tham số hàm và kiểu giá trị trả về là kiểu "thân thiện" với C (xem lại [2.3](./ch2-03-type-conversion.md)) đồng thời giá trị trả về không được trực tiếp hoặc gián tiếp chứa con trỏ vào không gian bộ nhớ ngôn ngữ Go.

<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch2-03-type-conversion.md">&lt Phần 2.3</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch2-05-internal-mechanisms.md">Phần 2.5 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Cơ chế bên trong CGO
](./ch2-05-internal-mechanisms.md)
* Phần trước: [Chuyển đổi kiểu dữ liệu
](./ch2-03-type-conversion.md)
* [Mục lục](../SUMMARY.md)
13 changes: 6 additions & 7 deletions ch2-cgo/ch2-05-internal-mechanisms.md
Original file line number Diff line number Diff line change
Expand Up @@ -265,10 +265,9 @@ Toàn bộ biểu đồ luồng cuộc gọi như sau:

Trong đó, hàm `runtime.cgocallback` là chìa khóa để thực hiện cuộc gọi vượt ranh giới từ ngôn ngữ C sang Go. Chi tiết có thể được tìm thấy trong hiện thực [runtime.cgocallback.go](https://github.com/golang/go/blob/master/src/runtime/cgocallback.go)


<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch2-04-function-call.md">&lt Phần 2.4</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch2-06-qsort.md">Phần 2.6 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Tạo ra package `qsort`
](./ch2-06-qsort.md)
* Phần trước: [Lời gọi hàm
](./ch2-04-function-call.md)
* [Mục lục](../SUMMARY.md)
12 changes: 6 additions & 6 deletions ch2-cgo/ch2-06-qsort.md
Original file line number Diff line number Diff line change
Expand Up @@ -356,9 +356,9 @@ func main() {

Để tránh thông tin ngữ cảnh của mảng được sắp xếp là `go_qsort_compare_info` bị sửa đổi trong quá trình sắp xếp, chúng tôi đã thực hiện lock global. Do đó, phiên bản hiện tại của hàm `qsort.Slice` không thể được thực thi đồng thời. Bạn đọc có thể thử cải tiến giới hạn này.

<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch2-05-internal-mechanisms.md">&lt Phần 2.5</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch2-07-cgo-mem.md">Phần 2.7 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Mô hình bộ nhớ CGO
](./ch2-07-cgo-mem.md)
* Phần trước: [Cơ chế bên trong CGO
](./ch2-05-internal-mechanisms.md)
* [Mục lục](../SUMMARY.md)
12 changes: 6 additions & 6 deletions ch2-cgo/ch2-07-cgo-mem.md
Original file line number Diff line number Diff line change
Expand Up @@ -360,9 +360,9 @@ Sau khi tắt `cgocheck` và chạy đoạn code trên, exception sẽ xuất h
Để biết mô tả chi tiết về các hàm CGO rumtime pointer detection hãy tham khảo tài liệu chính thức của Golang: [package runtime - GoDoc](https://godoc.org/runtime#hdr-Environment_Variables).


<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch2-06-qsort.md">&lt Phần 2.6</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch2-08-c-class.md">Phần 2.8 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [C++ Class Packaging
](./ch2-08-c-class.md)
* Phần trước: [Tạo ra package qsort
](./ch2-06-qsort.md)
* [Mục lục](../SUMMARY.md)
11 changes: 5 additions & 6 deletions ch2-cgo/ch2-08-c-class.md
Original file line number Diff line number Diff line change
Expand Up @@ -520,9 +520,8 @@ Bằng cách này, chúng ta có thể xây dựng một đối tượng `Int` b

Do đó, phương thức C++ cũng có thể được sử dụng cho các kiểu không phải class. C++ cho các hàm thành phần thông thường cũng có thể được liên kết với các kiểu. Chỉ có các phương thức ảo thuần túy được ràng buộc với đối tượng và đó là interface.

<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch2-07-cgo-mem.md">&lt Phần 2.7</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch2-09-static-shared-lib.md">Phần 2.9 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Thư viện tĩnh và động
](./ch2-09-static-shared-lib.md)
* Phần trước: [Mô hình bộ nhớ CGO](./ch2-07-cgo-mem.md)
* [Mục lục](../SUMMARY.md)
12 changes: 6 additions & 6 deletions ch2-cgo/ch2-09-static-shared-lib.md
Original file line number Diff line number Diff line change
Expand Up @@ -236,9 +236,9 @@ $ gcc -o a.out _test_main.c number.so
$ ./a.out
```

<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch2-08-c-class.md">&lt Phần 2.8</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch2-10-link.md">Phần 2.10 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Biên dịch và liên kết các tham số
](./ch2-10-link.md)
* Phần trước: [C++ Class Packaging
](./ch2-08-c-class.md)
* [Mục lục](../SUMMARY.md)
10 changes: 4 additions & 6 deletions ch2-cgo/ch2-10-link.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,7 @@ Sẽ có một số lý do cho việc hỏng chuỗi get, đây là một số l
* Phụ thuộc vào `custom pkg-config`: yêu cầu một số thiết lập thêm.
* Phụ thuộc vào `swig`: user chưa cài đặt `swig`, hoặc phiên bản không tương thích.

<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch2-09-static-shared-lib.md">&lt Phần 2.9</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="./ch2-11-ext.md">Phần 2.11 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Lời nói thêm](./ch2-11-ext.md)
* Phần trước: [Thư viện tĩnh và động](./ch2-09-static-shared-lib.md)
* [Mục lục](../SUMMARY.md)
13 changes: 4 additions & 9 deletions ch2-cgo/ch2-11-ext.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,7 @@ Thông qua CGO, bạn có thể kế thừa những phần mềm viết bằng C

Bây giờ, các phần mềm chính thống thường được viết bởi ngôn ngữ C/C++. Sẽ rất nặng nề để có thể thay thế tòan bộ chúng bằng Go, do đó việc học cách chuyển đổi C/C++ sang Go bằng CGO là rất đáng cho dù bạn có là một nhà lập trình viên Go chuyên nghiệp.

[Tiếp theo](../ch3-rpc/ch3-01-rpc-intro.md)


<div style="display: flex; justify-content: space-around;">
<span> <a href="./ch2-10-link.md">&lt Phần 2.10</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="../ch3-rpc/README.md">Chương 3 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Chương 3](../ch3-rpc/README.md)
* Phần trước: [Biên dịch và liên kết các tham số](./ch2-10-link.md)
* [Mục lục](../SUMMARY.md)
9 changes: 4 additions & 5 deletions ch3-rpc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@
Remote Procedure Call là kỹ thuật cho phép chúng ta gọi hàm từ một process khác nằm cùng một máy hoặc ở hai máy tính khác nhau. Mục tiêu chính của phương pháp này là giúp lời gọi RPC tương tự như lời gọi thủ tục thông thường và ẩn đi phần xử lý kết nối mạng phức tạp. Chương này sẽ trình bày về cách sử dụng RPC, thiết kế RPC service, và hệ sinh thái RPC được xây dựng dựa trên nền tảng Protobuf của Google.

<div style="display: flex; justify-content: space-around;">
<span> <a href="../ch2-cgo/ch2-11-ext.md">&lt Phần 2.11</a> </span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="ch3-01-rpc-go.md">Phần 3.1 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Giới thiệu về RPC](./ch3-01-rpc-go.md)
* Phần trước: [Chương 2](../ch2-cgo/README.md)
* [Mục lục](../SUMMARY.md)
5 changes: 5 additions & 0 deletions ch3-rpc/ch3-01-rpc-go.md
Original file line number Diff line number Diff line change
Expand Up @@ -349,3 +349,8 @@ func doClientWork(clientChan <-chan *rpc.Client) {
fmt.Println(reply)
}
```

## Liên kết
* Phần tiếp theo: [Protobuf](./ch3-02-pb-intro.md)
* Phần trước: [Chương 2](../ch2-cgo/README.md)
* [Mục lục](../SUMMARY.md)
10 changes: 4 additions & 6 deletions ch3-rpc/ch3-02-pb-intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -389,9 +389,7 @@ func (p *{{$root.ServiceName}}Client) {{$m.MethodName}}(

Khi plugin mới của protoc được hoàn thành, mã nguồn có thể được sinh ra mỗi khi RPC service thay đổi trong `hello.proto` file. Chúng ta có thể điều chỉnh hoặc thêm nội dung của mã nguồn được sinh ra bằng việc cập nhật template plugin.

<div style="display: flex; justify-content: space-around;">
<span> <a href="ch3-01-rpc-go.md">&lt Phần 3.1</a>
</span>
<span><a href="../SUMMARY.md"> Mục lục</a> </span>
<span> <a href="ch3-03-grpc.md">Phần 3.3 &gt</a> </span>
</div>
## Liên kết
* Phần tiếp theo: [Làm quen với gRPC](./ch3-03-grpc.md)
* Phần trước: [Giới thiệu về RPC](./ch3-01-rpc-go.md)
* [Mục lục](../SUMMARY.md)
Loading

0 comments on commit ff7736f

Please sign in to comment.