自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++---继承

面向对象的三大特征:封装、继承、多态封装:将事务的属性和行为抽象成具体的数据和方法,使用类对数据和方法进行封装,通过权限访问限定符进行限定,使用者无序关注具体实现(隐藏性),只需通过对象调用类中接口。以类为单位进行管理,提高了代码的复用性和可读性。一、继承的概念和定义1、什么是继承?继承是面向对象的特征之一,是提高代码复用的重要手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类称派生类原有的类称为基类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过

2021-04-29 23:11:52 1183 8

原创 C++---模板进阶

目录一、非类型模板参数1、非类型模板参数的介绍2、非类型模板参数的使用二、模板的特化1、模板特化的概念2、函数模板的特化3、类模板的特化三、模板的分离编译1、什么是分离编译2、模板的分离编译四、模板的优点和缺点一、非类型模板参数1、非类型模板参数的介绍模板参数分为类类型模板参数和非类型模板参数。类类型模板参数:出现在模板参数中,跟在class或者typename后面的参数类型名称。 非类型模板参数:用一个常量作为类或者函数模板的一...

2021-04-24 21:24:14 2639 5

原创 Linux---线程的同步和互斥

目录1、线程的互斥2、可重入VS线程安全3、线程的同步1、线程的互斥1)线程互斥的相关概念临界资源:被多个执行流共享的资源就称为临界资源,例如全局变量。 临界区:访问临界资源的代码称为临界区。 互斥:互斥保证了任何时刻只有一个线程进入临界区访问临界资源。 原子性:不会被任何机制打断的操作,该操作只有两态,要么已经完成要么还没开始(不能存在已经开始了,但是还没完成的情况,简单理解就是依据汇编代码就可以实现的)。2)通过订票示例引入互斥量#include<stdi

2021-04-21 16:53:06 1346 3

原创 Linux---线程控制

目录1、创建线程2、线程终止3、线程等待4、线程分离Linux下线程是使用进程模拟实现的,因此没有专门的系统调用来进行线程的各种操作(创建、终止等),Linux下线程控制都是通过POSIX线程库完成的。1、创建线程1)使用第三方库创建线程int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg); ...

2021-04-21 16:51:20 270

原创 linux---线程概念

目录1、什么是线程?2、线程的优缺点3、线程异常、线程用途、4、Linux线程和进程的比较1、什么是线程?线程是一个进程内部的控制序列,在一个程序里的一条执行路线就叫做线程。所有的进程都至少有一个执行线程,线程在进程内部本质是在进程地址空间上运行(所有线程同时使用该进程的程序地址空间,只不过每个线程都有自己的执行流)。线程透过进程地址空间可以看到进程的大部分资源,将进程资源合理分配给每个执行流就形成了线程执行流。在Linux系统中,线程是用进程来模拟实现的,也就是说Linux中线程没

2021-04-21 16:50:05 200

原创 C++---stack & queue & 适配器模式 & 优先级队列 & 仿函数

一、容器适配器1、什么是适配器?设计模式(Design pattern):设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案,是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 容器适配器:适配器是一种设计模式,该种模式是将一个类的接口转换成客户希望的另外一个接口。简单理解为一个类的底层实现调用了另一个类提供的接口。二

2021-04-17 17:28:06 509

原创 算法---动态规划 II

动态规划相关问题的讲解,进一步认识动态规划解决问题的基本思路。

2021-04-15 21:57:51 174

原创 Linux---生产者消费者模型、信号量、基于环形队列的生产者消费者模型、线程池

一、线程概念1、什么是线程?2、线程的优缺点3、线程异常、线程用途4、Linux线程和进程的比较二、Linux线程控制1、创建线程一、线程概念1、什么是线程?线程是一个进程内部的控制序列,在一个程序里的一跳执行路线就叫做线程。所有的进程都至少有一个执行线程,线程在进程内部本质是在进程地址空间上运行(所有线程同时使用该进程的程序地址空间,只不过每个线程都有自己的执行流)。线程透过进程地址空间可以看到进程的大部分资源,将进程资源合理分配给每个执行流就形成了线程执行流。在.

2021-04-15 16:49:44 528

原创 算法---动态规划 I

一、动态规划问题的一般解决过程1、动归介绍1)动归的定义动态规划时分治思想的眼神,通俗来说就是大事化小,小时化无。再将大问题化解为小问题的分治过程中,保存这些小问题已经处理好的结果供后面处理更大问题时使用这些结果。2)动归的特点把原来的问题分解成了几分相似的子问题 所有的子问题都只需要解决一次 存储子问题的解3)动态规划的本质对问题状态的定义状态转移方程的定义(状态以及状态之间的递推关系)。2、动态规划解题过程动态规划问题一般从以下四个角度考虑:状态定义 状态

2021-04-14 18:57:47 298 1

原创 Linux---进程信号

一、信号概念信号是进程之间事件异步通知的一种方式,属于软件中断。1、Ctrl+c结束前台进程当我们在shell中启动一个前台进程时,使用Ctrl+c可以结束这个前台进程。用户按下Ctrl-C时键盘输入产生一个硬件中断,被OS获取,解释成信号,发送给目标前台进程,前台进程因为收到信号,进而引起进程退出。注意:1)ctrl+c产生的信号只能发送给前台进程。一个命令后+&可以放到后台运行,后台运行的进程不能使用Ctrl+c终止同时后台进程shell不进行等待,可以接收其他命令。2

2021-04-12 21:20:43 3692 6

原创 C++ ---list使用介绍+模拟实现

一、list介绍1、什么是list?数据的存储方式有顺序存储和链式存储。数组、顺序表、vector、string等都是顺序存储的,而list则是链式存储的,它的底层是使用双向带头循环链表实现的(由于list需要支持多种类型,因此也是用模板来实现的)。1)list源码中节点的定义struct __list_node { typedef void* void_pointer; void_pointer next; //指向后一个节点的指针 void_pointer prev; ...

2021-04-11 20:59:45 599 2

原创 C++超详细五子棋游戏(AI实现人机对弈+双人对弈+EasyX图形化界面+详细介绍)

一、准备条件1、开发环境Visual Studio 20132、EasyX的下载和安装二、游戏规则三、双人对弈详细剖析四、人机对弈超详细剖析五、代码剖析六、完整代码及超详细注释七、运行结果+视频演示...

2021-04-08 16:25:36 14980 65

原创 c++---vector的使用和模拟实现

目录目录目录一、接口介绍二、实现三、测试用例四、迭代器失效一、接口介绍1、插入数据void push_back(const T& x) 在当前vector尾部插入x,如果容量不够扩大二倍。iterator insert(iterator pos, const T& x) 在POS位置插入元素x2、容量相关size_t capacity() 返回当前vector的容量(size+剩余容量)...

2021-04-03 22:01:52 442

原创 leetcode---数组中只出现一次的数字I & II & III

数组中只出现一次的数字I问题描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1: 输入: [2,2,1] 输出: 1示例2: 输入: [4,1,2,1,2] 输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number解题思路异或运算:相同为0,不...

2021-04-01 17:01:54 1359

空空如也

空空如也

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

TA关注的人

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