自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串<--->网络字节序<--->主机

主机到网络字节序和字符串到网络字节序的区别:前者解决多字节数值(如int、short)的存储顺序问题,通过htons/htonl等函数进行字节重排;后者是将IP地址字符串(如"192.168.1.1")转换为网络识别的二进制格式,使用inet_pton等函数。前者处理字节顺序,后者处理格式转换,两者都是网络编程的必要操作。

2025-12-10 15:33:13 340

原创 Go 语言流程控制详解:if / switch / for

文章摘要:本文对比了Go语言与C++在运算符和流程控制上的差异。Go语言中++/--是语句而非表达式,不支持前置/后置区分。流程控制方面:1) if语句可省略括号,支持变量定义与判断语句用分号分隔;2) switch支持多值匹配、自动break、fallthrough穿透,可省略表达式当if使用;3) 循环仅for一种形式,支持传统三段式或条件循环,死循环采用for;;语法。这些特性体现了Go语言简洁明确的设计理念。

2025-10-02 22:21:30 368

原创 C++boost库之共享内存interprocess

本文介绍了在Linux系统下安装和使用vcpkg工具管理boost-interprocess库的完整流程。主要内容包括:1)安装基础构建工具(g++、CMake、Git);2)克隆并编译vcpkg仓库;3)配置环境变量;4)验证安装及使用vcpkg安装boost-interprocess库。文章还详细讲解了boost-interprocess库的功能特性,包括其提供的共享内存管理、进程同步机制(互斥锁/信号量/条件变量)以及共享内存STL容器等核心功能,并给出了具体使用示例代码。

2025-09-21 23:06:35 1206

原创 CMake进阶教程:库文件构建、发布及列表操作技巧

该文章深入讲解了使用CMake构建和管理库文件的方法。主要内容包括:1. 库文件构建基础:介绍静态库(.a/.lib)和动态库(.so/.dll)的构建命令add_library,以及库文件路径设置;2. 库文件使用:详细说明如何链接静态库(link_libraries)和动态库(target_link_libraries),包括路径指定和权限控制;3. 实用技巧:介绍CMake日志打印(message命令)和字符串操作(list命令),包括拼接、移除等常用操作;4. 高级功能:讲解列表查询、修改、排序等等

2025-09-21 19:19:36 629

原创 Go变量与类型简明指南

本文介绍了Go语言中变量的声明与使用方式,包括var关键字声明、类型推断、短变量声明符:=等。详细说明了基本数据类型(整型、浮点型、字符型、布尔型、字符串型)的特性及使用注意事项,特别指出Go字符使用UTF-8编码的特点。此外,还讲解了指针的概念和操作,包括获取变量地址、定义指针变量和通过指针访问数据。文章通过代码示例展示了各种数据类型的声明和使用方法,体现了Go语言简洁高效的特性。

2025-09-20 23:52:56 981

原创 CMake快速上手:编译、构建与变量管理(包含示例)

本文介绍了CMake的基本概念和使用方法。CMake是一个跨平台的构建工具,通过生成Makefile解决传统makefile跨平台不便的问题。文章详细讲解了CMake的核心功能:1、使用set定义变量管理源文件;2)、指定C++标准版本;3、设置输出路径;4、通过aux_source_directory和file命令搜索源文件;5、使用include_directories指定头文件路径。通过一个包含模板函数的数学库示例,演示了从手动编译到CMake构建的完整过程,包括项目结构设计、编写构建流程。

2025-09-20 16:34:25 1143

原创 初识golang

本文介绍了在Debian系统下配置Go语言开发环境的完整步骤,包括下载安装包、解压到指定目录、配置环境变量及验证安装。同时讲解了Go程序的基本结构、编译运行方式、语法特点(如大小写敏感、无分号结尾等)以及代码风格规范。文章还对比了Go与C++的异同,并详细说明了Go的注释方式、运算符规范和API文档查看方法,为初学者提供了全面的Go语言入门指南。

