自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 6.824 实验一 —— MapReduce

前言实验一是要实现一个 MapReduce 系统,基本就是两个部分:实现 master 程序和实现 worker 程序。这个实验基本就是劝退怪了,一来是对 golang 的 rpc 和并发的使用要比较熟悉,二来就是要对 MapReduce 的整个流程机制要比较熟悉。其实有一个小秘诀,就是拼命看论文中的这张图,再拼命看下面的流程讲解:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VHTM6O4z-1642697405642)(https://tva1.sinaimg.cn/

2022-01-21 00:50:31 3315

原创 MapReduce 论文阅读

本文原载于我的博客:https://ziyang.moe/article/mapreducepaper.html前言MapReduce,是 Google 早年提出了一种软件架构模型,支持大规模数据集的并行运算。现在这个概念被运用在大量分布式系统中。相关的理论由 Google 在 2004 年发表在论文《MapReduce: Simplified Data Processing on Large Clusters》中,可以在这里阅读全文。13 页的小论文,信息密度比某些小论文不知道高到哪里去了。由于本

2022-01-16 21:53:10 1467

原创 CSAPP LAB —— 0. 实验环境搭建

本文原载于我的博客:https://ziyang.moe/article/csapplab0.html前言最近准备快速过一遍 CSAPP。学 CSAPP 不做实验,就像四大名著不看红楼梦,说明这个人文学造诣和自我修养不足,他理解不了这种内在的阳春白雪的高雅艺术,他只能看到外表的辞藻堆砌,参不透其中深奥的精神内核,他整个人的层次就卡在这里了,只能度过一个相对失败的人生。劝退 CSAPP 实验人的最大因素,就是 Linux 环境。本科时候做过一次,用的是 Vmware Workstation 虚拟机

2021-12-27 01:49:25 8213 2

原创 一起写个数据库 —— 6. 记录的版本与事务隔离

本文原载于我的博客:https://ziyang.moe/article/mydb6.html本章涉及代码都在 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/vm 中。前言从这一章开始,我们开始讨论 Version Manager。VM 基于两段锁协议实现了调度序列的可串行化,并实现了 MVCC 以消除读写阻塞。同时实现了两种隔离级别。类似于 Data Mana

2021-12-26 00:47:29 1631 2

原创 一起写个数据库 —— 10. 服务端客户端的实现及其通信规则

本文原载于我的博客:https://ziyang.moe/article/mydb10.html本章涉及代码都在 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/server 、 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/client 与 https://

2021-12-26 00:45:39 1486

原创 一起写个数据库 —— 9. 字段与表管理

本文原载于我的博客:https://ziyang.moe/article/mydb9.html本章涉及代码都在 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/parser 与 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/tbm 中。前言

2021-12-25 18:28:51 1223

原创 一起写个数据库 —— 8. 索引管理器

本文原载于我的博客:https://ziyang.moe/article/mydb8.html本章涉及代码都在 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/im 中。前言IM,即 Index Manager,索引管理器,为 MYDB 提供了基于 B+ 树的非聚簇索引。目前 MYDB 只支持基于索引查找数据,不支持全表扫描。感兴趣的同学可以自行实现。在依赖关系图中可以

2021-12-24 23:21:31 1444

原创 一起写个数据库 —— 7. 死锁检测与 VM 的实现

本文原载于我的博客:https://ziyang.moe/article/mydb7.html本章涉及代码都在 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/vm 中。前言本节将收尾 VM 层,介绍一下 MVCC 可能导致的版本跳跃问题,以及 MYDB 如何避免 2PL 导致的死锁,并将其整合为 Version Manager。版本跳跃问题说到版本跳跃之前,顺便提一

2021-12-23 23:53:23 1734 3

原创 一起写个数据库 —— 5. 页面索引与 DM 层的实现

本文原载于我的博客:https://ziyang.moe/article/mydb5.html本章涉及代码都在 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/dm/pageIndex、https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/dm/dat

2021-12-11 22:00:17 1750 4

原创 一起写个数据库 —— 4. 日志文件与恢复策略

本文原载于我的博客:https://ziyang.moe/article/mydb4.html本章涉及代码都在 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/dm/logger 和 https://github.com/CN-GuoZiyang/MYDB/blob/master/src/main/java/top/guoziyang/mydb/backend/dm/Reco

2021-12-11 15:05:22 2215 3

原创 一起写个数据库 —— 3. 数据页的缓存与管理

本文原载于我的博客:https://ziyang.moe/article/mydb3.html本章涉及代码都在 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/dm/pageCache 和 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/dm/p

2021-12-05 17:12:04 1889 3

原创 C 语言期末重难点

数据表现与运算常量八进制整数:以0开头,如 0123 就是一个八进制整数十六进制整数:以 0x 或 0X 开头,如 0x12 或 0xFF。科学计数法:以 e 或者 E 表示以 10 为底的指数,e 前需有数字,e 后必须为整数。如 1e10 或 1.2E-12普通字符:由单引号包裹。字符常量存储的是其 ASCII 码,本质是一个数字,所以可以参与运算。例如 'A' + 1 的结果是 B转义字符:通常是控制字符,用来控制终端的光标。常用的如:\n:换行,将光标移动到下一行的开头\t:水平制

2021-12-04 19:09:02 2231 10

原创 一起写个数据库 —— 2. 引用计数缓存框架和共享内存数组

本文原载于我的博客:https://ziyang.moe/article/mydb2.html本章涉及代码都在 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/common 中。前言从这一章中,我们开始讨论 MYDB 中最底层的模块 —— Data Manager:DM 直接管理数据库 DB 文件和日志文件。DM 的主要职责有:1) 分页管理 DB 文件,并进行缓存;

2021-12-01 01:07:53 2596 3

原创 一起写个数据库 —— 1. 从最简单的 TM 开始

本文原载于我的博客:https://ziyang.moe/article/mydb1.html本章涉及代码都在 https://github.com/CN-GuoZiyang/MYDB/tree/master/src/main/java/top/guoziyang/mydb/backend/tm 中。如第 0 章所述:TM 通过维护 XID 文件来维护事务的状态,并提供接口供其他模块来查询某个事务的状态。XID 文件下面主要是规则的定义了。在 MYDB 中,每一个事务都有一个 XID,这个

2021-11-28 17:45:40 3505 2

原创 一起写个数据库 —— 0. 项目结构和一些不得不说的话

本文原载于我的博客:https://ziyang.moe/article/mydb0.html项目地址:https://github.com/CN-GuoZiyang/MYDB前言(一些废话)或许是造轮子上瘾了,也有可能更有可能只是觉得需要补一补数据库的基本原理,大概花了大半个月,利用下班到半夜这段时间,我做完了这个项目。和数据库也算有点渊源的,在学校开设数据库系统这门课的时候,我恰巧在深圳实习。于是乎,上网课成了我实习期间名正言顺的摸鱼理由,除了听课,其他啥都干。同样,操作系统也是在那个时候教授的

2021-11-27 17:17:49 5006 23

原创 来自2021秋招人的总结

转自我的牛客,https://www.nowcoder.com/discuss/556724秋招历程几个月后,当我点下“接受 Offer”按钮的时候,准会想起我那个焦虑到睡不着的那个遥远的夜晚 那个晚上,我的秋招开始了。很多亲戚都劝我:“哎你一个本科生,找什么工作,读研才能找到好工作呀”,我的父母也是忧心忡忡,但是也不知道该如何劝我。颓废了几天之后,我在网上找了份深圳的实习,义无反顾地踏上了去深圳的飞机。四月底疫情基本结束了,但还是偶有反复,到达深圳的前两天,深圳的宝安区又爆发了小规模的疫情,

2020-11-29 01:33:31 2093 5

原创 2021秋招被阿里反复鞭尸

转自我的牛客,https://www.nowcoder.com/discuss/454069本来都忘了都东西,整理硬盘的时候发现了这份凉经,发出来回馈牛友(骗经验)面试从4.29号开始,一直到五月底结束,持续了接近一个月,共经历了三轮七面,皆为电话面,其中最后一面因为忘整理了,就没了……也怪我投实习太晚了,应该hc都没了,沦为了刷kpi的工具人……不过也是我第一次面试,就当是锻炼下好了一轮三面挂,二轮一面挂,三轮三面挂一面(20.04.29)自我介绍打开浏览器,做个题目:如何判断一棵

2020-11-29 01:32:30 1390

原创 2021秋招字节跳动一遍过

转载自我的牛客,https://www.nowcoder.com/discuss/448243更新,牛客许愿果然很灵,昨天三面,今天就收到意向书了之前报过字节的春招面试,不过挂的很快。上个月的时候,字节的HR就又联系到我,问我要不要报字节的提前批那就报咯u1s1,字节跳动的面试体验是极佳的,效率高,不拖沓不过由于面试没有录音,只能记得大概了,上午刚面完,发面经回馈牛友,听说牛客许愿很灵,那许个愿,求个offer三面合在一起说吧,有点忘了,但是大概就是这些方面服务降级和熔断相关(可能因为我

2020-11-29 01:30:59 1504

原创 一起写个Dubbo——7. 服务端自动注册服务

到目前为止,客户端看起来挺完美了,但是在服务端,我们却需要手动创建服务对象,并且手动进行注册,如果服务端提供了很多服务,这个操作就会变得很繁琐。本节就会介绍如何基于注解进行服务的自动注册。

2020-08-04 17:04:21 11227 26

原创 一起写个Dubbo——6. 自动注销服务和负载均衡策略

一起写个 Dubbo 第六节,实现服务自动注销和负载均衡策略

2020-08-04 16:17:45 9277 24

原创 一起写个Dubbo——5. 基于 Nacos 的服务器注册与发现

用 Naocs 作为服务注册中心进行远程过程调用

2020-08-04 12:31:20 12003 16

原创 一起写个Dubbo——4. Kryo序列化

上一节我们实现了一个通用的序列化框架,使得序列化方式具有了较高的扩展性,并且实现了一个基于 JSON 的序列化器。这一节我们就来实现一个基于 Kryo 的序列化器。

2020-08-03 10:55:23 8156

原创 一起写个Dubbo——3. Netty传输和通用序列化接口

本节我们会将传统的 BIO 方式传输换成效率更高的 NIO 方式,当然不会使用 Java 原生的 NIO,而是采用更为简单的 Netty。本节还会实现一个通用的序列化接口,为多种序列化支持做准备,并且,本节还会自定义传输的协议。

2020-08-02 21:36:51 14361 30

原创 一起写个Dubbo——2. 注册多个服务

本文原载于我的博客,地址:https://blog.guoziyang.top/archives/63/,项目地址:https://github.com/CN-GuoZiyang/My-RPC-Framework本文对应的commit为8467b19,完整的项目目录上一节中,我们使用 JDK 序列化和 Socket 实现了一个最基本的 RPC 框架,服务端测试时是这样的:public class TestServer { public static void main(String[] arg

2020-08-02 16:17:07 12524 24

原创 并发中的ArrayList——CopyOnWriteArrayList源码阅读

面试中常问并发?那怎么能没看过CopyOnWriteArrayList源码呢

2020-06-28 16:39:10 370

原创 一起写个Dubbo——1. 一个最简单的实现

面试问你RPC,一起写个Dubbo吧!一起写个Dubbo第一章,一个最简单的RPC框架实现

2020-06-26 17:53:05 25828 26

原创 一起写个Dubbo——0. 一些不得不说的话

面试问你RPC?一起写个Dubbo吧!一个RPC框架的渐进式实现教程

2020-06-26 17:49:54 19032 1

原创 经常用ArrayList?来看看源码吧!

面试常问ArrayList?一篇源码解读就搞定!

2020-06-13 19:15:20 2404 2

原创 面试中又被问到SpringMVC了?不如自己写一个吧!

自己写一个SpringMVC框架,代码齐全,功能完备,从此面试不愁!

2020-06-08 16:14:58 1003

原创 面试又问我https?不如我们抓个包看看吧!

通过对https握手的抓包过程,了解https的密钥协商机制,面试不再愁!

2020-06-06 17:32:46 593

原创 面试别再问我HashMap了——史上最全HashMap源码解读!

本文会深入HashMap的源码,对其常用方法和相关属性进行解读,进一步了解HashMap的机制。着重于一些HashMap的重要方法和算法的解读。面试不愁!

2020-06-05 12:21:57 595 2

原创 0202年了,你还不会lambda表达式?一文带你完全搞懂lambda!

Java 8 新特性——Lambda 表达式学习lambda表达式,Java 8新引入的一个语法糖,是Java进入函数式编程的第一步,本质上是一个匿名接口实现。

2020-06-04 11:40:37 1078

原创 为你的WSL 2编译一个最新的Linux内核吧!

随着Win 10 2004版本的正式推送,很多人也都用上了最新的WSL 2,这使得Win 10成了最好的Linux发行版(雾)。WSL 2相比WSL 1,最大的改变就是使用了真正的Linux内核,而不仅仅是一个适配层。我们可以通过命令uname -r查看这个内核的版本,通过正式推送获得的WSL 2的内核版本应当是4.19.84。这个版本比较老,让我们为WSL 2编译一个最新的稳定版吧

2020-06-04 00:02:23 5025 3

原创 手撸一个Spring IOC容器——渐进式实现

最近阅读了Spring Framework中的IOC容器部分的实现,手痒,决定自己实现一个比较简单的版本。和我一起手写一个,面试的时候丝毫不虚!

2020-06-03 13:45:37 1241

原创 哈工大2019年春近世代数复习

就是一篇很普通的近世代数的复习时的笔记而已本文原载于我的博客,地址:https://blog.guoziyang.top/archives/23/

2020-06-02 21:45:44 2592 1

原创 哈工大2019年春算法设计与分析期末复习

就是一篇很普通的算法设计与分析的复习时的笔记而已本文原载于我的博客,地址:https://blog.guoziyang.top/archives/22/

2020-06-02 21:44:50 5711 8

原创 哈工大2019年春形式语言与自动机期末复习

就是一篇很普通的形式语言与自动机的复习时的笔记而已本文原载于我的博客,地址:https://blog.guoziyang.top/archives/21/

2020-06-02 21:43:17 6135 1

原创 哈工大2018年秋计算机系统复习

就是一篇很普通的计算机系统的复习时的笔记而已本文原载于我的博客,地址:https://blog.guoziyang.top/archives/20/

2020-06-02 21:41:52 2242 1

原创 哈工大2018年秋数据结构期末复习

就是一篇很普通的数据结构的复习时的笔记而已本文原载于我的博客,地址:https://blog.guoziyang.top/archives/19/

2020-06-02 21:39:29 2666

原创 Linux 0.11 实验环境一键配置脚本(2020年版)

哈工大操作系统实验环境一键配置脚本的说明,2020年最新版本,主要包含Bochs虚拟机和 Linux-0.11的源码脚本地址:https://gitee.com/cn-guoziyang/oslab

2020-06-02 21:33:26 863 1

空空如也

空空如也

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

TA关注的人

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