自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [leetcode 1095] 山脉数组中查找目标值

山脉数组中查找目标值分析思路找到山顶位置山底到山顶 递增区间二分查找山顶道山底 递减区间二分查找源码分析首先可以看到这是一个山脉,他的大体结构类似于一个上山和一个下山的过程,上山是一个递增数组,下山是一个递减数组,如下图。。。。其次,题中明确说明了,访问数组元素的下标次数不能多于100次,但是数组长度最大为10000,所以说我们用变量肯定是不行的。这时就可以使用二分法了,...

2020-04-29 16:33:13 289 2

原创 [leetcode 34.] 在排序数组中查找元素的第一个和最后一个位置

在排序数组中查找元素的第一个和最后一个位置分析常见的二分法是这样的左闭右闭区间 `[left,right]`左闭右开区间 `[left,right)`左边第一次出现的目标值左闭右开区间 `[left,right)`左闭右闭区间 `[left,right]`右边第一次出现的目标值左闭右开区间 `[left,right)`左闭右闭区间 `[left,right]`程序代码分析看到排序数组,我们...

2020-04-29 15:35:48 210

原创 大家都知道的多重背包与混合背包

多重背包多重背包1原题链接问题分析程序多重背包2来源题目分析程序多重背包1原题链接https://www.acwing.com/problem/content/4/问题分析与01背包不同的是,多重背包的每一个物品有S件,而01背包每个物品有1件。我们是不是可以进行一个拆分,把这S件物品拆成01背包的模型来计算。我们再看物品的数量,假设最多的100件物品,每个物品可以取100次,我...

2020-04-25 23:03:48 255 4

原创 大家都知道的完全背包

完全背包问题来源问题描述分析与01背包相比,改进的地方程序问题来源https://www.acwing.com/problem/content/3/问题描述分析完全背包问题与01背包的一个不同点就是,完全背包问题中一个物品在不超过背包体积的情况下,可以无限用。与01背包相比,只有一个小小的变化,我们也可以引用01背包问题的思路dp[ i ] :表示当前背包体积时,物品的最大价值...

2020-04-25 21:55:58 180

原创 大家都知道的01背包问题

01背包问题问题来源问题描述二维动态方程分析程序一维解法初步压缩改进后最终程序拓展问题问题来源https://www.acwing.com/problem/content/2/问题描述二维动态方程分析对于每一个物品,在背包容量足够的情况下,我们有两种状态,一种是把该物品放在背包,一种是不把该物品放在背包。我们建立一个二维的数组,dp[ i ][ j ] 表示前 i 个物品,在容量为...

2020-04-25 21:14:19 227

原创 C++模拟实现常用的STL中string类

string 类的实现成员变量默认成员函数构造函数析构函数拷贝构造运算符重载赋值运算符[ ]运算符重载+= 运算符重载cout运算符重载cin运算符重载getline 获取一行数据比较运算符重载Modifiers修饰符push_back 尾插append追加insert 插入erase 消除capacity 容量size 返回字符串大小capacity 返回字符串容量reserve 增加容量res...

2020-04-22 21:26:22 339

原创 图文并茂,一分钟看懂的C++深浅拷贝

深浅拷贝浅拷贝(背影杀手)分析出错的原因深拷贝程序运行结果总结对于深浅拷贝的问题,我就用C++中STL中string类的拷贝构造来解释一下。简单来看,深浅拷贝就是看问题是不是只考虑了其中的一个方面,是不是很片面浅拷贝的判断结果就相当于背影杀手的背面,深拷贝的判断结果就相当于回过头的正面。浅拷贝(背影杀手)我们知道C++与C的区别之一就是C++有了引用的概念,通过引用,我们就可以给变...

2020-04-22 17:27:32 2791

原创 泪目!关于命名空间冲突问题,我卡了好长时间。。。。。

C++命名空间起因类的头文件主函数运行结果报错的原因分析改正方式C++命名空间命名空间的定义展开命名空间的几种方式起因在学C++的STL模板中的string模板的时候,想自己模拟实现一个string类,于是代码是这样写的。我有个坏习惯,就是当报错的时候,第一先想的是自己代码哪里的问题,当时报错的时候,先把代码都逻辑走了一遍,能优化的就优化,各种版本都试了一次。。。。。。类的头文件#pra...

2020-04-21 20:34:01 1218

原创 C++模拟实现线程池模型

线程池应用场景示例线程池是一种多线程的处理模式,在处理的过程中将任务添加到队列中,在创建线程后启动这些任务。我们知道,生产一个线程的开销比一个进程要小的多,线程的销毁也比进程方便。但是我们在调用多线程的时候,不同线程之间抢占式执行CPU资源的时候,会有一个时间片的问题。当一个线程在CPU时间片到了的时候,就需要让出CPU资源,这时会通过共享区中的程序计数器和上下文信息来保存当前的状态,等到下...

