自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

摸摸我代码,看它顺不顺

刷刷我博客,看它顺不顺

  • 博客(87)
  • 收藏
  • 关注

原创 <12>_Linux网络基础(中)

本文介绍了计算机网络中应用层和传输层的关键协议实现。应用层部分详细讲解了:(1)网络版计算器的实现,包括序列化/反序列化方案设计;(2)HTTP协议格式、方法、状态码及简单HTTP服务器的搭建。传输层部分重点分析了:(1)端口号作用及五元组概念;(2)UDP协议特点、数据报处理及缓冲区机制;(3)TCP协议的可靠传输机制,包括连接管理、滑动窗口、流量控制、拥塞控制等核心特性,以及粘包问题和异常处理。通过具体代码示例(如计算器网络实现)展示了协议的实际应用,帮助深入理解网络通信原理。

2025-11-17 09:52:20 600

原创 <11>_Linux网络编程套接字

本文系统介绍了Linux网络编程的基础知识和实践案例。主要内容包括:(1) 网络编程核心概念,如IP地址、端口号、TCP/UDP协议区别和网络字节序;(2) Socket编程接口及sockaddr结构;(3) 三种UDP服务器实现:echo服务器、远程指令服务器和消息转发服务器;(4) 四种TCP服务器实现方案:单进程、多进程、多线程和线程池版本;(5) TCP通信全流程分析,包括三次握手、数据传输和四次挥手过程。

2025-11-17 09:50:05 849

原创 <10>_Linux网络基础(上)

本文概述了计算机网络的基础知识,包括网络发展背景(从独立模式到广域网)、网络协议的分层特性、两种主要网络模型(OSI七层模型和TCP/IP五层模型)以及网络传输的基本流程。重点讲解了数据包的封装分用机制和网络地址管理(IP地址和MAC地址的区别与作用),其中TCP/IP模型各层的功能划分和网络设备的对应关系是核心内容。文章通过通俗案例(如打电话)说明复杂概念,强调协议分层的封装优势,为理解网络通信原理提供了系统框架。

2025-11-17 09:45:33 523

原创 <9>_Linux多线程

本文系统介绍了Linux多线程编程的核心概念和关键技术点,主要内容包括:一、线程基础。二、线程控制。三、线程同步。四、高级主题。文中通过多个代码示例(如抢票系统、环形队列等),演示了关键技术的具体实现,并分析了线程编程的常见问题和解决方案。

2025-11-17 09:42:18 959

原创 <8>_Linux进程信号

本文系统介绍了Linux信号处理机制。主要内容包括:1)信号基本概念,区分信号与信号量,解释信号的产生、保存和处理流程;2)信号产生方式,如终端按键、系统调用、软件条件和硬件异常;3)信号递达与阻塞原理,介绍信号集操作函数和信号处理流程;4)信号捕捉方法,包括sigaction函数使用;5)可重入函数概念;6)volatile关键字在信号处理中的作用;7)SIGCHLD信号处理机制和子进程自动回收实现。通过代码示例详细演示了信号注册、捕捉和处理过程,帮助读者深入理解Linux信号机制的工作原理和实际应用。

2025-11-17 09:34:41 647

原创 <7>_Linux进程间通信

本文摘要: 本文系统介绍了Linux系统下的进程间通信机制,主要包括管道、共享内存和信号量三种方式。 管道通信: 分为匿名管道(用于父子进程通信)和命名管道(支持无亲缘关系进程通信) 通过pipe()和mkfifo()系统调用实现 具有半双工特性,遵循严格的读写规则 共享内存: 最高效的IPC方式,通过shmget()创建、shmat()挂接 需要配合信号量解决同步问题 使用ftok()生成唯一key值标识共享内存区域 信号量: 本质是计数器,用于解决临界资源访问的互斥问题 通过PV操作(申请/释放)保证原

2025-11-17 09:31:53 980

原创 <6>_Linux基础IO

