zhuzilin's Blog

about

zhuzilin's Blog

111 Posts

关于大模型的一些思考 27 April, 2024

随着 llama3 的公布(以及 phi3 的 llm-arena 分数的公布),我认为现阶段大模型的格局已经比较明确了,即, llama3 使用的超多 pretrain 数据 + 适当的数据清洗的方案可以基本达到 GPT-4 级别模型的水平,是当前的开源版本答案。如果 lla…

28 岁,一个新的人生阶段 22 March, 2024

10 年前,我走进了高考的考场。 我还隐约记得,早上起来,看着天空因为之前一天的小雨变得湛蓝,给了迷信的我一个正向的暗示。从金台饭店走向考场,确实紧张,但是在进四中前碰到了同学,看到了他紧张带来的脸部的微微颤动。虽然高考,或者是别的什么考试,并不是一对一的角逐,但是观察到别人的…

测度论笔记(中) 21 November, 2023

看的是 IMPA 的 Measure Theory 课,教授是 Claudio Landim。 https://www.youtube.com/playlist?list=PLo4jXE-LdDTQq8ZyA8F8reSQHej3F6RFX Lecture10 Integrat…

测度论笔记(上) 14 November, 2023

看的是 IMPA 的 Measure Theory 课,教授是 Claudio Landim。 https://www.youtube.com/playlist?list=PLo4jXE-LdDTQq8ZyA8F8reSQHej3F6RFX Lecture 1 Introduc…

Elements of Information Theory 读书笔记 Part I 17 October, 2023

因为量子计算的书提到了一点信息论,所以来简单补一下信息论的基础知识,主要是 data compression 和 data transmission 相关的内容。看一下《Elements of Information Theory》这本书的前 7 章。 2. Entropy, …

量子力学原理笔记(上) 09 October, 2023

1 The principle of superposition 1.5 Mathematical formulation of the principle 叠加态现象意味着我们可以通过把状态相加得到新状态,所以表示状态的数学量肯定是可以相加的,随之我们联想到向量,但是有限维向…

Fourier Inversion Theorem 证明 08 October, 2023

在看 The Principles of Quantum Mechanics 的时候,发现定义 函数用了 Fourier Inversion Theorem,感觉这个定理挺不直观的,所以看一下它是怎么证明的。这里我选用的是 Big Rudin 第 9 章的定义。 相关的实分析…

结婚誓言 04 October, 2023

亲爱的杨丽冰: 终于到这一刻了。我已经记不清我有多少次盘算着这个时候要和你说什么,可能是还在学校独自骑车的时候,可能是在单位跑步的时候,每每独处,我总会想到这一刻。 我还记得,18 岁的我想在这一刻说,我会拼尽全力,让你享受最好的生活,做最幸福的人。 我还记得,21 岁的我想说…

声学基础 24 September, 2023

线性声学波动方程 声学主要考虑的是机械波在物质间传播相关的性质,而在物质上,一般会先关注气体。在这个前提下,在考虑声波的波动方程时,主要有以下的假设: 质量守恒定律: 动量守恒定律: 其中: 能量守恒定律,这是声学推导中较为特殊的一部分,它假设声音的传播是绝热过程,即没有热量交…

An observation on Generalization 笔记 21 August, 2023

感谢 @yili 推荐了 Ilya Sutskever 的新 talk An observation on Generalization,这里我贴一个原始的 youtube 链接:https://www.youtube.com/watch?v=AKMuA_TVz3A 本文主要尝…

Aydemir Saidov 03 July, 2023

Aydemir Saidov 是一位震惊我艺术观(如果我有这么个观的话)的艺术家。 他以画睡美人见长,画作中多是极为美丽且写实的女孩儿,看着令人脸红,甚至让人好奇这究竟是艺术还是色情。 而偏偏他出身自艺术世家,父亲是俄罗斯获过奖的画家,夫人也是很出色的画家。我不禁怀疑,难道十…

Virgil Abloh 和他的 3% 15 June, 2023

Virgil Abloh 在我所在的互联网茧房中,是个颇具争议的人。由于对时尚和设计不甚了解,所以曾经的我非常简单地把他标记为:黑人、Off-White、LV 设计总监,然后快捷地孵化出了一套在中国很难出错的话术: 一个优秀的潮牌设计师,把 AJ1 解构得很好; 一个靠政治…

