Go vs C++ vs python 泛型
泛型go泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。ーー换句话说,在编写某些代码或数据结构时先不提供值的类型,而是之后再提供。
这个函数只能接收[]int类型的参数,如果我们想支持[]float64类型的参数,我们就需要再定义一个reverseFloat64Slice函数。
一遍一遍地编写相同的功能是低效的,实际上这个反转切片的函数并不需要知道切片中元素的类型,但为了适用不同的类型我们把一段代码重复了很多遍。
泛型实现泛型为Go语言添加了三个新的重要特性:
函数和类型的类型参数。
将接口类型定义为类型集,包括没有方法的类型。
类型推断,它允许在调用函数时在许多情况下省略类型参数。
func min[T int | float64](a, b T) T { if a <= b { return a } return b}m1 := min[int](1, 2) // 1m2 := min[float64](-0.1, -0.2) // -0.2//向 min 函数提供类型参 ...
Go 单元测试
单元测试go test工具Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。
go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go test测试的一部分,不会被go build编译到最终的可执行文件中。
在*_test.go文件中有三种类型的函数,单元测试函数、基准测试函数和示例函数。
类型
格式
作用
测试函数
函数名前缀为Test
测试程序的一些逻辑行为是否正确
基准函数
函数名前缀为Benchmark
测试函数的性能
示例函数
函数名前缀为Example
为文档提供示例文档
go test命令会遍历所有的*_test.go文件中符合上述命名规则的函数,然后生成一个临时的main包用于调用相应的测试函数,然后构建并运行、报告测试结果,最后清理测试中生成的临时文件。
测试函数每个测试函数必须导入testing包,测试函数的基本格式(签名)如下:
func TestName(t *testing.T){ ...
Go vs C++ vs python 基本数据类型
二、基本数据类型goGo语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。
整形分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64其中,uint8就是我们熟知的byte型,int16对应C语言中的short型,int64对应C语言中的long型uint 32位操作系统上就是uint32,64位操作系统上就是uint64int 32位操作系统上就是int32,64位操作系统上就是int64uintptr 无符号整型,用于存放一个指针而且还允许我们用 _ 来分隔数字,比如说: v := 123_456 表示 v 的值等于 123456。
浮点型float32和float64
布尔值 bool布尔类型变量的默认值为false。Go 语言中不允许将整型强制转换为布尔型.布尔型无法参与数值运算,也无法与其他类型进行转换。
复数complex64和complex128var c ...
Redis
Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。
Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、 List (列表)、Set(集合)、Zset(有序集合)、Bitmaps(位图)、HyperLogLog(基数统计)、GEO(地理信息)、Stream(流),并且对数据类型的操作都是原子性的,因为执行命令由单线程负责的,不存在并发竞争的问题。
除此之外,Redis 还支持事务 、持久化、Lua 脚本、多种集群方案(主从复制模式、哨兵模式、切片机群模式)、发布/订阅模式,内存淘汰机制、过期删除机制等等
Redis 和 Memcached 有什么区别?很多人都说用 Redis 作为缓存,但是 Memcached 也是基于内存的数据库,为什么不选择它作为缓存呢?要解答这个问题,我们就要弄清楚 Redis 和 Memcached 的区别。 Redis 与 Memcached 共同点:
都是基于内存的数据库,一般都用来当做缓存使用。
都有过期策略。
两者的 ...
LammpsNN安装
laspnnlaspnn 安装需要intel com 和 Intelmpi,所以就学习安装一下
部署oneapi HPC版本记录一下部署oneapi HPC版本的部署过程。本次部署使用的是offline的方式,使用的是silent模式我的操作系统版本是centos7.6
offline脚本获取直接从官网上获获取offline的安装脚本,offline的安装模式是最合适的。
官网地址链接: https://www.intel.com/content/www/us/en/developer/tools/oneapi/hpc-toolkit-download.html
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18679/l_HPCKit_p_2022.3.0.8751_offline.sh安装模式:-a -s --eula accept安装路径:--install-dir /HPC/software/oneapi/2022.3.0.8751#创建部署路径mkdir -p /HPC/software/on ...
elsarticle-num.bst 格式调整
elsarticle-num.bst格式调整输出文章 不想用可以注释掉FUNCTION {article}{ output.bibitem % 输出文献条目开始 format.authors "author" output.check % 输出作者 title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check % 输出题目 crossref missing$ % 如果没有引用其他文献 { format.journal % 输出期刊名称缩写 "journal" output.check % add.blank before.all 'output.state := format.vol.num.pages output % 输出卷、号、页码 } ...
Lammps安装
Lammps最近一个老师让我帮他装一个lammps跑模拟用,就花了几天时间学习了一下,总共需要配置3个包
配置环境为centos,其他同理。下载包的话最新版本。
openmpi下载地址 https://link.zhihu.com/?target=https%3A//www.open-mpi.org/software/ompi/v4.0/
tar -zxvf openmpi的文件名cd openmpi文件名./configure --prefix=openmpi安装路径 #安装路径可以新建一个local/openmpi文件夹 make -j 8 #多少核make make checkmake install安装完成没有报错配置环境变量vi .bashrc#openmpi 这是我的环境变量export PATH=/home/liaosi/local/openmpi/bin:$PATHexport LD_LIBRARY_PATH=/home/liaosi/local/openmpi/lib:LD_LIBRARY_PATH安装后检查一下mpicc --version:该命 ...
c++
C++ 重点const常类型是指使用类型修饰符****const****说明的类型,常类型的变量或对象的值是不能被更新的
作用1.可以定义常量 const int a=100;
2.防止修改,起保护作用,增加程序健壮性
3.类型检查 const定义的变量只有类型为整数或枚举,且以常量表达式初始化时才能作为常量表达式。其他情况下它只是一个 const 限定的变量,不要将与常量混淆。
4.可以节省空间,避免不必要的内存分配 const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数。const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。
const对象默认为文件局部变量非const变量默认为extern。要使const变量能够在其他文件中访问,必须在文件中显式地指定它为extern。
未被const修饰的变量在不同文件的访问```cpp// file1.cppint ext;// file2.cpp#include<iostream>extern int ext;int ...