自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【MySQL04】:基础查询

对于value_list我们通过作为分隔符。

2025-08-04 21:37:46 471

原创 【MySQL03】:MySQL约束

表中一定要有各种约束, 通过约束,我们能够未来保证数据库中的数据是合法的。约束的目标就是保证数据的完整性和可预期性。

2025-08-04 21:36:30 341

原创 【MySQL02】: MySQL类型

UNSIGNED。

2025-08-04 21:34:04 305

原创 【MySQL01】: 认识MySQL

MySQL是一个网络服务, 默认是3306mysqld是服务端, mysql是客户端mysql是一套给我们提供数据存取服务的网络程序数据库在磁盘(MySQL)或者内存(Redis)中进行存储的特定结构组织的数据在磁盘上数据存储的解决方案。

2025-08-04 21:30:39 539

原创 【MySQL基础01】:如何创建删除修改表和数据库

MySQL是一个网络服务, 默认是3306mysqld是服务端, mysql是客户端mysql是一套给我们提供数据存取服务的网络程序数据库在磁盘(MySQL)或者内存(Redis)中进行存储的特定结构组织的数据在磁盘上数据存储的解决方案。

2025-07-29 20:48:30 289

原创 高阶数据结构 -- 图(万字总结, 最全面)

通过边,节点构成的数据结构,我们称作图,树是一种特殊的图,但是树和图又不太一样,树更多的关注的是树的节点,比如。

2025-07-28 14:01:20 979

原创 IO复用(多路转接)

select poll epoll的优缺点select : select适合简单的应用场景(当我们需要管理的文件描述符比较少的时候), select是一个简单的不错的选择, 但是select频繁的将数据从内核到用户之间频繁拷贝, 当涉及到的描述符多了之后, 就会显著降低效率poll : poll在select的基础之上进行了改进, 只能说在设计上更加的方便的, 但是轮询和用户内核之间的拷贝问题没有得到根本的解决。

2025-07-22 21:56:04 606

原创 【算法300题】:双指针

输入:firstList = [[0,2],[5,10],[13,23],[24,25]], secondList = [[1,5],[8,12],[15,24],[25,26]]两个闭区间的 交集 是一组实数,要么为空集,要么为闭区间。输出:[[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]]输入:firstList = [[1,3],[5,9]], secondList = []输入:intervals = [[1,3],[2,6],[8,10],[15,18]]

2025-07-20 23:55:40 903

原创 【算法300】:栈02

输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]给你一个字符串 s,「k 倍重复项删除操作」将会从 s 中选择 k 个相邻且相等的字母,并删除它们,使被删去的字符串的左侧和右侧连在一起。例如,如果 s = “()))” ,你可以插入一个开始括号为 “(()))” 或结束括号为 “())))”。求在该柱状图中,能够勾勒出来的矩形的最大面积。

2025-07-20 15:50:11 452

原创 【leetcode刷题300】:栈01

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

2025-07-14 14:03:06 605

原创 【leetcode算法300】:二分查找

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。思路通过两次二分找到左右的边界public:low = left;up = left;

2025-07-09 19:19:01 580

原创 【算法】:KMP算法 (包让你看明白)

对于模式串P,next[i]表示子串P[0…i-1]的最长公共前后缀长度。KMP算法通过预处理模式串构建next数组,利用已匹配的信息避免不必要的回溯,将字符串匹配的时间复杂度从O(n*m)优化到O(n+m)。理解KMP算法的关键在于理解最长公共前后缀的概念和next数组的构建过程。虽然KMP算法不是最简单的字符串匹配算法,但它在很多实际应用中提供了优异的性能。。

2025-07-02 20:09:11 783

原创 【leetcode算法300】:哈希板块

编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true;不是,则返回 false。我们判断要么出现循环,要么出现一,不可能不出现循环且不唯一,因为不可能一直增大。对于三位数及以上,每个为的平方和最多为99 * n, 显然是有限的。

2025-07-02 20:03:37 986

原创 【leetcode刷题】:数组章节

问题找到数组中的第三的数,我的第一个思路还是topk问题,就是通过构建一个堆表示当前最大的几个数时间复杂度 : n * log(k)思路:首先将数组的前k个数构建一个小根堆,然后如果新的数,大于堆顶,将堆顶删除,将这个数添加如果没有,continue这是我第一次写的,显然出现了一个问题,就是审题不清晰,这道题还需要我们进行数据的去重,就是同样的数据不能计算两次。解决方式就是通过hash表进行去重,但是这样可能造成o(n)的空间复杂度的浪费,这里我们不推荐。

2025-07-02 15:00:03 872

原创 [leetcode算法300题][数组篇]

