自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】结构体构造函数和实例化详解-打包解决你的所有困惑(●‘◡‘●)

构造函数的方式代码参数全初始化参数部分初始化带默认值v,如果传入不同的值v',按传入值v'给变量赋值一种简便的写法。

2023-05-11 19:37:17 5324

原创 【C++】数组arr[]

地址指针赋值数组的首地址 arr 或 &arr[0]int *pint*p=arr;数组的某个元素的地址 arr[i]int *p数组的整体地址 &arr;int(*p)[5](1) arr 等价于 &arr[0]表示数组首元素地址,指向数组第1个元素,arr + 1或&arr[0] + 1会跳过第1个元素【加上1个数组元素的字节数】,指向数组的下1个元素。arr或&arr[0]的地址类型为int *类型,使用int类型的指针(指向数组首元素的指针)接收。(2) &arr。

2023-05-10 19:40:43 1516

原创 mac配置python环境(anaconda)

ImportError: No module named 原因1. python2 没有加 `__init__.py`解决方法原因2. 没有加入包的root路径解决方法pth 文件写一个笔记方便自己以后回查原因1. python2 没有加 __init__.py解决方法原因2. 没有加入包的root路径解决方法pth 文件..._python找不到包。1.1 可以用base环境,也可以根据你的工程创建新的环境(我理解“环境”就是下载的包放在哪里,到时候程序运行的时候从哪里找包)

2023-09-05 16:44:47 1793

转载 【操作系统/进程间通信】共享内存-原理和实现

共享内存是一种进程间通信的机制,即不同进程的虚拟内存空间(虚拟内存地址不需要相同),

2023-05-13 15:23:23 2453

转载 【操作系统/进程间通信】消息队列-原理和实现

4、实例:以阻塞方式不断从消息队列(关键字为0x1234)中读取消息,并打印接收到的消息类型、长度和数据等,当接收到内容为“exit”的消息时程序结束。引入消息类型之后,消息队列在逻辑上由一个消息链表转化为多个消息链表。2)参数msgflg的低9位指定队列的属主、属组和其他用户的访问权限,其它位指定消息队列的创建方式。”,消息类型为TYPE。例2:创建关键字为0x1234,访问权限为0666的消息队列,如队列已存在则报错。2)以阻塞方式从消息队列(关键字为KEY)接收消息,接收消息类型为TYPE。

2023-05-13 12:47:01 976

原创 【C++】类和对象-继承(๑•̀ㅂ•́)و✧

当不需要对派生类新增的成员函数进行任何初始化操作时, 派生类构造函数体可以为空基类没有构造函数或构造函数参数为空, 在派生类构造函数中可不写调用基类构造函数的语句, 盗用派生类构造函数时系统会自动调用基类的默认构造函数基类中定义了有参的构造函数, 派生类构造函数总必须写出基类的构造函数及其参数基类中既定义无参数的构造函数,又重载了有参数的构造函数, 派生类构造函数中可以调用带参的基类构造函数, 也可以不调用基类的构造函数1.2.3 多次继承。

2023-05-12 16:07:07 308

原创 【C++】函数重载、运算符重载

C++ 允许在同一作用域中的某个和指定多个定义,分别称为和。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个或时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为。

2023-05-12 13:25:25 118

转载 【数据库】Mysql学习路线

好吧,说了这么多,其实我就是想说,你一定要对以上的知识知其所以然,不过 mysql 不像算法这些需要学习很多,所以在学习顺序方面,没啥好介绍的,按照书籍的顺序来学习即可。面对问题,拿出打破砂锅问到底的精神,先思考一番,给出自己的假设,不要着急地去找度娘,谷歌。都懂,你才能扯的起来,对于事物和锁也是,当时面试官问了我事务是如何保证一致性的,刚好我研究过 ,redolog,binlog,undolog 这些日志,然后和面试官扯了好久。读完这些东西,再加些丰富的经验,理论上来讲就具备DBA的水平了。

2023-03-07 16:22:19 884

