• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






张伯雨

学习使人快乐
 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 37 下一页

2017年8月31日

理解Go Context机制
摘要: 1 什么是Context 最近在公司分析gRPC源码,proto文件生成的代码,接口函数第一个参数统一是ctx context.Context接口,公司不少同事都不了解这样设计的出发点是什么,其实我也不了解其背后的原理。今天趁着妮妲台风妹子正面登陆深圳,全市停工、停课、停业,在家休息找了一些资料研究 阅读全文
posted @ 2017-08-31 09:33 张伯雨 阅读(45022) 评论(3) 推荐(12)
 
Java 线程池(ThreadPoolExecutor)原理分析与使用
摘要: 在我们的开发中“池”的概念并不罕见,有数据库连接池、线程池、对象池、常量池等等。下面我们主要针对线程池来一步一步揭开线程池的面纱。 使用线程池的好处 1、降低资源消耗 可以重复利用已创建的线程降低线程创建和销毁造成的消耗。 2、提高响应速度 当任务到达时,任务可以不需要等到线程创建就能立即执行。 3 阅读全文
posted @ 2017-08-31 09:21 张伯雨 阅读(562) 评论(0) 推荐(0)
 

2017年8月30日

理解Go Interface
摘要: 理解Go Interface1 概述Go语言中的接口很特别,而且提供了难以置信的一系列灵活性和抽象性。接口是一个自定义类型,它是一组方法的集合,要有方法为接口类型就被认为是该接口。从定义上来看,接口有两个特点:接口本质是一种自定义类型,因此不要将Go语言中的接口简单理解为C++/Java中的接口,后者仅用于声明方法签名。接口是一种特殊的自定义类型,其中没有数据成员,只有方法(也可以为空)。接口是完... 阅读全文
posted @ 2017-08-30 14:31 张伯雨 阅读(832) 评论(0) 推荐(0)
 
深入讨论channel timeout
摘要: 深入讨论channel timeoutGo 语言的 channel 本身是不支持 timeout 的,所以一般实现 channel 的读写超时都采用 select,如下:select { case <-c: case <-time.After(time.Second): } 这两天在写码的过程中突然对这样实现 channel 超时产生了怀疑,这种方式真的好吗?于是我写了这样一个测试程序:packa... 阅读全文
posted @ 2017-08-30 14:29 张伯雨 阅读(724) 评论(0) 推荐(0)
 
fasthttp中的协程池实现
摘要: fasthttp中的协程池实现协程池可以控制并行度,复用协程。fasthttp 比 net/http 效率高很多倍的重要原因,就是利用了协程池。实现并不复杂,我们可以参考他的设计,写出高性能的应用。入口// server.go func (s *Server) Serve(ln net.Listener) error { var lastOverflowErrorTime time.Ti... 阅读全文
posted @ 2017-08-30 14:28 张伯雨 阅读(845) 评论(0) 推荐(0)
 
Golang 知识点总结
摘要: Golang 知识点总结目录 [−]各种类型复制的时候的花费可使用内建函数的类型 (len、cap、close、delete、make)内建容器类型的值比较组合类型T{...}的值比较零值是nil的类型编译时被执行的函数不能被寻址的值不支持比较的类型可命名的源代码元素命名的源代码元素可以使用 ()分组声明可以在函数内外声明的源代码元素可以返回一个可选bool返回值的表达式使用channel机制永远... 阅读全文
posted @ 2017-08-30 14:10 张伯雨 阅读(262) 评论(0) 推荐(0)
 
高级编码和解码技术
摘要: Go 的标准库包含了一些很不错的编码和解码包,里面涵盖了大量的编码方案。一切数据,不管是CSV,XML,JSON,还是 gob —— 一个 Go 特定的编码格式,都涵盖在内,并且,这些包都非常容易上手使用。 事实上,它们中的大多数都不需要再添加任何代码,你只需插入数据,它就会输出编码后的数据。不过,并不是所有的应用程序都乐于处理这种到 JSON 展现的一对一映射。Struct 标记可以涵盖一些场景... 阅读全文
posted @ 2017-08-30 14:09 张伯雨 阅读(651) 评论(0) 推荐(0)
 
go源文件中是否有main函数
摘要: import ( "go/parser""go/token" "go/ast" ) func HasMain(file string) (bool, error) { fset := token.NewFileSet() f, err := parser.ParseFile(fset, file, nil, 0)if err != nil {return fal... 阅读全文
posted @ 2017-08-30 14:08 张伯雨 阅读(511) 评论(0) 推荐(0)
 
golang 并发模式笔记
摘要: 1、并发并不是并行,前者是优先对时间片的抢占,后者是真多核。 go中多线程时直接要求并行的方法是:亦不可滥用,CPU密集型,并发度很高的场景适用。 2、go起的协程 3、 function that returns a chanel fan-in 二次缓冲 send a chanel on a chanel 利用chanel饥饿阻塞原理实现有序 select 利用select的ok随机执行性,可以... 阅读全文
posted @ 2017-08-30 14:07 张伯雨 阅读(481) 评论(0) 推荐(0)
 
Golang 通用连接池库 Golang-Pool
摘要: Golang 实现的连接池功能:* 连接池中连接类型为interface{},使得更加通用* 链接的最大空闲时间,超时的链接将关闭丢弃,可避免空闲时链接自动失效问题* 使用channel处理池中的链接,高效基本用法//factory 创建连接的方法 factory := func() (interface{}, error) { return net.Dial("tcp", "127.0.0.1:... 阅读全文
posted @ 2017-08-30 14:07 张伯雨 阅读(2628) 评论(0) 推荐(0)
 
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 37 下一页