自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ | 容器vector

本文介绍了C++中vector容器的基本使用和模拟实现。主要内容包括:1.vector的插入删除操作(尾插尾删、头插头删);2.构造函数实现(花括号初始化、n个val构造、默认构造);3.空间管理(扩容机制、resize操作);4.sort排序应用;5.通过两道算法题展示vector的实际应用;6.详细讲解了vector的模拟实现过程,包括成员变量定义、迭代器实现及多种构造函数的编写。文章通过代码示例和调试截图,帮助读者深入理解vector的内部实现原理。

2026-03-15 20:48:52 462 7

原创 C++ | 手搓一个string类

本文介绍了如何模拟实现C++标准库中的string类。主要内容包括:成员变量设计(字符数组指针_str、大小_size和容量_capacity);构造函数处理空指针等特殊情况;拷贝构造的传统写法和现代写法;析构函数释放内存;容量相关操作如reserve扩容和clear清空;以及通过重载[]运算符实现字符串遍历访问。通过代码示例和调试截图,展示了各个关键功能的实现细节与测试验证过程。

2026-03-15 20:44:28 387 4

原创 全球远控软件十强品牌榜:跨境卖家的效率之选,深度测评

2026年全球远程控制软件十强榜单发布,为跨境卖家精选高效工具。国产ToDesk以9.8分夺冠,凭借端到端加密、2K/240帧超清传输及200+全球节点优势,成为跨境业务首选。Splashtop(8.0分)和AnyDesk(7.8分)分列二三位,但后者存在安全隐患。昔日巨头TeamViewer(7.5分)因高价和误判商业用途问题口碑下滑。榜单特别警示:游戏类工具(如Parsec、网易UU)虽在特定领域表现出色,但严重缺乏办公场景所需的安全与功能支持。建议跨境卖家优先选择具备全球节点、高清流畅且性价比高的综合

2026-03-06 18:53:43 34 2

原创 标准库中的String类

本文摘要:本文系统介绍了C++中string类的使用,涵盖构造函数、赋值运算符重载、遍历方式、常用接口和算法题目实践。重点讲解了5种构造函数、4种遍历方法(下标/迭代器/范围for)、容量操作(size/reserve/resize)和修改操作(+=/append/insert)。通过5道LeetCode题目(反转字母、首个唯一字符、回文串验证、字符串相加、最后一个单词长度)演示了string的实际应用。文章还详细比较了[]和at()访问方式的差异,并介绍了getline、类型转换等实用功能,为C++字符串

2026-02-13 15:56:02 587

原创 内存管理笔记

本文系统梳理了C/C++内存管理机制,重点分析了C语言的malloc/calloc/realloc/free和C++的new/delete操作。主要内容包括:1)内存分布(数据段、栈、堆等);2)C语言内存管理函数的使用及扩容机制;3)C++ new/delete对内置类型和自定义类型的处理差异;4)new/delete底层实现原理(调用operator new/delete和构造/析构函数);5)定位new表达式显式调用构造函数;6)new/delete与malloc/free的关键区别,包括初始化、异常

2026-02-01 22:37:40 844

原创 类和对象(下)

本文系统介绍了C++面向对象编程中的核心概念。主要内容包括:1)构造函数初始化列表的使用要点,包括必须使用初始化列表的情况和成员初始化顺序;2)类型转换机制,包括内置类型与自定义类型的隐式转换及explicit关键字的作用;3)static成员的用法,重点说明静态成员变量和静态成员函数的特性;4)友元机制,详细讲解了友元函数和友元类的应用场景及特点;5)内部类的概念和使用方法;6)匿名对象的特性及生命周期管理。通过Date类等示例代码,深入浅出地阐述了这些重要概念的实际应用。

2026-01-31 00:08:36 842

原创 五.排序笔记

本文系统介绍了常见排序算法及其实现。主要内容包括:1)插入排序(直接插入、希尔排序);2)选择排序(直接选择、堆排序);3)交换排序(冒泡、快速排序及其多种实现);4)归并排序;5)计数排序。详细分析了各算法的思路、时间复杂度及实现细节,并对排序稳定性进行了总结。其中快速排序介绍了hoare、挖坑法、前后指针三种实现方式,并给出了递归和非递归版本。归并排序采用分治思想,计数排序则利用空间换时间。文章最后通过表格对比了各排序算法的性能特征。

