自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

clownote

Could Devils Find My Lovely Rabbit?

  • 博客(141)
  • 收藏
  • 关注

原创 【笔记】分布式进程交互:Gossip Protocol(包括SI 模型、SIR 模型等)、非常好的CS-DN模型10我的稳涨VIP可读性以及 P2P Lookup 的方法(Pastry和Chord)

本文分享分布式进程交互的学习笔记。用 Python 伪代码实现。

2024-04-12 16:23:27 638

原创 写个AI虚拟主播:看懂弹幕,妙语连珠,悲欢形于色,以一种简单的实现

动手写一个AI虚拟主播。让机器看懂弹幕,大声闲聊,并用Live2D展现符合心情的动作和表情。以一种简单的实现!人人能学会。分享一个“从想法到 app”的过程。我要的 = f(现有的),明确输入(弹幕)、输出(直播)和限制(我的机器跑的动)。然后,我又如何设计这个f,把它拆分成一个个相对独立的小模块,每个模块完成一件事情,用最简单的代码去实现他们。

2023-02-28 09:29:35 3682 10

原创 MPI 快速入门

浅学 MPI。MPI分布式内存多处理器:处理器 + 辅助组件 => 节点一堆节点 => 高性能计算系统节点 => 进程节点之间:消息传递MPI:消息传递接口

2022-12-01 10:21:18 1495

原创 OpenMP 快速入门

学习《高性能计算:现代系统与应用实践》(Thomas Sterling,Matthew Anderson,Maciej Brodowicz)第 7 章 OpenMP 的基础。

2022-11-30 17:29:52 1474

原创 macOS Monterey 2K 屏开 HiDPI

苹果原装 2k 和 1080p 都一言难尽啊(什么时候学学隔壁巨硬家极为先进的缩放技术),还是得开 HiDPI。但是系统更新了,以前的流程不好使了,浅记一下解决问题的流程。,

2022-10-04 09:35:31 1689

原创 Rust 101

Rust 入门,笔记,集合:vol 1:包管理、项目组织构建Rust 量常量: 始终不可变变量::默认不可变:只可变,类型不可变遮蔽(shadow):作用域内重新声明同名变量。Rust 静态类型Rust 标量类型类型说明整型:,,…* : 由机器架构决定(64 位机:)* : 用作索引值浮点型,默认 ,IEEE 754 格式布尔型:`truefalse`字符4 byte:unicode算术,,,,,

2022-10-03 15:30:02 1384

原创 我用32行代码写了13个API:泛用型Golang增查改删接口生成自动机

每个人都喜欢写CRUD代码,每个人都讨厌写CRUD代码。所以来实现一套可复用的抽象 CRUD 实现,自动挡增查改删。避免 API 项目中充斥大量的重复代码,低代码快速原型开发。

2022-07-25 11:49:21 1061

原创 Rust (2)原生类型

Rust 的原生类型(primitive)分两种:标量类型(scalar type)和复合类型(compound type)用 来声明变量,可以在变量名后加 来指定类型:不写类型说明就自动推断:字面值可以通过后缀指定类型:Rust 还可以通过下文来推断:用 来声明可变变量,mut 的变量值可在后面改变,但类型不能变。注:变量可以被遮蔽(shadow)掉,遮蔽就可以变类型了:(这章重点是类型,不是变量,关于变量后面还会详细学习)整数的字面量还可以加前缀来写二、八、十六进制:,,。还可以加下划线

2022-06-15 20:25:06 198

原创 Go1.18 泛型、模糊测试、工作空间

Go 1.18 新特性 泛型、模糊测试、工作空间 类型参数 随机数据测试 同时开发多个模块module

2022-03-17 10:28:26 242

原创 让 AI 看懂你的心情,并推荐应景的音乐,以一种简单的实现

一种简单的基于心情的音乐推荐系统设计与实现。不同时刻,不同场景,不同心情,给你听不同的歌,一个基于心情的推荐系统。

2022-03-03 18:39:33 1935 5

原创 动手写简单的音乐推荐系统

本文提供两种简单的传统音乐推荐系统(next-songs 方向)的思路与实现。分析音频特征,做基于内容的推荐(CBF);基于以往的、其他用户的数据,做协同过滤(CF)

