自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Boost搜索引擎

boost项目

2022-10-30 22:45:00 997 4

原创 TCP套接字编程

TCP与UDP的区别相当大。它充分地实现了数据传输时的各种控制功能,可以进行丢包时重发控制,还可以对次序乱掉的分包进行顺序控制。而这些再UDP中都没有。此外,TCP作为一种面向有连接的协议,只要在确认通信对端存在时才会发生数据,从而可以控制通信流量的浪费。UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收的那一刻,立即按照原样发送到网络上的一种机制。UDP是 User Datagram Protocol 的缩写,即用户数据报协议。

2022-10-19 16:12:44 1216

原创 网络基础1

网络前言

2022-10-18 19:07:03 691

原创 线程池~~

【代码】线程池~~

2022-10-18 17:14:31 364

原创 信号量~~

信号量本质是一个计数器~用来描述临界资源的有效个数~POSIX和systeam V信号量都用于同步工作,达到无冲突的访问共享资源。但是POSIX可以用于线程同步~使用信号量首先就要创建一个sem_t类型的变量#include //头文件sem_t sem1;

2022-10-10 16:21:17 677

原创 生产消费者模型

目录一丶生产者消费者模型1.生产者消费者模型的概念2. 生产者消费者模型的特点二丶生产消费者模型应用1.生产消费者模型基于阻塞队列的实现2.实现

2022-10-10 13:53:23 177

原创 多线程(二)线程安全

了解线程概念,理解线程与进程区别与联系。2. 学会线程控制,线程创建,线程终止,线程等待。3. 了解线程分离与线程安全概念。4. 学会线程同步。5. 学会使用互斥量,条件变量,posix信号量,以及读写锁。6. 理解基于读写锁的读者写者问题。

2022-10-09 12:24:23 351

原创 多线程(一)

线程概念

2022-10-07 20:23:06 255

原创 Signal

信号的产生,阻塞,终止及其演示

2022-10-07 18:31:12 173

原创 动/静态库

动静态库制作

2022-10-05 20:45:25 309

原创 基础I/O

本文是关于对与基础io的理解以及一些输入输出演示·

2022-10-05 18:52:03 314

原创 进程间通信

进程通信(Interpeocess communication)简称IPC;所谓进程间通信就是两个相互独立的进程之间完成交互工作,我们在之前学习到的所有的程序都是进程,他们之间相互独立,那么他们之间是怎么完成交互工作的呢,就比如你和你的微信好友是怎么发信息聊天的呢?

2022-10-05 14:47:18 214

原创 Linux--进程

🌹操作系统🎉💕🎉概念任何计算机系统都包含一个基本的程序集和~称为操作系统~而且操作系统包括内核(进程管理,内存管理,文件管理,驱动管理) 其他程序(例如函数库,shell程序等等)🎉操作系统理解在我看来既然是操作系统那么就是设计出来为人类服务的系统,我们可以使用它完成某些特定的要求,设想在生活中,总是我们总是有需求~提要求~自己去完成~需求是否可以被实现~我们生活中总是这样~那么操作系统就是一个中央控制中心,当然你可以使用他~但是你不可以随意破化他~那么操作系统怎么判断你是否为非法分子

2022-06-20 13:55:46 312 2

原创 二叉树oj题

二叉树的层序遍历思路分析:题目要求从上而下并且为从左到右依次打印出每层的值~,这也称为二叉树的广度优先搜索(BFS),BFS通常借助队列来实现"~而且这里是需要使用二维数组返回的~处理流程:如果根为空那么就会直接返回了~不为空就先把根入队的, 计数器size++;为这一层节点的个数~然后将这一层pop掉的同时将这个节点的左右入队~这里需要一个临时的节点变量来记录这个节点的数据~然后将队列头节点pop掉~头节点pop掉左右孩子继续入队~在pop的同时将数据放入数组中存起来~c

2022-05-18 17:17:36 93

原创 Linux基础开发

⚔软件管理包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装. 软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系. yum(Yellow dog Updater, Modifified)是Linux下非常常用的一种...

2022-05-11 18:24:06 110

原创 算法笔记--Dp动态规划

