- 博客(106)
- 收藏
- 关注

原创 【小米】Linux 实习生
朱小哥」我觉得你说的有问题,成员函数是存放在代码段的,当然占用内存,但是类对象的大小只包含成员变量,不包含成员函数,会将类对象的地址传递给this指针,当调用一个对象的非静态成员函数时, 系统会把该对象的起始地址赋给成员函数的 this 指针, 另外,静态成员函数不属于任何一个对象, 所以静态成员函数没有 this 指针, 既然它没有指向某一对象, 也就无法对一个对象中的非静态成员进行访问。函数也用于从一个内存区域复制一定数量的字节到另一个内存区域,但与 memcpy 不同,它会处理重叠的内存区域。
2023-10-19 18:54:16
446
9

原创 【MySQL】索引和事务重点知识汇总
本节内容: 索引的作用, 付出的代价, 索引背后的数据结构与事务的作用, 特性, 隔离性等重点知识汇总
2022-12-21 09:00:00
1646
24

原创 详解sizeof、strlen、指针和数组等组合题
生活不易,博主吐血整理!!本部分属于指针、数组、sizeof和strlen组合在一起的高级玩法,助你轻松拿下!
2022-07-02 20:24:59
749
27

原创 大小端字节序和整型提升
⛳前言+目录:大小端字节序 和整型提升 是C语言中重要的知识点,其中的很多细节对初学C语言的小伙伴来说不是很友好,因此我总结了 大小端字节序 和 整型提升 的易错点,给你全面的介绍,一举掌握大小端字节序和整型提升⛵🚤🚢如果对您有帮助的话,不要忘记点赞+关注哦,蟹蟹目录📣前言+目录:📣大小端字节序:概念:整型提升:边做边学,提高更快🌵练习1:🌵练习2:🌵练习3:📣结语:...
2022-05-25 08:05:03
548
20

原创 虎头虎脑的sizeof、strlen、数组长度、数组中元素个数和字符串长度
对于C语言的初学者,常常被sizeof、strlen、数组长度、数组中元素个数和字符串长度这些涉及数组的概念的题弄得摸不着啊头脑,今天我将以往所遇到的相关问题,提取精华,整理了出来,查阅资料,给你最全面的介绍,下次看到不再发慌,一笑而过保熟的总结:🔥sizeof、strlen 总结:sizeof 是操作符,计算变量(类型)所占内存空间的大小,单位是字节,不关注内存中存放的内容int num=10; num的类型是intpri...
2022-05-03 08:03:55
3213
50

