网站首页 返回列表 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。
go语言 Redis的使用和操作
ReidsRedis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。Reids的特点*速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)*支持丰富数据类型,支持string,list,set,sortedset,h...
阅读全文
go Socket编程
TCPSocket客户端获取连接__//1.tcpAddr,err:=net.ResolveTCPAddr("tcp4",":8080")checkError(err)conn,err:=net.DialTCP("tcp",nil,tcpAddr)//2.addr:="wwww.baidu.com:80"//定义主机名...
阅读全文
go web接口
普通接口web服务器__import("io""net/http")funchello(whttp.ResponseWriter,r*http.Request){io.WriteString(w,"Helloworld!")}funcmain(){mux:=http.NewServeMux()mux.HandleFun...
阅读全文
go 进程和线程
进程:__并发运行:并发运行是多个任务被同时发起运行,但同一时刻这些任务只能有一个处于运行状态。这取决于cpu核心和cpu数量__并行运行:指同一时刻,可以有多个任务真正的同时运行。必要条件是多cou核心和多cpu核心的计算环境。__并发程序建议:1.控制临界区的纯度2.控制临界区的颗粒3.减少临界区中代码耗时4.避免...
阅读全文
go 锁的使用
锁互斥锁__由标准库代码包sync中的Mutex结构体类型代表,sync.Mutex类型(确切地说,是*sync.Mutex类型)只有两个公开方法——Lock和Unlock。顾名思义,前者被用于锁定当前的互斥量,而后者则被用来对当前的互斥量进行解锁。__packagemainimport("sync""fmt""run...
阅读全文
go runtime包的使用
runtime.GOMAXPROCS函数通过runtime.GOMAXPROCS函数,应用程序何以在运行期间设置运行时系统中得P最大数量。但这会引起“StoptheWord”。所以,应在应用程序最早的调用。并且最好的设置P最大值的方法是在运行Go程序之前设置好操作程序的环境变量GOMAXPROCS,而不是在程序中调用r...
阅读全文
64行代码实现零拷贝go的TCP拆包粘包
64行代码实现零拷贝go的TCP拆包粘包前言这段时间想用go写一个简单IM系统,就思考了一下go语言TCP的拆包粘包。TCP的拆包粘包有一般有三种解决方案。使用定长字节实际使用中,少于固定字长的,要用字符去填充,空间使用率不够高。使用分隔符一般用文本传输的,使用分隔符,IM系统一般对性能要求高,不推荐使用文本传输。用消...
阅读全文
Go tool pprof性能监控调试工具基本使用说明
JackLiu'sGithub地址:[https://github.com/iotd/jackliu-golang-notes/blob/master/zh_CN/tool-pprof.md](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Fiotd...
阅读全文
Go在酷狗数据库中间件的应用
本次分享主要围绕Go在数据库中间件应用这方面展开;首先会聊一下程序开发的需求,具体会参考Go的特性是否满足这些需求;接下来会介绍一下近期采用Go语言开发的mysql中间件这个项目,整体方案,分表路由、故障切换、平滑扩容,系统运维,主要从以上这五个方面进行展开。程序开发需求程序开发对开发语言的要求,简单概括如下几点:语言...
阅读全文
go语言反射的总结
首先巴拉巴拉一下golang反射机制的三个定律*1.反射可以从接口类型到反射类型对象*2.反射可以从反射类型对象到接口类型*3.修改反射类型变量的内部值需要保证其可设置性reflect的基本使用*reflect.ValueOf(obj)返回obj的Value(如果要对obj进行修改的话传入变量地址)*reflect.T...
阅读全文
go 文件操作
如果使用http操作文件可以参考:File建立File内存地址__//打开一个文件,如果没有就创建f,err:=os.Create("D:\\测试\\a.txt")//返回文件的内存地址os.NewFile(fd,name)打开文件__//返回File的内存地址,错误信息,通过os库调用funcOpen(namestr...
阅读全文
go 网络请求封装
HTTP简单demo__url:="http://www.xiaohuar.com"//定义一个URl。resp,err:=http.Get(url)//获取url的内容。iferr!=nil{//如果有异常就打印异常log.Fatal(err)}deferresp.Body.Close()//在方法运行完后关闭连接,...
阅读全文
go语言HTTP server端如何验证client端证书的内容
在前一篇文章"go语言实现双向TLS认证的RESTService"中介绍了如何实现client和server端之间的双向TLS认证,这里再介绍如何在server端获取client证书的内容。比如如何获取证书里的Subject属性等。__packagemainimport("net/http""encoding/json...
阅读全文
go语言gRPC简单例子
一个简单的用go语言开发gRPC程序例子。安装gRPCgRPC的安装需要3块内容1\.安装gRPC环境这个环境包括gRPC编译运行时刻需要的库。`$gogetgoogle.golang.org/grpc`2\.安装ProtocolBuffersv3这个是protoc编译器,用来编译.proto文件生成gRPC服务的go...
阅读全文
go语言实现TCP端口转发
有些时候项目会碰到需要端口转发的需求,比如:1.一个服务发布在公共端口上,客户端进来的请求需要转发到另一个本地端口,或者另一台主机;或者2.一个公共服务需要转到到多台内部服务上,轮询,按优先级等;或者3.一个服务请求进来之前需要做请求检查,例如安全功能参数等检查,类似网关功能,只有验证通过的请求才能发送给实际服务器。4...
阅读全文