Go语言中文网 为您找到相关结果 226

分布式 NoSQL 数据库Titan

Titan 是美图公司基于 [TiKV](https://www.oschina.net/p/tikv) 开发的一个 NoSQL 数据库,Titan 使用完全兼容 Redis 的通讯协议。 主要特性: 完全兼容 Redis 协议 完全支持强一致性的分布式事务 支持多租户模式 无缝扩展 高可用性 下面是 Titan 的一些性能测试结果: ![Get command benchmark](https://static.oschina.net/uploads/img/201811/19071751_sZAD.png) ![Set command benchmark](https://static.oschina.net/uploads/img/201811/19071752_fl...阅读全文

开源项目 2018-12-05 09:30:01 网友

Go 多态功能实现

Go 多态功能实现 Go本身不具有多态的特性,不能够像Java、C++那样编写多态类、多态方法。但是,使用Go可以编写具有多态功能的类绑定的方法。为什么这么说呢?因为Go使用struct构建类,根据不同类调用不同的方法。下面将展示如何使用Go编写多态功能。 package main import ( "fmt" ) type strCase struct{} type intCase struct{} func (text strCase) Add(x string, y string) string { return x + y } func (number intCase) Add(x int, y int) int { return x + y } func StartPolymorp...阅读全文

博文 2016-08-04 20:00:05 abcijkxyz

Golang全面深入系列

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 接口 1 - Golang interface接口全面理解(一) 2 - Golang interface接口全面理解(二) 并发 1 - 并发介绍 2 - Goroutine 3 - Channle 4 - 带缓冲的channle和工作池 5 - Select 6 - Mutex Defer和错误处理 1 - defer 2 - 错误处理 3 - 自定义错误 4 - p...阅读全文

博文 2018-03-13 18:33:07 90design

并发环境应用map的解决方案

众所周知,golang的map是非协程安全的(go1.6版本以后,go1.6之前读安全),而并发读写map的需求应该是很普遍的。举例如下: package main import "fmt" func main() { a := make(map[int]bool, 0) for i:=0;i<100;i++{ go func() { for i := 0; i < 20000; i++ { a[i] = false fmt.Printf("%v %v\n",i,a[i]) } }() } } 运行报错:fatal error: concurrent map writes1.9版本之前,官方提供的解决方案是自己封装个带同步锁的struct。例如: package main import ( ...阅读全文

博文 2018-09-03 19:34:53 Cedrus

Go语言并发例子

package main import ( "fmt" "runtime" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) c := make(chan bool, 10) for i := 0; i < 10; i++ { go Go(c, i) } for i := 0; i < 10; i++ { <-c } } func Go(c chan bool, index int) { a := 1 for i := 0; i < 100; i++ { a += i } fmt.Println(index, a) c <- true } package main import ( "fmt" "runtime" "sync" ) fu...阅读全文

博文 2014-12-20 19:00:02 itfanr

go语言_异步编程_example.01

package main import ( "log" "math/rand" "time" ) func UploadNetvalueFile(done chan bool) { //利用随机函数模拟不同文件的处理时间 r := rand.New(rand.NewSource(time.Now().UnixNano())) x := r.Intn(20) log.Println("UploadNetvalueFile: ", x) time.Sleep(time.Second * time.Duration(x)) log.Println("UploadNetvalueFile OK") done <- true } func UplaodSaleFareFile(done chan bo...阅读全文

博文 2015-06-17 23:05:56 zistxym

Dig101: Go之for-range排坑指南

好久没写了,打算今年做个Dig101系列,挖一挖技术背后的故事。 > Dig101: dig more, simplified more and know more golang常用的遍历方式,有两种: for 和 for-range。 而for-range使用中有些坑常会遇到,今天我们一起来捋一捋。 文章目录 - 0x01 遍历取不到所有元素指针? - 0x02 遍历会停止么? - 0x03 对大数组这样遍历有啥问题? - 0x04 对大数组这样重置效率高么? - 0x05 对 map 遍历时删除元素能遍历到么? - 0x06 对 map 遍历时新增元素能遍历到么? - 0x07 这样遍历中起 goroutine 可以么? 可以移步 **[微信版地址](https://mp.weixin....阅读全文

博文 2020-01-05 00:14:16 NewbMiao

go语言并发

http://pragprog.com/magazines/2012-06/the-beauty-of-concurrency-in-go go并发之美 http://www.kankanews.com/ICkengine/archives/28410.shtml go简洁的并发 http://floss.zoomquiet.io/data/20120427161151/index.html Go的并发模式:超时、继续  版权声明:本文为博主原创文章,未经博主允许不得转载...阅读全文

博文 2015-06-29 19:00:00 u013834131

AWS-GO-SDK NOTES

AWS-GO-SDK 问题 EC2使用Role访问AWS服务时出现EC2MetadataError。 由于账户下s3资源太多,为了快速统计账号下s3的使用情况,用go写了个并发获取s3中对象信息的功能,频繁出现如下错误: listing mystorage objects: NoCredentialProviders: no valid providers in chain ,但是在命令行下 aws s3api list-object 命令返回都是正常的。这是由于程序中建立了过多会话,每次建会话的时候都要去EC2-metadata 服务取临时认证,取认证请求的频率过高导致了异常。 $(function () { $('pre.prettyprint code').each(function ...阅读全文

博文 2016-08-14 19:00:02 u013148156

golang 内存池

一般来说,内存池都是采用预分配的方式,分为固定大小的和非固定大小块,固定大小的内存效率高,非固定大小灵活。同时,分为单线程和多线程版的,单线程不需要考虑并发问题。 一般内存池的实现思想:分配一块比较大多内存,把这块内存分成大小相等的块,即固定大小,第一块要保存必要的信息,比如nfirst(第一块可分配到块),nsize(共分配了多少),nfree(可分配块大小),pnext(若是内存池不够,分配一块growth,pnext指向下一块),p(保存第一可分配内存块的地址),同时还需要poolmanage来统一做管理。每一个内存块的头两个字节记录下一个可分配的内存块的地址,因为是固定大小的,所以可以根据p和第几块算出地址。头两个字节分配的好处就是分配之后内存可复用,注意在归还到内存池的时候头两个字...阅读全文

博文 2018-08-20 00:30:01 williamjie

深入Go UDP编程

用户数据报协议(User Datagram Protocol,缩写为UDP),又称用户数据报文协议,是一个简单的面向数据报(package-oriented)的传输层协议,正式规范为 RFC 768。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验。 由于缺乏可靠性且属于非连接导向协议,UDP应用一般必须允许一定量的丢包、出错和复制粘贴。但有些应用,比如TFTP,如果需要则必须在应用层增加根本的可靠机制。但是绝大多数UDP应用都不需要可靠机制,甚至可能因为引入可靠机制而降低性能。流媒体(流技术)、即时多媒体游戏和IP电话(VoIP)一定就是典型的UDP应用...阅读全文

博文 2016-10-20 16:00:01 jimoforever

go-并发与并行

并行:单核CPU是永远不可能并行的 1 单个CPU多线程实现的伪并行,是一个CPU在多个程序之间切换,让我们以为是同事执行。而实际上就是线性执行; 2多个CPU同时负责多个线程才是并行。 并发:只要你的代码写了多线程就是 并发。 并发在于结构,并行在执行!! http://www.vaikan.com/docs/Concurrency-is-not-Parallelism/#goodby...阅读全文

博文 2015-12-26 16:00:00 shuanger_

golang并发读取文件并开启工作池处理数据

func main() { strCh := make(chan string) wg := sync.WaitGroup{} for i := 0; i < 20; i++ { wg.Add(1) go func() { defer wg.Done() for str := range strCh { log.Info.Println(str) } }() } ReadFiles2Chan(filePaths, strCh) close(strCh) wg.Wait() log.Info.Println("正常退出") } // 并发读取文件将文件行放入管道 func ReadFiles2Chan(filePaths []string, strCh chan string) { var w...阅读全文

博文 2019-03-15 14:36:33 不浪人

[Go小技巧] 实现常用的KV缓存(有序且并发安全)

type KV struct { count int keys []string hash map[string]interface{} lock sync.RWMutex } // 添加kv键值对 func (this *KV) Set(k string, v interface{}) { this.lock.Lock() if _, ok := this.hash[k]; !ok { this.keys = append(this.keys, k) sort.Strings(this.keys) this.count++ } this.hash[k] = v this.lock.Unlock() } // 获取数据长度 func (this *KV) Count() int { this...阅读全文

博文 2016-09-02 02:00:02 henrylee2cn

golang 并发请求API小demo

https://www.cnblogs.com/cnsanshao/p/7084808.html 实例如下 package main import ( "bytes" "fmt" "io/ioutil" "net/http" "strings" "sync" ) func httpGet() { resp, err := http.Get("http://10.84.135.139:8089/inter/xpvbvan/inter?method=config&type=set&value=[]&key=wap_recommend") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.Re...阅读全文

博文 2019-07-23 17:32:42 迷糊银儿

Go语言之Map非并发安全

自“灰子学技术”公众号原文链接:https://mp.weixin.qq.com/s/MAur04OmVPH5sb1tMFExNA一、问题描述:一次使用Go map的过程中,发现一个现象,map里面的元素是数据结构的话,该元素的属性不能直接赋值。会提示编译错误:./prog.go:11:15: cannot assign to struct field testMap[1].x in map例子如下:​编译错误:./prog.go:11:15: cannot assign to struct field testMap[1].x in map二、原因:Go 里面的map不是并发安全的,导致了这个情况的出现,这与map在Go中的底层实现息息相关。(备注:map的实现后续会补充。)三、解决方法:...阅读全文

博文 2019-09-06 18:30:38 ZhDavis

Goroutine 本地存储库gls

golang 语言目前唯一的高性能 goroutine local storage 实现,每秒可以完成数百万次Get/Set。 ``` Operate Performance Benchmark_Goid 5.30 ns/op Benchmark_Set 271 ns/op Benchmark_Get 155 ns/op Benchmark_Set_4Threads 129 ns/op Benchmark_Get_4Threads 58.6 ns/op ``` 使用起来极为简单: ```go import "github.com/yyzybb537/gls" // 设置协程局部变量 gls.Set("Value", 1) // 获取协程局部变量 var i int = gls.Ge...阅读全文

开源项目 2017-06-29 07:00:03 网友

成为一名高级Python工程师如何学习?

随着人工智能的发展与应用,Python编程语言受到世界各界人士的关注,Python工程师也成为一个热门职业,就业薪资高,发展前景广阔。 Python是一门简单的编程语言,学习相对更加轻松容易,初学者很容易入门,但想要学好,成为一名优秀的Python工程师就不是那么容易的事情了,需要受到很多因素的影响,以下是成为一名优秀的Python工程师需要满足的条件: **一、坚持和自信** 做任何一件事,贵在坚持,要坚信自己能够学好,是Python学习过程比不可少的心态,当遇到学习上的难点时,才能更有耐心的解决与积累,完整的进行Python课程的学习。 **二、选择适合自己的教材** 每个人的特点不同,有些人喜欢看书,有些人喜欢听老师讲课,选择适合自己的学习方式,才能更快...阅读全文

go+chan并发执行

利用一个chan执行一个并发的任务, 整个任务的最大耗时是最耗时的那个子任务 func SendChan(data int){ t := 10 - data if data == 5{ t = 20 } time.Sleep(time.Duration(t*1e9)) C <- data } func main(){ for i:=0; i<10; i++{ go SendChan(i) } for i:=0; i<10; i++{ var data int = <- C fmt.Println("data:", data) } ...阅读全文

博文 2017-08-05 03:14:54 jinjiashan

为什么学习go语言编程?

1. 从python开发角度看go语言 (1)部署简单:Go 编译生成的是一个静态可执行文件,除了 glibc 外没有其他外部依赖。完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。 (2)并发性好。Goroutine 和 channel 使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。 (3)良好的语言设计。Go 的设计是非常优秀的:规范足够简单灵活。 (4)执行效率高。虽然不如 C 但是已经超过C++和java,和解释型语言相比,更是相差一个数量级,比如python,ruby。 备注: 编译型语言:在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。 解释型语言:是在运行的...阅读全文

博文 2016-09-13 02:00:00 qq_17416741

Go 语言简介

一.Go发展史 想要了解一门语言,少不了他的发展史。 这里简单的介绍一下其历史年度关键节点。 1.里程碑 Go 也叫 Golang 起源于2007年 2009年首次公开发布 2010年谷歌投入使用 2011年被Google AppEngine支持 2012年正式版Go1 2015年发布Go1.5,移除了“最后残余的C代码” 目前最新版本为Go1.10 不得不说Go是一门很年轻的语言,是一个零零后。 二.Go特点 我们学习一门语言总归是出于各种各样的原因的,他会是各式各样的原因。 那既然现在我有了一个想要了解 Go 的一个意愿,肯定要先知道该语言有那些特色,或者说有那些吸引人的地方的说。 1.效率高 — 图片来自百度 Go 被誉为“21世纪的 C 语言”。 正如 Go 语言的 Logo 这只萌...阅读全文

博文 2018-07-07 12:34:41 SeaConch

【深入浅出容器云】关于容器云你不得不知的十大特性

** 导语:**随着以Docker为代表的容器技术在国内的迅速发展,[容器云][1]也逐渐被广大开发者所熟知,但容器云(CaaS)相比传统的云主机(IaaS)在实际应用中还存在着一些鸿沟。为此,我们试图以通俗精炼的语言向广大开发者介绍容器的特点,应用场景以及优势等。【深入浅出容器云】系列文章是由时速云出品,本文是第一篇,欢迎大家不吝赐教。 ### 1.高密度 高弹性 现有的云计算平台在面对大规模、高弹性计算的需求时往往会遇到一些瓶颈: 1.难以在短时间内启动大规模计算资源来应对高并发的需求; 2.传统IaaS的弹性计算性价比低,每个虚拟机都要消耗额外的系统资源。 由于Docker容器的启动一般在秒级实现,这相比传统的虚拟机方式要快得多。 另外 Docker 对系统...阅读全文

高可用 Redis 服务架构分析与搭建

基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现异常...阅读全文

博文 2018-10-07 21:34:39 JAVA高级架构开发

Golang中JSON的使用

GO Json author: qcliudate: 2015/07/21 Abstrct 介绍go语言中json的使用 json json是一种传输格式,类似与XML,与XML相比可读性略差,但是传输效率高。 GO Json go语言中提供了json的encoder,可以将数据结构转换为json格式。在使用之前,需要导入包 import "encoding/json" Encode 使用 func NewEncoder(w io.Writer) *Encoder 创建一个json的encode。 file, _ := os.Create("json.txt") enc := json.NewEncoder(file) err := enc.Encode(&v) 数据结构v会以json格式写...阅读全文

为什么那么多人用GO?GO语言的优势在哪里?

Go语言最早并不是一个Google的正式项目,而是作为一个“20%”的项目出现。直到2009年,它被设计成一种系统编程语言,用于具有Web服务器、存储集群或类似用途的大型中央服务器的系统编程语言,目前Go Team有稳定的发布周期,大约半年一个新的版本,目前最新为1.9版本。 对于高性能的分布式系统,GO语言无疑比大多数其他语言更高效。它提供了大量的并行支持,这对于游戏服务端的开发而言是再好不过了。 传统的语言如C++,大家花费太多时间来学习如何使用这门语言,而不是如何更好的表达写作者的思想,同时编译花费的时间实在太长,对于编写-编译-运行这个链条来说周期太长。动态语言如Python,由于没有强类型的约束,很多问题需要在运行时发现,这种低级错误更应该交给编译器来发现。 在人力成本越来越高、机...阅读全文

博文 2019-07-16 16:11:06 589dgd

永续合约是交易所布局高粘度生态体系的关键

数字货币交易所的盈利模式相对来说比较简单,交易类型也不复杂。近几年,大批交易所应运而生,现如今交易所都是以交易流量来进行盈利(维持生计)。当市场波动性不是特别大的时候,用户交易频次就会降低,就会迫使交易所必须找寻一件途径放大市场波动性,增大投资属性,从而为交易所带来流量(用户)与盈利点。合约恰好符合这一特性,而在合约中永续合约的杠杆倍数更高,就会将市场波动性放大到和杠杆等比的倍数,波动性更大,能够给交易所带来流量和资金,因而永续合约备受交易所青睐。​​永续合约的特点:1、永续合约不会交割,可以一直持有,比较适合做长线的投资者,也能节省由于交割带来的手续费。永续合约的杠杆可选择范围也是比较大,可以从1到100倍。2、在标记场内价格的同时,实时调取、计算全球主流交易所现货价格作为指数价格参考,综...阅读全文

阿里讲师带你一步步学习分步式文件存储系统技术及实现

课程介绍 本课程针对分步式文件存储系统的实现进行讲解,首先分析为什么要使用这种分步式存储系统,以及这种系统在设计时需要注意的问题,并比较现在市面常见的分步式存储系统(HDFS、Ceph等),展示阿里Pangu系统针对其中问题的解决方法,并结合Pangu系统说明分步式存储系统的设计要点。 讲师介绍 姚文辉,2009年加入阿里巴巴,从事阿里巴巴自主研发的云计算平台—飞天分布式操作系统中的分布式存储系统—盘古。 课程目标 • 学习分步式文件存储系统的实现 适合人群 • 云计算开发者 课时列表 • 课时1:分布式存储客观需求 • 课时2:小概率事件对分布式系统的挑战 • 课时3:常见分布式系统-终版 • 课时4:分布式设计要...阅读全文

一起了解什么是高并发

我们在找工作时,经常在招聘信息上看到有这么一条:有构建大型互联网服务及高并发等经验,想到高并发,我们第一想到了媒体上经常出现的新闻阿里双11每秒处理xx万订单,瞬间觉得高并发是一种很屌的技术,很高大上,如果像笔者这种没做过大型服务的普通程序员,在此根据网上的资料,对高并发写一下我个人的看法 高并发的概念 这里我引用一段架构师之路公众号究竟啥才是互联网架构高并发中的一段话来描述: 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求 那么很多请求,具体达到多少请求才算是高并发系统呢?这个也没有明确数量上的定义,根据网上很多大型互联网公司的相关高并发博客,一般PV在千万级别以上的公司才会涉及到这个概念,所以...阅读全文

博文 2017-09-06 11:05:35 TomorrowWu

[go]基于协程的并发ping(2)

直接按目标ip并发的方式,将ping封装为协程函数 go本身没有提供等待协程join的方法,需要自己实现 /*简单协程版*/ package main import ( "ping" "fmt" "time" //"os" "strconv" ) var fin chan string; //用于实现jionall func pingr(host string,timeout int){ t1:=time.Now().UnixNano() alive,err:=ping.Ping(host,timeout) //alive,err:=true,0 t2:=time.Now().UnixNano() fmt.Println(host,alive,(t2-t1)/1000000,err); fi...阅读全文

博文 2015-10-30 10:00:01 laputa73

13.蛤蟆笔记go语言——并发调度器

13.蛤蟆笔记go语言——并发调度器 go支持创建成千上万并发任务. l 线程多路复用。 l 极小自定义初始栈。 l 任务在多个线程间切换。 三种抽象模型协作 如下图1: 系统限制,允许调整: 如下图2: 创建新并发任务。 如下图3: 创建系统线程执行任务。 如下图4 执行 如图5: 连续栈替代分段栈 如下图6...阅读全文

博文 2016-07-17 09:00:03 notbaron

敏感词过滤算法

前言 在游戏设计中一个最基本的功能就是处理屏蔽字、敏感字,至于为什么这个需求这么重要?你懂的。在网上搜了很多资料,发现主要有三种实现方式: 对于输入的一句话message, 1、循环使用所有的屏蔽词去message中查找,看是否存在,如果存在则判定为敏感词。 优点:简单,只要学过几个月编程的都会; 缺点:效率太低,而且效果不是太好; 2、将有共同起始内容的屏蔽词分为一组,然后再使用方式1。 优点:比方案1效率高一些; 缺点:效率仍然很低,而且效果太差; 3、使用DFA算法。 优点:效率高,内存消耗低; 缺点:与前两者相比,实现复杂。 综上:为了应对越来越多的敏感词,寻找一个高效率的敏感词过滤算法就摆在了各个程序员的面前。而DFA是所有方法里面效率最高的。 在网上看了很多现有的实现方式,觉得存...阅读全文

(转)golang并发atomic.Value安全操作

// 通过封装atomic.Value原子值类型,可以实现安全存储不会引发panic type atomicValue struct { v atomic.Value t reflect.Type } func NewAtomicValue(example interface{}) (*atomicValue, error) { if example == nil { return nil, errors.New("atomic value: nil example") } return &atomicValue{ t: reflect.TypeOf(example), }, nil } func (av *atomicValue) Store(v interface{}) error { ...阅读全文

博文 2019-04-17 23:34:40 one_zheng

Go 并发编程基础(一)goroutine,channel

package main import ( "fmt" ) func sum(values []int, resultChan chan int) { sum := 0 for _, value := range values { sum += value } resultChan <- sum //将运算结果写到channel中 } func main() { values := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} //定义并初始化了一个大小为10的数字数组 resultChan := make(chan int, 2) //定义大小为2的channel go sum(values[:len(values)/2], resultChan) //开启协程...阅读全文

博文 2016-03-19 16:00:04 u013542440

golang的特性和优势

go是21世纪的C语言,也是云计算时代的C语言,它的诞生是为了有更高的开发效率,它于2009年9月加入开源语言的大家庭,2012年正式发布。 go的最大优势就是执行速度和开发效率都很出色,而且从语言级别上支持并发。执行速度快是因为go是编译型的静态语言,它在执行速度上比解释型语言具有先天的优势。生产效率高是基于go的语法和结构简明,易学易用。 go出现之前,无论汇编语言、还是动态脚本语言,在执行效率和开发效率上都不能兼备。 执行效率 execution speed: C/C++ > Java > PHP 开发效率 developing efficiency: PHP > Java > C/C++ go的不足之处就是年轻,有些方面还不够成熟和丰富,但它正在成长的道路上迅速迈进,希望在中国能今早...阅读全文

博文 2019-05-13 19:31:39 weixin_40213018

在8核cpu 15G内存的设备上开启10万个协程处理10万条数据 没有任何log打印的情况下 耗时4min为什么这么慢呀,协程并发处理感觉没用上

在8核cpu 15G内存的设备上开启10万个协程处理10万条数据 没有任何log打印的情况下 耗时4min,查看设备信息 cpu最高峰才使用141% 内存最高才占用8% ,为什么这么慢呀,协程并发处理感觉没用...阅读全文

Golang之并发编程

Golang——21_并发编程 - u012869599的博客 - CSDN博客golang是如何实现高并发的?深入领会MPG模式 - zzr881的博客 - CSDN博客 总感觉go的底层模型在解决高并发也不是很好.....因为两个G之间的传递时通过channel传和取而且还是阻塞的...可以设想一下当都1000个G相互之间传取值性能也不是很好。[转]Golang号称高并发,但高并发时性能不高 - ihxz - 博客园将go的线程模型和java的线程模型对比其实适合两个不同应用场景。java对比go在解决高并发的时候,go相对于java来说是省去了公用内存这一步改成了1对1通行...阅读全文

博文 2019-01-18 10:34:45 任嘉平生愿