自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 bitset

写在前面:LeetCode刷着题,遇到一个黑科技bitset,之前没有遇到过。bitset存储位(元素只有两个可能的值:0或1,true或false,…)。 这个类模拟一个布尔元素的数组,但是为空间分配进行了优化:通常,每个元素只占用一个位(在大多数系统上,它比最小的元素类型char少八倍)。 每个位的位置可以单独访问:例如,对于一个名为foo的给定位集,表达式foo [3]访问其第四个位,就像

2017-12-29 13:21:18 352

原创 模板的特化和偏特化以及相关理解

写在前面:主要是对于模板的特化和偏特化做一个总结以及个人的理解。为什么需要特化或者偏特化:模板为什么要特化,因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该听你的。对于一般的类模板,模板参数T是在编译的时候编译器根据你传入的参数自动生成对应的代码,这样的好处是显而易见的对于同样的处理或者同样的操作过程可以很好的封装在一个模板当中,根据传入的不同的参数具体实现对于不同的数据或者对

2017-12-28 20:32:11 1155

原创 string转换成int的几种方式

写在前面: 遇到了多次oj的题目需要将string转换为int或者将int转换为string 每次遇到都是现查,一直没有好好的总结导致总是忘记。 现在做个总结。首先是今天遇到的方式: 采用string头文件里定义的string类型转换的函数 stoi() 可以直接将string类型转换为int类型 其他一些对于string转换的操作函数如下: int stoi (const string

2017-12-27 22:52:37 18116

原创 c++循环的变种

这篇文章总结的非常之到位:http://www.cplusplus.com/reference/unordered_map/unordered_map/?kw=unordered_map忘记的时候可以看看。

2017-12-27 20:36:42 254

原创 unordered_map

写在前面:今天又遇到一个容器也就是unordered_map 一直以为map这样的容器只有multmap和map 还是自己遇见的太少了,多总结吧。用法:无序映射是关联容器,用于存储由键值和映射值组合而成的元素,并允许基于键快速检索各个元素。在unordered_map中,键值通常用于唯一标识元素,而映射值是与该键关联的内容的对象。键和映射值的类型可能不同。在内部,unordered_map中的

2017-12-27 20:16:10 23149

原创 截图软件05

QRubberBand ClassQRubberBand类提供了一个可以指示选择或边界的矩形或线条。QSystemTrayIcon ClassQSystemTrayIcon类为系统托盘中的应用程序提供图标。 现代操作系统通常在桌面上提供一个特殊区域,称为系统托盘或通知区域,长时间运行的应用程序可以显示图标和短消息。 这个类可以设定一系列和系统托盘图标的样式以及事件。 trayIcon->s

2017-12-26 21:02:04 250

原创 截图软件04

updateCheckBoxvoid Screenshot::updateCheckBox(){ if (delaySpinBox->value() == 0) {//如果延迟为0 隐藏选项被阻塞 且是不隐藏 hideThisWindowCheckBox->setDisabled(true); hideThisWindowCheckBox->setCheck

2017-12-22 20:30:06 169

原创 截图软件03

写在前面:这部分主要理解剩下的几个成员函数的作用。void Screenshot::shootScreen()void Screenshot::shootScreen(){ QScreen *screen = QGuiApplication::primaryScreen();//指针 指向当前应用程序的屏幕 if (const QWindow *window = windowHan

2017-12-22 20:11:58 389

原创 截图软件02

写在前面:这部分主要对于其他几个成员函数的理解。主要内容:void Screenshot::newScreenshot(){ if (hideThisWindowCheckBox->isChecked()) hide(); newScreenshotButton->setDisabled(true);//当前的这个按钮被阻塞 不能再次按下 QTimer::si

2017-12-22 19:25:58 243

原创 程序编译-汇编-链接的理解04-可执行文件概述

写在前面:这一节主要是对于可执行目标文件格式的理解。内容:与可重定位文件稍有不同: 1.在ELF头字段给出执行程序时第一条指令的地址,在可重定位的文件中则为0 因为可重定位文件不会被执行,所以不会给出执行代码的地址 2.多了一个程序头表,也称段头表 是一个结构数组,因为可执行文件是为了装入到存储器执行的, 程序头表就说明了这些节和段的对应关系,有些节是要装入内存当中有些不用。 3.多了一个

2017-12-18 15:21:31 287

原创 操作系统08-内存管理

写在前面:这一节主要总结关于操作系统对于内存管理方面的知识点。内容:程序的装入:绝对装入方式可重定位装入方式动态运行时装入方式绝对地址即物理地址 相对地址即逻辑地址 逻辑地址的作用是方便程序员思考 不用考虑将程序装入到那个具体的地址 只考虑任何一个小程序小模块都是从0开始编址的,至于程序到底加载到内存的那个地方程序员不考虑的 这是操作系统安排的!绝对装入方式: 逻辑地址和实际地址相同

2017-12-18 14:35:20 209

原创 程序编译-汇编-链接的理解!—03-ELF头和节头表

写在前面:这一节主要对于ELF头以及节头表进行理解。ELF头ARM的可执行文件的格式是ELF格式文件 文件的开头的几个字节通常用来确定文件的格式 这个叫做魔数。 ELF头一共占52个字节 头信息举例: Linux 里专门的软件去解析ELF头 $readelf -h 这样就将ELF头的01序列解析出来。 45H 4cH 46 分别是大写的E L F的ASCII码 头文件的最先的

2017-12-18 11:27:05 752

原创 程序编译-汇编-链接的理解02-可重定位目标文件具体包含的信息!

.bss 未初始化的变量其实就相当于占位符。 仅在节头表里说明这一节需要多少的空间,在磁盘里并不分配任何空间。 C语言规定,未初始化的全局变量和局部静态变量的初始值为0 所以不需要为其分配任何空间。 .data 已经初始化的变量中存放具体的初始值,需要占磁盘空间。 BSS Block Started by Symbol 用于为符号预留空间 ELF头显示节头表的位置 通过其就可

2017-12-18 10:56:43 378

原创 程序编译-汇编-链接的理解!

写在前面:对于程序编译汇编链接过程的理解。 涉及到程序的重定位,虚拟内存,静态链接,动态链接的概念的理解。早期程序员采用的是机器语言的编写程序。非常的麻烦。 后来采用汇编语言编写,将一些操作采用符号的方式,用符号的方式表示一些操作和跳转的位置。 无需在写程序的时候知道具体要跳转的位置,用符号表示就可以。 在链接时在对应的符号的引用处填入定义的地址!! 确定符号引用关系也就是符号的解析!

2017-12-17 15:36:18 1300

原创 截图软件01

写在前面:因为一直使用的是系统自带的截图工具,感觉使用的总是不舒服,正好想到可以使用Qt制作一个适合自己使用的截图工具,学习和使用一举两得。 不过理想和现实总是有差距的,第一步总是比较缓慢的但是是值得的。 首先我将学习Qt的一个截图样例程序Screenshot Example。代码:#include <QtWidgets>#include "screenshot.h"//! [0]Screen

2017-12-15 20:01:44 644

原创 操作系统07-动态链接库问题

先占个坑。。。。http://blog.csdn.net/heyabo/article/details/8721611

2017-12-14 20:51:14 290

原创 算法总结01-递归

枚举:子问题横向同类的 递归:逐级分解,纵向分解 同类的。 直接调用,间接调用。 递归三要点:递归式,递归出口,界函数。 递推公式 递归终止条件 注意栈的溢出问题,递归过深。可以考虑使用全局数组或者动态分配数组。自相似性 增补一圈,有效的保证不管在边界上还是在内部操作都是一样的。 对于迷宫问题下一步的走法枚举的程序实现: 用to这个数组去设置四个方向。 需要记录方向值f 如何

2017-12-13 18:56:51 309

原创 操作系统06-临界区

交错输出的 没有绝对情况的 如果同时访问共享的数据可能会破坏数据。 对这样的事情加上防范! 并发的程序访问共享的数据一定要注意。 对一些问题敏感的洞察生产消费者问题: 生产者往缓冲区放东西 消费者从缓冲区拿东西 ++ – 切换的可能 count++ 在汇编指令拆分为: register1 = count register1 = register1 + 1 count = r

2017-12-13 16:23:41 302

原创 操作系统学习05-内存

内部碎片:等大的固定分区 由于被装入的数据块小于分区大小,从而导致分区内部有空间浪费外部碎片:动态分区 所有分区外的存储空间变得越来越多的碎片,这和前面所讲的内部碎片正好相对。压缩:克服外部碎片的一种方式 操作系统不断的移动进程,使得进程在所有空闲的空间上连城一片。 压缩的难点在于这是一个非常费时间的过程,并且非常占用处理器的时间。 并且需要动态重定位的能力,将程序从一片区域移动到另一片区

2017-12-12 16:46:50 166

原创 new delete mallco free 的深刻理解

new delete mallco free 的深刻理解首先理解 c语言的mallco和free 函数原型: void* mallco(long NumBytes)该函数分配了NumBytes 个字节的内存空间并返回指向这块内存空间的指针 函数的参数是要分配的字节的长度 一般用sizeof函数求一下 所以mallco只知道要分配多少的字节 不知道分配的是个怎样的数据类型!!! 所以mallco

2017-12-12 10:43:28 284

原创 oj问题

OJ 系统 输入输出 格式问题 常见的输入格式: 预先不知道输入数据的组数 读到文件结尾 预先知道输入数据的组数 先读入数据组数然后循环读入数据 只有一组数据预先不知道多少组数据while(cin>>a>>b){ cout << a+b << endl;}预先知道多少组数据cin >> n;for(int i=0;i<n;i++){

2017-12-11 12:04:51 461

原创 单列模式理解笔记

单例模式/** * 对象的实例化方法,也是比较多的,最常用的方法是直接使用new,而这是最普通的,如果要考虑到其它的需要,如单实例模式,层次间调用等等。 * 直接使用new就不可以实现好的设计好,这时候需要使用间接使用new,即getInstance方法。这是一个设计方式的代表,而不仅仅指代一个方法名。 * *//** * 1. new的使用: * 如Object _object =

2017-12-11 12:03:50 147

原创 c++强制类型转换笔记

强制类型转换类型转换是有风险的! 损失精度 越界 。。。 类型转换运算符 老的类型转换的方式: 类型转换操作符(type conversion operator)是一种特殊的类成员函数, 它定义将类类型值转变为其他类型值的转换。转换操作符在类定义体内声明,在保留字 operator 之后跟着转换的目标类型。 T1::operator T2() [const];   //T1的成员函数

2017-12-11 12:02:37 228

原创 作用域生存周期理解笔记

作用域 生存周期 存储位置 作用域是一个变量所作用的位置 生存周期是一个变量存在的时间 存储位置是一个变量存储的位置代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的。 数据区:存放已初始化的全局变量、静态变量(全局和局部)、常量数据。 BBS区:存放的是未初始化的全局变量和静态变量。 栈区:由编译器自动分配释放,存放函数的参数值、返回值和局部变量,在程序运行过程中实时分配和释

2017-12-11 12:01:14 151

原创 函数对象

函数对象一个类重载了圆括号运算符() 则该类的对象就成为了函数对象 一般只有函数和函数指针后面会跟圆括号 而这里是一种新的形式 看上去像是一个函数调用 但是这是一个对象 什么样的形参才能和函数相对应呢? 函数指针 注意函数指针的优先级问题 加上小括号表示为指针实参可以是一个临时变量或者对象 可以没有名字 因为只起一个给形参传递值得作用 形参有名字就可以了函数对象 作用很有意思 解决了函数

2017-12-11 11:59:00 150

原创 c++ STL笔记2

vector 头文件 #include 自动调节长短的数组 动态数组!!!。动态增容 元素在内存连续存放。 随机存取任何元素都能在常数时间完成。 在尾端增删元素具有较佳的性能(大部分情况下是常数时间)。 了解时间复杂度是怎么样的!!!!!!!!!!!!! 迭代器是随机访问的迭代器 支持通过下表随机访问

2017-12-11 11:53:26 335

原创 C++ STL笔记

STL 标准模板库简单地说就是使用模板的程序设计法。 将一些常用的数据结构(比如链表,数组,二叉树)和算法(比如排序,查找)写成模板,以后则不论数据结构里放的是什么对象,算法针对什么样的对象,则都不必重新实现数据结构,重新编写算法。标准模板库(Standard Template Library) 就是一些常用数据结构和算法的模板的集合。容器 迭代器 算法容器:可 容纳各种 数据类型 的通用数据结构

2017-12-11 11:46:58 172

原创 c++string类

string 类自身就是模板类 字符串处理 都要用到 不提供以字符和整数为参数的构造函数 string error1 = ‘c’; // 错 初始化 可以将字符赋值给string对象 string s; s = ‘n’; 成员函数 length() 获取string对象的长度 支持流读取的运算符>> 支持getline() 支持对象之间的赋值 成员函数assign() 复制

2017-12-11 11:45:15 234

原创 c++模板笔记

类模板:将一些数据类型 统一的表达 对类进行抽象 元素的类型是不同的 其他是相同的 在定义类的时候给他一个班或多个的参数 参数表示不同的数据类型 C++的类模板的写法如下:template <类型参数表> lass 类模板名{成员函数和成员变量};类型参数表的写法就是: class 类型参数1, class 类型参数2, …将类模板 先实例化为一个指定数据类型的类

2017-12-11 11:43:31 125

原创 操作系统04-CPU调度

平均等待时间先来先服务 FCFS 最短作业优先的调度算法 分:抢占式 最短剩余时间优先SRT 非抢占式 最短作业优先SPN调度的依据是进程将来在CPU上消耗 的时间,并期望用时最短的进程优先运行。 条件就是预测估算(统计过去)怎么去预测?优先级调度将调度的参数归一到一个优先级 优选级低的可能被饿死 根据时间改变优先级时间片轮转法 每一个进程最多运行时间片长的时间 超过

2017-12-11 11:38:17 179

原创 操作系统03 进程与线程

整型信号量 s 大于0 可用小于0不可用 p操作 wait原语句 v操作 signal 忙等待 保持关门状态 -1 优点:实现简单 原子操作 不允许中断 boot 引导进程控制块pcb 数据结构 结构体 保存状态 是为了恢复状态 切换回来之后 进程的感觉是没有任何变化 还是占据cpu这些构成队列 再进程调度的时候涉及队列 就绪队列 设备队列 每一个设备每一个io都有一

2017-12-09 22:48:38 186

原创 c++学习总结2

lambda 表达式:用法类似一个函数捕获列表参数列表函数体返回值如果e是一个可调用的表达式,那么e(参数)就可以将其调用。 可调用的对象:函数,函数指针,重载了函数调用运算符的类以及lambda表达式。 一个lambda表达式具有:返回值类型,参数列表,函数体,但是与函数不同,lambda表达式可以定义在函数的内部。 lambda表达式可以出现在一个函数当中,使用其局部变量,可以通

2017-12-09 16:31:56 117

原创 操作系统学习02

互斥 :当一个进程在临界区访问共享资源的时候,其他的进程就不能进入该临界区访问任何资源。 原子操作:一个或者多个指令序列,不可中断,对外不可分。 临界区:同一时间只能有一个进程在这段区域中运行。 死锁:两个或者多个进程都在等待对方做完某件事而不能继续执行,也就是相互等待对方。 活锁:两个或者多个进程为了响应其他进程的变化而持续改变自己的状态,但不做有用的工作。 竞争条件:多个进程或者线程在

2017-12-09 15:48:50 106

原创 linux 笔记

在命令行下可以写一个程序,组合很多的命令来完成一项任务,这就叫脚本。——有意思rm 删除文件夹或者文件 boxes命令 https://www.toutiao.com/a6289615732579205378/ apt-get,是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统Advanced Package Tool,又名

2017-12-08 23:54:27 132

原创 JavaScript 实战3

下面是事件部分:let schCompModel = undefined;//存储选择的器件let schCompModelCopy = undefined;//存储的拷贝let schState = {//元器件元素的状态 原始状态0,被放置的状态1,移动状态2 none: 0, placing: 1, moving: 2,};//statement structure 状态的结

2017-12-05 20:00:20 187

原创 JavaScript实战02

// jQuery不支持直接创建svg图形,定义一个函数来创建svg图像对应的jQuery对象。var ns = 'http://www.w3.org/2000/svg';var $s = function (str) { return $(document.createElementNS(ns, str));}// 使用方法形如 $s('rect').a().b()...;append

2017-12-05 16:34:08 201

原创 JavaScript问题与总结

写在前面:最近课程大作业需要用到前端的语言去编写一个基于网页的电路连线软件。 在做这个大作业的过程中会用到很多的前端知识,无论是JavaScript,css,HTML还是到各种热门的前端库都基本上从零学起。不过好在这些东西都不是特别难理解和运用。在这里就将接触到的知识做一个总结。 createElementNS这个函数具体用法如下所述: 使用具体的命名空间URL创建一个元素和合法的名字。

2017-12-05 10:18:14 311

原创 Leetcode 题目整合01

写在前面:最近一直在做一些LeetCode的题目,我之前一直是将每道题我的答案和想法以及别人优秀的答案都整合在一起然后上传的GitHub上,但是我发现这样做自己还是很难去经常复习,尤其最近发现很多之前遇到的问题再次发生。所以很有必要对一些阶段性的问题进行归纳和总结。今天遇到的是这样的题目: 题目非常的简单,就是要求输入整数的对应二进制序列的1的个数,要求o(n)的时间复杂度和o(n)的空间复杂

2017-12-04 19:16:13 172

原创 操作系统学习之路01

将概念简单化。 在变写程序的时候最重要的是要将大脑思维进行变换。并行程序设计。细节。心理准备。有几个操作系统? 平台性是操作系统的一个重要的特性。 管理硬件和资源。操作系统的协调。 操作系统像是计算机上工作的政府。解决冲突。控制器。 什么样的操作系统是个好的操作系统。 公平,是操作系统的核心概念。有小的调度。 效率,高效。 稳定,安全。 操作系统是个软件是个程序 是个媒介。 一

2017-12-03 22:18:27 174

原创 c++学习总结一

详见:http://blog.csdn.net/jinjie_ing/article/details/42741771 静态常量与非静态常量的区别 在创建对象的时候,需要每个成员变量(非静态)开辟内存空间,类变量(静态变量)则是在类加载的时候就创建好了。 用static修饰过的常量会存到常量池里面。存入的方式是:先到常量池里面寻找,看是否该常量已经存在,如果存在返回该常量的引用,不存在就在常量

2017-12-02 22:01:27 182

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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