自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 机制:地址转换

操作系统在实现对CPU的虚拟化时,采用的是受限直接执行机制(LDE)。LDE的目标是让程序大部分指令直接访问硬件,只在一些关键时机例如进程发起系统调用或者时钟中断时由操作系统介入来确保进程能够继续正确运行,这样可以实现操作系统对进程调度的高效性与可控性。在实现了高效的调度与控制之后,操作系统需要考虑的就是进程之间的安全性,也就是确保进程彼此之间的内存不会被相互影响,这就是对内存的虚拟化。当今,操作系统虚拟化内存的方式就是给每个进程分配一块独属于它的内存空间,每个进程只能访问自己的内存,无法访问超出自己内存的

2020-06-06 20:26:01 77

转载 Ubuntu镜像名称解释

原文地址:http://www.lupaworld.com/article-216888-1.htmlUbuntu镜像名称解释例如阿里源中ubuntu的镜像前面的Footer 和 Header 的Html 文件不用管它,这是非官方镜像特有的,是官方镜像页面的美化文件。MD5SUMS 是md5 校验表,SHA1SUM /SHA256SUMS 性质一样只不过不同方式。打开之后大概是(MD5SUMS 为例):fa0893ffe2188a6daf918791cdccb480 *ubuntu-12..

2020-06-06 11:26:13 243

原创 抽象:地址空间

早起的操作系统其实只是一组函数(一个库),是在内存中运行的一个运行的程序,例如下图: 其中的0-64KB,属于操作系统,包括代码、数据等等,64KB之后的属于运行中的进程;后来,随着计算机的不断发展,人们开始想方设法的更有效率的使用计算机,也就是进入了多进程时代(multiprogramming),当时等等多个进程在给定时间内运行,例如当有进程在等待I/O,那么操作系统就会将CPU交给其他进程,这样可以让CPU被充分的使用。后来,人们使用的...

2020-06-04 22:03:46 54

原创 调度:比例份额

操作系统有一个非常有趣的调度程序,比例份额调度(proportional-share),也被称为公平份额调度(fair-share)。比例份额基于一个简单的想法:调度程序的最终目标,就是为了给每一个进程获得一定比例的CPU使用时间,而不考虑周转时间与响应时间。比例份额调度有一个很优秀的例子,由Waldspurger和Weihl提出的彩票调度,顾名思义,就是让进程像彩票一样分配占用时间,哪个进程中奖就能获得更多的占用CPU时间,更越活越的进程,也就得到更多的抽奖机会。首先,彩票调度中彩票数代表进程占用资源

2020-06-03 22:04:23 81

原创 C++构造函数使用memset初始化可能导致的问题

