virtualmemoryvmstat是VirtualMemoryStatistics(虚拟内存统计)的缩写


摩尔定律的失效

摩尔定律的失效,硬件的更迭速度,单核转多核
系统生态,应用架构从单体系统转变为分布式系统。
从集中部署变为了分布式部署,应用程序从纵向扩展转为横向扩展。
虚拟机(Virtual Machine,VM)的本质是在一个物理机上模拟出多个完整的操作系统,每个操作系统实例都管理自己独立的文件系统和设备驱动,分配了特定CPU、Memory、磁盘等计算资源。
一台物理节点切分成多个粒度更小的逻辑节点。
管理复杂度
云计算是虚拟化的伴生技术。
云计算,是将成千上万的计算节点组成一个集群,统一管控,对计算、存储和网络等计算机系统资源进行抽象,使得云用户无须关心基础架构,只需定义自己需要的计算资源,云平台可以自动选择最合适的计算资源,并分配给用户以满足业务需求。
OpenStack虚拟化云计算平台的实施标准。
虚拟化云平台管理的核心是虚拟机,是一个操作系统,在操作系统上部署应用的环节并未省略。


1.基础架构即服务(Infrastructure as a Service,即IaaS)
只负责到基础架构层面,它是对计算、网络和存储资源的抽象,并提供这些基础资源的访问和监控服务。
IaaS 用户在创建一个虚拟机后需要部署某个应用时,应用部署的自动化依然需要自己负责。

2.平台即服务(Platform as a Service,即PaaS)
除提供基本的基础架构服务外,云平台会依据应用部署的目标环境分配存储,构建应用接入网络。
PaaS 解决问题的目标是面向应用的,一旦通过PaaS 创建应用实例,则网络拓扑已经搭建完毕,中间件和文件分发系统已经构建在操作系统中,用户只需部署代码即可访问应用。
PaaS 平台更贴近端到端管理应用的场景,但也有明显缺陷:

(1)虚拟机只包含操作系统和中间件,不包含应用代码,因此虚拟机的构建(Provision)和代码部署(Deploy)分属于不同环节。而这两个功能都不是基础云平台的自带功能,因此企业需要依据自己的现实业务需求重新构建。

(2)基于虚拟机的文件分发没有统一的解决方案,应用包上传至文件服务器,再由程序分发代理拉取,也需要自主开发。(
3)需要单独构建日常运维所需要的功能,比如监控、故障转移、扩容缩容等,另外虚拟机的构建和代码的部署分离使得整个过程变得臃肿而缓慢。

(4)PaaS 尝试在一个庞大的基础云平台基础上再构建一个庞大的应用管理系统,二者之间有明显边界,这使得PaaS 的维护成本很高。

3.软件即服务(Software as a Service,即SaaS)又称云应用服务。
云服务商提供的软件一般只做通用功能,而公司需求的软件有无数的定制化要求,选择SaaS 意味着放弃个性化要求,只使用软件供应商提供的标准服务。

什么是“抽认卡”(中英对照)

什么是“抽认卡”(中英对照)

抽认卡或闪卡,是指在两侧都带有信息的卡,旨在用作记忆的辅助工具。 每个抽认卡的一侧都有一个问题,而另一侧则有一个答案。 抽认卡通常用于记忆词汇、历史日期、公式,或可以通过问答方式学习的任何主题。 抽认卡可以是虚拟的(抽认卡软件的一部分),也可以是物理的。
抽认卡是测试效果的一种应用----已经发现在某些学习阶段中,专门通过具有适当反馈的测试来检索信息时,可以增加长期记忆。 学习习惯会影响抽认卡用户的学习速度,并且已证明抽认卡的适当间距可加快学习速度。 现已存在许多利用此原理的,间隔且重复的软件程序。
~~~
A flashcard or flash card is a card bearing information on both sides, which is intended to be used as an aid in memorization. Each flashcard bears a question on one side and an answer on the other. Flashcards are often used to memorize vocabulary, historical dates, formulas or any subject matter that can be learned via a question-and-answer format. Flashcards can be virtual (part of a flashcard software), or physical.
Flashcards are an application of the testing effect − the finding that long-term memory is increased when some of the learning period is devoted to retrieving the information through testing with proper feedback. Study habits affect the rate at which a flashcard-user learns, and proper spacing of flashcards has been proven to elerate learning. A number of spaced repetition software programs exist which take advantage of this principle.

关于SUN的那些事儿 (十)

关于SUN的那些事儿 (十)

