Viletyy Blog

「离开世界之前 一切都是过程」

大话数据结构: 线性表

线性表 线性表的定义 线性表零个或多个数据元素的有限序列。 若将线性表记为(a1, …,ai-1, ai, ai+1, …, an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1时ai的直接先驱元素,ai+i是ai的直接后继元素。当i=1,2,…,n-1时,ai有且仅有一个直接后继,当i=2,3,…,n时,ai有且仅有一个直接前驱。 线性表元素的个数n(n >=0)定义...

大话数据结构: 算法

什么是算法 程序=数据结构+算法 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 算法的特性 输入:一个算法有0个或多个输入,这些输入取自某个特定对象的集合。 输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。 有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时...

大话数据结构: 绪论

什么是数据? 数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。 数据元素、数据项 数据元素是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。 数据项一个数据元素可以由若干个数据项组成。数据项是数据不可分割的最小单位。 数据结构、数据对象 数据结构是相互之间存在一个或多种特定关系的数据元素的集合。 数据对象是具...

Golang: reflect反射

反射的定义 官方文档中的定义: Reflection is computing is the ability of program to examine its own structure, particularly through types; it’s a form of metaprogramming. It’s also a gread source of confusion....

Golang: CSP模型

Go语言的最大两个亮点,一个是goroutine,一个就是channel了。二者合体的典型应用CSP,基本就是大家认可的并行开发神器,简化了并行程序的开发难度。 CSP是什么 CSP是Communicating Sequential Process简称,中文可以叫做通信顺序进程,是一种并发编程模型,是一个很强大的并发数据模型,是上个世纪七十年代提出的,用于描述两个独立的并发实体通过共享的通...

Golang: 通道

通道可以被认为是Goroutine通信的管道。类似于管道中的水从一端到另一端的流动,数据可以从一端发送到另一端,通过通道接收。 在前面讲Go语言的并发的时候,当多个Goroutine想实现共享数据的时候,虽然也提供了传统的同步机制,但是Go语言强烈建议的是使用Channel通道来实现Goroutines之间的通信。 不要通过共享内存来通信,而应该通过通信来共享内存 Go语言中,...

Golang: sync包

官网文档对sync包的介绍 Package sync provides basic synchronization primitives such as mutual exclusion locks. Other than the Once and WaitGroup types, most are intended for use by low-level library routi...

Golang:临界资源安全问题

临界资源 指并发环境中多个进程/线程/协程贡献的资源。 但是在并发编程中对临界资源的处理不当,往往会导致数据不一致的问题。 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 package main import ( "fmt" "time" ) func main() { a := 1 go func()...

Golang:runtime包

官网文档对runtime包的介绍 Package runtime contains operations that interact with Go’s runtime system, such as functions to control goroutines.Is also includes the low-level type information used by the ...

Golang:并发模型

Go语言相比Java等一个很大的优势就是可以方便地编写并发程序。Go语言内置了goroutine机制,使用goroutine可用快速的开发并发程序,更好的利用多核处理器资源。 线程模型 在现代操作系统中,线程数处理器调度和分配的基本单位,进程则作为资源拥有的基本单位。每个进程是由私用的虚拟地址空间、代码、数据和其他各种系统资源组成。线程是进程内部的一个执行单元。每一个进程至少有一个主执行线程...