原文:https://www.cnblogs.com/CRayFish07/p/11577361.html
func main() {f, err := os.OpenFile("debug.log", os.O_RDWR, 0666)if err != nil {panic(err)}go func() {defer f.Write([]byte("2"))for {f.Write([]byte("1"))time.Sleep(time.Second)}}()<-time.Tick(5 * time.Second)
}
>11111
1.主函数退出后,所有由主函数创建的携程都会结束2.主函数退出携程内的defer不一定会执行 func main() {messages := make(chan int, 10)done := make(chan bool)defer close(messages)// consumerg...
//go func 和主线程之间的关系是并行和竞争关系package mainimport ("fmt""sync""time"
)var l sync.Mutex
var m *sync.Mutexfunc main() {m = new(sync.Mutex)go lock(1)time.Sleep(3 * time.Second)fmt.Printf("%s\n", "exit!")}
func lock(i int) {println(i, "lock start")m.Lock()println(i, "lock")time.Sleep(3 * time.Second)m.Unlock()println(i, "unlock")
} 原文:http://www.cnblogs.com/rojas/p/4401931.html
golang RPC通信中,有时候就怕读写hang住。那是否可以设置读写超时呢?1.方案一: 设置连接的读写超时1.1 clientRPC通信基于底层网络通信,可以通过设置connection的读写超时时间,达到RPC读写超时的目的。server端和client端代码如下。
server
一个简单的json RPC server。package mainimport ("fmt""log""net""net/rpc""net/rpc/jsonrpc""time"
)type Counter struct {Sum int
}func (this *Counter) Add(i int, r *int) error {...
项目运行指南本指南在Windows环境下使用Goland IDE运行,需要提前配置好Golang环境一、导入项目1、创建目录首先在你的 WorkSpace 中创建 GOPATH 与 GOPROJECT 两个文件夹GOPATH 中包含 src、pkg、bin 这三个目录,需要手动创建,如图:2、配置环境变量GO111MODULE = onGOPATH = D:\WorkSpace\GOPATHGOPROXY = https://goproxy.io打开 cmd 执行 go get -v -u github.com/kataras/iris注意:这里如果没配置GOPROXY会出现被墙的情况。...
golang的GC,1.8通过混合写?屏障, 使得STW降到了sub ms。go语言中程序代码执行和垃圾回收是并发执行的。当前Go GC特征 :三色标记,并发标记和清扫,非分代,非紧缩,混合写屏障。三色标记:1. 将所有对象放在白色集合中2. 从rootset遍历可达对象,将可达对象放在灰色集合中3. 将灰色集合中对象进行遍历,将可达对象放在灰色集合中,将其本身放在黑色集合中4. 重复第三步,直到灰色集合遍历为空5. 将白色集合中的对象视为垃圾进行清...
package mainimport ("log""os""time"
)func main() {log.Println(GetFileModTime("./xiaochuan.txt"))
}
//获取文件修改时间 返回unix时间戳
func GetFileModTime(path string) int64 {f, err := os.Open(path)if err != nil {log.Println("open file error")return time.Now().Unix()}defer f.Close()fi, err := f.Stat()if err != nil {log.Println("stat fileinfo error")return time.Now().Unix()}return fi.ModTime().Unix()...
网站上有9000多张照片要下载://一开始参考https://www.jb51.net/article/153275.htm用reader和writer进行io.Copy,但经常是抓取100多个网页后就崩溃了,//原因似乎是输入输出流影响或并发数量影响,代码执行快,输出流写硬盘慢。//后来参考https://www.cnblogs.com/smartrui/p/12110576.html,改为ioutil.WriteFile直接写文件,还不行//因为一共才9000多张照片,原来的程序每次下载前400张就崩溃了,应该是并发访问太多,网站受不了。...
os包是系统标准库里面有操作系统相关的函数和变量,打开一个文件可以使用os.openpackage mainimport ("fmt""os"
)func main() {file, err := os.Open("c:/tmp.txt")if err != nil {fmt.Println("Open file Failed", err)return}defer func() {file.Close()}()var b []byte = make([]byte, 4096)n, err := file.Read(b)if err != nil {fmt.Println("Open file Failed", err)}data := string(b[:n])fmt.Println(data)
}
原文:https:...
1.Go语言的简述 Go语言可能大家对它并不是很了解,因为它相对其他语言来说实在是太年轻了,从创建到现在仅仅十年,09年,谷歌团队初设该想法,到实现也就是10年时间,对于go语言,它不是万能的,每种语言都有其优点和缺点,就如python一样,以其简约风格获得大多数人的赞可,但是python也因如此,导致它的编译速度比c c++ java慢了数十倍,而GO语言如创始人所说:既有python的风格,又兼备c的编译速度.(虽然每个人都在推荐自己的产品),新型的语言...
1、定义:单例对象的类必须保证只有一个实例存在,全局有唯一接口访问。2、分类: 懒汉方式:指全局的单例实例在第一次被使用时构建。饿汉方式:指全局的单例实例在类装载时构建。3、实现: (1)懒汉方式 1type singleton struct{}
2 var ins *singleton
3 func GetIns() *singleton{
4if ins == nil {
5 ins = &singleton{}
6 }
7return ins
8 } 缺点:非线程安全。当正在创建时,有线程来访问此时ins = nil...
Java程序员的Golang入门指南1.序言Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis、类Evernote的云笔记leanote等。1.1 为什么要学习如果有人说X语言比Y语言好,两方的支持者经常会激烈地争吵。如果你是某种语言老手,你就是那门语言的“传道者”,下意识地会保护它。无论承认与否,你都已被困在一个隧道里,你看到的完全是局限的。《肖申克的救赎》对此有很好的注脚:[Red] These walls are funny. First you ...
前两天在解扫地机器人算法的问题时,遇到一个坑
部分代码如下:func move2(startPoint Point) [][]Point {allFootPrint := [][]Point{{startPoint}}for i := 0; i < N; i++ {allNewFootPrint := make([][]Point, 0)for len(allFootPrint) > 0 {curFootPrint := allFootPrint[len(allFootPrint)-1]allFootPrint = allFootPrint[:len(allFootPrint)-1]last := curFootPrint[len(curFootPrint)-1]for _, d := range directions {nextP...
Golang 在使用匿名成员初始化时,如果出现mixture of field:value and value initializers是因为初始化的方式不对,见代码:package mainimport ("fmt"
)type Person struct {Name stringAge intSex string
}type Student struct {PersonId stringGrade string
}func main() {s1 := Student{Person: Person{Name: "张三", Age: 13, Sex: "男"}, Id: "13321", Grade: "三年级"}fmt.Printf("%+v\n", s1)s2 := Student{Person{"张...
一 安装swaggo get github.com/swaggo/swag/cmd/swag 二 安装gin-swaggergo get -u github.com/swaggo/gin-swaggergo get -u github.com/swaggo/gin-swagger/swaggerFiles 三 生成docs文件夹 swag init swag init一定要和main.go处于同一级目录main程序名称必须为main.go, 本人尝试过别的名字比如wbw.go的时候会报如下错误,有知道如何解决的朋友可教我一下cannot parse source files /home/wbw/go/src/debuggrpc/test/testswag/m...