2020-04-20 21:29:09 798

原创 C++实现生产者消费者队列

C++实现生产者消费者队列分析程序队列的类生产者逻辑消费者逻辑主函数结果分析源码地址分析首先,我们的生产者与消费者队列需要满足同步与互斥关系,就需要一把互斥锁,以及生产者与消费者各自的条件变量。其次,我们可以利用C++中STL里的queue队列来进行实现,但是我们需要对push,pop进行修改,因为STL库的函数不一定能满足互斥条件。也就是不一定安全。最后,所有资源在程序结束后一定要记得释...

2020-04-18 18:43:46 2852 1

原创 基于Posix信号量实现的环形生产者消费者模型

基于Posix信号量实现的环形生产者消费者模型posix信号量操作接口定义初始化接口等待接口唤醒接口销毁接口如何保证同步&互斥基于Posix信号量实现的环形生产者消费者模型使用的数据结构实现操作代码实现环形队列类消费者线程执行的逻辑生产者线程执行的逻辑主函数运行结果posix信号量作用可以完成线程间与进程间的同步与互斥本质资源计数器 + PCB等待队列 + 提供等待和唤醒...

2020-04-18 18:26:17 440

原创 MySQL 基础语法指令(一)

MySQL 基础语法语法规范MySQL数据类型数值类型日期和时间类型字符串类型数据库的命令创建数据表插入数据查询数据where 子句操作符update 更新delete 语句like 子句union 操作符排序group by 语句连接的使用语法规范不管是SQL 还是 MySQL,他们程序的内部都是不区分大小写的。(但是我们自定义的数据库名,表名,表字段是区分大小写的)每一次的操作语句需要...

2020-04-17 21:25:32 451

原创 MySQL的使用

MySQL的使用启动与停止计算机管理的方式命令行的方式服务端的登录与退出登录退出启动与停止计算机管理的方式计算机管理 -》 服务和应用程序 -》服务 -》找到MySQL,然后右键选择属性,就可以调整打开的方式为自动,手动,禁用的状态。命令行的方式打开命令提示符,必须以管理员身份打开右键选择命令提示符属性,然后在弹出窗口界面中选择高级,再点击以管理员身份运行。如果出现这样...

2020-04-17 16:22:36 2103

原创 生产者和消费者(linux)

生产者和消费者同步条件变量条件变量的接口简单实现一个生产者和一个消费者的模型同步同步保证了每个执行流可以合理的访问每个临界资源同步的作用当存在临界资源的时候,就直接获取临界资源;没有资源的时候,进行线程等待,等待其他线程让出临界资源,然后再通知等待线程。等待线程之间再进行抢占式执行。条件变量当一个线程互斥的访问一个变量的时候,可能会出现在其他线程改变状态之前,他自己只能进行等待状...

2020-04-12 22:12:37 1079

原创 互斥锁与死锁(linux多线程)

linux-线程安全线程安全再次了解下原子性之前我们了解到一些线程的基本知识,线程等待,线程分离啊什么的。现在我们用这些知识简单实现一个火车站抢票的功能。假设一共有100张票,我们开放4个窗口(线程),让每个窗口进行卖票的功能,每个窗口之间是独立的,他们的任务就是卖完这100张票,每卖一张票,就让总票数-1。void* ThreadStart(void* arg){ (void*)a...

2020-04-10 19:39:47 2485

原创 C++STL模板学习

C++STL模板学习函数模板模板的格式模板的原理模板的实例化模板匹配的原则类模板类模板的定义格式类模板的实例化STL的六大组件在前面的学习中了解到C++是支持函数重载的,我们可以给同一作用的函数起同一个函数名,只是彼此之间参数的类型不能相同。先简单看一个变量交换的代码//整形变量的交换void Swap(int& a, int& b){ int c = a; a = b...

2020-04-06 23:14:59 464 1

原创 多线程(linux)

linux -多线程竞态条件volatile关键字多线程从内核的角度分析线程竞态条件竞态条件是指多个执行流访问同一个资源的情况下,会对程序产生一个二义性的结果。重入: 多个执行流可以访问到同一个资源#include <stdio.h>#include <signal.h>#include <unistd.h>int count = 0;vo...

2020-04-04 16:51:46 258

原创 C++内存管理(如何检测内存泄漏)

C&C++内存管理c/c++内存分布C语言中动态内存管理方式C++内存管理方式operator new与operator delete函数operator new与operator delete的类专属重载new和delete的实现原理定位new表达式(placement-new)内存泄漏如何一次在堆中申请4G内存c/c++内存分布变量的存储位置globalVar 存储在 数据段...

2020-04-01 23:00:10 1702

空空如也

空空如也

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

TA关注的人

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