自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

分享学习过程中的知识和感悟

分享学习过程中的知识和感悟

  • 博客(107)
  • 收藏
  • 关注

原创 VM-Ubantu中使用vscode头文件报错——解决办法

VM-Ubantu中使用vscode头文件报错——解决办法。使用快捷键shift+ctrl+p,点击Edit Config(JSON),并将下面的代码复制进去即可

2024-09-21 23:37:01 388

原创 ubantu数据库安装以及使用——mysql+redis

ubantu数据库安装及使用——mysql+redis

2024-09-13 14:56:39 1325

原创 分享一本算法指南——代码随想录

为想学习算法但是没有方向的同学提供一条可行的学习路线。

2024-09-04 23:47:08 461

原创 宵暗的妖怪

遇到自认为对的代码,应该和正确代码同时测试相同的用例,并对比他们最后不同的点,并找出原因。

2024-08-25 11:39:08 212

原创 MySQL 事务——读提交,读未提交,可重复读,串行化,不可重复读、幻读、不可重复读

读提交,读未提交,可重复读,串行化,不可重复读、幻读、不可重复读

2024-07-22 15:11:22 702

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

进程间通信使用共享内存+sem_init ,sem_open ,信号

2024-07-21 11:16:26 277

原创 虚继承+虚函数——观察内存

虚继承+虚函数——观察内存。

2024-06-11 10:16:52 200 2

原创 effective-C++ 条款6

实现不能拷贝的类

2024-06-10 23:44:44 205

原创 Effective-C++学习记录——条款2-3