本文系统性地介绍了Linux文件系统相关概念与操作。主要内容包括:1. 文件基本概念,区分狭义与广义文件;2. C语言文件IO操作(fopen等)与系统调用接口(open等);3. 文件描述符与重定向原理;4. 缓冲区机制及FILE结构体分析;5. 文件系统inode工作机制;6. 软硬链接特性对比;7. 动静态库的制作与使用。通过详细代码示例和理论分析,展示了文件操作的系统实现原理,为深入理解Linux文件系统提供了完整的技术框架。

2025-11-17 09:28:03 954

原创 <5>_Linux进程控制

本文详细介绍了Linux进程管理的核心概念与操作。主要内容包括:1)进程创建中fork机制与写时拷贝技术;2)进程终止的三种场景及退出码机制;3)进程等待的必要性和wait/waitpid使用方法;4)进程替换原理及exec函数族的使用;5)微型shell的实现原理,包含命令行解析、进程创建/替换/等待等关键步骤。文章通过代码示例展示了进程管理的具体实现,帮助理解父子进程关系、进程状态转换等核心机制,最后通过实现一个简易shell整合了所有知识点。

2025-07-05 18:56:04 683

原创 <4>_Linux进程概念

本文系统介绍了计算机操作系统核心概念,包括冯诺依曼体系结构、进程管理、内存管理等内容。重点解析了:1)冯诺依曼架构中数据流动过程;2)进程的创建、状态转换及PCB结构;3)僵尸/孤儿进程的形成原因与危害;4)进程优先级调度机制;5)环境变量的作用与获取方式;6)虚拟地址空间的设计原理。通过代码示例演示了进程创建、状态查看等操作,深入剖析了操作系统如何通过地址空间保护物理内存、提高加载效率。全文以Linux系统为例,结合理论与实践,全面阐述了操作系统的基本原理和实现机制。

2025-06-29 22:33:09 1016

原创 <3>_Linux环境基础开发工具使用

本文介绍了Linux系统下常用开发工具的使用方法,主要包括:1)软件包管理器yum的安装、查看和卸载操作;2)编辑器vim的三种模式切换及常用命令;3)编译器gcc/g++的编译流程和选项说明;4)调试器gdb的基本使用方法;5)自动化构建工具make/Makefile的原理和使用;6)进度条小程序实例;7)代码版本控制工具gitee的仓库管理、提交冲突解决和文件删除操作。通过具体示例演示了这些工具在Linux开发环境中的实际应用,为开发者提供了实用的技术参考。

2025-06-23 23:01:49 778

原创 <2>_Linux常见指令以及权限理解

本文系统介绍了Linux操作系统的基础知识,主要包括四个部分内容:首先详细讲解了23个常用Linux指令的功能、语法和使用示例,包括文件管理(ls、cd、mkdir等)、查看命令(cat、more、less等)、权限管理(chmod、chown等);其次阐述了Shell的运行原理及其保护操作系统的作用;然后解析了Linux的用户权限体系,区分了超级用户和普通用户;最后深入探讨了Linux文件权限系统,包括文件类型、基本权限、访问者分类、权限设置方法以及目录权限的特殊性,特别说明了粘滞位的作用机制。文章以技术

2025-06-16 13:34:46 806

原创 <1>_摸摸我Linux!

摸摸我Linux啦!

2025-06-16 13:29:38 782

原创 <13>-MySQL用户管理

MySQL用户管理操作指南:1.用户管理包含创建用户(需满足密码策略)、查询用户、修改密码(支持自改和指定用户改)及删除用户等功能;2.权限管理通过GRANT命令赋予用户库/表级权限(如SELECT、ALL等),REVOKE命令回收权限;3.示例演示了从创建用户到赋权(db1查询权限、db2全部权限)、权限验证及回收权限的全流程;4.注意权限修改后需FLUSH PRIVILEGES刷新,且不同权限级别会限制用户对数据库对象的操作范围。

