文章分类 - Go学习之旅
摘要:一.设计模式概述 1.设计模式分类 1.创建型(Creational)模式 如何创建对象 2.结构性(Structural)模式 如何实现类或对象的组合 3.行为型(Beahvioral)模式 类或对象怎样交互以及怎样分配职责 2.设计模式的作用 1.有助于更加深入地理解面向对象思想 如何将代码分散
阅读全文
摘要:1.表结构 1.文章表(低版本数据库在create_time和update_time这块可能报错,不支持一张表中插入两个timestamp默认值) CREATE TABLE `article` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文章
阅读全文
摘要:1.简介 基于httprouter开发的web框架,http://github.com/julienschmidt/httprouter 提供Martini风格的API,但比Martini要快40倍 非产妇轻量级,使用起来非常简洁 2.安装与使用 1.安装 go get -u github.com/
阅读全文
摘要:1.简介 1.NSQ是Go语言编写的,开源的内存分布式消息队列中间件 2.可以大规模的处理每天数十亿计级别的消息 3.分布式和去中心化拓扑结构,无单点故障 4.GitHub地址:https://github.com/nsqio/nsq 2.应用场景 1.异步处理,把非关键流程异步化,提高系统的响应时
阅读全文
摘要:1.安装 go get github.com/garyburd/redigo/redis 2.示例 package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func main() { c, err := redis.Dial(
阅读全文
摘要:1.MySql常用引擎介绍 1.MyIasm引擎 1.不支持事物 2.不支持行锁 3.读写性能较好 2.Innodb引擎 1.支持事物 2.支持行锁 3.整体性能比较好 2.Golang中MYSQL驱动 1.依赖安装 go get github.com/go-sql-driver/mysql 2.导
阅读全文
摘要:1.简介 1.所有的第三方包都放在&GOPATH的src目录下 2.如果不同程序依赖的版本不一样,怎么管理 3.每个程序依赖的包,没有版本号的概念 2.godep安装 1.安装命令 go get github.com/tools/godep 2.验证:输入godep命令,出现帮助信息 3.godep
阅读全文
摘要:1.数据交换格式简介 1.简介 1.分布式系统 2.打包和解包操做 3.传输模式: 1.网络传输 2.API接口 3.文件传输 2.JSON数据格式 1.对象{key-value}形式 2.数组[{key-value}] 3.实例代码 1.Marshal:序列化 package main impor
阅读全文
摘要:1.web程序 1.介绍 标准包net\http封装web服务相关功能 使用简单、性能媲美nginx 2.Form表单 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录</title> </head> <
阅读全文
摘要:1.TCP服务端编程模型 1.图示 2.服务端处理流程 1.监听端口 2.接收客户端的连接 3.创建goroutine,处理该连接 package main import ( "fmt" "net" ) func handle(conn net.Conn) { defer conn.Close()
阅读全文
摘要:1.多channel场景 1.多个channel同时需要读取或写入,怎么办? 多管道读写时是一个串行过程,前面的管道会阻塞后面代码的运行 package main import ( "fmt" "time" ) func server1(ch chan string) { time.Sleep(6
阅读全文
摘要:1.多线程 1.线程是由操作系统进行管理,也就是处于内核态 2.线程之间进行切换,需要发生用户态到内核态的切换 3.当系统中运行大量线程,系统就会变得非常慢 4.用户态的线程,支持大量线程创建,也叫协程或goroutine 2.创建goroutine 1.使用go这个关键字创建一个新的轻量级线程(也
阅读全文
摘要:1.testing模块 testing包提供了自动化测试相关的框架 支持单元测试和压力测试 2.Go中的测试约定 用来测试的代码必须以_test.go结尾 单元测试的函数名必须以Test开头,并且只有一个参数,类型是*testing.T 单元测试函数名Test后必须紧跟着大写,比如:TestAdd
阅读全文
摘要:1,变量的介绍 1.变量的内在机制 1.类型信息:这部分是源信息,是预先定义好的 2.值信息:这部分是程序运行过程中,动态改变的 2.反射介绍 1.反射与空接口 1.空接口可以存储任何类型的变量 2.给你一个空接口,怎么知道里面存储的是什么东西 3.在运行时,动态获取一个变量的类型信息和值信息,就叫
阅读全文
摘要:1.接口的介绍与定义 1.定义 接口定义了一个对象的行为规范 A:只定义规范,不实现 B:具体的对象需要实现规范的细节 2.表现形式 1.type 接口名字 interface 2.接口里面是一组方法签名的集合 type Animal interface { Talk() Eat() Run() }
阅读全文
摘要:1.文件打开和读取 1.文件定义 文件是存储在外部介质上的数据集合 文件分类:文本文件和二进制文件 文件存取方式:随机存取和顺序存取 2.打开文件 package main import ( "fmt" "os" ) func main() { // 只读方式打开文件 file, err := os
阅读全文
摘要:1.格式化输入 1.从终端获取用户输入 1.fmt.Scanf(format string, a ...interface{}):格式化输入,空格作为分隔符,占位符(%s %d %f)和格式化输出一致 1.单行读入 package main import "fmt" func main() { va
阅读全文
摘要:1.struct的定义 1.Go中面向对象是通过struct来实现的,struct是用户自定义类型 type User struct{ Username string Sex string Age int AvatarUrl string } 2.struct的初始化 // 方式一: var use
阅读全文
摘要:1.go版本限制 go版本必须>=1.11 2.配置go mod和go proxy windows go env -w GOBIN="go语言安装的位置下的bin目录" go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,dir
阅读全文
摘要:1.map定义 map类型是一个key-value的数据结构 // var m map[key的类型]value的类型 var a map[string]int var b map[int]strig var c map[float]string 2.map声明 package main impor
阅读全文