自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++笔记---并发支持库(future)

和是 C++11两者结合可高效实现的异步编程模式,替代了传统的繁琐方式。

2025-12-21 18:20:37 1015

原创 C++笔记---并发支持库(atomic)

C++11 引入的头文件和模板是的核心,用于实现多线程间的原子操作,避免数据竞争(data race),替代传统的互斥锁(如 std::mutex)以提升并发性能。使用atomic的成员函数,对T类型的数据进行操作是,这就使得某些简单的操作不再需要我们去加锁访问,而是直接采用原子操作。,atomic作为模板,实际上并不完全支持所有类型。主要支持的是整型家族、指针类型,以及任何满足 CopyConstructible 和 CopyAssignable 的。

2025-12-13 13:47:26 636

原创 Cocos2d-x笔记---环境搭建与项目创建

Cocos2d-x作为一个老古董,它的配置脚本需要使用python2来解释,所以还需要下载python2。下载好之后将到对自己比较方便的目录下,cocos2d-x直接解压即可,python2按照提示安装即可。(如 C++/Lua/JS 的游戏逻辑、场景、角色等代码),是开发者主要编写代码的目录。是 cocos2d-x-3.17.2 提供的核心命令行工具(CLI),用于项目的。用于创建全新的 cocos2d-x 项目,支持 C++/Lua/JS 三种语言。

2025-12-07 14:09:36 684

原创 C++笔记---并发支持库(thread、mutex、condition_variable)

是 C++11 标准引入的组件,定义在头文件中,用于封装操作系统底层线程,简化多线程编程(替代传统的 pthread(Linux)、CreateThread(Windows)等平台相关 API)。其核心目标是让开发者以的接口创建、管理线程,无需关注底层系统差异。

2025-11-24 17:59:05 933

原创 Linux笔记---内存映射mmap

(Memory Mapping,内存映射)是 Unix/Linux 系统提供的核心系统调用,用于将映射到。映射后,进程可直接通过(读 / 写虚拟地址)来,无需使用 read()/write() 等传统 I/O 系统调用,是高效 I/O 和进程间通信(IPC)的关键技术。addr 必须是 mmap 的返回值,length 必须与 mmap 时一致。

2025-11-23 14:07:30 830

原创 Linux笔记---TCP协议原理

(传输控制协议)是的传输协议,核心作用是在不可靠的网络上,为应用层提供稳定、有序、无差错的数据传输服务。

2025-11-20 18:44:45 1248

原创 Git笔记---其他常用操作

是 Git 中用于指定(track)的文件 / 目录的,核心作用是让 Git 自动忽略无用、临时或敏感文件,避免它们被误提交到远程仓库,保持仓库整洁和安全。简单说:凡是不需要共享、仅本地存在或自动生成的文件,都该加入 .gitignore。.gitignore 文件的内容就是需要忽略的文件名,支持shell的各种通配符。如果不想忽略某个文件,就在其文件名前加上感叹号"!*.so!c.so。

2025-11-17 19:45:41 866

原创 Git笔记---远程仓库的创建与基本操作

git是一个分布式版本控制系统,这意味着一个仓库可以在多台主机上存在备份,并能通过一定的机制进行同步。也就是将远程 Git 仓库完整复制到本地,生成一个与远程仓库关联的本地仓库(包含完整的版本历史、分支、文件等)。但是,多台主机上都存在这这样的备份,我们以谁为准呢?当然,我们可以在团队内部自己指定,但是更常见的做法是在某些知名的开源社区创建仓库(如github、gitee)。

2025-11-17 15:33:48 522

原创 Git笔记---分支相关操作

Git 分支是并行开发的核心功能,可实现「功能开发、Bug 修复、版本发布」等场景的隔离,避免影响主分支稳定性。团队成员可以在一个仓库的各个分支进行独立功能的开发,在开发完成之后进行分支的合并。

2025-11-16 17:36:41 910

原创 Git笔记---简单介绍与基本使用

一句话,Git 是目前最流行的。也就是帮助我们维护代码各个版本的工具,尤其是在与他人协作开发的过程中,能协助我们进行高效的代码管理。Git 工作流程围绕和。

