自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛吃草问题

1、概述最近碰到一个面试题,讲的是牛吃草的问题,当时时间短,脑袋出现了短路,没有给出答案。回来特意查了一下答案,发现了一篇比较好的文章,现在重新抄写一份,用以加深印象。1、牧场上有一篇匀速生长的草地,可供27头牛吃6周,或者供23头牛吃9周,那么它可供21头牛吃几周?要求不列方程式~先思考:这个问题的难点在于,草的总量每天都在变,时间越长,草的总量就越多。草的总量是由2部分组成:某个时间期限前草场上原有的草量;这个时间期限后草场每天生长而新增的草量。结题:假设 1 头牛每周吃的量为 1份,则23

2021-09-01 19:35:31 802 4

原创 C++ Mutable

1、mutable 含义及常规使用mutable 英文中表示,易变的,不定的;性情不定的,而在代码中表示 可变数据成员。由前面整理的 const详解 知道,由const修饰的成员函数中,不能对成员变量进行修改,因为隐藏的形参是 const 属性的。而实际开发过程中,我们可能需要对某些成员变量进行修改,就需要用到 mutable。class constA{public: constA(int a):m_a(a){} void funcA() const { cout << ++m_

2021-08-04 20:34:56 6896

原创 进程内存中堆和栈的区别

1、概述在整理数据结构时,整理过栈、队列和堆,但是在学习进程分布的时候又碰到了 栈和堆,初学时很容易把这几个概念给弄混,今天有空就给整理一下。2、程序在内存中的分布程序在内存中的分布如下图所示:1、栈(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈,先进后出的原则。2、堆(heap):由程序员手动分配释放,若不释放,在程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式类似于链表(内存池)。3、未初始化数据:未初始化的全局变量和

2021-04-14 20:27:17 1944

转载 安装VC++2015运行库时出现0x80240037错误(JT预览报错)

【JT预览报错】原因是缺少C++2015运行库。【安装VC++2015运行库时出现0x80240037错误】原因是windows7系统缺少Windows6.1-KB2999226-x64.msu补丁包。JT预览报错图如下:安装VC++20...

2020-08-07 15:48:15 5026

原创 netstat 的详解

1、概述最近在调试一个网络方面的程序,用到了netstat感谢大家,我是假装很努力的YoungYangD(小羊)。参考资料:https://baike.baidu.com/item/Netstat/527020?fr=aladdin

2020-08-07 15:09:00 5787

原创 Beyond Compare许可证密钥已被撤销的解决方案

一直使用Compare ,都已经习惯了,之前使用没有什么问题,最近使用经常出现以下的错误提示:没办法问度娘吧~ 没有找到一劳永逸的解决方案,暂时只有下面的解决方案,每个人都需要进行一次操作(其实有点像重新安装)。现在整理以下,以后使用还好找。解决方案:1、打开目录:C:\Users\Administrator\AppData\Roaming\Scooter Software\Beyond Compare 3,将该目录下的文件全部删除。2、回到桌面,双击Beyond Compare3 图标。3

2020-08-06 15:01:56 799

原创 nginx默认端口80被占用(报错bind() to 0.0.0.0:80 failed)的解决办法

1 概述最近在用OpenResty写一个服务器,在自己电脑上没有出现问题,在布置时出现了bind() to 0.0.0.0:80 failed 的错误。上网查阅资料,知晓是默认端口80被占用,根据占用的情况不同又分为了3中解决办法。1.1 普通程序或服务占用1、按键盘 WIN + R 打开运行界面,输入cmd,确认,打开管理员界面2、输入 netstat -aon | findstr :80查找端口占用情况,找到提示占用的端口号0.0.0.0:803、输入 tasklist|findstr “

2020-06-30 15:49:29 7730 1

原创 浮点数在内存中的存储

1、IEEE浮点标准根据IEEE的标准,任意一个浮点数V可以用下面的公式来表示:V = (-1)s * 2e * Ms – 符号,决定是正数还是负数E – 阶码,对浮点数的加权,权重是2的E次幂(可能是负数)M – 尾数,一个二进制小数,它的范围是0至1,或者1到2(后面进行说明)将浮点数的位划分为三个段,分别对应上述公式中的3个变量。s位一个单独的符号位k位的阶码字段 exp,用来编码En位小数字段 frac,用来编码M,但编码出来的值也依赖阶码字段是否等于0从上图可知:单

2020-05-15 15:59:33 246

原创 存储器层级结构

1、概述存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。每一层于下一层相比都拥有较高的速度和较低延迟性,以及较小的容量。存储器层次结构,对应用程序的性能有着巨大的影响。理解系统是如何将数据在存储器层次结构中上下移动,可写出更符合系统运行的应用程序,运行更快。2、存储器的层次结构存储器的层次结构图如下所示:从顶层往底层走,存储设备变得更慢、更便宜和更大。在最高层L0,是少量快速的CPU寄存器,CPU可在一个时钟周期内访问它们。接下来是一个或多个基于SRAM的高速缓存,可在几个时钟

2020-05-13 18:36:56 4441

原创 虚拟内存

1、概述转眼到了 6 月底,最近学习出现了懈怠,书看的少了,有的书只翻了开头又放下了,博客中对知识的梳理也慢慢的减少了。一来是因为最近感觉压力比较大,二来确实是思想出现了松动,最近意识到了这个问题,需要把该读的书继续捡起来读,知识还是继续进行梳理,坚持努力的前行。好了咱们言归正传,最近几篇文章对虚拟内存进行一个整理。为了更加有效的管理内存并且减少出错的可能,现代系统提供了一种对主存的抽象概念,...

2020-05-13 18:30:56 593

原创 半导体存储器

1、概述用半导体集成电路工艺制程的存储数据信息的固态电子器件,简称半 导体存储器。它由大量相同的存储单元和输入、输出电路构成。每个存储单元有两个不同的表征态“0”和 “1”,用以存储不同的信息。同磁性存储器相比,半导体存储器具有存取速度快、存储容量大、体积小等优点。2、分类半导体存储器通常按功能分为 只读存储器 ROM(Read Only Memory)和 随机存储器RAM(Random Access Memory)。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据

2020-05-12 18:52:27 1568

原创 TCP 连接的建立和终止

1、概述网络开发中,你怎么也不会避开TCP协议,而且面试中这个也是一个基础问题。总的来说 TCP 的建立分为三次握手,而 TCP 的终止则需要四次挥手。2、TCP的建立(三次握手)建立一个 TCP 连接时会发生以下情形。1、服务器端必须准备好接受外来的连接。通常通过调用 socket、bind 和 listen 这3个函数来完成,我们称为被动打开(passive open)。2、客户端通...

2019-06-21 00:02:50 421

原创 忘记虚拟机中 ubuntu登录密码的解决办法

最近工作又使用到了虚拟机,但是我的虚拟机因为长时间的不登录,已经忘记了密码,尝试了好多密码但是不成功。因为虚拟机中环境都已经布置好了,不想在重新布置一遍,所以就想到进入 root,修改密码。这里对整个流程进行整理,以后忘记密码,直接按照这个教程来搞定~1、重新启动 Ubuntu 系统,同时长时间按住(或连续点击) Esc 键,进入 GRUB 菜单,如下所示:2、选择 “Advanced O...

2019-06-04 21:11:10 13469 19

原创 C++ 继承关系及其深层含义

1、概述C++ 中的继承可以是单一继承或者多重继承,每一个继承连接可以是 public,protect 或 private,也可以是 virtual 或 non-virtual。但是这些继承方面的关系是怎么的?选择使用哪一种继承时的标准是什么?我们总是给忽略掉,前面我们整理了一部分 virtual 和 non-virtual 继承注意事项 ,今天在整理另一部分。2、确定 public 继承是 ...

2019-06-04 20:38:41 936

原创 C++ 继承关系的作用域 和 注意事项

1、类继承关系的作用域我们都知道在如下的代码中:int x; //全局变量void someFunc(){ double x; //局部变量 std::cin >> x; //读取一个新值赋予 local 变量 x}同名的 x 变量,作用域不同,而根据 C++的名称遮掩规则:内层作用域的名称会遮盖外层作用域的名称。,在赋值语句时,涉及的是局部变量 x。如...

2019-05-31 21:11:30 650

原创 C++ 模板与泛型编程

1、概述前面对 STL 和泛型编程进行了整理,但还是有一些细节需要进行整理。1.1、 隐式接口和编译器多态对于 多态 和 模板的实例化与具象化 我在前面的文章中进行过整理,这里就不赘述了,想了解的可以在点击链接回顾一下。这里就说一下总结:class 和 template 都支持接口 和 多态。对 class 而言接口是显示的,以函数签名为中心。多态则是通过 virtual 函数发生...

2019-05-29 20:43:57 391

原创 算法 ---- 计数排序、桶排序及基数排序

1、计数排序计数排序 需要满足 n 个输入元素中的每一个元素都在 0 到 k 的区间内的整数。计数排序的思想是:对每一个输入元素x,确定小于 x 的元素个数。利用这一信息,可以直接把 x 放到它在输出数组中的位置上。例如,有17个元素小于 x,则 x 就应该在第18个位置上。计数排序 需要使用 k+n个辅助空间,k 个辅助空间是用来确定小于 x 的元素个数,n 个辅助空间是用来存放对原数组的...

2019-05-19 14:36:13 327

原创 C++ template的使用

1、template的使用C++ 的高级玩法,当然包含了模板。模板(template)是实现代码重用机制的一种工具,它可以实现类型参数化,把类型定义为参数(模板元编程),从而实现了真正的代码可重用性。模板是用来批量生成功能和形式都几乎相同的代码的。编译器就能在需要的时候,根据模板自动生成程序的代码。从同一个模板自动生成的代码,形式几乎是一样的。 模板就像一个做饼干的模具,至于饼干是什么味道,则...

2019-05-15 19:21:54 15273

原创 C++ STL 总结

1、STL 总结经过这么长时间的整理,STL 的内容终于整理完毕,虽然之前这本书看过两遍,但是比较汗颜的是,感觉之前也就是看过,没有进行深度挖掘,对于一些概念已经淡化,对于一些实现细节也已经淡化。所以说看书一定要往深度里看,看懂了才能印象深刻,而且还要不定时的回顾一下,增强一下记忆。这里个人总结一下看完STL的感受:STL 主要的特性是,泛型思想。书写的代码与数据类型无关,任何类型的数据都可使...

2019-05-14 22:51:37 556

原创 GIT 修改用户名和密码

1、概述如果你使用GIT的SSH 方式连接远端,并且设置了一个没有口令的秘钥,这样就可以砸不输入用户名和密码的情况下安全地传输数据。然而,这对 HTTP 协议来说是不可能的 ---- 每一个连接都是需要用户名和密码的。但是这样使用就比较麻烦,而 GIT 提供了一个凭证系统来处理这个事情。2、GIT 提供的凭证系统GIT 提供的凭证系统,会有四种模式,分别是默认模式、cache(缓存)、sto...

2019-05-14 20:50:36 49262 7

原创 C++ STL(第二十三篇:算法-- 单纯的数据处理算法)

1、概述前面整理了 STL 单纯的数据处理算法,因为太多,分为两个部分,今天就把剩余的部分给整理完毕,这样 STL 的内容就告一段落了。rotate:将 [first, middle) 内的元素和 [middle, last) 内的元素互换。 middle 所指的元素会成为容器的第一个元素。如果有个数字序列 {1,2,3,4,5,6,7},对元素 3 做旋转操作,会形成{3,4,5,6,7,1...

2019-05-09 20:34:18 229

原创 C++ STL(第二十二篇:算法-- 单纯的数据处理算法)

1、概述前面整理了 STL 最重要的 排序算法,以及 有序区间算法,还有copy、及简单的算术算法等。但是 STL 还有一些单纯的数据处理算法,接下来两节会对这部分内容进行整理。部分算法比较简单,就不整理代码了,只做一个简单的介绍。2、数据处理算法adjacent_find:找出第一组满足条件的相邻元素。默认条件是“两元素相等”,可传入自定义二元仿函数。count:统计在 [first, ...

2019-05-08 19:14:06 298

原创 C++ STL(第二十一篇:算法-- 应用于有序区间的算法)

1、概述有序区间,顾名思义就是区间内的元素都是经过排序之后的。对于这种类型的区间,有一系列的算法。今天就对这种区间的算法进行整理。2、includes判断序列 S2 是否 “涵盖于” 序列 S1,所谓涵盖,意思是 “S2 的每一个元素都出现于 S1”。代码如下:template<class InputIterator1, class InputIterator2>bool i...

2019-05-05 20:15:49 555

原创 C++ STL(第二十篇:算法-- 排序)

1、概述排序算法是算法中的重点,排序过的数据,特别容易查找,不管是实际工作还是面试都会用到它。现实生活中,字典需要排序,书籍索引需要排序,磁盘目录需要排序,名片需要排序等等。任何数据只要你想快速查找,就需要进行排序。排序算法有很多种,比如冒泡排序、选择排序、插入排序、快速排序、堆排序。其中堆排序我们在整理 heap 时已经进行整理了,今天主要是对 STL 中的 sort 排序进行整理。而 s...

2019-05-01 18:25:33 1097 2

原创 VS 性能分析工具

VS性能分析工具的使用有时我们要对我们的程序进行调优,需要对程序的性能进行分析。性能分析的工具有很多,比如 google profiler、valgrind、xperf等,今天进行整理的是 VS 自带的性能分析工具。我使用的是VS 2015进行的操作,不同的VS 有可能使用方法不一样,不过大体的使用应该是相同的。VS 自带性能分析工具,可以执行直接在VS中执行书写的项目,也可以追踪生成的可执...

2019-04-30 15:12:25 13078 2

原创 C++ STL(第十九篇:算法-- set相关算法)

1、概述STL 一共提供了四种与set相关的算法,分别是并集、交集、差集、对称差集。所谓set,可细分为数学上的定义和STL 的定义两种,数学上的感谢大家,我是假装很努力的YoungYangD(小羊)。参考资料:《STL源码剖析》...

2019-04-30 09:24:38 450

原创 C++ STL(第十八篇:算法-- copy)

1、copy算法不管在什么地方,copy() 都是一个常常被调用的函数。copy操作不外乎运用 赋值操作 或 拷贝构造 来进行,但是某些元素能够使用内存直接复制行为,能够提高效率,节省时间。copy() 算法可将输入区间 [first, last) 内的元素赋值到输出区间 [result, result+(last-first)) 内。copy 算法用了各种办法来提高效率,包括函数重载、型别特...

2019-04-26 20:51:07 1734

原创 C++ STL(第十七篇:算法)

1、算法的概述算法,就是一个问题的解法。以有限的步骤,解决逻辑或数学上的问题。STL 收录了极具复用价值的 70 第一个 算法,包括和赫赫有名的排序、查找、排列、组合等。有的算法需要搭配特定的数据结构。例如 binary search tree(二叉查找树)和 RB-tree 便是为了解决查找问题而发展出来的特殊数据结构,hashtable 拥有快速查找的能力。map-heap可以协助完成所谓...

2019-04-25 21:18:41 462

原创 C++ STL(第十六篇:容器的总结)

1、总结到这里,对于STL的容器就整理完成了。我们把容器分为了 序列式容器 和 关联式容器,而每类下面又分为好多容器,如下图所示:其中,有一些容器需要基于特定的结构或算法,如 priority-queue,set,map,hash_set;还有一些容器是对底层容器接口的修改,如 stack、queue。之前我只是整理了,他们的原理和代码,其实还差一些他们之间的比较及使用细节,这一节给补上。...

2019-04-23 20:34:39 320

原创 C++ STL(第十五篇:hashtable)

1、hashtablehashtable 的目的是为了提供任何操作都是常数级别。SGI STL 中, hash table 使用了 开链法 实现的。大致的意思如下图所示:hash table 内的元素为 桶子(bucket),每个桶子里面有很多节点。其实有点像我们前面整理的 deque(双端队列),双端队列主控是个指向指针的指针,而hash table是一个vector;双端队列缓冲区是一块...

2019-04-19 21:08:50 10568

原创 C++ STL(第十四篇:Set 和 Map)

1、Setset 的特性是,所有元素都会根据元素的键值自动被排序。set 的元素不像 map 那样可以同时拥有实值(value)和键值(key),set 元素的键值就是实值,实值就是键值。 set 不允许两个元素有相同的键值。因为 set 元素值就是其键值,关系到 set 元素的排列规则,如果任意改变 set 元素值,会严重破坏 set 组织。所以 set 的迭代器是 const_iterat...

2019-04-17 20:20:19 388

原创 C++ STL(第十三篇:RB-tree)

1、概述RB-tree(红黑树) 是除了 AVL-tree 之外,另一个被广泛使用的平衡二叉搜索树。所谓 RB-tree,不仅是一个二叉搜索树,而且必须满足以下规则:1、每个节点不是红色就是黑色。2、根节点为黑色。3、如果节点为红,其子节点必须为黑。4、任一节点至NULL(树尾端)的任何路径,所含之黑节点数必须相同。根据规则4,新增节点必须为红;根据规则3,新增节点之父节点必须为黑。当...

2019-04-16 20:53:07 3316 1

原创 C++ STL(第十二篇:容器--关联式容器介绍和树的导览)

1、关联式容器前面刚开始整理 STL 容器 时,简单的说了一下容器可以分为两类 序列式容器 和 关联式容器。前面又对主要的 序列式容器 进行了整理,今天终于轮到 关联式容器了。所谓关联式容器,观念上类似关联式数据库:每笔数据都有一个键值(key)和一个实值(value)。当元素插入到关联式容器中时,容器内部结构便依照其键值大小,以某种特定规则将这个元素放置于适当位置。关联式容器没有所谓头尾(只...

2019-04-13 14:38:12 1040

原创 C++ STL(第十一篇:priority-queue)

priority-queue(优先队列)是一个拥有权值概念的 queue,它允许加入新元素、移除旧元素、审视元素值等功能。由于这是一个 queue,所以只允许在低端加入元素,并从顶端取出元素,除此之外别无其他存取元素的路径。priority-queue 带有权值观念,其内的元素并非依照被推入的次序排列,而是自动依照元素的权值排列。权值最高者,排在最前面。缺省的情况下,priority-queu...

2019-04-12 20:00:06 378

原创 C++ STL(第十篇:heap)

1、heap的概述heap(堆)并不归属于 STL 容器组件,它是个幕后英雄,扮演 priority queue(优先队列)的助手。priority queue 允许用户以任何次序将任何元素推入容器,但取出时一定是从优先权最高的元素开始取。而 binary max heap(最大二叉堆)具有这样的特性,适合作为 priority queue 的底层机制。 因为后面要整理 priority que...

2019-04-11 21:01:32 4630 1

原创 C++ STL(第九篇:容器 -- stack和queue)

1、stackstack是一种先进后出的数据结构(也就是我们说的 栈)。它只有一个出口,允许新增元素、移除元素、取得最顶端元素。除了最顶端外,没有任何其它方法可以存取 stack 的其它元素。换言之, stack 不允许有遍历行为。SGI STL中 stack 底层是使用deque(双端队列)进行实现的。我们之间整理STL 适配器的时候也说过,这种修改某物接口,形成另一种风貌的性质叫做“适配器...

2019-04-09 19:12:40 696

原创 C++ STL(第八篇:容器 -- deque)

1、deque的概述deque(双端队列)是由 一段一段的定量连续空间构成。一旦有必要在 deque 的前端或尾端增加新空间,便配置一段定量连续空间,串接在整个deque的头端或尾端。 deque 的最大任务,便是在这些分段的定量连续空间上,维护其整体连续的假象,并提供随机存取的接口。为了维持 deque 整体连续的假象,deque 数据结构的设计及迭代器前进后退等操作都颇为繁琐。deque的...

2019-04-08 20:46:34 514

原创 Windows 任务管理器被Process Explorer 取代后如何恢复

最近使用到了Windows下的 Process Explorer 程序,Process Explorer 可以轻松地一键取代系统自带的任务管理器。如下:使用快捷键 ctrl+shift+esc之后,直接弹出 Process Explorer 窗口。虽然这样使用很方便,但有时你还要看之前的任务管理器窗口,现在找不到打开任务管理器的接口了,而且Process Explorer没有提供能让你一键恢...

2019-04-04 18:50:59 1510

原创 C++ STL(第七篇:容器 -- list)

1、list的概述相比较于 vector 的连续线型空间,list 就显得复杂的多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。list 和 vector 是两个最常用被使用的容器 。什么时机下最适合使用哪一种容器,我们最后进行整理。list 本身和 lis...

2019-04-02 21:03:20 327

原创 C++ STL(第六篇:容器--vector)

1、概述今天开始整理STL使用最广的容器了。同时这一部分也是我看了两遍,还有很多没有看懂的地方。最近准备硬着头皮,把这个山头给拿下,争取在第三遍能看懂吧。容器,置物之所也。STL容器实际上就是把一些常用的数据结构给实现出来,方便大家使用。而常用的数据结构不外乎array、list、tree、stack、queue、hash table、set、map…等等。根据 “数据在容器中的排列” 特性...

2019-04-01 21:15:23 387

空空如也

空空如也

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

TA关注的人

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