2025-06-16 13:21:08 258

原创 <12>-MySQL视图特性

MySQL视图摘要: 视图是虚拟表,通过查询定义,与基表存在双向数据影响。创建视图语法为"create view 视图名 as select语句",示例中创建了展示薪资>2000员工的视图。视图与基表数据实时联动,修改视图会改变基表数据,反之亦然。视图使用需遵循命名唯一性、无索引、无触发器等限制,但能提高安全性。视图支持与表联合查询,但ORDER BY可能被覆盖。通过DROP VIEW可删除视图。视图简化了复杂查询,但需注意性能影响。

2025-06-15 13:30:04 294

原创 <11>-MySQL事务管理

本文摘要:MySQL事务机制解析 文章全面剖析了MySQL事务的核心概念与实现机制。主要内容包括: 事务的基本特性(ACID):原子性、一致性、隔离性和持久性 事务的版本支持(仅InnoDB引擎)和提交方式(自动/手动) 事务操作方式:包括事务开启、提交、回滚操作及保存点使用 四种隔离级别详解:从读未提交到串行化,重点分析脏读、不可重复读和幻读问题 隔离级别实现原理:通过MVCC(多版本并发控制)机制,结合隐藏字段、undo日志和ReadView实现 特别指出MySQL默认采用可重复读隔离级别并解决了幻读问

2025-06-14 23:38:53 1275

原创 <10>-MySQL索引特性

MySQL索引详解:原理与操作 摘要:本文系统介绍了MySQL索引的核心原理与实际操作。索引通过B+树数据结构提升查询效率,但会降低写入性能。主要索引类型包括主键、唯一、普通和全文索引。文章详细剖析了磁盘存储原理,说明MySQL以16KB的页(page)为单位进行IO交互,并通过聚簇索引(数据与索引共存)与非聚簇索引(数据与索引分离)对比InnoDB和MyISAM的差异。实操部分涵盖索引的创建、查询与删除方法,强调创建原则:高频查询字段建索引、避免对低区分度或频繁更新字段建索引。通过案例演示了索引对查询速度

2025-06-14 19:02:27 1177

原创 <9>-MySQL内外连接

SQL连接查询摘要 本文介绍了SQL中的两种主要连接方式: 内连接(INNER JOIN):最常用的连接方式,通过WHERE条件筛选两表的笛卡尔积,只返回匹配条件的记录。语法为SELECT...FROM表1 INNER JOIN表2 ON连接条件。 外连接: 左外连接(LEFT JOIN):返回左表所有记录及匹配的右表记录,无匹配则右表显示NULL 右外连接(RIGHT JOIN):返回右表所有记录及匹配的左表记录,无匹配则左表显示NULL 通过stu和exam表的实例演示了外连接的实际应用效果。内连接是开

2025-06-14 14:52:07 149

原创 <8>-MySQL复合查询

本文详细介绍了MySQL数据库查询操作的多种方法,主要包括单表查询、多表查询、自连接和子查询四大类。单表查询展示了条件筛选、排序、分组统计等基本操作;多表查询通过emp和dept表的关联示例演示了表连接查询;自连接部分说明如何在同一表中进行关联查询;子查询部分涵盖单行、多行、多列查询及在from子句中的应用,还介绍了合并查询(UNION和UNION ALL)的使用场景。全文通过大量SQL示例代码,展现了不同查询方式的具体实现和应用场景。

2025-06-13 23:33:26 630

原创 <7>-MySQL内置函数

MySQL内置函数:(1)日期函数(2)字符串函数(3)数学函数(4)其他函数

2025-06-10 15:58:19 210

原创 <6>-MySQL表的增删查改

