摘要:
一、newInstance()和new()区别: 两者创建对象的方式不同,前者是实用类的加载机制,后者则是直接创建一个类: newInstance创建类是这个类必须已经加载过且已经连接,new创建类是则不需要这个类加载过 newInstance: 弱类型(GC是回收对象的限制条件很低,容易被回收)、 阅读全文
摘要:
step1:确保本地已经首先安装TortoiseGit,没有的话到TortoiseGit官网下载TortoiseGit step2:安装好之后,我们先用TortoiseGit在本地生成SSH,进入‘开始’,找到git双击Puttygen,我们要生成密钥,这个是等会在GitHub上面配置秘钥的(SSH 阅读全文
摘要:
解析记录命令行 os.Args os.Args 是一个 string 的切片,用来存储所有的命令行参数 func main() { fmt.Println("命令行的参数有", len(os.Args)) //遍历os.Args切片,就可以得到所有的命令行输入参数值 for i, v := rang 阅读全文
摘要:
Beego: 原生方式使用MySQL package controllers import ( "database/sql" "fmt" "github.com/astaxie/beego" _ "github.com/go-sql-driver/mysql" ) type MysqlControl 阅读全文
摘要:
时间操作 Time包 获取当前时间 t := time.Now() fmt.Printf("%T\n", t) //time.Time fmt.Println(t) //2019-07-08 15:23:55.1114609 +0800 DST m=+0.000192401 获取指定的时间 t := 阅读全文
摘要:
GUI编程 互联网上已经涌现出不少成熟、好用的第三方GUI界面库。 https://github.com/avelino/awesome-go#gui GTK2 GTK+ 是一种面向对象式的API(applicationprogramming interface)。Glib 是GTK+的基础,而这种 阅读全文
摘要:
单元测试 传统的方法 传统方法的缺点分析 不方便, 我们需要在 main 函数中去调用,这样就需要去修改 main 函数,如果现在项目正在运行,就可能去停止项目。 不利于管理,因为当我们测试多个函数或者多个模块时,都需要写在 main 函数,不利于我们管理和清晰我们思路 引出单元测试。-> test 阅读全文
摘要:
网络编程 TCP socket 编程,是网络编程的主流。之所以叫 Tcp socket 编程,是因为底层是基于 Tcp/ip 协议的. b/s 结构的 http 编程,我们使用浏览器去访问服务器时,使用的就是 http 协议,而 http 底层依旧是用 tcp socket 实现的。 协议(tcp/ 阅读全文
摘要:
协程(goroutine) 基本介绍 并发和并行 多线程程序在单核上运行,就是并发 多线程程序在多核上运行,就是并行 并发:因为是在一一个cpu上,比如有10个线程,每个线程执行10毫秒(进行轮询操作),从人的角度看,好像这10个线程都在运行,但是从微观上看,在某一个时间点看,其实只有一一个线程在执 阅读全文
摘要:
文件操作 文件的概念 文件是数据源(保存数据的地方)的一种,文件最主要的作用就是保存数据. 输入流和输出流 流:数据在数据源(文件)和程序(内存)之间经历的路径 输入流:数据从数据源(文件)到程序(内存)的路径 输出流:数据从程序(内存)到数据源(文件)的路径 os.File os.File 封装所 阅读全文