自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】线程同步及基于BlockingQueue的生产者消费者模型

在多线程编程中阻塞队列(Blocking Queue)是一种常用于实现生产者和消费者模型的数据结构。其与普通的队列区别在于,当队列为空时,从队列获取元素的操作将会被阻塞,直到队列中被放入了元素;当队列满时,往队列里存放元素的操作也会被阻塞,直到有元素被从队列中取出(以上的操作都是基于不同的线程来说的,线程在对阻塞队列进程操作时会被阻塞)3即3种关系,2即两种角色,1即一个交易场所。1、生产者VS生产者:竞争 互斥。3、生产者VS消费者:互斥、同步。2种角色:生产者和消费者。BlockQueue模块。

2023-12-16 16:37:31 221

原创 【Linux】面试常考可重入VS线程安全

Linux线程安全和重入深度辨析

2023-12-16 14:48:17 113

原创 【Linux】线程互斥

Linux线程互斥,互斥量,pthread_mutex_t,pthread_mutex_init,pthread_mutex_lock,pthread_mutex_unlock等接口的使用!

2023-12-15 23:22:00 477

原创 【C++】特殊类设计及单例模式

C++特殊类设计,单例模式:实现一个只能定义一次的类;实现一个只能在堆上定义对象的类对象,实现一个只能在栈上定义对象的类等等

2023-12-15 12:25:37 308

原创 【Linux】线程控制:线程创建、终止、等待、分离等

本文只要是对初学者快速上手Linux线程的操作,包括线程的创建pthread_create,线程的等待pthread_join,线程的终止pthread_exit,线程的分离ptrhead_detach等等,

2023-12-14 13:34:24 296

原创 【算法笔记】动态规划,使用最小花费爬楼梯,详细刨析。

算法,动态规划,蓝桥杯,ACM。ICPC,使用最小花费爬楼梯

2023-12-12 15:41:01 77

原创 【Linux】线程的概念理解,从感知理解到全面深入

Linux因为是用进程模拟的,所以Linux下不会给我们提供直接操作线程的接口,而是给我们提供,在同一个地址空间内部创建PCB的方法,分配资源给指定PCB的接口。线程是CPU调度的基本单位,承担进程资源的一部分的基本实体。CPU调度的时候只看PCB,每一个PCB曾经被指派过指向方法和数据,CPU可以直接的调度,线程属于进程的一部分。在伟大的”计算机哲学“操作系统这本书中,一般给出线程的概念为:是在进程内部运行的一个执行分支(执行流),属于进程的一部分,粒度要比进程更加细腻和轻量化。传统意义上的进程PCB。

2023-12-12 15:02:18 185

原创 【C++】模拟服务器开发过程中异常的使用

【代码】【C++】模拟服务器开发过程中异常的使用。

2023-12-11 20:23:30 19

原创 【C++】C++异常语法、使用、规范、异常安全及异常的优缺点

实际中我们可以可以去继承exception类实现自己的异常类。但是实际中很多公司像上面一样自己定义一套异常继承体系。因为C++标准库设计的不够好用。如果有一个块抛出一个异常,捕获异常的方法会使用 try 和 catch 关键字。try 块中放置可能抛出异常的代码,try 块中的代码被称为保护代码。C++ 提供了一系列标准的异常,定义在 中,我们可以在程序中使用这些标准的异常。异常是一种处理错误的方式,

2023-12-11 12:03:25 210

原创 【Linux】进程通信之命名管道mkfifo

3. O_NONBLOCK disable:阻塞直到有相应进程为读而打开该FIFO。4. O_NONBLOCK enable:立刻返回失败,错误码为ENXIO。

2023-12-07 23:47:19 319

原创 【Linux】进程见通信之匿名管道pipe

在Linux中,pipe() 是一个底层系统调用,用于创建管道(pipe)。#include//使用所需包含的头文件对于参数pipefd是一个两个元素的整型数组,它是一个传出参数,用于存放管道的读写文件描述符。其中pipefd[0]为管道读端,pipefd[1]为管道写端。这两个文件描述符可以像其他文件描述符一样进行读写操作。

2023-12-07 16:21:36 109

原创 【面试题笔记】C++继承和多态常见高频经典面试题

C++继承和多态常见高频经典面试题。包含菱形继承,继承与组合,多态中的inline、static静态成员可以是虚函数吗? 构造函数可以是虚函数吗? 析构函数可以是虚函数吗? 对象访问普通函数快还是虚函数更快?等问题

2023-10-18 13:46:55 327

原创 【C++笔记】多态的原理、单继承和多继承关系的虚函数表、 override 和 final、抽象类、重载、覆盖(重写)、隐藏(重定义)的对比

【C++笔记】多态的原理、单继承和多继承关系的虚函数表、 override 和 final、抽象类、重载、覆盖(重写)、隐藏(重定义)的对比

