自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux网络 之 传输层协议UDP

传输层协议UDP:UDP具有无连接、不可靠、面向数据报的特点,其报文结构包含16位长度字段和校验和。UDP没有真正意义上的发送缓冲区,但具有接收缓冲区,且缓冲区不能保证报文顺序。UDP数据报最大长度为64K,超长数据需应用层手动分包传输。文章还涵盖了端口号分类(0-1023为知名端口号,1024-65535为动态分配端口)、网络状态查看工具netstat和进程查询命令pidof的使用。常见的基于UDP的应用层协议包括DNS、DHCP等。

2025-10-27 09:30:00 676

原创 BitNote博客系统测试文档

BitNote博客系统测试文档:对该博客系统进行了手动测试,编写自动化代码,完成自动化测试,最后进行了性能测试。测试涵盖用户登录、博客发布/编辑/删除/查看等核心功能。测试工具包括Postman、Selenium、JMeter等。性能测试重点关注接口响应时间、吞吐量等指标,系统整体表现达到设计目标。

2025-10-15 10:00:00 1458

原创 Linux网络 之 应用层协议HTTPS

HTTPS协议通过引入加密层解决HTTP明文传输的安全风险,主要采用对称加密与非对称加密结合的方式。对称加密效率高但密钥分发困难,非对称加密安全性高但效率低。HTTPS工作流程通过证书认证机制(CA机构颁发的数字证书)验证服务器公钥合法性,防止中间人攻击。客户端收到证书后,会校验有效期、发布机构可信度,并通过数字签名验证证书完整性。

2025-10-13 09:30:00 826

原创 Linux网络 之 应用层协议 HTTP

Linux应用层HTTP协议的基础知识:无连接、无状态的特性,以及客户端-服务器的请求响应模式。重点解析了URL的结构和urlencode/urldecode机制,详细说明了HTTP请求与响应的报文格式。文章还列举了主要的HTTP方法(GET、POST等)及其用途,并分类讲解了常见的HTTP状态码(如200、301、404等),特别区分了301永久重定向和302临时重定向的差异。还实现了一个最简单的HTTP协议。

2025-10-12 16:00:00 815 1

原创 Linux网络 之 应用层自定义协议与序列化

Linux应用层自定义协议的设计与实现:网络通信中序列化与反序列化的应用。通过一个网络版计算器示例,对比了字符串约定和结构体序列化两种方案,并基于jsoncpp库实现结构化数据传输。文章还分析了TCP全双工特性,解释了Socket API中read/write等函数的工作机制。最后提供了TcpServer和Socket类的代码实现,展示了如何通过定制协议实现服务端与客户端的结构化数据交互。

2025-10-12 09:00:00 591

原创 MYSQL数据库初阶 之 MYSQL使用C语言连接

使用C语言连接MySQL数据库:下载并准备MySQL Connector/C库,包含头文件和静态库;通过示例代码演示如何验证库连接;详细讲解MySQL C API的核心接口函数,如初始化连接(mysql_init)、建立连接(mysql_real_connect)、执行SQL语句(mysql_query)、获取结果集(mysql_store_result)等;还介绍了获取行数、列数、列名和结果内容的相关函数。最后提供了关闭连接的mysql_close函数。

2025-09-12 12:00:00 1004

原创 MYSQL数据库初阶 之 MYSQL用户管理

MySQL用户管理:用户创建、删除和密码修改。用户信息存储在mysql库的user表中,包含用户名、主机和加密密码等字段。创建用户使用CREATE USER命令,需指定用户名、主机和密码。删除用户通过DROP USER实现。密码修改可通过SET PASSWORD命令,root用户可修改其他用户密码。安全提示:1)避免使用root账号日常操作;2)谨慎创建可从任意主机登录的用户;3)MySQL对密码复杂度有要求,简单密码可能被拒绝。

2025-09-11 16:45:00 814

原创 MYSQL数据库初阶 之 MYSQL视图

MySQL视图是一种虚拟表,通过查询定义其内容。视图与基表数据相互影响,修改视图会影响基表,反之亦然。基本操作包括:创建视图(create view)、查询视图(select)、更新视图数据(update)、删除视图(drop view)。视图使用需遵循命名唯一、无索引等规则,可提高查询安全性但可能影响性能。视图支持与表联用和排序功能,但外部查询的order by会覆盖视图内的排序。

2025-09-11 08:45:00 328

