自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux---多线程、线程池

多线程线程概念:线程就是进程中的一条执行流,负责代码的执行调度,在linux下线程执行流是通过pcb实现的,一个进程中可以有多个pcb,这些pcb共享进程中的大部分资源,所以线程被称为一个轻量级进程。Notes:进程是系统进行资源分配的基本单元,线程是操作系统进行调度运行的基本单元,在linux下pcb相较于传统pcb较为轻量化(因为有很多都是共享的资源),因此linux下的线程实际上被称为轻量级进程。Notes:Linux下执行流是通过轻量级进程实现的。1.进程是pcb,linux下是一个tas

2021-05-19 14:04:31 232 1

原创 动态规划---背包问题

0-1背包问题最常见的0-1背包问题,改问题描述如下:有一个课装载重量为W的背包和N个商品,每个物品都有重量和价值两个属性,其中第i个商品的重量为wt[i],价值为val[i],现在用这个背包装商品,问最多能装的价值是多少?举个例子更直观吧:高压锅重 4kg,价值300风扇重 3kg,价值200皮鞋重 1kg,价值150背包总重4kg;在面对一个动态规划时候,往往从以下几个方面分析,会有奇效:本题中状态和选择是什么?这个例子中的状态很显然有两个,一个就是背包的重量W,一个

2021-05-10 17:22:35 979 5

原创 关于滑动窗口的那些事~