2023-10-18 11:08:57 144

原创 【C++笔记】C++三大特性之多态的概念、定义及使用

C++三大特性多态的概念,定义及使用详细刨析。以及一些常见的细节处理和注意事项,本文章对于多态初学者有很大益处!

2023-10-08 20:51:50 220

原创 【算法笔记】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

我们可以定义一个类Sum,在类中定义两个静态的成员变量_i和_ret,其中_i表示n值的更新,_ret来统计累加和。通过实例化n个对象最后就可以达到_ret=1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)、位运算、递归、公式、sizeof。该题把我们的所有能用的方法都给限制死了,我们只能用一些的特殊的方法来做。不知道大家在思考的过程中考没考虑过C++中友元的特性和static修饰的变量的使用。

2023-09-27 11:50:21 2126 2

原创 C++中的赋值运算符重载和类的那点事

大家是否还记得我写过的详谈C++this指针一文,在类中是有一个隐藏的指针的,这里你看到的函数只有一个参数,但实际上是有两个参数的,隐藏的this指针和const Date& d。可以把类中的bool operator>(const Date& d)方法翻译成如下代码,来加深大家的理解。在c++中我们有时可能需要对类对象,进行算术运算和逻辑运算等操作,但是对于自定义类型的对象来说默认情况C++是不支持使用运算符的,如下面的日期类Date中所存在的问题,此时C++中引入了运算符重载,来解决这一问题。

2023-09-25 20:47:50 121

原创 Linux系统中MySQL库的操作,实操sql代码

本文主要是对linux系统下MySQL库操作的总结,包含创建、删除、修改数据库,数据库的编码格式和校验格式以及数据库的恢复和备份。

2023-09-23 18:11:05 105

原创 C/C++连接数据库,包含完整代码。

本篇文章意在简洁明了的在linux环境下使用C/C++连接远程数据库,并对数据库进行增删查改等操作。我所使用的环境是centos7,不要环境除环境配置外,代码是大同小异的。完整代码在最底部!!!

2023-09-22 21:06:38 1077 2

原创 详细刨析Linux权限。包含权限的概念、权限的修改、粘滞位等等。

既然在这里要讲解权限的相关知识,那么我想先谈谈什么是权限,在Linux中我对于权限的认识是一件事情是否允许被特定的人做。这句话可能还是比较抽象,下面举一个例子:某视频网站,如果是普通用户大家不可以观看VIP影视,但是VIP用户则可以观看,这里的能否观看VIP影视就是一件事情是否可以被特定的人做,而那个特定的人指的就是VIP用户。在Linux中关于权限的概念可以理解为不同的用户对事物属性的操作。在Linux中权限约束用户对文件操作时文件本身具有的天然的权限属性:r读权限、w写权限、x执行权限这些属性是否可以做

2022-06-24 22:35:46 199 1

原创 C++快速上手string的使用,刨析string常用成员函数,体验到C++的快乐。

string类的基本使用,string的构造,sting的运算符重载,迭代器,find,suustr,增删查改的使用等等

2022-06-07 09:30:43 438

原创 C++三大特性之继承,由浅入深全面讲解,由基础语法到深度刨析。