const_cast —— 完成const 向 non-const。(inline更像是一种建议,建议编译器替换,对于较长的代码是不会进行替换的)static_cast —— 将*this 从原始类型。define 会在预处理阶段进行替换,程序的可读性会很差。const_cast —— 去除const属性。,只有调用函数的实例的属性不一样,作为程序员。static_cast —— 普通的类型转换。,就可以满足在一个类中定义常量的需求(达到既在类内,又能定义数组的目的。

2024-06-07 11:35:58 321

原创 策略模式+简单工厂

通过设计模式理解多态;策略模式,工厂模式

2024-06-06 20:55:36 489

原创 git基本使用——回退,撤销add,commit,合并分支

回退,撤销add,commit , 合并分支等这是一个非常好用web端笔记画图软件,解决了typora画图不方便的问题。表示需要回退的地方,也就是使用命令之后会改变的地方。

2024-06-02 22:17:14 314

原创 udp/tcp错误总结

如果只有一个线程,线程如果阻塞在send线程,也就是需要从标准输入中读取才能进行发送,那么就无法进行recv;如果写成单线程,可能会出现服务端只为一个服务,另一个发送消息显示不出来的情况;:将一个接收和发送作为一个任务,一个线程一直做这一个工作,知道客户端关闭,线程结束。:将一个接收和发送作为一个任务,一个套接字执行一个任务之后立即释放。:为什么要将执行函数封装进去,可不可以在Task类中进行执行。中,如果在子线程中还需要考虑访问套接字冲突的问题。,这样在使用的时候就可以像执行函数一样执行了。

2024-04-24 09:51:13 1258 17

原创 进程等待+替换

再切割出字符串进行返回时,他返回的也是局部的字符串中的字符所对应的地址,这样一来就出现问题了,我们知道所有的程序最终运行起来,都会变成进程,进程在运行时可能会。,而Linux操作系统会将程序当时的内存状态记录下来,v——将命令使用参数以数组的形式传参,一定是。getenv函数——获得当前环境的环境变量。putenv函数——设置当前环境的环境变量。,这样一来就找不到切割好的字符串了——,虽然他的工作路径已经更改了,但是。,就会出现一个很神奇的现象,你的。下的以core开头的文件。e——可以传递环境变量。

2024-03-31 16:15:14 827 4

原创 阻塞队列提升+线程池反思——c++线程库

当生产者生产一个就会通知消费者,生产者消费者等待的是不同的条件变量,就能比上面的要高效。,他们在抢食物的时候,需要先抢到锁,然后才能去拿食物,也就是说,这里的。为了应对面试的手撕线程池,需要掌握一个简化版的线程池。的时候,由于生产者的竞争能力强于消费者,那么。,然后放到线程池中,让多个线程抢一个任务——,只要他们的两个计算成员和运算符对,他的。原来的空间,这样就造成了内存访问异常。,最开始没有任何任务,消费者被阻塞。,就能很好的避免内存访问冲突的问题。,每次生产任务都加入队列——,将线程统一管理起来——

2024-03-31 15:49:14 1428 14

原创 线程(二)——互斥锁的补充+条件变量+信号量总结

互斥锁+条件变量+信号量,pthread_cond_wait为什么需要两个参数;基于生产者消费者模型的循环队列;伪唤醒,唤醒丢失;条件变量和信号量的基本使用

2024-03-21 19:17:57 688 1

原创 观察主线程退出对子线程的影响

exit——进程退出pthread_exit线程退出主线程——主函数:return直接退出,子函数:退出函数子线程——return退出线程pthread_cancel——线程退出,不能自己杀死自己,可以子杀父

2024-03-10 14:53:02 450 1

原创 排序算法——梳理总结

冒泡,选择,插入,希尔,快排(三段式),归并,堆排序

2024-03-07 13:35:00 620 3

原创 线程(一)

功能:创建一个新的线程thread:返回线程ID ,pthread_t类型attr:设置线程的属性,attr为NULL表示使用默认属性start_routine:是个函数地址,线程启动后要执行的函数arg:传给线程启动函数的参数返回值:成功返回0;失败返回错误码传递的参数为void*类型,表示可以传递任意类型的参数多个线程各自有一个栈,共有一个堆线程包含cpu现场,但是线程只是进程中的一个执行流,执行的是程序中的一个片段代码,多个线程完整整体程序的运行。

2024-03-03 14:39:01 861

原创 多态——细致讲解

1.静态多态:函数重载和运算符重载2.动态多态:继承和虚函数1. 父类的指针/引用调用虚函数2. 调用的虚函数必须是子类重写的虚函数这样就能在指针调用相应的对象函数的时候使用相应的成员函数,具体看示例——返回值,函数名,参数个数,参数位置,参数类型都要完全一样,虚函数之后的const也要一样修饰虚函数——不能背重写override虚函数的返回值可以不一样,只能出现不可以一个返回指针,一个返回引用释放看的是类型。

2024-03-02 22:28:02 979 2

原创 特殊设计模式

单例设计模式,静态成员可以调用private的构造方法,特殊类的设计

2024-03-02 11:05:30 1188 1

原创 c++继承

切片,虚继承,菱形继承,虚继承内存,虚继承原理,隐藏,先继承先声明,继承中默认成员函数调用顺序

2024-02-27 23:51:45 1454

原创 进程间通信——管道错误总结

管道是通过read,write系统调用进行通信的,存在用户态和内核态的转变,但是共享内存是不需要系统调用,直接使用链接上的共享内存就行。,共享内存的删除操作并非直接删除,而是拒绝后续映射,只有在当前映射链接数为0时,表示没有进程访问了,才会真正被删除。B错误,共享内存的操作是非进程安全的,多个进程同时对共享内存读写是有可能会造成数据的交叉写入或读取,造成数据混乱。,共享内存生命周期随内核,只要不删除,就一直存在于内核中,除非重启系统(当然这里指的是非手动操作,可以手动删除)(并且共享内存可以提供较大空间)

2024-02-25 10:10:54 411

原创 匿名+有名管道

在使用的时候会将磁盘数据加载进内存,每个进程创建一个struct_file,共用一份内存数据;文件打开必须是一个已经存在的文件,可以是一个绝对路径,也可以是相对路径。命名管道由mkfifo函数创建,打开用open。读取是将字符读出,然后清空;fd[0]表示读端, fd[1]表示写端。匿名管道由pipe函数创建并打开。,不写自身是没有\0这个符号的。使用方法都和文件一样。

2024-02-24 19:42:34 371

原创 system_v

IPC_EXCL——一般和IPC_CREAT组合使用。不存在创建,存在错误返回;保证了共享内存是最新的。共享内存不提供同步机制,需要控制控制同步——管道。IPC_CREAT——不存在就创建,存在就获取。shmid 用户使用;key 旨在内核中标识shm的唯一性。一共有3种选项,这里就说两种方法。标识将shmid进行挂接,

2024-02-24 14:02:37 388

原创 c++11

如果只有构造函数,那么只跟构造函数参数个数进行比对如果只有,可以使用任意参数进行传参如果两个都有,则使用最匹配的进行赋值int aa;int bb;int cc;aa = *it++;bb = *it++;cc = *it++;int main()// 构造函数进行初始化return 0;

2024-02-23 10:34:41 370 2

原创 二叉树习题

【代码】二叉树习题。

2024-02-15 12:26:57 332

原创 BS+AVL——二刷错误总结

BS+AVL 单旋,双旋,提供BS+AVL测试代码

2024-02-15 12:26:23 400 1

原创 Linux——动静态库

直接写明是告诉编译器怎么做,在运行的时候是告诉系统库文件的位置——需要在系统上设置库文件的位置。-I(大写i)——如果头文件不在目录下,会报错;这个命令告诉编译器头文件位置。设置环境变量—— export PATH=…删除变量内容—— unset PATH。-l(小写L)——库文件名称。2. 指明库文件的位置。头文件放到工作目录下。进行刷新,必要时使用。

2024-02-11 20:00:34 671

原创 信号——block+pending+handler表

信号基本操作+相关函数,pending表获取打印,信号屏蔽执行的底层原理过程

2024-02-10 15:36:22 1059

原创 Linux文件

当需要使用文件的时候,OS创建struct file,将描述信息添加进pcb的struct files_struct 中使用数组进行管理,使用数组下角标进行标识文件。whence——偏移类型(三选一)(PS :offest可正负).:该文件的偏移量设为其。,从而达到重定向的作用。:该文件的偏移量设为。当前值加offset。:该文件的偏移量设为。

2024-02-06 21:49:14 416

原创 智能指针——浅析

在异常产生进行跳转时,通过栈帧回收进行内存释放,防止内存泄漏基于RAII思想可以创建出只能指针RAII(Resource Acquisition Is Initialization)——是一种利用对象控制空间生命周期的技术这种技术好处就在于可以自动化的释放资源智能指针——使用如指针,支持->和**针对内置数据类型->针对自定义数据类型先介绍一个对象管理一份资源。

2024-01-31 21:45:05 752

原创 异常——浅析

1.异常规范有两点:一、抛出异常类型都`继承自一个基类`。二、函数是否抛异常、抛什么异常,都使用 `func() throw();`的方式规范化。2.异常可能造成内存泄漏,人们为了解决这个问题就产生了——智能指针

2024-01-31 15:56:10 395

原创 priority_queue实现错误总结

这个代码应该达到的效果是,三组结果都是大根堆,但是看到的确实第三组是小根堆。

2024-01-17 11:19:19 390

原创 stack,queue和prioriy_queue

因为可能只有左节点,没有右节点,对于这种情况,当满足交换的调价的时候也是需要交换的。需要注意的是依赖的容器一定是一个随机访问的容器,支持[]的容器。的时候,执行需要做的语句;选择适配器的宗旨是要能达到预想的功能。,如果要进行交换最起码先进去吧。对于仿函数,需要理解当判断为。Iterator传的是一个。queue——只能使用。stack——可以使用。不能将while条件。_con的迭代器构造。

2024-01-16 20:42:40 449

原创 c++——list实现细节反思

迭代器复用,list基本实现,在复用的时候的细节

2023-12-28 09:18:40 560

原创 vector实现

可以将vector理解为一个动态数组,使用时要使用vector.h头文件mystl封装——就是只暴露接口,并且在实现的时候一定要谨记这个函数的功能是什么,绝不超过它范围的实现,不要想着给他多来点儿功能,这不是一件好事儿,反而会对后面的函数使用留下不可估量的后患。

2023-12-25 21:21:04 869

原创 继承易错总结

1.继承会将所有的成员继承下来,但是继承方式限定的是继承下来成员的可见类型(如果是private继承,那么他不论哪里都是不可见的;派生类的构造函数,不写会调用默认的构造函数,但是如果自己写,就要自己调用父类的构造函数(在调用父类的构造函数时,要将父类当成一个整体)当父类的指针/引用接收子类的地址/对象时,因为是继承会进行切割,将子类的父类那部分切出来,剩下的就是去虚表中找地址进行调用就行了。虚函数指针如果进行了拷贝,那么父类对象的虚函数表指针会发生改变,当使用父类对象调用父类的虚函数时,就会发生错误。

2023-12-24 23:42:25 433

原创 虚拟地址+进程地址空间

在父进程数据拷贝给子进程的时候,会将页表权限rw->r,因为子进程是父进程的拷贝,页表也会单独有一份,父进程和子进程的页表都会发生改变;如果他们是同一块儿空间,为什么打印的结果却不一样呢,我们知道肯定是父进程先跑完,在子进程进程输出的时候a应该是1才对——我们看到的只是。,子进程继承父进程的pcb里的大部分内容,地址空间,页表,并且继承的时候每个页表对应的权限默认为只读的状态)他们通过。因为这个命令记录的是最后一次的退出情况,我们明白命令也是一种程序,echo是正常运行的,所以返回0。

2023-12-08 15:13:01 901

原创 进程详解

从图中看到子进程和父进程都是被创建出来了,并且父进程和子进程的状态都是s+,可是他为什么是s+状态呢,他们都是正在运行的呀,原因就是进程确实是在运行,计算机计算速度非常的快,运行完打印之后,会有2秒的休眠,那么就知道了,程序的大部分时间都处于sleep状态。d深度睡眠——(不可中断睡眠)当资源紧张时,系统准备杀死进程,但是进程是一个重要的进程,不能被删除,就需要d状态来躲避。bash是命令行解释器,所有的进程都是由bash创建的。在计算机中,资源是有限的,对于所有的进程,需要进行排队,进行有次序的运行。

2023-12-06 15:11:56 82

原创 c++[string实现、反思]

string实现反思。string构造析构函数,reserve和resize对空间的改变,迭代器关于::的细节

2023-11-25 10:26:15 132

空空如也

空空如也

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

TA关注的人

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