所谓的滑动窗口说白了就是找一个窗口,让它不断滑动,然后更新你想要的答案,大致思路如下:int left = 0,right = 0;while (right < s.size()){ //增大窗口 windows.add(s[right]); right++; while (窗口需要缩小) { //缩小窗口 windows.remove[s[left]]; left++; }}不难看出来,滑动窗口算法的时间复杂度就是O(N),反正对我这种爱用

2021-05-09 18:42:57 666 8

原创 Linux——进程间通信——管道与共享内存

文章目录进程间通信是什么?一、管道特性本质原理匿名管道匿名管道的模拟实现命名管道总结:管道到底是什么?二、共享内存:用来实现进程间的数据共享本质就是一块物理内存操作接口:共享内存总结进程间通信是什么?操作系统为用户提供的用于实现进程之间进行通信的方式。Notes:进程之间是无法直接通信的,因为每一个进程都有自己独立的虚拟地址空间,所以进程具有独立性,无法直接通信。进程间通信方式种类:管道、共享内存、消息队列、信号量一、管道特性半双工通信(可以选择方向的单向通信)管道的生命周期随进程的,进程

2021-04-16 19:57:42 611 2

原创 Linux——文件描述符

何为文件描述符?在进程中每打开一个文件,都会创建有相应的文件描述信息struct file,这个描述信息被添加在pcb的struct files_struct中,以数组的形式进行管理,随即向用户返回数组的下标作为文件描述符,用于操作文件。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。文件描述符 0 与 进程的标准输入(standard input)关联文件描述符 1 与 标准输出(stand

2021-04-08 23:54:02 975 4

原创 C++——函数模版与类模版

文章目录一、函数模版二、类模版一、函数模版我们都知道C++有一个重要的特性就是代码复用。为了实现这个代码复用,代码就必须得有通用性,也就是说代码不受数据类型的影响,并且可以自动适应数据的类型变化。模版其实就是C++支持参数化程序设计的工具,通过模版可以实现参数多态性。说白了就是将程序所处理的对象的类型参数化,使得程序可以用于处理多种不同类型的对象。下面我们来看一个例子:int abs(int x){ return x < 0 ? -x : x;}double abs(doubl

2021-04-02 21:47:36 139 1

原创 Linux--实现一个简单的shell

因为这个shell基础功能还没有实现全,只有那么一丢丢功能,以后还会继续改进。话不多说直接上图(我本来想把代码复制过来,但是迷的很,复制过来有好多乱七八糟的东西,就很烦)刚刚发现自己路径没有打印出来,更改后(代码已经更改)以后还会改进的。。。用图片提交有那么一丝尴尬。。。各位大佬轻喷~。。。...

2021-04-01 22:21:39 128 1

原创 Linux——进程等待、程序替换

文章目录一、进程等待二、进程替换一、进程等待所谓的进程等待就是父进程等待子进程退出。父进程等待子进程退出其目的就是:获取子进程的退出返回值释放子进程的资源,避免产生僵尸进程。(僵尸进程会造成内存泄露)进程等待有2种方式,下面分别介绍:pid_t wait(int* status);等待任意一个子进程退出(只要有子进程,就会处理)。参数列表:status(指针):获取子进程退出返回值。返回值: pid_t分为2种情况:(1)如果成功,返回子进程的pid(2)如果失败,返回-1w

2021-03-31 16:31:39 4120 9

原创 C++——浅拷贝、深拷贝

这篇blog只是做一个简单的记录,让自己看到这个程序时有一个简单的理解过程,不做任何画图讲解#include <iostream>using namespace std;//前置声明class string;//计数器class string_rep{ friend class String;public: //构造函数 explicit string_rep(const char* str = ""):m_count(0) {

2021-03-26 12:13:22 897 3

原创 C/C++——static关键字

文章目录前言一、Static关键字都有哪些用?static修饰全局变量static修饰局部变量static修饰函数二、当static面向对象的时候静态数据成员静态成员函数三、总结前言是这么回事,某日,一位好友问了我关于static关键字的几个问题,由于本人刚入门C++(学完了C语言),感觉对好友的问题回答的不系统,所以设想:如果面试官提出关于static关键字之类的问题,我该如何解答,并且解答的很有条理性,出于此目的在这篇blog下做一个初步总结。一、Static关键字都有哪些用?static关键

2021-03-24 16:02:02 821 8

原创 Linux——环境变量、虚拟地址空间

文章目录一、环境变量1.1 常见的环境变量1.2 与环境变量相关的命令1.3 环境变量的组织方式二、虚拟地址空间2.2 虚拟地址空间的访问过程三、虚拟地址空间的管理方式3.1 页式管理3.2 段式管理3.3 段页式管理一、环境变量环境变量是在操作系统中用来指定操作系统运行环境的参数Notes:环境变量在系统中通常具有全局特性。1.1 常见的环境变量PATH:指定命令的搜索路径。HOME:用户的工作目录。(说白了就是用户登陆到Linux系统中默认的目录)SHELL:SHELL的值通常就

2021-03-21 22:41:00 2628 7

原创 Linux——进程基本概念、僵尸进程与孤儿进程

文章目录前言一、进程基本概念1.1 程序计数器在Linux下的样子:1.2 上下文信息1.3 内存指针二、进程创建三、僵尸状态和僵尸进程3.1 ????‍♂️进程的模拟3.2 ????‍♀️的危害(僵尸进程的危害)3.3 如何处理四、孤儿进程前言此文章初步探究一下进程的基本概念,以及僵尸进程与孤儿进程,后续还会对进程有更加深入的学习。一、进程基本概念PCB:进程控制块(struct task_struct),初步包含了一下几个模块:PID进程状态程序计数器:保存程序即将要运行的下一条指令

2021-03-18 12:13:55 1460 7

原创 C++ ——赋值运算符重载函数

文章目录前言一、赋值运算符重载函数是什么?二、细谈赋值运算符重载函数2.1 参数列表2.2 返回值2.3调用时机二、赋值运算符重载函数练习前言在介绍赋值运算符重载之前,我们先看一段代码:class Complex //定义一个复数类{public: Complex (double r = 0.0,double i = 0.0) //构造函数 { _real = r; _imag = i; } void Show()const;

2021-03-17 13:05:47 3535 3

原创 C++——构造函数、析构函数以及复制构造函数

文章目录一、构造函数1.1 构造函数是什么?1.2 为什么要有构造函数?1.3 如何使用构造函数?1.4 构造函数的实现二、使用步骤一、构造函数在程序执行的过程中,当遇到与对声明语句时,程序会向操作系统申请一定的内存空间用于存放新建的对象。但是与普通变量相比,类的对象特别复杂,编译器不知如何产生代码去初始化对象,这便引出了构造函数。1.1 构造函数是什么?C++中,构造函数是一种特殊的成员函数,在每次创建一个类的时候编译器都会默认调用构造函数进行初始化。1.2 为什么要有构造函数?构造函数的作用

2021-03-09 23:37:40 3462 10

原创 C++——类与对象

文章目录一、类的定义二、类成员的访问控制2.1 Public类型2.2 Private类型2.3 Protected类型三、类的成员函数3.1 成员函数的实现3.2 带默认形参数值的成员函数四、类的对象大小的计算五、类成员函数this指针5.1 this指针的引出六、对象一、类的定义首先我们举一个很常见的例子:钟表,时钟类的定义如下:class Clock{public: void SetTime(int newH,int newM,int newS); void ShowTim

2021-03-08 22:00:07 850 1

原创 C++——引用、内联函数

文章目录一、引用是什么?1.1 引用的特性1 .2常引用(对const的引用)1.3 引用的使用场景1.4 传值、传引用效率比较1.5 引用和指针的区别二、内联函数1.什么是内联函数2.内联函数的特性三、auto关键字(C++11)auto的使用细则一、引用是什么?引用不是一个新的变量,而是给已经存在的变量取了一个别名,编译器不会为引用变量开辟新的内存空间,引用和被引用的变量共用一块内存空间。引用(reference)为对象起了另外一个名字,引用类型引用另外一种类型。通过将声明符写成&d的形

2021-03-08 11:54:43 982 2

原创 Linux——gdb的基本操作

文章目录一、调试器-gdbgdb的基本操作调试coredump文件一、调试器-gdb在linux操作系统中,如果需要调试程序,需要在编译程序的时候,将程序编译成为debug版本,则需要增加“-g”命令参数。gdb的基本操作1.调试可执行程序gdb + “可执行程序”2.查看源代码l(list)X3.打断点 -> b + “源码文件中的行号”4.查看断点:i b (info breakpoints)5.去除断点: delete + “断点的序号”6.使断点失效:disa

2021-03-06 22:10:52 214

原创 C++:命名空间、缺省函数以及函数的重载

C++:命名空间、缺省函数以及函数的重载目录一、命名空间1.为什么要有命名空间?2.命名空间的定义方法3.命名空间的使用二、缺省参数1.缺省参数是什么?2.缺省参数的分类三、函数重载1.函数重载是什么?2.为什么C++支持函数重载,而C语言不支持重载?为什么类型相同返回值不同时,函数不能重载?面试题一、命名空间1.为什么要有命名空间?在大型程序中,往往会使用到多个独立开发的库,这些库往往会定义大量的全局名字,如类、函数和模版等。当应用程序用到多个库时,不可避免的发生某些名字相互冲突的情况。多个库名字

2021-03-04 14:56:24 192 1

原创 排序数组

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档LeetCode912–排序数组前言https://leetcode-cn.com/problems/sort-an-array/submissions/首先,这个题如果使用常用的冒泡排序以及选择排序都会导致时间超时,所以大概可以能用以下几种方法来实现:一、快速排序–hoare法hoare法的基本思想是给定一个key值,在第一轮排序中,使得ke y值在曲轴点,使得key的左边都比key值小,右边比key值大。接着在从划分好的两

2021-02-06 17:00:28 305 1

原创 数据结构之单链表

线性链表文章目录线性链表一、什么是线性链表?二、单链表基本功能的实现1.创建结构体以及初始化单链表(不带头结点)2.单链表的插入和删除操作整个单链表的实现代码,以及测试函数一、什么是线性链表?线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元既可以是连续的,也可以是不连续的)。因此,为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据ai来说,除了存储其本身的信息之外,还需要存储一个指示其直接后继的信息。这两部分构成数据ai的存储映像,称为结点

2021-02-05 19:36:13 244

空空如也

空空如也

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

TA关注的人

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