INSERT INTO 表名 (列1, 列2, 列3) VALUES (值1,值2,值3) ON DUPLICATE KEY UPDATE 列1 = 值1 , 列2 = 值2 ...2. groupby后面跟的都是分组的字段依据,只有在groupby后面出现的字段,未来在聚合统计的时候,在select中才能出现。聚合统计函数一定是直接或间接统计,列方向的某些数据,一定是一批数据,并且一定是相同属性。等于, NULL 安全,例如 NULL <=> NULL 的结果是TRUE(1)_ 表示任意一个字符。

2025-06-10 15:56:36 811

原创 <5>-MySQL表的约束

本文介绍了MySQL中常见的表约束类型及其使用方法。主要包括:空属性(NOT NULL)、默认值(DEFAULT)、列描述(COMMENT)、zerofill填充、主键(PRIMARY KEY)、自增长(AUTO_INCREMENT)、唯一键(UNIQUE KEY)和外键(FOREIGN KEY)。这些约束从业务逻辑角度保证数据的正确性,如主键保证唯一性、外键维护表间关系等。通过具体案例演示了各种约束的创建、修改和删除操作,以及违反约束时的错误处理。合理使用这些约束能有效维护数据的完整性和合法性。

2025-06-09 12:11:54 668

原创 <4>-MySQL数据类型

而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,.... 最多64个。当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占用3个字节],char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255。如果有像性别一样,只需要区分男女,存放0或1,这时可以定义bit(1),能节省空间。bit(M) 为位字段类型,M表示位数,范围从1到64。

2025-06-09 12:09:38 1045

原创 <3>-MySQL表的操作

我们要修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型, 表的存储引,比如添加字段,删除字段,修改字段名等等。character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准。collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准。engine 存储引擎,不同的存储引擎,创建表的文件不一样。在users表,修改password字段长度为32。把users表名,修改为user_set。在users表,删除id列。Default 默认值。

2025-06-08 21:24:18 451

原创 <2>-MySQL库的操作

校验规则对于数据读取有影响,使用utf8_ general_ ci则[不区分大小写],使用utf8_ bin则[区分大小写]代码:create database bin_db charset utf8 collate utf8_bin;代码:mysqldump -P3306 -u root -p -B bin_db > bin_db.sql。创建一个名为bin_db的数据库,并设置字符集为utf8,设置校对规则为utf8_bin。备份数据库bin_db到bin_db.sql文件。删除数据库bin_db。

2025-06-06 18:41:03 443

原创 <1>-MySQL数据库基础

存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点:文件的安全性有问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便数据库存储介质:磁盘 和 内存为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。

2025-06-04 22:54:39 394

原创 <6>, 界面优化

在网页前端开发领域中, CSS 是一个至关重要的部分. 描述了一个网页的 "样式". 从而起到对网页美化的作用 .所谓样式, 包括不限于大小, 位置, 颜色, 背景, 间距, 字体等等网页开发作为 GUI 的典型代表, 也对于其他客戶端 GUI 开发产生了影响. Qt 也是其中之一.

2025-06-02 16:30:12 801

原创 <5>, Qt系统相关

本文摘要: Qt开发框架指南涵盖五大核心模块:1)事件处理机制,包括鼠标/键盘事件、定时器和事件过滤器;2)文件操作类(QFile)与目录管理(QFileInfo);3)多线程编程(QThread)及线程同步工具(QMutex、QSemaphore等);4)网络通信(QTcpServer/Socket)和HTTP客户端实现;5)音视频处理(QSound/QMediaPlayer)。每个模块均提供典型API说明和代码示例,如网络回显服务器、文件读写操作和多媒体播放器实现,展现Qt跨平台开发的完整功能体系。文中

2025-06-01 21:01:03 1028

原创 <4>, Qt窗口

QT的各种窗口控件使用

2025-05-31 12:26:55 369

原创 <3>, 常用控件