2025-09-17 09:44:10 1173

原创 【Linux】多路转接之epoll

摘要 本文主要探讨了epoll模型相对于传统poll/select的性能优化点。首先分析了poll存在的两个主要开销问题:频繁的用户态-内核态数据拷贝(每次调用需传输整个pollfd数组)和O(n)时间复杂度的事件遍历。然后详细介绍了epoll的解决方案:通过epoll_ctl/epoll_wait分离监听与等待机制,利用红黑树和就绪队列高效管理事件,仅返回就绪事件而非全部fd。文章还提供了epoll接口的使用说明,包括epoll_create、epoll_ctl和epoll_wait的函数原型及参数解析。

2025-08-02 17:52:58 1314

原创 C++ lambda表达式与线程库

本文介绍了C++中lambda表达式的特点和使用场景。lambda表达式是一种匿名内联函数对象,相比传统函数指针和仿函数更简洁,可直接在std::sort等算法中使用。文章通过水果排序示例展示了lambda表达式的语法和优势,并详细解释了捕获列表的作用,包括访问外部变量、成员变量和状态封装等场景。此外还探讨了lambda底层实现原理,指出编译器会将其转换为带有operator()的类。最后介绍了C++11线程库与lambda的配合使用,以及无锁编程的实现思路。全文通过代码示例深入浅出地说明了lambda表达

2025-08-02 17:24:26 941

原创 测试分类:详解各类测试方式与方法

软件测试是确保软件质量的重要环节,根据测试目标可分为界面测试、功能测试、性能测试、可靠性测试、安全性测试和易用性测试;按执行方式分为静态测试和动态测试;按测试方法分为白盒、黑盒和灰盒测试;按测试阶段分为单元测试、集成测试、系统测试和验收测试;按是否手工分为手工测试和自动化测试;按实施组织分为α测试和β测试。这些分类方法有助于在不同阶段和层次进行有效的测试管理。

2025-08-01 22:05:03 1127

原创 自动化测试准备工作:概念篇

本文介绍了自动化测试的基本概念与应用。自动化通过技术手段减少人力消耗、提高效率,例如超市自动门和软件测试。在软件测试中,自动化主要用于回归测试,但不能完全取代人工测试。文章详细解析了自动化测试的分类(接口/前端)、著名的测试金字塔理论,以及实际开发中常见的"冰淇淋蛋筒反模式"。重点以Selenium为例,阐述了Web自动化测试的工作原理,包括驱动程序的安装、脚本编写示例,以及Selenium-驱动-浏览器三者的交互机制。最后指出驱动在自动化测试中扮演着请求解析与转发的关键角色。

2025-08-01 16:45:57 917

原创 测试用例的编写:让测试用例的编写条理起来

摘要:本文系统介绍了软件测试用例的设计方法与原则。首先通过电视测试案例引出测试用例概念,阐明其组成要素和编写形式(Excel/思维导图)。重点阐述了测试用例设计的"万能思路":常规思考+逆向思维+发散性思维,并提出功能、界面、性能等6维度测试框架。详细讲解了等价类划分、边界值分析、场景法、正交表法和判定表法等5种具体设计方法,结合注册邮箱等实例说明其应用场景和操作步骤。最后补充了错误猜测法这一经验性方法,形成完整的测试用例设计方法论体系。全文理论结合实践,对测试人员具有重要指导价值。

2025-07-29 16:32:33 943 1

原创 软件测试生命周期与Bug管理:从识别到修复的全流程解析

本文深入探讨了软件测试的生命周期及Bug管理的关键要素,分析了描述Bug时的要素要求及其重要性,并详细解释了Bug的级别、生命周期及如何与开发人员沟通解决问题。此外,我们还提出了如何站在用户角度审视Bug、Bug定级的合理性、以及如何提高自身技术水平以提出有效的解决方案。最后,本文介绍了Bug评审的重要性,帮助测试人员提高工作效率与软件质量

2025-07-23 22:14:30 721

