随笔分类 -  go

摘要:排序,顾名思义,就是把一坨数字按照某种特定的顺序排列好了,比如从小到大又或者从大到小。 冒泡排序,冒泡嘛,形象一点儿,就是一个个泡泡往上涌,然后和“相邻的泡泡”比试,最后最小的泡泡浮到了水面上。既然是想要让小的从底部都涌到上面,那么为何不尝试一下最后往前呢? package main import( 阅读全文
posted @ 2021-01-14 15:24 setevn 阅读(364) 评论(0) 推荐(0) 编辑
摘要:verb描述 %d 十进制整数 %x, %o, %b 十六进制、八进制、二进制整数 %f, %g, %e 浮点数:如 3.141593, 3.141592653589793, 3.141593e+00 %t 布尔型:true 或 false %c 字符(Unicode 码点) %s 字符串 %q 带 阅读全文
posted @ 2019-08-30 16:51 setevn 编辑
摘要:// dup1 输出标准输入中出现次数大于1的行,前面是次数 package main import ( "bufio" "fmt" "os" ) func main() { counts := make(map[string]int) input := bufio.NewScanner(os.St 阅读全文
posted @ 2019-08-30 16:49 setevn 编辑
摘要:maze.in 6 50 1 0 0 00 0 0 1 00 1 0 1 01 1 1 0 00 1 0 0 10 1 0 0 0 阅读全文
posted @ 2019-07-18 11:20 setevn 阅读(193) 评论(0) 推荐(0) 编辑
摘要:连接 Conn接口是与Redis协作的主要接口,可以使用Dial,DialWithTimeout或者NewConn函数来创建连接,当任务完成时,应用程序必须调用Close函数来完成操作。 命令操作 通过使用Conn接口中的do方法执行redis命令,redis命令大全参考:http://doc.re 阅读全文
posted @ 2019-07-10 14:23 setevn 阅读(929) 评论(0) 推荐(0) 编辑
摘要:func (srv *Server) Serve(l net.Listener) error {defer l.Close() var tempDelay time.Duration // how long to sleep on accept failure for { rw, e := l.Ac 阅读全文
posted @ 2019-07-04 16:30 setevn 阅读(474) 评论(0) 推荐(0) 编辑
摘要:1、直接声明:var slice []int 2、new: slice := *new([]int) 3、字面量:slice := []int{1,2,3,4,5} 4、make: slice := make([]int, 5, 10) 5、从切片或数组“截取”:slice := array[1:5 阅读全文
posted @ 2019-06-30 23:47 setevn 阅读(3520) 评论(0) 推荐(0) 编辑
摘要:程序使用短变量声明创建bufio.Scanner类型的变量input。 该变量从程序的标准输入中读取内容。每次调用input.Scan(),即读入下一行,并移除行末的换行符;读取的内容可以调用input.Text()得到。Scan函数在读到一行时返回true,不再有输入时返回false。 类似于C或 阅读全文
posted @ 2019-06-28 16:02 setevn 阅读(434) 评论(0) 推荐(0) 编辑
摘要:驱动 github.com/go-sql-driver/mysql 请求一个连接的函数有好几种,执行完毕处理连接的方式稍有差别,大致如下: db.Ping() 调用完毕后会马上把连接返回给连接池。 db.Exec() 调用完毕后会马上把连接返回给连接池,但是它返回的Result对象还保留这连接的引用 阅读全文
posted @ 2019-06-26 17:52 setevn 阅读(540) 评论(0) 推荐(0) 编辑
摘要:类型 []byte 的切片十分常见,Go 语言有一个 bytes 包专门用来解决这种类型的操作方法。 bytes 包和字符串包十分类似。而且它还包含一个十分有用的类型 Buffer: import "bytes" type Buffer struct { ... } 这是一个长度可变的 bytes 阅读全文
posted @ 2019-06-25 15:05 setevn 阅读(650) 评论(0) 推荐(0) 编辑
摘要:看起来二者没有什么区别,都在堆上分配内存,但是它们的行为不同,适用于不同的类型。 new(T) 为每个新的类型T分配一片内存,初始化为 0 并且返回类型为*T的内存地址:这种方法 返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和结构体;它相当于 &T{}。 make(T) 返回 阅读全文
posted @ 2019-06-25 14:36 setevn 阅读(3170) 评论(0) 推荐(0) 编辑
只有注册用户登录后才能阅读该文。
posted @ 2019-06-17 18:27 setevn 阅读(2) 评论(0) 推荐(0) 编辑
摘要:做并发编程之前,必须首先理解什么是并发,什么是并行,什么是并发编程,什么是并行编程。 并发(concurrency)和并行(parallellism)是: 所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。 各位是如何理解并行和并发的呢? 阅读全文
posted @ 2018-11-08 16:54 setevn 阅读(157) 评论(0) 推荐(0) 编辑
摘要:golang的goroutine机制有点像线程池: 一、go 内部有三个对象: P对象(processor) 代表上下文(或者可以认为是cpu),M(work thread)代表工作线程,G对象(goroutine). 二、正常情况下一个cpu对象启一个工作线程对象,线程去检查并执行goroutin 阅读全文
posted @ 2018-05-24 00:14 setevn 编辑
摘要:并发concurrency 很多人都是冲着Go大肆宣扬的高并发而忍不住跃跃欲试,但其实从源码的解析来看,goroutine只是由官方实现的“线程池”而已。不过话说回来,每个实例4-5kb的栈内存占用和由于实现机制而大幅减少的创建和销毁开销,是制造Go号称高并发的根本原因。另外,goroutine的简 阅读全文
posted @ 2018-05-01 23:00 setevn 编辑
摘要:golang中sync包实现了两种锁Mutex (互斥锁)和RWMutex(读写锁),其中RWMutex是基于Mutex实现的,只读锁的实现使用类似引用计数器的功能. type Mutex func (rw *RWMutex) Unlock() 其中Mutex为互斥锁,Lock()加锁,Unlock 阅读全文
posted @ 2018-05-01 22:46 setevn 编辑

点击右上角即可分享
微信分享提示