Skip to content

Commit e3d4a11

Browse files
committed
feat: init
1 parent 6196746 commit e3d4a11

File tree

4 files changed

+110
-29
lines changed

4 files changed

+110
-29
lines changed

01语言/1go/16channel.md

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,49 @@
77
## 底层结构
88
```go
99
type hchan struct {
10-
// chan 里元素数量
11-
qcount uint
12-
// chan 底层循环数组的长度
13-
dataqsiz uint
14-
// 指向底层循环数组的指针
15-
// 只针对有缓冲的 channel
16-
buf unsafe.Pointer
17-
// chan 中元素大小
18-
elemsize uint16
19-
// chan 是否被关闭的标志
20-
closed uint32
21-
// chan 中元素类型
22-
elemtype *_type // element type
23-
// 已发送元素在循环数组中的索引
24-
sendx uint // send index
25-
// 已接收元素在循环数组中的索引
26-
recvx uint // receive index
27-
// 等待接收的 goroutine 队列
28-
recvq waitq // list of recv waiters
29-
// 等待发送的 goroutine 队列
30-
sendq waitq // list of send waiters
31-
// 保护 hchan 中所有字段
32-
lock mutex
10+
qcount uint // 当前队列中元素数量
11+
dataqsiz uint // 缓冲区大小(容量)
12+
buf unsafe.Pointer // 指向环形缓冲区的指针
13+
elemsize uint16 // 元素类型大小
14+
closed uint32 // 关闭标记(0-未关闭,1-已关闭)
15+
sendx uint // 发送索引(缓冲区位置)
16+
recvx uint // 接收索引(缓冲区位置)
17+
recvq waitq // 接收等待队列(sudog 链表)
18+
sendq waitq // 发送等待队列(sudog 链表)
19+
lock mutex // 互斥锁(保护并发操作)
3320
}
3421
```
3522

23+
# 发送与接收流程
24+
25+
## 加锁
26+
- 操作前获取 `hchan.lock` 互斥锁。
27+
28+
## 快速路径
29+
-**发送**:缓冲区未满时直接写入 `buf`,更新索引。
30+
-**接收**:缓冲区非空时直接读取 `buf`,更新索引。
31+
32+
## 阻塞路径
33+
-**发送阻塞**:缓冲区满时,Goroutine 封装为 `sudog` 加入 `sendq` 队列,并进入等待状态。
34+
-**接收阻塞**:缓冲区空时,Goroutine 封装为 `sudog` 加入 `recvq` 队列,并进入等待状态。
35+
36+
## 唤醒机制
37+
- 当对端操作完成(如接收方读取数据),检查等待队列并唤醒对应的 Goroutine。
38+
39+
---
40+
41+
## 关闭
42+
43+
## 关闭标记
44+
- 设置 `hchan.closed = 1`
45+
46+
## 唤醒所有等待的 Goroutine
47+
-**接收方**被唤醒后读取剩余数据,后续返回零值和 `false`
48+
-**发送方**被唤醒后触发 panic(向已关闭 Channel 发送数据)。
49+
3650
#### 通道死锁
3751

3852
- 当无缓存通道,不具备同时写入和读取就绪的情况下,写入数据或者读取数据
3953
- 全部取出的管道,再取会出现死锁
4054
- 已经塞满的管道,在塞也会死锁
55+
- 重复关闭

01语言/1go/17interface.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ iface 和 eface 都是 Go 中描述接口的底层结构体,区别在于 iface
66
## iface
77
```go
88
type iface struct {
9-
tab *itab
10-
data unsafe.Pointer
9+
tab *itab // 接口类型和方法表
10+
data unsafe.Pointer // 指向实际数据的指针
1111
}
1212
type itab struct {
13-
inter *interfacetype
14-
_type *_type
13+
inter *interfacetype // 接口的类型信息
14+
_type *_type // 动态类型(具体类型的元信息)
1515
link *itab
16-
hash uint32 // copy of _type.hash. Used for type switches.
16+
hash uint32 // 类型哈希值(用于类型断言)
1717
bad bool // type does not implement interface
1818
inhash bool // has this itab been added to hash?
1919
unused [2]byte
20-
fun [1]uintptr // variable sized
20+
fun [1]uintptr // 方法地址数组(动态派发入口)
2121
}
2222
```
2323
- iface包含两个字段:tab 是接口表指针,指向类型信息;data 是数据指针,则指向具体的数据。它们分别被称为动态类型和动态值。而接口值包括动态类型和动态值。

