自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m0_熊猫馆主的博客

熊猫的私人笔记本&&习题锦集

  • 博客(93)
  • 问答 (1)
  • 收藏
  • 关注

原创 【买卖股票系列问题 -- 动规 + 其他转换方法】

以买卖股票系列问题为例讲解动态规划问题以及拓展的其他解题方法。

2024-09-09 20:51:45 881

原创 【vscode免密连接云服务器】

连接方法很简单并且root和普通用户都适用。一个密钥对可以供多个用户使用(如果你的Linux有多个用户的话)。关于文件传输:rz(Receive Zmodem): 接收文件传输协议sz(Send Zmodem): 发送文件传输协议以上两个指令都是在云服务器上执行。

2024-05-30 17:31:56 516 1

原创 【免安装的MATLAB--MATLAB online】

在计算机、数学等相关专业中,或多或少都会与MATLAB产生藕断丝连的联系,如果你需要使用MATLAB,但是又不想要安装到自己的电脑上(它实在是太大了啊!动辄二三十G!)可以参考本篇文章简单了解一些online版的使用。1.在线的MATLAB速度较慢,但是总归不用我们自己下载啦2.每个月只能使用20小时3.我们平时使用直接用脚本就可以。

2024-04-11 09:02:57 4645 2

原创 【线程封装及各种测试代码--阻塞队列、环形队列、线程池】

**使用条件变量若进行等待,会自动释放锁,且在被唤醒之后会再次申请锁.** 因此pthread_cond_wait的第二个参数为 锁的指针,当该条件变量上的进程被唤醒时会自动去申请锁,只有当再次申请到锁时才会继续往后运行,否则会重新在锁上阻塞。何时使用锁,何时使用信号量:一份资源当做整体去访问时要加锁,上方的阻塞队列;一份资源分块访问时使用信号量,表示可访问资源,或资源分块数量,上方的环形队列。

2024-04-07 19:16:49 637 1

原创 【Android Studio3.5.2安装以及错误解决】

注意,每次创建新项目都需要配置一次Gradle文件路径!(第三步的截图)如有疑问可以在评论区讨论,但是博主不保证能给出解决方法,大家多交流共同解决啦。

2024-03-29 21:35:21 784 1

原创 【异常 - 错误的更优解决方案】

- C++异常的优点:1. 异常对象定义好了,相比错误码的方式可以清晰准确的展示出错误的各种信息,甚至可以包含堆栈调用的信息,这样可以帮助更好的定位程序的bug。2. 返回错误码的传统方式有个很大的问题就是,在函数调用链中,深层的函数返回了错误,那么我们得层层返回错误,最外层才能拿到错误;而异常则直接跳转到匹配的catch。3. 很多的第三方库都包含异常,比如boost、gtest、gmock等等常用的库,那么我们使用它们也需要使用异常。4. 部分函数使用异常更好处理,比如构造函数没有返回值,不方便

2024-03-10 14:20:57 852 1

原创 【MySQL用户管理】

剑指offer:一年又13天'user_name'@'登录位置'一般当做一个整体来使用。

2024-01-04 10:35:44 711 2

原创 【MySQL视图特性】

视图规则和限制与表一样,必须唯一命名(不能出现同名视图或表名)创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响视图不能添加索引,也不能有关联的触发器或者默认值视图可以提高安全性,必须具有足够的访问权限order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图中的 order by 将被覆盖视图可以和表一起使用

2023-12-29 15:02:25 581 2

原创 【MySQL事务管理】

其中隔离级别越严格,安全性越高,但数据库的并发性能也就越低,往往需要在两者之间找一个平衡点。 不可重复读的重点是修改和删除:同样的条件, 你读取过的数据,再次读取出来发现值不一样了。 幻读的重点在于新增:同样的条件, 第1次和第2次读出来的记录数不一样。 说明: mysql 默认的隔离级别是可重复读,一般情况下不要修改。 上面的例子可以看出,事务也有长短事务这样的概念。事务间互相影响,指的是事务在并行执行的时候,即都没有commit的时候,影响会比较大。一致性

2023-12-27 10:52:25 1310 2

原创 【MySQL索引特性】

一个索引对应一个B+树,一张表可以有多个索引就可以有多个B+树;如果一张表没有主键,mysqld也会使用默认自增长主键创建B+树,目的是方便之后普通索引的建立。

2023-12-24 17:33:08 984 2

原创 【表的内连和外连】

MySQL中的内连接(inner join)和外连接(outer join)是数据库查询中常用的概念,内连接用于检索两个表中满足指定条件的匹配行, 而外连接则会返回符合条件的行以及未符合条件的行。外连接又分为左外连接、右外连接。

2023-12-22 18:24:16 866 2

原创 【MySQL复合查询】

