- 博客(87)
- 收藏
- 关注
原创 HTTPS协议
HTTPS是HTTP的安全版本,通过SSL/TLS协议实现加密传输。它采用混合加密机制:先用非对称加密(公钥/私钥)交换对称加密密钥,再用对称加密传输数据。CA机构颁发的数字证书用于验证服务器身份,包含数据摘要和签名。相比HTTP的明文传输(80端口),HTTPS(443端口)提供加密通信,但性能开销较大。核心区别在于HTTPS实现了端到端加密,解决了HTTP的数据安全问题。
2026-04-02 15:40:15
371
原创 Linux——HTTP-cookie&session
本文介绍了HTTP中cookie和session的工作原理。由于HTTP协议的无状态特性,需要通过cookie和session来维持用户状态。服务器通过set-cookie响应头设置cookie信息,客户端保存后会在后续请求的Cookie头中自动携带。为提高安全性,服务器可使用session机制:将用户信息存储在服务端,仅将sessionID通过cookie返回客户端。这样既保持了用户状态,又避免了敏感信息直接暴露。
2026-03-27 05:00:00
427
原创 Linux——TCP通信
本文介绍了TCP通信的基本实现,包含服务端(TcpServer.cc)和客户端(TcpClient.cc)的完整代码示例。服务端流程包括创建socket、绑定地址、监听连接、接受请求和数据交互;客户端流程包括创建socket、连接服务端、发送和接收数据。
2026-03-13 15:28:38
71
原创 Boost-Search搜索引擎项目架构图
由于项目架构图过大,无法上传到CSDN博客中。所以,本博客会进行图片的截图,进行存放,用于后序找实习和春秋招的复习。
2026-03-08 20:48:12
70
原创 Linux——UDP编程&通信
本文介绍了基于Socket的UDP网络通信实现,包含服务器端和客户端的完整代码示例。主要内容包括:1)Socket通信核心函数解析(socket、bind、sendto/recvfrom等);2)UdpServer类的设计与实现,涵盖初始化、启动和停止功能;3)UDP通信的基本流程:创建套接字→绑定端口→收发数据。。
2026-03-08 15:02:07
280
原创 Linux——网络基本概念
本文介绍了Linux网络模型及其关键概念。主要内容包括:1) TCP/IP五层网络模型(物理层、数据链路层、网络层、传输层、应用层)及其功能;2) 网络与系统的关系,指出传输层和网络层被内置到系统内核中;3) 网络协议的本质是结构体/类,通过JSON格式实现跨语言通信;4) 详细说明了序列化(将数据结构转为字符串)和反序列化(字符串还原为数据结构)的过程,并演示了使用Jsoncpp库的具体实现方法。
2026-03-07 15:05:22
432
1
原创 Linux——线程同步
本文探讨了多线程编程中的同步机制,重点讲解了条件变量的使用。通过售票系统示例,展示了如何利用互斥锁+条件变量解决线程饥饿问题。同时介绍了生产者-消费者模型,说明其通过缓冲区解耦生产消费过程,提升系统并发能力。文章强调编程技术需要持续学习,没有捷径可走。最后提供了完整的C语言实现代码,演示了条件变量的创建、等待、唤醒和销毁等操作流程。
2026-03-05 17:25:16
264
原创 Linux——线程互斥,互斥锁
本文探讨了多线程环境下的资源竞争问题及解决方案。通过抢票案例展示了未加保护的共享资源会导致数据异常(如票数为负)。介绍了临界资源、互斥锁等核心概念,详细说明了静态/动态锁的创建、上锁/释放锁的操作流程。针对死锁问题,分析了四个必要条件(互斥、请求保持、非抢占、循环等待),并提出通过破坏任一条件来解决死锁。
2026-02-22 12:26:23
612
原创 Linux——线程异常
线程异常会导致进程崩溃,因为线程是进程的执行分支,共享进程数据但拥有独立栈空间。线程崩溃会触发信号机制终止整个进程,进而使所有线程退出。每个线程创建时分配独立栈空间,存储局部变量和返回地址等私有数据,不同线程的栈完全隔离,这是线程安全的基础。线程私有数据包括线程ID、寄存器和上下文数据等。
2026-02-14 12:08:15
80
原创 Linux——线程概念&控制&创建&等待
文章详细介绍了Linux系统中线程的相关概念和操作。首先阐述了线程作为进程内执行流的基本概念,并通过代码示例展示了线程创建(pthread_create)和执行过程。重点讲解了线程控制的关键函数:线程终止(pthread_exit/pthread_cancel)、线程等待(pthread_join)和线程分(pthread_detach)。特别强调了线程退出时资源管理的注意事项,如不能使用exit()函数,以及返回值必须是堆或全局变量。
2026-02-14 12:05:12
748
原创 Linux——进程间通信
本文介绍了进程间通信的三种方式:匿名管道、命名管道和共享内存。匿名管道适用于有血缘关系的进程,通过pipe()创建,使用文件描述符进行读写操作,具有单向通信、同步机制等特点。命名管道通过mkfifo()创建,以文件形式存在,支持双向通信。共享内存通过创建共享内存空间实现通信,但已被主流方式淘汰。文章还详细说明了匿名管道在进程池中的应用实现,并比较了三种通信方式的特点,指出匿名管道和命名管道是目前的主流方法。
2026-02-11 14:18:05
341
原创 Linux——基础IO&链接&动静态库
本文介绍了Linux系统中基础IO操作、文件描述符、软硬链接以及动静态库的关键概念。重点解析了FILE结构体的组成、用户/内核缓冲区的刷新策略,以及文件描述符如何从底层系统调用封装为上层FILE指针的过程。详细对比了软硬链接的特性与区别,指出硬链接不能用于目录以避免路径解析死循环。最后深入讲解了动静态库的生成与使用方式,包括静态库(.a)的独立性和动态库(.so)的运行时加载特性,并提供了相关编译指令和环境配置方法。
2026-02-11 14:14:04
800
原创 Linux——进程信号
本文介绍了Linux进程信号的处理机制,包括信号的种类、产生方式、保存机制和处理流程。信号可分为分时系统信号(1-31)和实时系统信号(34-64)。信号可通过键盘快捷键、系统命令(kill)或函数(kill/raise/abort/alarm)产生,也可由硬件异常(除0、野指针访问)或子进程退出触发。信号保存涉及block(阻塞)、pending(未决)和handler(处理)三张表。信号处理需要用户态和内核态切换。
2026-02-08 13:20:07
1302
原创 Linux——基础IO&软硬链接
介绍了Linux系统中的文件IO机制,重点解析了C语言中FILE结构体的组成及其关键成员:文件状态标志、读写缓冲区指针和文件描述符。阐述了用户缓冲区的四种刷新策略,并解释了文件内核缓冲区的存储结构。通过代码示例展示了文件描述符到FILE*指针的封装过程。对比分析了软链接和硬链接的区别:软链接存储目标路径,类似快捷方式;硬链接是文件别名,会增加引用计数。特别指出硬链接不能用于目录,以避免路径解析死循环问题,最后介绍了取消链接的unlink命令操作。
2026-02-08 13:08:53
566
原创 Linux——进程创建&等待&退出&替换
进程创建(fork())、进程退出(return和exit/_exit)、进程等待(wait/waitpid)以及进程程序替换(exec系列函数)。重点解析了waitpid的参数使用和状态信息获取,并详细说明了exec函数族的功能差异。文章强调技术学习需要认知突破而非捷径,最后通过execl函数示例展示了进程替换的实际应用。这些基础但关键的进程控制操作是Linux系统编程的重要内容。
2026-02-06 11:36:27
515
原创 Linux——虚拟地址空间
虚拟地址空间作为进程地址空间,通过页表实现与物理内存的映射,保护数据安全并实现进程间资源共享。fork操作使子进程继承父进程的地址空间和页表,实现代码数据共享。虚拟地址空间的作用包括:保护物理内存数据、实现进程与内存解耦、为进程提供有序内存视图。这种机制是计算机系统实现进程隔离和内存管理的关键技术。
2026-02-05 11:43:50
83
原创 Linux——环境变量PATH
。PATH定义了系统查找可执行文件的路径顺序,通过export命令可以将自定义程序路径添加到PATH中,实现直接运行程序而无需指定完整路径。文中还演示了使用C语言putenv函数修改环境变量的代码示例,并指出进程启动时会获取命令行参数表(内存级)和环境变量表(文件级)两张关键表。
2026-02-05 11:32:03
98
原创 Linux——命令行参数&环境变量
在C语言中,main函数可以接收命令行参数(argc,argv)和环境变量(env)。通过env命令可以查看所有环境变量,echo $name可查看指定变量。文中提供了C语言代码示例,展示了如何通过程序获取所有环境变量(env[])和使用getenv()函数获取特定环境变量。环境变量包含系统配置信息,在Bash启动时自动加载。这些知识对Linux系统编程和开发环境配置具有重要意义。
2026-02-04 10:45:21
464
原创 Linux——孤儿进程&进程调度&大O(1)调度
文章主要讲解了操作系统中的进程管理相关概念。首先介绍了孤儿进程的形成及处理机制,当父进程先退出时子进程会被init/systemd进程收养。其次解释了进程优先级概念,包括PRI和NI值的含义。然后区分了并发(单CPU)和并行(多CPU)两种执行模式。接着阐述了进程切换时CPU上下文保存与恢复的机制。最后详细分析了Linux内核的O(1)调度算法实现,重点说明了runqueue结构及其active/expired指针交换机制。
2026-02-03 11:43:06
630
原创 GUI自动化测试[4]——菜单和列表控件操作
介绍了pywinauto库中键盘操作和控件操作的基本使用方法。键盘操作部分详细说明了type_keys()函数的参数及特殊键输入格式,包括组合键、重复键和转义字符的处理。控件操作部分涵盖菜单控件(items()、item_by_index()、item_by_path())和列表控件(get_items()、item_count()、get_item())的常用方法,并提供了完整代码示例。这些方法可用于自动化Windows应用程序的测试和操作,提高工作效率。
2026-02-02 14:41:52
686
原创 GUI自动化测试[3]——控件&数鼠标操作
介绍了pywinauto库中常用的鼠标操作函数。主要包括click_input()、right_click_input()和double_click_input()三种基本点击操作,可通过坐标参数(coords)精确定位。同时介绍了texts()获取文本信息、rectangle()获取元素坐标范围以及mid_point()计算中点坐标的方法。此外还详细说明了mouse模块的功能,包括点击、滚动、移动等操作,并提供了鼠标滚轮滚动示例。这些方法可用于自动化测试中精确控制鼠标行为,实现对Windows应用程序
2026-01-31 15:11:56
737
原创 GUI自动化测试[2]——定位控件&等待
介绍了pywinauto库中控件定位与等待操作的实现方法。主要内容包括:1)使用child_window()函数精确定位子控件,可通过control_type、auto_id等参数提高定位精度;2)wait/wait_not()函数用于等待控件状态变化,支持exists、visible等多种状态检测;3)wait_until()函数通过定时检查自定义函数返回值实现条件等待。
2026-01-31 15:04:46
385
原创 GUI自动化测试[1]——pywinauto
使用pywinauto库进行Windows GUI自动化测试的基本方法。主要内容包括:1) pywinauto的安装和两种底层技术(win32/uia);2) 核心操作流程:启动程序(start)、连接程序(connect)和定位窗口(window);3) 窗口常用操作方法(最大化、最小化、关闭等);4) 使用print_control_identifiers()获取窗口控件信息。。
2026-01-30 18:20:24
686
原创 Pytest-order插件
通过安装pytest-order插件,可以使用绝对顺序(@pytest.mark.order(数字))或相对顺序(@pytest.mark.first/last等标记)来控制执行优先级。绝对顺序数字越小优先级越高,且跨文件也适用;相对顺序则需要先在pytest.ini中配置标记说明。两种方式都能灵活调整测试执行流程,但相对顺序使用时需注意配置标记以避免告警。
2026-01-29 11:31:49
447
原创 进程——创建&组织&状态
本文介绍了计算机进程相关知识,包括冯诺依曼体系结构、操作系统概念、进程组成(task_struct+代码/数据)及创建过程。重点解析了进程管理的"先描述后组织"原则、查看指令(top/psajx)和fork()创建方法,并给出创建10个子进程的代码示例。详细阐述了Linux内核中的7种进程状态(R/S/D/T/t/X/Z),特别区分了运行、阻塞、挂起状态,以及浅度/深度睡眠差异。最后强调僵尸进程(Z)不回收会导致内存泄漏的问题,为进程管理提供了完整的技术框架。
2026-01-28 12:02:05
882
原创 Linux基础开发工具
Linux系统下常用的基础开发工具,包括包管理器(yum/apt)、vim编辑器、gcc/g++编译器、自动化构建工具(make/Makefile)、Git版本控制器以及gdb/cgdb调试器。重点讲解了各工具的安装使用方法、常用命令和配置技巧,如vim的三种模式切换、gcc编译流程、makefile编写规范、Git版本控制流程以及代码调试技巧等。
2026-01-26 13:22:36
749
原创 Linux基础指令——【2】
Linux常用命令的使用方法,包括文件查看(head/tail)、管道(|)、文件查找(find/grep)、系统监控(top)、压缩解压(zip/unzip)、指令定位(where/whereis)、文件传输(rz/sz)、系统信息查询(uname/lsb_release)、系统重启(reboot/shutdown)、用户切换(su)和文件类型查看(file)等命令。每个命令都配有具体用法示例,如head/tail查看文件首尾内容,zip压缩文件需加-r选项处理目录等。文章强调编程学习需要认知突
2026-01-24 11:48:11
700
原创 接口自动化测试——【3】
YAML是一种简洁的数据序列化语言,支持多种数据类型,与JSON格式相互转换。JSON Schema用于验证JSON数据结构,通过validate()函数进行校验。logging模块提供了灵活的日志记录功能,可设置不同级别输出到文件或控制台。最后介绍了使用allure生成可视化测试报告的方法,包括生成报告文件和服务启动命令。这些工具和技术为开发者提供了高效的数据处理、验证和调试手段。
2026-01-21 17:29:27
863
原创 接口自动化测试——【2】
pytest框架中的参数化测试和fixture功能。主要内容包括:1)参数化测试的多种实现方式,包括在用例、类、文件中使用参数化,以及自定义数据源;2)fixture模块的使用方法,包括代替__init__、嵌套调用、yield语法、作用域控制(function/class/module/session)、自动执行(autouse)和参数传递(params)。这些功能可以简化测试代码,提高测试效率,实现测试数据的复用和测试环境的统一管理。
2026-01-17 12:27:17
797
原创 接口自动化测试——【1】
本文总结了接口自动化测试的关键知识点,包括测试流程设计、requests模块使用、pytest框架应用和断言方法。主要内容:1. 接口自动化测试流程:从需求分析到用例设计、环境搭建和报告生成;2. requests模块详解:三种请求方式(get/post/request)及响应对象属性;3. pytest框架使用:命名规则、命令参数、配置文件和前后置操作;4. 断言方法:基本数据类型、数据结构、函数及接口返回值的多种断言方式。
2026-01-15 16:48:52
867
原创 Linux基础指令——【1】
本文介绍了Linux基础指令的使用方法,包括目录操作(ls、pwd、cd)、文件操作(touch、stat、mkdir、rm)、通配符和别名(alias)等。重点讲解了重定向操作(>、>>、<)和文件移动/重命名(mv)。文章强调技术学习需要认知突破,没有捷径可走。通过具体示例演示了如何创建、查看、删除文件和目录,以及如何修改文件属性和路径操作。这些基础指令是Linux系统操作的核心,掌握它们对提升编程能力至关重要。
2026-01-12 12:57:34
731
原创 自动化测试——实践【3】
本文总结了Selenium自动化测试中的关键操作技巧。主要内容包括:1) 弹窗处理,使用alert接口进行确认/取消操作;2) 三种等待机制(强制/隐式/显示等待)的区别与应用场景;3) 浏览器导航操作和文件上传的实现方法;4) 浏览器参数设置,包括无头模式配置和页面加载策略选择。文章强调技术学习没有捷径,需要通过实践掌握这些核心技能,其中显示等待和隐式等待的效率差异、文件上传的特殊处理方式以及页面加载策略的选择都是重点内容。
2026-01-11 12:12:18
804
原创 自动化测试——实践【2】
本文介绍了Web自动化测试中元素操作和窗口管理的基本方法。主要包括:1.元素操作:使用click()点击、send_keys()输入、clear()清空内容、text获取文本信息;2.页面信息获取:通过title获取标题、current_url获取URL;3.窗口管理:使用window_handles获取所有窗口句柄,switch_to.window()切换窗口,以及窗口大小控制方法如maximize_window()最大化窗口等。这些操作为Web自动化测试提供了基础功能支持。
2026-01-10 11:41:23
315
原创 自动化测试——实践【1】
文章探讨了自动化测试的相关问题,指出自动化测试不能完全取代人工测试,且仅能"一定程度上"而非"大幅度"降低工作量。介绍了自动化测试的分类(接口自动化和UI自动化)以及Selenium、WebDriver和浏览器的协作关系。详细说明了WebDriver对象创建、网页访问方法和元素定位技术(CSS选择器和XPath)。最后强调技术学习没有捷径,鼓励持续实践成长。文章包含代码示例和实用建议,适合测试人员参考学习。
2026-01-09 17:30:47
907
原创 自动化测试——理论
本文探讨了软件测试相关理论与面试问题。首先分析了测试开发工程师与测试工程师的区别,指出前者更侧重开发测试工具提升效率。其次解答了测试人员需要学习开发知识的原因,包括编写测试脚本和理解代码逻辑。最后介绍了白盒、黑盒、灰盒三种测试方法的定义及应用场景,强调测试人员主要使用黑盒测试。文章为测试岗位求职者提供了理论指导和面试回答思路,涵盖岗位差异、技能要求和测试方法论等核心内容。
2026-01-08 13:22:04
267
原创 《Python入门》1-变量&常量&运算符
本文摘要:Python编程基础要点解析,涵盖变量与常量定义、数据类型(int/float/str/bool)、特殊运算符(//地板除、幂运算)、动态类型特性及注释方法。通过代码示例演示了Python与C语言的核心差异,如变量重赋值可改变类型、除法运算保留小数等特性。特别讲解了/与//运算符的区别,以及运算符的三种使用场景(开方/次方/分数运算)
2025-12-01 05:00:00
959
1
原创 C++【1】---基础入门
本文介绍了C++基础语法中的几个重要概念。首先讲解了命名空间(namespace)的作用和使用方法,包括避免命名冲突、嵌套使用等特性。其次介绍了using关键字的全展开和部分展开用法。文章还讲解了C++的输入输出流、缺省参数、函数重载等特性,以及引用的概念、const引用和指针与引用的区别。最后说明了内联函数(inline)的作用和nullptr的用法。这些基础知识点为后续深入学习C++编程奠定了基础,是C++入门的重要环节。
2025-07-23 00:55:52
1210
5
原创 C语言之旅【8】---编译&链接&预处理
本文详细讲解了C语言程序从源代码到可执行程序的完整编译过程。首先介绍了翻译环境和运行环境的区别,重点分析了翻译环境中的预处理、编译和链接三个阶段。预处理阶段包括头文件展开、宏替换、处理预处理指令等操作;编译阶段涉及词法分析、语法分析和语义分析;最后通过汇编和链接生成可执行文件。文章还详细讲解了#define宏定义、#和##运算符、条件编译等预处理功能,以及符号表的作用和头文件包含的两种方式。整个编译过程通过流程图清晰展示,帮助读者理解程序编译的完整机制。
2025-06-30 06:00:00
1136
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