当前位置: 首页 > news >正文

后端工程进阶| 青训营笔记

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

并发编程

  • 协程Goroutine
  • 通道Channel
  • 锁Lock

    并发基础

  1. 串行程序与并发程序:串行程序特指只能被顺序执行的指令列表,并发程序则是可以被并发执行的两个及以上的串行程序的综合体。
  2. 并发程序与并行程序:并发程序是指可以被同时发起执行的程序,而并行程序则被设计成可以在并行的硬件上执行的并发程序。
    多进程编程

进程之间的通信被叫做IPC(Inter-Process Communication),从处理机制可划分为三大类:基于通信的IPC基于信号的IPC基于同步方法的IPC。基于通信的IPC又分为以数据传送为手段的IPC和共享内存为手段的IPC。前者包括管道(pipe)消息队列(message queue)管道可以传送字节流,消息队列可以传送结构化消息对象。以共享内存为手段的IPC的方法主要是基于共享内存区(shared memory)为代表,速度最快。基于信号的IPC是系统的信号(signal)机制,唯一异步的IPC。

Channels

一个channel是一个通信机制,它可以让一个goroutine通过它给另一个goroutine发送值信息。 go //创建 ch := make(chan int) // ch has type 'chan int' ch = make(chan int) // unbuffered channel ch = make(chan int, 0) // unbuffered channel ch = make(chan int, 3) // buffered channel with capacity 3 var ch1 chan int // ch1是一个正常的channel,不是单向的 var ch2 chan<- float64// ch2是单向channel,只用于写float64数据 var ch3 <-chan int // ch3是单向channel,只用于读取int数据 //发送,接受 ch <- x // a send statement x = <-ch // a receive expression in an assignment statement <-ch // a receive statement; result is discarded //关闭 close(ch)

依赖管理

  • Go Module

Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。

Go.mod其实就是一个Modules,关于Modules的官方定义为:

Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。

Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至是空目录都可以作为Modules,只要其中包含有go.mod文件。

http://www.lryc.cn/news/205397.html

相关文章:

  • EPPlus库的安装和使用 C# 中 Excel的导入和导出
  • 深度学习使用Keras进行迁移学习提升网络性能
  • 越流行的大语言模型越不安全
  • 搜维尔科技:伦敦艺术家利用Varjo头显捕捉盲人隐藏的梦想
  • 如何将html转化为pdf
  • ES6初步了解生成器
  • 飞桨大模型套件:一站式体验,性能极致,生态兼容
  • 【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]
  • 创建 Edge 浏览器扩展教程(上)
  • container_of解析及应用
  • 搜维尔科技:Varjo-最自然和最直观的互动
  • Postman环境配置
  • Windows下Eclipse C/C++开发环境配置教程
  • 深入 Maven:构建杰出的软件项目的完美工具
  • 一文了解企业云盘和大文件传输哪个更适合企业传输
  • 在 history 模式下,为什么刷新页面会出现404?
  • 第二证券:“华为概念股”,怒刷13连板
  • 黑豹程序员-架构师学习路线图-百科:API接口测试工具Postman
  • 开源博客项目Blog .NET Core源码学习(5:mapster使用浅析)
  • Appium移动端自动测试框架,如何入门?
  • 外汇天眼:喜大普奔!困扰投资者的交易问题解决了!
  • UUID转16字节数组(Java)
  • 使用vue3 搭建一个H5手机端访问的项目
  • 【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞
  • 驱动开发day4(实现通过字符设备驱动的分布实现编写LED驱动,实现设备文件的绑定)
  • 《深入浅出.NET框架设计与实现》阅读笔记(一)
  • Flutter 类似onResume 监听,解决入场动画卡顿(2)
  • rabbitmq-3.8.15集群、集群镜像模式安装部署
  • import导入顺序杂乱的问题
  • Hadoop3教程(二十六):(生产调优篇)NameNode核心参数配置与回收站的启用