1.什么是继承及继承的语法1.1什么是继承?记住一句话,在C++中,继承是一种使用子类对代码进行复用的手段,在写对实际设计的时候可以将数据抽象出来,使代码更具层次性和结构性。1.2继承的语法1.2.1如何定义继承我们以定义一个父类People,一个子类为Student,其中父类也叫做基类,子类又称派生类。这里先不要纠结继承方式,下面我会给大家详细的介绍继承方式,基本语法为:有了基本语法的支持,我们看代码,如下:class People{protected: int _age; str

2022-04-11 20:34:49 1253

原创 C++类的基本语法二(初始化列表、友元、static成员、内部类)

【C++笔记】C++11 的成员初始化新玩法,初始化列表,友元函数和友元类,内部类及explicit关键字的语法体系

2022-04-01 19:54:10 186 2

原创 详谈C++中的this指针,一个合格的C++程序员必须具备的知识

引出this指针没有见过this指针的同学们看到这个地方,会忽然疑惑,this指针是什么个鬼东西,下面让我们来看一段类的定义与实例化的代码。class Date{ public : void Display () { cout <<_year<< "/" <<_month << "/"<< _day <<endl; } void SetDate(int year , int month , int da

2022-01-20 12:02:51 149

原创 C++类构造函数和析构函数详细刨析,高细腻度讲解

1、认识构造函数1.1构造函数的认识构造函数是C++类中一种特殊的成员函数,构造函数的作用不是开辟空间创建变量,而是对实例化的对象进行初始化。下面让我来看一下构造函数的特性:构造函数可以重载。构造函数函数名同类名一致。无返回值,注意不是void类型,是直接不需要返回值。对象实例化时编译器自动调用构造函数,保证每个对象都是被初始化的。类中如果我们没有自行定义构造函数,编译器会生成一个默认的构造函数,一但我们定义了,编译器就不会再定义默认的构造函数。1.2以学生类为例,来看一下我们自己定义的

2022-01-17 11:55:22 666 13

原创 C++类的基本语法。

1、由C语言的结构体进入到C++中的类我们在C语言中当需要定义多个变量的数据集合时,第一时间会想到使用结构体来进行定义,例如我们定义一个学生变量,包含姓名、年龄、性别等信息,代码示例如下:struct Student{ char name[12]; int age; char sex[4];};但是到了C++用,由于C++面向对象的语法特性,给struct关键字进行了升级,不仅仅可以在struct中定义变量,还可以定义函数,也由此可利用struct来定义一个学生类。代码示例如下:struc

2022-01-16 14:29:05 2494 9

原创 C语言小游戏-三子棋(详细实现+源码)

C语言实现三子棋游戏,可用于了解课设,一般小型项目。

2022-01-04 15:49:53 3490 7

原创 C语言函数栈帧的创建和销毁,以简单函数的调用来进行详细刨析

C语言函数栈帧的秘密

2022-01-02 19:12:01 511

原创 刨析C语言的程序环境

C语言程序运行的环境1、程序的翻译环境和执行环境2、详解编译+链接编译过程链接过程翻译过程详解3、 运行环境1、程序的翻译环境和执行环境在ANSI C的任何一种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境,它用于实际执行代码。见下图:在翻译环境又可分为编译和链接,在编译过程中又分为:预编译、编译、汇编过程,下面让我们来详细看一下编译+链接过程。2、详解编译+链接编译过程我们将翻译环境分为两个小的过程,编译(依赖编译器,VS下的编译

2021-10-19 17:42:52 391

原创 一篇文章玩转C语言动态内存,轻松管理动态内存空间

C语言动态内存管理1、动态内存分配存在的原因2、动态内存函数的介绍2.1malloc函数2.2free函数2.3calloc函数2.4realloc函数3、常见的动态内存错误3.1对NULL空指针的解引用操作3.2对动态开辟空间的越界访问3.3对动态开辟空间的越界访问3.4使用free释放一块动态开辟内存的一部分3.5对同一块内存的多次释放4、后续有动态内存的面试题及其运用,收藏+关注不迷路哟。1、动态内存分配存在的原因我们普遍定义变量的时候,经常采用以下的写法:char str;//在栈上开辟1个字

2021-09-26 22:35:18 219

原创 C语言自定义数据类型:结构体,枚举,联合

C语言自定义数据类型1、结构体1.1结构的声明1.2结构的自引用1.3结构体变量的定义和初始化1.3.1结构体变量的定义1.3.2结构体变量的初始化1.4结构内存对齐1.5结构传参2、位段2.1什么是位段2.2位段的内存分配2.3位段的跨平台问题3、枚举3.1枚举类型的定义3.2枚举类型的定义3.3枚举的优点4、联合体4.1联合类型的定义4.2联合的特点4.3联合体的大小计算1、结构体1.1结构的声明结构的基础知识结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。在C语言

2021-09-23 15:34:56 277 1

原创 玩转C语言库函数。包含strlen、strcpy、strcmp、strcat、memcmp、memmove、strstr等等常用的库函数

C语言库函数前言strlenstrcpy字符串拷贝strcat字符串连接或者字符串追加strcmp字符串比较strncpy指定长度的字符串拷贝strncat指定长度的字符串最加strncmp指定字符串长度的比较strstr字符串查找函数strtok切分字符串函数strerror错误信息报告函数memcpy内存拷贝函数memmove可重叠的内存拷贝函数memcmp内存比较函数前言C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中。字符串常量 适

2021-09-22 17:28:00 310 1

原创 一篇文章搞定C语言指针,指针超详细讲解,及指针面试题

C语言指针进阶1、 字符指针2、指针数组3、数组指针4、数组参数、指针参数5、函数指针6、函数指针数组7、指向函数指针数组的指针1、 字符指针常见的字符指针在指针的类型中我们知道有一种指针类型为字符指针 char* ;一般使用为:int main(){ char ch = 'w'; char *pc = &ch; *pc = 'w'; return 0;}不可修改的字符指针int main(){ char* pstr ="hello";

2021-09-21 19:59:56 767

原创 大厂面试题C语言的数据存储相关习题

大厂面试题C语言的数据存储相关习题第一题、请简述大端字节序和小端字节序的概念,设计一个小程序来判断当前机器的字节序。先来了解什么叫做大小端:1、大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;2、小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。方法1:#include<stdio.h>int check_sys(){ int a=1; retuen *(char*)&

2021-09-19 21:52:30 186 1

原创 详细刨析C语言数据的储存

C语言数据的存储1、数据类型的详细介绍2、类型的基本归类3、整形在内存中的存储4、大小端介绍1、数据类型的详细介绍我们在C语言中已经学到了许多基本的内置数据类型,下面让我们来看看。char //字符数据类型 1个字节大小short //短整型 2个字节大小int //整形 4个字节大小long //长整型 4个字节大小long long //更长的整形 8个字节大小float //单精度浮点

2021-09-19 09:38:39 131 1

原创 C语言中的定位,谈谈对指针的基本理解

在C语言中和地址相遇-指针1、指针是什么?3、指针和指针类型3、野指针4、如何规避野指针5、指针运算6、指针和数组7、二级指针8、指针数组1、指针是什么?在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(pointsto)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。谈谈我们对内存的了解地址指向的一块空间,其空间能够存放数据,下图这种形象了

2021-09-12 18:09:45 495

原创 C语言隐式类型转换和算术转换详讲

表达式求值隐式类型转换如何进行提升的?算术转换操作符的属性隐式类型转换C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。整型提升的意义:表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。因此,即使两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整型操作数的标准长度。通用CPU(g

2021-09-09 22:10:35 662

原创 C语言操作符和表达式详细讲解

文章目录1、操作符分类:2、算术操作符3、移位操作符4、位操作符5、赋值操作符6、符合赋值符7、单目操作符:只有一个操作数的操作符8、关系操作符9、逻辑操作符10、条件操作符11、逗号表达式12、下标引用、函数调用和结构成员1、操作符分类:1、算术操作符 + - * / %2、移位操作符 << >>3、位操作符 & | ^4、赋值操作符 = += -= …5、单目操作符 sizeof ! ++ –6、关系操作符 > >= < <= !=

2021-09-06 23:44:03 265 1

原创 C语言数组详讲(一维数组、二维数组的创建、初识化及其使用等;建议收藏,干货慢慢)

文章目录1、什么是数组?2、一维数组的创建3、一维数组的初始化4、一维数组的使用5、一维数组在内存中的存储6、二维数组的创建7、二维数组的初始化8、二维数组的使用9、二维数组在内存中的存储10、数组越界11、数组作为函数的参数12、数组名是什么?1、什么是数组?C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个单独的变量,比如 runoob0、runoob1、…、runoob99,而是声明

2021-08-22 22:11:27 793

原创 不同于你所熟知的“循环”,玩转函数递归

文章目录什么是函数递归?函数递归的必要条件关于无限递归下去所出现的问题递归例题,理清递归的逻辑递归与迭代(循环)什么时候使用递归?递归注意的事项什么是函数递归?程序调用自身的编程技巧称为递归( recursion)。 递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的主要思考方式在

2021-08-20 17:24:33 83

原创 一篇文章玩转C语言函数语法,领悟函数的用法、效率

这里写目录标题函数函数是什么?C语言的函数分类库函数自定义函数函数的参数函数的调用函数的嵌套调用和链式访问函数的定义和声明函数本章主要掌握函数的基本使用和递归函数是什么库函数自定义函数函数参数函数调用函数的嵌套调用和链式访问函数的声明和定义函数递归函数是什么?数学中我们常见到函数的概念。但是你了解C语言中的函数吗?维基百科中对函数的定义:子程序。在计算机科学中,子程序(英语:Subroutine, procedure, function, routine, method, s

2021-08-18 15:52:01 223 4

火车票售票系统数据库设计.doc

火车票售票系统的数据库设计的设计报告,在该数据库中包含如下数据表: 乘客信息(乘客名、车票类型、座位号、购票时间、手机号、身份证号、乘客编号、检票口、列车编号) 乘务信息(列车长、服务员、乘务员、列车编号、手机号) 列车信息(列车编号、时间) 路线信息(到达时间、发车时间) 购票信息(购票的id,几等座,检票口,列车id,所需的钱,到达时间,发车时间,到达站,发车站) 退票信息(购票id,购买人id,购买人名字,身份证检票口,列车id,所需的钱,到达时间,发车时间,到达站,发车站) 换票信息(购票id,购买人id,购买人名字,身份证,检票口,列车id,所需的钱,到达时间,发车时间,到达站,发车站,新检票口,新列车id,新所需的钱,新到达时间,新发车时间,新到达站,新发车站) 座位信息(列车编号、座位编号、乘客名、座位位置、上站地点、出站地点、可座时间、乘客人电话) 特殊乘客信息(特殊人编号、特殊乘客姓名、特殊乘客性别、特殊人电话、特殊人类型、特殊人座位) 时刻信息(序号、车号、入站地、到达时间、发车时间、停留时间) )。 如有需要源码学习请关注收藏,联系博主。

2023-09-23

空空如也

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

TA关注的人

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