2025-11-15 17:52:18 895

原创 C++标准项目---在线五子棋对战

HTML(结构):相当于网页的 “骨架”,用来搭建页面的基础结构,比如标题、按钮、图片、文字段落等,决定页面有哪些内容。CSS(样式):相当于网页的 “皮肤”,负责美化页面,比如设置颜色、字体、布局(比如左右分栏)、动画效果(比如按钮 hover 时变色),决定页面好不好看。JavaScript(交互):相当于网页的 “大脑”,负责实现页面的动态交互,比如点击按钮弹出弹窗、下拉加载更多内容、表单提交验证,决定页面能不能 “动起来”。-- HTML:定义按钮结构 -->

2025-11-05 20:56:30 964 1

原创 C++标准项目---高并发内存池

内存池是一种预先分配一块连续内存空间,并在程序运行中从该空间内高效分配回收小块内存的管理技术,核心目的是避免频繁向操作系统申请和释放内存。public:{}// 申请和释放内存对象private:// 从CentralCache获取内存块// 将内存块还给CentralCache// 一次向CentralCache申请的内存块的个数(慢启动)关于 _apply_num 字段,我们在下文再做详细解释。Central Cache是所有线程共用的,所以这里我们使用了“单例模式”来进行设计。

2025-10-17 16:18:18 876

原创 MySQL笔记---C/C++访问MySQL数据库

在 C++ 中访问 MySQL 数据库,最常用的方式是通过官方提供的(C++ 驱动)或基于的封装。

2025-10-10 16:43:14 1176

原创 MySQL笔记---用户管理

MySQL 的用户管理是数据库权限控制的核心,主要涉及用户的创建、授权、修改、删除以及密码管理等操作。我们知道,在MySQL中一切皆表,在数据库mysql中,保存了大量的管理信息,也包括用户:理论上,我们可以直接修改这个表来对用户进行管理,但实际上这种做法风险很高,也不方便。

2025-10-10 10:47:19 442

原创 MySQL笔记---视图

视图本身不存储实际数据,数据来源于定义视图时引用的。

2025-10-09 16:53:35 606

原创 MySQL笔记---事务

在 MySQL 中,是,这些操作要么全部成功执行,要么全部失败回滚,以此保证数据的一致性和完整性。,广泛用于金融交易、订单处理等需要确保数据准确性的场景。

2025-10-09 15:54:17 1204

原创 MySQL笔记---索引

在 MySQL 中,索引是一种特殊的,它与,能帮助数据库,避免全表扫描(遍历所有记录),显著。准确来说,索引是绑定到数据表的某一行或某几行的。一个索引就是一个能通过键值快速查找目标的数据结构(例如红黑树、哈希表、B+树等),而为某一行建立索引,本质上就是。这样,在以该行为筛选条件查询记录时,查询速度就会有明显的提升。

2025-10-06 16:19:57 1309

原创 MySQL笔记---复合查询

在 MySQL(或关系数据库)中,笛卡尔积(Cartesian Product) 是指两个或多个表在没有指定关联条件时,所有行之间进行无差别组合的结果。数学中,两个集合 A 和 B 的笛卡尔积是所有可能的有序对 (a, b) 的集合(其中 a∈A,b∈B)。在数据库中,若对表 A(行数为 m)和表 B(行数为 n)进行查询时未指定关联条件,则结果集的行数为 m×n,即表 A 的每一行与表 B 的每一行都将组成一条新记录,这就是 “数据库笛卡尔积”。MySQL数据库中,

2025-10-04 17:37:20 843

原创 MySQL笔记---内置函数

MySQL 内置函数是预先定义在数据库中的函数,可直接用于数据处理、计算或逻辑判断,极大简化了 SQL 语句的编写。

2025-09-29 20:05:01 578

原创 MySQL笔记---基本查询