Interpreter Dispatch Techniques 29 December, 2021

关注 interpreter dispatch 的原因是,很多人说 python 这种编译器的时间主要消耗在 dispatch 上,所以做 JIT 也没什么用。所以想学习一下一些主流的 interpreter dispatch 的方式。不过在 PEP 659 的引用文献 Inl…

Glassmorphism 和其 CSS 实现 28 December, 2021

这两天了解到苹果和微软都逐渐在从扁平化设计向一种名为 Glassmorphism 的设计模式转换。最为显著的就是在 macOS 11 Big Sur 中,有毛玻璃质感的设置栏。 用 CSS 可以很容易地模仿这种设计,上图的玻璃部分的 CSS 为: 网上一些设计指导中,还提到给…

2021 年终总结 26 December, 2021

去年年底的时候其实就想写个总结,但是当时的迷茫大于感悟,感觉自己更多地是在被生活推着踉跄前行。所以 20 年的总结就从元旦拖到了春节,等到了二三月份就觉得有点不合时宜了,就放弃了。所以今年还是要给自己定个 ddl,在 21 年里面写 21 年的总结。 21 年我的生活上有了不小…

【翻译】直观理解高等密码学 21 December, 2021

长文预警!本文是 Intuitive Advanced Cryptography 这篇文章的翻译。在现代/高等密码学中充斥魔法一般的结论和工具,想弄明白他们是在做什么的往往需要补充大量的数学知识。这篇文章的作者 Nguyen Thoi Minh Quan 就是希望通过不那么准确…

ssh 无密登录跨机容器 10 December, 2021

这两天在裸机上面跑测试的时候,需要让两台机器里面的镜像直接 ssh 无密通信,调了挺久的环境,在这里记录一下。 大概分为如下几步: 制作镜像 在制作镜像的时候,要在镜像里面做 ssh keygen,并把生成的公钥放在 里面,这样就可以让任意的两个基于这个镜像的容器都能无密访问…

Vault 中使用的 Shamir Secret Sharing 06 December, 2021

在网上冲浪的时候看到了 hashicrop 这个公司,并了解到了 Vault 这个项目。这个项目主要用来存储密钥 Shamir Secret Sharing 对于 阶多项式 当且仅当存在 个值对 的时候才可以解出 。而如果我们把公共密钥的值设为 ,则有: 即可反解出密钥。…

Vectorize vs Jit 05 December, 2021

在刷知乎的时候看到了对这篇论文的笔记:《Everything You Always Wanted to Know About Compiled and Vectorized Queries But Were Afraid to Ask》(知乎链接),这篇文章主要是在数据库层面对…

Diffie-Hellman 和 PSI 01 December, 2021

最近在和骞老师一起做一个密码学相关的项目,接触到 Diffie-Hellman 协议以及基于它进行的 private set intersection (PSI) 协议。在这里记录一下~ Diffie-Hellman key exchange Alice 随机生成私钥 ,并选择…

尝试 GPU Direct Storage 宣告失败 19 November, 2021

这两天我突然发掘了 GPU Direct Storage (后文都称 gds)这个东西,他可以允许从 GPU 显存到 NVMe 或支持 RDMA 的文件系统的 DMA。虽然好像是在 19 年就发布了,但是在 cuda 11.4 之前,这个东西主要是应用在 RAPDIS 里面,例…

博客字体更新 15 November, 2021

今天在研究调度器的时候看到了这样的一篇博文 觉得这个字体很好看(原链接比截图好看),所以就把博客的英文部分的字体改成了 Quattrocento Sans。这里要注意,因为这个字体属于 Google Fonts,所以需要在 中添加下载部分: 为了能让标题用上粗体,还在 中加…

Trace JIT vs Method JIT 10 November, 2021

这两天在看各个 python 版本的优化的时候(主要是 FB 给 instagram 写的 cinder)看到了 Method JIT 这个名词,发现好像主流的 JIT 主要分为 method JIT 和 trace JIT 两种。搜了一下,在一个日本人的 phd thesis…

MSG_ZEROCOPY, RDMA 和相关的信息 03 November, 2021

在学习 nccl-fastsocket 项目的时候,了解到 17 年就并入 linux 内核的 zero copy 设置( 和 )。我个人比较感兴趣的是这个功能的特点以及他和 RDMA 的比较。 部分参考链接: Linux Socket 0拷贝特性 https://zhuanl…