2026-01-27 17:49:02 908 2

原创 四.二叉树

本文系统介绍了树和二叉树的数据结构及其实现。主要内容包括:1.树的基本概念、表示方法和应用场景;2.二叉树的结构、性质、存储方式及特殊类型(满二叉树、完全二叉树);3.堆的实现与应用(堆排序、TOP-K问题);4.链式二叉树的创建、遍历(前中后序、层序)及相关操作;5.二叉树算法题的解题思路。文章通过代码示例详细展示了数据结构的实现过程,并分析了时间复杂度,为理解和应用树形结构提供了全面指导。

2026-01-26 09:02:41 1028

原创 三.栈和队列

本文详细介绍了栈和队列两种数据结构的基本概念、实现方法及典型算法题。栈采用数组实现,遵循LIFO原则,包含初始化、入栈、出栈等操作;队列采用链表实现,遵循FIFO原则,提供入队、出队等功能。通过力扣题目展示了实际应用:1)使用栈验证括号匹配;2)用双队列实现栈的基本操作;3)用双栈实现队列功能。文中重点讲解了各数据结构的接口实现细节,包括初始化、插入删除、判空等核心操作,并指出指针传递等易错点,为理解这两种基础数据结构提供了完整参考。

2026-01-23 20:59:29 685

原创 二.顺序表和链表

本文系统介绍了线性表的数据结构,重点分析了顺序表和链表的实现与应用。顺序表采用数组存储,支持随机访问但插入删除效率低;链表通过指针连接节点,插入删除高效但不支持随机访问。详细讲解了静态/动态顺序表的实现,包括初始化、扩容、增删查改等操作,并给出相关算法题解。针对链表,阐述了单链表和双向链表的实现方法,涵盖头尾操作、指定位置处理等核心功能,同时提供了链表常见问题的解决方案。最后对比了两种结构的优缺点:顺序表适合频繁访问,链表适合频繁插入删除。全文通过代码示例和复杂度分析,深入浅出地呈现了线性表的核心知识点。

2026-01-22 17:09:23 931

原创 类和对象:实现Date类

本文实现了一个日期类(Date),包含以下功能:1. 类设计:使用3个int成员变量存储年月日,共12字节;2. 默认函数:实现构造/拷贝构造函数、关系/赋值/算术/取地址运算符重载;3. 辅助函数:提供日期打印(Print)和获取月份天数(getMonthDays)功能;4. 测试验证:通过多个测试用例验证各类运算符重载的正确性。实现中大量使用运算符复用和const修饰,确保代码高效安全。该日期类支持日期比较、加减运算等常见操作,可作为时间处理的基础组件。

2026-01-21 17:14:45 917

原创 一.算法复杂度

本文介绍了数据结构与算法的基础概念及其重要性,重点分析了算法效率的评估标准——时间复杂度和空间复杂度。通过多个代码示例(如旋转数组问题)详细讲解了复杂度计算方法,并使用大O渐进表示法进行简化表达。文章比较了三种旋转数组算法:暴力法(O(N²))、额外数组法(O(N))和三次翻转法(O(N)),展示了不同实现对效率的影响。最后通过表格对比了常见复杂度函数的增长趋势,帮助读者理解算法性能差异。

2026-01-20 18:33:27 954

原创 类和对象(中)

本文系统介绍了C++类的默认成员函数及其特性。主要内容包括: 构造函数与析构函数的定义方式、调用时机及编译器生成规则; 拷贝构造函数的实现要点及深浅拷贝问题; 运算符重载的语法规则、特殊运算符限制及赋值运算符重载; const成员函数的作用原理; 取地址运算符重载的实现方法。 重点分析了编译器自动生成的默认函数行为,并指出当类涉及动态内存管理时,必须自行实现相关成员函数。通过Date类和Stack类的对比案例,阐明了不同场景下默认成员函数的适用性差异。

2026-01-19 17:26:15 963

原创 类和对象(上)