Widget是Qt中的核心概念,意思是“控件”,控件是构成图形化界面的基本要素。像下图中的, 按钮, 列表视图, 树形视图, 单行输入框, 多行输入框, 滚动条, 下拉框,等待,都可以称为“控件”。Qt 作为⼀个成熟的 GUI 开发框架, 内置了大量的常用控件. 这一点在 Qt Designer 中就可以看到端倪。并且 Qt 也提供了 "自定义控件" 的能力, 可以让程序猿在现有控件不能满足需求的时候, 对现有控件做出扩展, 或者手搓出新的控件。控件是GUI开发中的通用概念,不仅局限在于Qt中。

2025-05-30 13:14:37 826

原创 <2>, 信号与槽

信号是由于⽤⼾对窗⼝或控件进⾏了某些操作,导致窗⼝或控件产⽣了某个特定事件,这时 Qt 对应的窗⼝类会发出某个信号,以此对⽤⼾的操作做出反应。因此,信号的本质就是事件。如:• 按钮单击、双击• 窗⼝刷新• ⿏标移动、⿏标按下、⿏标释放• 键盘输⼊那么在 Qt 中信号是通过什么形式呈现给使⽤者的呢?• 我们对哪个窗⼝进⾏操作, 哪个窗⼝就可以捕捉到这些被触发的事件。• 对于使⽤者来说触发了⼀个事件我们就可以得到 Qt 框架给我们发出的某个特定信号。

2025-05-29 23:26:15 1035

原创 <1>,概述

Qt 是⼀个 跨平台的 C++ 图形⽤⼾界⾯应⽤程序框架Qt ⽀持多种开发⼯具,其中⽐较常⽤的开发⼯具有:Qt Creator、Visual Studio、Eclipse.

2025-05-15 21:30:58 1006

原创 24,C++——IO流

在C语言中,如果想要将一个整形变量的数据转化为字符串格式,如何去做?1. 使用itoa()函数2. 使用sprintf()函数但是两个函数在转化时,都得需要先给出保存结果的空间,那空间要给多大呢,就不太好界定, 而且转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。在C++中,可以使用stringstream类对象来避开此问题。在程序中如果想要使用stringstream,必须要包含头文件。

2025-03-31 11:34:56 1001

原创 23,C++——类型转换

每次使用强制类型转换前,程序员应该仔细考虑是否还有其他不同的方法达到同一目的,如果非强制类型转换不可,则应限制强制转换值的作用域,以减少发生错误的机会。RTTI:Run-time Type identification的简称,即:运行时类型识别。1. 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败。1. 隐式类型转化有些情况下可能会出问题:比如数据精度丢失。因此C++提出了自己的类型转化风格,而。2. 显式类型转化:需要用户自己处理。

2025-03-28 19:43:35 847

原创 22,C++——特殊类

使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

2025-03-27 20:26:17 371

原创 21,C++——智能指针

借此,我们实际上把管理一份资源的责任托管给了一个对象。这种做法有两大好处:A,不需要显式地释放资源。B,采用这种方式,对象所需的资源在其生命期内始终保持有效。

2025-03-26 20:05:09 540

原创 20,C++——异常

实际使用中很多公司,都会自定义自己的异常体系进行规范的异常管理。因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了。所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了。

2025-03-25 21:08:33 1047

原创 19,C++——11

C++11详解!!!

2025-03-24 18:42:06 768

原创 18,C++——哈希

C++哈希详解!!!

2025-03-24 18:36:34 630

原创 <150> 逆波兰表达式求值

该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6。该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。,表示一个根据逆波兰表达法表示的算术表达式。返回一个表示表达式值的整数。

2025-03-24 16:37:26 150

原创 17,C++——map和set

1) 与map/multimap不同,map/multimap中存储的是真正的键值对<key, value>,set中只放value,但在底层实际存放的是由<value, value>构成的键值对。2) 在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。4) map中通过键值访问单个元素的速度通常比unordered_map容器慢,但map允许根据顺序对元素进行直接迭代(即对map中的元素进行迭代时,可以得到一个有序的序列)。

2025-02-28 15:16:41 1053

空空如也

空空如也

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

TA关注的人

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