1978年早些时候,位于新泽西Holmdel的AT&T的贝尔实验室,一个小组刚迎来一台DEC的新款Vax。组里的工程师采用单位里新开发的Unix v7, 并将v7移植到了Vax上,这个Unix/Vax版本被称为 UNIX V32。同时为了方便移植,他们把 32位 的 VAX当成大一点的 PDP-11 (因为 PDP-11 是 16位的 ),同时为了执行的效率,V32 放弃使用 VAX硬件提供的 paging space功能,所以 V32没有虚拟内存。

与此同时。UC Berkeley 也刚购进了Vax (11/780)。当时有位教授 Richard Fateman,原先使用一台 PDP-10 进行他的Macsyma研究计划。但他需要更大的内存地址空间来执行程序,所以在 1978 年初,他看上了 VAX。好不容易,他联合了其它的部门才凑足购买 VAX的经费。刚开始时,机器原本安装的是 VMS操作系统。不过别的成员要运行 UNIX,于是Berkeley 与 BTL联系后获得并安装了V32.。但问题来了,V32 并不支持vm,Fateman 便找上了 Domenico Ferrari 教授,希望他的研究小组能为 UNIX 加上这项功能。当时一位叫名为Ozalp Babaoglu 的学生,想出了一些解决方案,但因为涉及到 VAX硬件及Unix kernel的问题,于是他找到了Bill  Joy帮忙。

就在只有一台 VAX的状况下,Bill Joy 和他的团队勤奋地coding 。1979年 1月,在 VAX上支持vm的Unix终于诞生了。紧接着 Peter Kessler和 Marshall Kirk McKusick 为他加上了Pascal;Bill Joy 则动手将 2BSD 上的 ex、vi、csh等工具移植过来。这个版本就是面向Vax的3BSD.它是第一个支持vm、demand paging 和 page replacement 的Unix, 能够运行功能强大的应用程序.

在此特别一提的是BSD的联网功能。1978年,在UC Berkeley读研究生的Eric Schmidt在为完成硕士论文时而做的一个项目就是为BSD开发被称为“”一个网络程序。它可以将多达26台主机互联,能够传递文档和邮 件。该程序随2BSD交付发布。

以上两点(在Vax上运行Unix/BSD和网络功能),迅速引起了国防部高等研究计划局(DARPA)的注意。DARPA希望自己发布的TCP/IP协议能够使各种不同的机器之间互联,他们倾向用 Vax机做主要开发平台,因为的几个节点都是Vax,目前正在寻找一款合适的OS。在对OS的要求中,首先要支持虚拟内存。DEC随Vax推 出的OS是VMS(Virtual Memory System),顾名思义就可看出VMS是一种不错的选择。但BSD也支持vm, 所以也在DARPA的考虑之中。而BSD Unix还有几个优势,
1、它是用C写的,这意味着该OS可以移植到Vax以外其它硬件上;
2、可以获得源码, 用户社区能够修正改进,而VMS是封闭专有 系统;
3、BSD已经有很多用户,他们对DARPA有一定的影响力。

当时,Bob Fabry 教授写了一份建议书给 DARPA,建议他们以支持虚拟内存的 3BSD 为基础,发展成为计划所需的OS。这份计划书引起了 DARPA的高度兴趣。随后 3BSD 确实获得了 DARPA相关计划成员们的好评,最后UC Berkeley击败了卡内基梅隆与 BBN(Bolt Baranek & Newman,INC ),让 Bob Fabry成功地获得了 DARPA的资助合同。这份合同开始于 1980 年 4月,为期 18 月。DARPA开始源源不断地提供资金,让UC Berkeley进行相关的研究与开发,将TCP/IP加入到BSD中。 Bob Fabry 教授在取得合同后,依约成立了一个支持机构CSRG(Computer Systems Research Group).  Bob Fabry找上了 Bill Joy 来负责软件开发。Joy 迅速地以先前的 3BSD 为基础,整合新的功能,如 Job Control (Jim Kulp )、auto reboot 、1K block FS. 同时也加入piler 、Franz Lisp system、enhanced mail handling system。 正是通过DARPA的资助,80年发布的4BSD最终成为首个支持新兴的以太网卡、具有TCP/IP协议的Unix,没多久便被安装在将近 500台VAX 上。

Nacos集群部署中巨坑

Nacos集群部署中巨坑
最近在linux虚拟机下面部署了一个nacos集群环境遇到一个非常棘手的问题,竟然出现了JVM内存溢出问题,分享给大家,希望能够帮助到有需要的人。
集群环境准备:
1、centos7 + virtualbox
2、jdk11
3、mysql-8.0.1
4、nacos-2.1.0
具体部署步骤如下所示(默认上述环境已经全部准备妥当):
修该application.properties,添加如下内容:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://网页链接
db.user.0=root
db.password.0=123456

