自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 find_end的用法

这里的haystack有两个4,最后一个4应该是在8的位置,为什么查找needle2的时候是3呢,有点不明白,理解的小伙伴给个解答。这里的haystack有两个1,最后一个1应该是在5的位置,所以打印的值为5。

2023-03-15 11:58:59 171

原创 windows下安装CMake

1. 安装2.编译失败问题解决

2023-02-09 16:37:59 333

原创 c++编程规范

C++ 编码规范整理

2023-02-09 09:05:46 194

原创 vscode 显示乱码的问题

vscode:四个乱码问题及解决方法_vscode乱码_Balaaam的博客-CSDN博客

2023-02-09 08:21:49 175

原创 Vscode 关闭cmd命令弹窗

vscode关闭/打开cmd命令窗口

2023-02-06 11:51:27 504

原创 Error: EPERM: operation not permitted, mkdir ‘D:\‘

这是安装vue-cli时出现的错误,最初由于移动了npm的安装路径,把安装路径从C:/nodejs/node_modules切换到了D盘,导致安装时没有权限的问题。这里参考Error: EPERM: operation not permitted, mkdir ‘D: 以及https://www.cnblogs.com/yaohe/p/11912547.html 但是本人的C盘用户目录下没有.npmrc文件,最后在Administrator目录下找到,删除,然后用管理员权限安装,ok...

2022-02-26 14:11:08 5178 2

原创 sublime 安装sass运行css步骤

添加链接描述sass安装步骤

2022-01-19 19:52:06 356

原创 超级好用VSCode 的使用学习

[文档跳转]ttps://juejin.cn/post/6844903826063884296)

2022-01-19 10:43:32 375

原创 前端学习之路

--推荐的链接https://juejin.cn/post/6844903830887366670

2021-12-31 20:30:39 304

原创 Qt工具下载

这里写自定义目录标题Qt下载地址添加链接描述

2021-12-26 00:02:39 267

原创 Python练习小项目

python项目借鉴u添加链接描述

2021-12-22 20:44:23 331

转载 位图

