操作系统-电梯调度算法

最近在复习操作系统,老师不讲设备管理这一部分,让我们自学,期末要考电梯调度算法。这篇文章分别用自然语言,流程图,C++语言来描述电梯算法,其实电梯算法真的很简单😸

Read More

Java基础-Pass by value

Java的方法参数是按值传递的,这篇主要是把Java的传值机制和C语言的指针和二重指针进行比较,并基于汇编代码更深入的理解传值和传引用。

Read More

数据结构-Treap

今天的算法课上,老师讲了一个比较有意思的数据结构:Treap。它的名字就比较有意思,为什么叫Treap呢?是Tree + Heap两个单词的结合,所以这个数据结构也就是二叉树和二叉堆的结合了。

简介

Treap也是平衡二叉搜索树的一种。

Balanced Binary Search Tree 也可以简称为 Balanced Search Tree,为了方便区分我下面会简称为BBST

Read More

Java基础-ArrayList和LinkedList

相对与HashMapArrayListLinkedList都算比较简单的数据结构,通过这篇文章分别的了解一下它们。

Read More

Java基础-HashMap源码简析

基于HashMapJDK1.8中的源码

参考前辈们的成果,简单的分析HashMap的源码,了解一下HashMap的存储结构,主要方法工作原理和线程安全这几个方面。

Read More

Java基础-Object的11个方法

一切从对象开始。在Java中Object类是是所有类的父类,也是根类。它一共有11个方法。

Read More

Java基础-目录

接下来应该会写一系列Java基础的笔记吧,之前虽觉得自己已经熟悉Java,但都没有系统的做笔记和整理,而且Java也是自学的,很多知识都没有巩固和涉及,所以会顺着这个技能图谱写下去,可以在这个tag下找到这些笔记。为了准备春招,加油啊(

Read More

2018年

The article has been encrypted, please enter your password to view.

Read More

乞丐版Vi编辑器的实现2-原始输入输出

实现乞丐版Vi的第二步,主要完成的功能有读取键盘的输入,键位映射和移动光标。

Read More

乞丐版Vi编辑器的实现1-Raw mode

参考 Entering raw mode

这一节的内容可能比较枯燥,是一些底层的 Terminal 的属性:canonical mode,回显(echoing),键盘按键对应的 ASCII 码(可以发现一些按键不止对应一个编码,还有些按键对应的是同一个编码)和一些杂项设置…通过改变这些设置,让 Terminal 进入所谓的 “raw mode”。

Makefile

我使用 make 来构建 VIP,因为只有两个源文件,所以 Makefile 很简单:

1
2
3
4
5
6
7
8
9
10
11
12
13
CC = gcc
CFLAGS = -Wall -Wextra -pedantic -std=c99 -O3

all: vip

debug:
$(CC) $(CFLAGS) vip.c -g -o vipd

re:
make clean;make

clean:
rm -f vip vipd

CFLAGS 里使用 c99 标准;使用-O3进行编译优化,主要是对内联函数进行优化;-Wall -Wextra -pedantic会打印一些额外的警告,对 debug 有帮助。

Read More