字节青训营Go语言学习第二天-Go语言进阶与依赖管理

news2024/11/22 9:36:10

文章目录

        • 并行VS并发
      • Goroutine
      • CSP
      • Channel
      • 并发安全Lock
      • WithGroup
      • Go依赖管理
      • GoPath
      • Go Vendor
      • Go Module
      • 依赖分发-回源

并行VS并发

在这里插入图片描述
并发指的是多线程在一个CPU上运行,而并行是直利用多核来实现多线程。
在这里插入图片描述
内核是系统里比较昂贵的系统资源,它的创建、切换停止都是很重的系统操作,而协程可以理解为轻量级的线程

Goroutine

在这里插入图片描述
在一个函数前加上go关键字就能为一个函数创建一个协程来运行
正因为Go协程有这种调度机制,所以我们开篇那个例子,循环并不会等待打印操作执行完再创建下一个协程,而是直接进行下一个循环,立刻创建新协程,一共创建了10个协程。而这10个协程的调度时机又是不确定的,所以打印的所以我们也没有办法确认最终的打印顺序。
Goroutine上
Goroutine下

CSP

在这里插入图片描述

Channel

在这里插入图片描述
这是一个引用类型。
无缓冲通道就是同步通道,解决同部问题的方式就是使用有缓冲通道
在这里插入图片描述

这个是并发安全的,什么是并发呢
CPU在同一时间只能运行一个任务,只是多个任务之间切换的速度较快,我们看起来好像是同时在运行的,这个就叫做并发。而并行则是完完全全在同一时刻,能够执行多个任务。在多核CPU的时代,我们就可以做到并行。
由于生产者速度快,消费者速度慢,因此利用带缓冲的队列,就能同步。
通道make的第二个参数
并发编程

并发安全Lock

在这里插入图片描述

WithGroup

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先开启五个协程就add(5)然后在每个子协程结束后调用Done()方法减1, 最后用wait方法达成阻塞。

Go依赖管理

在这里插入图片描述

GoPath

在这里插入图片描述
在这里插入图片描述

Go Vendor

在这里插入图片描述
在这里插入图片描述

Go Module

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
commit第二部分是一个时间戳,后面是12位的哈希码的前缀。
在这里插入图片描述
没有直接依赖的话会标识出来
在这里插入图片描述
标识出来可能会存在不相容的代码逻辑。
在这里插入图片描述

依赖分发-回源

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/170104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8s可视化界面Kubernetes DashboardKuboard

目录一、简介二、Kubernetes Dashboard2.1 部署dashboard2.2 访问UI2.3 创建访问账号三、Kuboard3.1 部署2.2 访问UI一、简介 本文给大家介绍两个K8s集群的可视化工具 Kubernetes Dashboard 和 Kuboard 二、Kubernetes Dashboard 2.1 部署dashboard dashboard Github地址&a…

【算法基础(2)】二分查找和斐波那契数列

二分查找 二分查找高效的前提是数据结构是有序的 思路: 1.排序 2.将数组折半,分成左右两个数组。 3.判断要查找的数和中间位置数值的大小,来判断要查找的数实在哪一半。 4.之后继续折半查找,直至找到这个数。 图解: 首…

SpringMVC看这一篇文章就够了

第一章 SpringMVC的简介 Spring框架版本 4.3.29.RELEASE SpringMVC是什么 1 2 3 4 5 61. Spring家族的一个部分 2. 是JavaWeb三层架构中控制器层的解决方案 3. 是基于MVC思想的框架-- Model-- View-- ControllerSpringMVC知识点大纲SpringMVC功能简述 1 2 3 4 5 6 7 8 9 101. 作…

WEB前端有必要学会docker吗?0基础-45分钟带你学会(包含视频笔记案例源代码)

文章目录一、为什么要使用docker二、Windows10/11系统安装Docker Desktop三、如何判断电脑已经安装好docker四、docker前端应用实战:将vue项目打包为docker镜像运行1、将vue的项目进行构建,输出dist2、准备镜像内容3、制作镜像4、启动镜像五、如何发布镜…

【Leetcode】面试题 01.02. 判定是否互为字符重排、面试题 01.04. 回文排列

作者:一个喜欢猫咪的的程序员 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 面试题 01.02. 判定是否互为字符重排 面试题 01.04. 回文排列 面试题 …

水果店做微信活动推荐_分享水果店微信小程序制作步骤

试试做个小程序拯救你的店!让你做出有效果的活动,每笔钱都花在刀刃上!编辑第一,提升水果销量,降低损耗用水果店小程序做拼团、砍价、秒杀活动,并讲原本卖不完的水果,做成果盘吸引客人注册会员。…

点成分享|关于Grant水浴的一些FAQ