题目描述 买卖股票最佳时机 想象我们平时买股票,肯定希望是在最低点买入,最高点卖出的,那么我们就可以遍历一下数组,要先记录最地位,也就是股票最低的时候你需要买入~那么什么时候卖出呢?我们假设一共有n天,第一天位最低为,那么你就要分别记录每天卖出的价格,然后去除最大的利润~最低买入价格位min,那么以后每天的价格就是n[price]-min的价格,分别记录他们~~我们首先设一个最小值。和一个最大值~int maxProfit(vector<int>& pr...

2022-05-05 11:41:24 223

原创 Datastructure--(七大排序算法)

我们日常生活中,很多地方都需要使用排序方法,比如你逛淘宝,天猫👇👇👇👇👇​​​​​​​👇你想要买一些便宜的或者贵的,或者性价比比较高的,都可以按照你的需求给你排列出来,这么多种物品, 总有一款是适合你的~~~这里就使用到了排序算法👇 👇👇👇👇👇👇👇👇👇👇👇👇👇👇。介绍数据结构中几种比较常用的排序方法~~~1.插入排序插入排序思想比较简单,在我个人看来插入排序和冒泡排序有一点相似,但是他们说这两个排序思想根本不是一回事~~~~插入排序的思想和日常生活中大家玩的扑克牌的思想就很相似,你揭...

2022-05-04 19:45:12 425 1

原创 Linux 相关命令及权限

目录🎄Linux下相关指令✨ls指令✨pwd指令✨cd指令✨touch指令✨mkdir指令✨rmdir指令和rm指令✨man指令✨cp指令✨mv指令✨cat✨less指令✨find指令✨grep指令✨zip/unzip指令🎄Linux权限理解🎍权限管理✨基本权限🎍文件访问权限的相关设置方法✨chgpr users /abc/f2✨file指令🎍目录的权限✨粘滞位csdn主页🎄Linux下相关指令

2022-05-02 15:36:09 518

原创 二叉搜索树--BinarySerachTree(BSTree)

🎇二叉搜索树🎆二叉搜索树概念我们知道树是非线性结构的,但是在二叉树知识中我们可以创建某种类型的树,对它进行~增~删·~查~改。Such as BInarySerachTree我们叫它二叉搜索树,一般及简写为BSTree。✨character:若它的 左子树不为空,则左树上的所有节点的值都小于根节点的值~ 若它的右子树不为空,则右子树上的所有节点的值都大于根节点的值·~ 它的左右子树也分别二叉搜索树~这个树长这个样子👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇我们可以

2022-04-24 14:53:08 839 1

原创 再谈指针--看不懂扇我

📍指针的含义所谓指针及是一个变量,用来存放元素的地址,但是这里我把它理解为它是指向一块地址空间的。这样感觉更贴切一些。 指针是个变量就会有大小,在32位机器下大小为4个字节,64位机器下大小为8个字节。 通过对指针的解引就可以访问到指针所指向那块空间的内容。 指针的类型决定了对指针+-的步长,包括指针的运算。📍字符指针字符指针就是指向字符型数据的指针int main(){char c = '2'; char* p = &c; cout << c <&l

2022-04-19 14:46:37 365 1

原创 C++多态——(c+要笑着学)

目录🎶多态的概念🎶多态的定义及实现✨多态的构成条件✨在继承中实现多态的必要条件✨虚函数✨虚函数重写Exception:✨override And final✨重写,重载,隐藏的比较🎶抽象类🎶多态的原理✨summarycsdn🎶多态的概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态比如我们在乘公交车的时候使用的公交卡,学生上面就会显示一下~~bi学生卡,老人就会bi一下...

2022-04-18 20:38:12 578

原创 c++进阶(继承)

目录🏀.继承的概念及定义⛹.继承方式访问变化🏀.基类派生类赋值转换🏀.继承中的作用域🏀.派生类的默认成员函数🏀.友元与继承/静态成员继承🏀.菱形继承及虚拟继承csdn主页🏀.继承的概念及定义 听到继承这个关键(inheritance)词我们不难想到生活中有不少这样的例子,孩子继承家业~学生继承老师的技能,这在c++中是一样的,c+设计者智慧有可能也是来自生活吧。在c++当中继承是可以让类代码可以复用的高效手段,它允许我们在原有的类上进行有效的拓展,...

2022-04-16 16:56:36 592

原创 vector使用介绍及其实现--使用(迭代器失效问题)

1.vector的介绍使用1.1vector的介绍1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。 3. 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言

2022-04-12 09:23:48 545 5

原创 STL--String的使用介绍及其实现

目录​1.什么为String类2.标准库中的String类2.1String类的常用接口说明3.string对象的模拟实现3.1类成员介绍4.string模拟实现全代码1.什么为String类 在c语言中我们在对字符对象进行操作的使用时候常常会注意到字符或者字符串对象都是以'\0'为结尾的,我们想要进行一个字符串的遍历以及增删查改,我们需要创建一个字符数组再来进行操作。这样好像创建一个对象再来进行操作,每次都会消耗我们时间。然而在C++中,之所以说是面...

2022-04-11 13:32:17 1214

原创 二叉树的堆实现以及链式二叉树

1.树的概念1.1树的概念 我们之前学习了线性表,链表,栈以及队列。这些数据结构类型。总结一下这些结构都属于线性的结构,但是只有这些结构管理起来数据却还远远不够,就比如我们想要做一个文件结构,我们都知道的文件结构是点开一个里面还有一个。比如上面这样的,因此树状结构就在这里体现的淋漓尽致了。首先树状结构不是线性的,它是一个由n个节点(n>0)个有限节点组成的一个具有层次关系的集合,之所以叫它树状结构是因为它长的像一个倒挂着的树。树有一个特殊节点,就是第一个节点,称为树的根这...

2022-04-10 21:12:25 493

原创 C++string模板初阶

目录1.泛型编程2.函数模板2.1函数模板概念2.2函数模板格式2.3函数的隐式实例化和显式实例化2.3.1隐式实例化2.3.2显式实例化3.类模板3.1类模板的定义格式3.2类模板的实例化1.泛型编程在使用函数交换时我们通常会定义很多像加法,减法的函数,如果类型不同的话我们还需要更改类型,这样需要定义好多函数,但是在c++中有一个非常简便的方式,那就是泛型编程。所谓泛型编程就像是制造一个模具来让里面生成各种类型的函数。依次达到高效的目的。2.函数

2022-03-19 11:33:09 682 1

原创 c++内存管理

1.c++内存分布首先是一段代码和相关问题。int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static int staticVar = 1; int localVar = 1; int num1[10] = {1, 2, 3, 4}; char char2[] = "abcd"; char* pChar3 = "abcd"; int* ptr1 = (int*)malloc(sizeof (int)

2022-03-19 10:04:29 745

原创 c++类和对象(中)

1.类的6个默认成员函数如果类中什么成员都没有,简称空类。空类中什么都没有么?并不是的,任何一个类在我们不知情的情况下都会自动生成6个默认成员函数。默认成员函数初始化和清理1.构造函数主要完成初始化工作2.析构函数主要完成清理工作拷贝复制1.拷贝构造是使用同类对象初始化创建对象2.赋值重载主要是把一个对象赋值给另一个对象取地址重载主要是普通对象和const对象取地址,这两个很少会自己实现。2.构造函数...

2022-03-01 14:52:04 379

原创 c++类和对象

1.面向对象和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。2.类的引入C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。class student{ char _name[10]; int _age; int _id;public: void Init(const char* name, int

2022-02-26 21:06:26 93

原创 初识c++

1.c++关键字C++总计63个关键字,C语言32个关键字2.命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作 用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字 污染,namespace关键字的出现就是针对这种问题的。2.1命名空间定义及其使用定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名 空间的成员。 names

2022-02-08 14:07:04 88

原创 动态内存管理

目录1.为什存在动态内存管理2.动态内存函数介绍2.1 malloc2.2 calloc2.3 realloc3 动态内存分配的常见错误i3.1 对NULL指针的解引用操作3.2对动态开辟空间的越界访问3.3对非动态开辟内存使用free释放3.4使用free释放一块动态开辟内存的一部分 3.5对同一块动态内存多次释放3.6动态开辟内存忘记释放(内存泄漏)1.为什存在动态内存管理我们已经知道的内存开辟方式为int a...

2022-01-23 13:36:46 72

原创 结构体的内存对齐及传参

结构体内存对齐前面学习到结构体以及枚举变量的使用,这里介绍一下结构体的内存对齐情况,struct S1{ char c1; int a; char c2;};struct S2{ char c1; char c2; int a;};int main(){ struct S1 s={'x',100,'a' }; printf("%d\n", sizeof(struct S1)); printf("%d\n", sizeof(struct S2)); return

2022-01-22 15:00:50 117

原创 指针进阶习题

int main(){ int a[] = { 1,2,3,4 }; int* p1 = (int*)(&a + 1);//这里取地址a,是取出整个数组的地址,整个数组地址+1,跳过整个数组, int* p2 = (int*)((int)a + 1); printf("%x,%x", p1[-1], *p2); return 0;}这里取地址a,是取出整个数组的地址,整个数组地址+1,跳过整个数组,然后强制转化为int*,其实也就是int(*p)[10],指向数组的指针-1,向后.

2022-01-21 13:25:08 484

原创 调试技巧及其数据的储存形式

一个面试题如下int main(){ int i = 0; int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; for (i = 0; i <= 12; i++) { arr[i] = 0; printf("hello bit\n"); } return 0;}问这段代码最后输出结果是什么,因为在栈中地址是由高相低存放的先为arr数组创建了地址,然后才是i的空间;...

2022-01-20 15:47:22 238

原创 千字解析指针进阶

1.指针的含义前面学过了初级指针的知识,指针指向一个变量或者常量的地址,可以通过指针变量来修改指向地址的内容。指针的定义方式为类型名*指针变量名称,int*p.以上只是指针的基础知识。2.指针变量作为函数参数函数的参数不仅可以是整形,浮点型,字符型。还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。void swap(int* p, int* n){ int x = 0; x = *p; *p = *n; *n = x;}int main(){ in

2022-01-11 19:28:42 282

原创 操作符及其练习

位操作符位操作符包括(左右移操作符,按位与,按位或,按位异或,取反)这六种操作符逻辑操作符逻辑操作符包括(逻辑与,逻辑或,逻辑异或)其中&&两个表达式中必须两个都为真则为真,一个为假则为假,|| 两个任何一个为真则为真,两个同时为假则为假。...

2021-12-11 20:21:38 438

原创 数组的使用

一维数组的引用在定义过一维数组之后就是对数组的引用,这里应当注意的是:只能引用数组元素而不能一次整体调用整个数组全部元素的值。引用数组元素的表示形式为 数组名【下标】例如,a【0】就是数组a中下标为0的元素,其实就是一个简单变量的地位和作用。可以是整形常量也可以是整形表达式。a【0】=a【5】+a【7】-a【2*3】这里每个数组元素都代表一个整数值。注意:定义数组使用到的“数组名【常量表达式】”和引用数组元素用的“数组名【下标】”形式相同但是意义完全不一样!!int main(){

2021-12-01 10:26:13 313

原创 初始函数及其递归调用

函数的定义c中函数分为两种,一种是库函数也就是c语言自身函数库的函数。可以在引出头文件后直接使用。另一种就是自定义函数,顾名思义就是用户自己定义的函数,用来实现某些特定的算法函数的调用函数的调用较为简单print_star(); //调用无参函数,c=max(a,b); //调用了有参函数上图为函数的调用形式。其一般形式为:函数名(实参列表。如果实参列表包含多个实参,则个参数间用逗号隔开。例如:Solve_nu(arr[i],'x',5).函数调用时的数据传递在调用有参

2021-11-27 10:50:45 525

原创 循环作业练习

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){ int i = 1; int count = 0; for (i = 1; i <= 100; i++) { if (i % 10 == 9) { printf("%d ", i); count++; } if (i / 10 == 9) { count++; printf("%d", i); }prin.

2021-11-22 16:52:21 205

原创 c语句--入门

目录控制语句控制语句控制语句:用于完成一定的控制功能。c语言只有9个控制语句分别为:if ()else() (条件语句)#include<stdio.h>int main(){ int i = 1; int count = 0; for (i = 1; i <= 100; i++) { if (i % 10 == 9) count++; if (i / 10 == 9) count++; } printf("%d",

2021-11-22 16:45:06 182

空空如也

空空如也

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

TA关注的人

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