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






peteryan

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

2021年10月13日

模块三 GO语言实战与应用-bufio包中的数据类型 (上)
摘要: bufio是“buffered I/O”的缩写。顾名思义,这个代码包中的程序实体实现的 I/O 操作都内置了缓冲区 bufio包中的数据类型主要有: Reader; Scanner; Writer和ReadWriter 与io包中的数据类型类似,这些类型的值也都需要在初始化的时候,包装一个或多个简单 阅读全文
posted @ 2021-10-13 17:54 lvp 阅读(228) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-IO包中的接口和工具 (下)
摘要: 上一篇文章中,我主要讲到了io.Reader的扩展接口和实现类型。当然,io代码包中的核心接口不止io.Reader一个。 我们基于它引出的一条主线,只是io包类型体系中的一部分。我们很有必要再从另一个角度去探索一下,以求对io包有更加全面的了解。 下面的一个问题就与此有关。 知识扩展 问题:io包 阅读全文
posted @ 2021-10-13 17:42 lvp 阅读(93) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-io包中的接口和工具 (上)
摘要: 在前几篇文章中,主要讨论了strings.Builder、strings.Reader和bytes.Buffer这三个数据类型。 知识回顾 还记得吗?当时我还问过你“它们都实现了哪些接口”。在我们继续讲解io包中的接口和工具之前,我先来解答一下这个问题。 strings.Builder类型主要用于构 阅读全文
posted @ 2021-10-13 17:07 lvp 阅读(260) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-BYTES包与字节串操作(下)
摘要: 在上一篇文章中,我们分享了bytes.Buffer中已读计数的大致功用,并围绕着这个问题做了解析,下面我们来进行相关的知识扩展。 知识扩展 问题 1:bytes.Buffer的扩容策略是怎样的? Buffer值既可以被手动扩容,也可以进行自动扩容。并且,这两种扩容方式的策略是基本一致的。所以,除非我 阅读全文
posted @ 2021-10-13 16:20 lvp 阅读(92) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-bytes包与字节串操作(上)
摘要: 我相信,经过上一次的学习,你已经对strings.Builder和strings.Reader这两个类型足够熟悉了。 我上次还建议你去自行查阅strings代码包中的其他程序实体。如果你认真去看了,那么肯定会对我们今天要讨论的bytes代码包,有种似曾相识的感觉。 前导内容: bytes.Buffe 阅读全文
posted @ 2021-10-13 16:10 lvp 阅读(179) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-strings包与字符串操作
摘要: 在上一篇文章中,我介绍了 Go 语言与 Unicode 编码规范、UTF-8 编码格式的渊源及运用。 Go 语言不但拥有可以独立代表 Unicode 字符的类型rune,而且还有可以对字符串值进行 Unicode 字符拆分的for语句。 除此之外,标准库中的unicode包及其子包还提供了很多的函数 阅读全文
posted @ 2021-10-13 11:42 lvp 阅读(141) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-unicode与字符编码
摘要: 到目前为止,我们已经一起陆陆续续地学完了 Go 语言中那些最重要也最有特色的概念、语法和编程方式。我对于它们非常喜爱,简直可以用如数家珍来形容了。 在开始今天的内容之前,我先来做一个简单的总结。 Go 语言经典知识总结 基于混合线程的并发编程模型自然不必多说。 在数据类型方面有: 基于底层数组的切片 阅读全文
posted @ 2021-10-13 11:29 lvp 阅读(669) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-并发安全字典SYNC.MAP(下)
摘要: 我们在上一篇文章中谈到了,由于并发安全字典提供的方法涉及的键和值的类型都是interface{},所以我们在调用这些方法的时候,往往还需要对键和值的实际类型进行检查。 这里大致有两个方案。我们上一篇文章中提到了第一种方案,在编码时就完全确定键和值的类型,然后利用 Go 语言的编译器帮我们做检查。 这 阅读全文
posted @ 2021-10-13 11:13 lvp 阅读(126) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-并发安全字典sync.Map(上)
摘要: 在前面,我几乎已经把 Go 语言自带的同步工具全盘托出了。你是否已经听懂了会用了呢? 无论怎样,我都希望你能够多多练习、多多使用。它们和 Go 语言独有的并发编程方式并不冲突,相反,配合起来使用,绝对能达到“一加一大于二”的效果。 当然了,至于怎样配合就是一门学问了。我在前面已经讲了不少的方法和技巧 阅读全文
posted @ 2021-10-13 11:01 lvp 阅读(108) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-临时对象池sync.Pool
摘要: 到目前为止,我们已经一起学习了 Go 语言标准库中最重要的那几个同步工具,这包括非常经典的互斥锁、读写锁、条件变量和原子操作,以及 Go 语言特有的几个同步工具: sync/atomic.Value sync.Once sync.WaitGroup context.Context 今天,我们来讲 G 阅读全文
posted @ 2021-10-13 10:35 lvp 阅读(171) 评论(0) 推荐(0)
 
模块三 GO语言实战与应用-context.Context类型
摘要: 在使用WaitGroup值的时候,我们最好用“先统一Add,再并发Done,最后Wait”的标准模式来构建协作流程。 如果在调用该值的Wait方法的同时,为了增大其计数器的值,而并发地调用该值的Add方法,那么就很可能会引发 panic。 这就带来了一个问题,如果我们不能在一开始就确定执行子任务的 阅读全文
posted @ 2021-10-13 10:14 lvp 阅读(188) 评论(0) 推荐(0)