Skip to content

Commit e48d3dc

Browse files
committed
feat: init
1 parent 63bb0f0 commit e48d3dc

2 files changed

Lines changed: 23 additions & 7 deletions

File tree

01语言/1go/13协程.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,7 @@ go func() {
281281
```
282282

283283
### 如何避免 Go 语言中的 Goroutine Leak(协程泄漏)
284-
285-
Goroutine 被创建后,由于某些原因无法正常退出,导致它一直存活,占用资源。泄漏的 Goroutine 不会被 GC(垃圾回收)自动回收,因为它们仍然在运行或被其他对象引用。
284+
指 Goroutine 启动后​​永远无法退出​​,导致内存和资源持续占用。
286285
#### 原因
287286
1. goroutine由于channel的读/写端退出而一直阻塞,导致goroutine一直占用资源,而无法退出
288287
2. goroutine进入死循环中,导致资源一直无法释放

01语言/1go/6注意点.md

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -335,11 +335,11 @@ go env -w GONOSUMDB="git.xxx.cn"
335335
336336
### 堆还是栈?
337337
338-
| 特性 | | |
339-
|------------|----------------------------|--------------------------------|
340-
| **分配速度** | 极快(纳秒级) | 较慢(微秒级) |
341-
| **生命周期** | 函数结束时自动释放 | 由GC管理(延迟释放) |
342-
| **适用场景** | 小对象、未逃逸的局部变量 | 大对象、跨作用域引用的变量 |
338+
| 特性 |||
339+
| ------------ | ------------------------ | -------------------------- |
340+
| **分配速度** | 极快(纳秒级) | 较慢(微秒级) |
341+
| **生命周期** | 函数结束时自动释放 | 由GC管理(延迟释放) |
342+
| **适用场景** | 小对象、未逃逸的局部变量 | 大对象、跨作用域引用的变量 |
343343
344344
345345
```go
@@ -365,3 +365,20 @@ go build -gcflags='-m' . 2>&1 //查看
365365
client := &http.Client{Transport:tr}
366366
```
367367
368+
### 切片浅拷贝
369+
```go
370+
// 1.copy方法
371+
a := []int{1, 2, 3, 4}
372+
b := make([]int, len(a)) // 创建等长新切片
373+
copy(b, a) // 全量复制元素到新切片
374+
// 2.append方法,涉及到扩容
375+
b := append([]int(nil), a...) // 将元素追加到新切片
376+
// 3.遍历
377+
```
378+
379+
### 切片深拷贝
380+
1. 结构明确,手动递归
381+
2. JSON 序列化,但效率较低,gob效率高点
382+
3. 使用第三方库,github.com/jinzhu/copier
383+
384+

0 commit comments

Comments
 (0)