本文介绍了C++类的定义与使用要点:1. 类的定义包括成员变量和成员函数,通过访问限定符(public/private)控制访问权限;2. 类实例化时才分配内存空间,详细讲解了内存对齐规则并通过多个案例说明;3. 介绍了this指针的作用机制,它作为隐藏参数传递到成员函数中;4. 最后通过两个易错题测试空指针调用成员函数的情况,指出仅访问成员函数不会导致崩溃,但访问成员变量会引发错误。全文重点阐述了C++类的基本概念、内存布局和this指针特性。

2026-01-18 17:31:35 1074

原创 C++入门篇

本文介绍了C++编程基础中的核心概念:1. 命名空间(namespace)解决了全局变量冲突问题,可通过三种方式使用;2. C++输入输出使用iostream库,支持自动类型识别;3. 缺省参数分为全缺省和半缺省,需注意声明与定义规范;4. 函数重载允许同名函数根据参数类型/数量区分;5. 引用作为变量别名,与指针相比更安全但不可更改引用对象;6. inline函数替代宏函数实现代码展开;7. nullptr解决了NULL在C++中的二义性问题。这些特性显著提升了C++的类型安全性和编程便利性。

2026-01-17 19:58:07 842

原创 垃圾回收总结

本文梳理了垃圾回收的核心机制与实现方式。首先阐明垃圾回收通过自动内存管理提升开发效率但降低运行效率,主要作用于堆内存中的对象。其次详细解析了标记过程的两种算法:引用计数法存在循环引用问题,而可达性分析从GC Roots出发扫描引用链。在回收环节,介绍了标记-清除(产生内存碎片)、复制算法(空间浪费)、标记-整理(搬运开销)三种策略及其优缺点,最终提出分代回收的综合方案——将堆分为新生代(采用复制算法)和老年代(标记清除/整理)。文末列举了7种典型垃圾回收器实现。

2025-09-25 09:15:15 312

原创 类加载的过程以及双亲委派模型

Java类加载过程包括加载、验证、准备、解析和初始化五个阶段,按需加载类文件。双亲委派模型通过Bootstrap、Extension和Application三级类加载器确保按标准库→扩展库→第三方库的顺序加载,保障核心类安全。类加载触发场景包括首次实例化、调用静态成员或方法、使用子类等情况。该机制既提高了加载效率,又维护了Java运行时的安全性。

2025-09-19 09:55:57 365

原创 HTTPS 的加密

本文介绍了数据传输中的加密机制:包括明文、密文及密钥类型(对称/非对称加密)。对称加密存在密钥传递安全问题,非对称加密通过公钥/私钥组合解决。还分析了中间人攻击风险及防范措施:由公证机构颁发数字证书,通过数字签名验证证书真伪,确保传输安全。完整阐述了从数据加密到身份认证的安全防护体系。

2025-09-15 19:42:55 349

原创 HTTP 协议的基本格式

HTTP协议是超文本传输协议,包含请求和响应两种报文格式。请求报文由首行(含URL、方法、版本号)、请求头、空行和可选的请求体组成,常见方法有GET(幂等)、POST(带数据)、PUT(幂等)和DELETE。响应报文包括状态行(含状态码如200成功、404未找到)、响应头、空行和响应体。关键头字段有Host、Content-Type、Cookie等,状态码分为成功(2xx)、重定向(3xx)、客户端错误(4xx)和服务器错误(5xx)三类。

2025-09-14 15:45:22 508

原创 数据链路层总结

本文主要介绍了以太网(IEEE802.3)和WiFi(IEEE802.11)两种网络技术。以太网通过网线或光纤传输,详细说明了其帧格式(包含帧头、帧尾和数据)和帧协议类型字段(如ARP和RARP协议)。WiFi则通过无线信号传输网络数据。文章重点解析了以太网的工作原理,包括MAC地址、数据拆包机制以及ARP协议如何协助构建转发表等关键技术要点。

2025-09-13 20:13:17 339

原创 IP协议相关特性

摘要:本文介绍了IP报文结构,包括服务类型、总长度、标识、标志位等关键字段,重点解析了拆包组包机制及其字段作用。针对IP地址不足问题,提出动态分配、NAT机制和IPv6三种解决方案:NAT通过内网/外网IP映射提高安全性;IPv6使用16字节地址彻底解决地址短缺。文章还详细说明了不同网络场景下的转发规则,包括内网穿透等特殊情况处理。

