自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++模板类

随着c++发展,有一部分代码就会出现这样的情况:实现的内容相同,但是参数不同。模板类就是为解决这类情况来的,是一种泛型编码。即与数据类型无关的通用程序设计技术。

2023-01-10 10:30:37 252

原创 C++ New和Delete

new是c++中用于动态申请空间的运算符,malloc也是用于动态申请空间的,但malloc是函数。

2022-12-30 10:57:26 685 1

原创 Linux-线程互斥

线程互斥指的是在多个线程间对临界资源进行争抢访问时有可能会造成数据二义,因此通过保证同一时间只有一个线程能够访问临界资源的方式实现线程对临界资源的访问安全性。

2022-12-28 16:36:02 191

原创 Linux 多线程

线程是进程中的一个执行流程,线程是cpu调度的基本单元,而进程是系统进行资源分配的基本单元。

2022-12-26 15:55:16 173

原创 c++运算符重载、日期类

日期类非常经典,在日期类里包含了很多运算符的重载,以及构造函数、析构函数等。

2022-12-06 15:49:09 304

原创 Linux信号量、进程信号

首先了解一下system-V标准,该标准与消息队列、共享内存和信号量有关。这篇不说共享内存,我在之前的文章里说过了,也不重点说消息队列因为这个不常用,只简单提一下,这回主要写linux的信号量和进程信号,以及相关函数操作。#信号量 #消息队列 #信号的注册注销 #实时信号非实时信号 #signal函数 #sigaction函数 #sigprocmask函数

2022-12-05 11:05:18 200

原创 c++ this指针

this指针是c++里的一个关键字,一个对象的this指针不是对象的一部分,this指针是在访问非静态成员变量时编译器自动生成的,this的作用域是在类的内部。

2022-12-02 15:17:33 425

原创 c++ 类、面向对象

c++在C语言基础上增加了面向对象编程,c++支持面向对象编程,而类则是c++的核心特征,用于指定对象形式。类中的数据、方法、函数都是类的成员。

2022-12-02 11:33:53 61

原创 c++ auto

auto就是根据后面的值来推测自己的类型,使用auto可以简化初始化变量,但要注意使用auto一定要初始化。#auto、#基于范围for循环、#nullptr指针空

2022-12-02 10:34:26 81

原创 c++缺省参数、函数重载、引用

缺省参数就是给函数设置默认值,缺省参数只能在c++中使用,在C语言编译器里会报错。 函数重载是指在相同的作用域中通过相同的函数名但不同的参数类型或不同的参数个数来实现不同的功能。 引用可以理解为给变量取别名。

2022-11-20 16:25:55 348

原创 进程间通信——共享内存

共享内存区别于管道,是最快的进程间通信方式,不需要对数据进行拷贝就可以实现数据交换。不同进程将共享内存链接到各自的空间,所有链接了这块共享内存的进程都可以共同访问这个共享内存中的数据。 另外一题,共享内存没有同步机制,而管道具有同步机制。#shmget、shmat、shmdt、shmctl、ipcs -m、 ipcrm -m

2022-11-15 15:52:50 202

原创 进程间通信——管道

操作系统给用户提供了几种进程间通信的方式(管道、共享内存、消息队列、信号量)。 进程间通信的缘由是因为进程之间是相互独立的,无法直接进行通信,所以需要依赖操作系统提供相应的方式#进程间通信、匿名管道、命名管道、半双工通信、pipe、mkfifo、管道符|

2022-11-11 17:49:01 699

原创 静态库动态库——Linux

库文件就是将已经实现的代码打包,生成的不是可执行程序,而是个别人提供的接口。#静态库动态库、.a、.so

2022-11-11 15:38:23 321

原创 重定向——Linux

重定向在linux中的应用比较多,重定向就是把原本要写入A的数据,不写入A,反而写入B了,在linux中可以用重定向来完成进程间通信(使用管道)。#重定向、管道符|、dup2

2022-11-10 11:17:31 335

原创 Linux文件操作符,各个文件调用接口

