词法分析 介绍在之前的文章中,了解了什么是语言处理器,具体见这里。接下来就是详细了解一下编译器的结构。 整体来看,一个编译器分为前端以及后端两个部分。 前端也就是分析部分,在这个阶段,编译器会将源程序分解成多个组成要素,然后在这些要素上加上语法结构,之后就会利用这个语法结构去创建程序的中间表示。 分析会对程序的语法,语义进行分析,如果存在不一致的情况,编译器就会返回相应的信息。与此同时,分析部分会搜集程序的 2020-01-16 #编译原理
Go 的一种并发模式:管道 Go 管道模式开始这片文章是看完 Golang 官方博客后写下,记录下。原文在这里 首先是 What is pipeline?官方博客上将管道看作是并发的程序的一种。一系列的 stage 通过 channel 串联起来。其中,每个 stage 都是一组执行相同任务的 goroutine。在每个 Stage 中,每个 goroutine 都会做三件事情: 通过一个 channel 接收到要处理的上 2020-01-09 #Go
编译原理学习 语言处理器语言处理器就像是一个加工车间,某种程序设计语言编写的程序经过它的加工处理后,变成计算机可以执行的形式。语言处理器通常分为两种常见的形式,一是编译器,二是解释器。 编译器(Compiler)就像是一个翻译员,他将自己阅读到的程序,翻译成一个等价的,用另一种语言编写的程序。在这个过程中,他所阅读到的程序称之为 源语言,翻译成的语言称为 目标语言。整个过程如下: 源程序 -> [编译器 2020-01-06 #编译原理
Go 使用过程中遇到的问题📝 介绍在日常的开发过程中,主要使用的语言就是 Go。记录下使用过程中遇到的一些问题以及踩到的的坑。 Json 序列化,Tag在 Go 中如果需要进行 Json 的序列化,常用到的方法有 json.Marshal。 1func Marshal(v interface{}) ([]byte, error) 对需要序列化的结构体进行操作。 123456789type Message 2019-09-20 #Go
社会工程概要 介绍社会工程学不是一个神秘的工具,是一门科学,通过一些技巧来操纵他人采取特定行动。虽然这些行动不一定符合”目标人物”的最佳利益。使用社会工程的结果包括获取信息,取得访问权限或者让目标采取特定的行动。 在日常的生活中有两种最为常见的社会工程实例。一是骗子,骗子往往会采用社会工程的某些因素说服受害人,让其做出会给自身带来损失的行动。二是心理医生,心理医生会使用一系列精心设计的问题,帮助病人走出困境。 2019-08-01 #网络安全
Go 结构体 结构体介绍结构体是一种数据结构,通过实现复杂的结构来表示现实世界中的实体。结构体同时也是一些元素的集合,这些元素称为结构体的成员(又称字段),且这些成员可以为不同的类型,成员一般用名字访问。 结构体的声明一般是以 type 开始,并依次包含类型名称、关键字 struct 以及由花括号包裹的成员列表。 声明语句如下: 12345// Student 是一个表示学生的结构体type Student s 2019-05-08 #Go
Go 接口类型 什么是接口Go 语言中的接口用于定义一组行为。其中,每个行为都是一个由一个方法进行声明的。 在声明一个接口时,只需要声明方法的名称,方法的参数列表以及结果列表即可。如: 1234type Person interface { Listen(string) Say() string} Person 接口就是定义了一组与 “Person” 相关的行为。 接口类型是无法实例化的 2019-05-04 #Go
MySQL 优化表空间 在使用 MySQL 的过程中,可能会出现如下的情况: 使用 delete 语句删除大部分数据之后,表文件的大小却并没有发生变化。导致这种情况出现的原因有多种。 独立表空间首先是 innodb_file_per_table 这个参数的设置。这个参数的作用是控制表文件的存放位置。 OFF:表数据放在系统表共享空间之中,即数据字典的存放处 ON:每张表的数据单独存放在 .ibd 的文件中 在设置为开 2019-05-02 #MySQL
Go 语法概览 Part 2 这是 Go 学习笔记的第二篇,继续对 Go 的语法进行一个概览,你可以在这里看到第一篇。 本篇将聚焦于 Go 语言的数组,切片,字典以及函数。 1 数组Array(数组)是一个由数个相同类型的元素构成的序列。例如: 1var stds [4]string = [4]string{"a","b","c","d" 2019-04-08 #Go
Go 语法概览 Part 1 这篇文章是对 Go 语言的基本语法做的一个笔记。计划用三篇文章来记录,这篇主要记录 Go 的词法元素。 词法元素Go 语言的词法元素,也叫做语言符号,分为 5 类,如下所示: identifier:标识符 keyword:关键字 literal:字面量 delimiter:分隔符 operator:操作符 2019-03-30 #Go