今天在写代码的时候突然遇到一个中断问题,但是光看代码根本发现不了错误,代码大概类似于:typedef struct MemsetTest{ int year; map<int,string> m_map; MemsetTest() { memset(this , 0 , sizeof(MemsetTest)); }}MemsetTest;int Main(){ MemsetTest tTest; tTest.year = 2020; tTest.m

2020-06-02 19:34:22 121

原创 Ubuntu下安装VSCODE

方式一:应用中心安装首先在ubuntu桌面找到应用中心打开在软件中心中,搜索Visual Studio Code当然上面是理想情况,这种图是我在网上搜的。。。我自己的应用中心并不能搜索到VSCODE能找到就在页面中直接选择安装方式二:安装包安装1. 从vscode官网下载最新版本,deb包下载地址:https://code.visualstudio.com/docs?dv=linux64 当然由于是外网,可能下载速度极慢,这是我下载后上传到百度云的链接,官网下载..

2020-05-30 20:02:59 130

原创 调度:多级反馈队列
原力计划

多级反馈队列(Multi-level Feedback Queue, MLFQ)是有Corbato在1962年提出的,用于兼容时分共享系统。现在其经过多年的优化,已经被应用于很多现代操作系统中。多级反馈队列是为了解决两方面问题。一:优化周转时间。在之前的进程调度中曾经提及过,这需要通过有线执行短工作来实现,但是问题是很少有进程可以在一开始就能正确预测它的工作要运行多久。第二个问题是降低响应时间,这可以通过时间片轮转等方法实现,但这些策略的周转时间却很差。所以出现了多级反馈队列,多级反馈队列是使用历史经验来预

2020-05-30 14:46:44 104

原创 操作系统的进程调度

一、定义调度策略的准备操作系统具有底层的机制与上层的调度策略,低层级制例如上下文切换已经在上一篇文章中有所了解,那么上层的策略调度又是什么呢?首先,我们如果要定义一种调度策略,自然首先要思考策略的运行环境以及调度指标。策划你的运行环境就是策略在执行期间会出现的情况,例如:1. 每一个进程开始执行的时间2. 每一个进程持续执行的时间3. 执行中的进程是否会出现空转等待的情况4. 在调用进程之前操作系统是否就能确认进程的相关信息。。。。。。等等,这些都是操作系统为进程制定策略之前需要

2020-05-29 21:54:48 98

原创 操作系统机制之受限直接执行

受限直接执行(limited direct execution)是操作系统的关键底层机制之一,其目的就是让用户想运行的程序在CPU上运行之前,首先确保设置好硬件,以便在没有操作系统帮助的情况下限制进程可以执行的操作。直接执行操作系统会以时间片轮转的方式让多个进程共享CPU,来实现虚拟化。但是,在执行这个机制时存在一些问题。第一个是性能:如何在不增加系统开销的情况下实现进程间的切换?第二个是如何在运行其他进程的同时保留自身对CPU的控制权?控制权对于操作系统尤为重要,因为操作系统要负责资源的管理.

2020-05-26 22:04:24 83

原创 VM报错”找不到可以连接的有效对等进程”

晚上给电脑新装了两条内存,然后打开电脑运行虚拟机就出错,提示就是这样的一个提示,然后我就根据经验,删掉了对应系统文件夹里的所有 .lck 文件,以往遇到虚拟机的问题有几次这样操作就能行,但是这次删了还是不行。。。。于是上谷歌,搜了一下发现网上的回答大概分为两种,1.macOS 安全管理控制的问题;解决办法就是:系统偏好设置 -》安全性与隐私-》通用-》 会有vm的提示 点击 允许。重新打开vm。我是windows 这条略过;2. 虚拟机的系统驱动有问题;自写脚本卸载虚拟机的驱动.

2020-05-25 20:47:27 566

原创 操作系统抽象之进程

一、进程的概念首先思考一个问题:CPU的核心数是有限的,那么在运行远超过CPU核心数数量的程序时,操作系统是如何实现CPU核心数仿佛无限的假象的?当然是通过虚拟化CPU来实现,也就是让一个程序只运行一个时间片,然后切换到其他程序,通过高速的上下文切换来伪造一种多个CPU的假象,这也就是时分共享(time sharing)的CPU技术。这种行为潜在会造成一些性能的损失,也就是不停切换时耗费的COU性能。CPU的虚拟化想要实现,操作系统需要一些低级机制与高级技能。机制是一些低级方法或协议,用于实现所

2020-05-21 22:34:30 63

原创 操作系统简史

操作系统(Operating System,OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。早期的操作系统:库一开始,操作系统并不像现在的操作系统,它只是一些库,甚至可以说是一堆函数。它们的作用只是为了让程序员可以远离对类似于低级I/O处理的重复代码,而是让OS这个库来为程序员提供接口,进而减少程序员的工作。当时,在那些古老的大型机系统上

2020-05-20 21:41:36 59

原创 Python基础 - matplotlib绘图库

Matplotlib是一个强大的Python绘图和数据可视化的工具包,极其适用于与NumPy一同使用。Matplotlib通过 plt.plot() 进行绘图,通过plt.show() 显示图像线条风格linestyle或ls 描述 ‘-‘ 实线 ‘:’ 虚线 ‘–’ 破折线 ‘None’,’ ‘,’’ 什么都不画 ‘-.’ ...

2020-05-19 19:52:10 92

原创 steam如何搜索免费游戏

最近朋友圈好多人在说Epic免费送游戏的事,这周送的是GTA5,我没买过这个游戏,也没去Epic上领,但是看到Epic免费送游戏我就想到一个问题,既然Epic会免费送游戏,那作为竞争对手steam不可能没有可以白嫖的机会才对,于是上网搜了一下,果然,steam也是经常有免费送的游戏的,但是这些游戏在免费栏里面还不显示。。。。于是在网上查了一下相关操作:首先,打开这个网站:https://steamdb.info/SteamDB作为最重要的第三方steam数据平台之一,提供了大量steam相关的有

2020-05-18 20:59:54 386

原创 CPropertyPage 的切换焦点问题
原力计划

最近收到一个需求,在一个使用 CPropertyPage 与 CPropertySheet 的属性页上,切换到最后一页的时候将焦点设置在摸个特定控件上,便于使用者直接通过键盘完成整套操作,大概情形就是下面这样:当前执行到了最后一页,但是CPropertySheet 的默认焦点会在第一个按钮上,也就是图中的上一步,而我的需求是将其设置在完成上;刚接到这个需求的时候我以为很简单,惯性思维就...

2020-04-28 19:55:13 87

翻译 _purecall & _get_purecall_handler &  _set_purecall_handler

原文:https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/reference/purecall?view=vs-2019一、_purecall默认纯虚拟函数调用错误处理程序。当调用纯虚拟成员函数时,编译器生成调用此函数的代码。语法C复制extern "C" int __cdecl _purecall();备注...

2020-04-23 16:33:14 89

原创 Python基础 - NumPy数组

一、多维数组Python提供的基础数据结构列表、元组等都是可以看做简单的一维数组,那么用到多维数组时该如何处理呢?因为当前的结构中的每个元素都是不限类型的,而每种结构也是一种类型,那么理所当然可以想到将基础数据结构嵌入到基础数据结构中得到多维数据结构:二、NumPyNumPy是Python的一个扩展程序库,支持大量的为读书族与矩阵运算,并且针对数组运算提供了大量的数学函数库。...

2020-04-22 21:45:28 137

原创 Python基础-集合

集合(set)是一个无序的不重复元素序列。集合也是使用{}创建,还可以使用set()创建,如果创建一个空集合必须使用set,防止与字典混淆:集合与数学中的集合概念一致,可以进行数学集合运算,包括交、并、差等:集合可以通过add updata 来添加元素,通过remove discard pop 操作来移除元素:此外集合还有一些方法:方法 描述 clea...

2020-04-21 22:11:23 45

原创 Python基础-字典

字典(dict) 就是可以按照键值存储的数据字典,是一种可变序列。列表的对象是有序且可排序的,而字典对象无需且不可排序。其中值是可变的,键是不可变的,同一个键在赋值两次后会由后一次赋的值覆盖前一次赋的值;字典含有的方法:com 比较(python2独有)len 求长str 输出字典可打印的字符串type 返回类型字典函数:序号 函数及描述 ...

2020-04-21 21:57:00 59

原创 C++函数指针在回调函数中的使用
原力计划

一、函数指针的定义函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针指向的是函数,其实与用指针指向变量一样。在代码编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向这个函数地址的指针变量后,可用该指针变量找到函数的地址进而调用函数。代码实例:需要注意的数定义函数指针时的括号不可以省略,例如://pfadd 是一个指向函...

2020-04-21 20:47:26 118

原创 Python基础-列表

列表 list :任意对象的集合列表的操作与元组很像,但是列表比元组更为强大;列表定义使用中括号,取值方式与元组相同:除了元组的特性之外,列表可以通过方法进行添加操作:删除操作:列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表:列表还支持元组所具有的方法与函数:包括len max min list count in...

2020-04-20 22:15:27 50

原创 Python基础-元组

一、元组 tuple元组是一种高级数据结构,但是使用及其简单,如果有其他编程语言基础的话,可以将其理解为一个无类型的数组可以看到,我定义了一个名为tuple1的元组,其中有三个元素,分别为2, 9.9, this is tuple,tuple1的类型为tuple,并且这三个元素分别为不同的类型:另外还可以不使用括号,直接通过逗号分隔元组的多个元素:...

2020-04-20 21:47:04 48

原创 C++中的using关键字

using一直都是关键词,但是C++11对其赋予了新的功能。using在C++11之前主要用于名字空间、类型、函数与对象的引入,实际上是去除作用域的限制。常用如:using namespace std; //引用命名空间using std::iostream; //引用类型using std::to_string; //引用函数using std::cout;//引用对象...

2020-04-19 15:02:22 197

原创 STL六大组件

STL提供六大组件,彼此可以相互套用:1、容器(Container)各种数据结构,包括Vector、list、deque、set、map等等,是日常使用中比较常用的部分 容器 特性 所在头文件 向量 vector 可以用常数时间访问和修改任意元素,在序列尾部进行插入和删除时,具有常数时间复...

2020-04-19 11:20:40 67

原创 读写锁的递归死锁问题

多线程中不可避免的会用到锁,进一步也会接触到读写锁的存在;读写锁与互斥量类似,但读写锁允许更高的并行性。其特性为:写独占,读共享;读写锁非常适合于对数据结构读的次数远大于写的情况,合理运用可以有效地对锁降级,提高程序效率;最近在程序中遇到一个死锁问题,耽误了我将近一整天时间,最后发现是由于读写锁的递归使用导致的死锁问题,读写锁的递归导致死锁其实早在说明中就提到了,可惜当初看到时没能理解;...

2020-04-01 18:55:25 199

原创 Windbg调试学习

一、为什么学习使用Windbg调试Windbg是在windows平台下,强大的用户态和内核态调试工具。相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能,却比VS更为强大。它的另外一个用途是可以用来分析dump数据。(以上截取自百度百科,其实说白了就是因为工作中用到了才学习的。。。。。)二、windbg的环境配置参考...

2020-03-31 19:51:04 77

转载 Protobuf3语法详解

原文地址:https://www.cnblogs.com/tohxyblog/p/8974763.html参考文献:https://developers.google.com/protocol-buffers/docs/proto3?hl=zh-cn定义一个消息类型先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所...

2020-02-03 10:35:35 192

转载 SFML基础

原文地址:https://www.cnblogs.com/karl07/p/10285692.html(1) 窗口和交互创建一个新窗口:sf::RenderWindow window(sf::VideoMode(500,500),"new window");但是光创建一个窗口并不能显示还要加一个循环 while (window.isOpen()){ ...

2020-01-05 16:38:14 672

原创 SFML初学-俄罗斯方块实现

偶然看到大神使用 SFML 制作游戏,简单学习了一下这个库的使用并且仿照YouTube上大神的思路做了一个俄罗斯方块,目前只实现了出现方块、消除方块的功能,随着慢慢学习一点点继续修改吧;资源:源码:/****************************************************************************** Copyr...

2020-01-05 16:34:02 806

转载 C++中的#,##,和"

原文地址:https://blog.csdn.net/mzlogin/article/details/40957939本文主页链接:C++中的#,##,和"想要灵活应用宏,离不开#和##。"在学习#和##之前,先来看一个关于"的例子:#include <stdio.h>#include <string.h>int main(){ c...

2019-08-08 18:57:54 1181

原创 类中成员变量的创建与回收顺序问题

直接上代码,一共三个类:#pragma onceclass CVar{public: CVar(void); CVar(int nNum); ~CVar();private: int m_nNum;};#include "stdafx.h"#include "Var.h"CVar::CVar(){ cout << "空var" <&l...

2019-07-21 22:06:14 263

转载 性能测试工具VTune的功能和用法介绍

原文地址:https://blog.csdn.net/WY_stutdy/article/details/791065011.VTune介绍VTune可视化性能分析器(Intel VTune Performance Analyzer)是一个用于分析和优化程序性能的工具,作为Intel为开发者提供的专门针对寻找软硬件性能瓶颈的一款分析工具,它能确定程序的热点(hotspot),找...

2019-07-19 17:03:06 371

原创 win10下VWMare安装Ubuntu

一、安装首先Ubuntu和虚拟机下载地址:链接:https://pan.baidu.com/s/1xVFN4Wve5BxW46XMGazQ9Q提取码:v529里面包含ubuntu-18.04.1-desktop-amd64.iso和VMware-workstation-full-14.1.3-9474260.exe安装好虚拟之后选择1.创建新的虚拟机2.向导:自定...

2019-07-13 11:01:33 169

原创 win10linux子系统Ubuntu使用问题记录

1.子系统所在目录为:C:\用户\【你的windows用户名】\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs2.执行命令sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup...

2019-05-11 21:49:45 822

原创 win10自带的linux子系统安装使用----Ubuntu

最近公司的一个项目用到linux(Ubuntu)系统,但是之前我电脑上虚拟机里只装了win7和centOS,所以打算再装一个Ubuntu,在闲逛的时候发现,win10居然已经支持了自带的linux子系统,就是一个自带的虚拟机,看着占着一大坨内存的VMware我不禁陷入了沉思。。。。其实虽然我在win10刚出不久就升级了win10,但是也一直没研究过win10的特性,enmmmmm感觉自己错过了一个...

2019-05-10 21:59:36 5481 2

原创 C++事件SetEvent,ResetEvent的使用

一、概念创建事件:HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // SECURITY_ATTRIBUTES结构指针,可为NULL BOOL bManualReset, // 手动/自动 // TRUE:表示手动,在WaitFo...

2019-04-09 22:13:15 4674 5

原创 PTA 最大子列和问题

01-复杂度1最大子列和问题(20分)给定K个整数组成的序列{N​1​​,N​2​​, ...,N​K​​},“连续子列”被定义为{N​i​​,N​i+1​​, ...,N​j​​},其中1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最...

2019-03-17 20:07:15 271 2

原创 二分查找法

二分法是个很基础的算法,其实现过程是:在有序列表中,取中间的记录作为比较关键字,若给定值与中间记录的关键字相等,则查找成功;若给定的值小于中间记录的关键字,则在中间记录的左半区间继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区间继续查找;不断重复这个过程,直到查找成功。否则查找失败。在二分查找中,最好的情况是要查找的目标正位于中间位置,在第一次被找到;最坏的情况是从开始一直找到最后...

2019-03-17 20:04:08 45

转载 Skin++使用详解-使用方法及注意事项

原文地址:http://www.cnblogs.com/zwh0214/p/6102942.html一. Skin++使用方法SkinPPWTL.dll、SkinPPWTL.lib、SkinPPWTL.h,将三个文件及相应皮肤(.ssk)拷贝至工程文件夹下1.加载Skin++1).在工程stdafx.h文件中加入#include "SkinPPWTL.h"//..#...

2019-03-16 17:00:43 2523

原创 C++ Primer 第五版第十章习题答案

书籍版本:2019年9月第一版;王刚 杨巨峰译;电子工业出版社编译器 : win10  && VS201510.1#include "stdafx.h"#include <iostream>#include <string>#include <vector>#include <list>using namesp...

2019-01-20 18:07:51 395

提示
确定要删除当前文章?
取消 删除