编程
2019
重构-总结
随笔
编程
阅读总结
代码整洁之道-总结
·1 分钟
随笔
编程
阅读总结
很早就听说过思维导图,但是怎么去画,怎么让它帮助你去学习,我以前不得其道,以为就像记老师讲的笔记一样,尝试几次后感觉无用就弃之高阁了,这次在知乎上看到一篇回答感觉很是在理,就实践了一番
2018
用户空间隔离
·10 分钟
随笔
编程
MIT6.828
通过前面的学习我们知道,在前两个实验中最主要的程序就是kern/init.c文件中i386_init函数,但是我们看到最后却是一个while循环结束。
KERNBASE对操作系统的影响
·5 分钟
随笔
编程
MIT6.828
概括 # 这个问题主要在这本xv6-ref的第一章的练习题2中提出来
内存分页设计
·3 分钟
随笔
编程
MIT6.828
引言 # 前面已经通过lab1的这篇博文了解了内存分页的实现细节,接下来就谈谈如何具体实现内存分页
引导和操作系统的交互
·3 分钟
随笔
编程
MIT6.828
引言 # 本来自己查了很多资料,想自己写出来,结果下笔的时候发现别人已经把我想写的部分全部写出来了,而且比我想的还要具体,所以我就不写了,把链接放出了,顺便我补充一些
内存分页
·2 分钟
随笔
编程
MIT6.828
引言 # 本来自己查了很多资料,想自己写出来,结果下笔的时候发现别人已经把我想写的部分全部写出来了,而且比我想的还要具体,所以我就不写了,把链接放出了,顺便我补充一些
从CS寄存器看段的前世今生
·2 分钟
随笔
编程
MIT6.828
引言 # Intel作为作为微处理器的航头老大,一直引导CPU的进步发展,也正是因为Intel是一个有着历史包袱的企业,所以站在现代CPU看起来,有一些非常奇葩的设计遗留下来,这些设计一开始是为了兼容,慢慢的将这种兼容又发展成新的功能,把“包袱”转换成“亮点”,段设计就是其中的一个很重要的代表,要想搞懂这个设计在不同的CPU的如何保持兼容和强化,我们必须要慢慢的把CPU的历史给捋顺。
什么是操作系统
·8 分钟
随笔
编程
MIT6.828
引言 # 本文是基于mit6.828 的lab1对操作系统的思考,网上有不少关于lab1的博客,大部分都是介绍如何完成lab1的问题,介绍的比较详细的有这个博客,在这里我就不从问题出发,建议大家看完上面的博客在看我这篇博文,我这篇博文就是从把我遇到的疑惑提炼出知识点,然后再把这些知识点串起来
mit6.828课程总结
·2 分钟
随笔
编程
MIT6.828
引言 # 一开始想直接做一个操作系统,但是万事开头难,学习操作系统需要太多基础知识了,所以就按照网上推荐先学习mit6.828的课程,先把xvf6操作系统搞懂,然后在来实现自己的操作系统,下面就是学习这个课程的体会,按照各个lab的顺序,介绍自己的心得体会
红黑树实现原理
·1 分钟
随笔
编程
红黑树
本篇博客主要基于这篇博客的扩展,建议阅读前先阅读这篇博文,这篇博文详细介绍红黑树的实现原理,完整代码在github的rbtree.go文件中
浅谈"树"这种数据结构
Github
可视化页面
引言 #
二叉搜索树实现原理
·4 分钟
随笔
编程
本篇博客主要基于这篇博客的扩展,建议阅读前先阅读这篇博文,这篇博文详细介绍二叉搜索树的实现原理,完整代码在github的binary.go文件中
浅谈"树"这种数据结构
Github
可视化页面
引言 # 之所以使用Go来实现,个人还是比较喜欢Go的,作为一个基础数据结构,Go用来实现这个速度比Java、C++都快,而且相比Java也能节省内存,而且我也不喜欢换使用冒号。
AVL树实现原理
·2 分钟
随笔
编程
本篇博客主要基于这篇博客的扩展,建议阅读前先阅读这篇博文,这篇博文详细介绍AVL树的实现原理,完整代码在github的avl.go文件中
浅谈"树"这种数据结构
Github
可视化页面
引言 # AVL树是在对二叉搜索树的一种优化,通过构造一棵高度平衡的二叉搜索树从而实现提高空间利用率,所以在了解如何实现之前,必须了解如何构造一棵二叉搜索树,你可以阅读我的这篇博客了解如何构建一棵二叉搜索树,虽然我是用Go来实现的,但是不必了解太多Go方面的知识,我在博客中尽量使用图片的方式来介绍实现原理
2017
浅谈"树"这种数据结构
·10 分钟
随笔
编程
树
一直以来我对树这种数据结构就比较头疼,随便找一个红黑树的博客,大部分都是在谈怎么旋转怎么插入怎么删除,将算法讲的头头是道,但是就算你看懂了也不懂为什么要这样做,所以我们这篇博文就从可视化的角度,慢慢的介绍这些树的来世今生。
几个有趣的动态规划
·6 分钟
随笔
编程
这篇博文是从问题理解动态规划的练习篇,通过几个动态规划的问题剖析进一步理解动态规划
找零钱练习题 # 给定一个零钱数组比如[1, 2, 5],每个值代表一个面额的纸币,给定一个总数(aim),求换钱有多少种方法(每种面额纸币不限量) 这个问题非常经典,所以我就从最先容易想到的算法出发慢慢推导出动态规划
从问题理解动态规划
·5 分钟
随笔
编程
网上关于动态规划的资料,大部分直接给结论,所以一开始我一头雾水,搞不懂为什么要这么做,这篇博文就从实际问题出发,简单的剖析动态规划
漫谈排序算法
·4 分钟
随笔
编程
0x00 引子 # 排序是很多算法的基础,简简单单的排序前人就归纳出很多种算法,但是这些算法多多少少都有着相同的原理
2016
怎么成为数据科学家(翻译)
·2 分钟
随笔
编程
阅读总结
这是我从Quora上看到的一篇非常简短但详细的数据科学家的‘技能点’
来自eBay的一个数据科学家的回答
翻译来自Quora回答
刷题笔记
·1 分钟
随笔
编程
在牛客网刷了16道题了,在这做个总结
概况 # 编程题无非两种一种考算法,一种考数据结构
用例子学TDD
·4 分钟
随笔
编程
TDD
翻译自TDD-byexample
作者Kent Beck, Three Rivers Institute
有删减
表现 # 测试驱动开发核心: # 除非你有失败的自动化测试千万不要写一行新代码 拒绝重复 这两个的简单原则构成了TDD的核心,但是他能规划一个复杂的项目乃至一个团队.这里有一些TDD的建议.
TDD-隔离测试
·4 分钟
随笔
编程
TDD
隔离测试是相对与于整合测试来说的,现代软件架构流行分层式、模块化,而隔离测试就是相当于在每层上进行测试,整合测试就是跨越多个层进行测试
TDD测试开发理解
·3 分钟
随笔
编程
TDD
看了 « Python Web 开发 测试驱动方法» 以后, 感觉自己找到自己的一些项目之所以不能够很好的 维护下去的原因.总结了一下自己的理解, 记录下来.
js的this引发的思考
·2 分钟
随笔
编程
最近这几天在开发一个hmtl5的游戏, 但是对于js怎么使用面对对象来编程有点困惑,查了一些资料
整理如下.
泛型继承的理解
·1 分钟
随笔
编程
泛型对于解决面对对象编程的算法设计可以提高其运算速度,但是对于引用类型来说还是没什么差别,因为引用类型只是指针的地址的调用,简单来说泛型还是挺好理解的,但是对于泛型、非泛型、继承和接口的融合就有些迷惑了。 # 比如说这种接口 # public interface IEnumeratot<T>:IDisposable,IEnumerator,ICompare<T> 这个泛型接口继承了两个非泛型接口,和一个泛型接口。 # 我一开始理解泛型就是一个个模型,只要我们把类型一个参数赋给他,他就能生成一个标准的类型,他缺少的只是一个参数而已,我们引用的时候感觉就像我们引用一个“全体方法”,把参数赋给类型后就可以一直调用类中的方法了,但是对于接口的继承如何理解? # 对于泛型类的继承,继承的类必须实现泛型的参数或者保留泛型的参数,比如下面