在linux下操作文件可以用C语言那一套,使用fopen,fwrite,fread,fseek和fclose等函数即可完成基本文件操作,也可以用linux的系统调用接口:open、write、read、lseek和close#文件描述符的理解、linux创建文件无权限、创建文件失败

2022-11-08 22:13:36 624

原创 基本排序(4)——归并排序、计数排序

归并排序适用于对大量数据进行排序(指超过内存存储上限的数据量,其他排序算法完全无法处理),计数排序则是另一种思路。#归并排序、计数排序

2022-11-08 09:33:04 319

原创 基本排序(3)——快速排序

快速排序是一种效率非常高的排序方法,排序时需要先取一个基准值。该方法有三种不同实现方式。#快速排序,hoare,挖坑法,前后指针法

2022-11-07 11:04:46 179

原创 基本排序(2)——选择排序

选择排序应该是最好理解的排序算法,核心思想就是在遍历数组找最大或最小的值将其放在最后,然后循环次数减一再重复以上操作。 由此可知选择排序是不稳定的排序。 选择排序也有一定缺陷,他会重复比较前面一些较小或较大元素,其时间复杂度为O(N^2)相比之下堆排序效率更高。 选择排序、堆排序

2022-11-02 16:37:52 72

原创 基本排序(1)——插入排序、希尔排序

排序算法有很多种,而且非常重要,以前常见的排序算法是冒泡排序,不过相比与冒牌排序,还有很多很好用,时间复杂度更低的排序算法。插入排序,希尔排序

2022-11-01 16:17:10 92

原创 二叉树的相关题型

笔记、翻转二叉树、相同二叉树、对称二叉树、二叉树的子树、平衡二叉树

2022-10-28 16:21:24 512

原创 进程控制——LINUX

进程控制包括创建、终止、等待、程序替换这四个内容。fork、vfork、子进程创建后会保留父进程的什么、阻塞与非阻塞、wait与waitpid、status组成、异常信号值、退出码、

2022-10-25 10:46:41 361

原创 Linux内存管理方式

Linux中内存管理方式有三种:分段式、分页式、段页式。段号、段内偏移量、页号、页内偏移量、缺页中断、内存交换、内存置换算法

2022-10-20 16:01:43 532

原创 Linux之进程、虚拟地址

进程是Linux里面很重要的一个概念,,进程就是指运行中的的程序,是程序动态运行过程的描述(这里的描述包含标识符、内存指针、上下文数据、程序计数器等),也可以称之为pcb(进程控制块)。虚拟地址和真实地址不一样,但他们之间又有对应关系。

2022-10-07 16:58:02 300 2

原创 C语言用栈实现队列

栈的特点是后进先出,而队列的特点是先进先出,如果要用栈实现队列的特点,这里可以用两个栈来实现,一个栈用于做入栈操作,另一个做出栈操作,在两个栈的配合下可以实现队列。

2022-10-03 17:00:31 298

原创 C语言用队列实现栈

队列的特点是先进先出,而栈是先进后出,我们能否用队列来实现栈的特征呢,当然是可以的,我们需要两个队列来实现,实现入栈操作时只需要选择一个队列正常入队即可,出栈时则需要把不为空的队列的前N-1个元素全部转移到另一个队列,再将剩下的一个元素出队即可。

2022-10-03 16:35:05 381

原创 C语言循环队列的实现

相比于一般队列,循环队列优势更加明显,循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。

2022-10-03 16:06:24 433

原创 C语言——顺序表

顺序表的创建和链表相似,但顺序表里元素的地址是连续的,也就是说顺序表可以像数组一样通过下标来查找元素,顺序表结构里除了数据区以外还有两个数据,一个是length用来记录顺序表当前的长度,另一个是size用于记录顺序表最大长度。

2022-09-20 16:08:23 267

原创 Linux下生成可执行程序和可调试程序