原创 MYSQL数据库初阶 之 MYSQL事务管理3【如何理解隔离性】

MySQL事务隔离性:通过MVCC机制实现,主要解决读-写并发问题。MVCC利用隐藏字段(事务ID、回滚指针)和undo日志构建版本链,实现读写非阻塞。Read View结构(包含活跃事务列表、高低水位线等)决定事务可见的版本:当前事务ID小于低水位或等于创建者ID可见,高于高水位不可见,中间状态需检查活跃事务列表。该机制支持快照读(读取历史版本)提高并发性,但写操作仍需加锁。不同隔离级别通过控制Read View生成时机来避免脏读、不可重复读等问题。

2025-09-10 17:00:00 1099

原创 MYSQL数据库初阶 之 MYSQL事务管理2【事务隔离级别】

MySQL事务隔离级别:事务隔离级别决定了事务之间的可见性,包括读未提交、读提交、可重复读和串行化四种。读未提交会导致脏读问题,读提交可能引发不可重复读,而可重复读(MySQL默认级别)解决了幻读问题。串行化通过加锁实现最高隔离性,但会降低并发性能。隔离级别通过不同锁机制实现。MySQL默认可重复读隔离级别,能较好平衡数据一致性和并发效率,建议保持默认设置。事务执行过程中,不同隔离级别会对并发操作产生不同影响,需根据场景合理选择。

2025-09-10 08:30:00 863

原创 MYSQL数据库初阶 之 MYSQL事务管理1

MySQL事务是一组逻辑相关的DML语句,要么全部成功执行,要么全部失败回滚,保证数据一致性。事务具有ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。事务主要用于处理复杂数据操作,确保数据完整性和并发控制。MySQL中只有InnoDB引擎支持事务,可通过设置autocommit变量控制提交方式(自动/手动)。

2025-09-09 17:00:00 1090

原创 MySQL数据库初阶 之 MYSQL索引特性2【索引操作】

MySQL中各类索引的创建与使用方法:主键索引(3种创建方式)、唯一索引(3种创建方式)、普通索引(3种创建方式)、复合索引和全文索引(仅支持MyISAM引擎)。重点说明了各类索引的特点,如主键索引的唯一性和高效率、唯一索引的可重复性等,并演示了全文索引的实际应用场景。最后介绍了两种查询索引的方法(show keys/from)等。

2025-09-09 08:30:00 636

原创 MYSQL数据库初阶 之 MySQL索引特性1【索引概念】

MySQL索引特性: 索引是提高数据库查询性能的关键技术,通过在内存中优化数据组织方式(如B+树结构)来加速检索。索引分为主键、唯一、普通和全文四种类型,能显著提升海量数据查询效率(如案例中使查询时间从2.41秒降至0.00秒),但会降低增删改操作的性能。磁盘存储原理上,数据以扇区形式保存,通过磁头、柱面和扇区编号(CHS)定位,操作系统则使用LBA地址进行抽象管理。合理使用索引可在不改动程序、不增加内存的情况下大幅优化数据库性能,但需权衡读写操作的开销。

2025-09-08 17:00:00 1242

原创 MYSQL数据库初阶 之 表的内连和外连

MYSQL中表的两种连接方式:内连接和外连接。内连接通过WHERE子句筛选笛卡尔积,是最常用的查询方式,语法为“SELECT 字段 FROM 表1 INNER JOIN 表2 ON 连接条件”。外连接分为左外连接(显示左表所有数据)和右外连接(显示右表所有数据),语法分别为“LEFT JOIN和RIGHT JOIN”。

2025-09-08 09:00:00 522

原创 MYSQL数据库初阶 之 MYSQL复合查询

MySQL复合查询的多种方法:基本查询回顾、多表查询、自连接和子查询。基本查询部分展示了条件查询、排序、分组和聚合函数的使用;多表查询部分演示了如何通过表连接获取跨表数据;自连接部分展示了同一张表的关联查询;子查询部分详细讲解了单行、多行、多列子查询以及FROM子句中的子查询应用。

2025-09-07 17:00:00 1805

原创 MYSQL 数据库初阶 之 函数

MYSQL中常用的日期、字符串、数学及其他函数。日期函数包括获取当前日期、时间、时间戳,以及日期加减和差值计算。字符串函数涵盖字符集查询、字符串连接、长度计算、替换和截取等操作。数学函数包含绝对值、进制转换、取整、小数格式化和随机数。其他实用函数包括用户信息(user)、MD5加密(md5)、数据库名查询(database)和空值处理(ifnull)。

