通过滑动窗口实现,但需要注意是窗口内不能出现重复字符
jsfunc lengthOfLongestSubstring(s string) int {
runes := []rune(s) // 支持 Unicode(中文等)
lastIndex := make(map[rune]int)
left := 0
maxLen := 0
for right, ch := range runes {
if prev, exists := lastIndex[ch]; exists && prev >= left {
left = prev + 1
}
lastIndex[ch] = right
if currLen := right - left + 1; currLen > maxLen {
maxLen = currLen
}
}
return maxLen
}
将文本映射到一个能够表达语义信息的向量空间中,使语义相似的文本在向量空间中的距离更近。
仓储模式的核心思想是解耦业务与底层存储。业务层通过接口与数据层交互,实现“铁打的业务,流水的技术”。
在 Go 项目中,通常结合 internal 目录限制外部非法引入,结构如下:
textmy-project/ ├── domain/ # 【领域层】最核心,完全纯粹,无外部技术/数据库依赖 │ ├── user.go # 用户实体、业务方法、以及 UserRepository 接口 │ └── errors.go # 领域层的通用业务错误(如 ErrUserNotFound) │ ├── internal/ # 【实现层】私有封装,防依赖污染,允许大胆重构 │ ├── repository/ # 仓储实现层 │ │ └── mysql_user.go # 实现 domain.UserRepository 接口,内含 GORM/SQL 逻辑 │ │ │ ├── service/ # 业务逻辑/应用层 │ │ └── user_service.go # 组合各种 domain 接口完成具体的业务流水线 │ │ │ └── delivery/http/ # 传输层/接口层(如 Gin 路由、HTTP Handler) │ └── handler.go │ └── main.go # 【入口】组装全局依赖(依赖注入),启动服务
Agent 不可能完全避免报错,关键在于:
让错误可恢复(Recoverable)、可观测(Observable)、可控制(Controllable)。
标准处理流程:
text报错发生 ↓ 识别错误类型 ↓ 判断是否可重试 ↓ 自动修复或降级 ↓ 记录日志 ↓ 必要时转人工


主要负责地图 商业化POI 数据清洗,平台整体是一个多阶段的数据处理流水线。数据以文件形式在各个处理环节之间流转,每一步都会读取上一步的结果文件进行处理,并生成新的结果文件。整个流程包括数据请求、结构解析、diff判断、策略判重、人工审核以及数据上线等
性能优化
gaiaDB优势:
索引优化
| type | 含义 | 好坏 |
|---|---|---|
| const | 主键唯一查询 | ⭐⭐⭐⭐⭐ |
| eq_ref | 主键关联 | ⭐⭐⭐⭐⭐ |
| ref | 普通索引 | ⭐⭐⭐⭐ |
| range | 范围查询 | ⭐⭐⭐ |
| index | 全索引扫描 | ⭐⭐ |
| ALL | 全表扫描 | ❌ |
sql优化