原创 【Linux高性能编程】详解:什么是I/O/ 管道/ socket/ 进程的阻塞?优缺点和适用场景是什么?

目录一、什么是进程的阻塞和非阻塞?(清楚精辟)1、进程阻塞 2、进程非阻塞二、什么是I/O的阻塞和非阻塞?1.阻塞IO模型2.非阻塞IO模型三、什么是管道的阻塞和非阻塞?1、回顾:管道的基础知识2、回顾:管道读写的行为3、管道阻塞/非阻塞的设置4、总结:阻塞/非阻塞 读/写会成功还是失败四、什么是socket的阻塞和非阻塞?(本质是send和recv函数阻塞调用)1、回顾:socket编程的connet(),accept()的阻塞和非阻塞模式下的表现2、回顾:socket编程的send()和recv()函数

2023-03-07 15:12:30 1333

原创 【C++】类:构造函数、默认构造函数模板

构造函数、默认构造函数的作用:构造函数:传一些参数进来,用于给类的成员变量赋值。默认构造函数:程序员给类的成员变量设定一个默认值,也是用于给类的成员变量赋值。如果没传参就用默认值给成员变量赋值。如果传了参就用传进来的参数给成员变量赋值。

2023-03-04 16:30:11 1394

转载 基础知识篇——堆内存和栈内存

可以看到,堆和栈相比,由于大量new/delete的使用,容易造成大量的内存碎片;由于没有专门的系统支持,效率很低;由于可能引发用户态和核心态的切换,内存的申请,代价变得更加昂贵。所以栈在程序中是应用最广泛的,就算是函数的调用也利用栈去完成,函数调用过程中的参数,返回地址,EBP和局部变量都采用栈的方式存放。所以,推荐大家尽量用栈,而不是用堆。虽然栈有如此众多的好处,但是由于和堆相比不是那么灵活,有时候分配大量的内存空间,还是用堆好。

2023-01-09 12:52:57 4412

转载 关于通用框架的一些想法

前几天跟朋友谈起框架的事情,回顾了一下当前框架的发展,尤其是Spring Boot,已经把程序员的开发简化到了最初的一个 class 的形式了。这个也是我为什么喜欢领域驱动设计(DDD)的原因,真正回归了本源。回头看历史上的各种框架,从struts开始,到Tapestry、Wicket、SpringMVC,最后到Spring Boot,就是逐渐破坏面向对象(OO)的封装性,再慢慢回归到面向对象的历程。

2023-01-07 15:28:03 306

原创 【C++】动态规划之状态转移方程(单串)

接着就是要自底向上的求解问题的,先将最小规模的子问题的最优解求出,一般都用一张表来记录下求得的解,到后来遇到同样的子问题的时候就可以直接查表得到答案,最后就是通过一步一步的迭代得出最后问题的答案了。反思:错在了nums[5] 8那里,规模为6的数组里,如果子序列不以8结尾,有[4,10]长度是2,这样8前面的3记录的是2,又8>3那么 8记录的是2+1=3,但是规模为6的数组里不存在长度为3的子序列,只有[4,10]和[3,8]两个长度为2的序列,但8这里却把[4,10]和[3,8]混在一起。

2022-12-24 22:03:31 2092

原创 【动态规划】最强最详细的思路及模板(C++)

如何定义原问题和子问题 f(n),因为有时题目给的问题可能比较模糊,所以我们在求解时要经过一些转换。如何通过子问题 f(1), f(2), … f(n - 1)推导出原问题 f(n),即如何写状态转移方程李煜东著《算法竞赛进阶指南》,摘录如下::为了保证计算子问题能够按照顺序、不重复地进行,动态规划要求已经求解的子问题不受后续阶段的影响。这个条件也被叫做「无后效性」。换言之,动态规划对状态空间的遍历构成一张有向无环图,遍历就是该有向无环图的一个拓扑序。

2022-12-24 13:43:02 2980

原创 【C++】【排序算法】快速排序;堆排序;归并排序;逆序对(保证看懂!)