OSDI 2020 PipeSwitch 阅读笔记 02 November, 2021

这个项目的代码公布在了:https://github.com/netx-repo/PipeSwitch 和 https://github.com/Myrmustin/PipeSwitch_Plus 虽然不知道 plus 版本是不是进阶版,但是还是看的 plus 版的。 对于 C…

mutual exclusion 和面包店算法 28 October, 2021

最近计划学习一下 Leslie Lamport 老先生的经典论文~ 在 Lamport 对自己生涯论文的回顾中,对自己提出的面包房算法做出了非常高的评价: ... I have invented many concurrent algorithms. I feel that I…

The Internals of PostgresSQL 读书笔记 Ch3 30 May, 2021

这一张是介绍 query processing 的,也是我一直非常感兴趣的一个内容。 3.1 Overview figure 3.1. Query Prcessing PostgresSQL 的 query 处理模块包含 5 个子系统: Parser Analyzer: 对 p…

Partial Evaluation 代码分析 30 May, 2021

在学习 JAX 和 TVM 代码的时候经常会遇到 partial evalutation 这个名词。它的主要功能应该是在编译期对程序进行局部估值,类似于 constant folding,只不过对于函数,也会把已知的参数都 fold 起来,并转化为新的函数。例如: 会被转化为:…

EOPL 读书笔记 Ch6 06 May, 2021

继续看 EOPL。 Ch6 Continuation-Passing Style 在 Ch5,我们通过重写解释器,把所有的函数都改为了 tail call,从而保证在任何时间,解释器的 control context 都是有限的。我们将这种情况称为 iterative cont…

EOPL 读书笔记 Ch5 06 May, 2021

继续看 EOPL。 Ch5 Continuation-Passing Interpreters 在 Ch3 我们利用 environment 这个概念探索了 binding。在本章我们会对 control context 做同样的探索。通过引入 continuation 作为 …

EOPL 读书笔记 Ch4 06 May, 2021

继续看 EOPL。 Ch4 State 4.1 Computational Effects 求值和产生 effect 的区别是什么呢?effect 是 global 的,整个计算都能观察到,并影响整个计算。 我们主要关心一个 effect:向某个内存位置赋值。 赋值和绑定的区别…

EOPL 读书笔记 Ch3 05 May, 2021

继续看 EOPL。 Ch3 Expression 本章主要学习变量的 binding 和 scoping。 3.1 Specification and Implementation Strategy 我们的 specification 会以如下的方式呈现: 我们的目标则是实现如…

EOPL 读书笔记 Ch1 & Ch2 05 May, 2021

最近开始研究 TVM 的 Relay,发现该补的还是要补.... 因为之前偷懒跳过了 EOPL 的 ch6,所以不理解 CPS,也就理解不了 Relay 的 interpreter 在干啥。所以这两天打算重读一下 eopl,顺便记一下笔记。这次的目标暂定为读到第六章吧,最好也能…

Google 和 cgroup 的渊源 28 April, 2021

今天看王益大佬的知乎文章的时候,无意间了解到 cgroups 主要是由 google 的两名工程师 Paul Menage 和 Rohit Seth 在 2006 ~ 2008 年贡献给 Linux kernel 的... 又一次感觉到 google, fb, 微软这些公司和我…

博客再开 21 February, 2021

年初工作真的是很闲了。同事们忙着准备答辩,日复一日地改着 ppt,自然是没空理我这个新来的小兵。眼瞅着 2021 年的前两个月就要过去了,百无聊赖,就想起来了自己的这个小博客。今天对它进行了简单的修正,打算重新开始做一些更新。 2021 年的数个目标中的一个就是进行内容输出,大…

N4 语法 動詞名詞化 21 June, 2020

工作了之后真的很久没有更过博客了....技术类的内容可能之后都会发在组里的知乎专栏上,所以博客这边就写写日常生活和语言学习吧。最近迷上了学法语,所以可能之后也会有一些法语相关的总结。 自己在尝试说日语的时候经常会遇到不知道是改用する还是するの的情况,所以这次我们来简单总结一下日…

N4 语法 短语 09 December, 2019

