01 2019 档案
摘要:一、参数配置 beego默认会解析当前应用下的conf/app.conf文件 1.1、beego的参数配置 几种开发模式 1.2、beego的应用参数配置 二、路由配置 2.1、基础路由 示例:配置路由 修改配置文件: vi /routers/router.go 2.2、自定义方法RESTful规则
阅读全文
摘要:一、beego框架 1、beego框架简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些
阅读全文
摘要:1、windows安装redis 软件包下载地址: https://github.com/MicrosoftArchive/redis/releases 1.1、安装 >下一步 >到完成。 1.2、设置redis密码。 C:\Program Files\Redis #编辑这个文件: redis.wi
阅读全文
摘要:一、mysql操作基本语法 1、创建名称nulige的数据库 2、建表,Id自增 3、往表中插入数据 4、查询表中内容 5、删除数据库 6、清空表中数据,保留表结构 二、mysql的增,删,改,查 2.1、增 (备注:往表中插入一条数据) 执行结果: 2.2、删 示例: 执行结果: 2.3、改(更新
阅读全文
摘要:一、Go连接mysql 1、mysql驱动 地址:https://github.com/Go-SQL-Driver/MySQL 说明: sql.Open()函数用来打开一个注册过的数据库驱动,Go-MySQL-Driver中注册了 mysql这个数据库驱动,第二个参数是DNS,它是Go-MySQL-
阅读全文
摘要:1、爬捧腹网 网页规律: https://www.pengfu.com/xiaohua_1.html 下一页 +1 https://www.pengfu.com/xiaohua_2.html 主页面规律: <h1 class="dp-b"><a href=" 一个段子url连接 “ 段子url: <
阅读全文
摘要:一、爬什么? 1、明确目标 : 知道你准备在那个范围或者网站去搜索 2、爬: 将所有的网站的内容全部爬下来 3、取:去掉对我们没用处的数据 4、处理数据:按照我们想要的方式存储或使用 二、百度贴吧小爬虫 需求:百度贴吧,每50页就翻页 https://tieba.baidu.com/f?kw=%E7
阅读全文
摘要:1、http客户端编程 示例: http_server.go http_client.go 执行结果: 先运行服务端: 再运行客户端:
阅读全文
摘要:1、http服务器获取客户端的一些信息 示例: 执行结果:
阅读全文
摘要:1、服务器如何知道用户需要什么资源 示例: 执行结果:
阅读全文
摘要:1、 请求报文格式分析 示例: 执行结果: 在浏览器中输入: 127.0.0.1:8000 请求报文: GET or POST
阅读全文
摘要:1、并发聊天服务器原理分析 2、并发聊天室 功能: 广播消息、广播上线、 查询在线用户、修改用户名、用户主动退出、超时处理 示例: 执行结果:
阅读全文
摘要:一、文件传输 1、文件传输原理 2、文件传输 示例: 发送方: send_file.go 接收方: recv_file.go 执行结果:
阅读全文
摘要:1、获取文件属性 示例: get_file_attribute.go 执行结果:
阅读全文
摘要:1、简单版并发服务器 示例1: 执行结果: 打开nc客户端: 2、简单版并发服务器 示例2: tcp_server.go tcp_client.go 执行结果:
阅读全文
摘要:1、TCP相互通信 服务端示例: tcp_server.go 客户端示例: tcp_client.go 先启动服务端:go run tcp_server.go 再启动客户端:go run tcp_client.go
阅读全文
摘要:一、netcat工具的使用 1、先安装netcat软件,再配置环境变量 2、tcp服务器代码 示例: 运行方法,参考下图。先打开win的cmd对话框
阅读全文
摘要:一、Socket编程 1、什么是Socket Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现,网络的Socket数据传输是一种特殊的I/O,Socket也
阅读全文
摘要:一、网络编程 1、网络分层架构 2、每层协议的功能 3、网络通信条件 网卡,mac地址(不需要用户处理) arp >通过IP找mac 逻辑地址,ip地址(需要用户指定) > 为了确定那个电脑接收 端口 >为了确定那个程序接收 同一个系统,一个程序只能绑定一个端口 不同系统,同一端口对应程序可能不一样
阅读全文
摘要:1、select实现的超时机制 示例: 执行结果:
阅读全文
摘要:一、select作用 Go里面提供了一个关键字select,通过select可以监听channel上的数据流动。 select的用法与switch语言非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述。 与switch语句可以选择任何可使用相等比较的条件相比, select
阅读全文
摘要:Ticker是一个定时触发的计时器,它会以一个间隔(interval)往channel发送一个事件(当前时间),而channel的接收者可以以固定的时间间隔从channel中读取事件。 1、Ticker的使用 示例: Ticker 每沿时一秒输出一个结果 执行结果:
阅读全文
摘要:1、Timer的使用 示例: #创建一个定时器,设置时间为2s,2s后,往time通道写内容(当前时间) 执行结果:
阅读全文
摘要:1、单向channel的应用 示例: 执行结果:
阅读全文
摘要:1、通过range遍历channel内容 执行结果:
阅读全文
摘要:1、有缓冲channel 示例: 有缓存会阻塞,当读取完其中数值时,又可以写入。 执行结果:
阅读全文
摘要:1、无缓冲channel 示例: 执行结果:
阅读全文
摘要:1、channel介绍 和map类似,channel也一个对应make创建的底层数据结构的引用。 当我们复制一个channel或用于函数参数传递时,我们只是拷贝了一个channel引用,因此调用者何被调用者将引用同一个channel对象。和其它的引用类型一样,channel的零值也是nil。 定义一
阅读全文
摘要:1、多任务资源竞争问题 示例: 执行结果: 程序执行过程: 一人打印一个字符,这样就乱了。
阅读全文
摘要:一、runtime包 1、Gosched的使用 runtime.Gosched() 用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其他等待的任务运行,并在下次某个时候从该位置恢复执行。 这就像跑接力赛,A跑了一会碰到代码runtime.Gosched() 就把接力棒交给B了,
阅读全文
摘要:1、主协程先退出导致子协程没来得及调用 示例: 执行结果
阅读全文
摘要:1、goroutine是什么 goroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),
阅读全文
摘要:1、并行和并发的概念 并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。 并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交
阅读全文
摘要:1、文件案例:拷贝文件 示例: 执行结果: 拷贝效果如下:
阅读全文
摘要:1、借助bufio实现按行读取内容 示例: 执行结果:
阅读全文
摘要:1、read的使用(备注:读文件) 示例: #执行结果: (会生成一个demo.txt的文件)
阅读全文
摘要:1、WriteString的使用 示例: 执行结果: 生成一个demo.txt文件
阅读全文
摘要:一、文件常用操作接口介绍 1、创建文件 法1: 推荐用法 func Create(name string) (file *File, err Error) 根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666的文件,返回的文件对象是可读写的。 法2: 法2: 2、打开文件 法1: 法2
阅读全文
摘要:1、文件分类和为什么需要文件 设备文件: 屏幕(标准输出设备) fmt.Println() 从标准输出设备写内容 键盘(标准输入设备) fmt.Scan() 从标准输入设备读取内容 磁盘文件,放在存储设备上的文件 1、文本文件 以记事本打开,能看到内容(不是乱码) 2、二进制文件 以记事本打开 ,能
阅读全文
摘要:1、json解析到map(通过类型断言,找到值和value类型) 示例: 执行结果:
阅读全文
摘要:1、json解析到结构体 示例: 执行结果: 示例2: 定义结构体,解析你想生成的字段 执行结果:
阅读全文
摘要:1、通过map生成json 示例1: 执行结果: 示例2: 执行结果:
阅读全文
摘要:1、通过结构体生成json 示例: 执行结果: 2、根据结构体生成json 执行结果: 3、struct_tag的使用 (通过二次编码,可以把大写变成小写,还可以以字符串方式输出) 示例: 执行结果:
阅读全文
摘要:一、JSON处理 JSON (JavaScript Object Notation)是一种比XML更轻量级的数据交换格式,在易于人们阅读和编写的同时,也易于程序解析和生成。尽管JSON是JavaScript的一个子集,但JSON采用完全独立于编程语言的文本格式,且表现为键/值对集合的文本描述形式(类
阅读全文
摘要:正则表达式是一种进行模式匹配和文本操纵的复杂而又强大的工具。虽然正则表达式比纯粹的文本匹配效率低,但是它却更灵活。按照它的语法规则,随需构造出的匹配模式就能够从原始文本中筛选出几乎任何你想要得到的字符组合。 Go语言通过regexp标准包为正则表达式提供了官方支持,如果你已经使用过其他编程语言提供的
阅读全文
摘要:下面这些函数来自于strings包,这里介绍一些我平常经常用到的函数,更详细的请参考官方的文档。 一、字符串操作常用函数介绍 1、Contains 示例: 执行结果: 2、Join 示例: 执行结果: 3、Index 示例: 执行结果: 4、Repeat 示例: 执行结果: 5、Replace 示例
阅读全文
摘要:1、recover的使用 示例: 执行结果:
阅读全文
摘要:1、数组越界导致panic 示例: 执行结果:
阅读全文
摘要:1、显式调用panic函数 示例: 执行结果:
阅读全文
摘要:1、error接口应用 示例: 执行结果:
阅读全文
摘要:1、error接口的使用 示例: 执行结果:
阅读全文
摘要:1、通过switch实现类型断言 示例: 执行结果:
阅读全文
摘要:1、通过if实现类型断言 示例: 结果:
阅读全文
摘要:1、接口的定义和实现以及接口的继承 示例: #执行结果:
阅读全文
摘要:方法集 类型的方法集是指可以被该类型的值调用的所有方法的集合。 用实例实例 value 和 pointer 调用方法(含匿名字段)不受方法集约束,编译器编总是查找全部方法,并自动转换 receiver 实参。 1、指针类型和普通类型的方法集 示例: 执行结果:
阅读全文
摘要:1、为结构体类型添加方法 示例: 执行结果:
阅读全文
摘要:1、方法 (method) 在面向对象编程中,一个对象其实也就是一个简单的值或者一个变量,在这个对象中会包含一些函数,这种带有接收者的函数,我们称为方法(method)。 本质上,一个方法则是一个和特殊类型关联的函数。 一个面向对象的程序会用方法来表达其属性和对应的操作,这样使用这个对象的用户就不需
阅读全文
摘要:1、结构体指针类型匿名字段 示例: 执行结果:
阅读全文
摘要:1、面向对象编程 对于面向对象编程的支持Go 语言设计得非常简洁而优雅。因为, Go语言并没有沿袭传统面向对象编程中的诸多概念,比如继承(不支持继承,尽管匿名字段的内存布局和行为类似继承,但它并不是继承)、虚函数、构造函数和析构函数、隐藏的this指针等。 尽管Go语言中没有封装、继承、多态这些概念
阅读全文
摘要:1、可见性规则验证 如果想使用别的包的函数、结构体类型、络构体成员。 函数名、类型名,结构体成员变量名,首字母必段大写,可见。 如果首字母是小写,只能在同一个包里使用。 文件夹样例: 示例: vi test.go vi main.go
阅读全文
摘要:1、结构体做函数参数值传递 示例: 执行结果: 2、结构体做函数参数:地址传递 示例: 执行结果:
阅读全文
摘要:1、结构体比较和赋值 (同类型的结构体可以相互赋值) 示例: #执行结果:
阅读全文
摘要:1、结构体成员的使用:指针变量 示例: 执行结果:
阅读全文
摘要:1、结构体成员的使用普通变量 示例: 执行结果:
阅读全文
摘要:1、结构体 1.1、结构体类型 有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年龄/地址等属性。显然单独定义以上变量比较繁琐,数据不便于管理。 结构体是一种聚合的数据类型,它是由一系列具有相同类型或不同类型的数据构成的数据集合。每个数据称为结构体的成员。 1.2、
阅读全文
摘要:1、map赋值 示例: 执行结果: 2、map遍历 示例1: 执行结果: 3、map 判断一个key值是否存在 示例2: 执行结果: 4、map删除 示例4: 执行结果: 5、map做函数参数 示例5: 执行结果:
阅读全文
摘要:1、map介绍 Go语言中的map(映射、字典)是一种内置的数据结构,它是一个无序的key—value对的集合,比如以身份证号作为唯一键来标识一个人的信息。 2、map示例 map格式为: map[keyType]valueType 在一个map里所有的键都是唯一的,而且必须是支持==和!=操作符的
阅读全文
摘要:1、 产生一个随机的4位数 示例1: 执行结果: 2、取出每一位数 示例2: 执行结果: 3、逻辑处理 示例3: 执行结果:
阅读全文
摘要:1、切片做函数参数 (备注:用了冒泡排序) 示例: 执行结果:
阅读全文
摘要:1、append扩容特点 示例: 执行结果:
阅读全文
摘要:1、append函数的使用 作用:在原切片的末尾添加元素 示例: #执行结果:
阅读全文
摘要:1、切片的创建 示例: 执行结果: 2、切片的截取 切片语法: 操作 含义 s[n] 切片s中索引位置为n的项 s[:] 从切片s的索引位置0到len(s)-1处所获得的切片 s[low:] 从切片s的索引位置low到len(s)-1处所获得的切片 s[:high] 从切片s的索引位置0到high处
阅读全文
摘要:1、数组指针做函数参数 示例: 执行结果:
阅读全文
摘要:1、数组做函数参数是值拷贝 示例: 执行结果:
阅读全文
摘要:1、随机数的使用 示例1: 如果种子参数一样,每次运行程序产生的随机数都一样 执行结果: 产生的随机数,每次结果都一样。 示例2:以当前时间做为参数,每次程序运行的随机数都会不一样 执行结果:
阅读全文
摘要:1、go语音基础之数组比较和赋值 示例: 执行结果:
阅读全文
摘要:1、数组 数组是指一系列同一类型数据的集合。数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度。 数组⻓度必须是常量,且是类型的组成部分。 示例: 执行结果: 2、数组的基本操作 示例: 执行结果:
阅读全文
摘要:1、指针做函数参数 示例: 执行结果: 分析流程图
阅读全文
摘要:1、指针做函数参数 示例: 执行结果: 流程图:
阅读全文
摘要:1、new函数 表达式new(T)将创建一个T类型的匿名变量,所做的是为T类型的新值分配并清零一块内存空间,然后将这块内存空间的地址作为结果返回,而这个结果就是指向这个新的T类型值的指针值,返回的指针类型为*T。 我们只需使用new()函数,无需担心其内存的生命周期或怎样将其删除,因为Go语言的内存
阅读全文
摘要:1、不要操作没有合法指向的内存 示例: 执行结果:
阅读全文
摘要:1、分类 类型 名称 长度 默认值 说明 pointer 指针 nil array 数组 0 slice 切片 nil 引⽤类型 map 字典 nil 引⽤类型 struct 结构体 2、指针 指针是一个代表着某个内存地址的值。这个内存地址往往是在内存中存储的另一个变量的值的起始位置。Go语言对指针
阅读全文
摘要:1、init函数的介绍 示例: 文件夹目录如下: 源代码: vi main.go //程序入口 vi /src/calc.go #执行结果: 2、生成bin目录和pkg目录,就需要设置环境变量 #设置环境变量GOPATH路径 #关闭命令行窗口,再打开,输入go env 查看GOPATH路径 配置完成
阅读全文
摘要:1、同级目录 分文件编程(多个源文件),必须放在src目录 同一个目录,包名必须一样 设置GOPATH环境变量 go env 查看go相关环境路径 GO PATH: 在windows系统中,添加go环境变量路径: C:\go的安装目录路径\engineering_management 同一个目录,调
阅读全文
摘要:1、不同目录 不同目录,包名不一样 调用不同包里面的函数,格式:包名,函数名() 调用别的包的函数,这个包函数名字如果是小写,无法让别人调用,要想别人能调用,必须首字母大写。 需要配置环境变量 临时配置方法: 复制路径:C:\engineering_management 添加路径到开发软件中: 1、
阅读全文
摘要:1、导入包 示例: 法一 执行结果: 示例: 法二 在()中间直接加包名 执行结果: 示例3: 调用函数,无需通过包名 执行结果: 示例4:给包取别名 执行结果: 示例5: _操作, 忽略此包 #执行结果:
阅读全文
摘要:1、包 2、自定义包 package calc 注意:同一个目录下不能定义不同的package。 3、main包
阅读全文
摘要:1、工程管理 在实际的开发工作中,直接调用编译器进行编译和链接的场景是少而又少,因为在工程中不会简单到只有一个源代码文件,且源文件之间会有相互的依赖关系。如果这样一个文件一个文件逐步编译,那不亚于一场灾难。 Go语言的设计者作为行业老将,自然不会忽略这一点。早期Go语言使用makefile作为临时方
阅读全文
摘要:1、获取命令行参数 示例: 执行结果: 在命令行中运行程序,才能传多个参数给他。 D:\GoFiles\src\hello_01>go build main.go D:\GoFiles\src\hello_01>main.exe a b n = 3 示例2: 执行结果:
阅读全文
摘要:1、匿名函数结合使用 示例1: 执行结果: 示例2: 代表调用此匿名函数, 把参数传递过去,已经先传递参数(原来已经把a = 10 ,b = 20传递过去了),只是没有调用 执行结果:
阅读全文
摘要:1、 多个defer执行顺序 #执行结果:
阅读全文
摘要:所谓闭包就是一个函数“捕获”了和它在同一作用域的其它常量和变量。这就意味着当闭包被调用的时候,不管在程序什么地方调用,闭包能够使用这些常量或者变量。它不关心这些捕获了的变量和常量是否已经超出了作用域,所以只有闭包还在使用它,这些变量就还会存在。 1、闭包的特点 示例1: 函数调用完毕,x自动释放 执
阅读全文
摘要:1、闭包捕获外部变量特点 示例: 执行结果:
阅读全文
摘要:一、匿名函数 示例1: 执行结果: 示例2: 定义匿名函数,同时调用 执行结果: 示例3: 带参数的匿名函数 执行结果: 示例4: 定义匿名函数,同时调用 执行结果: 示例5: 匿名函数,有参有返回值 执行结果:
阅读全文
摘要:1、回调函数 示例: 实现:加,减,乘 示例: #执行结果:
阅读全文
摘要:1、函数类型 示例: 执行结果: 2、自定义类型 (加法) 执行结果: 3、自定义类型 (减法) 执行结果:
阅读全文
摘要:1、实现1+100 = 5050 示例: 执行结果: 2、递归实现1+2+3+……100 示例: 执行结果: 分析流程: 3、递归实现1+2+3+……100 示例: 执行结果:
阅读全文
摘要:一、递归函数的调用流程 执行结果: 分析流程如下:
阅读全文
摘要:函数调用流程:先调用后返回,先进后出,函数递归,函数调用自己本分,利用此物点 1、普通函数的调用流程 执行结果: #分析程序流程
阅读全文
摘要:1、有参有返回值函数的使用 示例1: 执行结果: 示例2: 丢弃其中一个结果,只取一个参数的结果。 执行结果:
阅读全文
摘要:1、函数有多个返回值 示例1: 执行结果: 示例2: 执行结果: 示例3: 执行结果: 函数定义说明: l func:函数由关键字 func 开始声明 l FuncName:函数名称,根据约定,函数名首字母小写即为private,大写即为public l 参数列表:函数可以有0个或多个参数,参数格式
阅读全文
摘要:1、函数只有一个返回值 示例1: 执行结果: 示例2: 执行结果: 示例3: go推荐用法 执行结果:
阅读全文
摘要:1、不定参数的传递 示例1: 执行结果: 示例2: 执行结果:
阅读全文
摘要:1、普通参数列表 (备注:只有一个参数) 示例1: #执行结果: 示例2: 多个参数 执行结果: 示例3: 相同类型变量 执行结果: 示例4:多种类型的定义方法 (备注:全部写上类型)
阅读全文
摘要:1、检查并设置连接限制 2、mysql缓存池的大小 默认值128MIB,建议扩大至服务器内存的80%,使用多实例可以提高绶存池的并发性。
阅读全文