- 博客(232)
- 收藏
- 关注
原创 值传递,* 和 & 的理解,看这个视频,秒懂
https://www.bilibili.com/video/BV1gf4y1r79E?spm_id_from=333.788.videopod.episodes&vd_source=b40175470daf7a25d78487593f19d21f&p=10
2025-11-05 10:27:48
388
原创 read一个file时哪些情况会出现一行末尾没有/n ?
将不完整的行暂存到 `lineBuf` 缓冲区返回空字符串和 EOF,等待文件继续写入,下次读取时,如果读到了完整的行(带 `\n`),就把缓冲区的内容和新读取的内容拼接起来。此时 `ReadString('\n')` 会读到部分内容,但没有换行符结尾。很多文本编辑器或程序可能创建的文件最后一行就是没有 `\n` 结尾的。如果一行特别长,可能会分多次读取,中间部分自然就没有 `\n`。- 会返回已读取的内容(不含 `\n`)- 已经写了部分内容但还没写 `\n`- 同时返回 `io.EOF` 错误。
2025-11-03 20:26:07
162
原创 mysql慢日志分析
为了找到这10行数据,数据库扫描了50万行,这通常意味着该查询没有有效利用索引,是优化的关键点。: 查询由 root 用户在本地 localhost 发起。: 该慢查询发生在2025年10月22日。: 查询最终返回了10行数据给客户端。: 记录了查询执行的Unix时间戳。: 整个查询花费了约5.12秒。: 等待锁定的时间很短。: 具体的SQL语句。
2025-10-23 10:24:27
282
原创 Goroutine 和 Channel
Goroutine 是 Go 语言轻量级的执行线程。你可以将其理解为比操作系统线程更轻量级的“并发执行单元”。成千上万的 Goroutine 可以在一个操作系统线程上复用。使用 go 关键字来启动一个 Goroutine。go func() { // 这是在 Goroutine 中执行的代码 fmt.Println("Hello from a goroutine!
2025-10-22 17:05:35
236
原创 三层限流器
DiskIOLimiter 可能不会触发(因为总字节数不大),但 Collector 会疯狂地把这几万行日志丢给 Parser,导致 Parser 模块的 CPU 使用率瞬间被打满,从而影响到机器上更重要的进程(比如数据库本身)。同时,也可能因为流量过大而被 Kafka 集群拒绝,导致大量发送失败和重试,形成恶性循环。:LineLimiter 不会触发(因为只有一行),Agent 会尝试一次性将这几十兆的内容读入内存,这会瞬间产生大量的磁盘读操作,可能导致数据库的 I/O 延迟飙升,影响在线业务。
2025-10-21 11:18:23
304
原创 python的 `@command` 装饰器
这个设计使用了 **`mando`** 库,它是一个 Python 命令行工具库,可以将 Python 函数自动转换为命令行命令。- 定时任务调度(cron jobs)- CI/CD 流程中的脚本执行。这是一个 CLI 命令行接口设计模式。# 可以这样调用不同的定时任务。- 开发调试时单独运行某个功能。
2025-10-14 11:28:32
187
原创 Ansible
[Ansible](https://www.ansible.com/) 是一个开源的自动化运维工具。- **Playbook** 是 Ansible 的官方术语,指的是用 YAML 编写的自动化脚本文件。- `kubernetes/` 或 `k8s/` - 存放 Kubernetes YAML 文件。- Ansible 的官方文档就是这样称呼这些 `.yaml` 文件的。- `terraform/` - 存放 Terraform 脚本。- `scripts/` - 存放通用脚本。## 为什么这样命名。
2025-10-13 20:39:13
162
原创 李宏毅-Generative AI-第二课
举个例子,让LLM翻译一个ta不知晓的语言 & 网络上也搜索不到,但是此时我们在context窗口中放置这个语言的词典和文章,LLM就可以有一个很好的翻译输出,甚至非常逼近一个学会这门语言的人的翻译能力。所以,llm是可以在context中进行learnning的,但不是train,分清概念,这是暂时的。当然我们要知晓,我们是可以通过在context窗口中放置更多有效信息,来让LLM输出更好。两个概念比较相似,可理解为换种说法。
2025-10-03 19:59:14
238
原创 李宏毅-Generative AI-第一课
以上属于llm内部的工作流程:把刚刚猜出来的token作为新的输入贴在老的输入后面,再交给LLM重复循环这个操作,当然不是死循环操作,可以指定循环次数。可以使用hugging-face的transformers库进行训练这些开源模型。有三种角色:1.system:开发者放的prompt;2.user:用户说的话3.assistant:LLM说的话。但是现在都是文字接龙,并没有达到你问我答的效果,所以要加prompt_template。有结构:由有限的基本单位所构成,基本单位就是 token。
2025-10-03 18:59:13
186
原创 人工智能 (AI) > 机器学习 (ML) > 深度学习 (DL)
深度”(Deep)指的就是这个网络的层数非常多。浅层网络可能只能识别一些简单的特征(比如边缘、颜色块),而深层网络可以将这些简单特征组合起来,识别出更复杂的概念(比如眼睛、鼻子,最终组合成一张人脸)。:在传统的机器学习中,我们常常需要人类专家先手动定义好哪些特征是重要的(比如,要识别猫,专家需要先告诉机器要关注“爪子”、“胡须”等特征)。想象一下,你不想为电脑编写一套固定的、明确的指令(比如“如果看到图片里有尖耳朵和胡须,就判断是猫”),而是希望电脑能自己“学会”如何判断。深度学习是机器学习中的一种。
2025-10-03 12:28:50
555
原创 transformer架构
这确保了在预测第 i 个词时,模型只能依赖 1 到 i-1 的词,从而模拟真实的、从左到右的生成顺序,防止模型在训练时“作弊”偷看答案。:通过将解码器的“提问”(Q)与编码器的“信息库”(K/V)进行匹配,解码器能精准地将注意力聚焦在原文最相关的部分上(例如,在生成 "student" 前,会高度关注原文的“学生”)。:与编码器中的前馈网络类似,它对第二步融合了原文和译文信息的向量,进行一次深度的非线性变换,为最终的单词选择做准备。:对上一步生成的、富含上下文的向量,进行一次独立的、深度的。
2025-10-02 01:02:31
864
原创 Tokenizer 分词策略
这样做既保留了核心语义(token),也捕捉了词缀的含义(-ization 表示名词化),同时比整个单词更常见。:模型无法天然地理解 dog 和 dogs,或者 run 和 running 之间的形态学关联,会将它们视为完全独立的词元。:一个单词会被切分成多个字符,导致输入模型的序列变得非常长,这会显著增加计算负担,并可能超出模型的最大长度限制。:为了覆盖一种语言,需要包含该语言的所有词汇(例如英语超过50万个),这会消耗大量内存和计算资源。:词汇表比基于词的小得多,但每个子词依然携带一定的语义。
2025-10-01 15:33:54
302
原创 为什么LLM会使用到向量这种数学工具?
它是计算机能理解的语言,把抽象的词语概念成了数字。它不是简单编号,而是将词语放在一个巨大的“含义空间”里。一旦概念变成了向量,我们就可以用成熟的线性代数工具(加、减、乘、点积等)来对这些概念进行组合和变换,从而实现类似人类的逻辑推理。
2025-09-28 23:30:34
908
原创 自注意力机制
并行计算,速度极快:它可以同时处理一整句话的所有词,不像老方法那样要排队,大大提升了训练速度,所以我们才能训练出今天如此巨大的模型。全局视野,理解力强:通过自注意力机制,句子中任意两个词之间都可以直接建立联系,不管它们相隔多远。这完美解决了老方法“记性差”的问题。
2025-09-28 23:24:22
752
原创 多线程顺序输出abc
/ 按顺序唤醒下一个线程,(threadId + 1) % 3 实现了 0->1, 1->2, 2->0 的循环。// 等待属于自己的 Condition。// 等待被前一个线程 unpark。// 使用 volatile 保证 state 在多线程间的可见性。// 计算下一个要唤醒的线程的索引。// 通过 Lambda 表达式为每个线程分配不同的任务。// 创建一个单线程的 ExecutorService。// unpark 下一个线程。// 启动第一个线程 A。// 定义打印的总轮数。
2025-09-28 23:05:46
910
原创 频繁 fullGC
FullGC 是 JVM 老年代 或 元空间 内存不足时,由垃圾收集器执行的 “全量垃圾回收”。老年代内存不足:新生代对象晋升老年代,老年代剩余空间无法容纳。元空间内存不足:类加载过多,元空间默认无上限(需手动配置),频繁触发会直接导致系统吞吐量下降、响应延迟飙升,甚至引发服务雪崩。FullGC 特点是。
2025-09-28 12:03:46
190
原创 初识react
也能拥有 state 和处理副作用(如网络请求)等高级功能,是现代 React 开发的首选。Hooks 是特殊的函数(如 useState, useEffect),它们让。子组件不能直接修改父组件的数据,而是通过调用父组件传来的函数来。JSX 并非 HTML,它是一种“语法糖”。通知,由父组件自己更新状态。这使得数据流向清晰、可预测。,这些函数负责创建描述界面的对象(虚拟 DOM)。这种直观的方式,设计好你的各种。然后把它们拼成你想要的网页。:组件自己的内部“记忆”,是。:从父组件传下来的数据,是。
2025-09-25 14:09:36
207
原创 Commander.js 库
你用一种非常简单、清晰的方式告诉 Commander.js 你的程序能做什么:1// 告诉前台,我们的程序叫什么,版本号是多少program.description('一个万能点餐程序')// 定义一个 "pizza" 命令.description('点一份披萨')// 规则1:必须告诉我披萨的类型 (比如 "pepperoni").argument('<type>', '披萨的类型')// 规则2:可以告诉我尺寸,默认是中号。
2025-09-25 01:57:23
289
原创 Zod是干嘛的
/ 这就是我们的“规则手册”username: z.string().min(3), // 字符串,最少3个字符email: z.string().email(), // 字符串,必须是邮箱格式age: z.number().int().gte(18), // 数字,必须是整数,且大于等于18});
2025-09-25 01:37:00
317
原创 IO密集型的线程池的核心参数怎么设置,CPU密集型的线程池的核心参数怎么设置
这里的 "+1" 是为了防止某个线程因偶尔的页错误或其他原因而暂停时,CPU能够有另一个线程可以立即顶上,保证CPU资源不被浪费。这样设置的目的是,当一个线程因为等待IO而阻塞时,CPU可以切换到其他线程继续执行任务,从而提高CPU的利用率。IO密集型任务指的是任务执行过程中,大部分时间都花费在等待IO操作(如网络请求、数据库查询、文件读写)上,CPU的计算时间相对较少,CPU密集型任务,也称为计算密集型任务,指的是任务需要进行大量的计算,CPU会持续高速运转,几乎没有IO等待。
2025-09-18 16:11:25
170
原创 真实场景中,绝大多数使用的隔离级别是 读已提交
不可重复读”和“幻读”在很多业务逻辑中是可以接受的,或者可以通过应用层面的逻辑来规避。例如,一个用户查看商品库存,然后下单,这个过程中库存发生变化是正常的业务现象,不需要在数据库层面强制两次读取结果完全一致。:相比于“可重复读”和“串行化”,它的锁定机制更宽松,通常只在语句执行期间持有必要的锁,而不是整个事务。对于绝大多数的在线事务处理(OLTP)系统,比如电商网站、内容管理系统等,用户通常关心的是获取最新的、已确认的数据。:“读已提交”级别保证一个事务不会读取到另一个事务未提交的数据。
2025-09-16 01:20:51
228
原创 SSE(Server-Sent Events)
SSE 协议基于 HTTP,实现简单,单向,支持重连,在一些场景(打字机模式)优于 websocket 这种全双工,需要http 升级操作的协议。SSE = HTTP 扩展字段 + Keepalive 长连接。SSE 是构建在 HTTP/1.1 协议之上的技术。SSE(是一种基于 HTTP 协议的。,允许服务端主动向客户端发送数据流。
2025-09-15 13:52:17
178
原创 Sping 怎么创建Bean? Bean 的生命周期
3.1 Aware 接口回调(做一些 setBeanName 的事)1.实例化:根据 BeanDefinition 去实例化,存放进第三级缓存。1.解析 bean 的基本信息,生成 BeanDefinition。3.2 BeanPostProcessor 前置处理。3.4 BeanPostProcessor 后置处理。2.依赖注入:进行一些属性的填充和依赖的注入。
2025-09-15 13:40:07
218
原创 怎么定义慢sql,没开慢查询日志,怎么发现慢sql
虽然 EXPLAIN 命令不能直接“发现”慢SQL,但对于你怀疑可能存在性能问题的SQL语句,可以使用 EXPLAIN 来分析其执行计划。这个“慢”是一个相对值,具体阈值的设定会根据不同的业务场景和性能要求而有所不同,可以是0.1秒、0.5秒或者几秒当SQL的执行时长超过这个阈值时,它就被定义为慢查询。slow_query_log_file = /var/log/mysql/slow.log:指定慢查询日志文件的路径和名称。long_query_time = 1:设置慢查询的阈值,单位为秒。
2025-09-09 14:09:18
423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1