2025-09-13 11:10:12 919

原创 TCP协议的相关特性

TCP可靠传输与效率优化机制 摘要:TCP通过确认应答、超时重传和三次握手/四次挥手确保可靠传输,使用序号机制解决数据包乱序问题。为提高效率,采用滑动窗口实现批量发送,通过流量控制(接收缓冲区大小)和拥塞控制(动态调整窗口)平衡传输速率。延时应答和捎带应答优化网络利用率,面向字节流特性需处理粘包问题。异常情况处理包括进程崩溃时的连接释放、正常关机的四次挥手,以及掉电/断网时的心跳检测机制。这些机制共同保障了TCP在复杂网络环境下的稳定高效传输。

2025-09-11 20:36:59 573

原创 UDP 的报文结构和注意事项

UDP报文结构包含16位长度字段和校验和机制。其数据包最大64KB,校验和用于检测传输错误。常见问题是比特翻转导致校验错误,可通过CRC循环冗余校验解决:发送方将数据累加成16位整数(溢出处理),接收方同样计算对比,若一致则传输正确。该机制能有效验证数据完整性。

2025-09-09 08:43:26 212

原创 网络中的一些基本概念

本文概述了计算机网络通信的基础概念:1)IP地址(32位二进制,点分十进制表示)和端口号(16位无符号整数)的作用;2)协议分层原理,重点介绍TCP/IP五层模型(物理层、数据链路层、网络层、传输层和应用层)及各层功能;3)数据封装与分用过程,详细说明数据在各层的传输处理流程;4)客户端-服务器架构的工作机制,包括请求/响应模式及HTTP协议示例;5)网络通信设备(主机、路由器、交换机等)在不同协议层的实现范围。这些概念构成了现代网络通信的基础框架。

2025-08-17 16:36:47 658

原创 File 类的用法和 InputStream, OutputStream 的用法

本文摘要:文章分为两部分讲解Java文件操作。第一部分介绍File类,包括路径分隔符属性、构造方法及常用功能,如获取路径信息、判断文件类型、创建删除目录等。第二部分讲解字节流操作,涵盖InputStream和OutputStream的读写实现,包括单字节读取、字节数组读取、偏移量控制等方法,以及文件打开模式(覆盖/追加)和写入操作的具体实现方式。文中通过代码示例演示了文件流的基本操作流程。

2025-08-16 21:36:26 330

原创 存储、硬盘、文件系统、 IO相关常识总结

本文介绍了计算机存储系统的相关知识,主要包括三方面内容:一是存储类型,包括DAS、NAS和SAN三种常见形式;二是硬盘参数,详细说明了容量计算差异、转速、访问时间、传输速率和缓存等关键指标;三是文件系统操作,涵盖了文件路径表示方法、文本与二进制文件区别,以及通过File类和流对象进行文件操作的具体方法。文章系统地梳理了计算机存储的基础概念和技术要点,为理解存储系统提供了全面的基础知识框架。

2025-08-16 21:25:06 1202

原创 死锁总结及解决方案

摘要:死锁的四大成因包括互斥锁、不可抢占、请求保持和循环等待。解决方案针对不同成因:对于请求保持问题,先释放已有锁再获取新锁;针对循环等待,可通过统一加锁顺序或使用银行家算法来预防。这些方法从不同角度破坏死锁必要条件,有效避免系统陷入僵局。

2025-08-15 22:29:38 196

原创 Hashtable,HashMap,ConcurrentHashMap的区别

Java集合框架中Hashtable、HashMap和ConcurrentHashMap的主要区别:Hashtable是线程安全的,但效率低,使用全表锁且不允许null键;HashMap线程不安全,允许null键,使用红黑树优化查询;ConcurrentHashMap采用分段锁和CAS机制实现高效线程安全,通过锁桶降低冲突概率,支持并行扩容。三者在线程安全、null值支持、锁机制和扩容策略上存在显著差异。

2025-08-14 10:41:18 574

原创 锁策略总结

本文系统介绍了多线程编程中的锁策略、CAS机制及synchronized优化。锁策略部分对比了悲观锁/乐观锁、重量级锁/轻量级锁等6类锁的特点与应用场景。CAS部分阐述了其原子操作原理及在原子类、自旋锁中的实现,并提出了ABA问题的解决方案。synchronized优化部分则介绍了锁消除和锁粗化两种JVM优化技术。全文通过伪代码示例,深入浅出地讲解了并发编程的核心同步机制。

