- 博客(88)
- 收藏
- 关注
原创 传输层协议UDP和TCP
传输层协议UDP和TCP是网络通信中常用的两种协议。UDP(用户数据报协议)是一种无连接、不可靠的协议,适用于对实时性要求较高的场景,如视频流、在线游戏等。UDP通过端口号标识应用程序,报文结构简单,具有自描述字段,能够解包和分用数据,但不保证数据顺序和完整性。TCP(传输控制协议)则是一种面向连接、可靠的协议,适用于需要数据完整性和顺序的场景,如文件传输、网页浏览等。TCP通过确认应答机制保证数据的可靠传输,具有发送和接收缓冲区,能够控制数据的发送和接收。两者的主要区别在于连接的建立、可靠性和数据传输的控
2025-05-09 08:12:05
1741
2
原创 Qt——6、界面优化
本文介绍了Qt中QSS样式表的使用方法,包括基本语法、设置方式、选择器类型和盒子模型等核心概念。QSS作为Qt仿照CSS设计的样式语言,可以灵活控制控件的外观样式,支持全局样式、局部样式和文件导入等多种设置方式。文章详细讲解了类型选择器、ID选择器、子控件选择器和伪类选择器的使用方法,并通过多个示例演示了如何为按钮、复选框等控件设置样式效果。此外,还介绍了Qt Designer集成样式编辑功能以及样式层叠规则,帮助开发者更好地实现界面美化效果。
2026-02-08 07:07:37
810
原创 Qt——5、Qt系统相关
Qt事件系统摘要 Qt框架封装了操作系统的事件机制,提供了一套完整的事件处理系统。文章详细介绍了Qt中常见的事件类型及其处理方式: 基本事件概念: 事件是用户操作或系统产生的动作,Qt使用QEvent类表示 信号槽机制是对事件的进一步封装 鼠标相关事件: enterEvent/leaveEvent:鼠标进入/离开控件 mousePressEvent/mouseReleaseEvent:鼠标按下/释放 mouseDoubleClickEvent:鼠标双击 mouseMoveEvent:鼠标移动(需开启追踪)
2026-02-06 23:08:28
680
原创 Qt——4、Qt窗口
本文介绍了Qt中主窗口QMainWindow的基本结构和使用方法。QMainWindow包含菜单栏、工具栏、浮动窗口、状态栏和中心部件,是应用程序的基础框架。重点讲解了菜单栏QMenuBar的实现,包括创建菜单栏、添加菜单(QMenu)和菜单项(QAction),以及设置快捷键和信号槽连接。通过代码示例演示了如何创建一个包含"文件"、"编辑"、"视图"等菜单的界面,并为菜单项添加触发功能。文章还对比了QWidget、QDialog和QMainWin
2026-02-03 23:10:16
857
原创 Qt——3、常用控件
摘要 Qt控件体系是GUI开发的核心,所有控件都继承自QWidget类。文章介绍了QWidget的关键属性,包括enabled(控件可用状态)、geometry(位置尺寸控制)、windowTitle(窗口标题)和windowIcon(窗口图标)。通过实例演示了如何通过代码动态修改控件位置、状态和窗口属性,并对比了geometry和frameGeometry在考虑window frame时的差异。文章还指出Qt控件虽丰富但较现代框架稍逊,可通过Qt Design Studio等工具优化界面效果。
2026-02-03 02:12:54
949
原创 Qt——2、信号和槽
信号和槽是Qt框架特有的消息通信机制,用于实现对象间的松耦合通信。信号(signal)是事件发生时发出的通知,槽(slot)是对信号做出响应的处理函数。通过connect()函数将信号与槽关联后,当信号触发时,对应的槽函数会自动执行。
2026-01-19 23:38:46
635
原创 Qt——1、初识Qt
Qt开发环境搭建与HelloWorld程序实现 本文详细介绍了Qt开发环境的搭建过程,包括: Qt SDK的安装步骤及环境变量配置 Qt Creator工具集的组成与功能说明 创建第一个Qt Widgets项目的方法 项目代码结构的详细解析 通过拖拽控件和代码编写两种方式实现HelloWorld程序 文章重点讲解了Qt的核心机制(信号与槽、对象树)和项目文件结构(.ui、.pro文件的作用),并展示了如何使用Qt Designer进行可视化界面设计。通过清晰的截图和分步说明,帮助开发者快速入门Qt图形界面开
2026-01-18 15:50:17
676
原创 MySQL——10、视图和用户管理
本文介绍了MySQL中的视图和用户管理。视图是一个虚拟表,其内容由查询定义,可以简化复杂查询操作。视图与基表数据相互影响,创建语为create view,删除用drop view。用户管理部分讲解了如何通过user表进行密码修改、用户创建和删除,重点介绍了权限管理,包括使用grant授权和revoke回收权限。文章还说明了如何配置远程登录,并强调避免直接使用root账户操作数据库。这些功能共同构成了MySQL的数据安全和访问控制机制。
2025-09-16 19:15:33
1067
原创 MySQL——9、事务管理
mysql是基于CS模式的,是一套网络服务,所以我们是可以在本地连接上远程服务器的mysql服务端的。mysql服务内是多线程并发处理客户端请求的,所以如果CURD不加以控制,会出问题。现在有两个mysql客户端,抢票有两个步骤,首先要获取票数判断是否大于0,然后进行update操作让票数减1,现在客户端A获取票数判断完后线程切换,客户端B也获取然后进行判断,这时候两个线程就都进入了if语句内部,所以一张票被卖了两次,这就是线程安全问题。CURD满足什么属性可以解决上述问题?1、买票的过程得是原子的。
2025-07-05 23:04:53
1216
1
原创 MongoDB入门指南:环境安装与基本操作
本文摘要介绍了在Ubuntu系统上安装MongoDB的详细步骤,包括导入公钥、创建文件列表、安装MongoDB Community Server等。文章还涵盖了MongoDB的基本概念、优势、应用场景及其与传统RDBMS的区别,并提供了常用操作命令如查看帮助文档、服务器状态、数据库连接地址以及数据备份与恢复的方法。此外,文中还包含一个生成测试数据的示例脚本,展示了MongoDB的灵活性和易用性。
2025-06-11 21:52:11
1823
1
原创 Golang——10、日志处理和正则处理
本文介绍了go-zero框架中的日志处理包logx和Golang正则处理包regexp的使用方法。 logx日志处理部分: 概述logx的特点:统一日志格式、自动切割、多输出模式、链路追踪等 详细说明LogConf配置项及各参数含义 提供常用日志方法示例(Info/Error/Debug等) 演示日志初始化和panic捕获 正则处理部分: 介绍正则表达式基本语法 展示MatchString基本匹配用法 说明MustCompile和FindAllString等常见函数 提供字符串匹配数字等实用示例 全文通过代
2025-06-07 13:22:36
1193
3
原创 Golang——9、反射和文件操作
本文介绍了Go语言中的反射机制和文件操作相关内容。反射部分主要讲解了reflect包的使用,包括: 通过reflect.TypeOf获取变量类型信息,区分Name和Kind 通过reflect.ValueOf获取变量值信息,并进行类型转换和值修改 结构体反射的应用,包括获取字段信息和方法信息 反射可以获取和修改结构体字段值,调用结构体方法 文件操作部分简要提及了读取文件内容的实现方式。反射机制是Go语言中处理动态类型的重要工具,能够实现运行时类型检查和动态调用等功能,为程序提供了更大的灵活性。
2025-06-05 16:28:58
1242
1
原创 Golang——8、协程和管道
本文介绍了Go语言中的协程(goroutine)和管道的使用。协程是轻量级线程,相比传统线程占用内存更少、切换开销更小。文章通过示例演示了如何使用sync.WaitGroup实现主线程等待协程完成,以及如何启动多个协程并行处理任务。在素数统计案例中,协程将计算时间从12秒缩短至3秒。 管道是Go语言中协程间的通信机制,遵循先进先出原则。文章讲解了管道的创建、发送接收数据等基本操作,并指出管道类似队列结构。通过协程和管道的配合,可以实现高效的并发编程。这些特性使Go语言在处理高并发任务时具有显著优势。
2025-06-05 10:36:24
1227
原创 Golang——5、函数详解、time包及日期函数
Go语言函数详解摘要 本文系统介绍了Go语言中函数的定义与使用:1) 函数定义使用func关键字,支持参数类型简写和可变参数;2) 函数支持多返回值,可对返回值命名;3) 通过type可定义函数类型,函数可作为参数和返回值;4) 演示了排序算法、map处理等实例。关键点包括:可变参数用...标识,返回值命名可直接使用,函数类型实现高阶函数特性。全局/局部变量作用域规则与常规语言一致。
2025-06-02 15:38:46
1130
2
原创 Golang——4、数组、切片和map
本文介绍了Go语言中的数组、切片和map的基本概念与使用方式。数组是固定长度的同一类型元素集合,长度是类型的一部分;切片是可变长度的序列,基于数组封装,支持自动扩容。文章详细讲解了数组的定义、初始化、遍历、值类型特性以及多维数组;切片的定义、nil值处理、遍历及基于数组的切片创建。这些基础数据结构在Go语言中具有重要作用,数组提供快速索引,而切片则更加灵活。理解这些概念有助于掌握Go语言的核心数据结构和内存管理机制。
2025-06-02 10:24:22
1096
原创 Golang——3、流程控制语句
本文介绍了Go语言中的主要流程控制语句,包括if-else分支、for循环、for range遍历和switch-case分支。重点讲解了if-else的多种写法、for循环的不同形式(包括无限循环和嵌套循环),以及switch-case的分支处理和穿透特性。此外,文章还通过多个编程练习(如求最大值、阶乘计算、九九乘法表等)演示了这些流程控制语句的实际应用。Go语言的流程控制设计简洁高效,如省略括号、不允许省略花括号等特性体现了其规范化的编程风格。
2025-06-01 10:36:52
766
2
原创 Golang——2、基本数据类型和运算符
Go语言数据类型分为基本类型和复合类型。基本类型包括整型(int8/int16/int32/int64及无符号版本)、浮点型(float32/float64)、布尔型(bool)和字符串(string)。文章通过代码示例演示了各类型的使用方法,包括类型转换、数字字面量语法、浮点数精度问题、布尔型特性以及字符串操作(拼接、分割、索引等)。特别指出浮点数运算存在精度损失问题,建议使用第三方库解决;字符串采用UTF-8编码,支持多行反引号语法和丰富的内置操作方法。
2025-05-30 23:10:26
1559
1
原创 Golang——1、环境搭建与入门
本文介绍了Go语言的基本概念、环境搭建及入门知识。首先,Go语言由Google开发,旨在提供高效、简洁的编程体验,结合了C语言的高性能和Python的开发速度。接着,详细说明了如何下载和安装Go语言,并通过命令行验证安装成功。文章还介绍了如何在VSCode中配置Go开发环境,并创建和运行简单的Go项目。此外,文章对比了Go语言中的打印函数(Print、Println、Printf)及其区别,并介绍了常用的占位符。最后,文章详细讲解了Go语言中变量的声明、初始化、类型推导、短变量声明法以及匿名变量的使用。通过
2025-05-22 20:34:26
938
原创 MySQL——7、复合查询和表的内外连接
本文介绍了SQL查询中的复合查询技术,包括基本查询、多表查询、自连接、子查询和合并查询。基本查询部分涵盖了条件查询、排序、聚合统计等操作,如查询工资高于500或岗位为MANAGER的雇员,并按部门号和工资排序。多表查询部分通过笛卡尔积展示了如何联合查询来自不同表的数据,如显示雇员名、工资及部门名。自连接部分解释了如何在同一张表内进行连接查询,如查询员工的上级领导信息。子查询部分详细介绍了单行、多行、多列子查询的使用场景,如查询与SMITH同部门的员工。最后,合并查询部分介绍了使用UNION和UNION AL
2025-05-19 10:35:21
834
原创 MySQL——6、内置函数
本文介绍了多种内置函数的使用方法,主要包括日期函数、字符串函数、数学函数和其他函数。日期函数部分涵盖了获取当前日期、时间、时间戳、日期时间,以及日期加减、日期差计算等操作。字符串函数部分包括字符集获取、字符串连接、查找、大小写转换、截取、长度计算、替换、去除空格等操作。数学函数部分涉及绝对值、进制转换、取整、格式化、取模、随机数生成等操作。其他函数部分介绍了查询当前用户、MD5摘要、显示当前数据库、空值处理等功能。这些函数在数据处理和操作中具有广泛的应用,能够有效提升开发效率。
2025-05-18 16:52:01
635
原创 MySQL——5、基本查询
本文介绍了数据库表的增删改查(CURD)操作,重点讲解了Create(创建)和Retrieve(读取)部分。在Create部分,详细说明了如何向表中插入数据,包括单行全列插入、多行指定列插入、插入冲突时的更新操作以及替换操作。在Retrieve部分,介绍了如何查询数据,包括全列查询、指定列查询、查询字段为表达式、为查询结果指定别名、结果去重等操作。此外,还详细讲解了where条件的使用,包括比较运算符、NULL值的判断、以及复杂条件的组合查询。通过这些操作,用户可以灵活地管理和查询数据库中的数据。
2025-05-18 14:34:39
1282
原创 MySQL——4、表的约束
表的约束用于确保数据的合法性和正确性,常见的约束包括空属性(NULL/NOT NULL)、默认值(DEFAULT)、列描述(COMMENT)、零填充(ZEROFILL)、主键(PRIMARY KEY)、自增长(AUTO_INCREMENT)和唯一键(UNIQUE KEY)。空属性用于指定字段是否允许为空,默认值用于为字段提供预设值,列描述用于为字段添加注释,零填充用于在数字前补零,主键用于唯一标识表中的记录,自增长用于自动生成唯一值,唯一键用于确保字段值的唯一性。这些约束共同作用,确保数据的完整性和一致性。
2025-05-17 18:39:30
1031
原创 MySQL——3、数据类型
本文详细介绍了MySQL中的数据类型,包括数值类型、字符串类型、日期和时间类型等。数值类型中,重点讲解了tinyint、bit、float和decimal的使用方法及其取值范围,强调了MySQL对数据合法性的严格约束。字符串类型部分,对比了char和varchar的存储方式及适用场景,指出char适合定长字符串,而varchar适合变长字符串。日期和时间类型则简要介绍了其基本概念。通过具体示例,展示了如何创建表、插入数据以及处理数据类型约束,帮助开发者更好地理解和使用MySQL中的数据类型。
2025-05-16 19:28:07
915
原创 MySQL——2、库的操作和表的操作
本文介绍了数据库和表的基本操作,包括创建和删除数据库、字符集和校验规则的设置、校验规则对数据库的影响、数据库的备份与恢复、以及表的创建。通过示例展示了如何查看和修改数据库的字符集和校验规则,并说明了不同校验规则对数据查询和排序的影响。此外,还介绍了如何备份和恢复数据库,以及创建表时的存储引擎选择。这些操作是数据库管理的基础,帮助用户更好地管理和维护数据库系统。
2025-05-16 12:52:15
809
原创 MySQL——1、数据库基础
本文介绍了MySQL数据库的基础知识,包括安装步骤、数据库概念、使用案例、架构与SQL分类以及存储引擎。首先,详细说明了如何在Linux系统上安装和配置MySQL,包括更新软件包、安装MySQL服务、启动服务以及配置mysqld.cnf文件。接着,解释了数据库的基本概念,如MySQL的客户端和服务端、数据库的存储结构及其与文件系统的关系。文章还通过一个简单的案例展示了如何创建数据库、表以及插入和查询数据。
2025-05-15 15:44:24
1271
原创 《深入浅出Git:从版本控制原理到高效协作实战》
但是随着版本的不断增多,维护好版本是很有挑战的。而且各自版本修改的内容我们不一定能记得了。所以就需要版本控制器:记录每次修改以及版本迭代的一个管理系统。目前最主流的就是Git。Git可以控制电脑上的所有格式的文档,对于我们开发人员来说可以控制项目中的源代码文档。
2025-04-27 20:50:56
1061
1
原创 NAT、代理服务、内网穿透
对原始报文中的源IP地址进行替换,替换成途径路由器的WAN口IP的过程,我们称之为NAT(Network Address Translation)网络地址转换。只要发出去消息,出入口路由器NAPT一旦构建,就相当于在各自的路由器打了一个洞,可以让外部通过这个洞口进来,这就叫做内网打洞。很显然,服务器端打印的IP地址和我们的内网IP地址是不一样的。学校里的主机就好像远程访问到了家里的这台主机,这种技术我们称为内网穿透。你的主机访问云服务器,服务器上打印出来的IP地址并不是你的内网IP。
2025-04-17 08:48:18
1488
原创 数据链路层
现在发送数据,在网络层通过目标IP进行路由,查找路由表,找到下一跳或者缺省路由,获取下一跳IP地址,而下一跳和当前主机一定在同一个子网中,当前主机发起ARP请求获取下一跳的MAC地址,然后就向下交付给数据链路层封装MAC帧,转发给下一个主机。上面的图中就是转发给路由器,然后路由器网卡向上交付给数据链路层,进行解包分用,交付给网络层,根据目的IP继续查找路由表,同样找到下一跳IP地址然后发起ARP获取MAC地址,向下封装就可以继续转发。当数据丢包了,或者某个路由器挂掉了,那么发送方长时间得不到应答,传输层TC
2025-04-16 17:21:56
984
原创 网络层IP协议
现在如果陕西省内的一台主机192.168.1.201想要访问www.google.com网站,假设目标IP地址为1.2.3.4,并且假设不存在墙。那么当前主机首先会将目标IP地址与自己的子网掩码255.255.255.0进行按位与,然后跟自己所在的目标网络进行比较,发现不是当前所在的目标网络,该主机也不知道这个IP地址是谁,但是可以肯定的是绝对不在当前子网,所以转发给家用路由器。家用路由器和运营商的出入口路由器在同一个子网中,家用路由器拿着目标IP地址再与WAN口IP的子网掩码进行按位与操作,得到1.2.3
2025-04-16 10:14:52
1155
原创 HTTPS协议原理
加密就是把明文(要传输的信息)进行一系列变换,生成密文。解密就是把密文再进行一系列变换,还原成明文。在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥。如图,今天我的明文数据是123456,经过密钥加密后就变成XXXXYYYY的密文。然后密文经过密钥解密同样也可以还原出明文。数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash函数)对信息进行运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改。
2025-04-15 17:38:32
1183
原创 应用层协议HTTP
虽然说,应用层协议是程序员自己定的,但是已经有大神定义了一些现成的,可供我们直接使用。HTTP协议——超文本传输协议就是其中之一。在互联网世界中, HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如 HTML 文档)。HTTP 协议是客户端与服务器之间通信的基础。客户端通过 HTTP 协议向服务器发送请求,服务器收到请求后处理并返回响应。 HTTP 协议是一个无连接、无状态的协议,即每
2025-04-15 11:35:32
1480
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