自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux: pthread库---posix线程创建使用接口&&状态

本文介绍了Linux线程编程的核心概念与实现。主要内容包括:1)线程创建与终止,通过pthread_create创建线程,使用pthread_exit或return退出,线程异常终止返回(void*)-1;2)线程等待与资源回收,pthread_join用于获取线程退出状态,pthread_detach可使线程自动释放资源;3)Linux线程实现原理,采用轻量级进程(LWP)机制,通过NPTL线程库封装;4)线程取消机制,pthread_cancel通过设置标记终止线程。文章通过代码示例演示了线程创建、终止

2025-12-26 18:48:02 766

原创 Linux: posix标准:线程互斥&& 互斥量的原理&&抢票问题

本文讨论了Linux线程互斥中的关键概念和技术。首先介绍了临界资源、加锁保护和临界区的概念,解释了互斥机制如何确保同一时间只有一个执行流访问共享资源。通过抢票问题的案例演示了多线程并发操作共享变量时可能出现的数据不一致问题,并分析了其根本原因在于非原子操作和线程切换。随后详细讲解了互斥量(mutex)的工作原理及其POSIX实现pthread_mutex,包括初始化、加锁解锁和销毁等操作。最后针对线程饥饿问题提出了两种解决方案:使用sched_yield()主动放弃时间片,以及通过设置互斥锁属性实现公平调度

2025-12-26 16:34:54 695

原创 C++11: 自定义异常&&标准异常体系&&回顾c异常处理方式

摘要:本文系统讲解了C++异常处理机制,重点分析了try-catch捕获原理、栈展开过程及执行流跳跃问题。通过自定义异常体系示例,展示了如何构建多态异常类层次结构。文章指出异常处理相比错误码的优势在于自动展开调用栈,但存在内存泄漏风险,建议结合RAII机制使用。同时对比了C++标准异常体系,并以vector的at()和operator[]为例说明异常安全性差异。最后强调在生产环境中,异常处理与日志记录对系统稳定性至关重要,需在主函数统一捕获异常以避免进程异常终止。

2025-12-22 14:44:03 910

原创 C++11:仿函数&&lamda表达式&&bind&&函数指针

本文系统梳理了C++中可调用对象的发展历程和使用方法。首先介绍了函数指针及其typedef封装方式,通过qsort示例展示回调函数应用。随后讲解了仿函数(函数对象)的实现原理,通过重载operator()实现类对象像函数一样调用,并演示了在sort算法中的应用。重点剖析了lambda表达式的语法结构、捕获方式(值捕获/引用捕获)、mutable关键字作用及其底层实现(编译器生成的匿名仿函数类)。接着介绍了function包装器统一管理不同类型的可调用对象(函数指针、仿函数、lambda),通过逆波兰表达式案

2025-12-21 17:00:56 855

原创 C++11:可变参数包的那些事

C++可变参数包使用指南 摘要:C++11引入的可变参数模板允许函数接收任意数量参数。通过模板参数包(Arg...)和函数参数包(args...),可以实现灵活的参数传递。使用时需注意:1)参数包不能直接索引访问;2)可通过递归或表达式展开获取参数;3)使用sizeof...运算符获取参数数量;4)可通过tuple存储参数包内容。典型应用包括递归处理参数(需设置终止条件)和表达式展开(如数组初始化)。可变参数包为C++提供了类似其他语言中可变参数的功能,同时保持类型安全。

2025-12-21 01:46:57 610

原创 linux:----进程守护化(Daemon)&&会话的原理

键盘输入快捷键 ctrl+c ctrl+z操作系统的进程调度算法推荐的: 操作系统调度算法3——CFS,完全公平调度器 - 知乎 调用你的监控代码: 1.3 会话&&进程组 内核数据结构的会话就是一个用来管理的逻辑结构: 内核数据结构的session: mytest成为前台进程以及被键盘输入 ctrl+c 杀死 我收集了一些管理进程组的一些命令 如下: 实验: 杀死进程组 : kill -9 -pgid三 . 深入理解会

2025-12-13 14:22:14 1334 1

原创 linux: gdb调试器

本文介绍了Linux命令行调试工具GDB的基本使用方法。首先说明了GDB在纯命令行环境中的重要性,并解释了core文件的作用及其配置方法。通过一个存在除零错误的示例代码,详细演示了GDB调试流程:包括编译时添加-g选项、设置断点、运行程序、单步执行(step/next)、查看变量(print/watch)、处理库函数跳转(finish)等核心操作。文章还对比了逐语句(s)和逐过程(n)的区别,并提供了常用调试命令速查表,如查看断点(infob)、删除断点(delete)、查看调用栈(bt)等。最后指出GDB

