- 博客(37)
- 收藏
- 关注
原创 剑指offer-做题:1-3
剑指offer-做题1.二维数组中的查找(用了三种方法解答)2.替换空格3.从尾到头打印链表1.二维数组中的查找(用了三种方法解答)描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例1输入:7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]返回值:true说明:存在7,返回true示例2输入:3,
2021-06-09 14:27:02 128
原创 <Linux进程间通信方式-详细总结>
文章目录1.进程间通信(IPC)2.进程间通信方式一:管道2.进程间通信方式二:共享内存3.进程间通信方式三:消息队列4.进程间通信方式四:信号量1.进程间通信(IPC)1.进程间通信方式:管道、共享内存、消息队列、信号量、套接字(后面会详细介绍)2.进程间为什么要通信?进程间通信主要是为了:数据传输、资源共享、进程控制、通知事件等。3.进程间为什么不能直接通信?因为进程之间具有独立性,每个进程访问的都是自己的独立的虚拟地址空间,使用的都是虚拟地址,通过页表映射到物理内存。只能通过操作系统提供的
2021-04-14 16:51:24 194
原创 <Linux基础--文件描述符fd、重定向、文件流指针FILE*概念理解>
文章目录1.文件描述符fd2.重定向3.文件流指针:FILE*4.动态库和静态库1.文件描述符fd文件描述符:实际上就是内核中一个进程打开的文件描述信息数组(file* fd_array[])的下标,通过这个下标就能找到要操作的文件的描述信息,进而就可访问文件。Linux进程默认打开的三个文件描述符:标准输入0、标准输出1、标准错误2.因此文件描述符fd=0就表示标准输入,fd=1表示 标准输出,fd=2表示标准错误。文件描述符的分配规则:在files_struct数组中,找到当前没有被使用的最小
2021-04-13 13:49:14 631
原创 《Linux进程控制---编写简易shell实现》
文章目录1.编写思路2.实现简易shell1.编写思路shell是一个命令行解释器,将从键盘捕获到的输入信息,进行解析,然后创建子进程(程序替换)等操作。具体流程如下:1.获取命令行2.解析命令行3.创建子进程(fork)4.替换子进程(execvp)5.等待:父进程等待子进程退出 ,wait2.实现简易shell简易shell是对进程创建,进程替换,进程等待等基本操作的深入理解,通过这些基础知识可以编写基本的shell程序。代码如下(示例): 1 #include<stdio.
2021-04-13 10:51:04 282
原创 <C++模板:(函数模板)+(类模板)--详细说明>
文章目录一泛型编程二:模板1.函数模板2.类模板一泛型编程泛型编程是代码复用的一种手段,通过编写与类型无关的通用代码,完成函数重载,实现代码复用。模板是泛型编程的基础。二:模板模板分为:函数模板和类模板。1.函数模板1.函数模板:函数模板是一个函数的大集合,该函数模板与类型无关,在使用的时被参数化,根据实参类型产生函数的特定的类型版本。2.函数模板格式template<typename T1,typename T2…>返回值类型 函数名(参数列表){//函数功能}例
2021-04-12 10:10:19 128
原创 《C++中STL引入和string类常用接口+自我实现-》
前言在这篇博客里将详细说说C++中的STL,通过这篇我们可以学习到什么是STL,以及STL的六大组件,STL具有的缺陷,最后看看string类及面试会让模拟实现string类的操作。文章目录前言1.STL2.string类3.string类的模拟实现1.STLSTL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包含了数据结构与算法的软件框架。STL的版本:原始版本、P.J.版本、RW版本、SGI版本STL的
2021-04-07 14:55:00 243
原创 《C++类和对象中的static、友元以及内存管理 总结》
学习完前面有关类和对象的基础知识,这里再对其中的某些容易出现的错误及经常性会遇到的问题进行阐述,加深对类和对象的理解是学好C++的基础。文章目录1.再次谈及构造函数2.static成员总结1.再次谈及构造函数在上一篇博客中已经说了一些关于构造函数的基本知识。我们知道构造函数是对类的一种初始化,但是,构造函数体中的语句只能将其称作为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。因此使用正宗的初始化列表对其进行初始化。1.1 初始化列表其定义是以一个冒号开始,,接着
2021-04-06 23:23:09 186
原创 《Linux进程概念,进程创建退出等待替换,环境变量等基础操作 ---总结》
前言Linux系统的进程概念,进程状态,以及操作创建进程,还有环境变量及相关指令,程序地址空间等一些知识的梳理,将自己的理解总结如下,希望和各位一起进步,一起学习。以下是本篇文章正文内容。文章目录前言一、Linux系统进程1.概念引入2.进程创建3.环境变量4.程序地址空间总结一、Linux系统进程1.概念引入操作系统(OS):简单来说就是一个基本程序的集合,笼统的理解,操作系统包含内核(进程管理、内存管理、文件管理、驱动管理)和其他程序(例如函数库、shell程序等)。为什么会有操作系统
2021-03-20 16:15:56 176
原创 C语言中static关键字和break/continue在for/while循环中的作用
前言此篇博客对C语言的基础知识稍加总结,包括C语言中的static关键字作用,三大循环语句中出现的break和continue对循环体的影响,常量,生命周期,作用域,字符串,转义字符等等,其中常见的错误以及需要注意的事项在这里将会表现的淋漓尽致。文章目录前言1.变量的作用域和生命周期2.转义字符3.关键字static作用4.#define作用5.while/for语句中的break和continue小结1.变量的作用域和生命周期在下面的知识点中会用到作用域和生命周期,因此在这里稍微说明一下。作
2021-03-15 17:06:38 941
原创 《C++类基本知识和6个默认成员函数详细剖析》
面向对象编程–类的认识之前我们学习了C语言知识,C语言是一种面向过程的程序设计语言,而C++语言呢是基于面向对象的一种程序设计语言,关注的是对象,即将一件事情拆分成不同的对象,靠对象间的交互完成。接下来就对C++中最重要的类进行详细的介绍。面向对象的三个特性是:封装、继承、多态1.类的基本认识类简单来说就是由成员函数和成员变量构成的一个集合。类的定义和定义结构体是类似的。只不过定义类用的关键字是class。需要留意的是:C语言中,结构体中只能定义变量,但是在C++语言中,结构体内不仅可以定义变量,
2021-03-10 16:06:32 169
原创 【零基础C++入门基本知识指导】
零基础C++入门基本知识指导1.C++关键字2.命名空间:namespace3.C++输入&输出4.缺省参数5.函数重载6.引用7.内联函数:inline8.auto关键字(C++11)9.基于范围的for循环(C++11)10. 指针空值nullptr(C++11)小结:C++入门中包括最基本的一些知识,比如:C++关键字,命名空间,C++的输入输出、缺省参数、函数重载、引用、内联函数、auto关键字、基于范围的for循环、指针空值–nullptr等等。1.C++关键字C++关键字一共有6
2021-03-08 21:27:23 904 1
原创 <<Linux基础环境常用工具—yum、vim、gcc/g++、gdb、git等>>
Linux基础环境常用工具—yum、vim、gcc/g++、gdb、git等。1.软件包管理器: yum2.编辑器:vim3.编译器:gcc/g++4.调试器:gdb5.项目自动化构建工具:make/Makefile6.项目的版本管理工具:git7.小结常用的软件包管理工具有:编辑器、编译器、调试器、项目构建工具等。1.软件包管理器: yumyum–软件包管理器,即类似于手机上的应用商店例如:yum list :查看所有工具yum search keyword:按照keyword关键字查找软件
2021-03-07 10:40:33 402
原创 《二叉树中常见面试题--单值二叉树、翻转二叉树、平衡二叉树》
二叉树常见面试题1.单值二叉树2.二叉树最大深度3.翻转二叉树4.相同的树5.平衡二叉树1.单值二叉树描述:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。代码如下(示例):struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; bool _isUnivalTree(struct Tree
2021-03-04 21:16:43 401 1
原创 《Linux常用指令及权限内容-很香的总结》
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例
2021-03-04 18:07:51 4695 20
原创 数据结构之——《队列》
数据结构之——《队列》1.队列2.队列接口实现3.应用案例:用一个队列实现栈4.小结1.队列队列:是一种先进先出(FIFO)的线性表,允许在表的一端进行插入(即入队),在表的另一端进行删除(即出队)。入队:队尾(rear)插入;出队:队头(front)删除;2.队列接口实现(1)定义队列结构体代码如下(示例):typedef int QDataType;typedef struct QNode{ struct QNode* _next; QDataType _data;}QN
2020-12-30 11:15:02 321
原创 数据结构之——《栈》
数据结构之——《栈》1.栈的概念及结构2.栈的接口实现3.总结1.栈的概念及结构(1)栈:栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。(2)压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈,出数据也在栈顶。(3)原则:栈中的数据元素遵守后进先出(LIFO)的原则。2.栈的接口实现(0)栈的容量检查代码如下(示例):void checkCapacity(stack* st){ if (st->_size == st->_
2020-12-25 15:09:29 239
原创 数据结构之——《双向链表》
数据结构之——《双向链表》1.双向链表2.特点3.接口实现1.双向链表带头双向循环链表,实现插入,删除特别容易,而且时间复杂度为o(1)。2.特点(1)优点:任意位置插入,删除效率高,都是o(1)的复杂度。(2)缺点:首先空间不连续,其次不支持随机访问,最后空间利用率低,容易造成内存碎片。3.接口实现(1)尾插操作代码如下(示例):void listPushBack(List* lst, LDataType val){ if (lst == NULL) return; str
2020-12-24 17:57:11 99 1
原创 数据结构之——《单链表》
数据结构之—《链表》1.链表概念2.链表分类总结1.链表概念链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现。2.链表分类代码如下(示例):data = pd.read_csv( 'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')print(data.head())该处使用的url网络请求的数据。总结提示:这里对文章进行总结:例如:以上就是今天要讲
2020-12-21 15:44:12 138
原创 数据结构之——《顺序表》
数据结构之——《顺序表》1.含义2.分类3.接口函数实现4.顺序表的优缺点1.含义顺序表示用一段纹理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储,在数组上完成数据的增删查改。2.分类顺序表一般分为:(1)静态顺序表:使用定长数组存储(2)动态顺序表:使用动态开辟的数组存储3.接口函数实现(0)顺序表的初始化代码如下(示例):void initSeqList(seqList* s1){ s1->_data = NULL; s1->_size =
2020-12-19 20:02:37 127 1
原创 写一个宏,可以将一个整数字的奇数位和偶数位交换
写一个宏,可以将一个整数字的奇数位和偶数位交换1.过程2.预处理3.宏和函数4.交换奇偶位1.过程(1)组成一个程序的每个源文件通过编译过程分别转换成目标代码(2)每个目标文件由链接器捆绑在一起,形成一个单一而完整的可执行程序。(3)链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其需要的函数也链接到程序中。2.预处理(1)预处理符号FILE //进行编译的源文件LINE //文件当前的行号DATE //文件被编译的日期TIME
2020-12-18 20:49:19 248 1
原创 C语言中的文件操作
文件操作1.文件操作2.读入数据总结1.文件操作1.fopen、fclose用来打开文件和关闭文件。2.2.读入数据代码如下(示例):data = pd.read_csv( 'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')print(data.head())该处使用的url网络请求的数据。总结以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地
2020-12-18 17:42:10 270
原创 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 编写一个函数找出这两个只出现一次的数字。
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字。1.代码编写2.结果1.代码编写代码如下(示例):#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<assert.h>void find_two_diff_num(int arr[], int sz, int *p1, int *p2){ int i
2020-12-17 22:00:04 253
原创 《strcmp,strcpy,memcpy,memmove等函数模拟实现》
模拟实现常见字符串函数比如:strcmp,strcpy,memcpy,memmove等函数1.模拟实现memcpy函数2.模拟实现memmove函数3.模拟实现strstr函数4.模拟实现strcat函数5.模拟实现strcmp函数1.模拟实现memcpy函数void *MyMemCpy(void *dest, void *src, size_t count){ void *ret = dest; assert(dest); assert(src); while (count--){ *
2020-11-22 22:22:41 64
原创 《sizeof和strlen进阶笔试常考类型》
《sizeof和strlen进阶,笔试常考类型》1.sizeof和strlen的区别2.各种数据类型具体的含义总结1.sizeof和strlen的区别(1)关键字 sizeof 是一个单目运算符,而不是一个函数, sizeof 在编译时计算缓冲区的长度。由于在编译时计算,因此 sizeof 不能用来返回动态分配的内存空间的大小。而strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符‘\0’(即 null 字符)2.各种数据类型具体的含义总结今天就简单的对sizeof
2020-11-18 22:09:11 111
原创 <qsort实现一个通用的冒泡排序,排序各种类型的数据详解>
qsort排序各种类型的数据1.代码2.结果分析qsort实现一个通用的冒泡排序,排序各种类型的数据详细说明,有整型,浮点型,字符型等。1.代码代码如下(示例):#include<stdio.h>#include<string.h>#pragma warning (disable:4996)int int_cmp(const void *p1, const void *p2)//整型{ return (*(int *)p1>*(int *)p2);}
2020-11-15 19:31:31 168
原创 《C指针知识点总结》
《指针知识点总结》1.指针2.指针运算3.大小端字节序4.指针数组和数组指针5.总结1.指针(1).指针是一个变量,用来存放地址,地址可以唯一标识一块内存空间,指针的大小是固定的,在32位系统上占4字节,在64位系统上占8字节。(2).指针是有类型的,跟基本的变量类型一样,只不过指针的类型是在原来基础上多了一个*,将“”和其他类型结合就构成了指针类型的变量,例如:char,int* ,double* float*等等。(3).指针变量包含 了两部分信息:第一它指明了起始地址,第二它指明了内存大小。
2020-11-12 12:33:53 125 1
原创 C语言编程《1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少瓶汽水》
C语言编程《1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少瓶汽水》1.喝汽水编程思路2.代码编写1.喝汽水编程思路(1)首先是用现有的钱购买汽水,一共是20元,所以第一次是有20瓶汽水,即有20个空瓶。(2)这20个空瓶进行兑换,能够得到新的10瓶汽水。即有10个空瓶。(3)再将这10个空瓶进行兑换,又能得到新的5瓶汽水,即有5个空瓶。(4)现在问题是五个空瓶只能换2瓶新汽水,剩余1个空瓶(不算新换的2个空瓶)。这两瓶喝完又可以兑换1瓶汽水,这1瓶汽水喝完和上次剩余的1个空瓶结合又可
2020-11-11 21:55:05 3349 1
原创 不创建临时变量交换两个数,这才是高手
不创建临时变量交换两个数?这才是高手1.基本介绍1.代码编写总结1.基本介绍交换两个数,想必大家都很熟悉,也很容易写出来就可以实现,即创建一个临时变量,就可以完成两个数的交换,然后更牛逼的大佬却不用临时变量就完成了两个数的交换,真的可谓:大佬啊!那是怎么实现的呢,其实就是用到了数之间的基本逻辑关系,互相倒腾就能实现,说难也不难,只是我们平时习惯了创建变量来交换,今天就大开眼界,涨涨知识。1.代码编写1.异或(^)操作交换void swapAB(int *a, int *b){ *a =
2020-11-06 17:42:15 229
原创 C语言编写扫雷游戏,超简单
扫雷游戏1.扫雷游戏的流程2.代码编写3.总结通过学习C语言的基础知识,基本上是理解了大部分内容,现在就通过所学的知识,写个简单的扫雷游戏,加深对基础知识的理解,正所谓实践是检验真理的唯一标准,我们要将学到的知识用在实践中,才能体现出知识的价值以及自己的掌握能力。1.扫雷游戏的流程首先的有两个地图分别显示隐藏雷的图showMap()函数和真正雷的图mineMap()函数。其次就可以进入游戏让玩家输入位置Input()函数并对输入位置进行校验,然后,判断其是否踩雷,如果踩雷,则游戏结束,如果没有踩雷
2020-11-04 12:19:01 505
原创 三子棋小游戏(可扩展为五子棋)
三子棋前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结三子棋是五子棋的简化版,一局游戏的具体,流程是:1.前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):
2020-11-03 16:01:13 662
原创 递归函数实例大全2
递归函数实例应用1.打印一个数的各个位2.3.4.总结递归函数的应用有很多,在上一篇的博客中就写了部分递归函数的实例应用,在这里在补充一些,希望对我们的学习能有所帮助,同时提升自己的编程能力。1.打印一个数的各个位代码如下(仅供参考):#include<stdio.h>#include<windows.h>#pragma warning (disable:4996)void printNum(int n);//声明打印一个数的每一位的函数int main(){
2020-10-29 16:33:08 489
原创 递归函数实例大全 1
常见的递归大全一、递归函数二、常见的递归1.2.三、总结一、递归函数二、常见的递归1.代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import sslssl._create_default_https_context = ssl
2020-10-28 22:17:38 5765 1
原创 linux虚拟机VMware centos环境搭建
linux前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimpor
2020-10-24 19:55:05 152
原创 <<数据结构中最全的8种排序算法总结>>
冒泡排序、选择排序、插入排序 一、冒泡排序1.冒泡排序思想2.冒泡排序步骤3.冒泡排序代码二、选择排序1.选择排序思想2.选择排序代码三、插入排序1.插入排序思想2.插入排序代码一、冒泡排序1.冒泡排序思想交换排序基本思想是:两两比较待排序列中的元素,并交换不满足顺序要求的各队元素,直到全部满足顺序要求为止。而最简单的交换排序就是冒泡排序。2.冒泡排序步骤(1)对具有n个元素的序列按升序进行冒泡排序,首先将第一个元素与第二个元素进行比较,若为逆序,则将两元素交换。然后比较第二、第三个元素,以此类推
2020-10-23 12:42:53 451
原创 猜数字游戏,输入一个数若大了则输出高了,小了则输出低了,直到猜中为止
猜数字游戏,输入一个数若大了则输出高了,小了则输出低了,直到猜中为止。一、猜数字游戏规则一、代码编写二、结果分析一、猜数字游戏规则猜数字游戏相信大家都不陌生吧,当你从键盘输入一个数和要被猜中的数字相比,如果猜大了,则输出猜高了,猜小了则输出猜低了,在猜的过程中可以用二分法的思想进行猜测,直到猜对为止。一、代码编写二、结果分析```c<font color=#999AAA ><hr style=" border:solid; width:100px; height:1
2020-10-19 16:57:39 3212
原创 二分法查找有序序列元素
二分法查找数组中某个元素一、二分法思想二、代码及结果三、总结一、二分法思想对于已按照关键字排序的序列,经过一次比较后,可将序列分割成两部分,然后只在有可能包含待查找元素的一部分中继续查找,并根据试探结果继续分割,逐步缩小查找范围,直至找到或找不到为止。二、代码及结果代码如下(示例):#include<stdio.h>#include<string.h>#include"windows.h"int main(){ int arr[] = {1,12,36,45,
2020-10-16 17:29:48 993 1
原创 C++从入门(青铜)到入坑(王者)!
学习C++,从坚持开始!一、明确学习目标及未来期望二、VS2013环境搭建1.安装软件2.建立项目文件三、敲写代码1.调试2.总结对C++的渴望就好像对money的渴望,学好它不仅对我们来说是一们技能,更是我们对知识海洋的遨游,丰富头脑的好步子。生活从来不缺努力的人,缺的是努力的那点勇气,万事开头难,稳扎稳打才是C++的学习之道。在今后的生活中,每天抽出至少2小时的时间学习,不求谓之精华,只求王上至皇。下面就开启C++学习之旅。一、明确学习目标及未来期望在学习完C++之后至少能达到对知识点的熟练,
2020-10-09 18:34:43 538
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人