![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang
文章平均质量分 82
编程宝库
关注软件工程实践,百度架构师。
展开
-
Java将增加虚拟线程,挑战Go协程
我们知道 Go 语言最大亮点之一就是原生支持并发,这得益于 Go 语言的协程机制。一个 go 语句就可以发起一个协程 (goroutin)。协程本质上是一种用户态线程,它不需要操作系统来进行调度,而是由用户程序自行管理和调度。它寄存于线程中,系统开销极小,可以显著的提高性能和并发能力。使用协程的优点是运行效率高、编程简单、结构清晰。目前,原生支持协程的语言不是很多。Oracle 本周提交的一份JDK增强建议(JEP)草案要求将虚拟线程作为Java标准版的一部分进行预览。虚拟线程类似于 Go 语言的协程原创 2021-11-19 09:21:03 · 457 阅读 · 0 评论 -
Go iota 原理和源码剖析
iota 是 Go 语言的一个保留字,用作常量计数器。由于 iota 具有自增特性,所以可以简化数字增长的常量定义。iota 是一个具有魔法的关键字,往往令初学者难以理解其原理和使用方法。本文会从书写方法、使用场景、实现原理以及优缺点等各方面剖析 iota 关键字。1. 书写方法正确写法:const ( FirstItem = iota SecondItem ThirdItem)// 或者const SingleItem = iota错误写法:var FirstItem =原创 2021-11-17 12:13:49 · 320 阅读 · 0 评论 -
Go defer 特性和使用场景
golang 的 defer 语句用于延迟调用。defer 会在当前函数返回之前执行 defer 注册的函数。比如 defer func_defer() 这样语句会让你注册一个函数变量到 defer 的全局链表中,在 defer 语句所在的函数退出之前调用。defer 可以代替其它语言中 try…catch… 语句,也可以用来处理释放资源等收尾操作,比如关闭文件句柄、关闭数据库连接等。defer 还能用于 panic 的 recovery。1. defer 的特性我们先深入的剖析下 defer 具有的原创 2021-11-15 16:43:02 · 385 阅读 · 0 评论 -
Go defer 原理和源码剖析
Go 语言中有一个非常有用的保留字 defer,defer 语句可以调用一个函数,该函数的执行被推迟到包裹它的函数返回时执行。defer 语句调用的函数,要么是因为包裹它的函数执行了 return 语句,到达了函数体的末端,要么是因为对应的 goroutine 发生了 panic。在实际的 go 语言程序中,defer 语句可以代替其它语言中 try…catch… 的作用,也可以用来处理释放资源等收尾操作,比如关闭文件句柄、关闭数据库连接等。1. 编译器编译 defer 过程defer dosome原创 2021-11-12 14:47:38 · 1112 阅读 · 0 评论 -
go语言包、变量、init初始化顺序
一个完整的 go 语言可运行程序,通常会包含引用的包、变量、init 函数以及 main 函数几个部分。包、变量、常量、init 函数以及 main 函数初始化顺序如下图所示:在一个 go 语言程序中,初始化顺序规则如下:引入的包当前包中的变量、常量当前包的 init 函数main 函数初始化顺序说明:在 go 源程序中,每一个被 import 的包,按照在源文件中出现顺序初始化。如果当前包有多个 init 函数在不同的源文件中,则按照源文件名以字典序从小到大排序,小的先被执行到。原创 2021-10-19 11:30:40 · 1074 阅读 · 0 评论 -
微服务 · 如何解决链路追踪问题
一、链路追踪 微服务架构是将单个应用程序被划分成各种小而连接的服务,每一个服务完成一个单一的业务功能,相互之间保持独立和解耦,每个服务都可以独立演进。相对于传统的单体服务,微服务具有隔离性、技术异构性、可扩展性以及简化部署等优点。 同样的,微服务架构在带来诸多益处的同时,也为系统增加了不少复杂性。它作为一种分布式服务,通常部署于由不同的数据中心、不同的服务器组成的集群上。而且,同一个微服务系统可能是由不同的团队、不同的语言开发而成。通常一个应用由多个微服务组成,微服务之间的数据交互需要通过远过程原创 2020-11-05 15:42:23 · 948 阅读 · 1 评论 -
轻松学习区块链1 - 初识MiniBC区块链
MiniBC区块链源码地址: https://github.com/wangshizebin/minibc1、什么是区块链区块链从仅从技术层面来讲,是按照时间顺序将数据块连接在一起的链式数据结构。它采用了密码学的知识和p2p网络技术构建了一个数据不可篡改、不可伪造的分布式数据账本。它带来的最为直接的变化就是去中心化的信任,这是它对于社会的最本质的改变。它是21世纪最具革命性的技术之一,目前...原创 2019-05-17 12:51:56 · 3462 阅读 · 0 评论 -
轻松学习区块链5 - 工作量证明POW
MiniBC区块链V004 - 工作量证明POW共识算法在整个区块链工作过程中,会有很多的机器加入其中,每一台机器成为一个节点,它们互相协作,来共同维护区块链的安全和数据的一致。其中,生成新的区块就是一项很重要的工作。因为新的区块里面包含很多新产生的重要数据,比如交易信息等。为了让这项工作有序和可控,通常会在所有节点上通过竞争选出一个节点,由这个胜出的节点负责打包新产生的数据,并通知和传播给其...原创 2019-05-20 13:00:32 · 663 阅读 · 0 评论 -
轻松学习区块链4 - 区块链浏览器与人机交互
MiniBC区块链V003 - 区块链浏览器与人机交互工作目标区块链浏览器是用户通过浏览器的方式查看区块链的所有信息。我们本节的目标就是实现这一功能。我们不仅提供查看功能,还提供了了管理功能。在真实的区块链项目中,一般会提供多种交互方式,比如提供客户端命令行方式、websocket方式等等,最终由区块链server提供统一的rpc服务。我们目前先实现浏览器方式,以后会逐步扩充。Http S...原创 2019-05-19 23:00:26 · 3172 阅读 · 0 评论