原创 软件开发生命周期与模型解析:选择合适的开发方法

本文概述了软件开发的生命周期及常见的开发模型,包括瀑布模型、螺旋模型、增量模型、敏捷模型及其变种。分析了不同模型的应用背景与优势,特别讨论了敏捷开发如何在快速变化的环境中保持灵活性和高效性。结合案例讲解如何选择适合的开发模型来应对不同的项目需求。

2025-07-23 15:53:57 853

原创 软件测试岗位职责与必备素质

本文介绍了软件测试的基本概念、常见岗位以及测试与开发的区别。重点阐述了软件测试开发工程师与测试工程师的工作内容、职责及差异。同时,探讨了优秀测试人员应具备的素质,包括沟通能力、学习能力、开发能力和自动化测试技能。最后,讨论了测试用例设计能力和探索性思维的重要性,以及如何提高这些能力。

2025-07-22 17:16:56 790

原创 【算法】递归、搜索与回溯

递归是算法中最基础却也最容易让人困惑的知识点之一。本文从“什么是递归、为什么使用递归、如何理解和写好递归”出发,系统讲解递归的基本概念和实现技巧。同时,结合多个经典题目(如汉诺塔问题、链表操作、幂函数计算、布尔树求值等),通过递归与循环的对比、从宏观和树形结构两个视角拆解递归过程,帮助读者真正掌握递归的本质。此外,文章还深入探讨递归与搜索算法(DFS、BFS)、暴力搜索、回溯与剪枝之间的区别与联系,理清遍历与搜索的边界与用途。

2025-07-13 21:18:48 1108

原创 【Linux】线程机制深度实践:创建、等待、互斥与同步

本文系统梳理了多线程编程的核心知识点,涵盖线程的基本概念、创建与终止、等待与分离机制、互斥锁的使用与封装、死锁的形成与避免策略,以及条件变量与信号量等常用同步手段。

2025-07-13 15:07:14 1314

原创 【Linux网络】IP 协议详解:结构、地址与交付机制全面解析

本篇文章将系统讲解 IP 协议的基本概念和结构,介绍它在网络通信中的作用以及无连接、尽力而为的特性。接着解析 IP 报文的报头结构及字段含义,说明如何分离报头与数据,以及数据如何被正确交付。随后将介绍 IP 地址的划分方式、子网掩码与 CIDR 表示法,解释特殊 IP 地址的用途,如环回地址和广播地址等。文章还会讲解 IPv4 地址枯竭问题,以及私有 IP、公网 IP 和 NAT 的关系。最后梳理广域网、局域网、公网和内网的区别与联系,希望帮助您全面理解 IP 地址体系。

2025-07-12 22:25:51 1124 2

原创 【Linux网络】深入理解HTTP/HTTPS协议:原理、实现与加密机制全面解析

本文系统讲解了 HTTP 与 HTTPS 协议相关的核心内容。首先介绍了 URL 的基本结构和编码解码方式,帮助读者建立起网络通信的基本认知。接着深入解析了 HTTP 请求与响应的宏观格式,通过服务端封装与调用代码,实际验证了协议结构在编程实现中的应用。此外,文章还探讨了 HTTP 方法与状态码的作用,并系统分析了长连接与会话保持的实现方式,包括老旧方案与现代手段的利弊对比。在 HTTPS 部分,重点讲解了加密传输的基本原理、数据指纹概念以及整体加密流程。

2025-07-11 22:55:34 1148

原创 【linux网络】深入理解 TCP/UDP:从基础端口号到可靠传输机制全解析

本文系统梳理了传输层中两个核心协议——UDP 和 TCP 的工作机制与关键特性。内容从端口号的划分和知名端口介绍入手,逐步展开介绍了 UDP 的无连接特性、协议格式、缓冲区与常见“坑点”,再到 TCP 协议的可靠传输原理,包括三次握手、四次挥手、滑动窗口、流量控制与拥塞控制等。此外还深入探讨了 TCP 中的确认应答机制、标记位作用、粘包问题和异常情况处理等高频面试/实战问题,适合网络编程学习者、求职者以及系统开发工程师查漏补缺或系统学习

