02 2022 档案

摘要:2.25 Go并发,Goland并发 Go语言并发编程的特点 Go语言通过编译器运行时(runtime),从语言上支持了并发的特性。Go语言的并发通过goroutine特性完成。goroutine类似于线程,可以根据需要创建多个goroutine并发工作。goroutine是由Go语言的运行时调度完 阅读全文
posted @ 2022-02-28 10:21 俊king 阅读(137) 评论(0) 推荐(0) 编辑
摘要:2.25 Go之Goroutine(轻量级线程) 网络编程 编写Socket网络程序需要提前准备一个线程池,为每个Socket的收发包分配一个线程。 线程池与CPU数量的对应关系: 开发人员需要在线程数量和CPU数量间建立一个对应关系,以保证每个任务能及时地被分配到CPU上进行处理,同时避免多个任务 阅读全文
posted @ 2022-02-28 10:21 俊king 阅读(54) 评论(0) 推荐(0) 编辑
摘要:2.24 Go之信息管理系统 信息管理系统 基于文本界面的客户关系管理软件,该软件可以实现对客户的插入、修改和删除,并且可以打印客户信息明细表 组成模块 主模块 >customerView >菜单的显示和处理用户操作 管理模块 >customerService >提供增、删、改、查功能 用户结构体 阅读全文
posted @ 2022-02-28 10:16 俊king 阅读(51) 评论(0) 推荐(0) 编辑
摘要:2.24 Go之Context(上下文) Context的涵义 Goroutine的上下文,包含Goroutine的运行状态、环境、现场等信息 作用: 并发控制和超时控制的标准做法 Context的定义 程序单元的一个运行状态、现场、快照 特点: 上下是指存在上下层的传递 上会把内容传递给下 程序单 阅读全文
posted @ 2022-02-28 10:15 俊king 阅读(401) 评论(0) 推荐(0) 编辑
摘要:2.23 Go之flag包:命令行参数解析 背景阐述 在编写命令行程序(工具、server)时,我们有时需要对命令参数进行解析。Go语言中的flag包中,提供了命令行参数解析的功能 命令行工具包含的几个概念 命令行参数(或参数):是指运行程序时提供的参数; 已定义命令行参数:是指程序中通过flag. 阅读全文
posted @ 2022-02-28 10:14 俊king 阅读(434) 评论(0) 推荐(0) 编辑
摘要:2.23 Go之go mod包依赖管理工具使用详解 go module Go语言默认的依赖管理工具 使用module 设置GOMODULE 设置GoModule GOMODULE=off禁用go module,编译时会从GOPATH和vendor文件夹中查找包; GOMODULE=on启用 go m 阅读全文
posted @ 2022-02-28 10:14 俊king 阅读(953) 评论(0) 推荐(0) 编辑
摘要:2.23 Go之生成二维码 涉及到的第三方库 go-qrcode,该库的源代码托管在github上 调用函数 调用go-qrcode包下的WriteFile函数 函数: func WriteFile(content string, level RecoveryLevel, size int, fil 阅读全文
posted @ 2022-02-28 10:13 俊king 阅读(469) 评论(0) 推荐(0) 编辑
摘要:2.23 Go之os包 Os包的作用 提供了操作系统的接口,主要是在服务器上进行系统的基本操作,如文件操作、目录操作、执行命令、信号与中断、进程、系统状态等等。 Os包常用函数 函数名函数定义作用 Hostname func Hostname() (name string, err error) 返 阅读全文
posted @ 2022-02-28 10:06 俊king 阅读(189) 评论(0) 推荐(0) 编辑
摘要:2.19 Go之time包:时间和日期 time包简介 时间值 时区 这一点在Go语言的time包源码当中可以看出 正确表示时间 国内使用的北京时间与UTC时间的关系: UTC + 8个小时 = 北京时间 Go的time包下的时区变量: time.UTC:UTC时间 time.Local:本地时间 阅读全文
posted @ 2022-02-28 10:05 俊king 阅读(372) 评论(0) 推荐(0) 编辑
摘要:2.15 Go之工厂模式自动注册 什么是自动注册 示例调用: import "database/sql"import _ "github.com/go-sql-driver/mysql" 解析: 明明没有使用github.com/go-sql-driver/mysql包却还是需要导入的原因: 这个包 阅读全文
posted @ 2022-02-28 10:04 俊king 阅读(389) 评论(0) 推荐(0) 编辑
摘要:2.17 Go之正则表达式:regexp包 正则表达式的作用 根据需求构造出想要得到的字符组合 正则表达式的语法规则 组成: 由普通字符(例如字符a到z)以及特殊字符(称为"元字符")构成的文字序列,可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。 字符 语法说明表达式 阅读全文
posted @ 2022-02-28 10:04 俊king 阅读(446) 评论(0) 推荐(0) 编辑
摘要:2.16 Go之sync包与锁:限制线程对变量的访问 sync包 sync包提供了的锁: Mutex:互斥锁 RWMutex:读写锁 为什么需要锁 sync包中的两个核心方法: Lock:加锁 Unlock:解锁 在并发的情况下,多个线程或协程同时其修改一个变量,使用锁能保证在某一时间内,只有一个协 阅读全文
posted @ 2022-02-28 10:03 俊king 阅读(91) 评论(0) 推荐(0) 编辑
摘要:2.15 Go之单例设计模式 什么是单例设计模式 结构中只包含一个被称为单例的特殊类,能够保证系统运行中一个类只创建一个实例 实现方式: 懒汉式 饿汉式 双重检查 sync.Once 懒汉式 特点: 非线程安全,多线程下可能会创建多次对象: package Practice_Single​/*设置结 阅读全文
posted @ 2022-02-28 10:03 俊king 阅读(22) 评论(0) 推荐(0) 编辑
摘要:2.15 Go之自定义包 自定义包并且使用包 自定义一个model包下的demo.go文件: package model​import "fmt"​/* 在该包下定义一个打印的函数 */func PrintStr() { fmt.Println("WelCome To Lucifer's Home! 阅读全文
posted @ 2022-02-28 10:02 俊king 阅读(105) 评论(0) 推荐(0) 编辑
摘要:2.15 Go之package 包的特征 一个目录下的同级文件归属一个包。 包名可以与其目录不同名。 包名为main的包为应用程序的入口包,编译源码没有main包时,将无法编译输出可执行的文件。 修改了一个源文件,我们必须重新编译该源文件对应的包和所有依赖该包的其他包。 Go编译速度快速的原因 第一 阅读全文
posted @ 2022-02-28 10:02 俊king 阅读(47) 评论(0) 推荐(0) 编辑
摘要:2.14 Go之内置包简介 Go语言的包 查看包: GOROOT/src/pkg Go常用包列举 fmt >格式化的标准输入输出 io >提供了原始的 I/O 操作界面 bufio >对 io 包的封装,提供了数据缓冲功能 sort >对切片和用户定义的集合进行排序的功能 strconv >将字符串 阅读全文
posted @ 2022-02-28 10:01 俊king 阅读(46) 评论(0) 推荐(0) 编辑
摘要:2.14 Go之GoPath详解 什么是GoPath Go的一个环境变量,使用绝对路径提供项目的工作目录 命令行查看GoPath信息 指令: go env 输出结果说明: GOARCH表示目标处理器架构。 GOBIN表示编译器和链接器的安装位置。 GOOS表示目标操作系统。 GOPATH表示当前工作 阅读全文
posted @ 2022-02-28 09:57 俊king 阅读(205) 评论(0) 推荐(0) 编辑
摘要:2.14 Go之封装简介以及实现细节 Go语言的封装概念 Go语言的封装和java类似,就是把对结构体字段操作的方法和结构体封装在一个.go文件中。数据被保护在内部,程序的其它包只能通过被授权的方法,才能对字段进行操作。 封装的好处: 隐藏实现细节; 可以对数据进行验证,保证数据安全合理。 代码示例 阅读全文
posted @ 2022-02-28 09:56 俊king 阅读(266) 评论(0) 推荐(0) 编辑
摘要:2.14 Go之包的概念 包的基本概念 Go使用包组织源代码。 包(package)是多个Go源码的集合,是一种高级的代码复用方案。 任何源代码文件必须属于某个包,同时源码文件的第一行有效代码必须是package pacakgeName语句,通过该语句声明自己所在的包。 包名的特点: 目录树的组织形 阅读全文
posted @ 2022-02-28 09:55 俊king 阅读(77) 评论(0) 推荐(0) 编辑
摘要:2.12 Go二叉树数据结构的应用 树的定义和基本术语 树的定义: 树是n(n>=0)个节点的有限集合T 一颗非空树需要满足的两个条件: 有且仅有一个根节点(root) 当n>1时,其余节点可分为m(m>=0)个互不相交的有限集合T1,T2,……,Tm,其中每一个集合本身又都是一棵树,并且称为根的子 阅读全文
posted @ 2022-02-28 09:54 俊king 阅读(63) 评论(0) 推荐(0) 编辑
摘要:2.11 Go音乐播放器 使用Go语言设计一个音乐播放器(不带GUI界面) 实现功能: 音乐库功能,使用者可以查看、添加和删除里面的音乐曲目; 播放音乐; 支持MP3和WAV,但也能随时扩展以支持更多的音乐类型; 退出程序。 程序在运行后进入一个循环,用于监听命令输入的状态。该程序将接受以下命令。 阅读全文
posted @ 2022-02-28 09:52 俊king 阅读(473) 评论(0) 推荐(0) 编辑
摘要:2.11 Go实现Web服务器 Go标准库提供的包 Go语言里面提供了一个完善的net/http包,通过net/http包我们可以很方便的搭建一个可以运行的Web服务器。同时使用net/http 包能很简单地对Web的路由,静态文件,模版,cookie等数据进行设置和操作。 Web服务器的工作方式 阅读全文
posted @ 2022-02-28 09:50 俊king 阅读(65) 评论(0) 推荐(0) 编辑
摘要:2.11 Go接口内部实现 作用 主要是处理数学当中的函数,根据函数画出函数表达的三维立体图片 示例代码 package main​/* 创建一个算术表达式接口 */type Expr interface {​}​/* 声明可能的数据类型 */// Var表示一个变量。如:xtype Var str 阅读全文
posted @ 2022-02-28 09:49 俊king 阅读(211) 评论(0) 推荐(0) 编辑
摘要:2.11 Go之error接口 Error接口作用 开发中常遇到的问题可分为: 异常 错误 Go语言的Error接口就是用来返回错误信息的 特点: Go语言中引入error接口类型作为错误处理的标准模式,如果函数要返回错误,则返回值类型列表中肯定包含error。error处理过程类似于C语言中的错误 阅读全文
posted @ 2022-02-28 09:48 俊king 阅读(95) 评论(0) 推荐(0) 编辑
摘要:2.11 Go表达式求值 作用 主要是处理数学当中的函数,根据函数画出函数表达的三维立体图片 示例代码 package main​/* 创建一个算术表达式接口 */type Expr interface {​}​/* 声明可能的数据类型 */// Var表示一个变量。如:xtype Var stri 阅读全文
posted @ 2022-02-28 09:48 俊king 阅读(33) 评论(0) 推荐(0) 编辑
摘要:2.08 Go之类型分支(switch判断空接口中变量的类型) type-switch 特点: 可以判断空接口中值得类型,做类型得断言。语法如下: /*变量 t 得到了 areaIntf 的值和类型*/switch t := areaIntf.(type) {case *Square: fmt.Pr 阅读全文
posted @ 2022-02-28 09:42 俊king 阅读(231) 评论(0) 推荐(0) 编辑
摘要:2.08 Go之空接口类型(interface{}) 空接口的特点 可以保存任何值,也可以从空接口中取出原值。 空接口的内部实现保存了对象的类型和指针。使用空接口保存一个数据的过程会比直接用数据对应类型的变量保存稍慢。 将值保存到空接口 package main​import "fmt"​func 阅读全文
posted @ 2022-02-28 09:42 俊king 阅读(143) 评论(0) 推荐(0) 编辑
摘要:2.08 Go之使用空接口实现保存任意值的字典 需求描述 使用map和interface{}实现一个字典,可以存取任意类型的key和value 声明字典,设计设置值、获取值的函数 /* 声明一个字典结构 */type Dictionary struct { // 设置一个map属性,key和valu 阅读全文
posted @ 2022-02-28 09:42 俊king 阅读(257) 评论(0) 推荐(0) 编辑
摘要:2.07 Go之接口和类型之间的转换 什么是接口和类型之间的转换? Go语言中使用接口断言(type assertions)将接口转换成另外一个接口,也可以将接口转换为另外的类型。 类型断言的格式 格式: i.(T)。 i表示一个接口的类型和T表示一个类型 断言的基本格式: t := i.(T)/* 阅读全文
posted @ 2022-02-28 09:41 俊king 阅读(219) 评论(0) 推荐(0) 编辑
摘要:1.28 Go之接口的嵌套组合 接口嵌套组合的特点 一个接口可以包含一个或者多个其他的接口 只要接口的所有方法被实现,则这个接口中的所有嵌套接口的方法均可以被调用 系统包中的接口嵌套组合 type Writer interface { Write(p []byte) (n int, err erro 阅读全文
posted @ 2022-02-28 09:40 俊king 阅读(244) 评论(0) 推荐(0) 编辑
摘要:1.26 Go语言实现日志系统 利用前面提到的接口实现一个小的日志系统 设计思路: 命令行写入和文件写入 日志器+写入器 通过接口类型写入的方法 声明日志写入接口 后面的类型都是通过该接口的方法实现日志写入 /*声明日志写入接口,后面的类型都是通过该接口的方法实现日志写入*/type LogWrit 阅读全文
posted @ 2022-02-28 09:39 俊king 阅读(243) 评论(0) 推荐(0) 编辑
摘要:1.26 Go语言类型断言简述 什么是类型断言(Type Assertion) 一个使用在接口值上的操作。 作用: 检查接口类型变量所持有的值是否实现了期望的接口或者具体的类型 类型断言语法格式 value, ok := x.(T) x表示一个接口的类型,T表示一个具体的类型(也可为接口类型) 语法 阅读全文
posted @ 2022-02-28 09:38 俊king 阅读(150) 评论(0) 推荐(0) 编辑
摘要:1.26 Go接口的nil判断 特点 nil在Go语言中只能被赋值给指针和接口 显示地将nil赋值给接口时,接口的type和data都将为nil。此时,接口与nil值判断是相等的。 将一个带有类型的nil赋值给接口时,只有data为nil,而type不为nil,此时,接口与nil判断将不相等。 代码 阅读全文
posted @ 2022-02-28 09:37 俊king 阅读(398) 评论(0) 推荐(0) 编辑
摘要:1.26 Go语言之排序(sort.Interface接口) Go语言的sort函数 特点: Go语言的sort.Sort函数不会对具体的序列和它的元素做任何假设用了一个接口类型sort.Interface来指定通用的排序算法和可能被排序到的序列类型之间的约定。 接口的实现由序列的具体表示和它希望排 阅读全文
posted @ 2022-02-28 09:35 俊king 阅读(371) 评论(0) 推荐(0) 编辑
摘要:1.25 Go语言之接口 Go语言接口的特点 非侵入式 >编写者无须知道接口被哪些类型实现接口实现者只需知道实现的是什么样子的接口,但无须指明实现哪一个接口。编译器知道最终编译时使用哪个类型实现哪个接口,或者接口应该由谁来实现。 Go语言接口声明(定义) Go语言不是一种 “传统” 的面向对象编程语 阅读全文
posted @ 2022-02-28 09:33 俊king 阅读(208) 评论(0) 推荐(0) 编辑
摘要:1.24 Go之数据I/O对象及操作 Go语言实现基本I/O操作的包 Go语言标准库的 bufio 包中,实现了对数据 I/O 接口的缓冲功能 特点: 封装于接口 io.ReadWriter、io.Reader 和 io.Writer 中,并对应创建了 ReadWriter、Reader 或 Wri 阅读全文
posted @ 2022-02-28 09:31 俊king 阅读(98) 评论(0) 推荐(0) 编辑
摘要:Go之垃圾回收和SetFinalizer 什么是SetFinalizer(终止器)? 是与对象关联的一个函数。通过runtime.SetFinalizer设置 特点: 如果对象定义了Finalizer那么当他被GC的时候Finalizer就会被调用,触发例如发信号或者写日志等事件。 GC执行机制的特 阅读全文
posted @ 2022-02-28 09:30 俊king 阅读(114) 评论(0) 推荐(0) 编辑
摘要:1.21 Go之链表操作 什么是链表 定义: 链表是物理存储单元上非连续、非顺序的存储结构 特点: 数据元素的逻辑顺序是通过链表中的指针链接次序实现的 概括: 链表是一种数据存储结构,通过指针指向定义它的链接次序。有点像区块链。只不过一个链表的结构体拥有的元素比区块链的区块少 链表的每个点称为节点, 阅读全文
posted @ 2022-02-28 09:29 俊king 阅读(463) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示