问题找到数组中的第三的数,我的第一个思路还是topk问题,就是通过构建一个堆表示当前最大的几个数时间复杂度 : n * log(k)思路:首先将数组的前k个数构建一个小根堆,然后如果新的数,大于堆顶,将堆顶删除,将这个数添加如果没有,continue这是我第一次写的,显然出现了一个问题,就是审题不清晰,这道题还需要我们进行数据的去重,就是同样的数据不能计算两次。解决方式就是通过hash表进行去重,但是这样可能造成o(n)的空间复杂度的浪费,这里我们不推荐。

2025-06-20 22:21:12 992

原创 [C++] : 谈谈IO流

谈谈C++中的IO流

2025-06-18 11:34:37 710

原创 [C++11]:万字总结,过来人深刻的帮助理解智能指针

本文章可以帮助你从零开始或者更加深刻的理解C++11中的智能指针

2025-06-13 20:37:26 1212

原创 [C++11] : 谈谈包装器和lambda表达式,仿函数,bind的坑

lamda, 包装器,bind的坑,C++11新特性

2025-06-12 21:47:45 1171 1

原创 [C++][设计模式] : 单例模式(饿汉和懒汉)

本内容介绍了编程中通过饿汉和懒汉思想来实现单例模式

2025-06-12 20:48:18 598

原创 【数据结构】:一文帮你完全弄懂哈希(hash) , 并且帮你手搓std::unordered_map

文章谈论了哈希的思想以及如何实现哈希表,其实哈希是一种很简单的数据结构,我们只不过站在了巨人的肩膀上。

2025-06-12 18:00:00 1298

原创 [算法][好题分享][第三大的数][最短无序子数组]

问题找到数组中的第三的数,我的第一个思路还是topk问题,就是通过构建一个堆表示当前最大的几个数时间复杂度 : n * log(k)思路:首先将数组的前k个数构建一个小根堆,然后如果新的数,大于堆顶,将堆顶删除,将这个数添加如果没有,continue这是我第一次写的,显然出现了一个问题,就是审题不清晰,这道题还需要我们进行数据的去重,就是同样的数据不能计算两次。解决方式就是通过hash表进行去重,但是这样可能造成o(n)的空间复杂度的浪费,这里我们不推荐。

2025-06-12 15:15:29 491

原创 【C++语法】:过来人的总结,类和对象 2

类和对象还有很多的细节知识,比如移动拷贝,移动构造,为什么拷贝必须const但是作为一个C++初学者,了解这么多已经暂时足够了,如果想要了解更多关于C++, 可以关注我,我会只需更新。

2025-06-11 21:02:05 765

原创 【C++语法】(过来人的总结)类和对象 1

int day_;int year_;这是一个简单呢的累的定义如果将class改成struct ,那么他和我们C语言中的结构体没有什么区别。那么我们C++ class和C struct 有什么区别吗?当然有啦,而且区别可不是一般的大。本篇简单谈谈了类,读者已经建立了一个针对类和对象以及面相对象的一个感性的简单的认识,在下一篇中我将具体谈到如果操作一个类,或者说如何设计出一个类。

2025-06-11 19:51:30 981

原创 深入解析Google多线程环境下的空间配置器——TCMalloc

TCMalloc通过三级缓存架构与精细化锁策略线程缓存解决高频小内存的无锁快速分配。中心缓存平衡线程间内存资源,避免饥饿。页缓存对接操作系统,处理大块内存的分配与回收。这种设计不仅显著降低了多线程竞争带来的性能损耗,还通过内存对齐、Span管理和批量操作等技术,优化了内存利用率与分配速度。

2025-05-27 20:54:28 919

原创 【C++】C++异步编程四剑客:future、async、promise和packaged_task详解

C++的异步编程工具提供了不同层次的抽象,从简单的std::async到更灵活的和,开发者可以根据具体需求选择合适的工具。理解这些工具的特性和适用场景,能够帮助我们编写出更高效、更健壮的并发程序。

2025-05-24 21:01:02 805

原创 【算法】:动态规划--背包问题

这里列举了常见的基础背包问题的解法,再往后学习就是竞赛难度的背包问题,这里我们不再继续赘述,读者想要了解更加复杂的背包问题,可以自行继续探索。

2025-05-24 20:50:35 752 2

原创 【c++】: c++11线程库

这里总结介绍了C++11线程三板斧std::thread , std::mutex, std::condition_variable,帮助我们能够更加方便的实现线程操作,同时抹平了操作系统的差异,还是比较有用的。

2025-05-23 20:24:07 826

原创 【算法】: 前缀和算法(利用o(1)的时间复杂度快速求区间和)

