自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法工具箱之模拟

按照题目给出的规则,维护程序当前的状态,并一步一步执行操作,最终得到结果。模拟算法通常没有固定公式。题目告诉我们发生了什么,程序就按照这个过程执行什么。例如:(1)题目描述人物移动,程序记录坐标和方向。(2)题目描述字符串转换,程序记录当前字符和处理位置。(3)题目描述多个事件依次发生,程序按照时间顺序更新状态。(4)题目描述多个对象同时执行动作,程序记录每个对象当前所处的阶段。

2026-07-20 15:37:26 892

原创 MySQL--表的约束

约束是用于,确保数据的。

2026-04-18 14:22:25 361

原创 MySQL--数据类型

数据类型推荐用途示例TINYINT状态、标志位INTID、计数BIGINT大数字 IDDECIMAL金额、精确计算VARCHAR变长字符串CHAR定长编码TEXT长文本DATETIME时间记录TIMESTAMP更新时间JSON结构化数据BOOLEAN布尔值。

2026-04-16 20:30:57 222

原创 MySQL--表的操作

SQL关键字,表示创建表要创建的表的名称表中的列(字段)名每个字段的数据类型(如 INT, VARCHAR(255), DATE 等)指定表中文本数据使用的字符编码utf8, utf8mb4, gbk, latin1等例如 utf8mb4支持完整的Unicode(包括emoji表情)

2026-04-16 19:43:26 65

原创 MySQL--库的操作

输出示例注意:前四个是 MySQL 系统数据库,不要随意修改。创建数据库语法主语句:CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]CREATE DATABASE​:这是 SQL 关键字,表示“创建数据库”的操作。[IF NOT EXISTS]​:方括号 []表示可选参数。IF NOT EXISTS的作用是:如果数据库 db_name已经存在,

2026-04-16 16:05:51 388

原创 MySQL--数据库基础

简单来说,​ 是一个有组织、可长期存储在计算机内、可共享、统一管理的。你可以把它想象成一个电子化的文件柜,但功能要强大得多。管理数据库的软件称为,我们常说的,比如 MySQL、Oracle、SQL Server、PostgreSQL 等。

2026-04-15 16:56:17 348

原创 C++实现json-rpc框架

JsonCpp库是项目中用于实现JSON格式数据序列化和反序列化的核心第三方库。它的功能是将多个数据对象组织成JSON格式的字符串,以及将接收到的JSON格式字符串解析还原为数据对象。Muduo是由陈硕大佬开发的一个基于非阻塞IO和事件驱动的C++高并发TCP网络编程库。它采用主从Reactor模型,其线程模型是 “one loop per thread”。这个模型意味着:一个线程只能有一个事件循环(EventLoop),用于响应计时器和IO事件。一个文件描述符(如一个TCP连接)只能由一个线程进行读写。

2026-04-12 16:15:29 488

原创 Linux学习笔记(二十一)--网络编程套接字

两次无法防止已失效的连接请求(旧 SYN 包)突然到达服务器,导致服务器空等,造成资源浪费。三次握手确保了双方“发”和“收”的能力都正常。

2026-04-10 11:32:39 398

原创 Linux学习笔记(二十)--网络基础1

一个。

2026-04-09 19:53:22 439

原创 Linux学习笔记(十九)--生产消费模型与线程安全

生产者与消费者模型是一种经典的并发编程模型,用于解决多线程/多进程间共享数据的同步与互斥问题。该模型的核心在于:生产者负责生成数据并放入缓冲区,消费者负责从缓冲区取出数据并处理。

2026-03-25 15:48:58 518

原创 Linux学习笔记(十八)--mutex互斥量

在 Linux 中,线程互斥用于防止多个线程同时访问共享资源,从而避免数据竞争和不一致。

2026-03-19 15:30:09 398

原创 Linux学习笔记(十七)--线程概念

(1)在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序 列”(2)一切进程至少都有一个执行线程(3)线程在进程内部运行,本质是在进程地址空间内运行(4)在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化(5)透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程 执行流。

2026-03-18 14:07:40 409

原创 Linux学习笔记(十六)--进程信号

信号量是一个特殊的计数器,用于控制多个执行流(进程/线程)对共享资源的访问。其核心操作(P操作和V操作)是原子操作,意味着在执行过程中不会被中断,从而保证了操作的唯一性和正确性。

2026-03-11 21:08:08 456

原创 Linux学习笔记(十五)--共享内存

System V共享内存允许多个不相关的进程访问同一块物理内存区域,从而实现高效的数据共享。它是最快的进程间通信(IPC)方式之一,因为数据不需要在进程间复制。

2026-02-10 21:46:44 546 2

原创 Linux学习笔记(十四)--进程间通信