2025-07-11 21:19:26 907

原创 【linux 网络】网络基础

本文介绍了计算机网络的基础概念和协议分层体系。主要内容包括:1. 网络协议的定义和作用,协议是多方通信的约定标准;2. TCP/IP五层模型(应用层、传输层、网络层、数据链路层、物理层)及其功能;3. OSI七层模型与TCP/IP模型的关系;4. 同一网段和不同网段的数据传输流程;5. IP地址和MAC地址的特性对比。文章通过协议分层阐述了网络通信的基本原理,包括数据封装和解包过程,以及路由器在不同网段通信中的作用。

2025-07-08 17:04:33 1114

原创 【linux网络】网络编程全流程详解:从套接字基础到 UDP/TCP 通信实战

本篇博客系统讲解了基于 C++ 的网络套接字编程,从概念理解到实战实现,逐步深入。前半部分介绍了套接字编程的基本共识、端口号与协议(UDP/TCP)的核心原理、网络字节序与通用接口设计,为网络编程打下理论基础。后半部分则进入实战环节,带你动手封装 UDP/TCP 通信服务器,详细展示了服务器的初始化、绑定、通信、连接管理(三次握手与四次挥手)等过程,并提供了完整的 UdpServer.hpp/.cpp 和 TcpServer.hpp 实现代码

2025-07-08 16:43:51 1477

原创 MySQL 表的内外连接

摘要:SQL连接操作分为内连接和外连接两大类型。内连接只保留两表中匹配的行,相当于先做笛卡尔积后筛选符合条件的记录。外连接则在匹配基础上保留一侧的未匹配行,用NULL填充缺失值。左外连接以左表为主保留未匹配行,右外连接以右表为主保留未匹配行。连接语法分别为INNER JOIN、LEFT JOIN和RIGHT JOIN,需配合ON子句指定连接条件。(133字)

2025-07-05 15:44:43 273

原创 【算法】宽度优先遍历BFS

本文介绍了使用BFS(广度优先搜索)解决树和图相关问题的算法思路与代码实现。主要内容包括:1)二叉树的层序遍历和锯齿形遍历,通过队列实现;2)优先级队列(堆)的应用,如最后一块石头重量和TopK问题;3)FloodFill算法解决图像渲染、岛屿数量及面积问题;4)BFS在最短路径问题中的应用;5)拓扑排序判断课程安排可行性。文章通过具体例题(如LeetCode题目)详细讲解了每种算法的实现步骤和关键技巧。

2025-07-05 11:06:55 764

原创 MySQL 查询进阶指南:子查询、多表连接与 UNION 操作全解析

本文深入讲解了 MySQL 查询语法中的关键技术模块,涵盖基础查询回顾、子查询的多种类型与使用场景、多表连接(包括自连接)、以及多结果集合并(UNION 和 UNION ALL)等内容。通过丰富的 SQL 示例和语法对比,帮助读者从掌握常规查询语句,到理解复杂 SQL 查询的构造逻辑,适合希望提升数据库查询能力的读者查阅学习。

2025-07-04 20:32:50 763

原创 MySQL 事务详解:从基础操作到隔离级别与 MVCC 原理

本文围绕 MySQL 事务展开,从基础概念入手,逐步介绍事务的提交机制、操作实践、隔离级别及其背后的 MVCC 实现原理。通过实际验证事务行为、分析异常场景,帮助读者深入理解事务的四大特性(ACID),掌握不同隔离级别的区别与适用场景,尤其聚焦在可重复读与读已提交之间的 MVCC 实现差异。适合希望系统学习 MySQL 事务机制的开发者、DBA 及后端工程师阅读。

2025-07-04 18:49:01 1374

原创 MySQL 用户管理与权限控制