一、基本查询回顾二、多表查询笛卡尔积三、自连接四、子查询单行子查询、多行子查询、in、all、any多列子查询在from子句中使用子查询合并查询union、union all

2023-12-19 19:24:04 999 3

原创 【MySQL内置函数】

一、日期函数获取日期获取时间获取时间戳在日期上增加时间在日期上减去时间计算两个日期相差多少天当前时间案例:留言板二、字符串函数查看字符串字符集字符串连接查找字符串大小写转换子串提取字符串长度字符串替换字符串比较消除左右空格案例 - 1:姓名格式化案例 - 2:学生成绩通知三、数学函数绝对值进制转换取整规则格式化小数位随机数取模案例-1:产生0 ~ 100随机数四、其他函数查询当前用户查询当前正在使用的数据库数据加密ifnull条件判断

2023-12-16 22:10:18 1097 4

原创 【MySQL表的增删改查】

CRUD:Create(创建), Retrieve(查找), Update(修改), Delete(删除).要理解子句的执行顺序,不需要死记硬背,按照逻辑一步一步走一遍就理解啦!(先执行的在前面:from > where > group by > select > having > order by)

2023-12-13 17:11:43 1001 3

原创 【MySQL表的约束】

我们上一篇文章所讲的数据类型也是一种约束–不同类型有对应的数据范围;约束本质上是通过技术手段倒逼程序员输入正确的数据,反过来站在数据库角度:凡是数据库内的数据都是符合约束的;约束保证了数据库中数据的完整性和可预期性。但是仅仅有类型约束还是不够的,本篇文章我们会讲解表的其他约束:空值约束,默认值约束,列描述,零填充,主键,唯一键和外键约束。

2023-12-10 11:36:03 971 2

原创 【MySQL数据类型】

详解MySQL各种数据类型:整数类型、小数类型、字符类型和日期类型。

2023-12-06 21:01:02 1137 3

原创 【MySQL表的操作】

剑指offer:一年又3天。

2023-12-01 12:55:36 538 3

原创 【MySQL库的操作】

库的操作:创建、选择、查看、修改、删除与备份。

2023-11-29 17:19:37 736

原创 【数据库基础】

本文将带领你初步了解数据库:什么是数据库,为什么要有数据库,数据库中有哪些东西,MySQL框架,SQL分类以及什么是存储引擎,让我们一起去揭开数据库的神秘面纱。。

2023-11-26 16:10:47 993 3

原创 【智能指针】

1. 智能指针类似于之前学过的迭代器,但又有所不同,智能指针是借助对象的局部作用域有效,自动释放资源,顺便对资源进行访问,他管理资源的申请和释放; 迭代器是用来遍历容器,访问数据,并不控制资源的申请和释放。2. 关于shared_ptr:智能指针是一种用于管理动态分配的内存资源的工具,它可以自动地在适当的时机释放所管理的内存,避免内存泄漏和悬挂指针等问题。智能指针通常用于以下场景:动态内存管理:在C++中,使用new关键字进行动态内存分配,而使用智能指针可以自动管理分配的内存,避免忘记释放

2023-10-20 16:54:06 193 25

原创 【网络基础】

IP协议有两个版本, IPv4和IPv6. 在讲解时默认使用IPv4IP地址是在IP协议中, 用来标识网络中不同主机的地址;对于IPv4来说, IP地址是一个**4字节, 32位的整数**;我们通常也使用 **"点分十进制" 的字符串**表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;MAC地址用来识别数据链路层中相连的节点;长度为**48位**, 及6个字节. 一般用16进制数字加上冒号

2023-08-01 00:05:22 197 12

原创 【SQL server关键字】

1. SQL关键字**不区分大小写**。2. 在 SQL 中,引号用于表示字符串类型的值。如果公司id是字符串类型的话,那么需要使用引号将其括起来。如果招收人数是数值类型的话,就不需要使用引号。所以,需要根据数据类型来决定是否使用引号。3. 子查询是指在一个 SQL 语句中嵌套另一个完整的 SQL 语句,用于查询嵌套查询中所需要的数据。子查询返回的是一个结果集,这个结果集可以是一个标量值、一个行或多行数据。子查询的结果可以作为另一个 SQL 语句的一部分,用于过滤、排序、分组等操作。例如,我们可以使用

2023-06-24 19:31:56 3358 41

原创 【bash 的简单模拟实现】

打怪升级:第60天以上只是我们对bash的十分十分简单的模拟,我们只有这区区一百行,而真正的bash解释器的代码量是以万为单位的,所以我们不需要特别纠结于哪一个哪一个功能没有实现,我们需要做的是理解所用到的语法与函数即可,希望对感兴趣的朋友提供了帮助。

2023-06-06 23:26:24 147 17

原创 【红黑树 -- 理论与实现】