数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止 时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另 一个进程的所有陷入和异常,并能够及时知道它的状态改变。

2026-02-05 20:47:31 656

原创 Linux学习笔记(十三)--动静态库

静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。

2026-02-04 20:45:57 583

原创 算法工具箱之哈希表

(1)哈希表是一个存储数据的容器,(2)哈希表的作用:‘快速’查找某个元素(3)哈希表使用的范围:当频繁想查找某个元素时,这个时候就可以用哈希表(4)哈希表使用的方法:1.任何一门高级语言都有哈希表这一个容器2.用数组模拟一个简易哈希表。

2026-02-02 20:49:36 393

原创 Linux学习笔记(十三)--文件系统

Linux文件系统是操作系统用于管理存储设备(如硬盘、SSD、U盘等)上数据存储和组织的核心组件,它定义了文件的命名、存储、检索、更新以及权限控制等规则。

2026-01-28 22:27:39 779

原创 Linux学习笔记(十二)--用户缓冲区

在Linux操作系统中,用户缓冲区是应用程序在用户空间内维护的一块内存区域,用于临时存储待写入文件或网络的数据,或从文件/网络读取的数据。它的主要目的是减少系统调用次数,提高I/O效率。

2026-01-20 13:30:08 363 1

原创 算法工具箱之位运算