MySQL用户权限管理摘要 MySQL通过用户管理机制保障数据库安全,避免直接使用root账户带来的风险。用户信息存储在mysql.user表中,包含用户名、主机访问限制和加密密码等字段。创建用户需指定访问主机/IP和密码,创建后需执行flush privileges刷新权限。MySQL提供细粒度的权限控制,包括数据操作、表结构修改、存储过程管理等30余种权限。管理员可通过grant/revoke命令授予或回收权限,root用户还能修改其他用户密码(8.0+版本使用ALTER USER命令)。特别要注意新创

2025-07-02 20:06:20 794

原创 深入理解 MySQL 索引:原理、结构与实战指南

本文系统性地探讨了MySQL索引的工作原理及优化策略。首先通过800万条数据无索引查询耗时6.5秒的实例,揭示索引的必要性。随后从硬件层面分析磁盘结构(扇区、柱面、磁头)及IO特性,解释MySQL采用16KB页大小与BufferPool内存机制的原因。重点解析B+树索引结构优势:有序存储、多阶目录、矮胖树形减少IO次数。对比分析了聚簇索引(InnoDB主键索引)与非聚簇索引(MyISAM)的本质区别,以及Hash、B树等结构的局限性。最后提供完整的索引操作指南(创建/查看/删除)

2025-06-24 11:27:37 829

原创 MySQL CRUD 操作与高级查询语法详解

本文介绍了MySQL表的基本CRUD操作,包括创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)。重点讲解了INSERT操作中的全列/指定列插入、冲突更新(ON DUPLICATE KEY UPDATE)和REPLACE替代;SELECT查询中的条件筛选(WHERE)、排序(ORDER BY)和分页(LIMIT);UPDATE和DELETE的使用注意事项。文章还涉及聚合函数(COUNT,SUM等)、分组查询(GROUP BY)及HAVING筛选。

2025-06-22 12:54:49 1260

原创 MySQL 表结构设计中的约束机制详解

数据库约束是确保数据合法性的重要机制。文章讨论了多种约束条件的作用:非空约束(NOT NULL)强制字段必须赋值;默认约束(DEFAULT)为未指定字段提供默认值;列描述(COMMENT)添加注释说明;主键(PRIMARY KEY)保证唯一性和非空性;自增长(AUTO_INCREMENT)自动生成递增值;唯一键(UNIQUE)确保字段值不重复但允许NULL;外键(FOREIGN KEY)维护表间关系并保证数据一致性。通过合理组合这些约束,可以有效解决数据类型单一、数据冗余和业务逻辑不合理等问题,构建健

2025-06-20 21:52:59 821 1

原创 MySQL 数据类型全解析:数值、字符串、日期与枚举详解

摘要:本文详细介绍了MySQL中的数据类型分类,包括数值类型(整型和浮点型)、文本/二进制类型、日期/时间类型以及枚举/集合类型。重点分析了各种数据类型的存储特性、范围限制和使用场景,特别比较了CHAR和VARCHAR的本质区别与选择策略。文章还探讨了数据类型作为数据完整性的约束机制,以及TIMESTAMP的自更新特性、ENUM和SET类型的使用方法。通过实际存储示例和对比表格,帮助读者理解如何根据业务需求选择合适的数据类型来优化存储空间和查询性能。

2025-06-20 11:40:23 683

原创 MySQL 库操作和表操作

本文内容包括数据库编码方面的内容,一些基本的数据库的增删查改、数据库的备份和恢复操作以及表的增删改查操作等。

2025-06-18 17:03:44 840

原创 数据库基础

本篇文章详细介绍了对于数据库的基本理解以及常见主流数据库的认识、以及mysql整体架构和语句分类等。

2025-06-18 10:57:59 816

原创 MySQL在ubuntu下的安装