2025-09-07 09:00:00 351

原创 MYSQL数据库初阶 之 表的增删改查2【CURD之UD】

SQL中表的增删改查操作:UPDATE和DELETE语句。如何修改特定数据(如更新学生成绩)、删除表数据(单条记录或整表数据)以及使用TRUNCATE清空表。此外,还介绍了插入查询结果和聚合函数(COUNT、SUM等)的应用场景。文章强调在UPDATE和DELETE操作时需谨慎使用WHERE子句,避免误操作全表数据等

2025-09-06 17:00:00 925

原创 MYSQL数据库初阶 之 表的增删查改1【CURD之CR】

数据库表的CRUD操作:Create(创建)和Retrieve(读取)两部分。在Create部分,详细说明了单行/多行数据的全列/指定列插入方法,以及主键冲突时的更新和替换操作。Retrieve部分涵盖了全列查询、指定列查询、表达式查询、结果别名和去重等操作,并介绍了WHERE条件中的比较运算符使用。通过学生表和成绩表的示例,演示了各种SQL语句的具体应用场景和效果。

2025-09-06 09:00:00 1088

原创 MYSQL数据库初阶 之 表的约束

MySQL中表的约束机制:空属性(null/not null)、默认值(default)、列描述(comment)、zerofill填充等基本约束。约束的主要作用是保证数据的合法性和完整性,通过技术手段强制数据符合业务逻辑要求。空属性约束能防止无效数据插入,默认值约束可简化数据输入,列描述提供字段说明信息,而zerofill则用于数字格式化显示。这些约束条件共同作用,确保数据库存储的数据准确可靠且符合预期规范。

2025-09-05 17:00:00 1049

原创 MYSQL数据库初阶 之 数据类型

MySQL中常见的数据类型及其使用方式:数据类型分类和数值类型概述 tinyint类型的使用,包括有符号和无符号的区别、数值越界处理;bit类型的特性,显示方式及空间节省技巧;小数类型float和decimal的用法:float的精度处理和四舍五入规则;float与decimal在精度上的差异;无符号小数的使用限制。

2025-09-05 09:00:00 687

原创 MYSQL数据库初阶 之 表的操作

MySQL数据库表的操作:创建表、查看表结构、修改表和删除表的方法。创建表使用CREATE TABLE语法,可指定字段、数据类型、字符集和存储引擎等属性。修改表可通过ALTER TABLE命令实现,包括添加字段、修改字段类型、删除字段和重命名表等操作。文章还展示了不同存储引擎创建表时生成不同文件的特点,并通过多个示例演示了表结构的修改过程。最后介绍了DROP TABLE语法用于删除表。

2025-09-04 17:00:00 834

原创 MYSQL数据库初阶 之 库的操作

MySQL数据库的基本操作:创建、查看和修改数据库。创建数据库时可通过指定字符集和校验规则来定义数据存储格式,如UTF8或GBK。校验规则会影响数据比较和排序,区分或不区分大小写。查看系统默认字符集、支持的字符集及校验规则,并通过实例说明不同校验规则对查询结果的影响。最后介绍了修改数据库字符集的方法。

2025-09-04 09:30:00 896

原创 MySQL数据库初阶 之 数据库基础

MYSQL数据库:数据库基础概念与MySQL的基本使用。1)数据库的定义及其相比文件存储的优势,如安全性、查询管理能力等;2)主流数据库产品对比;3)MySQL的安装、连接及基本操作;4)MySQL体系结构与SQL分类;5)存储引擎的概念及对比。通过具体示例演示了数据库创建、表操作等基础功能。

2025-09-03 17:00:00 8919

原创 Linux网络编程套接字(六)之tcp协议通讯流程andTCP和UDP对比

TCP协议通信流程主要包括连接建立(三次握手)、数据传输和连接断开(四次挥手)三部分。服务器端通过socket、bind、listen、accept初始化并等待连接;客户端通过socket和connect发起请求。TCP是全双工通信,支持双方同时传输数据。相比之下,UDP是无连接、不可靠的数据报传输协议。

2025-09-03 09:00:00 672

原创 Linux网络编程套接字(五)之简单的TCP网络程序3【TCP守护进程化】