/ 奇数} else {// 偶数原理:二进制最后一位为奇数为1,为偶数为0。

2025-11-09 13:48:27 353 1

原创 算法工具箱之前缀和

概念:前缀和(Prefix Sum)是一种重要的预处理技术,能够在O(1)时间内快速计算数组任意区间的和。核心思想:对于数组nums,我们预先计算一个前缀和数组prefixprefix[i]表示nums[0]到nums[i]的和。

2025-11-05 21:52:35 759 1

原创 Linux学习笔记(十一)--文件接口与重定向

(1)文件 = 内容 + 属性(2)文件分为打开文件和未被打开的文件(3)打开的文件由进程打开,所以本质是研究文件与进程的关系。(文件被打开必须先被加载到内存)(4)未被打开的文件被放置在磁盘上。

2025-11-04 20:42:43 863 2

原创 算法工具箱之二分查找

这一题是标准二分查找的例题,我们需要先定义left和right指向数组的两端,再定义mid变量来求出每次数组的中间元素的下标。因为数组的元素是递增的,所以当数组中间的元素大于目标值时,我们往左收缩,反之,我们向右收缩。算法思路:⽤的还是⼆分思想,就是根据数据的性质,在某种判断条件下将区间⼀分为⼆,然后舍去其中⼀个 区间,然后再另⼀个区间内查找。(2)有序性​​:集合中的元素必须是有序的(升序或降序)。(1)标准二分查找:(时间复杂度:​​O(log n)​​,空间复杂度:​​O(1)​​。

2025-10-29 20:42:11 516 4

原创 算法工具箱之双指针

然后与最大的面积相比留下最大的面积,随后我们比较right和left所对应的数组元素的高度,较小的一方缩进数组,随后再重复以上方法,进而比较出面积最大的区域。不会出现反复回溯的情况。因为当我们移动较高边界那一端时,最低的高度不变,反而宽度减小,这样并不会生成面积更大的数组,反而当我们把数组较小的那一端移去,虽然宽度减小,但是有可能高度会增加,进而产生的面积可能比原来的最大面积更大。实现方式:快慢指针的实现方式有多种,但常见的是在⼀次循环中,每次让慢的指针向后移动⼀位,⽽快的指针往后移动两位,实现⼀快⼀慢。

2025-10-28 08:53:45 270

原创 Linux学习笔记(十)--进程替换与创建一个自己的简易版shell

替换原理:用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数 以执行另一个程序。execl函数从第二个参数开始,在命令行当中是怎么写的,就把参数依次传递给execl,只不过把空格替换成",",所有的exec系列的函数的第一个参数就是执行这个方法的位置,后面的参数用来如何执行程序(要不要涵盖选项,涵盖哪些选项)在shell中,所有进程都是bash的子进程,所有命令的启动都依赖于exec*系列的函数,exec*承担的是一个加载器的效果。

2025-10-21 20:12:20 490 1

原创 Linux学习笔记(九)--Linux进程终止与进程等待

(查看进程的退出码)进程调用fork,当控制转移到内核中的fork代码后,内核做:分配新的内存块和内核数据结构给子进程,将父进程部分数据结构内容拷贝至子进程,添加子进程到系统进程列表当中 fork返回,开始调度器调度。进程等待方式:在Unix/Linux多进程编程中,父进程等待子进程终止有两种主要方式:阻塞等待和循环(非阻塞)等待。基本概念:在父进程中返回子进程的 PID(进程ID),在子进程中返回 0,如果出错则返回 -1。​​,表示​​阻塞等待​​(即父进程会挂起,直到目标子进程状态改变)。

2025-10-20 22:57:47 548 2

原创 Linux学习笔记(八)--环境变量与进程地址空间

接下来给大家解释一下页表的概念:页表​​是操作系统用于实现​​虚拟内存​​的关键数据结构,它建立了​​虚拟地址​​与​​物理地址​​之间的映射关系。本地变量:在 Linux Shell(如 Bash)中,​​本地变量​​是仅在当前 Shell 进程内部有效的变量,​​不会被继承到子进程​​。普通用户的家目录​​是。命令设置的变量是临时的,只在​​当前 shell 会话​​及其​​子进程​​中有效。环境变量在地址空间中的硬件访问:环境变量位于​​栈区的高地址端​​(靠近内核空间),其物理内存通过总线访问。

2025-10-14 21:49:19 1024 2

原创 Linux学习笔记(七)--进程状态

PRI和NI:PRI即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,这个值越小进程的优先级别越高,NI就是nice值,其表示进程可被执行的优先级的修正数值,PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice 这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行 所以,调整进程优先级,在Linux下,就是调整进程nice值 nice其取值范围是-20至19,一共40个级别。​​可中断睡眠​​。

2025-09-27 15:42:31 952 1

原创 Linux学习笔记(六)--Linux进程概念

首先用户1通过键盘输入信息,键盘将输入的字符转为数字信号,这些数据通过系统总线被存储到用户1的存储器(内存中),如何通过CPU处理信息后返回到内存中,然后处理好的数据通过总线发送到网卡中,再由用户2的网卡接收数据包,数据包通过总线传输到用户2的存储器中,再由用户B的CPU解包信息,将解包后的文字信息返回到存储器中,再从存储器通过总线发送到输出设备(显示器)上.这就是两台计算机在冯·诺依曼体系结构下,协同完成一次即时通讯任务的经典过程。(它是“执行中的程序”​​:程序是静态的、存储在磁盘上的文件;

2025-09-24 18:20:40 957 2

原创 Linux学习笔记(五)--Linux基础开发工具使用

在Linux中软件包通常是指一个包含了软件程序、元数据、依赖关系信息和安装脚本的压缩文件​​。因为在Linux上如果没有软件包管理器,那么想要下载软件会非常麻烦,不仅需要自己去手动编译和安装,而且难以卸载和管理,所以软件包的出现解决了这些问题.软件包一般是由程序文件(编译好的可执行文件、库文件等。)和配置文件(软件默认的配置。)元数据(包含软件名称、描述、版本、维护者等信息。) 依赖列表(列出该软件正常运行所必须的其他软件包。

2025-09-16 17:04:29 1793 2

原创 JavaScript基础语法学习笔记

在网页的构成中HTML负责网页的​​结构和内容​​,就像房子的框架和墙体。​​CSS​​负责网页的​​样式和外观​​,就像房子的装修、油漆和家具。JavaScript​​负责网页的​​行为和功能​​,就像房子里的电梯、水电系统和智能家居,让房子变得“能动”、“能响应”。ECMAScript​​ (语言核心):是 JavaScript 的​​语法和基本功能​​的规范,定义了语言的基础。var​​ 有函数作用域,​​let​​ 和 ​​const​​ 有块级作用域。

2025-09-11 19:40:05 726 1

原创 HTML+CSS学习笔记(三)

Flexbox 是 CSS 中最强大的布局工具之一,专为​​一维布局​​(行或列)设计。注意:当父元素设置为 display: flex 之后, 子元素的 float, clear, vertical-align 都会失效.基础概念:被设置为 display:flex 属性的元素, 称为 flex container。作用:用于设置元素边框圆角的属性,可以让元素的边角变得圆润,从而创建更柔和的视觉效果。前提:指定宽度(如果不指定宽度, 默认和父元素一致))​​不影响布局​​(但可能覆盖其他元素)。

2025-09-02 16:33:08 930

原创 HTML+CSS学习笔记(二)

基本语法规范:由 ​​选择器​​ 和 ​​声明块​​ 组成,用于指定 HTML 元素的样式。用途​​:主要用于​​布局分组​​、​​包裹大块内容​​、​​作为CSS和JavaScript的钩子​​。CSS通过​​选择器​​找到HTML中的特定元素,然后为其应用一系列的​​样式声明​​(属性和值)。标签:一个​​行内​​(inline)通用容器。作用​​:定义一列或一行的​​标题单元格​​(例如“姓名”、“年龄”、“价格”)。用途​​:主要用于​​对文本的一部分​​应用样式或JavaScript操作。

2025-08-26 20:25:36 944

原创 HTML+CSS学习笔记(一)

它的作用是通过一系列​​标签 (Tags)​​ 来“标记”网页上的内容,告诉浏览器:“这是一段标题”、“这是一个段落”、“这是一张图片”。超文本 (HyperText)​​: 指的是不仅可以包含文本,还可以包含图片、链接、视频、音频等多媒体内容,并且可以通过“超链接”跳转到其他文档或网站。rel属性:(指定当前文档与链接文档之间的​​关系​​。链接内容:标签之间的内容可以是​​文本​​、​​图片​​(href属性:(指定链接要跳转到的​​目标地址​​。target属性:(指定在​​何处​​打开链接文档。

2025-08-23 20:17:30 383

原创 机器学习学习笔记(一)

无监督学习是机器学习中与监督学习并列的核心范式,其核心特点是​​从无标签数据中自动发现隐藏的模式或结构​​。监督学习是机器学习中最常见、应用最广泛的方法,其核心思想是​​通过带标签(Label)的数据训练模型​​,使模型学会从输入数据(特征)中预测或分类对应的输出结果.核心思想:找到一组模型参数,使得观测数据​​与模型预测值​​之间的残差平方和​​最小。β是模型的待估计参数,包括截距 β0​和各特征的系数 β1​,β2​,…β^​0​是截距,β^​1​,β^​2​是特征 x1​,x2​的系数。

2025-08-17 17:46:54 1047

原创 C++11学习笔记(二)

capture] : 捕捉列表,该列表总是出现在lambda函数的开始位置,编译器根据[]来 判断接下来的代码是否为lambda函数,捕捉列表能够捕捉上下文中的变量供lambda 函数使用。在该函数体内,除了可以使用其参数外,还可以使用所有捕获到的变量。作用:用于创建匿名函数对象的简洁方式,它可以在需要函数对象的地方直接定义和使用。作用:不需要递归调用,而是利用初始化列表和逗号操作符的特性一次性展开所有参数。参数包展开函数:每次处理一个参数,递归处理剩余参数。表示参数包,可以包含0个或多个参数。

2025-08-08 16:32:28 303

原创 C++11学习笔记(一)

模板中的&&不代表右值引用,而是万能引用,其既能接收左值又能接收右值.模板的万能引用只是提供了能够接收同时接收左值引用和右值引用的能力,但是引用类型的唯一作用就是限制了接收的类型,后续使用中都退化成了左值,我们希望能够在传递过程中保持它的左值或者右值的属性.不仅仅有移动构造,还有移动赋值:在string类中增加移动赋值函数,再去调用to_string(1234),不过这次是将to_string(1234)返回的右值对象赋值给ret1对象,这时调用的是移动构造。1. 左值引用只能引用左值,不能引用右值。

2025-08-04 14:26:31 409

原创 Linux学习笔记(四)--Linux权限(一)

粘滞位(Sticky Bit)是 Linux 文件系统中一种特殊的权限标志,主要用于 ​​共享目录​​ 中限制文件删除权限,确保只有 ​​文件所有者、目录所有者或 root​​ 能删除或重命名文件。Linux 的权限系统是安全管理的核心,通过 ​​用户(User)、组(Group)、其他(Others)​​ 三个维度控制文件和目录的访问。在 Linux 系统中,文件类型是文件系统的基本概念之一,主要通过 ​​文件权限标识符​​ 和 ​​文件内容​​ 来区分。功能:修改文件或目录的​​所属组。

2025-08-01 14:34:30 1003

原创 Linux学习笔记(三)--Linux基础指令(3)

语法:zip [选项] 压缩包名.zip 文件或目录.../unzip [选项] 压缩包名.zip [文件列表] -d 目标目录。语法:tar [主选项] [辅选项] 归档文件名 [文件/目录列表]语法:grep [选项] "搜索模式" [文件或目录]语法:find [路径] [选项] [操作]语法:cal [参数][月份][年份]语法:whereis [选项] 命令名。语法:which [选项] 命令名。语法:bc [选项] [文件]语法:uname [选项]​。10.Linux常用热键。

2025-07-30 15:53:53 964

原创 Linux学习笔记(二)--Linux基本指令(2)

语法:cp [选项] <源文件或目录> <目标文件或目录>语法:mv [选项] <源文件或目录> <目标文件或目录>可以终止因为程序或者指令异常而导致我们无法输入指令输入。语法:date [选项] [+格式] # 显示时间。语法:echo [选项] [字符串或变量]功能:用于​​查看、合并或创建文件内容​。语法:head [选项] [文件...]语法:tail [选项] [文件...]语法:cat [选项] [文件...]语法:more [选项][文件]语法:less [选项] 文件名。

2025-07-26 13:49:45 796

空空如也

空空如也

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

TA关注的人

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