Auguries of Innocence

BY WILLIAM BLAKE To see a World in a Grain of SandAnd a Heaven in a Wild Flower Hold Infinity in the palm of your hand And Eternity in an hourA Robin Red breast in a CagePuts all Heaven in a Rage A Dove house filld with Doves & PigeonsShudders Hell thr’ all its regions A dog starvd at his […] →Read more

network simulator 3

NS-3 is a network simulator tool An open source discrete event simulator Event model packet transmission , receipt , timers etc. Future events maintained in sorted Event List Processing events results in zero or more new events Written in C++Extensive use of Templates , Smart Pointers, Callbacks C++ namespace (ns3) Simulation programs are C++ executables […] →Read more

GCC Implementation in WebRTC

Overview RTP header extension RTCP feedback extension ProbeBitrateEstimator : 根据feedback计算探测码率,PacingController中会将包按照cluster进行划分,transport-CC报文能得到包所属的cluster以及发送和接收信息,通过发送和接收的数据大小比判断是否到达链路上限从而进行带宽探测 AcknowledgedBitrateEstimator : 估算当前的吞吐量 BitrateEstimator :使用滑动窗口 + 卡尔曼滤波计算当前发送吞吐量 DelayBasedBwe : 基于延迟预估码率 TrendlineEstimator : 使用线性回归计算当前网络拥堵情况 AimdRateControl : 通过TrendLine预测出来的网络状态对码率进行aimd方式调整 SendSideBandwidthEstimation : 基于丢包计算预估码率,结合延迟预估码率,得到最终的目标码率 ProbeController : 探测控制器,通过目标码率判断下次是否探测,探测码率大小 CongestionWindowPushbackController : 基于当前的rtt设置一个时间窗口,同时基于当前的码率设置当前时间窗口下的数据量,通过判断当前窗口的使用量,如果使用量过大的时候,降低编码时使用的目标码率,加速窗口消退,减少延迟 AlrDetector : 应用(码率)受限检测,检测当前的发送码率是否和目标码率由于编码器等原因相差过大受限了,受限情况下会触发带宽预测过程的特殊处理 NetworkStateEstimator 、 NetworkStatePredictor : 此两者属于待开发类,还没用上. Protocol 参考协议 https://datatracker.ietf.org/doc/html/draft-holmer-rmcat-transport-wide-cc-extensions-01 https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc-02 参考实现 https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/transport-wide-cc-02/ Transport-wide Sequence Number 在每个要发送的 RTP 包中添加一个扩展头,包含 16 bits 的序号 sequence number. 在同一个传输通道中,每发一个 RTP 包,这个序号就加一 0 1 […] →Read more

模仿阿西莫夫的程序三大法则

艾萨克·阿西莫夫(Isaac Asimov)在他的科幻小说《我,机器人》中提出的机器人学三大法则: 机器人不得伤害人类,或因不作为使人类受到伤害。 除非违背第一定律,机器人必须服从人类的命令。 除非违背第一及第二定律,机器人必须保护自己。 布鲁克林法学院的教授 Frank Pasquale《新机器人法则:在人工智能时代捍卫人类专业技能》(New Laws of Robotics: Defending Human Expertise In the Age of AI)中提出,在阿西莫夫原有的三条法则基础上应该增加四条新的法则,具体内容如下: 数字技术应该 “辅助专业人士,而不是取代他们” 人工智能和机器人系统 “不应该假冒人类”。 应防止人工智能加剧 “零和竞赛(内卷)”。 机器人和人工智能系统必须强制 “表明其创造者、控制者和所有者的身份”。 作为一个程序员,我们也可制定类似的潜规则,例如 程序员工作法则 程序必须能够正确可靠地运行。 除非违背第一定律,程序必须具有可维护性。 除非违背第一及第二定律,程序必须具有高性能和高可用性。 →Read more

给大二新生的 TOREAD 和 TODO 建议

