设计模式(二):结构型模式

本文介绍设计模式中的结构型模式,这些模式描述如何将类或对象结合在一起形成更大的结构,通过简单的结合形成更加复杂强大的结构。
阅读全文

设计模式(一):创建型模式

本文介绍设计模式中的创建型设计模式,这一类设计模式对类的实例化过程进行了抽象。主要介绍工厂方法模式、单例模式以及建造者模式,这些设计模式在软件设计中经常被使用。
阅读全文

深度学习系列(三):卷积神经网络(CNN)

本文是深度学习系列的第三篇文章,也是很早以前写的,现在搬运过来。由于最近课题需要,正好我又在学习深度学习和强化学习的内容,这里刚好把之前的系列一并补上来。
阅读全文

强化学习(一)

由于实验室课题需要,近期要学习一些强化学习相关的知识,这里打算用一个系列来记录学习的相关过程,也当作自己复习的笔记。这是这个系列的第一篇博客,讲一些强化学习的基础概念。
阅读全文

算法(三)

这是关于算法记录的第三篇博客,这篇博客分享一些有趣的题,主要是一些比较巧妙的算法题的解法,有些是数学相关的,另一些是位运算相关的。这些题没有什么很固定的模板可以套,但是解法又比较有趣。
阅读全文

最近的一些杂事

这篇博客不讲技术,随便聊聊别的杂事。
阅读全文

6.S081-Lab 6 Multithreading

本篇博客是 6.S801 Lab系列的第 6 篇博客,这次Lab:Multithreading,是多线程相关的实验。通过这次实验以及阅读相关的材料和Xv6源码能够对进程(或线程)之间的切换有一个较为清晰的认识。
阅读全文

6.S081-Lab 5 Copy-on-Write Fork for xv6

本篇博客是6.S081课程的第五次Lab:Copy-on-Write Fork for xv6 的分析,这次Lab我认为还是比较有难度的,内容是实现fork时的写时复制,实际上这也是现代操作系统都做了的一个优化。
阅读全文

算法(二)

本文还是算法知识的整理记录博客,主题是动态规划。由于近期接触的更多是C++,且我认为C++标准库中容器设计较java更简洁易用,所以本文使用C++为例。和上篇算法一样,借助leetcode中题作为例子,此外动态规划思想不难,但是题目纷繁复杂,有时很难找到状态变量的选取,因此文中只是举部分有代表性的例子。
阅读全文

6.S081-Lab 4 traps

本篇博客是6.S081课程的第四次Lab分析,做这次Lab之前,需要理解Xv6操作系统系统调用时用户空间和内核空间之间的切换过程,还需要清楚函数嵌套调用时运行时栈的栈帧的结构。
阅读全文