1、关于稳定性和均匀性 1)稳定性,是水浴中任何一点在达到恒温时不同时间下的温度规律性波动程度的描述,是通过浴槽中心点测定的,并表示为测量值的正负一半。系同点不同时的温度特性描述。 例如:SAP恒温水浴设定温度为…

unreal engine建模模式建模研究

Create PolyExt 挤出(需要闭合) image.pngPathExt 具有宽度挤出 (无需闭合) 如下图绘制一个形状后按鼠标左键确定绘制完成再移动鼠标控制厚度按鼠标左键确定后端后再移动鼠标确定高度 image.pngimage.pngPathRev Draw and revolve polypaths to create new objects 画和旋转pol…

企业级监控项目Skywalking详细介绍,来看看呀

一. Skywalking概述一个优秀的项目,除了具有高拓展的架构、高性能的方案、高质量的代码之外,还应该在上线后具备多角度的监控功能。现在企业中的监控服务也有很多,Skywalking除了提供多维度、多粒度的监控之外,也提供了良好的图形…

Kotlin 元编程之 KSP 全面突破

什么是元编程 没想到吧,这世上除了元宇宙,还有元编程,如果没有接触过,可能会有点懵,不过没关系,简单的说就是用代码来生成代码。实现元编程的传统常见手段主要是使用 APT注解处理器 JavaPoet 组合拳&…

JAVA基础知识巩固训练

目录 1. 案例一:逢 7 跳过 2. 案例二:数组元素求和 3. 案例三:判断两个数组是否相同⭐ 4. 案例四:查找元素在数组中的索引 5. 案例五:数组元素反转 6. 案例六:评委打分 7. 案例七:随机产…

后端人眼中的Vue(五)

七、Vue生命周期 ​ Vue的生命周期指的是Vue实例在页面中创建到销毁整个过程。Vue提供了在各个生命周期的钩子,钩子也叫Vue生命周期函数。这些生命周期函数是伴随着Vue实例创建、销毁的过程中自动触发的(不需要人为手动触发)。Vue实例生命周期…

产业互联网:补齐互联网的「短板」,重启互联网的「进化」

尽管在互联网时代出现了诸多的乱象,但是,我们依然无法否认互联网时代给人们的生产和生活带来的影响和改变。即使如此,我们依然无法否认互联网本身其实是存在着诸多的问题和弊病的,这些问题和弊病所导致的一个最为直接的结果&#…

【opencv】二维面找角点/关键点 实现

every blog every motto: You can do more than you think. 0. 前言 二维面找角点/关键点 实现 1. 正文 1.1 前提 1.1.1 显示函数 def show(arr):plt.imshow(arr)plt.show()def cvshow(arr):cv2.namedWindow(a, 0)cv2.imshow(a, arr)cv2.waitKey(0)cv2.destroyAllWindows…

通关算法题之 ⌈链表⌋

链表 删除元素 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]c…

2022 IoTDB Summit:宝武智维徐少锋《Apache IoTDB 在宝武装备远程智能运维平台中的使用案例》...

12 月 3 日、4日,2022 Apache IoTDB 物联网生态大会在线上圆满落幕。大会上发布 Apache IoTDB 的分布式 1.0 版本,并分享 Apache IoTDB 实现的数据管理技术与物联网场景实践案例,深入探讨了 Apache IoTDB 与物联网企业如何共建活跃生态&#…

01【Vector CP】- 详解PN局部网络管理

Partial Networking概述 Partial Networking适用的ECU类型: 总线上依然有通信ECU关闭通信堆栈ECU要求降低功耗 Note:Partial Networking功能及其所有子功能是可选的,必须进行配置。为了控制此类ECU的关断和唤醒,CAN NM提供了一种额外的算法: NM PDU 消息中的用户数据部分…

java命名规范

Java总体命名规范1、项目名全部小写2、包名全部小写3、类名首字母大写,其余组成词首字母依次大写,驼峰命名4、变量名,方法名首字母小写,如果名称由多个单词组成,除首字母外的每个单词的首字母都要大写,保证…

企业数字化转型的关键一步,建立数据意识

数字化给社会带来的巨大的科技革命和产业革命,让数字经济成为新的高速增长的国民经济支柱,让数据变为第五大生产要素,发挥巨大价值,成为企业重要资产。不仅如此,在数字化的影响下,数字化转型成为了个人、机…

ue4.27空项目打包不卡ue5.1空项目打包运行卡的要命研究测试

知乎上有人提问 lumen是如何做到不卡顿的,我却不以为然,我的显卡虽然算不上好显卡,但是也不至于独立显卡一个空项目都玩不起吧,打个cf,玩腾讯模拟器和平精英吃鸡肯定还是会很流畅的. 一个空项目都卡,怎么能说是我电脑配置问题呢??? 再来看提示 image.pngimage.png反射设置的…