2022-01-24 21:09:13 5264 8

原创 重装 macOS 开发环境总结与教训

关于我重装 macOS 开发环境这件事记录一下操作步骤,方便下次。整理工具:OmniDiskSweeper、OnyX不要的垃圾先删掉。备份Time Machine 完整备份重要文件个人文件:打包加密,放移动硬盘:各种文档、收藏的书籍、图片、视频工作文件:打包压缩,放移动硬盘:各种文档、密钥(~/.ssh、~/.bashrc、~/.zshrc、~/.vimrc…)、证书、配置文件(v2啥的 config)各种项目源码: git 和远端同步一下艺术作品:分类整理放移动硬盘(src 目录

2022-01-05 22:27:37 734 3

原创 将 Homebrew 安装的 Python 加入 pyenv 版本管理

将 Homebrew 安装的 Python 加入 pyenv 版本管理

2022-01-05 22:13:49 1019

原创 [考研][计算机组成原理] 程序的机器级表示

考研,408,组成原理,程序的机器级表示考研 408 大纲《计算机组成原理》指令系统部分新增的 高级语言程序于机器级代码直接的对应 考点:选择结构语句的机器级表示循环结构语句的机器级表示过程(函数)调用对应的机器基本表示主要看 CSAPP 整理了一下。流程控制if-elsecsapp2e.Zh_CN P130: 3.6.4C 语言模版:if (test_expr) then_statementelse else_statementGoto 版本: t =

2021-10-09 16:03:56 1847

原创 各种排序算法,用C语言实现

你心爱的各种排序算法,用 C 语言实现。我们下面将要实现的算法,全部准循这个接口:// sort 对数组 A 的前 n 个元素进行原址排序typedef void (*sort)(int A[], int n);直接插入排序遍历,往前找到合适的位置,逐个元素后移腾出空间,插入进去。复杂度:时间 O(n2)O(n^2)O(n2)空间 O(1)O(1)O(1)voidinsert_sort(int A[], int n){ for (int i = 0; i < n;

2021-08-23 12:19:41 179

原创 macOS 设置快捷键启动终端

macOS 设置快捷键启动终端在 Linux 系统中,习惯了可以随处唤出终端,做一些简单的工作,比如用 aria2c 下载个东西什么的。换到 macOS 就觉得很麻烦,macOS 系统自带的终端并不支持设置快捷键快速打开一个命令行窗口。但我们可以通过「自动操作」+「Apple Script」来实现这个操作。自动操作打开“自动操作”(automator.app)-> 新建 服务。在里面添加一步 运行 AppleScript:填入 Apple Script 内容:on run {input

2021-08-20 12:50:55 1549 5

原创 不一样的“人工智能语言”Prolog

刚发布的八月份的 TIOBE 排行榜前 20,赫然出现了上古人工智能语言 Prolog!TIOBE 说到:“And, even more astonishing, we see Prolog re-entering the top 20 after 15 years… making an unexpected comeback.”(图片来自 TIOBE Index for August 2021)时隔十余年,这个独特的语言居然又出现在了大家眼前,排名仅次于 Go!还不快学起来!如果你学不动了,就请

2021-08-08 21:47:07 1200 1

原创 Hello, Rust!

久违的学习笔记系列!!天天复习考研,吐了。划一天水放松一下吧,学学 Rust。本文是学习以下(主要)内容的笔记:Rust 官网 get started: https://www.rust-lang.org/zh-CN/learn/get-startedRust By Example (中文译本) 1. Hello World: http://rustwiki.org/zh-CN/rust-by-example/hello.htmlRust 文档 std::fmt: https://do

2021-07-23 21:22:41 135

原创 KMP 算法注解

KMP暴力算法是在失配时,回溯子串指针,从头开始匹配。而 KMP 失配时尝试更有进取心地往前走,掠过那些不可能匹配的情况。往前移动的长度由一个「部分匹配表」来确定。(图片来自 CLRS《Introduction to Algorithms, 3rd Ed》1)部分匹配表其实就是失配那个位置前面(匹配上的)里面最长的公共前后缀长度,移动就是要把前缀直接对上后缀那个位置,就略过了中间不可能匹配(已经扫过了,后面不匹配,再重复扫也还是不匹配)的那一段,直接开始尝试下一个可能的匹配。部分匹配表参考 Wi

2021-07-15 15:50:13 153

原创 用 R 做数据分析

用 R 做数据分析Vol_0:数据的数字特征及相关分析导入数据导入文本表格数据Year Nationwide Rural Urban1978 184 138 4051979 207 158 4341980 236 178 4961981 262 199 5621982 284 221 5761983 311 246 6031984

2021-07-15 15:43:35 4982

原创 Xv6 文件系统

Xv6 文件系统学习: xv6-riscv-book Chapter 8 File system文件系统:目的:组织和储存文件一般支持:在用户和应用之间共享数据持久化:重启后,数据仍可用实现难点:在磁盘上的数据结构:文件、目录、记录错误恢复多个不同的进程可能同时操作文件系统访问磁盘的速度比内存慢,文件系统应该用内存对热门块做缓存Xv6 文件系统总览七层实现:disk 层:从设备(virtio haed drive)读写磁盘块buffer cache.

2021-05-11 15:32:06 872

原创 6.S081 Xv6 Lab Multithreading

6.S081 Xv6 Lab: MultithreadingLab: Multithreading of MIT 6.S081 Fall 2020$ git fetch$ git checkout thread$ make cleanUthread: switching between threads这个题有意思的,手写用户线程的实现。做起来不难,大体框架人家都给了,自己只要实现一下上下文切换。首先在 notxv6/uthread.c 里面补充定义一个「线程上下文」:// saved.

2021-05-01 11:44:26 2563 3

原创 Xv6 调度

Xv6 SchedulingLearning xv6-riscv-book Chapter 7 Schedulingtime-share the CPUs: run more processes than CPUstransparent to user processesmultiplexing processes onto CPUs:illusion: each process has its own virtual CPUMultiplexingSwitching CPU .

2021-04-25 16:08:26 230

原创 Xv6 Locking

LockingLearning xv6-riscv-book Chapter 5 LockingConcurrency: situations in which multiple instruction sreams are interleaved, due to multiprocessor parallelism, threasd switching, or interrupts.Concurrency control: strategies aimed at correctness und.

2021-04-09 09:13:25 377

原创 6.S081 Xv6 Lab 5: lazy page allocation

Lab: xv6 lazy page allocationhttps://pdos.csail.mit.edu/6.S081/2020/labs/lazy.html新的 2020 版哦。$ git fetch$ git checkout lazy$ make cleanEliminate allocation from sbrk()就是把 sys_sbrk 里的 growproc 调用删了,等用到的时候再去分配内存。如果是空间减小,要取消分配。uint64sys_sbrk(void.

2021-04-03 13:23:07 1425

原创 Xv6 Interrupts and device drivers

date: 2021-03-29 16:36:49.049839title: Xv6 Interrupts and device driversXv6 Interrupts and device driversLearning: xv6-riscv-book Chapter 5 Interrupts and device driversDriver:code in an OSmanages a particular deviceconfig hardwaretells opera.

2021-03-30 13:35:10 175

原创 6.S081 Xv6 Lab 4 traps

Lab: traps6.S081 的 Xv6 RISC-V Lab traps,实验内容:https://pdos.csail.mit.edu/6.S081/2020/labs/traps.html$ git fetch$ git checkout traps$ make cleanRISC-V assembly这题没什么具体要做的,就看一看,跟着题目学一下 RISC- V 汇编。Backtrace这题主要是实现打印函数栈。就是 GDB 里面 bt 的这种效果:(gdb) bt.

2021-03-28 12:58:40 2417 2

原创 riscv gdb: python exception

riscv gdb: python exception问题描述riscv64-unknown-elf-gdb 报错:Python Exception <type 'exceptions.NameError'> Installation error: gdb._execute_unwinders function is missing: 问题分析riscv64-unknown-elf-gdb 缺失 GDB 的 Python 模块。解决方法手动装一个完整的 GDB,把 Python

2021-03-27 09:51:09 585

原创 Xv6 traps and system calls

Trap: CPU transfer to speical code to handle eventssystem call exception interruptTraps and system callsRISC-V trap machineryRegistershardware trap handling sequenceTraps from user spaceuservecusertrapusertrapretuserretCalling system callsSys

2021-03-18 22:14:40 485

原创 6.S081 Xv6 Lab 3: page tables

Lab: page tablesMIT 6.S081 Xv6-riscv Lab 3: https://pdos.csail.mit.edu/6.S081/2020/labs/pgtbl.htmlIn this lab you will explore page tables and modify them to simplify the functions that copy data from user space to kernel space.Print a page tableDef.

2021-03-12 17:31:29 6255 4

原创 Xv6 Page Table

Xv6 Page TableLearning xv6-riscv-book Chapter 3 Page tablesXv6 Page TablePaging hardwareKernel address spaceCreating an address spacePhysical memory allocationPhysical memory allocatorProcess address spacesbrkexec

2021-03-09 12:37:55 738

原创 6.S081 Xv6 Lab 2: system calls

Lab: system callsFrom: https://pdos.csail.mit.edu/6.S081/2020/labs/syscall.html【NOTE】Add a new system callTo add a new system call, say, named xxx:add a prototype for the system call to user/user.hint xxx(int)add a stub to user/usys.plentry(.

2021-03-02 15:25:01 2037

原创 Xv6 Operating System Organization

Operating System OrganizationAbstracting physical resourcesUser mode, supervisor mode, and system callsKernel organizationXv6 organizationProcess overviewProcessThreadVirtual addressSystem callStarting xv6 and the first process

2021-02-27 21:19:00 222

原创 6.S081 Lab 1: Xv6 and Unix utilities

date: 2021-02-24 15:03:34.892093tags: xv6title: Xv6 Lab Utilities[外链图片转存失败,源站可能有防盗Meaning Unknown’s Head Image]!链机制,建上https://传(imb2og.csdnimg.cn/img_convert/3af2d2e80V15601e5b62fb41b7f9a42093.pg)(https://tva1.sinaimg.cn/large/0072Vf1pgy1fodqj0k1d4j31k.

2021-02-24 15:12:59 819 6

原创 Xv6 文件系统接口

Xv6 文件系统接口文件系统调用System callDescriptionint chdir(char *dir)改变当前目录int mkdir(char *dir)创建新目录int open(char *file, O_CREATE)创建新文件int mknod(char *file, int, int)创建新的设备文件(后两个参数是主设备号、次设备号,这两个数在内核中唯一确定一个设备),对设备文件的 read、write 会转发给设备,而不操作文件系.

2021-02-21 14:53:29 116

原创 Xv6 管道

Xv6 管道参考: xv6-riscv-book 1.3 Pipes文章目录Xv6 管道pipe管道 V.S. 临时文件pipeXv6 系统调用 pipe() 来创建管道。管道类似于 Go 语言中的 chan。在 Shell 里我们用 | 表示管道,对于命令: echo "hello world" | wc,可以用如下代码实现:// upipe.c//// Runs the program wc with standard input connected to the read end .

2021-02-20 14:19:18 1129

原创 Xv6 I/O 与文件描述符

Xv6 I/O 与文件描述符Xv6 I/O 系统调用Xv6 文件描述符read & write重定向的实现共享偏移dup

2021-02-18 17:43:29 749

原创 Xv6 多进程编程

本文参考 xv6-riscv-book,介绍如何使用 Xv6 系统调用,实现多进程编程。把书上的代码完整化,并附上真实系统中的实现方式fork exit wait exec

2021-02-18 11:50:52 327

原创 Xv6 编写用户程序

如何在 Xv6(xv6-riscv)中添加自己编写的用户程序,比如实现一个 helloworld?1. 编写代码2. 修改 Makefile3. 编译运行 Xv6

2021-02-17 17:58:58 2035

原创 Xv6 编译运行

本文介绍在 macOS 下搭建环境、编译运行 6.S081 课程的 mit-pdos/xv6-riscv 系统。Xv6 编译运行工具安装测试安装编译运行退出系统

2021-02-17 13:03:35 745 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除