最近需要使用一组加密数据作为实验数据,方便日后使用就存储到csv文件中写了个小demopackage mainimport ( "conlock" "crypto/ecdsa" "crypto/sha256" "encoding/csv" "encoding/hex" "encoding/json" "io/ioutil" "os")ty
原创
2022-08-10 15:50:48
146阅读
单元测试针对使用传统方式测试代码块的不足:1)测试代码块需要在main函数中去调用,需要修改main函数,若项目正在运行,就可能去停止项目,不方便2)不利于管理,当需要测试多个函数或多个模块时,都需要在main函数,不利于我们管理和清晰思路3)引出单元测试。testing测试框架,很好解决上述问题。
单元测试基本原理go test工具Go语言中的测试依赖go test命令。编写测试代码和编写普通的
原创
2022-11-30 17:36:45
131阅读
简介加锁代价比较耗时,需要上下文切换 针对基本数据类型,可以使用原子操作保证线程安全 原子操作在用户态就可以完成,因此性能比互斥锁要高sync/atomic包中的函数可以做的原子操作有:加法(add) 比较并交换(compare and swap,简称 CAS) 加载(load) 存储(store) 交换(swap)原子操作函数需要的是被操作值的指针,而不是这个值本身只要原子操作函数拿到了被操作值的指针,就可以定位到存储该值的内存地址。只有这样,它们才能够通过底层的指令,准确地操
原创
2021-06-01 12:26:25
1225阅读
一、介绍NSQ是一个基于Go语言的分布式实时消息平台, 它具有分布式、去中心化的拓扑结构,支持无限水平扩展。无单点故障、故障容错、高可用性
原创
2020-08-10 23:51:22
473阅读
1、概述 1.1 基本概念 原子性:一个或多个操作在CPU的执行过程中不被中断的特性,称为原子性。这些操作对外表现成一
原创
2024-08-15 11:33:05
182阅读
一 包的导入语法 在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下: import( "fmt" ) 然后在代码里面可以通过如下的方式调用  
原创
2017-04-13 11:59:41
3301阅读
排序:将一组数据,依据指定的顺序进行排列 (1)内部排序:将数据加载在内存中进行排序; 交换排序(冒泡排序,快速排序)冒泡排序实现: 快速排序实现 (2)外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储(3)查找 顺序查找 二分查找(首先得是排好序的),这里先借助快速排序排序,再进行二分
转载
2019-11-21 20:24:00
99阅读
2评论
[toc] 配置/etc/nginx/nginx.conf文件 新建/etc/nginx/conf.d/doc.haimait.conf文件 doc.ha
原创
2021-08-07 17:55:49
1724阅读
google/renameio 是一个很不错的文件原子操作的包,比较适合的场景是进行配置管理(以及haproxy,nginx) 实际上如果了解haproxy 的dataplain 他实际上就是使用了google/renameio 进行配置管理的 参考资料 https://github.com/goo
原创
2021-07-16 17:45:39
234阅读
本文我们详细聊一下Go语言的原子操作的用法,啥是原子操作呢?顾名思义,只执行到一半的状态。CPU执行一系列操作时不可能...
转载
2022-11-10 12:16:03
77阅读
基本类型原子类数组类型原子类引用类型原子类对象的属性修改原子类原子操作增强类原理深度解析LongAdderLongAccumulator演示高并发下 LongAdder和 LongAccumulator 的性能LongAdder 原理分析LongAdder 的继承关系图Striped64LongAdder 为什么这么快?LongAdder 源码分析add 方法longAccumulate方法su
转载
2024-07-12 13:59:32
104阅读
一、Golang模拟用户登陆,突破教务系统 1.1 请求登陆页面 整个流程中的
原创
2022-09-06 11:25:09
217阅读
一. Java volatilevolatile关键字可保证变量可见性,但是无法保证原子性,下面演示多线程修改共享变量Count场景。
原创
2022-12-15 14:06:59
71阅读
1定义一个操作是原子的(atomic),如果这个操作所处的层(layer)的更高层不能发现其内部实现与结构。2简介在多进程(线程)访问资源时,能够确保所有其他的进程(线程)都不在同一时间内访问相同的资源。原子操作(atomic operation)是不需要synchronized,这是Java多线程编程的老生常谈了。所谓原子操作是指不会被线程调度机制打断的操作;这种操作
原创
2022-12-06 11:25:30
171阅读
对java并发机制的底层实现原理学习了一下,有一些浅薄的收益。第一了解的是:java对象在JVM中有一个java对象头的概念,synchronized用的锁的信息就是存在java对象头里面,根据其中存储的markword的线程是否指向自己的线程来判断是否持有当前锁。java对象头的长度视图:32位的对象头的mark word存储结构的视图:64位的对象头的mark word存储结构的视图: 我们知
转载
2024-02-18 20:16:30
98阅读
原子操作指的是在执行过程中不会被别的代码中断...
转载
2017-05-27 19:15:00
221阅读
2评论
让我们跳回原子性看看到底意味着什么。原子性意味着,或者指令完整地成功执行完,不被打断,或者根本不执行。所以,如果你选择执行两个原子位操作,你会希望两个操作都成功。在操作成功完成后,位的值应该是第二个操作所赋予的。但是,在最后一个操作发生前的某个时间点,位的值应该维持第一个操作所赋予的。话句话说,真正 ...
转载
2021-11-02 14:14:00
437阅读
2评论
今天看到文章讨论 i++ 是不是原子操作。 答案是不是! 参考:http://blog.csdn.net/yeyuangen/article/details/19612795 1.i++ 不是,分为三个阶段: 内存到寄存器寄存器自增写回内存这三个阶段中间都可以被中断分离开. 2.++i首先要看编译器
转载
2016-12-07 19:37:00
182阅读
2评论
AtomicLong 通过 CAS 提供了非阻塞的原子性操作,相 比使用阻塞算法的 同步器来说它的性能己经很好了,但是 JDK 开发组并不满足于此 。 使用 AtomicLong 时, 在高并发下大量线程会同时去竞争更新 同→个原子变量,但是由于同时只有一个线程的 CAS 操作会成功,这就造成了大 量 线程竞争失败后,会通过无限循环不断进行自旋尝试CAS 的操作, 而这会白白浪费 CPU 资源。&
转载
2024-09-03 22:51:58
40阅读