最近在部署服务器上的云应用的时候,需要查看numas上cpu核心与pci网卡插槽的对应关系,总结了一些numa和pci的知识,希望可以帮助到其他人numa概念 Non-Uniform Memory Access,非统一内存访问(NUMA),一种用于多处理器的电脑内存体设计,内存访问时间取决于处理器的内存位置。 在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另
zookeeper所谓分布式系统就是在不同的地域分布的多个服务器,共同组成一个应用系统来为用户提供服务,在分布式系统中最重要的是进程调度。多个进程的应用需要竞争资源,此时需要一个协调器来让多个进程有序的访问这个资源。这个协调器就是分布式系统中经常使用的锁机制,例如进程1使用资源的时候,获得锁,保持对该资源独占,此时其他进程就无法访问该资源,而进程1在使用完该资源后将锁释放掉,以便要其他进程来获得锁
select在某些场景下我们需要同时从多个通道接收数据。通道在接收数据时,如果没有数据可以接收将会发生阻塞。Go内置了select关键字,可以同时响应多个通道的操作。select的使用类似于switch语句,它有一系列case分支和一个默认的分支。每个case会对应一个通道的通信(接收或发送)过程。select会一直等待,直到某个case的通信操作完成时,就会执行case分支对应的语句。具体格式如
进程和线程 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程可以创建和撤销多个线程;同一个进程中的多个线程之间可以并发执行。 多个线程程序在一个核的cpu上运行,就是并发;多线程程序在多个核的cpu上运行,就是并行。携程和线程协程,
安装配置etcd3个节点,搭建一个集群#克隆仓库 git clone -b v3.5.0 https://github.com/etcd-io/etcd.git #切换目录执行安装脚本 ./build.sh #添加到环境目录 export PATH="$PATH:`pwd`/bin" #测试 etcd --version集群启动### 第一台 nohup ./etcd --name infr
JSONjson是完全独立于语言的文本格式,是k-v的形式 name:zs应用场景:前后端交互,系统间数据交互json使用go语言内置的encoding/json 标准库编码json使用json.Marshal()函数可以对一组数据进行JSON格式的编码通过结构体生成jsonpackage main import ( "encoding/json" "fmt" ) type Person
RPC和gRPC介绍RPC(Remote Procedure Call),远程过程调用协议,一种通过网络从远程计算机请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议存在,例如TCP/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。所谓过程就是业务处理,计算任务,就是说程序像调用本地方
messageprotobuf中定义一个消息类型是通过关键字message字段指定。消息就是需要传输的数据格式的定义,它类似java中的class,go中的structmessage User{ string username=1; int32 age=2; }对应生成go的结构体type User struct { state protoimpl.Messag
grpc简介gRPC由google开发,是一款语言中立、平台中立、开源的远程过程调用系统,gRPC客户端和服务端可以在多种环境中运行和交互,例如用java写一个服务端,可以用go语言写客户端调用微服务架构中,由于每个服务对应的代码库是独立运行的,无法直接调用,彼此间的通信就是个大问题gRPC可以实现微服务,将大的项目拆分为多个小且独立的业务模块,也就是服务,各服务间使用高效的protobuf协议进
supervisor是用python开发的一个client/server服务,是linux下系统的的一个进程管理工具,不支持windows系统。它可以很方便的监听,停止,重启一个或者多个进程。用它管理,当一个进程意外被杀死,或者是意外被停止(系统负载过高,cpu占用率很高等),supervisor监听到进程死后,会自动将它重新拉起来,很方便的做到进程自动恢复的功能,不需要再自己写shell脚本来控
配置redis密码查找redis.conf,搜索requirepass关键字,如下图:去掉注释,增加密码配置,重启服务器即可#重启服务 systemctl restart redis #测试连接 redis-cli -h 127.0.0.1 -p 6379 -a ksyun@2023修改成功后配置主从复制在从库配置完成启动之后,不管是第一次同步还是重新同步,slave 都会发送一个sync的命
templatehtml/template包实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用text/template包。模板示例通过将模板应用于一个数据结构(即该数据结构作为模板的参数)来执行,来获得输出。模板中的注释引用数据接口的元素(一般如结构体的字段或者字典的键)来控制执行过程和获取需要呈
IO输入输出的底层原理终端其实是一个文件,相关实例如下:os.Stdin:标准输入的文件实例,类型为*Fileos.Stdout:标准输出的文件实例,类型为*Fileos.Stderr:标准错误输出的文件实例,类型为*File文件操作相关APIfunc Create(name string) (file *File, err Error)根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0
Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。os.Args获取命令行参数个数package mainimport ( "fmt" "os")//os.Args//获取命令行参数func main() { //os.Args是一个[]string if len(os.Args) > 0 { for index, a
fmtfmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分package mainimport ( "fmt" "os")//fmtfunc main() { //Fprint 将内容输出到一个io.Write接口类型变量w中,实现往文件中写入内容 //只要满足io.Writer接口类型的都支持写入 fmt.Fpr
Cgrouplinux Cgroup 提供了对一组进程及子进程的资源限制,控制和统计的能力,这些资源包括 CPU,内存,存储,网络等。通过 Cgroup,可以方便的限制某个进程的资源占用,并且可以实时监控进程和统计信息。Cgroup 完成资源限制主要通过下面三个组件cgroup: 是对进程分组管理的一种机制subsystem: 是一组资源控制的模块hierarchy: 把一组 cgroup 串成一
docker原理docker 本质其实是一个特殊的进程,这个进程特殊在它被 Namespace 和Cgroup技术做了装饰,Namespace 将该进程与Linux 系统进行隔离开来,让该进程处于一个虚拟的沙盒中,而 Cgroup 则对该进程做了一系列的资源限制,两者配合模拟出来一个沙盒的环境。NamespacLinu
lazydocker,一个简单的 docker 和 docker-compose 终端用户界面,用更懒惰的方式来管理所有的 docker。其界面采用 gocui 开发。特点可以清楚地查看 docker 或 docker-compose 容器环境的状态查看容器 / 服务的日志查看容器度量的 ascii 图可以自定义图来测量任何想要测量的重新启动、移除、重建容器和服务查看给定图像的
go语言学习,两个简单的爬虫案例爬取QQ邮箱package main/*明确目标爬-爬下内容取-筛选想要处理数据*/import ( "fmt" "io/ioutil" "net/http" "regexp")//获取QQ邮箱,简单版本,没有封装,爬出的数据也没有去重var ( // \d 正则 ,代表数字 ReQQEamil = `(\d+)@qq.com`)
在日常linux安全检查中,收集了一些linux系统安装加固的检查项,可以作为参考用户账号和环境检查项注释:1清除了operator、lp、shutdown、halt、games、gopher 帐号 删除的用户组有: lp、uucp、games、dip 其它系统伪帐号均处于锁定SHELL登录的状态2验证是否有账号存在空口令的情况: awk -F: ‘($2 == “”) { print $1 }’
概念Go语言使用包(package)的概念来组织管理代码,包是结构化代码的一种方式。和其他语言如JAVA类似,Go语言中包的主要作用是把功能相似或相关的代码组织在同一个包中,以方便查找和使用。在Go语言中,每个.go文件都必须归属于某一个包,每个文件都可有init()函数。包名在源文件中第一行通过关键字package指定,包名要小写。如下所示:package fmt每个目录下面可以有多个.go文件
KVM磁盘格式一般来说,KVM环境使用两种磁盘镜像格式,一种是RAW,一种是qcow2RAWraw硬盘格式是KVM虚拟机原始的硬盘镜像,属于二进制镜像文件,性能较好但是功能简单,使用raw格式会占用大量存储空间,一次性会把创建的空间全部使用,比如创建10GB空间直接使用10GB,不管究竟用多少,同时RAW格式需要ext3/ext4文件系统支持。使用qemu-img create可以创建 raw镜像
配置GOPATHGOPATH是一个环境变量,用来表明你写的go项目的存放路径,GOPATH路径最好只设置一个,所有的项目代码都放到GOPATH的src目录下。在windows平台,按照下面的步骤添加到环境变量。例如配置D:\控制面板->属性->系统高级设置windows上一般安装完go后,会有gopath,需要设置。GOPATH填写实际存放代码的地方,即项目目录在path里添加go的
参考promethues文档,构建简单的exporterhttps://prometheus.io/docs/tutorials/instrumenting_http_server_in_go/编写简单的http服务端在本机上用go编写一个服务端 ,访问127.0.0.1:8090/ping,服务器将会响应pongpackage mainimport ( "fmt" "net/
存储的基本发展企业中使用存储的按照其功能,使用场景,大体可以分为4个阶段:DAS 直连存储NAS 网络附加存储SAN 存储区域网络Object Storage 对象存储以下是存储基本概念汇总在企业中不同的场景使用的存储,使用表现形式为三种,磁盘-块存储,挂载目录-文件共享存储,通过API向存储系统中上传PUT和下载GET文件-对象存储Ceph分布式存储Ceph定义Ceph能够提供企业中三种常见的存
在日常运维中,需要关注服务器CPU,内存,网络IO等指标,使用内置的命令如top,ps, free等工具虽然可以检查,但是非常不直观,而且难用。所以总结了一些常用的TUI的性能检查工具。磁盘性能iotop iotop是一个用来监视磁盘I/O使用状况的工具,可以检测到哪一个程序使用的磁盘IO的实时信息。#centos7 安装yum -y install iotop安装完成后,
由于计算机无法直接执行高级语言编写的源程序,如果需要运行程序,就需要使用一种机制来让计算机识别,这样程序才可能运行起来。一般来说,计算机中存在解释型语言和编译型语言。解释性语言就是计算机逐条取出源码中文件的指令,将其转化为机器指令,并执行这个指令的过程。而编译型语言是指在程序运行前就将所有大源代码一次性转化为机器代码,在运行这个程序的过程。可执行程序工作原理ELF目标文件格式所谓目标文件,指编译器
shell脚本不执行某同事找我说帮他看看他写的shell脚本,死活不执行,报错。我看了下,脚本很简单,也没有常规性的错误,报“:badinterpreter:Nosuchfileordirectory”错。看这错,我就问他是不是在windows下编写的脚本,然后在上传到linux服务器的……果然。原因:在DOS/windows里,文本文件的换行符为rn,而在*nix系统里则为n,所以DOS/Win
记录一次某局点实施的方案,作为日后参考,采用绿盟的安全设备,重点关注网络组网和设备部署方案网络安全设备配置真的就是在网页上点点。。。 low的一比,那帮搞安全的貌似真的不懂数通ip地址信息是专网内部分配概述实施产品列表名称数量/台型号序列号核心交换机2S7706安全区接入交换机1S5735-S24T4X服务区接入交换机2S5735-S48T4X服务器区防火墙2NFNX5-HFD出入口防火墙2NFN
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号