Linux网络套接字:TCP网络程序实现为守护进程。1) 通过&符号将进程转为后台运行;2) 使用fg、bg、jobs等命令管理前后台进程;3) Linux进程关系分析,说明后台进程在bash退出后会被操作系统接管;4) 守护进程实现方法:调用setsid()创建新会话,并重定向标准输入输出到/dev/null;5) 提供了一个完整的Daemon类实现代码,包含信号忽略、会话创建、工作目录更改和文件描述符处理等功能。6)如何通过PID终止守护进程。

2025-09-02 17:00:00 649

原创 Linux网络编程套接字(四)之简单的TCP网络程序2【Tcp网络通信四版本(英译汉)】

Linux网络变成套接字:基于TCP协议的网络通信程序实现,提供了四种服务器处理连接的方式。程序使用C++开发,包含TcpServer类实现服务器功能,支持单进程、多进程、多线程和线程池四种处理模式。其中线程池版本通过任务队列管理连接请求,避免频繁创建线程的开销。服务器初始化阶段完成socket创建、绑定和监听,通过accept获取新连接后,使用Service方法进行通信处理。程序还包含错误处理和日志记录功能,支持端口复用设置,确保服务器稳定运行。

2025-09-02 09:00:00 398

原创 Linux网络编程套接字(三)之简单的TCP网络程序1【TCP socket API 详解】

Linux网络套接字编程:TCP网络编程中的核心socket API,包括socket()、bind()、listen()、accept()和connect()等函数的功能与使用方法。文章通过图示和代码示例,讲解了如何建立TCP服务器和客户端连接,并分析了单连接程序的局限性。最后提出了两种改进方案:通过创建子进程或线程来实现多连接处理能力,以及使用线程池优化TCP服务器性能。

2025-09-01 17:30:00 891

原创 Linux网络编程套接字(二)之简单的udp网络程序

Linux网络编程套接字:实现一个简单的UDP网络程序。UDP套接字是全双工的,支持同时读写;创建套接字和绑定端口的方法;数据在网络字节序和主机字节序之间的转换;UDP数据报的发送和接收流程;本地回环地址127.0.0.1的用途;以及一个封装好的UdpSocket类实现,包含日志功能。示例代码展示了服务器端如何接收并处理客户端消息,同时提供了安全验证机制防止危险命令执行。通过makefile编译生成可执行的服务器和客户端程序。

2025-09-01 09:00:00 1194

原创 Linux网络编程套接字(一)之预备知识

Linux网络编程套接字:网络通信中的关键概念与编程接口。1)端口号的作用(标识进程、实现进程间通信);2)TCP/UDP协议的主要特性(有连接/无连接、可靠/不可靠传输等);3)网络字节序转换的必要性和方法;4)socket编程核心API(socket、bind、listen等)及其参数结构(sockaddr、sockaddr_in)。

2025-08-31 17:00:00 1003

原创 Linux网络基础1(四)之网络地址管理

Linux网络基础1:网络中两种重要的地址管理方式。IP地址分为IPv4(32位,点分十进制表示)和IPv6(128位)两个版本,用于标识网络主机。MAC地址则是48位硬件地址(16进制冒号表示),由网卡出厂时确定,用于数据链路层节点识别。文中还提供了Linux(ifconfig)和Windows(ipconfig)查看网络配置的命令示例。

2025-08-31 09:00:00 228

原创 Linux网络基础1(三)之网络与协议栈and网络传输基本流程

Linux网络基础1:网络传输的基本流程和协议栈的关系。1)网络传输流程图,展示同网段和跨网段主机通信的区别;2)数据包封装和分用过程,说明各协议层对数据包的不同称谓及处理方式;3)以太网通信原理。文章通过示意图详细解释了数据从封装到传输再到解析的完整过程,以及不同网络环境下通信的技术实现方式。

2025-08-30 17:00:00 360

原创 Linux网络基础1(二)之网络协议初识

Linux网络基础1:网络协议的分层模型。以打电话为例说明协议分层的逻辑与优势,包括降低耦合、便于维护和高内聚等特点。重点对比了OSI七层模型和TCP/IP五层(或四层)模型,详细说明了TCP/IP模型中物理层、数据链路层、网络层、传输层和应用层的功能和典型设备。在实际应用中更常用TCP/IP四层模型,并说明不同设备(主机、路由器、交换机等)在各层的实现情况,强调分层架构在网络通信中的重要性等

2025-08-30 09:00:00 738

原创 Linux网络基础1(一)之计算机网络背景