SELECT 语句是用于从数据库表中查询和检索数据的核心语句,也是 SQL 中最常用、功能最灵活的语句之一。对两个值(或表达式)进行比较,返回 TRUE(1)、FALSE(0)或 NULL(无法判断,如与 NULL 比较)。使用聚合函数作为表的查询结果时,表自身的列不能作为查询结果(聚合函数是多行统计的结果,各行之间的列有所不同)。要求查询出来的临时表每一行的属性与目标表每一行的属性完全对应,否则无法插入。查询同学的各门成绩,依次按照数学降序,英语升序,语文升序的方式显示。

2025-09-29 16:28:12 1150

原创 MySQL笔记---表的约束

在 MySQL 中,是用于限制表中数据存储规则的机制,其核心目的是保证数据的,避免无效、重复或逻辑错误的数据进入数据库。

2025-09-27 15:32:03 781

原创 MySQL笔记---数据类型

中选择。

2025-09-26 15:45:46 1030

原创 MySQL笔记---对表的操作

关于数据类型、约束条件等,我们在之后的文章当中再进行讨论。本篇文章我们只大致了解一下如何对表进行操作。

2025-09-24 20:54:44 726

原创 MySQL笔记---对数据库(database)的操作

例如,创建一个使用USE 数据库名称;

2025-09-24 20:07:48 1019

原创 MySQL笔记---数据库基础

摘要: 数据库是结构化存储和管理数据的系统,具有高效访问、数据完整性、并发控制和安全备份等特性,相比普通文件更适合处理海量数据。数据库管理系统(DBMS)是操作数据库的工具,通过表结构存储数据。MySQL支持多种存储引擎,如InnoDB(支持事务)、MyISAM(读多写少)和Memory(临时缓存)。登录MySQL可使用mysql命令配合选项,SQL语言则分为DQL(查询)、DML(增删改)、DDL(结构定义)、DCL(权限控制)和TCL(事务控制)五类,是与数据库交互的标准方式。

2025-09-23 20:11:25 901

原创 Linux笔记---select、poll、epoll总结对比

select:小规模、低并发场景 适用场景监控 FD 数量少(≤1024)、并发连接少的简单服务(如小型工具、测试程序);优势:兼容性极强,无需考虑系统差异;劣势:FD 上限和效率问题无法解决,不适合高并发。poll:FD 数量不固定但并发不高的场景适用场景:监控 FD 数量超过 1024 但并发连接较少的服务(如中小规模的内部服务);优势:突破 FD 数量上限,编程比 select 简单;劣势:高并发下遍历和拷贝开销依然明显,效率低于 epoll。epoll:高并发、大规模连接场景。

2025-09-22 20:34:39 825

原创 Linux笔记---Reactor模式与EpollReactor

是一种,主要用于高效处理并发 I/O 操作,尤其在网络编程中被广泛应用。其核心思想是通过(Reactor)(如连接请求、数据到达、错误等),当事件发生时,自动将事件分发到对应的(Handler)进行处理,从而避免传统阻塞 I/O 的效率问题。

2025-09-22 11:43:49 1455

原创 Linux笔记---epoll用法及原理:从内核探究文件等待队列的本质-回调机制

文件描述符(fd)数量限制:select 受限于 FD_SETSIZE(通常为 1024),无法监控大量 fd;低效的轮询机制:每次调用 select/poll 都需要遍历所有监控的 fd 检查事件,时间复杂度为 O(n),fd 越多效率越低;用户态与内核态的数据复制:每次调用需将整个 fd 集合从用户态复制到内核态,fd 越多,复制开销越大;重复监控:若事件未处理完毕(如数据未读完),select/poll 会重复触发,导致不必要的处理。

2025-09-18 21:26:15 921

原创 Linux笔记---非阻塞IO与多路复用

它们的核心区别在于 “等待数据准备” 和 “数据复制到用户空间” 两个阶段的处理方式不同。

2025-09-17 20:28:55 674

原创 Linux笔记---HTTPS的原理

又称。

2025-09-15 20:34:55 1375

原创 Linux笔记---基于HTTP协议搭建一个简单的Web服务器

首先,我们要根据HTTP协议描述的请求报文与响应报文,定义出结构化的请求报文和响应报文,并实现二者的序列化与反序列化方法。如果只考虑服务端的话,我们只需要实现请求报文的反序列化方法和响应报文的序列化方法。我们注意到,请求报文与响应报文最大的区别在于首行,而其他部分均大同小异,所以我们可以首先定义出HttpMessage类public:// 向_headers中添加键值对protected:// 空格// 换行符// 空行// 报头分割符// Http版本。