はず <接続> 動詞/形容詞い/形容動詞な/名詞の+はず <意味> 应该 <用法> 推測的な <例> a. 素直な気持ちを相手に伝えてみよう。きっと何かが変わるはずです。 べき <接続> 動詞/形容詞くある/形容動詞である/名詞である+べき <意味> 应该 <用法> 義務的な。…

N4 语法 に接続 09 December, 2019

にて <接続> 名詞+にて <意味> ~で <用法> 大きく分けて3つの意味があります。 物事が発生した場所。 手段・方法・材料 時間的な範囲の終わり いずれも格助詞「で」に置き換えることができます。書き言葉としてよく用いられます。 <例> a. 予約は店頭にて承っております。…

N4 语法 受身形 使役系 使役受身形 07 December, 2019

受身形 变形: 第一類動詞(五 段):【イ段→ア段,ます→れます】 例:飲む→飲まれる、叱る→叱られる 第二類動詞(上下段):【ます→られます】 例:食べる→食べられる、見る→見られる 第三類動詞(カ行、サ行變格) 例:来(く)る→来(こ)られる、する→される 句型: 基本的…

N4 语法 わけ だけ よう もの 07 December, 2019

わけ わけだ <接續> 動詞/形容詞い/形容動詞な/名詞な+わけだ <意思> 当然~のだ/~のは当たり前だ <用法> 用在當然的結果、必然的結果。 <例句> a. 彼女はモデルの仕事をしているそうだ。だから、きれいなわけだ。 b. 内戦状態が十年も続いていれば、犠牲者が多く出る…

N4 语法 授受动词 敬语 06 December, 2019

单词都背到N2了,发现N3,N4的好多语法都还不清楚,所以最近趁着有时间,来整理一下 授受动词 てあげる・差し上げる 我为别人做xx 私は星野さんに料理を作ってあげる。(私→星野さん) 其敬语形式是差し上げる 先生にお茶を入れて差し上げました。 但是注意,て上げる这个表达有强调…

6.824 阅读笔记4 —— dynamodb 23 October, 2019

Dynamo: Amazon’s Highly Available Key-value Store 今天来看dynamodb。前面的introduction,related work啥的先放一边,直接来看system architecture 4 System Architec…

15-745 spring 2019 assigment2 23 October, 2019

1 Introduction 讲作业应该怎么交的,跳过 2 Dataflow Analysis 就是需要写一个一般性的dataflow的分析代码。主要要用llvm中的和,前者就是用来快速做集合位运算的,后者相当于。需要注意的是,llvm 5.0把所有类似于,这样的指令都去掉了,…

15-418 spring 2016 assigment1 21 October, 2019

作业叙述的链接如下为这里 Program 1: Parallel Fractal Generation Using Pthreads 用pthread分上下块儿计算分型。因为没有critical region,所以直接算就好了,代码如下: 运行后的结果为: 分别跑一下2, 3,…

6.824 阅读笔记3 —— operational transformation 18 October, 2019

今天来看operational transformation, google doc背后的技术。 Operational Transformation in Real-Time Group Editors: Issues, algorithms, and Achievement…

15-745 spring 2019 assigment1 16 October, 2019

1 Introduction 讲作业应该怎么交的,跳过 2 LLVM project 2.1 Obtaining the System Image 安装virtualbox 5.2以及对应版本的增强功能。 从http://www.cs.cmu.edu/~15745/vm-ima…

6.824 阅读笔记2 —— Raft 21 September, 2019

In Search of an Understandable Consensus Algorithm 5 The Raft consensus algorithm Raft是一个用来处理replicated log的算法。文中的图2进行了算法要点的总结,图3展示了算法的主要特点…

6.824 阅读笔记1 —— MapReduce 20 September, 2019

这个学期的主要的任务就是学一下6.824。因为哥大的分布式课是按照6.824 spring 2015的安排走的,那个时候是实现paxos,而现在是实现raft,所以打算都实现一下。然后这个课重要的论文阅读部分也做一下并集。今天是第一篇,来读map reduce。 MapRedu…

Redis源码阅读 —— 字典 15 August, 2019

今天来做源码阅读的第二部分。看一下字典结构的实现。这个结构主要位于和中。 字典 字典肯定就不能和SDS依附于一样依附于一个C的原生类型了。所以最开始需要先定义其结构。 可以看到,这里面有2个类型,(hash table)和,一个中有两个。的逻辑是很好理解的: 插图 然后哈希表中…