Linux网络基础一:计算机网络的基础概念和发展历程。从最初的独立计算机模式,到网络互联、局域网(LAN)和广域网(WAN),展示了网络技术的演进过程。重点解释了"协议"在计算机网络中的重要性,它是通信双方约定的数据格式和标准,确保不同厂商生产的计算机能顺畅通信。文章通过生动的例子(如高小琴、方言等)说明协议的必要性,指出协议需要统一标准才能实现有效通信。网络协议是保证不同计算机系统互联互通的关键基础。

2025-08-29 18:30:00 569

原创 Linux多线程(十八)之读者写者问题【多线程完结~】

多线程之读者写者问题,适用于多读少写的场景。读写锁通过写独占、读共享的原则提高效率,展示了相关API接口及使用示例,包括初始化、加解锁等操作。代码示例演示了1000个读者线程和2个写者线程对共享变量的并发访问,并讨论了读写优先级设置可能导致写者饥饿的问题等。

2025-08-29 08:30:00 292

原创 Linux多线程(十七)之【STL、智能指针和线程安全】

Linux多线程之STL容器和智能指针:STL容器默认不是线程安全的,设计优先考虑性能而非加锁机制,需用户自行保证线程安全。对于智能指针,unique_ptr不涉及线程问题,shared_ptr通过原子操作保证引用计数安全。常见的锁机制包括悲观锁(先加锁再访问)、乐观锁(版本号/CAS验证)和自旋锁(持续检测不挂起),各自适用于不同的并发场景。这些机制在保证线程安全的同时,需权衡性能与资源开销。

2025-07-05 17:30:00 447

原创 Linux多线程(十六)之【单例、饿汉、懒汉模式】

Linux多线程之线程安全的单例模式。单例模式的概念和应用场景,对比了饿汉式和懒汉式两种实现:饿汉式在程序启动时即创建实例,简单但可能影响启动速度;懒汉式采用延迟加载优化性能,但存在线程安全问题。双重检查加锁的线程安全懒汉实现方案,通过volatile关键字和互斥锁确保多线程环境下单例的唯一性。最后以线程池为例展示了懒汉单例模式的实际应用,包括静态成员初始化和互斥锁保护等关键实现细节。

2025-07-05 09:30:00 411

原创 Linux多线程(十五)之【封装原生线程】

本文介绍了一个C++原生线程封装类Thread的实现。该封装类通过pthread库实现线程管理,主要功能包括:1.构造函数接收回调函数指针 2.Run()方法启动线程并自动命名(thread-1/2/3...) 3.提供Join()、Name()、StartTime()等方法 4.支持单线程和多线程模式,示例代码展示了5个线程同时运行的情况,每个线程每秒打印一次消息。该封装简化了原生线程的使用,提供了线程命名、状态查询等便捷功能,适用于需要多线程处理的场景。

2025-07-04 18:00:00 309

原创 Linux多线程(十四)之【线程池】

线程池是一种以空间换时间的线程管理技术,通过维护多个线程来避免频繁创建销毁线程的开销。C++线程池特点: 线程池适用于短时任务场景、实现包含任务队列、线程管理、条件变量同步等核心组件。使用模板类设计,支持不同类型任务。通过互斥锁和条件变量实现线程安全的任务调度。

2025-07-04 10:00:00 594

原创 Linux多线程(十三)之【POSIX信号量&&基于环形队列的生产消费模型】

Linux多线程之POSIX信号量:基本概念及其在线程同步中的应用。信号量本质是一个计数器,用于管理共享资源的访问,信号量的初始化、销毁、等待和发布操作,并基于环形队列实现了一个生产者-消费者模型。通过信号量控制资源访问,结合互斥锁保证线程安全,有效提高了多线程程序的并发性能。如何利用信号量实现线程间同步,并讨论了加锁策略对性能的影响。

2025-07-03 21:34:16 324

原创 Linux多线程(十二)之【生产者消费者模型】

生产者消费者模型通过阻塞队列解耦生产者和消费者,平衡双方处理能力。生产者将数据放入队列后无需等待消费者处理,消费者直接从队列获取数据。该模型具有解耦、支持并发和忙闲不均的优点。阻塞队列在空时阻塞消费者操作,在满时阻塞生产者操作。代码实现展示了单线程和多线程的生产消费模型,使用互斥锁和条件变量确保线程安全。判断条件应在加锁后进行,并使用while循环防止伪唤醒。

2025-07-03 17:00:00 633

空空如也

空空如也

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

TA关注的人

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