自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TCP404

Show me the code

  • 博客(59)
  • 资源 (3)
  • 收藏
  • 关注

原创 手写SQL编译器 - Chapter 1

数据库是怎么工作的?当你打开这篇文章的时候你一定也好奇:SQL语句为什么能对数据库操作事务回滚是怎么滚的?数据是怎么被保存到硬盘里的?…接下来我们将一步步搭建一个框架并逐渐完善,并尝试着把这些问题讲明白。我选择基于 SQLite ,因为 SQLite 体积小又功能齐全,整个数据库就存储在一个文件中。我认为可以以此为起点以小见大,启发大家对数据库有更多的思考。一个 SQL 语句需要经过一连串的过程才能检索或修改数据。前端包括:tokenizer 词法解析器parser 语法解析

2021-10-24 22:20:49 995

原创 2021-10-24

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-10-24 22:09:59 186

原创 数据结构【No-0】绪论

声明:本系列文章系个人总结所写,执笔上偏于新手向,会有诸多用词不严谨之处,只为了方便理解。欢迎评论,拒绝指责。正文:程序 是一系列指令的集合。程序设计 = 数据结构 + 算法数据,由N个 0 和 1 组成,本质上是一串二进制代码,利于计算机计算,但不利于人类阅读思考。所以在此之上经过层层抽象,将计算机中的数据抽象出诸如 对象、实例、结点、数据对象 等概念。数据结构,就是以 对象、实例、结点、数据对象 为单位,研究各个单位之间的关系。 由此明确,在数据结构中需要研究两个东西:“单位”、关系

2021-10-24 14:22:06 146

原创 Go【No-nil】类型别名

为类型起个别名,方便代码编写过程中使用,

2021-02-16 15:15:33 227

原创 Go【No-nil】区别

区别for…range遍历 数组和切片for index, value := range array { ...}for index, value := range slice { ...}for index, value := range iterable { ...}for index := range array { ...}for index := range slice { ...}for index := range i

2021-02-16 15:14:24 228

原创 Go【No-14】错误与异常