拷贝cluster.conf.exampcluster.conf文件,添加如下内容:
192.168.0.127:8848
192.168.0.128:8848
192.168.0.129:8848

按照以上两步,分别在另外两台虚拟机上做相同配置
略…………………………..
以单机模式分别启动三个nacos节点:
./startup.sh -m standalone
在浏览器上分别访问nacos,结果如下:
网页链接

正常运行
关闭所有nacos服务:
./shutdown.sh
以集群模式运行nacos服务
./startup.sh -m cluster 或 ./startup.sh
查看nacos进程:ps -ef|grep nacos, 结果如下:

说明nacos进程已经正常启动,其他两台虚拟机也是如此
测试nacos集群,浏览器访问:网页链接,结果如下:

显示无法访问。
接下来就是对问题进行了一通排查,分别从一下几个方面考虑:
10.1、本地浏览器无法访问linux中的nacos服务了
10.2、本地主机与虚拟机存在连通性问题
10.3、和防火墙问题
10.4、配置是否正确
10.5、外部数据库无法连接导致
11、针对以上设想进行一一排查。分析过程如下:
11.1、如果本地服务器无法访问Linux虚拟机中的nacos服务,那么单机环境下也不能访问才对,所以排除这一原因
11.2、使用ping命令测试连通性,结果如下:

默认返回四次连接数据,说明连通性不存在问题,排除这一原因
11.3、查看防火墙状态:systemctl status firewalld,结果如下:

显示防火墙处于关闭状态,排除防火墙原因
11.4、认真查看每个nacos节点下的配置文件,发现配置一切正确
11.5、在单机模式下,访问nacos,并创建一个配置,发现数据中config_info中有相应数据插入,说明数据库正常
至此,问题始终没有得到解决,于是开始一顿谷歌百度。。。。。但是始终还是没解决问题
没办法了,推到重做,再次重新部署,重新启动nacos服务,步骤如下:
启动第一个节点:192.168.0.127:8848
查看nacos进程:ps -ef|grep nacos
查看启动日志:vim /usr/local/nacos/logs/start.out,启动日志如下:

然并没有发现问题。
重复上述步骤启动第二个节点,在启动第二个节点时,查看启动日志终于发现了问题:
OpenJDK 64-Bit Server VM warning: INFO: os:mit_memory(0x00000000c0000000, 1073741824, 0) failed;error='Out of memory' (errno=12)
至此已经接近了问题的真相:
查看startup.sh启动程序文件:

从nacos的启动程序中发现:
单机模式下jvm最小堆内存为512m,而在集群模式下,JVM最小堆内存要求为2G,因为我的虚拟机内存都采用了virtualbox的默认值1024m,所以导致集群下无法创建JVM虚拟机,所以nacos服务无法启动 。

VB当然能在64位Win上继续豪横

VB当然能在64位Win上继续豪横!

1、VB6代表的Win32位开发,不仅依托WOW64兼容层可以继续以32位的姿态苟活在64位Win平台上,而且还可以直接利用WOW64兼容层的机制跨入64位的世界,白嫖各种64位的二进制资源。

2、相信很多VB6老玩家们,都玩过Hook注入、跨进程内存读写一类的奇技淫巧。32位Win上跑得顺溜的代码,到了64位平台上,却总会出现这样那样的问题。搜一搜,查一查,微软那句32/64位Dll互不能载入,是不是让人心凉半截?随着64位硬件的全面普及,迟早都是64位应用的天下,32位还能苦撑多久呢?
VB6若不能使用64位的库资源,走路的腿就短了,那这条道注定就是一条看得见终点的死路。那还吹什么VB简答易用,吹什么VB里的乾坤奥妙?即便再适合业余玩家,那也不能玩一个指不定什么时候就没法用的工具呀。
语言可以有自己的生态,可以在这个生态上衍生出一系列茶余饭后的鄙视链,但干活的工具至少得有啊,可用、能用是最起码的吧。VBA升级到了64位,对于VB家族而言,也算是保证了核心支持,不至于整个VB被砍掉。但作为提升VBA代码性能的VB6(为什么?),却没有得到升级支持。
这让很多爱好者有些难受,也有些灰心。因为VB6也是VBA实现商业价值的最便捷的途径,而VBA又是事实上的开源,没有利益的驱使,VBA就要真的成为自留地上的锄头了。因为,闭源体系下讲开源,那才叫人品。

3、虽然笔者在前面也分享了64位OfficeVBA编译DLL的方法,但限于资源问题,要实现起来就很复杂了,对于大多VB/VBA用户而言也不具备普适性(当然后面会有现成的工具,那就很普适了)。所以想通过64位VBA给VB6拉光环,就需另辟蹊径。
不过,然而笔者在前面也给大家伙分享了,64位Win上的32位,其实就是64位。既然其他64位都可以使用64位库资源,32位的VB6就不行了呢?要想行,还得深入WOW64机制才行。