一、定义 位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。在STL中有一个bitset容器,其实就是位图法,引用bitset介绍:Abitset is a special container class that is designed to store bits (elements with only two possible values: 0 or 1,trueorfa...

2020-09-01 11:02:15 263

转载 RAII详解

什么是RAII?RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。为什么要使用RAII?上面说到RAII是用来管理资源、避免资源泄漏的方法。那么,用了这么久了,也写了这

2020-08-30 09:51:47 1618

转载 C++RTTI详解

RTTI是”Runtime Type Information”的缩写,意思是运行时类型信息,它提供了运行时确定对象类型的方法。RTTI并不是什么新的东西,很早就有了这个技术,但是,在实际应用中使用的比较少而已。而我这里就是对RTTI进行总结,今天我没有用到,并不代表这个东西没用。学无止境,先从typeid函数开始讲起。typeid函数typeid的主要作用就是让用户知道当前的变量是什么类型的,对于内置数据类型以及自定义数据类型都生效,比如以下代码:? 1 2 3

2020-08-30 09:23:40 306

转载 socket 网络编程

1 网络模型1.1IP地址与域名1.2 端口的概念1.3 网络模型图2 Socket入门2.1 什么是Socket2.2 TCP和UDP区别2.3UDP协议样例2.4 TCP2.4.1 TCP报文格式2.4.2 TCP三次握手2.4.3 四次挥手2.4.4 三次握手和四次挥手面试问题2.4.5TCP的滑动窗口机制2.4.6流量控制2.4.7 拥塞控制2.4.8TCP滑动窗口和socket缓冲区之间的关系2.4.9、滑动窗口移...

2020-08-27 08:32:11 251

转载 Shell命名解释器

一、Shell解释器shell解释器,用户和操作系统内核之间的桥梁shell介于操作系统内核与用户之间,负责接收用户输入的操作指令(命令),并运行和解释,将需要执行的操作传递给操作系统内核并执行shell程序在系统中充当了一个”命令解释“的角色如:Windows中的cmd.exe类似这个角色,不过接收的是DOS命令二、Linux中的shell2.1、Shell常见种类Bsh:由贝尔实验室编写。Bsh是产生较早的UNIX Shell程序,实现了最基本的命令解释器的功能,同.

2020-08-25 17:42:37 214

转载 僵尸进程以及处理方式

基本概念:  我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程再创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。  孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。  僵尸

2020-08-25 17:41:44 2270

转载 进程间通信--双向管道实现

地址链接:https://www.ibm.com/developerworks/cn/linux/l-pipebid/index.htmlLinux 上实现双向进程间通信管道问题和常见方法Linux 提供了 popen 和 pclose 函数 (1),用于创建和关闭管道与另外一个进程进行通信。其接口如下: 1 2 FILE *popen(const char *command, const char *mode); int pclose

2020-08-25 11:57:21 1505

原创 hash构造和解决哈希冲突

hash表的实现主要包括构造哈希和处理哈希冲突两个方面:对于构造哈希来说,主要包括直接地址法、平方取中法、除留余数法等。对于处理哈希冲突来说,最常用的处理冲突的方法有开放定址法、再哈希法、链地址法、建立公共溢出区等方法。SGL版本使用链地址法,使用一个链表保持相同散列值的元素。虽然链地址法并不要求哈希桶长度必须为质数,但SGI STL仍然以质数来设计哈希桶长度,并且将28个质数(逐渐呈现大约两倍的关系)计算好,以备随时访问,同时提供一个函数,用来查询在这28个质数之中,“最接近某数并大于某数

2020-08-24 16:09:57 239

原创 老鼠喝药算法

根据2^10=1024,所以10个老鼠可以确定1000个瓶子具体哪个瓶子有毒。具体实现跟3个老鼠确定8个瓶子原理一样。000=0001=1010=2011=3100=4101=5110=6111=7一位表示一个老鼠,0-7表示8个瓶子。也就是分别将1、3、5、7号瓶子的药混起来给老鼠1吃,2、3、6、7号瓶子的药混起来给老鼠2吃,4、5、6、7号瓶子的药混起来给老鼠3吃,哪个老鼠死了,相应的位标为1。如老鼠1死了、老鼠2没死、老鼠3死了,那么就是101=5号瓶子有毒。为什么这样排列呢,

2020-08-20 22:30:35 899

转载 操作系统中的串进程和线程

进程概念进程是一个动态概念,表示程序在一个数据集合上的一次动态执行过程。进程包含正在运行的一个程序的所有状态信息:•代码•数据•状态寄存器•通用寄存器•系统资源(文件、内存...)进程可以动态创建和结束,多个进程可以并发执行,不同进程间互不影响(操作系统实现)。同时进程间又相互制约,它们因访问共享数据/资源或进程间同步而产生制约。程序是静态的,它是文件。进程是动态的,是执行中的程序,进程=程序+执行状态。进程控制块进程控制块(PCB, Process Control Block)

2020-08-19 08:53:35 187

转载 c++11新标准

说起C++语言,它现在被公认为是在各种编程语言中最难学的语言之一,它的语法知识点之广泛,细节内容之多,学习难度之大,时间周期之长,都使得人们对这门语言“敬而远之”。然而C++语言又具有不可替代的巨大优势。主要的优势有以下几点,首先C++是一个严谨,精确的语言。它的标准定义非常明确,语言结构层次分明,清晰顺畅,具有优秀的编程语言应该具有的品质。其次,C++语言支持对底层的操作,这是又一大优势。支持底层操作意味着编程的效率将显著提升。C++语言在继承c语言的基础上,改进了自己对底层的支持,这令其更加有吸

2020-08-12 08:20:08 3977

原创 Mysql三种存储引擎

MySQL常见的三种存储引擎为InnoDB、MyISAM和MEMORY。其区别体现在事务安全、存储限制、空间使用、内存使用、插入数据的速度和对外键的支持。具体如下:1、事务安全:InnoDB支持事务安全,MyISAM和MEMORY两个不支持。2、存储限制:InnoDB有64TB的存储限制,MyISAM和MEMORY要是具体情况而定。3、空间使用:InnoDB对空间使用程度较高,MyISAM和MEMORY对空间使用程度较低。4、内存使用:InnoDB和MEMORY对内存使用程度较高,MyI

2020-08-10 15:03:15 714

原创 linux安装gdb

自己又安装了一下,不过忘记了方法,所以再来记录一下,防止以后又不回了。gdb是Linux环境下的代码调试工具,为了能在linux环境下更有好的编程体验。其安装可谓是势在必行。安装过程step1:首先检查系统中有没有安装过,有的话用一下命令卸载gdb旧版本step2:安装Texinfo文档系统回车step3: 在网址:http://ftp.gnu.org/gnu/gdb下载gdb源码包(自己选择哈)将源码包放在home目录的Download目录中(基本上默认就.

2020-08-06 08:22:00 627

转载 HashMap和Hashtable的区别

1、HashMap是线程不安全的,在多线程环境下会容易产生死循环,但是单线程环境下运行效率高;Hashtable线程安全的,很多方法都有synchronized修饰,但同时因为加锁导致单线程环境下效率较低。2、HashMap允许有一个key为null,允许多个value为null;而Hashtable不允许key或者value为null。如果你觉得会到处这两点就对HashMap、HashTable有很深的了解的话,那就大错特错!本文将基于JDK1.8的HashMap和Hashtable的源码进行详细

2020-08-04 17:41:55 132

转载 预编译,编译,汇编,链接原理

限于自己水平有限,况且前者总结的真的好,所以就拿来主义了!楔子我们在各自的电脑上写下代码,得明白我们代码究竟是如何产生的,不想了解1,0什么的,但这几个环节必须掌握吧。我们的代码会经过这4个环节,从而形成最终文件,c语言作为编译语言,用来向计算机发出指令。让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。预处理, 展开头文件/宏替换/去掉注释/条件编译 (test.i main .i)编译, 检查语...

2020-08-04 15:33:43 230

原创 CPU进程调度分类

1、高级调度bai高级调度又称为作业调度。它是批处理系统中使用的一种调度。其主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中2、低级调度低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得CPU。3、中级调度引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的

2020-08-01 20:04:05 1144

原创 C语言的算术优先级

语言的i运算符包括单目运算符、双目运算符、三目运算符,优先级如下:第1优先级:各种括号,如()、[]等、成员运算符 . ;第2优先级:所有单目运算符,如++、--、!、~等;第3优先级:乘法运算符*、除法运算符/、求余运算符%;第4优先级:加法运算符+、减法运算符-;第5优先级:移位运算符<<、>>;第6优先级:大于运算符>、大于等于运算符>=、小于运算符<、小于等于运算符<=;第7优先级:等于运算符==、不等于运算符!=;第8

2020-08-01 19:44:29 11538

原创 for(auto i : arr)

这里c++11里面的新标准,也是遍历的一种方式,类似于Java里面的for each()#include<iostream>#include<vector>using namespace std;int main() { int a[] = { 1,2,3,5,2,0 }; vector<int>counts(a,a+6); for (auto count : counts) cout<< count<< " "; .

2020-07-31 17:04:55 1297

转载 Linux虚拟内存

Linux进程分配内存的两种方式--brk() 和mmap() 如何查看进程发生缺页中断的次数?用ps -o majflt,minflt -C program命令查看。majflt代表major fault,中文名叫大错误,minflt代表minor fault,中文名叫小错误。 这两个数值表示一个进程自启动以来所发生的缺页中断的次数。发成缺页中断后,执行了那些操作?当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作:...

2020-07-31 11:17:42 278

原创 Linux连接网络

因为自己重装了虚拟机,所以之前的配置全没了,想回看一下TCP/IP通信,结果忘了如何联网。上网查了半天,各种方式竟然都没成功,这么简单的操作,蠢哭了,然后自己放弃了,之后无意打开,自己连上了。真的无语啊。。。。过程如下图,我用的桥接模式,其他的方式以后再补充吧如果登录上去是这样,就表示连接成功啦。电脑显示红色的叉叉的话,表示没成功。...

2020-07-31 00:28:14 514

原创 虚拟内存的管理

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。物理内存的容量是固定的,但是寻址空间却取决于cpu地址线条数,如32位机,则寻址空间为2^32 = 4G,所以最大支只持4G的寻址空间,即使插了8G的内存条也只能使用4G内存。这里顺便提一下32位操作系统和64位操作系统的区别:寻址大小的区别,32位操作系统最大可以访问2^32,即4G的地址空间,而

2020-07-30 22:31:22 612

转载 时钟置换算法

当调入进程所请求的页面时,如果内存中已经没有空闲块了,则必须按照某种算法将内存中的若干页面淘汰至外存。用于选择淘汰页面的算法称为页面置换算法,置换算法的好坏,将直接影响到请求分页系统的性能。FIFO置换算法和LRU置换算法的思想都比较容易理解,页面置换的推导也是简单的。但是CLOCK置换算法比较难从书上获取准确的概念了,教材上的定义替换指针的位置描述得不清楚,网上的clock例子也有一部分存在错误,让人琢磨不定。本人认为掌握CLOCK算法的关键是:每一次进行替换指针的位置就从替换数移到下一个位置,每

2020-07-30 11:38:26 1175

转载 c++ new和operator new

new运算符和operator new()new:指我们在C++里通常用到的运算符,比如A* a = new A; 对于new来说,有new和::new之分,前者位于stdoperator new():指对new的重载形式,它是一个函数,并不是运算符。对于operator new来说,分为全局重载和类重载,全局重载是void* ::operator new(size_t size),在类中重载形式 void* A::operator new(size_t size)。还要注意的是这里的operat.

2020-07-30 11:06:46 359 1

原创 epoll实现多人聊天小项目

多人聊天项目的流程:1基于C/S模式建立的多人聊天程序,首先实现单一客户端与服务器的TCP连接。2然后运用epoll机制实现多人聊天。这里的多人聊天指的是群聊,每个用户可以发消息到服务器,然后可以从服务器收到其他的用户的消息。3这里fork()子进程,子进程等待接受用户输入的信息,然后把信息输入到管道,传给父进程。父进程把用户的消息传送到服务器,然后接受服务器传来的其他的用户的消息。4.TCP/IP机制,服务器端,服务器创建套接字,绑定套接字,监听绑定的套接字,链接客户端的套接字,连接上之后

2020-07-26 11:30:08 474

转载 c++oop思想

oop:面向对象编程(object oriented programming),是一种计算机编程架构。对象是由数据和容许的操作组成的封装体,和客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而继承性是具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识理解、刻画客观世界和设计、构造相应的软件系统。属性和方法的集合就形成了类,类是面向对象编程的核心和基础,类在实例化后就是对象。对象的产生:一:是以原型对象为基础

2020-07-23 17:03:18 305

原创 strcpy()和strncpy()

strcpy 和 strncpy 函数的缺陷有哪些?你如何解决?有替代函数吗?strcpy复制字符串;并且dest的长度要大于等于src的长度,否则会内存溢出;那么把最后一个字符制空或者赋值'\0';以'\0'结尾strncpy复制n个字符;dest的长度大于等于n;最好大于等于strlen(n)+1,1为'\0';否则会内存溢出memcpy复制任意类型;dest的长度大于等于n,否则会抛出异常;复制的内容有'\0'时,可以赋值'\0',赋值size长度,用memcpy很方便。测试代码:

2020-07-21 22:22:06 165

原创 c++sprintf()函数

sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:(1)格式化字符串上。printf 和sprintf 都使用格式化字...

2020-07-20 22:16:13 2398

原创 快速排序 二分法

2020-07-18 13:21:49 213

原创 调整数组顺序使其奇数在前偶数在后

题目:输入一个数组,实现函数是的所有的奇数在数组在前半段,所有的偶数在后半段。要点:二分数组,类似于二分查询。二分查询链接:https://blog.csdn.net/Victor_psl/article/details/107371870#include<iostream>#include<vector>using namespace std;void Print(vector<int>& vec){ int len = vec...

2020-07-17 22:36:21 359

空空如也

空空如也

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

TA关注的人

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