2025-12-12 19:48:50 602

原创 http的content-text对照表

接口返回 JSON → 用(推荐)或;返回纯文本 → 用text/plain;;返回图片 / 二进制文件 → 用对应 image/* 或 application/octet-stream(不加 charset)。

2025-12-11 18:20:56 724

原创 C/C++ ---条件编译#ifdef&&如今系统编程中void*的还能用?&&NULL何去何从?

本文摘要: 条件编译指令#ifdef和#ifndef根据宏定义决定代码编译,常用于调试模式切换和头文件保护。C++11中NULL定义为0(C语言为(void*)0),由于类型强匹配和重载问题引入nullptr作为空指针常量。C++中void需显式转换,但void参数接口仍可用(如线程库)。

2025-12-11 14:26:38 598

原创 C++ 11--》初始化

本文探讨了C++初始化的演变过程及其优化机制。首先分析了C++98与C++11在初始化方面的差异,指出C++98仅支持数组和结构体的花括号初始化,而C++11扩展了花括号初始化的适用范围,使其可用于所有内置类型和自定义类型。重点介绍了C++11引入的initializer_list机制,该机制通过编译器自动将花括号内容转换为initializer_list对象,实现了更灵活的初始化方式。文章还通过实例展示了STL容器如何利用initializer_list实现简洁的初始化语法,并比较了全局变量和栈变量在未初

2025-12-10 23:13:18 1017

原创 linux:Tcp客户端服务端 (CS模式)实现简单网络的翻译服务

本文介绍了基于TCP协议的服务器与客户端通信实现,重点讲解了网络翻译功能的开发过程。文章首先阐述了TCP通信的基本原理和服务器设计思路,包括线程池和日志组件的实现。然后详细说明了客户端重连机制和服务端任务处理流程,通过封装任务类实现业务解耦。特别介绍了利用文件流和unordered_map构建的翻译器核心功能,将其与网络通信结合实现网络版翻译服务。最后提及了守护进程化使服务能在后台持续运行。整个系统采用C++实现,展示了从基础通信到业务功能整合的全过程,为网络服务开发提供了实用范例。

2025-11-25 17:08:56 1114

原创 linux: pthread库的使用和理解

本文介绍了pthread线程库的基本使用方法和相关概念。主要内容包括:1)线程创建和回收,通过pthread_create和pthread_join实现,重点讲解了线程工作函数的设计和使用void*传递任意类型参数;2)线程的三种退出方式:正常返回、pthread_exit主动退出和pthread_cancel取消线程;3)线程的特性:同一进程下的轻量级进程、共享地址空间但具有独立局部存储区域;4)线程执行的特点,包括在IO密集型任务中的优势以及同步互斥问题的必要性。文章通过代码示例详细演示了线程创建、参数

2025-11-24 21:56:01 832

原创 函数栈帧的创建销毁 进阶

本文通过Visual Studio 2022调试环境,结合反汇编代码深入分析了函数栈帧的创建与销毁过程。文章首先介绍了必要的预备知识,包括CPU寄存器(如rsp、rbp)的作用、进程地址空间布局以及常见汇编指令(push、pop、mov等)的功能。随后详细图解了函数栈帧创建和销毁的完整流程,展示了参数传递、局部变量存储和返回地址处理等关键步骤。通过实际代码示例,文章还探讨了递归调用的栈帧机制及其与时间复杂度计算的关系,并指出递归可能导致栈溢出的风险。最后,文章为读者进一步理解可变参数、宏函数等高级主题提供了

2025-11-21 20:26:11 1279

原创 linux: udp服务器与客户端 CS 基于ipv4的地址结构体

摘要:本文介绍了UDP服务器和客户端的实现方法。服务器端需创建套接字文件、绑定IP地址结构体(支持多网卡)、转换网络字节序,并处理线程安全问题。使用recvfrom和sendto进行数据收发,封装成类实现命令执行功能。客户端无需绑定地址,直接通过sendto发送请求给服务端。文章详细说明了IPv4地址结构体初始化、网络字节序转换接口(inet_pton/ntop)的使用,并提供了完整的代码实现方案,包括服务端对客户端命令的执行与结果返回功能。

2025-11-14 21:13:00 1449 5

原创 linux: Mysql安装

本文介绍了在CentOS 7.6系统中卸载MariaDB/MySQL并重新安装MySQL 5.7的详细步骤。首先通过systemctl停止服务并用rpm删除相关软件包,然后从MySQL官网下载对应的rpm包添加yum源。安装过程中需处理GPG密钥问题,验证安装成功后启动mysqld服务。最后配置my.cnf文件设置端口和字符集,并开启服务自启动。整个过程涵盖了服务管理、软件安装和基本配置等关键操作。

2025-11-14 17:58:42 912

原创 linux: centos 软件包管理 yum源

本文介绍了Linux系统中yum工具的使用方法,包括软件安装/卸载、扩展源配置及国内镜像源替换。主要内容:1. yum基本操作:使用yum install/remove命令进行软件安装和卸载,可通过yum list查看可用软件包;2. 扩展源配置:安装epel-release扩展源及阿里云镜像配置;3. 提供国内主流镜像站列表(阿里云、清华、中科大等);4. 详细说明CentOS7系统更新yum源的完整流程:备份原配置→下载新源→清除缓存→系统更新→验证新源。文章还特别强调使用国内镜像源可显著提升软件下载速

2025-11-05 14:33:23 1073

原创 linux:----- 操作系统基本的运作&&深入理解一切皆文件的本质

本文从冯诺依曼体系结构出发,深入解析了Linux内核的设计原理。首先阐述了计算机硬件层面的运作机制,说明CPU与内存、外设的交互方式。接着重点分析了Linux"一切皆文件"的设计理念:通过虚拟文件系统(VFS)将各类硬件资源抽象为struct_file结构体统一管理。文章详细讲解了用户态与内核态系统调用的关系,并以磁盘文件和socket文件为例说明读写过程。最后指出Linux内核设计中隐含的面向对象思想,如通过函数指针实现多态等。全文采用"问题-解决"的逻辑闭环,帮助

2025-11-03 22:15:20 977

原创 C++:STL--》 map&&set以及multset&&multmap的使用

本文主要介绍了C++ STL中的关联容器set和map。set存储唯一元素,基于红黑树实现,元素有序且不可修改;map存储键值对,同样基于红黑树,按键排序且键不可修改。两者都支持高效的查找(O(logn)),但不支持直接修改键值。文章详细讲解了它们的构造函数、迭代器、插入删除操作,并对比了set和map的特性差异。此外还介绍了允许键重复的multiset和multimap,说明了它们在处理重复数据时的应用场景和操作方法。最后总结了这些关联容器在数据去重、排序统计等方面的优势。

2025-10-20 17:08:38 981

原创 C++ -->STL 搜索平衡二叉树 AVL树

本文介绍了平衡二叉搜索树(AVL树)的设计与实现。主要内容包括:1. AVL树的由来:解决普通二叉搜索树在极端情况下退化为链表的问题,通过严格控制节点左右子树高度差(不超过1)来保持平衡;2. 核心实现策略:使用平衡因子(右子树高度-左子树高度)检测不平衡,通过四种旋转操作(左旋、右旋、左右双旋、右左双旋)调整树结构;3. 详细代码实现:包括节点三叉链结构、插入逻辑、平衡因子更新规则以及旋转操作的具体实现。文章通过大量图示分析了不同不平衡情况的处理方案,并提供了完整的C++代码实现和测试用例。AVL树通过严

2025-10-09 18:31:13 1099 1

原创 C++---》stl : pair 从使用到模拟实现

本文介绍了C++标准库中的pair模板类,它用于将两个不同类型的值组合成一个对象。主要内容包括:1. pair的基本概念,通过first和second公开成员变量访问两个值;2. 三种构造方式:默认空参构造、值初始化构造和拷贝构造,其中拷贝构造支持不同类型pair间的转换;3. 赋值操作符重载的实现原理;4. make_pair函数的作用及实现,它能自动推导类型;5. pair类的模拟实现代码,解决了常量成员初始化等问题。文章通过具体代码示例,详细解析了pair类的各种特性和使用方法。

2025-10-08 15:12:34 1141 4

原创 计算机-网络基础

计算机网络是指将地理上分散的、具有独立功能的计算机或设备(如手机、服务器、打印机),通过通信线路(网线、无线信号)和通信设备(路由器、交换机)连接起来,并借助网络协议(如 TCP/IP)实现数据传输和资源共享的系统。以 “你在电脑上打开你输入域名 “”,浏览器先向DNS 服务器发送解析请求,得到百度服务器的 IP 地址(如 180.101.49.11)。浏览器通过TCP 协议与百度服务器进行 “三次握手”,建立可靠连接。浏览器通过HTTP/HTTPS 协议。

2025-10-07 18:30:28 821 1

原创 C++ 特性 --内部类 &&模板类中取出来类类型问题

本文介绍了C++内部类的特性及模板类中内部类的使用注意事项。主要内容包括:1)内部类作为外部类的友元可直接访问其私有成员,私有内部类仅限外部类使用;2)通过sizeof验证内部类独立于外部类;3)在模板类中使用内部类时,需使用typename关键字显式声明类型,这是因为模板实例化前编译器无法确定内部类的性质(类型或静态变量)。文章通过代码示例展示了非模板类和模板类中内部类的不同访问方式,并解释了编译器处理模板实例化的机制。

2025-09-29 21:57:00 425 1

原创 C/C++--->搜索二叉树的实现

本文介绍了搜索二叉树的基本实现,重点讲解了插入、删除和查找操作。搜索二叉树通过左子树所有节点小于根节点、右子树所有节点大于根节点的规则,实现高效搜索(平均O(logn))。文章详细分析了插入和删除操作的算法思路,包括递归和非递归实现方法,并特别强调了删除节点后如何调整树结构以保持特性。此外还介绍了中序遍历、拷贝构造和析构等辅助功能。最后指出极端情况下(如单边树)搜索效率会退化为O(n),为后续平衡二叉树的学习做铺垫。

2025-09-26 12:14:44 1016

原创 进程通信之---命名管道 &&客户端|服务端小项目来迅速理解!

本文介绍了Linux系统中的mkfifo系统调用,用于创建命名管道(FIFO)特殊文件。通过对比匿名管道和命名管道的区别,阐述了命名管道作为进程间通信机制的特点:需同时打开读写端才能操作,否则会阻塞。文章详细解析了管道的实现原理,指出其相比普通文件的优势在于数据同步和内存级操作。通过一个客户端-服务端通信项目示例,展示了如何使用mkfifo、open、read、write等系统调用实现进程间通信。项目包含comm.hpp头文件封装管道操作,以及服务端和客户端的实现代码,演示了命名管道的实际应用场景和通信效果

2025-09-20 12:44:07 1184 1

原创 深入理解 C 语言的可变参数列表&&宏函数处理可变参数:从栈帧原理到实战应用​

本文深入解析C语言可变参数列表的实现原理与使用规范。首先从x86架构下的栈帧结构出发,揭示了可变参数通过固定参数定位、从右向左压栈的原理。文章详细介绍了va_start、va_arg、va_end宏的工作机制,强调类型匹配和内存管理的重要性。通过求和函数和格式化日志两个实战案例,展示了可变参数的实际应用,特别介绍了vsnprintf的安全使用方法。最后提出最佳实践建议:保证类型精确匹配、管理完整生命周期、明确结束条件,并优先使用安全函数。理解这些原理能帮助开发者安全高效地使用这一强大特性。

2025-09-20 09:57:38 1129

原创 C 语言宏函数进阶:逗号表达式与 GNU 拓展的妙用

本文探讨了C语言宏函数的进阶技巧,重点介绍了逗号表达式和GNU拓展的应用。宏函数通过预处理阶段的文本替换实现零调用开销,但也存在类型检查缺失、优先级和副作用风险等问题。逗号表达式可在宏中实现多步操作并返回结果,而GNU拓展的语句表达式({...})则突破了标准C的限制,允许在宏内声明变量。文章还讲解了用do-while(0)包裹多语句宏的安全技巧,并分析了宏函数的优缺点:高效但可维护性差,建议在常量定义等场景考虑替代方案。这些技巧能帮助开发者更好地驾驭宏函数,平衡性能与代码质量。

2025-09-19 12:35:20 1103

原创 C/C++编写规范之-----传参

C++函数参数传递最佳实践摘要:小型数据(基本类型、小型聚合)优先传值,避免不必要的引用开销;大型对象(容器、自定义类)应传const引用防止拷贝;需要修改外部变量时使用非const引用。指针仅用于允许空值或需修改指向的场景。输入参数加const确保只读,迭代器建议传值。避免复杂引用嵌套,参数顺序遵循"输入在前输出在后"原则。核心原则:效率优先(小传值大传引用),安全保证(优先引用+const),语义清晰(明确输入输出)。特殊场景下需注意const指针引用的绑定规则,防止临时对象问题。

2025-09-17 20:47:02 970

原创 云服务器学习linux----&&xShell远程学习基本指令入门

本文介绍了Linux云服务器的配置与基础操作指南。主要内容包括:1)购买云服务器并通过Xshell远程连接;2)Linux入门知识,包括操作系统概念、yum软件包管理器的使用;3)用户权限管理,包括创建普通用户和配置sudo权限;4)常用Shell命令详解,如文件操作(ls、cd、mkdir等)、文本处理(vim、cat等)、查找命令(find、grep)以及压缩解压工具(zip、tar)。文章还涵盖了时间相关命令(date、cal)和日志查看技巧,为Linux初学者提供了全面的操作指引。

2025-09-14 17:10:06 1037

原创 一个文件被打开io流和不打卡 inode

有了这些我们可以很轻松的阐述关于创建文件和删除文件的过程,创建一个文件 通过块组描述符(确定inode和block块的起始位置) 然后遍历inode表和block表找到空于位置进行存入数据。当我们想删数据的时候,又可以通过innode表找到修改我们的innode位图和块位图即可 不需要对数据块修改 因为删除只需要覆盖即可,对磁盘分区 ,最小的文件单位块组,快组内部已经划分好区域,巴拉巴拉,总之,每次使用数据,以操作系统的处理都是块级的,而这些块内部的区域已经划分好了,所以需要提前对内存格式化。

2025-09-05 16:03:40 418

原创 编译后视角的运算(关于中,后缀(逆波兰)表达式的计算)

本文介绍了中缀表达式与后缀表达式(逆波兰表达式)的转换及求值方法,并探讨其与汇编语言的关系。主要内容包括:1)中缀表达式适合人类阅读但计算机难以处理优先级;2)后缀表达式通过栈结构实现二元运算,符合计算机指令特性;3)详细算法实现中缀转后缀(考虑运算符优先级和括号)及后缀求值(数字入栈、符号出栈计算);4)完整项目代码展示了控制台计算器的实现流程,包含字符串解析、表达式转换和求值功能。该技术模拟了编译器将源代码转为机器指令的过程,是理解程序底层运算机制的重要基础。

2025-09-02 09:52:59 782 2

原创 vim的使用

Vim是一款功能强大的多模式文本编辑器,掌握其核心功能可大幅提升编程效率。文章介绍了Vim的三种基本模式:普通模式(移动光标、操作文本)、插入模式(编辑内容)和底行模式(执行命令)。重点讲解了普通模式下的操作技巧:光标移动(hjkl、G/gg)、删除(x/dd)、复制(yy/p)、撤销(u)等命令,以及多文件编辑的分屏操作(split/vsplit)。建议按需学习,通过实践掌握常用功能,如代码块注释(Ctrl+v批量操作)和缓冲区管理(:b切换文件)。Vim学习重在积累,遇到问题及时查阅文档即可逐步精通。

2025-08-22 23:33:56 1118 8

原创 linux----进度条实现和gcc编译

本文介绍了在Linux下实现进度条的方法及C程序编译过程。首先讲解了C程序从源代码到可执行文件的四个阶段:预处理、编译、汇编和链接。接着详细阐述了进度条的实现原理,包括缓冲区概念、格式化输出控制(如\r、\n等)和颜色处理(ANSI转义序列)。重点展示了如何利用方块字符"█"消除进度条间隙,并提供了完整的多文件实现方案(包含processBar.c、processBar.h和Main.c),最终实现了一个带颜色和旋转指示的流畅进度条。文章还强调了makefile配置和UTF-8多字节字符

2025-08-22 23:28:38 828 1

原创 C++:stl-> list的模拟实现

本文详细介绍了C++中list容器的模拟实现过程。首先阐述了list底层采用双向链表结构的特点,重点讲解了迭代器类的封装实现,包括++、--、解引用等操作符重载。通过引入模板参数优化迭代器设计,实现了const和非const迭代器的统一处理。随后展示了insert/erase等核心操作的实现逻辑,以及push_back/pop_front等常用接口的复用实现。最后介绍了构造函数、拷贝构造和赋值重载的现代写法,利用swap技巧简化代码。全文强调链表操作中头节点的特殊性和迭代器封装的重要性,体现了泛型编程在ST

2025-08-15 17:35:31 1409 4

原创 常量引用 和非常量引用 左值和右值

左值和右值的本质区别在于内存地址和生命周期。左值是有明确地址、可修改的持久对象;右值则是临时、不可修改的短生命周期表达式结果。当const引用绑定右值时,编译器会创建临时变量存储右值值,并延长其生命周期。const修饰控制的是访问权限而非类型,权限只能缩小不能放大:非常量引用只能接受左值,而常量引用可接受左右值。理解引用类型时需结合const修饰位置,如const char* const&表示对常量指针的引用。字符串字面量等右值会引发临时变量创建,其引用类型需匹配临时变量的const属性。

2025-08-14 13:23:58 966 5

原创 C++-->stl: list的使用

本文详细介绍了C++标准库中的list容器,主要包含以下内容:1. list的基本特性:底层采用双向链表结构,支持O(1)时间复杂度的任意位置插入删除,但不支持随机访问;2. list的构造方法:包括默认构造、fill构造、迭代器范围构造和拷贝构造;3. 迭代器使用:阐述双向迭代器原理,强调list迭代器不支持随机访问操作;4. 元素访问和修改操作:包括front/back访问、push/pop操作、insert/erase等;5. 迭代器失效问题:指出只有删除操作会导致迭代器失效,并给出正确处理方法。文章

2025-08-08 17:00:29 1189 1

原创 C++ STL--> vector的模拟实现!

本文介绍了如何实现一个简化的vector模板类,主要包括以下内容:1. 使用三个指针作为成员变量表示容量、元素范围和存储空间;2. 实现迭代器功能,包括普通迭代器和const迭代器;3. 实现reserve扩容机制,强调避免使用memcpy以防止浅拷贝问题;4. 实现push_back、resize等基本操作;5. 提供多种构造函数,包括迭代器构造和n个元素构造;6. 实现拷贝构造和赋值重载的现代写法;7. 实现insert和erase操作,并讨论迭代器失效问题。文章重点讲解了模板类实现中的关键点和注意事项

2025-08-06 14:10:48 820 4

原创 C++ ---》string类的模拟实现

本文介绍了C++ string类的模拟实现,主要包含以下内容: 成员变量设计:使用char*指针、size和capacity来管理字符串数据,并实现迭代器begin和end。 核心函数实现: 构造函数和析构函数,使用strcpy/memcpy进行字符串复制 扩容(reserve)、插入(insert)、删除(erase)和调整大小(resize)等操作 运算符重载([]、+、+=等) 深拷贝问题: 默认拷贝构造会导致浅拷贝问题 通过swap技巧实现安全的深拷贝 常量引用与非常量引用的区别:常量引用可接受左右

2025-08-05 23:06:17 1078 1

原创 string的使用

前言string的认识 前言---编码的事情:  UTF-8 编码原理关于utf-8出现索引出问题的情况:一.构造三. 常见成员函数的使用 3.1 赋值重载 3.2 element access 元素获取  3.2.1 operator[]  3.2.2 at() 3.3 Modifiy 常见修改  3.3.1 追加 += 和append  3.3.2 assign  3.3.3 eraser 和insert 

2025-07-19 16:11:18 998

原创 algorithm ——————》双指针(移动0 复写0 快乐数 装水问题 以及数组中找几个数和为指定的元组)

本文通过多个LeetCode题目展示双指针算法的核心思想与应用场景。主要内容包括:1) 双指针的三种主要类型(分区域、快慢、前后遍历)及其优化作用;2) 具体题目解析:283题移动零采用分区域双指针,1089题复写零使用前后覆盖指针;3) 强调手写思路的重要性,建议分三步(问题描述、算法思路、代码实现)进行练习。并通过移动零和复写零的详细解题过程,包括边界处理等细节,帮助读者掌握双指针技巧的实际应用。

2025-06-27 19:37:26 863 8

原创 字符编码(UTF-8,16,32 和GBK和ASCLL码)

本文系统介绍了计算机字符编码的发展历程与技术原理。首先阐述ASCII码作为基础编码的诞生背景(用1字节表示128个英文字符),指出其无法支持多语言的局限性。为满足各国需求,出现GBK、Shift_JIS等本地化编码,但导致跨国交流乱码问题。由此引出Unicode国际标准——为全球字符分配唯一码点

2025-06-20 18:42:20 1123 8

空空如也

空空如也

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

TA关注的人

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