原创 【C语言初学必看】猜数字游戏背后的知识
前言:猜数字游戏是非常适合初学者学习的代码,其中包含的函数、循环和逻辑方式等知识点。这既能起到对以往知识的复习,也可以学习到一种不同的逻辑思考方式。有一些知识点可能曾经闻所未闻的,不要像多数人一样放弃,如果不走出舒适圈就不可能进步。难题摆在这里,唯一可以改变现状的只有你自己,加油。以下是猜数字游戏的所有代码://要求写一个猜数字游戏//1.自动产生一个1-100之间的随机数字//2.猜数字// a.猜对了,就恭喜你,游戏结束// b.猜错了,会告诉你...
2022-04-06 14:26:15
5860
10
原创 房屋价格 - 高级回归技术
Kaggle房价预测项目是一个极具教育意义的竞赛,适合学习和实践机器学习中的回归分析和特征工程。通过参与该项目,不仅可以提升技术能力,还能为解决实际业务问题积累经验。
2025-02-19 19:46:18
1028
原创 支持向量机原理
支持向量机(简称SVM)虽然诞生只有短短的二十多年,但是自一诞生便由于它良好的分类性能席卷了机器学习领域。如果不考虑集成学习的算法,不考虑特定的训练数据集,尤其在分类任务中表现突出。在分类算法中的表现SVM说是排第一估计是没有什么异议的。
2025-02-11 20:01:42
1032
原创 朴素贝叶斯原理
在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系,要么是决策函数Y=f(X)Y=f(X), 要么是条件分布P(Y|X)P(Y|X)。但是朴素贝叶斯却是生成方法,也就是直接找出特征输出Y和特征X的联合分布P(X,Y)P(X,Y),然后用P(Y|X)=P(X,Y)/P(X)P(Y|X)=P(X,Y)/P(X)得出。 首先,这个名字里的“朴素”是指它做
2025-02-06 20:00:41
782
原创 K近邻法(KNN)原理
KNN算法是很基本的机器学习算法了,它非常容易学习,在维度很高的时候也有很好的分类效率,因此运用也很广泛,这里总结下KNN的优缺点。1) 理论成熟,思想简单,既可以用来做分类也可以用来做回归2) 可用于非线性分类3) 训练时间复杂度比支持向量机之类的算法低,仅为O(n)4) 和朴素贝叶斯之类的算法比,对数据没有假设,准确度高,对异常点不敏感。
2025-02-05 20:42:57
868
原创 感知机原理
感知机可以说是最古老的分类方法之一了,在1957年就已经提出。今天看来它的分类模型在大多数时候泛化能力不强,但是它的原理却值得好好研究。因为研究透了感知机模型,学习支持向量机的话会降低不少难度。在机器学习中,指的是模型对新数据的适应能力,即模型在训练数据上学到的规律能否很好地应用到上。
2025-02-05 20:33:17
438
原创 逻辑回归原理
逻辑回归是一个分类算法,它可以处理二元分类以及多元分类。虽然它名字里面有“回归”两个字,却不是一个回归算法。逻辑回归尤其是二元逻辑回归是非常常见的模型,训练速度很快,虽然使用起来没有支持向量机(SVM)那么占主流,但是解决普通的分类问题是足够了,训练速度也比起SVM要快不少。
2025-02-05 20:22:25
298
原创 线性回归原理和算法
线性回归的L2正则化通常称为Ridge回归,它和一般线性回归的区别是在损失函数上增加了一个L2正则化的项,和Lasso回归的区别是Ridge回归的正则化项是L2范数,而Lasso回归的正则化项是L1范数。线性回归的L1正则化通常称为Lasso回归,它和一般线性回归的区别是在损失函数上增加了一个L1正则化的项,L1正则化的项有一个常数系数α来调节损失函数的均方差项和正则化项的权重。,缩小了回归系数,使得模型相对而言比较的稳定,但和Lasso回归比,这会使得模型的特征留的特别多,模型解释性差。
2025-02-04 19:51:18
330
原创 交叉验证、精确率、召回率
交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。交叉验证用在数据不是很充足的时候。如果样本大于一万条的话,我们一般随机的把数据分成三份,一份为训练集,一份为验证集,最后一份为测试集。用训练集来训练模型,用验证集来评估模型预测的好坏和选择模型及其对应的参数。使用RoC曲线和PR曲线,我们就能很方便的评估我们的模型的分类能力的优劣了。False Positives,FP:预测为正样本,实际为负样本的特征数。
2025-02-04 19:46:15
304
原创 【事务】事务的特性、并行事务有什么问题、事务的隔离级别等重点知识汇总
假设有 A 和 B 这两个事务同时在处理,事务 A 先开始从数据库中读取小林的余额数据,然后再执行更新操作,如果此时事务 A 还没有提交事务,而此时正好事务 B 也从数据库中读取小林的余额数据,那么事务 B 读取到的余额数据是刚才事务 A 更新后的数据,即使没有提交事务。假设有 A 和 B 这两个事务同时在处理,事务 A 先开始从数据库查询账户余额大于 100 万的记录,发现共有 5 条,然后事务 B 也按相同的搜索条件也是查询出了 5 条记录。在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
2023-09-28 20:10:48
464
原创 【索引】常见的索引、B+树结构、什么时候需要使用索引、优化索引方法、索引主要的数据结构、聚簇索引、二级索引、创建合适的索引等重点知识汇总
但它的好处是它并不需要扫全表,因为索引是有序的,即便有重复值,也是在一个非常小的范围内扫描。,由于每次插入主键的索引值都是随机的,因此每次插入新的数据时,就可能会插入到现有数据页中间的某个位置,这将不得不移动其它数据来满足新数据的插入,甚至需要从一个页面复制数据到另外一个页面,我们通常将这种情况称为。而树的高度决定于磁盘 I/O 操作的次数,因为树是存储在磁盘中的,访问每个节点,都对应一次磁盘 I/O 操作,也就是说树的高度就等于每次查询数据时磁盘 IO 操作的次数,所以树的高度越高,就会影响查询性能。
2023-09-28 20:05:08
1297
原创 【数据库】存储引擎InnoDB、MyISAM、关系型数据库和非关系型数据库、如何执行一条SQL等重点知识汇总
需要注意的是,MySQL执行查询的效率不仅受查询本身的复杂性和优化程度影响,还受到数据库服务器的硬件性能、表的设计、索引的使用、数据量等因素的影响。因此,SQL查询性能优化是数据库管理和应用程序开发中的重要任务之一,可以通过合理的索引设计、查询改写、缓存策略等手段来提高数据库性能。在这个过程中,MySQL数据库引擎会负责将SQL语句翻译成物理操作,与存储引擎进行交互,并执行相关的I/O操作以读取和写入数据。适合: 插入不频繁,查询非常频繁,如果执行大量的SELECT,MyISAM是更好的选择, 没有事务。
2023-09-28 20:02:27
934
原创 【MySQL】SQL优化、char、varchar、外键约束、排查慢sql等重点知识汇总
在治理慢查的过程中,SQL语句的使用问题是导致慢SQL的主要因素,因此本文主要从SQL优化角度出发,对慢SQL的常见原因和特征进行分析,介绍慢SQL的优化过程以及一些有效的调优技巧和工具,希望能够提供一些有用的方法和策略,帮助大家更好地应对慢SQL问题,并最终实现提升系统性能和优化用户体验的目标。假设你有两个表,一个是学生表,另一个是课程表,这两个表之间有一个关系,即一个学生可以选修多门课程,而一门课程也可以被多个学生选修。在合适的情况下,使用JOIN来关联表,而不是使用子查询。使用索引来限定数据范围。
2023-09-28 20:00:50
571
原创 【三次握手、四次挥手】TCP建立连接和断开连接的过程、为什么需要三次握手,为什么需要四次挥手、TCP的可靠传输如何保证、为什么需要等待2MSL等重点知识汇总
可见,序列号在 TCP 连接中占据着非常重要的作用,所以当客户端发送携带「初始序列号」的 SYN 报文的时候,需要服务端回一个 ACK 应答报文,表示客户端的 SYN 报文已被服务端成功接收,那当服务端发送「初始序列号」给客户端的时候,依然也要得到客户端的应答回应,,服务器如果收到乱序的包,也给客户端回复 ACK,比如收到乱序的包 6,7,8,9 时,服务器全都发 ACK = 5,这样客户端就知道5丢失了,当客户端收到三个相同的 ACK 报文时,会在超时之前,重传丢失的报文段,而不需要等到计时器超时。
2023-09-28 09:38:44
1034
2
原创 【TCP/UDP】MSS和MTU、UDP报文、TCP报文、如何实现TCP的长连接、TCP的粘包问题如何解决等重点知识汇总
这时,接收方的程序如果不知道发送方发送的消息的长度,也就是不知道消息的边界时,是无法读出一个有效的用户消息的,因为用户消息被拆分成多个 TCP 报文后,并不能像 UDP 那样,一个 UDP 报文就能代表一个完整的用户消息。数据分段:首先,数据报文被分割成多个16位的字(或者称为16位字,即两个字节),如果数据长度不是16位的整数倍,最后一个字节将被扩展为16位。求和:将这些16位字依次相加,形成一个32位的中间和,如果中间和的高16位不为0,将其加到低16位上,得到最终的16位和。
2023-09-28 09:35:47
1808
原创 【HTTPS】HTTPS解决了什么问题、HTTPS的加密过程和方式、SSL/TLS、中间人攻击等重点知识汇总
SSL 和 TLS 都是用于加密通信的安全协议,用于保护在计算机网络上进行的数据传输的安全性和隐私性。SSL/TLS协议使用非对称加密和对称加密相结合的方式来实现通信的加密和身份验证。
2023-09-28 09:30:42
1184
原创 【HTTP】URL结构、HTTP请求和响应的报文格式、HTTP请求的方法、常见的状态码、GET和POST有什么区别、Cookie、Session等重点知识汇总
目录URL格式HTTP请求和响应报文的字段?HTTP请求方法常见的状态码GET 和 POST 的区别Cookie 和 Session?:是用来分割URL的主体部分(通常是路径)和查询字符串(query string)查询字符串是一组键值对的参数query string:是键值对的结构,&分割键值对,=分割键和值Content-Type: 数据类型(text/html等)。Content-Length: 正文的长度。Host: 客户端告知服务器,所请求的资源是在哪个主机的哪个端口上。User-Agent: 声
2023-09-28 09:25:55
661
原创 【网络模型】OSI七层网络模型、TCP/IP网络模型、键入网址到页面显示的过程、DNS是什么等重点知识汇总
回车之后浏览器做的第一步工作是解析 URL,从而生成发送给 Web 服务器的请求信息。解析之后,浏览器确定了 Web 服务器和文件名,接下来就是根据这些信息来生成 HTTP 请求消息了。接下来,需要委托操作系统将消息发送给 Web 服务器。但在发送之前,还有一项工作需要完成,那就是。
2023-09-28 09:23:02
775
原创 【IO多路复用】IO机制、select、poll、epoll、边缘触发、水平触发等重点知识汇总
比较传统的方式是使用多进程/线程模型,每来一个客户端连接,就分配一个进程/线程,然后后续的读写都在对应的进程/线程,这种方式处理 100 个客户端没问题,但是当客户端增大到 10000 个时,10000 个进程/线程的调度、上下文切换以及它们占用的内存,都会成为瓶颈。最基础的 TCP 的 Socket 编程,它是阻塞 I/O 模型,基本上只能一对一通信,那为了服务更多的客户端,我们需要改进网络 I/O 模型。:应用程序在进行IO操作时,会立即返回,无论IO操作是否完成,应用程序都可以进行其他操作。
2023-09-27 11:26:25
429
原创 【调度算法】进程调度算法、内存页面置换算法、LRU算法、LFU算法、磁盘调度算法等重点知识汇总
这种算法也叫做电梯算法,比如电梯保持按一个方向移动,直到在那个方向上没有请求为止,然后改变方向。磁头先响应左边的请求,直到到达最左端( 0 磁道)后,才开始反向移动,响应右边的请求。扫描调度算法性能较好,不会产生饥饿现象,但是存在这样的问题,中间部分的磁道会比较占便宜,中间部分相比其他部分响应的频率会比较多,也就是说每个磁道的响应频率存在差异。
2023-09-27 11:23:11
1427
3
原创 【锁】volatile、死锁、互斥锁、自旋锁、读写锁、乐观锁、悲观锁、常见的线程锁等重点知识汇总
线程 A 和 线程 B 获取资源的顺序要一样,当线程 A 是先尝试获取资源 1,然后尝试获取资源 2 的时候,线程 B 同样也是先尝试获取资源 1,然后尝试获取资源 2。也就是说,线程 A 和 线程 B 总是以。
2023-09-27 11:18:39
328
原创 【QandA C++】进程、线程、协程、进程间通信的方式、线程同步机制、守护线程、僵尸进程、孤儿进程、线程切换的资源等重点知识汇总
创建一个进程实际上就是先将进程的代码和数据加载到内存上,接着操作系统对该进程进行描述形成对应的PCB(PCB是对进程控制块的统称),Linux下描述进程控制块的结构体叫做task_struct。Socket 实际上不仅用于不同的主机进程间通信,还可以用于本地主机进程间通信,可根据创建 Socket 的类型不同,分为三种常见的通信方式,一个是基于 TCP 协议的通信方式,一个是基于 UDP 协议的通信方式,一个是本地进程间通信方式。每个进程都有自己的内存空间,独立于其他进程,使其能够互相隔离。
2023-09-27 11:16:51
398
原创 【QandA C++】并发和并行、软链接、硬链接、用户态和内核态、异常和中断、信号和信号量等重点知识汇总
总之,信号和信号量是不同的概念,用于不同的目的。信号是一种进程间通信方式,用于通知事件的发生,而信号量是一种同步工具,用于控制对共享资源的访问。,防止他们获取别的程序的内存数据,或者获取外围设备的数据,并发送到网络,CPU划分出两个权限等级 – 用户态和内核态。cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。大家都知道,当我们在敲击键盘的同时就会产生中断,当硬盘读写完数据之后也会产生中断,所以,我们需要知道,所以,大家也需要记住的是,
2023-09-27 11:13:28
188
原创 【QandA C++】内存分段和内存分页等重点知识汇总
每个进程都有 4GB 的虚拟地址空间,而显然对于大多数程序来说,其使用到的空间远未达到 4GB,因为会存在部分对应的页表项都是空的,根本没有分配,对于已分配的页表项,如果存在最近一定时间未访问的页表,在物理内存紧张的情况下,操作系统会将页面换出到硬盘,也就是说不会占用物理内存。在前面我们知道了,对于单页表的实现方式,在 32 位和页大小 4KB 的环境下,一个进程的页表需要装下 100 多万个「页表项」,并且每个页表项是占用 4 字节大小的,于是相当于每个页表需占用 4MB 大小的空间。
2023-09-27 11:09:56
276
原创 【QandA C++】内存泄漏、进程地址空间、堆和栈、内存对齐、大小端和判断、虚拟内存等重点知识汇总
栈就像我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。栈空间和堆区的大小是由操作系统和编译器决定的,不同系统和编译器可能会有不同的默认值。,不是所有编译器都有默认对齐数,当编译器没有默认对齐数的时候,成员变量的大小就是该成员的对齐数。堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。,而数据的低位,保存在内存的低地址中;,而数据的高位,保存在内存的低地址中;
2023-09-26 11:02:09
501
6
原创 【哈希】关于哈希的实现、冲突的解决、扩容等
哈希冲突指的是不同的键经过哈希函数计算后,产生了相同的哈希值,导致它们应该被存储在哈希表中的同一个桶中。由于哈希表的桶数量是有限的,当多个键被映射到同一个桶索引时,就发生了哈希冲突。哈希冲突是不可避免的,因为哈希函数将无限的键空间映射到有限的桶空间中。即使设计良好的哈希函数也无法完全避免冲突的发生,因为键空间远大于桶空间。哈希冲突会影响哈希表的性能和操作效率,特别是在发生冲突的桶中存储大量的键值对时,会导致链表或其他数据结构的长度增加,从而影响插入、删除和查找操作的效率。
2023-09-24 10:35:18
690
1
原创 【QandA C++】sort底层、vector、list、push_back/emplace_back、resize、reserve、迭代器失效、unordered_XXX对比map/set、红黑树
因为插入排序在面对“几近排序”的序列时,表现更好,而快排是通过递归实现的,会为了极小的子序列产生很多的递归调用在区间长度小的时候经常不如插入排序效率高)如果插入节点的父节点也是红色的,需要进行颜色调整和旋转操作,以满足红黑树的性质。,可以选择继承节点(通常是左子树中的最大节点或右子树中的最小节点)来替代要删除的节点,然后删除继承节点。左旋:将一个节点的右子节点提升为该节点的父节点,同时该节点成为左子节点。右旋:将一个节点的左子节点提升为该节点的父节点,同时该节点成为右子节点。
2023-09-24 10:31:16
309
原创 【容器】stack、queue、priority_queue、deque、set、map、unordered_map、unordered_set、multiXXX、unordered_multiXXX
栈是一种具有后进先出特性的数据结构。push():将元素入栈,即将添加到栈顶。pop():移除栈顶的元素,并返回该元素的值。注意,这个操作会改变栈的大小。top():获取栈顶元素的值,但不移除该元素。即查看栈顶元素的值而不弹出它。empty():检查栈是否为空,如果栈为空则返回true,否则返回false。size():获取栈中元素的数量。
2023-09-24 10:28:09
203
原创 【排序算法】冒泡排序、插入排序、归并排序、希尔排序、选择排序、堆排序、快速排序
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。无论输入数据规模的大小,额外空间的使用量都保持不变,因此空间复杂度是常数级别的 O(1)。需要注意的是,在实际实现中,如果原地排序,可以避免创建临时数组,将临时结果存储在原始数组中,这样可以将空间复杂度优化为O(1)。在最坏情况下,即每次选择的基准元素都是当前子数组中的最大或最小值时,快速排序的递归树将达到最大深度,此时空间复杂度为 O(n)。
2023-09-24 09:19:30
696
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人