4、通过前面的介绍,我们大致知道无论32位还是64位,在64位Win上都是共用一套内核。其中WOW64兼容层,最核心的作用就是转换CPU模式,从32位进入64位模式,完事后再回到32位模式。
既然如此,那VB6何不直接使用这套机制,自己控制呢?若如此,VB6就可以使用64位DLL了,真正地实现32位即64位,岂不美哉?然而,个中原理也是非常复杂,并不适合广大VB/VBA人士。

5、所幸,这个世界上有人品的大牛还是大有人在。今天,笔者就给大家或介绍一款开源扩展库(wow64ext),作者是rewolf。不仅有源码,还有二进制的32位库,才9K哦。源码就不介绍了,都是汇编+
C,而且需要对WOW64机制有深入了解,才能看懂。
今天重点介绍二进制库,是VB/VBA圈子里所谓的标准DLL,可以Declare的那种。来看看都有哪些函数:X64Call、GetModuleHandle64、GetProcAddress64、VirtualQueryEx64、VirtualAllocEx64、VirtualFreeEx64、VirtualProtectEx64、ReadProcessMemory64、WriteProcessMemory64、GetThreadContext64、SetThreadContext64、SetLastErrorFromX64Call。
看见这些名字,是不是有点激动呢?赶紧去搜索、下载试一试吧,谁说VB6不能继续豪横呢!
关注BtOfficer呀,更多精彩仍在继续哦,有严肃的技术,也有轻松的唠嗑,期待你的加入!

Microarchitecture cheat sheet是为开发人员提供X86 CPU主题的概述

Microarchitecture cheat sheet是为开发人员提供X86 CPU主题的概述,并面向性能。

涉及以下主题:
流水线 Pipeline realm
算数运算 Arithmetic realm
分支预测 Branch prediction realm
加载和存储Load store realm
缓存 Cache memory realm
系统内存 System memory realm
虚拟内存 Virtual memory realm
多核 Multicore realm
多芯 MultiCPU realm
"About all realms" realm

Understanding the Linux Virtual Memory Manager

Understanding the Linux Virtual Memory Manager

32位的VB使用64位DLL

32位的VB使用64位DLL,系统本身就支持哦!

1、笔者在前几篇中讨论VB在64位Win中如何充分利用Win的兼容特性时,提到了一款开源32位DLL(wow64ext),可供VB完成诸如Hook注入64位进程、64位进程地址空间的内存分配及读写,使用64位库资源从而实现充分利用新硬件资源等。

2、在网友的提示下,笔者去看了下64位Win下32位地址空间载入的Ntdll.dll,发现有很多跟WOW64兼容层有关的函数。比如ZwWow64CallFunction64,ZwWow64QueryVirtualMemory64,ZwWow64ReadVirtualMemory64,ZwWow64WriteVirtualMemory64,ZwWow64QueryInformationProcess64等。

3、这说明,系统实际上提供了32位访问64位库的API,谁说VB死了呢!就是不知那句『32位与64位互不能加载』是何用意了?只不过,这些函数均未文档化,在官网上查不到相关函数原型。
关注BtOfficer呀,更多精彩仍在继续哦,有严肃的技术,也有轻松的唠嗑,期待你的加入!

JDK 20 / Java 20 正式 GA

JDK 20 / Java 20 正式 GA
JDK 20 / Java 20 已正式发布。JDK 20 是一个短期维护版本,将获得六个月的支持。尽管如此,但它仍然可用于生产环境中。根据开发计划,下一个 LTS 版本就是将于 2023 年
9 月发布的 JDK 21。
主要新特性包括:
-JEP 429:作用域值 Scoped Values(孵化阶段);
-JEP 432:记录类的模式 Record Patterns(第二预览版本);
-JEP 433:使用 switch 的模式匹配 Pattern Matching for switch(第四预览版本);
-JEP 434:外部函数与内存 API Foreign Function & Memory API(第二预览版本);
-JEP 436:虚拟线程 Virtual Threads(第二预览版本);
-JEP 437:结构化并发 Structured Concurrency(第二孵化版本);
-JEP 438:向量 API Vector API (第五孵化版本)

vmstat是Virtual Memory Statistics(虚拟内存统计)的缩写

vmstat是Virtual Memory Statistics(虚拟内存统计)的缩写,利用vmstat命令可以对操作系统的内存信息、进程状态和CPU活动等进行监视。但是只能对系统的整体情况进行统计,无法对某个进程进行深入分析。