我们在编译器上编写的程序只需要按运行键就可以运行出结果,在linux上我们也能编写程序,不过linux上要运行程序还需要手动做一些处理,本篇就讲讲linux上编写好的程序的生成,程序的调试以及打断点。(gdb、print、start'、run、next、step、info、break、backtrace、bt等)

2022-09-15 14:49:24 2757

原创 Linux相关指令

Linux一些简单指令

2022-09-07 15:11:55 209

原创 单向链表——C语言

链表相较于顺序表来说有很多优点,尤其是表中间插入和表头插入操作更简单,时间复杂度更低,而且空间利用率更高。单链表从表头开始,每个节点之间用指针来链接,最后一个节点的指针指向NULL,所以链表所用的计算机内存不一定是连续的,而每个节点都由数据域和指针域构成。

2022-08-21 12:40:14 1480

原创 内存的动态申请

为什么要动态申请内存?我们知道函数的调用是C语言里非常常见的,有些函数调用时需要传递参数比如数组的地址,如果我们在函数里只用静态申请数组的话会使程序的可移植性降低,为了灵活使用函数,所以会用到动态申请。...

2022-08-18 16:07:54 793

原创 文件操作——C语言

文件操作顾名思义就是可以利用我们的程序来操作指定计算机硬盘里的文件(分为以下几种方式:r(只读)、w(只写)、r+(可读可写)、w+(可读可写)、b(以二进制方式读写)),打开文件后千万记得关闭文件。...

2022-08-15 17:12:51 207

原创 时间复杂度

时间复杂度O(N)就是关于问题N的数学表达式,即N被执行的次数

2022-08-13 16:53:48 91

原创 C语言memcpy函数和memmove函数

memcpy函数和memmove函数都是C语言的库函数,作用都是从一个空间copy一定长度的内容到另一个空间,不同的是memcpy只是单纯的拷贝,当两个空间发生局部重叠时无法保证拷贝的正确(正不正确取决于编译器),而memmove可以保证拷贝正确。...

2022-07-20 18:12:05 4875

原创 字节序与数据储存

字节序、大端、小端、大小端、整形在计算机内存中的储存,浮点型数据在内存中的储存,浮点型数据转换为二进制、(IEEE)754标准、运算转换、整形提升,如何用代码分辨自己的字节序

2022-06-15 10:23:36 1006

原创 数组赋值初阶

C语言中数组的赋值有很多种,常见的就是诸如还有就是不带下标的但是赋值时不能超过数组的有效范围,以下错误示范还有就是二维数组的赋值可以是以下几种一维的下标可以不写,但二维下标不能少而且不能给数组赋空值...

2022-05-04 10:18:53 429

原创 浅聊栈的概念以及计算机底层运算逻辑

对栈的理解

2022-04-01 19:14:02 481 1

原创 编程学习与规划

作为为注册以来的第二骗文章,我得先介绍一下自己,我是一位来自四川成都的不愿透露真名的大学生,可以叫我的英文名Kyogo,现在在读于西安工业大学。按照我大学四年的规划,我会用一年时间为计算机软件方向打下基础并且在此过程中进一步确定目标和下一步规划,由于我现在大二,时间还是不太充分,平均每天能拿出2~3个小时来学习,周末的话可以学很久。我有一个梦想就是做一款自己的游戏,然后自己运营。我很欣赏mhy这家游戏公司,用心做游戏。大概高二时我就开始接触编程了,那时我就产生了不小的兴趣,一开始我尝试过自学,程

2022-03-30 15:34:09 3029

原创 初学Java后遇到的第一个问题

java和我之前学的C还是有很多区别,比如界面还有控制台,不过好在他们语法是一样的。我写c程序时文件时直接新建的,而且每个新建的程序之间互不影响,全都可以放在同一个文件夹里。但我用同样的创建方式写java时发现同一个文件夹(java里叫包)里的程序有很大关联,如果同一个包里的某一个类文件发生错误,那么整个包里的程序都不能运行。 如果要避免以上情况就要学会分装,把不相关的类分装在不同的包里,而且类名和包名最好不要有中文。...

2022-03-30 15:19:59 414

空空如也

空空如也

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

TA关注的人

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