一、快速排序二、堆排序三、归并排序归并排序的拓展(1):数组中的逆序对归并排序的拓展(2):重要逆序对

2022-12-24 00:06:30 951

原创 【POJ】Genealogical tree 深度优先搜索dfs+哈希表;Yogurt factory 贪心

在那里遇到了最有价值的火星人,因此,为了在所有讨论中冒犯任何人,首先用于让老火星人发言,而不是年轻的火星人,而不是最年轻的无子女评估员。但是,如果由于错误而首先说一个孙子,并且只比他年轻的曾祖父说话,这是一个真正的丑闻。标准输入的第一行仅包含一个数字 N,1

2022-12-21 18:04:04 102

原创 【C++动态规划】用滚动数组节省空间复杂度

所以可以用两个变量p,q代表dp[i-2],dp[i-1],用r代表当前处理的dp[i],r=p+q,即相当于dp[i]=dp[i-2]+dp[i-1],然后下一次循环,让p=q,q=r,意思是数组向p的方向滚动了一位,滚动数组里原来的dp[i-2]变成dp[i-1],原来的dp[i-1]变成dp[i],r变成dp[i+1]~~使用有限个位置储存元素的信息,这有限个位置相当于一个空间复杂度为O(1)的vector,每次最后一个位置放入新加入的元素,其余元素向前移动一个位置。

2022-12-16 00:16:00 281

转载 【操作系统】 Operation System 第二章:操作系统基础操作

系统调用时涉及到特权级从用户态到内核态的转换,应用程序和操作系统有各自的堆栈,这两个变化比函数调用的开销更大,但更安全和可靠。-内核态:应用程序在执行的过程中,CPU执行的特权级的状态(高,操作系统可以执行CPU任何一条指令)。-用户态:应用程序在执行的过程中,CPU执行的特权级的状态(很低,不能访问特殊机器指令和IO)。跳转到操作系统的起始地址。(7)异常:(来源于不良的应用程序)非法指令或其它花的处理状态(e.g.内存出错)。(8)中断:(来源于外设)来自不同的硬件设备的计时器和网络的中断。

2022-12-11 22:56:15 283

原创 【C++ dfs return】dfs可以不写return吗?

答案是:有可以不写return的情况。1、理解C++语言递归函数*2、例题:leetcode 判断二分图(dfs)3. dfs不能不写return的情况1.非法访问2.无限递归

2022-11-29 17:55:13 955 2

原创 【openjudge】C++ cin;cout 常见输入输出

cin简介一、输入的是数组类型1.一维数组:输入规模n,以及n个数的值。2.二维数组(矩):输入规模m*n,以及m*n个数的值。3.以0结束的输入4.以回车结束的输入二、输入的是字符串行的文本类型

2022-11-28 15:26:18 1460

转载 【C++ queue】

queue的初始化、访问和常见函数

2022-11-19 15:38:28 167

原创 【C++】vector类详细总结(包括vector二维数组)(持续更新中)

vector的初始化(9种),vector的访问和遍历,vector的函数:增删查改,二维数组的初始化和遍历等

2022-11-19 15:26:06 14981 4

原创 【C++ string类】最全的讲解和使用!(๑•̀ㅂ•́)و✧

本文介绍了C++ string类的初始化、访问、遍历、截取、各种函数

2022-11-18 23:48:35 780

原创 【C++ unordered_map】leetcode常用的哈希表操作

前言:unordered_map使用了哈希表的原理实现,其增删查改的时间复杂度都是O(1),空间复杂度是O(n),适用于快速查找。

2022-11-15 18:28:42 1851

原创 图的储存:矩阵、邻接表、链式前向星

图的储存:矩阵、邻接表、链式前向星

2022-10-19 17:16:52 178

原创 图的存储:回顾C++最基本的两种储存/访问方式:数组和链表

回顾C++最基本的两种储存/访问方式:数组和链表

2022-10-19 16:28:22 270

空空如也

空空如也

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

TA关注的人

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