25AI应用/医疗/README.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# 医疗AI
2+
3+
## 如何基于大模型构建一个医疗AI
4+
- 医学知识库构建
5+
- 大模型训练与微调
6+
- ​基座模型选择:
7+
- ​中文场景:DeepSeek-67B(医疗语料增强版)
8+
- ​英文场景:PubMedGPT 或 BioMedLM
9+
- 训练策略:
10+
- DAPT:领域自适应预训练
11+
- SFT:监督微调
12+
- 诊断推理引擎
13+
- ​多阶段推理:
14+
- ​症状编码:将患者主诉映射到SNOMED CT标准术语
15+
- ​贝叶斯网络:计算疾病先验概率(基于流行病学数据)
16+
- ​大模型推理:生成鉴别诊断列表
17+
- ​决策验证:对比UpToDate最新指南
18+
- ​置信度控制:
19+
- <0.8:建议做什么检查。
20+
```mermaid
21+
graph TD
22+
A[患者输入] --> B(症状解析模块)
23+
B --> C{是否需要追问}
24+
C -->|是| D[智能追问引擎]
25+
C -->|否| E(医学知识检索)
26+
E --> F[诊断推理引擎]
27+
F --> G[鉴别诊断生成]
28+
G --> H[输出诊断建议]
29+
H --> I[风险预警与转诊建议]
30+
```
31+
32+
## 问诊系统步骤
33+
1. 症状解析
34+
2. 动态追问
35+
3. 检索增强
36+
4. 生成诊断
37+
5. 输出格式化
38+
- 安全护栏
39+
40+
## 本地知识库
41+
42+
- [ragflow](https://github.com/infiniflow/ragflow)
43+
44+
RAG(检索增强生成)引擎。它的作用是可以让用户创建自有知识库,根据设定的参数对知识库中的文件进行切块处理,用户向大模型提问时,RAGFlow先查找自有知识库中的切块内容,接着把查找到的知识库数据输入到对话大模型中再生成答案输出。
45+
46+
47+
## Agent
48+
传统大模型像“百科全书式学者”,只能根据输入生成文本;而 Agent 更像“具备执行能力的助手”,能拆解任务、调用工具(如搜索、计算、写代码)并迭代优化结果。
49+
- ​关键能力:
50+
- ​任务分解:将复杂问题拆解为可执行的子任务(如“订机票→查天气→推荐行李”)。
51+
- ​工具调用:使用外部 API、数据库、代码解释器等扩展能力边界。
52+
- ​记忆与反思:保留历史交互记录,通过自我纠错提升表现。
53+
- 代表框架与工具:
54+
- ​AutoGPT:开源自主 Agent,可联网搜索、读写文件、持续迭代任务。
55+
- ​LangChain Agent:支持自定义工具链(如 Wikipedia + Python REPL)。
56+
- ​MetaGPT:多角色协作 Agent,模拟软件公司工作流程(产品经理→工程师→测试员)。
57+
- ​OpenAI API Function Calling:通过函数描述让模型自主选择调用工具。
58+
59+
## ui
60+
-[open-webui](https://github.com/open-webui/open-webui/pkgs/container/open-webui)

25AI应用/框架/模型蒸馏.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# 模型蒸馏
2+
3+
## 方式
4+
- 数据蒸馏:大模型(老师)生成Q&A,来SFT小模型。
5+
- Logits蒸馏:学生模型被训练以模仿教师的 logits,而不仅仅是其最终预测结果,从而保留了教师模型更多的信息。
6+
- 特征蒸馏:蒸馏教师模型的中间层。

0 commit comments

Comments
 (0)