2025-09-12 15:41:28 1420

原创 Linux笔记---HTTP协议

是互联网中最基础、最核心的,用于在和之间传输超文本(如 HTML、图片、视频、API 数据等)。它基于工作,定义了,是万维网(WWW)得以运行的基石。HTTP协议是如何在万维网中发挥作用的呢?举个例子,我们在使用浏览器访问网页的时候,就会根据你提供的网址向特定的服务器;收到请求报文之后会解析该报文,分析浏览器想要请求什么网页资源,并将该资源。

2025-09-12 14:18:36 1169

原创 Linux笔记---网络计算器

我们说过,OSI7层模型十分完美,但是因特网实际上采用的是TCP/IP五层模型:实际上,对比可以发现,TCP/IP模型实际上就是将OSI的前三层模型合并为了应用层。简单来说,在服务器端,这三层就是提供实际服务的顶层、规定数据传输协议的协议层、负责建立连接与断开连接的服务器层。

2025-09-10 09:13:49 533

原创 Linux笔记---进程间关系与守护进程

在操作系统中,是由,用于简化对多个关联进程的统一管理。它是 Unix/Linux 系统中进程组织的重要概念,主要为了方便信号传递、作业控制等操作。每个进程组由唯一的 进程组 ID(PGID) 标识。通常,进程组的创建者(称为 “组长进程”)的进程 ID(PID)会作为该进程组的 PGID(即 PGID = 组长进程的PID)。什么是有关联的进程呢?有父子关系的进程、通过管道相连的进程……这些在操作系统层面上有关联,需要相互协作的进程就叫有关联的进程。

2025-09-09 20:28:09 1527

原创 Linux笔记---协议定制与序列化/反序列化

我们在中已经谈过协议的基本概念了,这里就不再复述。放到程序员编程的角度来说,协议规定的就是。显然,将结构化的数据直接以bit流的方式传输是不现实的,且不说各种语言对于同一种结构体的解释与编码是否相同,就是同种类型的变量是否兼容都是未知数。我们不能指望与你通信的远端和你使用的是同一种语言。所以,我们需要将结构化的数据转换为可传输的格式,字符串就是我们的不二选择。因为字符的编码是有独立的标准规定的,例如ASCII、base64。协议就是用来规字符串与结构化数据之间如何相互转换的。

2025-09-09 09:31:39 845

原创 Linux笔记---封装套接字

是一种行为型设计模式,其是:在中定义一个(模板方法),将算法中某些中实现,从而让子类在不改变算法整体结构的前提下,灵活定制算法的特定步骤。模板方法模式包含以下以 “冲饮料” 为例,和。

2025-09-07 20:16:55 1069

原创 Linux笔记---TCP套接字编程

使 TCP 套接字进入被动监听状态,准备接受客户端连接(仅服务器端使用)。

2025-09-06 15:19:54 1150

原创 Linux笔记---UDP套接字实战:简易聊天室

我们要设计的是一个简单的匿名聊天室,用户的客户端要求用户输入自己的昵称之后即可在一个公共的群聊当中聊天。

2025-09-04 16:58:59 890

原创 Linux笔记---UDP套接字编程

socket()用于创建一个套接字(通信端点),返回套接字描述符(类似文件描述符)。

2025-09-03 11:32:41 954

原创 Linux笔记---套接字编程基础

在现在的英特网当中,传输层及以下的部分所采用的都是通用的优秀解决方案,无需我们这些普通程序员再去插足。我们所做的无非就是在应用层上实践应用层协议,开发网络应用层协议。自然,与我们直接相关,也是我们在编程中主要使用的就是传输层提供的服务。是计算机网络编程中用于实现不同设备或进程之间网络通信的一种抽象概念,它提供了一套标准化的接口,让应用程序能够通过网络发送和接收数据。

2025-09-03 08:40:11 874

空空如也

空空如也

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

TA关注的人

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