2025-08-13 16:45:17 422

原创 synchronized总结

摘要:synchronized是Java中的自适应锁机制,支持锁升级(偏向锁→轻量级锁→重量级锁)。使用方式包括锁对象、修饰普通方法(锁this)和静态方法(锁类对象)。锁机制包含:1)锁升级过程,根据竞争情况自动调整锁状态;2)锁消除,JVM优化不必要的同步;3)锁粗化,编译器合并细粒度锁。特性包括:可重入、非公平、非读写锁,初始采用自旋锁策略,根据持有时间自动升级为重量级锁。

2025-08-13 16:05:31 487

原创 线程池总结

本文介绍了线程池的核心参数及其工作机制,主要包括:1)6个关键参数:核心线程数、最大线程数、线程存活时间、任务队列、线程工厂和四种拒绝策略(直接终止/调用者执行/丢弃最老或最新任务);2)线程池工作流程:任务提交到阻塞队列,由worker线程循环执行,当线程数达上限时不再新增;3)四种常见线程池创建方式:固定线程数、无核心线程、单线程和定时线程池,以及使用方法。文章通过代码示例展示了线程池的实际应用场景。

2025-08-10 21:23:40 398

原创 单例模式的两种写法

摘要:本文介绍了单例模式的两种实现方式:饿汉模式和懒汉模式,重点分析了懒汉模式的线程安全问题及改进方案。饿汉模式在类加载时就创建实例,而懒汉模式延迟实例化。针对懒汉模式存在的三个问题:线程并发创建实例、频繁加锁性能损耗、指令重排序风险,分别提出了加锁、双重检查锁定和使用volatile关键字的优化方案,最终给出了线程安全的懒汉模式实现代码。

2025-08-09 22:15:41 263

原创 Java线程安全问题

多线程环境下count++操作出现不一致问题,原因是count++是非原子操作且线程调度导致并发修改冲突。解决方案是使用synchronized同步块对共享变量修改操作加锁,确保同一时刻只有一个线程执行count++操作,从而保证最终结果为20000。通过创建公共锁对象,在两个线程的循环体内同步count++操作,解决了多线程并发修改导致的竞态条件问题。

2025-08-08 12:00:12 176

原创 Java线程的若干种状态

就绪状态:随时可以执行,也包括正在执行。工作完成了,但是Thread对象还在。线程刚创建了,没执行。由于“加锁”产生阻塞。

2025-08-07 18:52:23 290

原创 Thread类的基本用法

本文介绍了Java多线程编程的几种实现方式:1)继承Thread类重写run方法;2)实现Runnable接口;3)匿名内部类;4)Lambda表达式。同时讲解了线程中断的两种方法:自定义标志位和interrupt()方法。此外还介绍了线程等待(join)、线程休眠(sleep)以及获取线程实例的方法。这些技术可以帮助开发者更好地控制线程执行流程,实现更高效的并发编程。

2025-08-07 11:43:27 261

原创 Thread类中run和start的区别

【代码】Thread类中run和start的区别。

2025-08-05 17:21:47 271

原创 [JavaEE]线程与进程

摘要:线程是程序执行流的最小单位,多个线程可并发执行。相比进程,线程更轻量,创建和切换开销小,能更好地利用多核CPU资源。进程是资源分配的基本单位,包含至少一个线程,进程间内存隔离而线程共享内存。线程优势在于:创建代价低、切换开销小、资源占用少、提高并行效率,并能优化I/O密集型任务。进程间互不影响,而同一进程的线程可能相互干扰。多线程编程可提升计算和I/O密集型应用的性能。

2025-08-01 19:29:38 244

原创 [Java]Map 和 Set

Map 和 Set 的相关内容及代码实现

2025-03-23 15:35:25 556

原创 [Java]七大排序

介绍七大排序算法及其代码

2025-03-22 09:55:27 708

原创 [Java]优先级队列

优先级队列的简要内容

2025-03-13 12:04:34 392

空空如也

空空如也

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

TA关注的人

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