虽然提供了channel来保证协程中的通信,在某些情况下,还是更适合使用锁来保证线程的安全.go语言中的锁分两种:互斥锁mutex和读写锁rwmutex1.互斥锁 mutex互斥锁是线程安全中最常用的锁,基本原理就是对某个操作进行加锁,无论读写同一时间内只有一个协程可以对当前数据进行操作,只有对当前锁解锁后其他协程才可以继续进行操作,互斥锁不可以重入,对一个已经加过锁的数据再次加锁会引起恐慌,同样
转载
2023-08-18 18:17:58
50阅读
Go语言中的锁简单易用,本文整理一下锁的实现原理。Golang中锁有两种,互斥锁Mutex和读写互斥锁RWMutex,互斥锁也叫读锁,读写锁也叫读锁,相互之间的关系为:写锁需要阻塞写锁:一个协程拥有写锁时,其他协程写锁定需要阻塞写锁需要阻塞读锁:一个协程拥有写锁时,其他协程读锁定需要阻塞读锁需要阻塞写锁:一个协程拥有读锁时,其他协程写锁定需要阻塞读锁不能阻塞读锁:一个协程拥有读锁时,其他协程也可以
转载
2023-12-31 16:05:01
36阅读
# 深度解密Go语言
Go语言是一种静态类型、编译型和并发的编程语言,由Google开发。它的设计目标是提供一种简单、高效和可靠的编程语言,特别适用于大规模的系统开发。本文将深度解密Go语言的特性和用法,并提供一些代码示例帮助读者更好地理解。
## 并发编程
Go语言的一个重要特性是并发编程。它提供了goroutine和channel机制来实现轻量级的并发操作。goroutine是一种轻量级
原创
2023-08-10 15:41:46
45阅读
对称加密中,加密和解密使用相同的密钥,因此必须向解密者配送密钥,即密钥配送问题。而非对称加密中,由于加密和解密分别使用公钥和私钥,而公钥是公开的,因此可以规避密钥配送问题。非对称加密算法,也称公钥加密算法。 1977年,Ron Rivest、Adi Shamir、Leonard Adleman三人在美国公布了一种公钥加密算法,即RSA公钥加密算法。RSA是目前最有影响力和最常用的
转载
2023-11-18 21:53:37
6阅读
go语言Lotus项目开发实战〇、Lotus设计文档及节点使用1、文档1.1、官方文档1.2、文档导读、解读2、名词解释2.1、CID是什么意思?2.2、StateTree是什么意思?2.3、Actor是什么意思?2.4、StateTree和Actor的关系是什么?2.5、DAG是什么意思?2.6、什么是CAR文件(.car)?2.7、什么是HAMT?2.8、如何理解TipSet3、节点使用4、
转载
2024-04-25 21:45:42
24阅读
一、Golang简介1.1概述Golang语言是Google公司开发的新一代编程语言,简称Go语言,Go 是有表达力、简洁、清晰和有效率的。它的并行机制使其很容易编写多核和网络应用,而新奇的类型系统允许构建有弹性的模块化程序。 Go 编译到机器码非常快速,同时具有便利的垃圾回收和强大的运行时反射。而他最广为人知的特性便是语言层面上对多核编程的支持,他有简单的关键字go来实现并行,就像下面这样:
转载
2023-07-26 16:44:04
61阅读
0. 前言最近参与一个基于 BitTorrent 协议的 Docker 镜像分发加速插件的开发,主要参与补充 https 协议学习了 TLS 相关知识,下面对之前的学习做一下简单总结参考文献:TLS完全指南系列文章
1. 基本原理TLS 依赖两种加密技术:
对称加密(symmetric encryption)非对称加密(asymmetric encryption)1.1 对称加密加密方和解密方共享
转载
2023-07-12 14:54:29
93阅读
1、概念加解密分为以下几种对称加密, 加解密都使用的是同一个密钥, 其中的代表就是AES、DES非对加解密, 加解密使用不同的密钥, 其中的代表就是RSA签名算法, 如MD5、SHA1、HMAC等, 主要用于验证,防止信息被修改, 如:文件校验、数字签名、鉴权协议Base64不是加密算法,它是一种数据编码方式,虽然是可逆的,但是它的编码方式是公开的,无所谓加密。本文也对Base64编码方式做了简要
转载
2023-11-19 10:53:54
109阅读
要知道的是在 Go 语言中,信道的地位非常高,面对并发问题,我们始终应该优先考虑使用信道。但是如果通过信道解决不了的,不得不使用共享内存来实现并发编程的,那 Golang 中的锁机制必须会使用而在 Golang 里有专门的方法来实现锁,在 sync 包里面。这个包有两个很重要的锁类型一个叫 Mutex, 利用它可以实现互斥锁。一个叫 RWMutex,利用它可以实现读写锁。互斥锁
转载
2024-02-11 14:56:59
41阅读
在 Golang 里有专门的方法来实现锁,就是 sync 包,这个包有两个很重要的锁类型
一个叫 Mutex, 利用它可以实现互斥锁。一个叫 RWMutex,利用它可以实现读写锁。互斥锁:Mutex概念:使用互斥锁(Mutex,全称 mutual exclusion)是为了来保护一个资源不会因为并发操作而引起冲突导致数据不准确。使用Mutext锁虽然很简单,但是仍然有几点需要注意:
- 同协程中,
转载
2023-12-26 06:56:48
80阅读
摘要在项目开发过程中,当操作一些用户的隐私信息,诸如密码,帐户密钥等数据时,往往需要加密后可以在网上传输.这时,需要一些高效地,简单易用的加密算法加密数据,然后把加密后的数据存入数据库或进行其他操作;当需要读取数据时,把加密后的数据取出来,再通过算法解密.1. 关于加密解密当前我们项目中常用的加解密的方式无非三种.对称加密, 加解密都使用的是同一个密钥, 其中的代表就是AES,DES非
转载
2023-06-20 22:05:26
65阅读
Go 语言的 context 包短小精悍,非常适合新手学习。不论是它的源码还是实际使用,都值得投入时间去学习。这篇文章依然想尝试全面、深入地去研究。文章相比往期而言,整体不长,希望你看完可以有所收获!贴上文章的目录:什么是 contextGo 1.7 标准库引入 context,中文译作“上下文”,准确说它是 goroutine 的上下文,包含 goroutine 的运行状态、环境、现场等信息。c
原创
2021-02-25 10:36:18
215阅读
o 语言的 slice 很好用,不过也有一些坑。slice 是 Go 语言一个很重要的数据结构。网上已经有很多文章写过了,似乎没必要再写。但是每个人看问题的视角不同,写出来的东西自然也不一样。我这篇会从更底层的汇编语言去解读它。而且在我写这篇文章的过程中,发现绝大部分文章都存在一些问题,文章里会讲到,这里先不展开。我希望本文可以终结这个话题,下次再有人想和你讨论 slice,直接把这篇文章的链接丢
原创
2021-02-25 11:12:16
1004阅读
bcrypt加密算法介绍 bcrypt算法对于同一个密码,每次生成的hash不一样 业务流程 对用户注册时传入的密码进行加密 //此方法生成hash值 HashAndSalt([]byte("password")) //password为string类型 将第一次生成的密码hash值存入数据库 密码 ...
转载
2021-06-03 23:49:00
1805阅读
2评论
Go 语言的slice很好用,不过也有一些坑。slice是 Go 语言一个很重要的数据结构。网上已经有很多文章写过了,似乎没必要再写。但是每个人看问题的视角不同,写出来的东西自然也不一样。我这篇会从更
转载
2022-12-26 14:19:28
10000+阅读
涉及比较少,我相信可以通
转载
2022-12-13 09:22:13
75阅读
Go语言aes加密解密处理文章目录Go语言aes加密解密处理1. 概述1.1 AES概述1.2 分组密码工作模式2. go实现2.1 CBC模式2.2 ECB模式全世界所使用
原创
2022-07-13 17:44:32
561阅读
相信很多人都听过“雷神 3”关于性能优化的故事。在一个 3D 游戏引擎的源码里,John Carmack 将 1/sqrt(x) 这个函数的执行效率优化到了极致。一般我们使用二分法,或者牛顿迭代法计算一个浮点数的平方根。但在这个函数里,作者使用了一个“魔数”,根本没有迭代,两步就直接算出了平方根。令人叹为观止!因为它是最底层的函数,而游戏里涉及到大量的这种运算,使得在运算资源极其紧张的 DOS 时
原创
2021-02-25 10:23:00
214阅读
好久不见,你还好吗?距离上一篇文章已经过去了一个多月了,迟迟未更新文章,我也很着急啊,哈哈。跟大家汇报一下,这段时间我在看 proc.go 的源码,其实就是调度器的源码。代码有几千行之多,不像以往的 map,channel 等等。想把这些代码都看明白,是一个庞大的工程。到今天为止,我也不敢说我都看明白了。要深挖下去的话,会无穷无尽,所以阶段性的探索就到这里。接下来就把这段时间的探索分享出来。其实,
原创
2021-02-25 10:31:55
139阅读
这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。我要说明的是,这里对 map 的基本用法涉及比较少,我相信可以通过阅读其他入门书籍了解。本文的内容比较深入,但是由于我画了各种图,我相信很容易看懂。放上本文的内容提纲:什么是 map维基百科里这样定义 map:In computer science, an a
原创
2021-02-25 10:37:52
212阅读