什么是运行时
runtime 描述了程序运行时候执行的软件/指令, 在每种语言有着不同的实现。可大可小,在 C 中,runtime 是库代码, 等同于 C runtime library,一系列 C 程序运行所需的函数,在 Java 中,runtime 还提供了 Java 程序运行所需的虚拟机等。
总而言之,runtime 是一个通用抽象的术语,指的是计算机程序运行的时候所需要的一切代码库,框架,平台等。
在 Go 中, 有一个 runtime 库,其实现了垃圾回收,并发控制, 栈管理以及其他一些 Go 语言的关键特性。 runtime 库是每个 Go 程序的一部分,也就是说编译 Go 代码为机器代码时也会将其也编译进来。所以 Go 官方将其定位偏向类似于 C 语言中的库。Go 中的 runtime 不像 Java runtime (JRE, java runtime envirement ) 一样,jre 还会提供虚拟机, Java 程序要在 JRE 下 才能运行。
所以在 Go 语言中, runtime 只是提供支持语言特性的库的名称,也就是 Go 程序执行时候使用的库。
什么是hyperv
Hyper-V是微软的一款虚拟化产品,是微软第一个采用类似Vmware ESXi和Citrix Xen的基于hypervisor的技术。这也意味着微软会更加直接地与市场先行者VMware展开竞争,但竞争的方式会有所不同。Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化
系统要求1.Intel或者AMD64位处理器 [1] (从Windows10预览版更新19559开始ARM64位处理器也受支持 [2] )
2.Windows Server 2008 R2及以上(服务器操作系统);Windows 7及以上(桌面操作系统)。
3.硬件辅助虚拟化。这是在现有的处理器,包括一个虚拟化的
选择工具体来说,[Intel vt](https://baike.baidu.com/item/Intel vt/2091588)或AMD-v( AMD-v,以前的代号为“ Pacifica ”的 ) 。
4.CPU必须具备硬件的数据执行保护( DEP )功能,而且该功能必须启动。
5.内存最低限度为2GB。
微软虚拟化构架
windows实现延时的几种方式
方法一:ping
缺点:时间精度为1秒,不够精确
123@echo off@ping 127.0.0.1 -n 6 >nulstart gdh.txt
方法二:vbs start /wait
缺点:生成临时文件
有点:时间精度为0.001秒,精度高
12345@echo offecho wscript.sleep 5000>sleep.vbsstart /wait sleep.vbsstart gdh.txtdel /f /s /q sleep.vbs
方法三:vbs cscript
12345@echo offecho wscript.sleep 5000>sleep.vbs@cscript sleep.vbs >nulstart gdh.txtdel /f /s /q sleep.vbs
方法四:choice
ssh过去有问题,停不下来
优点:时间精确,CPU占用低,是最佳选择
CHOICE:[/C[:]按键表] [/N] [/S] [/T[:]选择值,秒数] [显示文本]其中,/C表示可选则的按键,/N表示不要显示提示信息,/ ...
幂等
[toc]
幂等去重最近计算节点网络异常时经常出现请求未响应问题,之前的做法是在接收到任务之后与原先存在的任务做比较,进而判断是否为同一个请求的重试,
主流的MQ实现在 autocommit=true 时天然实现了幂等
但考虑业务处理可能出错的情况我们一般会将autocommit设置成false,在业务处理成功后再提交,这时就需要使用上述幂等方案了
在接收到消息时写入请求Token以实现去重判断(Token可为Topic+Offset)提交后删除Token,整体上可以做到对业务透明
函数式编程
没有副作用
什么是幂等性
数学表述, 多次调用仍为自身,
不产生副作用
带上uuid识别是否是相同的请求,避免重复请求
ACID 2.0 解释,与分布式中的ACID辨析
stateless 无状态 何时使用,对内维护状态,对外接口无状态+异步。
redis搭建
单个节点redis搭建
从官网或github下载源码
安装gcc
make(可设置内存分配器为libc,默认为jemalloc,默认更好)(内存分配器未设置为jemalloc,可能影响并发性能,并加重内存碎片,rust用的也是这个内存分配器, info memory查看内存分配器)
1
redis集群搭建
一.安装前准备关闭SELinux
1234setenforce 0echo "/usr/sbin/setenforce 0"sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
设置防火墙
12345systemctl stop firewalldsystemctl disable firewalldvim /etc/sysconfig/iptables-A INPUT -p tc ...
cmd执行命令卡住了
windows cmd->属性->选项->编辑选项
取消 快速编辑模式
cmd默认开启了“快速编辑模式”,只要当鼠标点击cmd任何区域时,就自动进入了编辑模式,之后的程序向控制台输入内容甚至后台的程序都会被阻塞。
我们在控制台里面回车或者右键鼠标后,自动退出了编辑模式。因此,控制又恢复输出内容,服务端又正常了。
选择快速编辑模式的时候,鼠标不小心点到cmd某个位置,都可能让正在运行的进程都卡住,直到按下回车后,会跳出一堆。
网络查询、嗅探
[toc]
查自己的公网ip12345longtao@longtaoXiaoXinPro13-2020:~$ curl http://members.3322.org/dyndns/getip150.118.52.133# 或者longtao@longtaoXiaoXinPro13-2020:~$ curl ip.150.118.52.133
查询域名的ip地址12345678910longtao@longtaoXiaoXinPro13-2020:~$ nslookup www.baidu.comServer: 127.0.0.53 #dns服务器Address: 127.0.0.53#53Non-authoritative answer:www.baidu.com canonical name = www.a.shifen.com.# 域名实际对应的主机名记录Name: www.a.shifen.com Address: 150.101.49.12 #域名负载均衡Name: www.a.shifen.comAddress: 150.101.49.11
查询目标ip对应的mac地 ...
什么是不经意传输
简述不经意传输(Oblivious Transfer,OT)指发送方发送了许多信息中的其中一个给接收方,但是发送方不知道接收方接受的是哪一个信息
背景不经意传输是密码学的一类协议。
不经意传输的第一种形式是由Michael Oser Rabin(1976年图灵奖-非确定自动机),这种形式的不经意传输发送方会有 1/2 的概率将消息发送给接收方,而发送方不知道接收方是否接收到该消息,传输方案基于RSA加密算法
1-2不经意传输(1-n不经意传输)是一种更为常用的不经意传输方案,这种方案被Oded Goldreich、Abraham Lempel和Shimon Even发展成为安全多方计算协议,在这种协议下用户仅能获得数据库中的一个元素,而服务器不知道用户查询了哪一个元素。不经意传输是私有信息检索的加强版本。
获取系统信息
版本信息uname工具uname工具是对sys/utsname函数的一个封装
123456789-a或--all:显示全部的信息;-m或--machine:显示电脑类型;-n或-nodename:显示在网络上的主机名称;-r或--release:显示操作系统的发行编号;-s或--sysname:显示操作系统名称;-v:显示操作系统的版本;-p或--processor:输出处理器类型或"unknown";-i或--hardware-platform:输出硬件平台或"unknown";-o或--operating-system:输出操作系统名称;
简单实例如下
123456789101112131415161718192021#include "stdio.h"#include "sys/utsname.h"int main(){ struct utsname uts; /* Put information about the system in NAME. */ uname(& ...
幽灵熔断
[toc]
概要Meltdown/Spectre被发现于2018年, 是很有影响力的cpu漏洞。
Meltdown(熔断)对应编号恶意数据缓存加载 CVE-2017-5754 。
Spectre (幽灵)对应编号边界检查绕过 CVE-2017-5753 、分支目标注入 CVE-2017-5715 。
Meltdown 影响几乎所有的 Intel CPU(从1995年起)以及部分 ARM CPU。 Spectre 拥有更广的影响范围,在 Meltdown 的情况下,恶意程序可读取某些自身无权限访问的数据。利用此漏洞低权限用户可以访问到本身无权限访问的内容,例如用户密码、加密密钥。
Spectre 恶意利用程序,可导致用户的帐号、密码泄漏。在公共云服务器上,可能打破界限,从一台虚拟机器获取到另一个用户的权限。
名词指令周期:CPU取出一条指令并执行该指令所需的时间称为指令周期,指令周期的长短与指令的复杂程度有关,一般多个CPU周期组成指令周期。
CPU周期:又称机器周期,通常用从主存读取一条指令的最短时间来规定CPU周期,一般多个时钟周期组成CPU周期
时钟周期:时钟周期是处理操作的最基本 ...