UNIX 网络编程
基于 UNIX Network Programming, Volume 1: The Sockets Networking API, Third Edition 编写
套接字介绍
IPv4 套接字地址结构:
struct in_addr { in_addr_t s_addr; /* 32-bit IPv4 地址 */}struct sockaddr_in { uint8_t sin_len; /* 结构的长度 */ sa_family_t sin_family; /* 都是 AF_INET */ in_port_t sin_port; /* 16 bit TCP 或 UDP 端口号 */ struct in_addr sin_addr; /* 32 bit IPv4 地址,网络字节顺序 */ char sin_zero[8]; /* 未使用,全是 0 */}
一般只需要设置中间三个成员即可
有更广泛的 socket 地址结构:
struct sockaddr { uint8_t sa_len; ...
CMU 15-445:数据库系统
关系模型与关系代数 Relation Model & Relation Algebra
**数据库管理系统 Database Management System(DBMS)**允许应用程序存储和分析数据库中的信息的软件,通常支持根据某种数据模型定义、创建、查询、更新、管理数据库
数据模型 data model 是描述数据库中的数据的概念的集合
模式 schema 是使用给定数据模型,对特定数据集合的描述
关系型数据库的发明者——Codd
关系 relation 是包括了表示实体的属性关系的无序集合
元组 tuple 是关系中属性值的集合,类似于行
主键 primary key 唯一地指定了一个 tuple
外键 foreign key
数据操作语言 Data Manipulation Languages(DML):从数据库中存取信息的方法,有程序性的(关系代数)和非程序性的
关系代数 relational algebra:
σpredicate(R)\sigma_{predicate}(R)σpredicate(R):类似于过滤器
πA1,…,An(R)\pi_{A1,\d ...
全栈公开课(第二部分)
React router、自定义 hook,利用 CSS 和 webpack 给 app 添加样式
React-router
使用 React Router 库生成导航栏:
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';const App = () => { const padding = { padding: 5, }; return ( <Router> <div> <Link style={padding} to='/'> home </Link> <Link style={padding} to='/notes'> notes < ...
全栈公开课(第一部分)
Web app 基础
web 开发第一原则:始终打开控制台
可以在控制台查看网络信息
传统 web 应用:获取 html,获取 css,获取 JavaScript
html 是树状的结构(DOM)
可以从控制台操作 DOM
接下来是 AJAX Asynchronous JavaScript and XML 时代
React 入门
React 简介
先安装 Node.js
创建应用:npm create vite@latest part1 -- --template react
const App = () => ( <div> <p>Hello world</p> </div>);
.jsx 文件看起来返回的是 HTML 标记,实际上底层转化为了 JavaScript
注意 JSX 的每个标签都必须关闭,即写成 <br />
使用 props 向组件传递数据
React 组件名称必须大写
React 组件内容需要包含一个根元素,故返回值的最外层通常要加上 <div></div> 或 &l ...
Stanford CS144:计算机网络导论
Internet 和 IP 简介
应用的一天生活
网络应用:通过网络读写数据
模型:双向、可靠的字节数据流连接 connection
一边读,一边写
可靠
双向操作
万维网(HTTP)就是一个服务器-客户端模型:
比特流 BitTorrent 是多客户端之间的连接:
Skype 有两个客户端,方法较多,分为三种情况:
Internet 四层模型
链路层 link:
一次通过一个链路传递数据
以太网 Ethernet,WIFI 等就是属于这一层
网络层 network:其数据包称为数据报 datagram
注意到从网络层的角度看,其是在与另一个网络层通信,却不关心这是通过链路层实现的
网络层
尽可能传递数据报
但有可能丢失
只有 Internet Protocol(IP)
传输层 Transport:
保证端到端的正确、顺序的数据传递
控制阻塞
包括 TCP,UDP 等
应用层 Application:
两个应用间双向可靠的字节流
HTTP 等
可以注意到,只有网络层中只有 IP 一种方法,故 IP 被称为 thin waist
国际标准化组织 I ...
MIT 6.007:信号与系统
引言 Introduction
信号 signal:一个或多个自变量的函数,变量中携带者某种信息
系统 system:用来处理信号
信号分为连续时间信号和离散时间信号(只取整数值)
分类:
线性-非线性
时变-时不变
系统连接:
级联
平行
反馈
分析和表示的两个域:
时域
频域
信号与系统 Signals and Systems
连续正弦信号:
x(t)=Acos(ω0t+ϕ)x(t) = A \cos (ω_0 t + ϕ)
x(t)=Acos(ω0t+ϕ)
周期性:
x(t)=x(t+T0)x(t) = x(t + T_0)
x(t)=x(t+T0)
其中 T0=2πmω0T_0 = \frac{2π m}{ω_0}T0=ω02πm,即周期为 2πω0\frac{2π}{ω_0}ω02π
时间位移 <=> 相位变化:Acos(ω0(t+t0))=Acos(ω0t+ω0t0)A\cos(ω_0(t+t_0)) = A\cos(ω_0 t + ω_0 t_0)Acos(ω0(t+t0))=Acos(ω0t+ω0t0)
偶函数 ...
ETH Zurich:数字设计与计算机体系结构
引言与基础 Introduction and Basics
当前的四大方向:
安全
节省能源
低延时和可预测
AI/ML,生物,医疗,健康等的专属硬件
课程高层次目标:
了解基础
原则
惯例
基于此:
了解计算机工作
权衡不同的设计和思想
实现基于原则的硬件
在越来越复杂的系统中 debug
开发新颖的、开箱即用的设计
这些 DDCA 的原则有利于:
设计更好的硬件、软件、系统
设计中更好地取舍
了解计算机工作原理
并行、批判性思考
最重要的是:
Learning is for life, while exam study is until you pass.
机会在底层
内存中的问题:
row hammer
meltdown and spectre
data movement
权衡,指标 Tradeoffs, Metrics
数据移动消耗了大量的能源,尤其是在机器学习中
新的计算范式(重新思考整个栈):
在内存中处理,在数据边处理
量子计算
安全与可靠计算机
新的加速单元与系统(算法-硬件协同设计):
AI & ML
图 & 数据分析, ...
UCB CS61C:计算机架构的伟大思想
RISC-V
RISC 哲学:
保持指令集小而简单,让其能更容易构建快速的硬件
通过将简单的组合在一起让软件实现复杂的操作
RISC-V 中有 32 个寄存器
序号为 x0-31
x0 的值总是为 0
可以使用序号引用,也可以使用名字
注释 #,只支持单行注释
加减的基本格式:sub x3, x4, x5 等价于 x3 = x4 - x5
立即数有不同的指令:addi x3, x4, 10,即最后一个数必须为立即数。注意到没有对应的减法的版本,因为可以通过加法实现
因为 0 非常常用,所以 x0 寄存器在硬件上设置为 0,即例如 add x0, x3, x4 的指令无效
从内存中读取数据:lw x10, 12(x15),其中 x15 指向 int 数组 A,则 x10 = A[3],即 12 表示字节的偏移
将数据存到内存中:sw x10, 40(x15)
除了按 word 转移数据,也支持按字节 byte 转移数据,如 lb、sb,注意 lb x10, 3(x11) 将内存中的数据复制到 x10 的低位中,使用符号扩展前面的内容
也有 unsigned 版本 lbu,即使用 ...
UCB Data100:数据科学原理与技术
课程概述 Course Overview
在数据科学中有很多工具,但它们不会思考
The purpose of computing is insight, not numbers.
计算的目的是洞察,而不是数字
——Hamming
数据采样和概率 Data Sampling and Probability
偏差:
选择偏差:可能不包括或有利于特定的群体
回应偏差:人们不会真实回答
不回应偏差:人们不一定回答
有替换的随机取样:避免一个人被选到两次
简单随机取样:一个人可能被选到两次
在样本总量很大时,两者表现相似
二项式/多项式概率
Pandas
引入:
import pandas as pd
生成的是 DataFrame 类(类似于一张表):
elections = pd.read_csv("elections.csv")
这个类有丰富的API,这里只介绍其中的一部分
索引
elections.head(5):获取前五行;.tail 同理
loc 通过标签 label 选择物品,有行标签和列标签
loc 的参数可以是:
列表:elections.l ...
CMU 15-213:计算机系统导论
比特,字节和整数 Bits, Bytes, and Integers
布尔代数
位移操作:
左移 x << y:丢弃左边多余的位,右边补 0
右移 x >> y:
逻辑右移:左边补 0
算术右移:左边重复最高位
c 语言默认为算术右移,Java 用 >>> 区分出逻辑右移
当位移长度 < 0 或 > 字长时,为定义
数字范围:
无符号:UMin = 0=000…00 = 000…00=000…0,UMax = 2w−1=111...12^w - 1 = 111...12w−1=111...1
补码:TMin = −2w−1=100...0-2^{w-1} = 100...0−2w−1=100...0,TMax = 2w−1−1=011...12^{w-1}-1 = 011...12w−1−1=011...1
其它值:−1=111...1-1 = 111...1−1=111...1
编码整数:
无符号:B2U(X)=∑i=0w−1xi2iB2U(X) = \sum_{i=0}^{w-1} x_i 2^iB2U ...