TO READ Java 编程思想 深入理解计算机系统(原书第3版) 算法 Robert Sedgewick TCP/IP详解 卷1:协议 代码大全 C++ Primer 程序员的自我修养——链接、装载与库 Head First 设计模式 Python核心编程 JavaScript高级程序设计 第4版 TODO 申请一台云主机(阿里或腾讯云的第一年都挺便宜的) 在你的云主机上搭建自己的个人站点 在自己的站点上安装 wordpress 作为你的个人博客,持续更新你的读书笔记,学习和研究的心得 申请自己的域名(你的名字 + .com, .top, or …),指向你的个人站点 注册自己的 github 帐号,创建自己的第一个项目,学习git的用法 , 用 markdown 及 restructuredText 来写文档 把上面提到的 “算法” , “设计模式” 等书中提到的算法及模式自己用 Java 或 C 语言都实现一遍,放在 github 仓库中 →Read more

时间管理读书笔记

每天都会坐在电脑前花费很多时间,可当每次打开电脑时, 电子邮件, 即时消息, 各种各样的新闻,八卦扑面而来, 使得我们常常忘了起初到底要干什么,许多宝贵的时间就在鼠标的点击和滚动间无情地溜走了    有本系统管理员写的关于时间管理的好书,结合我自己, 有如下读后感    1.明确到底要做什么,营造专心的环境  1) 一定要做好计划, 一年之计在于春, 一天之计在于晨, 要明确了解当前应该做的事情  至于下一步要做的事情,今天要做的事,这个月,季度要做的事,留给计划(todo list), 只把大脑留给当前的事  每天早上做班车时,拿出小本子或手机, 写下日程安排,把今天要做的事列个清单,标上优先级,所需时间  把现在要做的事,放在手边(即时贴)    2)清理零乱的桌面, 驱除掉可以分散你注意力的东西  核心工作时间里关掉浏览器中的各大新闻八卦站点,IM挂上busy的状态, 关掉Outlook,每天早中晚各花十分钟检查邮件和看新闻,总时间严格控制在30分钟内    2. 建立核心工作时间的观念,在核心工作时间内避免干扰    例如张三在你的核心工作时间找你时,你有三种选择    1) 委派它: 有其他人可以做, 就委派给他  避免给人踢皮球的感觉, 站在别人的立场上,最好得到所委派人的确认  如:李四,张三在我这里, 他有个问题,你帮你看看好吗?    2) 记录它: 只有或应该你自己来做,但不紧急,就先记下来  如:好的,我明白你的意思,我先记下来, 张三需要在明天17:30之前收到bug分析报告, 是这样的吧    3) 执行它: 如果事情紧急,就中断正在做的事,马上去做  如: 好的,我保存一下文件,现在就做    3. 建立例行公事,形成习惯  1) 每月发完薪水后去交按揭,水电费,电话费  2) 永远随身携带手机, 笔和笔记本,钱包,钥匙,餐巾纸,香烟,打火机  3) 每个星期安排时间去图书馆看新的图片,杂志,报纸  4) 每天背十个英语单词和听译一篇短文  5) 每周做一周的计划,备份重要的东西  将经常重复做的事情, 经常会忘的事作为例行公事, 列上日程表.    4. 建立一份循环日程系统, 这个系统要求可随身携带,可靠并且有足够的容量  1) 日程表: 可以记录重复会议, 约会, 事件等  2) 人生目标列表: 月度,季度和年度目标与计划  3) 每日计划:每天的时间安排  工作表: 当日任务,优先级,估计所花费的时间  时间表:每个小时的日程安排 →Read more

工程师都是福尔摩斯

碰到难啃的骨头,头脑首先要清楚,解决问题就象破案 : 1. 把问题写下来:已知线索写下来,未知的东西有哪些,能不能重现,重现步骤有哪些 2. 把过程记下来:尝试了哪些方法,还有哪些方法可以用,还有哪些资源可以利用 3. 把原因搞清楚:可能的原因,根本的原因,直接的原因,间接的原因 4. 把方案写明白:有几种解决或预防方案,是临时措施,还是根本措施,是短期方案,还是长期方案,各有什么优劣,最好列个上中下三策, 5. 把计划做出来:采用哪个方案,如何落实,若可能还有类似问题发生,如何预防,如何应对 →Read more