分类 computer science 计算机科学 下的文章

bjmayor发布于2021-08-29

时间轮算法

[TOC]

时间轮算法。目前的定时任务基本都是基于这个思想实现的。

基本思想

1b80c724801c46f0b5e89c14adf2fadf-image.png

如上图中所示,我只需要把任务放到它需要被执行的时刻,然后等着时针转到这个时刻时,取出该时刻放置的任务,执行就可以了。 这就是时间轮算法最核心的思想了。

什么?时针怎么转? while-true-sleep 下面让我们一点一点增加复杂度。

阅读全文»

bjmayor发布于2021-08-29

C 程序设计语言-读书笔记

[TOC]

《C 程序设计语言》。C语言经典版本。必读。 语法之外,主要是1988年出的ANSI标准。

学习一门语言。语法:1%, 标准库:10%, 惯用法:5%, 其他:84%。

导言

C语言通用规则: 在允许使用某种类型变量值的任何场合,都可以使用该类型的更复杂的表达式。

修改"20"等不明其意的幻数的方式是定义一个有意义的名字。

#define 名字 替换文本 # 注意,这里没有分号。。。

#define 指令行末尾没有分号。

标准库提供的输入/输出模型非常简单。无论文本从何处输入,输出到何处,其输入/输出都是按照字节流的方式处理。

字符在机器内部是以位模式出现的。char类型专门存储这类数据。getchar() 返回值之所以是int, 是因为EOF是个特殊的int, 在我的mac上是-1。在windows上Ctrl+Z输入EOF, 在mac上是Ctrl+D

阅读全文»

bjmayor发布于2021-08-29

go 命令行参数解析

[TOC]

go标准库-flag

命令行的风格

由于一些历史原因,Unix 出现过很多不同的分支,命令行的风格也因此有很多标准,比如:

  • Unix 风格,选项采用单 - 加一个字母,比如 -v,短选项就是它,优点是足够简洁;
  • BSD 风格,选项没有 -,没有任何的前缀;
  • GNU 风格,采用 --,如 --version,长选项,扩展性好,但是要多打几个字母;

查看系统进程有两种写法:
ps aux(BSD 风格) 和 ps -elf(Unix 风格)。

POSIX 的命令行风格算是取长补短的集合吧。什么是 POSIX 风格?可以查看这篇文档命令参数语法。它同时提供了长短选项的标准。

阅读全文»

bjmayor发布于2021-08-29

go-正则

[TOC]

go标准库-regex

表达式对象

//初始化结构体对象的方法 func Compile(expr string) (*Regexp, error) //和Compile函数相似,但是该方法支持POSIX协议,可以支持类似`egrep`的语法 func CompilePOSIX(expr string) (*Regexp, error) //Must系列函数和上面两个函数相似,但是不会返回error,如果有异常直接panic func MustCompile(str string) *Regexp func MustCompilePOSIX(str string) *Regexp

阅读全文»

bjmayor发布于2021-08-29

go 工具介绍

[TOC]

go的工具比较丰富,为了保证代码的高质量可以多用下。

example

主要用于导入导GoDoc等工具生成的帮助文档中。它通过比较输出(stdout)和内部的(output)注释是否一致来判断是否成功。

func ExampleAdd() { fmt.Pringln(add(1,2)) // Output: // 3 }

如果没有output注释,该示例函数就不会被执行。另外,不能使用内置函数print/println,因为他们输出到stderr

阅读全文»