Redis源码阅读 —— SDS 14 August, 2019

今天开始开一个大坑,开始读redis的源码。因为网上大家都说redis的代码非常漂亮~然后读的过程和顺序会按照《Redis 设计与实现》(试读链接)。现在的版本号是5.0.5,希望我能顺利把它读完,也希望读完的那天不要已经跳个大版本,升到6了之类的。 按刚刚提到的那本书的顺序,…

校招面经:阿里云安全岗、编译原理 07 August, 2019

昨天开始了我校招的第一个面试,是阿里云里面一个用编译原理去检查恶意脚本的组。因为我作死在简历上放了个小的解释器的项目,所以问了我半个小时编译原理,几乎全都不会...今天来记录一下。 gcc编译的流程 粗的来说,分四步 预处理:把include放进去(.i文件) (gcc -E …

Python multiprocessing lock vs threading lock 30 July, 2019

昨天帮舍友debug的时候发现了一个有趣的问题,这里来讨论一下。 舍友写出的问题主要是要做这样一件事。他在用gunicorn加flask做一个可视化项目。gunicorn是一个基于的WSGI server。大致的用法就和官网一样: 通过设置会设置fork的次数,也就是worke…

kubernetes basics 29 July, 2019

实习过程中自告奋勇要帮着搞kubernetes,结果发现这个东西有点恶心...在这里总结一下基础知识,省的好不容易看的东西忘了~ 基本结构 Kubernetes的基本结构 Kubernetes主要有两种resources(为啥叫资源...): master: 管理cluster…

Javascript Basics -- prototype 23 July, 2019

最近开始做面试的复习,打算顺便把一些看过好多遍的js知识总结提炼一下。这次的内容是。本文的内容来自于You Don't Know JS: this & Object Prototypes。非常好的一本书,非常推荐。 首先来看一个例子: (后文会介绍,现在暂时把它大会曾创建了一…

Javascript Basics -- this 23 July, 2019

最近开始做面试的复习,打算顺便把一些看过好多遍的js知识总结提炼一下。这次从开始。本文的内容来自于You Don't Know JS: this & Object Prototypes。非常好的一本书,非常推荐。 可以说是js中非常令人困惑的一个关键词了。首先看一个的用例: 相…

计算机网络阅读笔记-- Transport Layer 15 July, 2019

本文为阅读Computer Networking: A Top-Down Approach (7th Edition)的阅读笔记,估计会比较没有条理,只是我比较喜欢在看书的时候旁边随手记两笔。既然读的是电子书,自然笔记也得是。 在谈及TCP和UDP之前,先说一下transpor…

计算机网络阅读笔记-- Application Layer 15 July, 2019

本文为阅读Computer Networking: A Top-Down Approach (7th Edition)的阅读笔记,估计会比较没有条理,只是我比较喜欢在看书的时候旁边随手记两笔。既然读的是电子书,自然笔记也得是。 HTTP Web page consists of…

docker basics 10 July, 2019

本文假设读者已经正确安装了docker。同时,下述指令运行的平台为RHEL 7(因为领英只给我配了这么台东西....)。以及基本指令来自于《第一本docker书——修订版》。 docker常用指令 检查是否正常工作。 查询系统的container列表: 查看所有容器的运行状态:…

Install .NET Core on RHEL7 13 June, 2019

因为工作需要把一个项目从.NET Framework移到.NET Core,而公司给配的工作站是redhat,所以在这里记录一下安装的过程。 首先是下载,默认的下载出现了subscribe相关的问题,不知道该怎么解决,所以就采用了下载binary的方式。从这里找了RHEL6的b…

About Monad 11 June, 2019

实习很闲,趁着没事,学学haskell和写parser。对于这两者来说,非常重要的一个概念就是monad。看知乎的解释看得头疼,自己在网上扒了些资源,来这里来讨论一下monad。 本篇的主要引用来自wikibooks中的Haskell。以及不计划设计那种很玄很玄的数学知识。 F…

我的nginx笔记 02 May, 2019

由于我已经无数次的查过ngnix相关的内容以及像反向代理这样的东西了,每次过了一两个月就忘得一干二净,所以和git一样,我自己记录一份可以直接上手的教程。使用的主要参考是nginx的beginner's guide。 nginx有一个master进程和多个worker进程。ma…

About LDA 25 April, 2019

Probabilistic Topic Model Learns distributions on words called “topics” shared by documents Learns a distribution on topics for each docume…

About Matrix Factorization 24 April, 2019

Matrix Factorization is a simple way to do collaborative filtering. matrix-factorization The main idea is that and is smaller than the ra…

数据库基本架构 17 April, 2019

database-architecture 这次我们来整理一下数据库的基本架构,内容来自Database Management Systems 3rd Edition. 从最简略的角度,DBMS接受SQL,在数据库中运行他们,并返回结果。 当用户进行一次查询的时候,SQL先被p…

6.828 lab4 Preemptive Multitasking 31 March, 2019

Part A: Multiprocessor Support and Cooperative Multitasking 第一部分要把JOS拓展到多处理器的系统,并实现一些system call来让user-level environments创建新的环境。然后还需要实现coop…

6.828 Homework Barriers 26 March, 2019

本次作业的内容是通过使用condition variable来实现barrier功能。barrier,简单来说,就是给线程们画一条线,必须等他们都运行到这条线(其实就是满足某个条件)的时候,才能分别继续运行。 这次作业需要提前去了解一下condition variable,这个…

6.828 总结 26 March, 2019

Boot Loader 首先当机器启动的时候,会自动加载BIOS。BIOS会检查有无bootable disk,如果有的话,会加载其boot loader(实际上就是加载boot loader)的ELF,也就是boot loader对应的二进制文件。其位于第一个IDE disk…

6.828 笔记10 25 March, 2019

这里会记录阅读6.828课程lecture note的我的个人笔记。可能会中英混杂,不是很适合外人阅读,也请见谅。 Lecture 11: Coordination (sleep&wakeup) sequence coordination 有的时候线程需要等待某些事件,比如 d…

6.828 笔记11 —— File System 25 March, 2019

这里会记录阅读6.828课程lecture note的我的个人笔记。可能会中英混杂,不是很适合外人阅读,也请见谅。 Lecture 12: File System 我们为什么需要file system durability across restart naming and o…

6.828 Homework User-Level thread 25 March, 2019

本次作业会处理一个简单的用户的thread包,用于实现context switching. Switching threads 下载和,然后修改xv6的 需要写的代码在里。 注意这里面的使用了中的结构: 和都是。然后一个stack的结构在函数中体现了: 也就是最上面是32byt…

About Matrix Calculus 10 March, 2019

很长时间以来,虽然学习机器学习,但是我对最基本的矩阵求导仍然是非常模糊,在这里好好的整理一下。以下内容几乎全部来自Matrix calculus的维基页面。 Scope 从一个简单的标量函数对矩阵求导为例: 也可以写成矩阵形式,那就是标量函数关于向量求导: 更复杂一点的例子,就…

Google Cloud 配置 ssh 09 March, 2019

如果我们需要通过本地的ssh登陆google cloud instance,主要要进行如下几步: 修改ssh配置文件/etc/ssh/sshd_config 然后把该文件修改为: 然后给root用话设置密码: 之后重启ssh 最后在左边的导航栏中的MetaData中的ssh里面…

About EM 08 March, 2019

The material of this post is from ESL. Two-Component Mixture Model Suppose we have a model as such: where Therefore, the density function …

About Linear Time Series 08 March, 2019

This post mainly uses material from Analysis of Financial Time Series. Stationarity Stationarity is the foundation of time series analysis.…

6.828 笔记9 06 March, 2019

这里会记录阅读6.828课程lecture note的我的个人笔记。可能会中英混杂,不是很适合外人阅读,也请见谅。 Lecture 10: Processes, threads, and scheduling 之前的一次作业基本上都是阅读代码和回答问题,所以就不单独列出来了。本…

6.828 lab3 User Environments 05 March, 2019

注意,在运行lab3之前,需要修改文件中的部分为: 非常感谢解决了这个问题的同学,解决的原文在这里。 Part A: User Environments and Exception Handling 首先我们需要看一下新的文件,其中包含了user environment的基本定…

6.828 笔记8 02 March, 2019

这里会记录阅读6.828课程lecture note的我的个人笔记。可能会中英混杂,不是很适合外人阅读,也请见谅。 Lecture 9: Locking lock的简单抽象: lock就是一个object,如果多个线程调用,只有一个thread能拿到,其他的就需要等待。 程序经…

6.828 Homework Threads and Locking 01 March, 2019

这次的作业应该是这几次中最简单的一次了。主要就是进行了一个有外链的哈希表的多线程插入和取值。 取值部分不会进行修改,所以不用加锁。只是在插入的部分注意到: 注意到这里的是每个哈希值对应的链表的结尾,所以需要加锁,不然两个线程同时往一个相同的结尾插入,就会丢东西了。所以在中初始化…

6.828 笔记7 27 February, 2019

这里会记录阅读6.828课程lecture note的我的个人笔记。可能会中英混杂,不是很适合外人阅读,也请见谅。 Lecture 8: Interrupts, System calls, and Exceptions 这次的主题就是说当硬件want attention的时候,…

6.828 Homework xv6 CPU alarm 26 February, 2019

这次的作业和之前的system call那次的作业非常像,这次是加入一个叫alarm的system call。其主要的功能是每间隔若干个cpu tick就触法一次handle函数。所以这里不再赘述如何创建一个system call,而是关注于不同的地方。 作业中给的测试代码如下…

About Binary Classifier 25 February, 2019

There is a summary of many rudimental binary classifier. And for more complex ones like SVM, there will be a post in the future. Bayes Clas…

6.828 lab2 Memory Management 24 February, 2019

Part 1: Physical Page Management 写一个physical page allocator。注意分配出来的就是表示了整个物理内存,但是记录的是每个page对应的虚拟地址。用物理地址来找到对应的page,然后用这个page的虚拟地址来得到其实际存的东西…

6.828 笔记6 22 February, 2019

这里会记录阅读6.828课程lecture note的我的个人笔记。可能会中英混杂,不是很适合外人阅读,也请见谅。 Lecture 7: Using Virtual Memory step back: 从整个课程的角度 没有设计OS的最好方式 很多OS都使用虚拟内存,但是这不一…

6.828 Homework xv6 lazy page allocation 20 February, 2019

Part One: Eliminate allocation from sbrk() 首先是要在中去掉分配内存的部分。函数原来的版本是: 可想而知,分配内存的主要方式来源于(在),就是会给当前进程的page table加n的内存,并把加。注意,阅读函数可以得知,在分配的时候不会…

6.828 笔记5 20 February, 2019

这里会记录阅读6.828课程lecture note的我的个人笔记。可能会中英混杂,不是很适合外人阅读,也请见谅。 Lecture 6: Virtual Memory Virual Memory Overview 我们需要隔离开的address space 每个进程都有自己的内…

6.828 Homework xv6 system call 19 February, 2019

Part One: System call tracing 第一个任务是让每次调用system call的时候,都会输出其名字和返回值。需要修改的代码是 我就直接用了暴力方法,如下: 至于如何输出system call arguments,应该是要用里面的值吧,具体具体没想好。…

6.828 笔记4 18 February, 2019

这里会记录阅读6.828课程lecture note的我的个人笔记。可能会中英混杂,不是很适合外人阅读,也请见谅。 Lecture 5: Isolation mechanisms 多个进程同时运行导致了对操作系统的3项主要要求: multiplexing isolation i…

6.828 笔记3 17 February, 2019

这里会记录阅读6.828课程lecture note的我的个人笔记。可能会中英混杂,不是很适合外人阅读,也请见谅。 Lecture 3: C and gdb 这一讲基本上都是介绍工具,就不在此记录了,C的部分可以看K&R,gdb的部分可以直接搜课件。的例子应该在lab1中已经进…

6.828 Homework xv6 shell 16 February, 2019

这个作业是要求完成这个文件,来写一个shell。做这个作业之前还是需要看一下xv6 book的第一章的,不然有些地方会不明白。以及,真正的xv6的shell版本在中,可以参考学习。同时,lecture 4中的第一部分一些关于这次作业的问题,我们也在这里进行讨论。 Executi…

6.828 Homework boot xv6 14 February, 2019

Boot xv6 没什么需要做的,都在配置的那片里面介绍过了。 Finding and breaking at an address 首先按照要求,运行: 查manul可以知道,nm的作用是GNU nm lists the symbols from object files o…

About Linear Regression 13 February, 2019

This semester, all three of my courses mentioned linear regression. And I believe it would be nice to summarize it. For linear regression, …

6.828 笔记2 x86 and PC architecture 13 February, 2019

这里会记录阅读6.828课程lecture note的我的个人笔记。可能会中英混杂,不是很适合外人阅读,也请见谅。 Lecture 2: x86 and PC architecture PC architecture 一个完整的CPU有: x86 CPU与其寄存器,执行单元和内…

6.828 lab1 Booting a PC 12 February, 2019

布置好环境之后就可以开始一点一点写作业了。 Part 1: PC Bootstrap Getting Started with x86 assembly 了解汇编代码。 Exercise 1 阅读Brennan's Guide to Inline Assembly的The Sy…

6.828 笔记1 12 February, 2019

这里会记录阅读6.828课程lecture note的我的个人笔记。可能会中英混杂,不是很适合外人阅读,也请见谅。 Lecture 1: O/S overview 操作系统的主要目的是: 支持应用 为了便捷对硬件进行抽象 为多种应用multiplexing the hardwa…

6.828 系统配置 12 February, 2019

从今天开始打算跟着MIT 6.828学习操作系统,做一下相关的lab。配置环境有点麻烦,在这里记录一下,也用来方便后人。 环境 Ubuntu 18.04 安装方式 首先运行 如果第二行不是, 说明不是32位系统,需要安装 然后安装QEMU: 默认安装地址是, 如果需要更改安装地…

About Python modularity 10 February, 2019

This post is full of quote right now. Maybe sometime I will add some of my own understanding. But at the moment, the words in the reference…

How is a Python program run? 09 February, 2019

When running a python program, we would normally use command line or an IDE, but how is the python program actually got run? Or in other wo…

Pandas read_csv use regex as delimiter 03 February, 2019

When doing my homework, I need to read a badly formed csv into a pandas dataframe. And what I need is to use regular expression for separat…

我的git笔记 02 February, 2019

使用git也很长时间了,但是使用起来往往是非常机械性的add commit push,遇到了稍微复杂一点的问题就变得晕头转向了。所以在这里整理一版更适合我本人理解的git笔记。内容源自Pro Git。 基础概念 git主要有3个部分,如下图: git state 我们将在工…

读沈从文先生《从文物来谈古人的胡子问题》 31 January, 2019

读书时看到记述古罗马人何时开始有理发师,及何时少有人蓄须,突然对我国古人的胡子问题颇感兴趣。查询之后,找到了沈从文先生的一篇《从文物来谈古人胡子问题》,引经据典,也很有趣,所以在此整理一下。 西汉及之前 从商代遗留下来的各种材质的人头雕件,铸件可以看出,当时的人留胡子的,不留胡…

About MLE 30 January, 2019

It is really common to use maximum likelihood estimator (MLE) in machine learning. But do you ever think about the reason? Apart from the f…

Transfer to Gatsby! 30 January, 2019

This is a blog with nothing technical inside. I just want to express my appreciation and thank to the Gatsby team! It has been a long time …

Node.js events source code reading 16 January, 2019

It is well-known that Node.js is an event based JavaScript runtime environment. And today let's dig deeper into the source code and have a…

Connect Android to PC with Termux 29 December, 2018

Termux Here is the introduction of termux from its official website: Termux is an Android terminal emulator and Linux environment app that …

Configure aws-sdk in win10 18 November, 2018

Install for powershell First we need to run the powershell as administrator. With PowerShell 5.0 or higher, the installation can be done wi…

About CORS 04 November, 2018

Type of CORS First of all, it is very important that CORS error is a restriction from browser. And when a server is sending some request to…

First Electron App 03 September, 2018

Installation Installing electron is the same as installing any node package. First, we create a folder and initialize it. And when creatin…

About python relative importing 05 July, 2018

Relative importing is painful The relative importing has always been painful in python. For example, we are writing a web app using Flask. …

Flask Basics 05 July, 2018

During my internship at Face++, I participated in upgrading a tool platform for our group to package training data and test models. In this…

D3 to Hexo 04 July, 2018

D3.js is a popular package for data visualization. It provides great freedom for designer and data scientists to show data. This time, we a…

Write Blog Using Hexo 04 July, 2018

Hexo is a fast static generator that could be used to help us build blog on github pages just like the one you are viewing. And as the firs…