Golang读写锁RWMutex示例

关于读写锁的问题,其实概念上大致就是调用写锁方法阻塞所有方法,调用读锁方法阻塞所有写方法,读方法可以并发执行。 网上的例子往往太过于简单,非常容易误导,并且读写锁跟排他锁,信道不一样,概念稍微绕了一些,因此记录一下。 package main import ( "log" "runtime" "sync" "time" ) var rwMutex sync.RWMutex func runReadLock() { log.Println("来到读锁方法") rwMutex.RLock() // ...阅读全文

简书 2020-09-19 00:32:39 罗文才

Golang读写锁RWMutex示例

关于读写锁的问题,其实概念上大致就是调用写锁方法只有一个协程能执行,调用读锁方法的所有协程可以并发执行,但与调用写锁方法的协程构成互斥。 网上的例子往往太过于简单,非常容易误导,并且读写锁跟互斥锁,信道不一样,概念稍微绕了一些,个人也是被网上例子误解过,因此记录一下。 ``` var rwMutex sync.RWMutex func runReadLock() { rwMutex.RLock() // 与写锁构成互斥,在读的时候不允许写 defer rwMutex.RU...阅读全文

Go语言中文网 2020-09-18 23:05:13 luowencai

Wisdom Chain内核设计理念(一)

验证式规则编程区块链的概念始于比特币,到今天为止,至少也有10年以上的历史了。一份比特币白皮书,一份比特币程序,开启了区块链的时代。这些年来,涌现了一轮又一轮的设计思想,光是共识机制,就衍生出了若干种,经济模型的设计更是百花齐放。整个社区,都为一次又一次新概念的出现而欢呼。纵观计算机发展史,除了早期的集成电路的出现以及后来的互联网浪潮,很少有一门技术产品能引起全社会讨论的热潮,并且横扫世界各国的政府、金融机构以及实体产业。讨论的话题从技术到经济,再到场景应用,再到价值思想,可以说是涵盖了相当广泛...阅读全文

简书 2020-09-18 17:33:10 一位颜值忽高忽低年轻人

Wisdom Chain内核设计理念(一) 验证式规则编程

区块链的概念始于比特币,到今天为止,至少也有10年以上的历史了。一份比特币白皮书,一份比特币程序,开启了区块链的时代。这些年来,涌现了一轮又一轮的设计思想,光是共识机制,就衍生出了若干种,经济模型的设计更是百花齐放。整个社区,都为一次又一次新概念的出现而欢呼。纵观计算机发展史,除了早期的集成电路的出现以及后来的互联网浪潮,很少有一门技术产品能引起全社会讨论的热潮,并且横扫世界各国的政府、金融机构以及实体产业。讨论的话题从技术到经济,再到场景应用,再到价值思想,可以说是涵盖了相当广泛的范围。可惜的...阅读全文

简书 2020-09-18 17:33:01 鲨鱼辣椒007

你听说了吗?VS Code 的 Go 语言插件迁移至由 Go 团队维护

VS Code 的 Go 语言插件已成为由 Go 团队维护的项目,其 GitHub 仓库已经从 https://github.com/microsoft/vscode-go 迁移到 https://github.com/golang/vscode-go,在 VS Code 插件市场中的发布者也已由 "Microsoft" 变更为 "Go Team at Google"。 对于此次迁移,VS Code 团队表示由于该插件在 VS Code 中对 Go 的语言特性提供了丰富支持,因此其功能和受欢迎程...阅读全文

简书 2020-09-18 16:35:57 马小诺QAQ

golang 遇到导入自定义包导入不进去的问题解决

当尝试了网上所有方法,仍然发现在主文件.go中或者在其他地方引用自定义包时,自动删除导入的包的情况解决如下: 如你存放地址的包在src/xxx.com中时请通过命令行进入这个文件夹的位置 然后执行go mod init xxx.com/m/v1回车 上述的.../m/v1随便,这个是按照官方的建议这么写的方便维护版本吧?! 再次尝试引入自定义包,引用方式如下: xxx.com/m/v1 |_test | |_test.go |_main.go import ( "fmt" "xxx.com/m/...阅读全文

简书 2020-09-18 16:35:51 nemo_shy

从零入门 Serverless | 函数计算的可观测性

导读:本文主要分为三个部分:概述中介绍可观测性的基本概念,主要包括 Logging、Metrics、Tracing 三个方面;然后详细介绍函数计算上的 Logging、Metrics、Tracing;最后以几个常见场景为例,介绍在函数计算中如何快速定位问题并解决问题。 概述 可观测性是什么呢?维基百科中这样说:可观测性是通过外部表现判断系统内部状态的衡量方式。 在应用开发中,可观测性帮助我们判断系统内部的健康状况。在系统出现问题时,帮助我们定位问题、排查问题、分析问题;在系统平稳运行时,帮助我们...阅读全文

简书 2020-09-18 16:35:51 阿里云技术

[Go] 设置各种选项的最佳套路

背景在 Go 里面写一个 struct 时,经常会遇到要给 struct 里面的各个字段提供设置功能。这个问题看起来很简单很容易,实际上困扰了不少人,连 Go 的三巨头之一 Rob Pike 都曾经为之苦恼了一段时间,后来找到了最佳实践后还为此开心地写了一篇 Blog。我最早是在 GRPC 的代码里发现这个套路的,后来在今年7月 Go 官方 Blog 里又看到了对这个套路的推荐,以及 Rob Pike 的 Blog 链接。我自己在代码里尝试之后感觉很好,又推荐给同事尝试,大家都很喜欢。示范案例我...阅读全文

Segmentfault 2020-09-21 21:32:32 eddix

CentOS7安装Rancher2.x并创建Kubernetes集群

前言此文档在三台内网机器搭建,只是为了学习搭建环境,不做生成环境使用。环境主机名ip角色web2192.168.2.202masterweb5192.168.2.205node1web8192.168.2.208node2三台主机系统均为 CentOS 7.8.2003文中会明确每个操作是在 master 还是 node 操作node 包含 node1 和 node2安装之前先关闭三台主机的防火墙systemctl stop firewalld.service安装Docker主机master 和...阅读全文

Segmentfault 2020-09-21 17:32:35 tianshui

CentOS7安装Rancher2.x并创建Kubernetes集群

前言 此文档在三台内网机器搭建,只是为了学习搭建环境,不做生成环境使用。 环境 主机名 ip 角色 web2 192.168.2.202 master web5 192.168.2.205 node1 web8 192.168.2.208 node2 三台主机系统均为 CentOS 7.8.2003 文中会明确每个操作是在 master 还是 node 操作 node 包含 node1 和 node2 安装之前先关闭三台主机的防火墙 systemctl stop firewalld.servic...阅读全文

简书 2020-09-18 11:33:43 tianshui

从零入门 Serverless | 函数计算的可观测性

简介: 本文主要分为三个部分:概述中介绍可观测性的基本概念,主要包括 Logging、Metrics、Tracing 三个方面;然后详细介绍函数计算上的 Logging、Metrics、Tracing;最后以几个常见场景为例,介绍在函数计算中如何快速定位问题并解决问题。 image 概述 可观测性是什么呢?维基百科中这样说:可观测性是通过外部表现判断系统内部状态的衡量方式。 在应用开发中,可观测性帮助我们判断系统内部的健康状况。在系统出现问题时,帮助我们定位问题、排查问题、分析问题;在系统平稳运...阅读全文

简书 2020-09-18 11:32:39 阿里云云栖号

Go 中文和unicode字符之间转换

Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。在实际应用有很多需要中文和unicode转换的场景,这里主要介绍通过golang实现中文和unicode互相转换。1、中文转unicode这一步比较简单示例 sText := "hello 你好" textQuoted := strconv.QuoteToASCII(sText) textUnquoted := textQuoted[1 ...阅读全文

Segmentfault 2020-09-21 17:32:33 guyan0319

WebAssembly 与 go

Golang 在 1.11 版本中开始支持WebAssembly。基本上目前有两种使用场景:浏览器端 -- 将golang 编写的程序编译成wasm,然后在浏览器中使用编译好的wasm。这样的意义在于,给了我们使用golang编写前端应用的能力,并且可以享受golang本身具备的诸如类型安全和协程的future。服务端 -- golang程序中使用其他语言编写的wasm模块。截止到目前,golang并不能支持wasi,不过正在规划中。具体可以查阅 issue 。下面我们通过两个demo分别演示一...阅读全文

Segmentfault 2020-09-21 16:32:35 iyacontrol

GO

WaitGroup 实现并发控制 image.png Add与Done应该放在哪? - Add放在Goroutine外,Done放在Goroutine中,逻辑复杂时建议用defer保证调用 WaitGroup适合什么样的场景? - 并发的Goroutine执行的逻辑相同时,否则代码并不简洁,可以采用其它方式 理解WaitGroup的实现 - 核心是CAS的使用 https://blog.csdn.net/weixin_34259159/article/details/91699572 Done(...阅读全文

简书 2020-09-18 03:32:48 zhuleixiao666

看json格式配置、日志的你眼睛不会痛吗?

不痛,不痛,我两只眼睛视力都是1.5000000000000004,才不会痛呐 不痛的朋友,点进来是来围观视力差的网友,这我可以理解,但是我不能理解的是这么好的视力只用来看配置、日志文件,确实很浪费(推一下眼镜 json配置查看工具 让我康康,为啥要用json做配置文件 图中的这款就是它了 github.com/simeji/jid ,俺觉得可以试试用 toml 做配置,至少可以少打好几括号 # This is a TOML document. title = "TOML Example" [o...阅读全文

python字符串详解

字符串定义 字符串是由一个个字符组成的序列 使用成对的单引号或者双引号 two_quote_str = 'hello python' one_quote_str = "hello python" 成对的三引号,保留字符串中的全部格式信息 # 会保留换行符,制表符 three_quote_str = '''languages: 1.python 2.java 3.golang 4.c++ ''' 字符串的操作 基本操作(序列通用功能) 索引访问 str = "12345678" print(str...阅读全文

简书 2020-09-18 01:32:40 梦止步了