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

GO语言:优雅地实现多重继承

有些语言支持多重继承,但是如果多个父类存在相同的属性或方法,就会发生冲突,有些语言为了防止这种情况而只支持单继承,很明显就没有了复用多个父类的属性和方法的优势。go语言其实没有对象的概念,只有结构体。比如有一个父亲,是中国人:type Father struct { MingZi string } func (this *Father) Say() string { return "大家好,我叫 " + this.MingZi }可以理解为父亲类有一个属性,有一个Say方法有父亲当然有母亲,母亲是个外国人:type Mother struct { Name string } func (this *Mother) Say() string { return "Hello, my name i...阅读全文

golang sync.Pool

Go 1.3 的sync包中加入一个新特性:Pool。 官方文档可以看这里http://golang.org/pkg/sync/#Pool 这个类设计的目的是用来保存和复用临时对象,以减少内存分配,降低CG压力。 type Pool func (p *Pool) Get() interface{} func (p *Pool) Put(x interface{}) New func() interface{} Get返回Pool中的任意一个对象。 如果Pool为空,则调用New返回一个新创建的对象。 如果没有设置New,则返回nil。 还有一个重要的特性是,放进Pool中的对象,会在说不准什么时候被回收掉。 所以如果事先Put进去100个对象,下次Get的时候发现Pool是空也是有可能的。 ...阅读全文

博文 2014-10-29 08:00:01 seago123

ByteEdu 每日新闻(2019-02-19)

5656.png ByteEdu 每日新闻(2019-02-19) Golang资料集Go最新资料汇总链接更改 http://www.byteedu.com/forum.php?mod=viewthread&tid=25 原创 | 休闲游戏正在疯狂收割用户,腾讯网易持续垄断收入 TOP10 —— 1 月全球手游指数 http://www.byteedu.com/portal.php?mod=view&aid=35 [视频教程]--字节教育LollipopGo架构说明 http://www.byteedu.com/forum.php?mod=viewthread&tid=126 复盘王者荣耀手游开发全过程,Unity引擎使用帧同步放弃状态同步 http://www.byteedu.com/fo...阅读全文

博文 2019-02-19 08:34:41 Golang语言社区

程序员面试,如何保证拿到offer的几率是80%以上?

一、概述面试,难还是不难?取决于面试者的底蕴(气场+技能)、心态和认知及沟通技巧。面试其实可以理解为一场聊天和谈判,在这过程中有心理、思想上的碰撞和博弈。其实你只需要搞清楚一个逻辑:“面试官为什么会这样问?他希望听到什么答案?”然后针对性的准备和回答就行了,无他。“你的优势是什么?”多年前我觉得这个问题很无聊,现在我经常这么问面试者,因为我真的想知道他的优势是什么,能给公司带来什么。最终能和面试官聊的开心愉快投缘的叫面霸。反之叫面瘫。我带过的学生里找工作时有个有趣的现象,经常是懂沟通的人先找到工作,而不是技术最牛的那个。面霸是可以练成的。我在这篇文章里尝试从两个方面对面试进行梳理,一个是流程,一个是细节。 流程可以让我们以上帝视角看问题,细节呢?细节决定成败。在面试这件事上,细节做的越细越好...阅读全文

博文 2018-11-03 20:47:39 Austh

2019年6月复盘

柳传志复盘方法论 1、回顾目标:当初目的或期望是什么 2、评估结果:和原定目标相比有哪些亮点和不足 3、分析原因:事情成功和失败根本原因,包括主观和客观两方面 4、总结经验:需要实施哪些新举措,叫停哪些项目等 本月周复盘汇总 2019第23/52周复盘 2019第24/52周复盘 2019第25/52周复盘 2019第26/52周复盘 1、6月计划完成情况 []《论语》每周写/2篇解读。 [] 跟上混沌商学院的课程,参与线下活动。 [] 完成论证分析的大作业,做成论证分析的知识卡片。 [x] 跑步52/50公里。 [] 完成深入拆解Java虚拟机。 [] /5篇周期文章的编辑。 6月书单:跑步圣经、跑步成为最好的自己、跑步的197条守则、跨界学习、穷查理年鉴、你一定要读的50部投资学经典 这...阅读全文

博文 2019-06-30 18:32:41 空灵一月

golang http response body close http请求返回的response为什么要Close

stackoverflow一段话:https://stackoverflow.com/questions/18598780/is-resp-body-close-necessary-if-we-dont-read-anything-from-the-body When you call http.Get, the function returns a response as soon as all the HTTP headers have been read. The body of the response has not been read yet. The Response.Body is a wrapper around the network connection to the ...阅读全文

博文 2019-01-23 18:34:42 凯文不上班

多个程序监听同一端口 - socket端口复用技术

对于多个程序绑定同一个端口我们遇到最多的是(Port 80 was already in use),也就是说端口被占用,不能重复绑定,但是操作系统内核支持通过配置socket参数的方式来实现多个进程绑定同一个端口。 简单示例 package main import ( "context" "golang.org/x/sys/windows" "net" "syscall" ) var listenConfig = net.ListenConfig{ Control: MyControl, } func MyControl(network, address string, c syscall.RawConn) error { return c.Control(func(fd uintptr) ...阅读全文

博文 2020-06-06 11:32:42 写个代码容易么

golang sync.pool对象复用 并发原理 缓存池

golang sync.pool对象复用 并发原理 缓存池 在go http每一次go serve(l)都会构建Request数据结构。在大量数据请求或高并发的场景中,频繁创建销毁对象,会导致GC压力。解决办法之一就是使用对象复用技术。在http协议层之下,使用对象复用技术创建Request数据结构。在http协议层之上,可以使用对象复用技术创建(w,*r,ctx)数据结构。这样即可以回快TCP层读包之后的解析速度,也可也加快请求处理的速度。 先上一个测试: //测试平台 i5 3.8GHz 4核 bPool := sync.Pool{ New: func() interface{} { b := make([]byte,1024) return &b }, } t1 := time.Now...阅读全文

博文 2018-11-16 19:34:46 fjxCode

select I/O多路复用

select golang的并发模型和linux select类似 golang提供了select关键字,实现I/O的多路复用 linux select的模型大致是以下这样 : while (true) { init_select_fd(); //初始化监听的fd int ret = select(); //select阻塞式监听 if (...) { //if有fd被触发 ...//处理fd的事件 } } golang select模型有类似的结构 监听的是管道 while (true) { switch { case variable := <-chan1 : ...//处理管道1事件 break; case variable := <-chan1 : ...//处理管道2事件 brea...阅读全文

博文 2018-12-03 01:34:44 sakura3zz

2019年7月复盘

柳传志复盘方法论 1、回顾目标:当初目的或期望是什么 2、评估结果:和原定目标相比有哪些亮点和不足 3、分析原因:事情成功和失败根本原因,包括主观和客观两方面 4、总结经验:需要实施哪些新举措,叫停哪些项目等 本月周复盘汇总 2019第27/52周复盘 2019第28/52周复盘 2019第29/52周复盘 2019第30/52周复盘 2019第31/52周复盘 1、7月计划完成情况 []《论语》每周写1/2篇解读。 [] 跟上混沌商学院的课程。 [] 跑步6.47/50公里。 [] 完成Golang的课程。 [] 股票相关内容和写作方式学习。 [] /3篇周期文章的编辑。 7月书单:《投机者的扑克》、《狙击牛熊市》、《优势投资法则》、《外汇交易的10堂必修课》、《一个农民的亿万传奇》、《战...阅读全文

博文 2019-08-03 22:32:40 空灵一月

RPC 的网络复用和成帧协议 TChannel

TChannel 是用于 RPC 的网络复用和成帧协议。 ### 设计目的 * 容易用多种语言实现,尤其是 JS 和 Python。 * 高性能转发路径。中间件可以快速做出转发决策。 * 请求/回复模型不再按顺序,慢速请求不会堵在队列前头,阻止后续的快速请求。 * 大型请求/响应,可能/必须分成碎片成片,逐步发送。 * 可选 checksums. * 可用于在端点之间输送多种协议,例如 HTTP+ JSON 和 Thrift...阅读全文

开源项目 2015-08-27 16:00:00 uber

区块链和数据库

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链技术是一种不依赖第三方、通过自身分散式节点进行网路数据的存储、验证、传递和交流的一种技术方案。因此,有人从金融会计的角度,把区块链技术看成是一种分散式开放性去中心化的大型网路记账薄,任何人任何时间都可以採用相同的技术标准加入自己的信息,延伸区块链,持续满足各种需求带来的数据录入需要。 通俗一点说,区块链技术就指一种全民参与记账的方式。所有的系统背后都有一个资料库,你可以把资料库看成是就是一个大账本。那麽谁来记这个账本就变得很重要。目前就是谁的系统谁来记账,微信的账本就是腾讯在记,淘宝的账本就是阿裡在记。但现在区块链系统中,系统中的每个人都可以有机会参与记账。在一定时间段内如果有任何数据变化,系统中每个人都可...阅读全文

博文 2019-09-26 17:02:45 链客

如何快速的学习一门语言

1 为什么想写这个主题工作的这些年,对于一个技术初级到高级,到架构,到总监的转身,有许多的感概,有许多的想法。曾经会想那个还在大学的自己,忙碌于图书馆博览全书,从概率论的股票分析,到人工智能的机器学习,每一本你能看到的前沿的书,如果咱们是一个学校的,或许你也曾经摸到过一样的破旧的或者散发着书香的纸皮和书名,文人说“书非借不可读也”,“随便翻翻”,所以我看书也是以这个理论来指导,当然核心的知道思想就是我非常明确我上这个学就是为了更容易的找到一份好工作。转眼间终于毕业了,刚工作那会看着自己手里拿的工资,想着也听说着高级工程师的工资水准,以及高级工程师们的住宿方式(有自己独立的空间,花费我1/2的工资来租房,房间啥都有,可能最重要的是有一个自己独立的空间,可以好好思考怎么写代码吧)。北上广深,一线...阅读全文

博文 2019-01-30 23:34:43 华哥Dean

go实现栈

本来写敏感词检测的代码,后面需求撤销了,留下一点可复用的代码怀念下 package stack // 不确定变量类型和结构,使用了interface type Stack struct { data []interface{} } func (s *Stack) Push (item interface{}) (string, bool) { s.data = append(s.data, item) return "ok", true } func (s *Stack) Pop () (interface{}, bool) { length := s.Length() var item interface{} if length == 0 { return item, false } el...阅读全文

博文 2019-05-17 19:34:37 lingying5

写了个协程池

# sgpool #### 介绍 协程池 #### github https://github.com/summmer-tea/sgpool #### 架构 提供两种协程池,可复用/动态创建销毁,debug模式下可以对任务的超时,失败进行统计 #### 安装 ```go go get https://github.com/summmer-tea/sgpool ``` #### 使用 具体的worker 需要实现 WorkerInterface 接口 ```go type WorkerInterface interface { Task() error GetTaskID() interface{} } ``` ##### 常驻复用协程池 `...阅读全文

自己写了一个协程池

# sgpool #### github地址 https://github.com/summmer-tea/sgpool #### 介绍 协程池 #### 架构 提供两种协程池,可复用/动态创建销毁,debug模式下可以对任务的超时,失败进行统计 #### 安装 ```go go get https://gitee.com/xiawucha365/sgpool ``` #### 使用 具体的worker 需要实现 WorkerInterface 接口 ```go type WorkerInterface interface { Task() error GetTaskID() interface{} } ``` ##### 常驻复用协程池 ...阅读全文

小小书童记录select

Select IO复用模型是上个世纪90年代的东西,受限于当时的计算机硬软件的限制,这种技术随着epoll的出现逐渐被取代,但它毕竟风光过。了解历史才能更好的展望未来,每一个有情怀的码农都不应该一味抬头看远方,时而低头凝视大地,不亦乐乎~ 了解select之前,我们需要了解下位图(bitmap),bitmap其实就是将对象映射到具体的一个bit位上来,表示对象存在或者被标记。bitmap算法有节省内存和快速查询等特点,所以适合处理海量数据的排序和查询。这种古老而牛逼的技术在数据库,操作系统上都有很广泛的应用。好的,下面引入select中使用到bitmap算法的几个API函数,也是在使用select这种IO复用技术时经常使用到的。 int FD_ZERO(fd_set *fdset); // ...阅读全文

博文 2017-08-26 08:05:02 ieasy_tm

记录一次go视频面试

### 简单记录一次go面试过程 *** 第一次面试go,完全不懂面试套路,被虐的体无完肤,面试完时没想到,后来复盘发现但其实我会.把面试问到的问题记下来供大家参考. *** ##### **1. 自我介绍** 回答:略. *** ##### **2. 项目中你觉得你做的不错的地方** 回答:略. *** ##### **3. 项目中闭包的使用** 当时完全没想到,后来翻看之前的的项目,才看见使用gin写的中间件到处都是. *** ##### **4.内置map是否并发安全,怎么解决** 回答:不是并发安全的,可以使用sync包里的map,或者加锁. *** ##### **5.想要map并发安全使用互斥锁效率低怎么办** 这个我真的不会了. *** ##### **6.redis中缓存雪崩...阅读全文

博文 2020-05-14 16:02:40 MrWusenshan

go chat room

ws 项目 项目概览 main 函数 func main() { flag.Parse() hub := newHub() go hub.run() http.HandleFunc("/", serveHome) http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) { serveWs(hub, w, r) }) err := http.ListenAndServe(*addr, nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } 分析: newHub() 返回一个 Hub结构.包含3个 channel,1个 map。这个map很特殊,当key...阅读全文

博文 2017-05-31 14:03:30 中柠檬

Go调用C引发的极简主义思考

CGo.jpg 让事情保持在超级简单的状态 在很多场景下,Golang(够浪)的程序中需要调用c函数或者是用c编写的库(底层驱动,算法等,不想用Go语言再去造一遍轮子,复用现有的c库)。 那么该如何调用呢?Go可是更好的C语言啊,当然提供了和c语言交互的功能,称为Cgo! 优秀的程序员都是极简主义者 Cgo封装了#cgo伪c文法,参数CFLAGS用来传入编译选项,LDFLAGS来传入链接选项。这个用来调用非c标准的第三方c库...阅读全文

博文 2019-03-08 01:34:41 力挽区块

用 Go 语言实现一个 telegram 的 bot - 成功复读

telegram bot(复读机) 尝试 用 Go 语言做了一个 telegram 的 bot . 用来简单实现对话(复读)。 获得 telegram bot token 和 BotFather 交谈即可中途需要设置一下名字和查找路径 go get 首先获取 api 包 go get -u github.com/go-telegram-bot-api/telegram-bot-api code package main import ( "log" "os" "github.com/go-telegram-bot-api/telegram-bot-api" ) func main() { bot, err := tgbotapi.NewBotAPI(os.Getenv("TELEGRAM_A...阅读全文

博文 2019-07-26 19:02:37 yhyddr

第五天:golang学习笔记之fmt

★fmt | fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. fmt fmt包提供的最主要的功能只有两个:Print,Scan Print 输出到屏幕的有如下几个函数fmt.Print(),fmt.Println(),fmt.Printf() 实现的基础分别为通过fmt.FPrint(),fmt.FPrintln(),fmt.FPrintf()来输出到sys.stdout 而Sprint和Fprint实现方法类似,只不过前者是返回string(p.buf),而后者是w.Write(p.buf)直接写到Writer里 其实现采用了sync.Pool做对象复用,使用了类似fasthttp的p.buf = p.buf[:0]来做底层数组复用 Scan Scan和Pri...阅读全文

博文 2019-12-19 00:32:42 Macmillan_

Golang笔记之 从helloworld.go来观察go的工具链(简单向)

我并不打算在这个时间点来把所有的go语言的工具链讲的一清二楚。而是通过我们的Hello World案例来讲解这个程序是如何编译并运行的。 package main import "fmt" func main(){ fmt.Println("Hello World") } 两个命令: go run ****.go 2.go build ****.go 当我们执行第一个命令的时候,他的作用仅仅会输出我们所期望的结果。但是不会产生一个可以复用的程序。当运行go build的时候,会产生一个二进制文件,可以直接执行。 命令 catdeMBP:go cat$ go build catdeMBP:go cat$ ls go main.go catdeMBP:go cat$ ./go Hello Wor...阅读全文

博文 2019-06-14 23:32:43 我加入简书的路程

Java设计模式学习记录-模板方法模式

前言模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。模板方法模式概念介绍模板方法模式,其实是很好理解的,具体理解为,定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法结构即可冲定义该算法的某些特定步骤。模板方法模式是最为常见的设计模式之一,是基于继承的代码复用技术。架构师定义一套骨架,开发工程师按照骨架去实现具体的逻辑。举例在具体的项目中其实使用模板方法的场景有很多,就举我之间遇到过的一个场景吧,这是一个实际的项目,结合这个项目的中的场景可以引出模板方法模式的使用方法,在一个审批流程的项目,会有很多种的申请单,例如:出差申请单、请假申请单、采购申请单、付款申请单等等。每个申...阅读全文

博文 2018-10-22 17:19:34 Enjoyjava