Java基础-目录

接下来应该会写一系列Java基础的笔记吧,之前虽觉得自己已经熟悉Java,但都没有系统的做笔记和整理,而且Java也是自学的,很多知识都没有

阅读全文

2018年

2018 年 1月的时候还是大二上学期,紧张的考试周。也是1月,还记得当时QQ飞车的手游刚出来;也在1月,我恋爱了,紧张感动还是憧憬?因为是异地恋之后

阅读全文

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

参考 Raw input and output,讲解的顺序和原教程不同,而且省略了很多关于转义序列的说明,键位也是模仿 Vi 来实现的。

这一步里,主要完成的功能有读取键盘的输入,键位映射和移动光标。

重构输入函数

为了处理更多更复杂的按键,我们需要写一个函数来专门读取键盘输入。将 step1 的代码作如下修改:

阅读全文

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

参考 Entering raw mode

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

Makefile

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

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 有帮助。

阅读全文

CSAPP Data Lab 思路和笔记

Data Lab[Updated 11/2/18]

11/2/18 新鲜出炉的 Data Lab,不同时期的 lab 内容会不一样。

肝了两天还是没有全部做出来,之前很以为很简单呢(

最近也终于买了 CS:APP3e 英文版,配合 CMU 的课程视频食用更佳。顺便可以练习英语听力和阅读,阅读已经可以流畅了,这种英文书基本看得懂,但是听力就不行(

解题的思路一般会写在注释里的。

bitXor

/*s
 * bitXor - x^y using only ~ and &
 *   Example: bitXor(4, 5) = 1
 *   Legal ops: ~ &
 *   Max ops: 14
 *   Rating: 1
 */
int bitXor(int x, int y) {
  // 德摩根定律
  // a xor b = (~a | ~b) & (a | b)
  // = ~(a & b) & ~(~a & ~b)
  return ~(~x & ~y) & ~(x & y);
}

虽然这题比较简单,但我还是想了好久。主要是我把这个德摩根定律忘得差不多了,记得在离散数学里讲过。

利用的性质主要是:

  • a ^ b = (~a | ~b) & (a | b)
  • (~a | ~b) = ~(a & b)

阅读全文

Spring Boot项目部署之开启HTTPS

迫于课设,完成了对 LightBlog 的重构,使用 Spring Boot 和 SSM 框架,今晚突然想要支持一下 HTTPS(小绿锁)。 差不多折腾了一小时,现在使用的是下面这种方案(又不是

阅读全文

【Spring 揭秘(二)】Spring AOP

术语

术语不是为了限制你的设计,而是借此可以更方便的讨论和思考这个问题。这是我早上在《游戏设计要则探秘》上看的一句话,当然术语也不能华而不实,最好做到顾名思义或指出本质。

在使用 AOP 之前,我们需要了解AOP涉及的相关概念。

  • JoinPint:AOP的功能模块要植入到OOP的模块中,需要知道在哪些执行点上进行植入,这些执行点就是JoinPoint。JoinPoint可以是方法的调用,字段设置,异常处理执行等等。

  • PointCut:PointCut是对JoinPoint的表现形式,可以直接用方法名,正则表达式还有特定的PointCut表述语言。

  • Advice:Advice就是横切点功能的载体。包括,Before Advice,AAfter Advice,Around Advice。这三个切入的时间不同,可顾名思义。

  • Aspect:Aspect可以理解为切面,它可以包含多个PointCut和Advice。

阅读全文