本文介绍了在Ubuntu系统上安装MySQL数据库的全过程。首先需卸载已有MySQL/mariadb环境,添加官方APT软件源后安装lrzsz工具包。通过下载的deb文件安装MySQL,配置root密码并验证服务状态。建议初期使用root用户操作快速上手MySQL语句。文章还讨论了MySQL开机自启的适用场景,并强调应将字符编码配置为utf8mb4而非utf8。最后提供了MySQL登录和退出的基本命令。整个流程需在root权限下完成,但安装后普通用户也可使用。

2025-06-17 09:32:09 1892

原创 Git 实战场景

摘要:本文系统介绍了Git标签管理和多人协作开发的核心要点。在标签管理方面,阐述了创建、查看、删除和推送标签的具体操作,强调标签作为项目里程碑的重要作用。在协作开发部分,对比分析了同一分支和不同分支下的协作模式,详细说明了解决冲突、合并分支的流程。文章还深入探讨了企业级开发模型,包括DevOps理念、多环境部署策略和GitFlow分支管理模型,并以实际项目案例演示了从需求开发到测试上线的全流程管理。最后针对不同环境Bug提供了具体修复方案,为团队协作提供了系统的Git实践指导。

2025-06-17 09:04:45 1187

原创 掌握Git核心:版本控制、分支管理与远程操作

无论热爱技术的阅读者你是希望掌握Git的企业级应用,能够深刻理解Git操作过程及操作原理,理解工作区暂存区、版本库的含义;还是想要掌握Git的版本、分支管理,自由的进行版本回退、撤销、修改等Git操作方式与背后原理和通过分支创建、切换、合并、删除整个声明周期,灵活进行各种场景的分支管理,学习常见的分支策略;亦或是掌握Git远程仓库与本地仓库,理解分布式的版本控制系统,远程仓库和本地仓库的交互操作

2025-06-08 23:33:22 15624 2

原创 高性能分布式消息队列系统(四)

摘要:本文详细介绍了基于RabbitMQ消息队列系统的客户端模块设计与实现。客户端通过信道(Channel)与服务器交互,信道在TCP连接上实现多路复用,封装协议细节,提供消息发布、订阅等服务。文章重点阐述了订阅者模块、异步线程模块、连接模块和信道管理模块的实现逻辑,包括数据结构设计、线程安全处理及模块间协作流程。通过广播、直接和主题三种交换机模式的联调测试,验证了客户端功能。项目采用Protobuf协议通信,利用Muduo网络库实现异步事件处理,具有良好的扩展性,可以支持多虚拟机、可视化界面等进一步开发。

2025-06-05 23:52:30 1004

原创 高性能分布式消息队列系统(三)

摘要:本文详细介绍了消息中间件服务端模块的设计与实现,采用分层架构设计,主要包含交换机、队列、绑定、消息、路由、消费者和信道等核心模块。系统通过SQLite实现交换机/队列/绑定关系的持久化存储,采用文件存储实现消息持久化,并设计了垃圾回收机制优化性能。多模块协作实现了消息发布-订阅模型,包括交换机路由匹配、消费者轮询调度等关键功能。网络通信层基于muduo网络库构建,结合线程池实现异步处理,确保系统高并发能力。通过虚拟主机整合所有组件,提供统一管理接口,最终构建了一个高性能、可靠的消息中间件服务端系统。

2025-06-05 14:52:35 808

原创 高性能分布式消息队列系统(二)

本文详细阐述了消息队列系统的核心模块设计与实现方案。系统基于AMQP协议,采用生产者-消费者模型,包含服务端和客户端两大部分。简述了服务端和客户端的各个部分的功能,实现了后续项目的必要工具。

2025-06-03 21:20:43 1174

原创 高性能分布式消息队列系统(一)

本文介绍了使用C++在Linux环境下开发一个简易消息队列的技术方案。主要技术栈包括:Protobuf用于高效序列化、muduo网络库实现高并发通信、SQLite3进行轻量级数据存储、Gtest单元测试框架。文章详细讲解了开发环境搭建、各组件原理及使用方法

2025-06-03 10:37:02 1721

空空如也

空空如也

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

TA关注的人

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