Golang
浩波的笔记
微信公众号:浩波的笔记
展开
-
Golang笔记——go使用Redis
Redis 基本介绍Redis 的安装Redis 操作的基本原理图Redis 的安装和基本使用Redis 的启动:Redis 的操作指令一览Redis 的基本使用:说明: Redis 安装好后,默认有 16 个数据库,初始默认使用 0 号库, 编号是 0…15添加 key-val [set]查看当前 redis 的 所有 key [keys *]获取 key 对应的值. [get key]切换 redis 数据库 [select index]如何查看当前数据库的 key-原创 2020-08-30 17:14:10 · 765 阅读 · 0 评论 -
Golang笔记——tcp 编程
看两个实际应用QQ,迅雷,百度网盘客户端. 新浪网站,京东商城,淘宝.网络编程基本介绍Golang 的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少 也是至关重要的一部分。网络编程有两种:TCP socket 编程,是网络编程的主流。之所以叫 Tcp socket 编程,是因为底层是基于 Tcp/ip 协 议的. 比如: QQ 聊天 [示意图]b/s 结构的 http 编程,我们使用浏览器去访问服务器时,使用的就是 http 协议,而 http 底层依 旧是原创 2020-08-29 12:07:42 · 666 阅读 · 0 评论 -
Golang笔记——反射
先看一个问题,反射的使用场景使用反射机制,编写函数的适配器, 桥连接反射的基本介绍基本介绍反射可以在运行时动态获取变量的各种信息, 比如变量的类型(type),类别(kind)如果是结构体变量,还可以获取到结构体本身的信息(包括结构体的字段、方法)通过反射,可以修改变量的值,可以调用关联的方法。使用反射,需要 import (“reflect”) 5)示意图反射的应用场景反射重要的函数和概念3) 变量、interface{} 和 reflect.Value 是可以相互转换原创 2020-08-25 12:07:24 · 233 阅读 · 0 评论 -
Golang笔记——channel(管道)
推荐首先阅读:Golang笔记——goroutine(协程)为什么需要 channel前面使用全局变量加锁同步来解决 goroutine 的通讯,但不完美主线程在等待所有 goroutine 全部完成的时间很难确定,我们这里设置 10 秒,仅仅是估算。如果主线程休眠时间长了,会加长等待时间,如果等待时间短了,可能还有 goroutine 处于工作 状态,这时也会随主线程的退出而销毁通过全局变量加锁同步来实现通讯,也并不利用多个协程对全局变量的读写操作。上面种种分析都在呼唤一个新的通讯机制-ch原创 2020-08-23 12:49:37 · 597 阅读 · 0 评论 -
Golang笔记——goroutine(协程)
goroutine-看一个需求需求:要求统计 1-9000000000 的数字中,哪些是素数?分析思路:传统的方法,就是使用一个循环,循环的判断各个数是不是素数。[很慢]使用并发或者并行的方式,将统计素数的任务分配给多个 goroutine 去完成,这时就会使用到goroutine.【速度提高 4 倍】goroutine-基本介绍进程和线程介绍程序、进程和线程的关系示意图并发和并行多线程程序在单核上运行,就是并发多线程程序在多核上运行,就是并行示意图:小结原创 2020-08-16 12:18:43 · 497 阅读 · 1 评论 -
Golang笔记——单元测试
单元测试先看一个需求在我们工作中,我们会遇到这样的情况,就是去确认一个函数,或者一个模块的结果是否正确, 如:传统的方法传统的方式来进行测试在 main 函数中,调用 addUpper 函数,看看实际输出的结果是否和预期的结果一致,如果一致, 则说明函数正确,否则函数有错误,然后修改错误代码实现:传统方法的缺点分析不方便, 我们需要在 main 函数中去调用,这样就需要去修改 main 函数,如果现在项目正在运 行,就可能去停止项目。不利于管理,因为当我们测试多个函数或者多个模块原创 2020-08-15 12:56:10 · 198 阅读 · 0 评论 -
Golang笔记——json介绍
json 基本介绍概述应用场景(示意图)json 数据格式说明json 数据在线解析https://www.json.cn/ 网站可以验证一个 json 格式的数据是否正确。尤其是在我们编写比较复杂的json 格式数据时,很有用。...原创 2020-08-14 10:16:22 · 215 阅读 · 0 评论 -
Golang笔记—文件操作
文件的基本介绍文件的概念文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的 word 文档,txt 文 件,excel 文件…都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声 音…输入流和输出流- os.File 封装所有文件相关操作,File 是一个结构体打开文件和关闭文件使用的函数和方法案例演示读文件操作应用实例读取文件的内容并显示在终端(带缓冲区的方式),使用 os.Open, file.Close, buf原创 2020-08-11 19:07:13 · 457 阅读 · 0 评论 -
Goalng小demo二:客户信息关系系统
客户信息关系系统项目需求分析模拟实现基于文本界面的《客户信息管理软件》。该软件能够实现对客户对象的插入、修改和删除(用切片实现),并能够打印客户明细表项目的界面设计主菜单界面 添加客户界面修改客户界面删除客户界面客户列表界面客户关系管理系统的程序框架图项目功能实现-显示主菜单和完成退出软件功能功能的说明当用户运行程序时,可以看到主菜单,当输入 5 时,可以退出该软件.思路分析编写 customerView.go ,另外可以把 custom原创 2020-08-11 13:04:28 · 135 阅读 · 0 评论 -
Goalng小demo一:家庭收支记账软件项目
项目开发流程说明项目需求说明模拟实现基于文本界面的《家庭记账软件》该软件能够记录家庭的收入、支出,并能够打印收支明细表项目的界面项目代码实现实现基本功能(先使用面向过程,后面改成面向对象)功能 1:先完成可以显示主菜单,并且可以退出思路分析:更加给出的界面完成,主菜单的显示, 当用户输入 4 时,就退出该程序package mainimport ( "fmt")func main(){ //声明一个变量,接受用户输入选项 key := "" //声明一个变原创 2020-08-10 17:28:40 · 217 阅读 · 0 评论 -
Golang笔记-面向对象编程-多态/类型断言
面向对象编程-多态基本介绍变量(实例)具有多种形态。面向对象的第三大特征,在 Go 语言,多态特征是通过接口实现的。可 以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。快速入门之前的 Usb 接口案例,Usb usb ,既可以接收手机变量,又可以接收相机变量,就体现了 Usb 接 口 多态特性。接口体现多态的两种形式多态参数在前面的 Usb 接口案例,Usb usb ,即可以接收手机变量,又可以接收相机变量,就体现了 Usb 接 口 多态。多态数组演示一个案例:给 Us原创 2020-08-08 20:01:11 · 203 阅读 · 0 评论 -
Golang笔记—封装/继承/接口
基本介绍Golang 仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它 OOP 语言不一 样,下面我们一一为同学们进行详细的讲解 Golang 的三大特性是如何实现的。封装介绍封装(encapsulation)就是把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其 它包只有通过被授权的操作(方法),才能对字段进行操作封装的理解和好处隐藏实现细节提可以对数据进行验证,保证安全合理(Age)如何体现封装对结构体中的属性进行封装通过方法,包实现封装封装原创 2020-08-06 12:20:50 · 706 阅读 · 0 评论 -
Golang笔记—面向对象编程
工厂模式说明Golang 的结构体没有构造函数,通常可以使用工厂模式来解决这个问题。看一个需求一个结构体的声明是这样的:package modeltype Student struct { Name string...}因为这里的 Student 的首字母 S 是大写的,如果我们想在其它包创建 Student 的实例(比如 main 包), 引入 model 包后,就可以直接创建 Student 结构体的变量(实例)。但是问题来了,如果首字母是小写的, 比如 是 type studen原创 2020-08-05 17:47:40 · 143 阅读 · 0 评论 -
Golang笔记——方法
方法基本介绍在某些情况下,我们要需要声明(定义)方法。比如 Person 结构体:除了有一些字段外( 年龄,姓名…),Person 结构体还有一些行为比如:可以说话、跑步…,通过学习,还可以做算术题。这时就要用方法 才能完成。Golang 中的方法是作用在指定的数据类型上的(即:和指定的数据类型绑定),因此自定义类型, 都可以有方法,而不仅仅是 struct。方法的声明和调用type A struct { Num int}func (a A) test() { f mt.Println(原创 2020-08-04 18:44:55 · 310 阅读 · 0 评论 -
Golang笔记——结构体
结构体看一个问题使用现有技术解决单独的定义变量解决 代码演示:使用数组解决现有技术解决的缺点分析使用变量或者数组来解决养猫的问题,不利于数据的管理和维护。因为名字,年龄,颜色都是 属于一只猫,但是这里是分开保存。如果我们希望对一只猫的属性(名字、年龄,颜色)进行操作(绑定方法), 也不好处理。引出我们要讲解的技术-》结构体。一个程序就是一个世界,有很多对象(变量)Golang 语言面向对象编程说明Golang 也支持面向对象编程(OOP),但是和传统的面向对象原创 2020-08-04 11:05:01 · 765 阅读 · 0 评论 -
Golang笔记——map
map 的基本介绍map 是 key-value 数据结构,又称为字段或者关联数组。类似其它编程语言的集合, 在编程中是经常使用到map 的声明基本语法var map 变量名 map[keytype]valuetypekey 可以是什么类型golang 中的 map,的 key 可以是很多种类型,比如 bool, 数字,string, 指针, channel , 还可以是只 包含前面几个类型的 接口, 结构体, 数组,通常 key 为 int 、string注意: slice, map原创 2020-08-01 14:57:08 · 363 阅读 · 0 评论 -
Goalng笔记——排序和查找
排序的基本介绍冒泡排序的思路分析func BubbleSoet(arr *[5]int) { fmt.Println("排序前:arr",(*arr)) temp := 0 for i := 0; i < len(*arr) - 1; i++{ for j := 0; j<len(*arr) - 1 - i; j++{ if (*arr)[j] > (*arr)[j+1]{ temp = (*arr)[j] (*arr)[j] = (*arr)[j原创 2020-07-30 15:00:20 · 118 阅读 · 0 评论 -
Golang练习题(自己认为比较不错的)
Q1:求一段代码的运行时长func test03() { str := " " for i := 0; i < 100000; i++{ str += "hello" + strconv.Itoa(i) } }func main() { var start int64 = time.Now().UnixNano() test03() var end int64 = time.Now().UnixNano() fmt.Println(end - start)}.原创 2020-07-29 18:02:41 · 592 阅读 · 0 评论 -
基于深度学习的文本分类1
基于深度学习的文本分类与传统机器学习不同,深度学习既提供特征提取功能,也可以完成分类的功能。从本章开始我们将学习如何使用深度学习来完成文本表示。现有文本表示方法的缺陷在上一章节,我们介绍几种文本表示方法:One-hotBag of WordsN-gramTF-IDF也通过sklean进行了相应的实践,相信你也有了初步的认知。但上述方法都或多或少存在一定的问题:转换得到的向量维度很高,需要较长的训练实践;没有考虑单词与单词之间的关系,只是进行了统计。与这些表示方法不同,深度学习也可以用于原创 2020-07-28 11:09:41 · 326 阅读 · 0 评论 -
Golang的数组与切片——详解
为什么需要数组看一个问题一个养鸡场有 6 只鸡,它们的体重分别是 3kg,5kg,1kg,3.4kg,2kg,50kg 。请问这六只鸡的总体重是 多少?平均体重是多少? 请你编一个程序。=》数组使用传统的方法来解决对上面代码的说明使用传统的方法不利于数据的管理和维护.传统的方法不够灵活,因此我们引出需要学习的新的数据类型=>数组.数组介绍数组可以存放多个同一类型数据。数组也是一种数据类型,在 Go 中,数组是值类型。数组的快速入门我们使用数组的方法来解决养鸡场的问题、原创 2020-07-27 23:22:57 · 1737 阅读 · 1 评论 -
Golang的错误处理笔记
错误处理看一段代码,因此错误处理在默认情况下,当发生错误后(panic) ,程序就会退出(崩溃.)如果我们希望:当发生错误后,可以捕获到错误,并进行处理,保证程序可以继续执行。还可 以在捕获到错误后,给管理员一个提示(邮件,短信。。。)这里引出我们要将的错误处理机制基本说明Go 语言追求简洁优雅,所以,Go 语言不支持传统的 try…catch…finally 这种处理。Go 中引入的处理方式为:defer, panic, recover这几个异常的使用场景可以这么简单描述:Go 中原创 2020-07-26 18:21:01 · 107 阅读 · 0 评论 -
Golang函数,包笔记
一、函数函数的基本概念为完成某一功能的程序指令(语句)的集合,称为函数。在 Go 中,函数分为: 自定义函数、系统函数(查看 Go 编程手册)函数的基本语法快速入门案例二、包为什么需要包?在实际的开发中,我们往往需要在不同的文件中,去调用其它文件的定义的函数,比如 main.go中,去使用 utils.go 文件中的函数,如何实现? -》包现在有两个程序员共同开发一个 Go 项目,程序员 xiaoming 希望定义函数 Cal ,程序员 xiaoqiang也想定义函数也叫 Ca原创 2020-07-23 21:18:06 · 374 阅读 · 0 评论 -
Golang指针,for循环
基本介绍基本数据类型,变量存的就是值,也叫值类型获取变量的地址,用&,比如: var num int, 获取 num 的地址:&num 分析一下基本数据类型在内存的布局.指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值 比如:var ptr *int = &num举例说明:指针在内存的布局.4. 获取指针类型所指向的值,使用:*,比如:var ptr int, 使用ptr 获取 ptr 指向的值5) 一个案例再说明例子:写一个程序,获取一原创 2020-07-22 18:05:24 · 1946 阅读 · 0 评论 -
Golang基本数据类型的相互转换
基本数据类型的相互转换基本介绍Golang 和 java / c 不同,Go 在不同类型的变量之间赋值时需要显式转换。也就是说 Golang 中数 据类型不能自动转换。基本语法表达式 T(v) 将值 v 转换为类型 TT: 就是数据类型,比如 int32,int64,float32 等等v: 就是需要转换的变量案例演示基本数据类型相互转换的注意事项Go 中,数据类型的转换可以是从 表示范围小–>表示范围大,也可以 范围大—>范围小被转换的是变量存储的数据(即值),变原创 2020-07-22 16:17:02 · 302 阅读 · 0 评论 -
Golang基本变量
Golang 变量使用的三种方式(1) 第一种:指定变量类型,声明后若不赋值,使用默认值(2) 第二种:根据值自行判定变量类型(类型推导)(3) 第三种:省略 var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误(4) 多变量声明在编程中,有时我们需要一次性声明多个变量,Golang 也提供这样的语法 举例说明:如何一次性声明多个全局变量【在 go 中函数外部定义变量就是全局变量】:该区域的数据值可以在同一类型范围内不断变化(重点)6) 变量在同一个作用原创 2020-07-22 12:14:28 · 214 阅读 · 0 评论 -
Golang预备知识
Golang常用转义字符\t 一个制表符,通常用来排版\n 换行符\\ 一个\\" 一个"\\ 一个回车 DOS常用命令目录操作dir 查看当前目录cd F: 切换到F盘切换路径cd abc 相对路径cd D:\abc 绝对路径cd .. 切换上一级目录cd \ 切换跟目录新建目录md ok1 新建一个目录md ok1 ok2 新建多个目录删除目录rd ok1 删除空目录rd /q/s ok3 删除目录以及下原创 2020-07-16 20:56:27 · 126 阅读 · 0 评论