博客
分类
标签
归档
关于
博客
分类
标签
归档
关于
Tau的博客
文章
分类
标签
归档
关于
从第一性原理理解分布式训练
从第一性原理理解分布式训练 这篇文章不打算从”DP / TP / PP / ZeRO”这些名词出发,而是反过来:先回到训练这件事的物理与数学约束,再让每一种并行策略和优化技巧”自己长出来”。读完之后,希望你看到任何一种新的并行方案,都能立刻问出一个对的问题——它在解决哪个约束?代价是什么? 一、引子:为什么单卡装不下了?训练一个深度学习模型,本质是在解一个优化问题: $$\theta^{...
2026-05-09
Read More
浅谈Go的GMP模型
为什么需要 GMP?根本问题:如何用少量 OS 线程,高效运行海量并发任务? 操作系统线程很重(栈默认 1-8MB,切换需要内核介入,创建销毁开销大)。但我们想要能轻松启动 百万级并发 的语言。 这逼出了一个核心设计决策:在用户态实现调度。 三个核心实体G(Goroutine)— 任务 用户态”线程”,初始栈仅 2-4KB,可动态增长 本质是一个描述”待执行函数”的结构体 状态:Runn...
2026-05-03
Go
Go
Read More
浅谈Go语言中的Channel
1. 根本问题:并发程序如何安全地共享数据?并发的本质矛盾是:多个执行流(goroutine)需要协作,但同时访问共享内存会导致数据竞争。 解决思路有两条: 共享内存 + 锁:大家都能访问,但要抢锁(mutex) 消息传递:数据的所有权随消息转移,不共享 Go 选择了后者,并将其哲学浓缩为一句话: “Don’t communicate by sharing memory; share ...
2026-05-03
Go
Go
Read More
分享一个RabbitMQ MQTT插件的坑
背景知识RabbitMQRabbitMQ是一个基于高级消息队列协议 (Advanced Message Queue Protocal, AMQP) 的消息中间件,使用erlang开发,整体架构分为生产者(producer), 交换机(exchange), 队列(queue)和消费者(consumer),整体结构如下: 和常见消息队列不同,RabbitMQ中没有topic的概念,而是使用一个...
2024-05-25
MQ
MQ
Read More
【git篇】聊一聊git rebase和git checkout
前言git作为日常开发中的必备工具,这篇文章主要介绍git的基本原理和一些常见的git使用场景。 git 分区介绍在 Git 中,有三个主要的区域:工作区(Working Directory)、暂存区(Staging Area)和仓库(Repository)。工作区是当前正在编辑和修改的项目目录。 暂存区是 Git 仓库中的一个临时存储区域,当我们执行 git add 命令时,工作区中的文件...
2024-05-01
git
git
Read More
换行业&换工作,聊聊过去的一年
是的,我换工作了。其实距离换工作已经过去大半年了,从一家互联网大厂换到了一个制造业外企,这篇文章主要想简单聊聊换工作前后的一些感受。 为什么换工作作者之前是在上海的一家互联网厂工作,由于家境贫寒,无法在上海定居,加之这两年行业不景气(跳槽之后发现新的行业也不景气…),又加之去年年初迎来了组织架构调整,于是在各种buff加成下,我选择了离职,离开了上海,去了家外企工作。 互联网厂 vs 外企和...
2024-02-17
Read More
分享一个Python进程池的“坑”
背景最近线上运行的一个python任务负责处理一批数据,为提高处理效率,使用了python进程池,并会打印log。最近发现,任务时常会出现夯住的情况,当查看现场时发现,夯住时通常会有几个子进程打印了相关错误日志,然后整个任务就停滞在那里了。 原因夯住的原因正是由于一行不起眼的log导致,简而言之,Python的logging模块在写文件模式下,是不支持多进程的,强行使用可能会导致死锁。 问题...
2023-12-16
Python
Python
Read More
创建进程的时候到底发生了什么
进程作为操作系统中的基本管理单位,起着重要作用,那么进程到底是怎么被创建的,创建进程时到底都发生了些什么,本文将会讨论这些问题。 进程是如何被创建的从现象上看,当我们执行一个main方法时,会创建一个进程,当我们执行一条linux命令时,也会创建一个进程。要说进程究竟是如何被创建的,这里给出两个回答: 进程是被它的父进程创建的 进程是被fork出来的 这两个回答都对,只是从不同层面回答了...
2023-10-14
OS
OS
Read More
聊一聊linux中的tc命令
最近杂事太多,又是组织架构调整,又是换工作,最近终于有空能写下这边文章了。 tc (Traffic Controll) 作为linux中的流量控制工具,功能非常强大,可以对网络流量的速率、延迟、带宽等进行控制。本文主要介绍tc命令的结构和使用,多数内容来自于对参考文章的翻译和整理,并增加了一些解释和说明,帮助大家在工作中能够快速理解和使用该命令。 什么是tc命令?一言以蔽之,tc是lin...
2023-05-25
Linux
Linux
Read More
【基本功】如何理解Java线程中断
什么是线程中断从广义上讲,就是中断一个正在工作或sleep的线程,从代码上讲, 所谓的线程中断,就是设置某个线程的中断标志位,当我想要中断某个线程的时候,就将这个线程的中断标志位设置为true, 但是至于是否响应中断,全凭JVM或这个线程自己决定。 为什么要有中断 一种常见的用途是用于线程池的shutdown方法, 如果你去查看ThreadPoolExecutor的shutdown方法方法...
2023-03-12
Java
Java
Read More
1 / 9
Next