以上就是我们关于红黑树概念以及变色、旋转的全部内容,红黑树的旋转和avl的旋转都是一样的,不一样的一点就是红黑树旋转更新节点颜色,avl旋转更新节点的平衡因子。红黑树是近似平衡,avl则是绝对平衡,而为了达到绝对的平衡自然就需要进行更多的旋转操作,所以avl在插入过程中会消耗大量的时间,而因为是绝对平衡的,树的高度接近完全二叉树,查找的效率自然就会提高很多,不过由于二叉树查找效率为logN,在10亿个数据中进行查找也只需要查找30次,由于红黑树允许1倍左右的高度差,因此10亿个数据最多可能需要查找

2023-05-30 09:00:42 934 25

原创 【突发奇想 之 vector使用时性能测试】

1. 在**for循环**中如果使用到成员变量(如size()),作为判断,**十分推荐**将该值保存到一个**临时变量**,之后使用临时变量来代替它进行判断,否则调用多次进行函数调用会拖慢CPU运算速度;2. 声明容器变量是,是否初始化大小都可以,因为在任何地方都一样,当然如果需要给容器数据初始化,如果不是一定要使用某些值,不建议初始化为非0值;3. vector添加成员时,**十分推荐先开好空间**,之后直接**通过下标( v[i] )进行赋值**;如果借用一个临时变量,再进行push_back(

2023-05-25 17:25:09 927 27

原创 【容器适配器的认识与模拟】

打怪升级:第78天适配器就是在容器的外面再嵌套一层容器,通过对普通容器的限制,达到我们想要的结果。stl中的容器适配器一共有三个stack、queue以及priority_queue,它们的操作很少,并且接口十分类似,今天我们已经见识了它们的函数接口以及接口的实现,如果你可以自行写出它们的模拟实现,那你对于容器适配器的理解就会迈入很高的层次。希望对有需要的朋友带来帮助。

2023-05-17 16:30:58 935 18

原创 【进程间通信 之 通信的建立】

打怪升级:第69天匿名管道只能用于具有血缘关系的进程之间通信;在命令行中通过管道连接的各个指令是兄弟关系,它们的父进程都为bash;管道与命名管道都属于文件系统,数据缓冲区的大小随文件缓冲区,数据的流动只在文件缓冲区中进行;命名管道的大小永远是0,文件中的数据不会刷新到磁盘(仅仅作为通信的中间体,没有必要保存数据);由于共享内存创建之后就不需要依赖于OS,因此消息传输是最快的,而同时,因为消息传输时不经过OS的控制,所以通信过程是不安全的 – 没有同步与互斥(两个用户同时进行写入,造成数据覆盖,信息

2023-05-10 23:49:14 517 20

原创 【c++迭代器模拟实现】

STL 提供了六大组件,彼此组合套用协同工作。这六大组件分别是:vector的底层是数组,因此支持随机访问,vector的正向迭代器可以直接使用原生指针;vector的反向迭代器需要对原生指针进行封装,让它的行为可以和正向迭代器保持一致。反向迭代器vector的反向迭代器要和正向迭代器保持一致那就需要模拟正向迭代器的全部功能:++,–,比较大小,解引用,下标访问,以及如果数据元素是自定义类型我们还需要提供重载的箭头运算符: ->我们现在反向迭代器写好了,但是好像少了些什么:const迭代器好

2023-05-05 22:51:30 985 22

原创 【平衡二叉搜索树(AVL)-- 旋转】

打怪升级:第60天旋转是为了在保持平衡树性质的前提下降低树的高度,右子树高AVLTree,也就是我们所说的:自平衡二叉搜索树,AVL命名由来是两位发明者的名字的首字母,并无其他含义。AVL树是一棵搜索树;AVL树左右子树的高度差的绝对值不大于1;AVL树的左右子树也是AVL树。高度差可取0,1,-1。注:我们将左右子树的高度差称为平衡因子,简称为bf既然AVL树是一棵搜索树它就需要满足搜索树的特征:左子树不空,左子树上的值都小于根节点的值;右子树不空,右子树上的值都大于根节点的值;左右子树也都是二叉搜索树。

2023-05-01 20:22:55 1610 22

原创 【c++ 之 多态】

多态的重点1. 就是要了解多态构成的条件:父类的指针或引用;虚函数重写。2. 就是知道了解虚函数表的原理:存的是虚函数地址。3. 清楚多态实现的原理。

2023-04-26 12:00:51 853 30

原创 【难学易用c++ 之 继承】

打怪升级:第50天继承机制是面向对象程序设计使代码可以复用的最重要的手段,他允许类在保持原有特性的基础上进行拓展,增加新的功能,这样产生的类叫做子类或者派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。public :} protected : string _name = "小李子";// Person类作为父类,被student 和 teacher继承后,父类的public 和 protected 成员(变量和函数)都会变成子类的一部分,可以在子类中进行访问。

2023-04-24 20:10:29 604 19

原创 【Linux基础IO之 内存文件操作】

今天我们了解了文件操作的系统调用接口:open、close、write、read、lseek;搞清楚了文件描述符的含义 -- 数组下标;知道了文件的缓冲区 -- OS级 和 语言级;并且清楚了这两个缓冲区存在的位置,以及为什么存在 -- 提高io效率;最后我们也尝试 写了自己的 FILE结构体 ,这里需要补充一句:并非只有c语言对有语言级的缓存区,其他语言也会有,并且,不管是哪一个语言,不管他如何进行封装,在这些封装的文件结构体内部,必定存在**文件描述符**。

2023-04-22 09:09:56 765 22

原创 【浅谈 new 与 delete】

打怪升级:第39天在C语言中,我们动态申请内存的方法是使用malloc函数,它的同胞兄弟还有calloc 和realloc,与它们配套使用的释放内存的操作为free函数;因为c++是兼容c的,所以这些函数在c++中是同样可以使用的,那既然如此,c++为何还要大费周章地去再增添两个新的操作符来完成“原本就可以完成的工作”呢?C语言是一个面向过程的语言,而c++虽然脱胎与c语言,但它是属于面向对象的,虽然有相同之处,但是c++相对C语言又添加。

2023-04-20 15:06:47 251 14

原创 【模板特性补充】

打怪升级:第42天一个程序或项目由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接生成单一的可执行文件的过程称为分离编译模式。优点提高了代码的复用性,减少冗余,缩短了编程周期;增强了代码的灵活性;缺点模板会导致代码膨胀,导致编程时间变长(其实这不算缺点,因为如果不使用模板,我们就需要自己手写多份类似的代码,所以这些所谓的代码膨胀是必不可少的消耗);出现模板编译错误时,提示信息非常凌乱,不易定位错误。(这一点刚开始练习模板的朋友们会深有体会的)

2023-04-12 15:47:43 562 14

原创 【Linux进程控制之 进程替换】

用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。有了上面的execl示例,我们继续来看剩余的几个exec函数:execlp && execvpexecle && execvpe && execveexec函数总结

2023-04-07 22:10:32 77 7

原创 【Linux进程控制 之 进程创建与等待】

打怪升级:第53天wait 和 waitpid 函数的使用,wait函数必须阻塞等待,等待子进程,而waitpid的最后一个整形参数设置为 WNOHANG, 父进程就可以不阻塞;2.宏 WEXITED(status) 判断是否收到信号 – 收到信号就为假,表明运行出错;宏 WEXITSTATUS(status)提取进程退出码。

2023-04-02 17:21:15 343 15

原创 【进程地址空间】

打怪升级:第52天。

2023-03-31 20:15:25 351 11

原创 【Linux进程初始】

冯.诺依曼在《第一份草案》文档中描述了自己心中的计算机,并由此确立了计算机结构的五大部件: 运算器、控制器、存储器、输入设备、输出设备;现在看来,运算器和控制器单元集成在CPU中实现,存储器的容量不断扩大、输入输出设备不断更新,这些部件构成了当代计算机硬件系统的基本组成。关于如今的冯诺依曼体系:存储器指的是内存,在不考虑缓存的情况下:CPU只能在内存中进行读写操作,不能直接和输入输出设备交换信息;输入输出设备进行读取和写入信息也只能在内存中进行;也就是说:所有设备都只能直接和内存打交道。

2023-03-29 11:45:52 264 20

原创 【详细了解c++模板】

打怪升级:第40天x = y;y = tmp;x = y;y = tmp;return 0;因此,我们祖师爷就在想,能不能我们只自己写一个“模具”出来,之后具体需要什么类型由编译器来判断并且复刻出可以使用的函数?就像我们的印刷机 – 有一个原样,想要得到它的复制品就轻而易举,这样不仅帮助程序员们节省了对类似代码的拷贝与维护,并且还可以少掉许多头发。模板函数不允许自动类型转换,但普通函数可以进行自动类型转换,例如上面的add模板,两个参数类型需要保持相同;

2023-03-21 22:36:26 91 9

原创 【c++类与对象 -- 补充 】

打怪升级:第37天在上一篇文章中我们详细讲解了类与对象的主要内容,那是一块难啃的骨头,不过还好,我们已经跨越了重重阻碍走到了这最后一步,这里呢我们对类与对象的一些边边角角进行补充,这关打完–原地飞升。静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区;静态成员变量必须在类外定义定义时不添加static关键字,类中只是声明;类静态成员即可用类名::静态成员或者对象.静态成员来访问;静态成员函数没有隐藏的this指针,不能访问任何非静态成员;静态成员也是类的成员,

2023-03-15 09:40:30 508 20

空空如也

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

TA关注的人

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