前缀和的数学定义通俗来讲,前缀和就是从某个位置到最开始的所有数据的和我们可以称作前缀和一维前缀和的概念从当前位置到数组开始的所有数据的和。二维前缀和的概念从当前位置到矩阵和开始((0,0))构成的局部矩阵的所有元素之和。

2025-05-23 19:47:43 701

原创 【算法】:滑动窗口

滑动窗口的时间复杂度实现了从原来的n * n 变成了 o(n) 因为left,right指针都只遍历了数组一次。

2025-05-09 19:44:40 1055

原创 C++ CRTP技术(奇异递归模版模式)

最近了解到C++的CRTP技术,通过博客来这里记录一下。我们首先可以了解一下什么是CRTP技术。CRTP是C++的一种高级模版变成模式。

2025-05-07 15:58:43 580

原创 【Linux操作系统】:信号

首先我们可以简单理解一下信号的概念,信号,顾名思义,就是我们操作系统发送给进程的消息。举个简单的例子,我们在写C/C++程序的时候,当执行a / 0类似的操作的时候,程序直接就挂了,这是什么原因呢?其实本质就是CPU在计算的时候出现异常,触发硬件中断,然后我们操作系统发送了对应的信号给进程,然后我们进程默认就退出了。这一系列东西,我都将在后续的文章中具体的提到。

2025-04-08 20:16:36 1235

原创 【Linux内核】从文件层面理解socket建立的方式(优雅的C风格多态)

通过本文的分析,我们从内核层面深入理解了 Socket 的创建和连接机制。从到,再到文件系统与套接字的关联,每一步都体现了 Linux 内核设计的精妙之处。理解这些底层机制,不仅有助于我们更好地掌握网络编程,还能为性能优化提供思路。希望这篇博客能帮助你更好地理解 Socket 的底层实现!

2025-03-19 15:06:06 1140 1

原创 【程序员小技巧】git的常用操作(图解)

user.name 用户名user.email 用户的邮箱–global让我们整台机器的git都使用user.name user.email作为config–l–unset: 重置加上–global就是变成全局的。

2025-03-12 15:08:00 882 1

原创 【计算机网络03】网络层协议IP(详细)

IP协议作为TCP/IP协议族的核心,扮演着互联网通信基石的角色。它如同一位尽职尽责的邮差,在网络世界中穿梭,将数据包准确无误地送达目的地。

2025-03-03 15:14:15 1431 2

原创 【c++语法基础】继承和多态

c++为什么基类指针可以指向派生类的函数,我们知道如果只是普通的函数重写,这种情况下同名的函数构成的覆盖,基类指针通过赋值兼容转换只能调用基类的那个函数不能调用派生类的函数。

2025-02-26 09:13:04 643

原创 【c++语法基础】c/c++内存管理

c和c++在开辟空间的时候还是会有一些区别,毕竟C语言是面相过程,C++是面相对象,而且C++基于C语言引入了类的概念。很多初学者认为malloc和new没有什么区别,但是还是存在着一些明显的差异。

2025-02-26 08:28:19 405

原创 【计算机网络协议02】详解传输层协议TCP/UDP

我们知道TCP中的缓冲区是定长的,因此,16窗口大小表示当前缓冲区的剩余量。传输层协议(TCP/UDP)是网络通信中的核心,负责在源主机和目标主机之间提供可靠或高效的数据传输服务。TCP(传输控制协议)通过三次握手建立连接,确保数据的可靠性和顺序,适用于对数据完整性要求高的场景,如网页浏览和文件传输。UDP(用户数据报协议)则提供无连接服务,传输速度快但不可靠,适合实时性要求高的应用,如视频流和在线游戏。两者各有优劣,选择时需根据具体需求权衡可靠性与效率。

2025-02-24 17:22:08 896

原创 【计算机网络协议01】应用层协议HTTP

应用层协议本来需要程序员自己去指定,但是HTTP等良好的协议值得我们程序员进行学习其中的思想或者直接作为项目协议进行利用。

2025-02-23 19:38:01 926

原创 Linux下多线程(通过系统接口实现封装 + c++11线程库实现封装)

本篇文章主要介绍了如何通过生产者消费者模型实现线程池,以及如何在Linux通过Linux,libpthread.so的动态库实现线程池,同时还加入了日志的编写。

2025-02-06 14:24:15 691

原创 Linux线程,锁

在程序的内部一个执行的路线叫做线程。更准确的定义叫做执行队列。用一个比较通俗易懂的理解,多进程就像是一个项目组有很多的人,每个人执行的分工。多线程就像是一个人同时做很多份工作。

2025-02-05 20:38:05 970

空空如也

空空如也

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

TA关注的人

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