随笔分类 - Go
golang the future lang
摘要:Golang中如何避免死锁:加锁 读写锁中的可读锁(sync.RWMutex 的 RLock())可以嵌套使用的。 互斥锁(sync.Mutex 和 sync.RWMutex 的 Lock())是不可以互相嵌套的,且不可以与可读锁嵌套。 之前我在读写锁和互斥锁上理解有偏差,认为读写锁与互斥锁是完全独
阅读全文
摘要:Beego的安装 go get github.com/astaxie/beego bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。 go get github.com/beego/bee 当我们安
阅读全文
摘要:一、安装依赖 安装gin和golang mysql driver,如下: go get "github.com/go-sql-driver/mysql" go get "github.com/gin-gonic/gin" 二、创建测试用的数据库 安装完mysql-server包后,启动并配置用户名密
阅读全文
摘要:1.Golang 2.golang适合做什么 3.golang的缺点有哪些? 4.golang的优势有哪些? 5.Golang Gin(上) 6.Golang Gin(中) 7.Golang Gin(下) 8.golang中channel的用法 9.golang cpu性能分析 10.golang
阅读全文
摘要:defer是什么? 在Go语言中,可以使用关键字defer向函数注册退出调用,即主函数退出时,defer后的函数才被调用。defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。 defer的用途 ? 在函数中,程序员经常需要创建资源(比如:数据库连接、文件句柄、锁等) ,为了在
阅读全文
摘要:空(nil)读写阻塞,写关闭异常,读关闭空零 给⼀个 nil channel 发送数据,造成永远阻塞 ▪ 从⼀个 nil channel 接收数据,造成永远阻塞 给⼀个已经关闭的 channel 发送数据,引起 panic ▪ 从⼀个已经关闭的 channel 接收数据,如果缓冲区中为空,则返回⼀个
阅读全文
摘要:TCP client Go语言中通过net包中的DialTCP函数来建立一个TCP连接,并返回一个TCPConn类型的对象,当连接建立时服务器端也创建一个同类型的对象,此时客户端和服务器端通过各自拥有的TCPConn对象来进行数据交换。一般而言,客户端通过TCPConn对象将请求信息发送到服务器端,
阅读全文
摘要:1.osi(Open System Interconnect) 开放式系统互联 7层模型 2.TCP/IP五层协议和OSI的七层协议对应关系如下。 3.tcp/ip与http的差别 http协议的报文要通过tcp/ip来传输 4.什么是 socket? socket 的原意是“插座”,在计算机通信领
阅读全文
摘要:在golang中channel用于goroutine之间的通信。 1. channel的定义 channel是引用类型,需要实用make来创建channel,如下 make(chan Type, [buffer]) make对于channel接收两个参数,第一个是通道的类型,第二个是个可选参数代表通
阅读全文
摘要:Model binding and validation To bind a request body into a type, use model binding. We currently support binding of JSON, XML, YAML and standard form
阅读全文
摘要:快速入门 Using GET, POST, PUT, PATCH, DELETE and OPTIONS func main() { // Creates a gin router with default middleware: // logger and recovery (crash-free
阅读全文
摘要:net/http Golang(Go语言)内置是有HTTP服务的,我们可以通过内置的net/http包来实现一个HTTP服务。 func main() { http.HandleFunc("/",Index) log.Fatal(http.ListenAndServe(":8080", nil))
阅读全文
摘要:goland,那么 打开 FILE -> setting -> Go Modules 选项 ,在proxy 选项上填写 https://goproxy.io
阅读全文
摘要:go get 下载beego 爆unrecognized import path google.golang.org/protobuf Windows下使用方法: 找到你的GOPATH/src目录,新建google.golang.org文件夹 在google.golang.org目录下执行 git
阅读全文
摘要:安装beego爆出:unrecognized import path "golang.org/x/sys/windows": windows: 在gopath目录src下创建golang.org目录,在golang.org目录下创建x目录,参考路径为:C:\go\src\golang.org\x 在
阅读全文
摘要:golang的_(下划线)有以下三种用法 1.忽略返回值这个应该是最简单的用途,比如某个函数返回三个参数,但是我们只需要其中的两个,另外一个参数可以忽略,这样的话代码可以这样写: v1, v2, _ := function(...) 2.用在变量(特别是接口断言) 例如我们定义了一个接口(inter
阅读全文
摘要:Go语言没有提供官方的数据库驱动,所以要安装第三方函数库。 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { //数据库连接 db,_:=sql.Open("my
阅读全文
摘要:select、poll 和 epoll 都是 Linux API 提供的 IO 复用方式。 epoll是Linux目前大规模网络并发程序开发的首选模型。在绝大多数情况下性能远超select和poll。目前流行的高性能web服务器Nginx正式依赖于epoll提供的高效网络套接字轮询服务。但是,在并发
阅读全文