错误与异常意料之中的叫错误意料之外的叫异常错误:是指可能出现问题的地方出现了问题,比如打开一个文件时失败,这种情况是在意料之中的。异常:是指不应该出现问题的地方出现了问题,比如引用了空指针,这种情况在人们的意料之外。所以错误是业务过程的一部分,而异常不是。错误Go 中错误是一种类型。错误用内置的 error类型表示。和 int、float64 是等价的。error 是一个接口,接口是一种类型,所以说 error 是一种类型。type error interface { Error

2021-02-16 15:11:55 209

原创 Go【No-13】面向对象

封装、继承、多态

2021-02-16 14:58:37 150

原创 Go【No-12】接口

12-接口Go 中的接口 interface 是一种类型,一种抽象的类型。interface 是一组方法的集合,是 dack-type programming 的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器具有洗衣服和甩干的功能,我就称其为洗衣机。接口不关心属性(数据),只关心行为(方法)。只要一个结构体 X 实现了接口 A 中所有的方法,就称这个结构体 X 为接口 A 的实现类,称结构体 X 实现了接口 A。还可称结构体 X 是 A 类型。为了保护你的Go语言职业生涯,请牢

2021-02-16 12:25:39 116

原创 Go【No-11】包

11-包在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的。本文介绍了Go语言中如何定义包、如何导出包的内容及如何导入其他包。包(package)是多个 Go 源码的集合,是一种高级的代码复用方案,例如 Go 就提供了很多内置包,如fmt、os、io等。定义包一个包可以简单理解为一个存放 .go 文件的目录。该目录下面所有的go文件都要再代码第一行添加 package 包名,声明该文件归属的包。注意:一个目录下面直接包含的文件只能归属一个 package

2021-02-16 12:16:41 170

原创 Go【No-10】结构体

10-结构体Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。当我们想表示一些事物时,我们可以用基本数据类型表示其各项基本属性,通过结构体将其组合起来。在 Go 中可以通过 struct 实现面向对象。定义注意:结构体是值类型!!!使用 type 和 struct 来定义结构体。基本语法如下:type structT struct { field1 T field2 T ...

2021-02-16 12:07:37 206

原创 Go【No-9】指针

9-指针区别于C/C++中的指针,Go中的指针不能进行偏移和运算,是安全指针,任何程序数据载入内存后,在内存都有他们的地址,这就是指针。为了保存一个数据在内存中的地址,我们就需要指针。Go 中的指针操作非常简单:&取地址符、*根据地址取值。定义指针、指针取地址注意:指针是值类型!!!var identifier *Tvar identifier *T = &variableidentifier := &variableidentifier:指针名、T指针基类

2021-02-16 00:22:11 113

原创 Go【No-8】函数

8-函数如果一个动作需要重复执行,那就应该把这个动作封装到函数中。在 Go 中,函数是一等公民定义注意:函数是引用类型!!!Go 语言中函数的基本形式:func 函数名(参数列表)(返回值){ 函数体}函数名:由字母、数字、下划线组成,但不能数字开头;同一个包内,函数名不能重名参数:由参数变量和变量类型组成,多个参数使用, 分隔返回值:由返回变量和变量类型,也可只写变量类型,多个返回值必须用()包裹,并用,分隔函数体:实现指定功能的代码eg:求两数之和func s

2021-02-16 00:19:31 156

原创 Go【No-7】Map

7-mapmap 是 Go 提供的一种映射关系容器,其内部使用散列表(hash)实现map 是一种无序的基于 key-value 的数据结构Go 中的 map 是引用类型,必须初始化才能使用。key 可以是任意可用 == 或 != 比较的类型,如:string、int、float数组、切片不能作为 key指针和接口类型可以作为 key包含数组切片的结构体不能作为 key,只包含原生类型的结构体可以作为 key如果结构体要作为 key 可以提供 Key() 和 Hash

2021-02-16 00:06:55 142

原创 Go【No-6】切片

6-切片切片是一个拥有先用数据类型元素的可变长度的序列。数组是固定长度,切片是可变长度数组是值类型,切片是引用类型数组有很多局限性,切片非常灵活,支持自动扩容切片内部结构包含 地址、长度、容量,一般用于快速操作一块数据集合。创建切片注意:切片是引用类型!!!// 切片var identifier []typevar identifier = []type{initial value}identifier := []type{initial value}// 数组var i

2021-02-15 23:55:52 119

原创 Go【No-5】数组

5-数组数组是同一种数据类型元素的集合。在 Go 中,数组从声明时就确定,使用时可以修改数组成员,但不能修改数组大小。数组定义注意:数组是值类型!!!var identifier [len]typeidentifier:数组名、len:数组长度、type:数组类型数组长度必须是常量,且一旦定义就不能更改。[5]int和[10]int是不同的类型。var arr1 [5]intvar arr2 [8]intarr1 = arr2 // 禁止这样做,因为此时 arr1 和 a

2021-02-15 23:43:20 92

原创 Go【No-4】流程控制

4-流程控制分支结构if 基本写法if 表达式1 { 分支1} else if 表达式2 { 分支2} else{ 分支3}eg:func main() { score := 65 if score >= 90 { fmt.Println("A") } else if score > 75 { fmt.Println("B") } else { fmt.Println("C

2021-02-15 23:36:23 94

原创 Go【No-3】运算符

运算符算术运算符运算符描述+加-减*乘/除%求余Go 中 ++ 和 -- 是单独的语句,不是运算符。即 a++ 后面不能有其他东西了,且只有后置,没有前置func main() { a := 10 a++ // 正确,a的值为11 a++ + 10 // 错误 ++a // 错误,只有后置自增和后置自减}关系运算符运算符描述==等于

2021-02-15 23:20:33 104

原创 Go【No-2】数据类型

2-数据类型整型整型分为两大类:有符号和无符号按长度分为:int8、int16、int32、int64;uint8、uint16、uint32、uint64类型表示范围描述对应Cint8-128~127有符号8位整型byteint16-32768~32767有符号16位整型shortint32-2147483648~2147483647有符号32位整型intint64-9223372036854775808~922337203685477

2021-02-15 23:18:23 277

原创 Go【No-1】基础

1-基础标识符[ _ | A-Z | a-z | 0-9 ]不能数字开头不能与关键字和保留字冲突关键字Go 中有25个关键字 break default func interface select case defer go map struct chan else goto package swi

2021-02-15 23:05:02 242 1

原创 Go【No-0】总叙

Let's Go

2021-02-15 22:42:55 56

原创 Python【Crawler】2-聚焦爬虫

正则表达式bs4xpath (*)

2020-09-26 11:26:29 795

原创 Python【Crawler】1-通用爬虫

基本使用

2020-09-26 11:25:40 432

原创 Python【Crawler】0-爬虫总叙

使用场景通用爬虫:抓取系统重要组成部分,抓取的是一整张页面数据。聚焦爬虫:建立在通用爬虫之上,抓取的是页面中特定的局部内容。增量爬虫:检测网站中数据更新的情况,只会抓取网站中最新的数据。

2020-09-26 11:24:51 138

原创 Python【Feature】工具函数

map、filter、reduce

2020-09-20 13:07:56 4055

原创 Python【Feature】函数式编程

闭包:一个能接收函数并返回函数的函数

2020-09-20 13:06:29 1144

原创 Python【Feature】高级特性

切片、迭代、列表生成式、生成器、迭代器

2020-09-20 13:04:42 934

原创 Python【Buildins】json

json to string、string to json

2020-09-20 13:02:37 140

原创 Python【Buildins】re

正则表达式是用来处理字符串的,重在处理规则常用正则:年份匹配:^((19|20)\d{2})$手机号码:^1[3456789]\d{9}$E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$网址URL:http://(/[\w-]+\.)+[\w-]+(/[\w-./?%&=])

2020-09-20 13:01:12 303

原创 Python【Type】String

基本使用、转义字符、下标查找、判断、计数、替换、分割、切片转换大小写、填充、修剪、拼接、编码长度、格式化、不可变性

2020-09-20 12:58:55 756

原创 Python【No-20】操作文件和目录

Python的自带模块 os 可以进行许多与操作系统相关的操作。

2020-09-20 12:48:52 111

原创 Python【No-19】文件读写

同步和异步的区别就在于是否等待IO执行的结果。好比你去麦当劳点餐,你说“来个汉堡”,服务员告诉你,对不起,汉堡要现做,需要等5分钟,于是你站在收银台前面等了5分钟,拿到汉堡再去逛商场,这是同步IO。你说“来个汉堡”,服务员告诉你,汉堡需要等5分钟,你可以先去逛商场,等做好了,我们再通知你,这样你可以立刻去干别的事情(逛商场),这是异步IO。很明显,使用异步IO来编写程序性能会远远高于同步IO,但是异步IO的缺点是编程模型复杂。想想看,你得知道什么时候通知你“汉堡做好了”,而通知你的方法也各不相同。如果

2020-08-25 13:48:34 237

原创 Python【No-18】协程

协程,时间管理大师.使用 yield 实现并发使用 greenlet 实现并发使用 gevent 实现并发

2020-08-25 13:47:55 98

原创 Python【No-17】线程

创建子线程并启动函数方式继承方式插队 join()查看所有线程多线程共享全局变量锁死锁

2020-08-25 13:46:56 110

原创 Python【No-16】进程

进程,是资源分配的单位线程,是操作系统调度的单位进程的状态创建进程进程间通信进程池

2020-08-25 13:46:21 96

原创 Python【No-15】进程线程总叙

进程是内存资源分配的单位线程是操作系统调度的单位,真正执行任务的是线程协程是线程中任务细分下来的单位

2020-08-25 13:45:33 78

原创 Python【No-14】枚举类

创建枚举基于 class 语法创建基于 Function API 创建访问枚举成员枚举遍历枚举比较限定枚举唯一性

2020-08-25 13:44:57 93

原创 Python【No-13】魔术方法

`__str__()``__call__()``__iter__()``__getattr__()`

2020-08-25 13:44:19 85

原创 Python【No-12】私有化

Python 是动态语言,可以在程序运行过程中动态地给class加上属性或方法。这种不加以节制的特性很容易造成烂代码一堆。对此 Python 提供了一些解决方案。slots 变量绑定白名单、@property

2020-08-25 13:43:38 75

原创 Python【No-11】类和对象

面向对象三大特性:封装、继承、多态

2020-08-25 13:42:34 124

原创 Python【No-10】模块

模块,代码的抽取

2020-08-25 13:41:53 95

zero笔记本外壳.stl

树莓派笔记本Zero版本的打印文件。树莓派笔记本,1号方案。3D打印文件。下载后自行拿去3D打印店打印实体。

2020-01-14

树莓派5寸笔记本3D打印文件,UMPC

树莓派笔记本,树莓派UMPC。1号方案。3D打印文件。下载后自行拿去3D打印店打印实体。大小5寸

2018-12-12

一键安装MySQL8.0脚本-CentOS

自动一键安装MySQL8.0,适用于CentOS版本,一键自动下载解压安装、获取初始密码并设置新密码。

2018-09-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除