自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 十一、C++11列表初始化、右值引用和移动语义

本文是C++11新特性的复习专题,在列表初始化部分,介绍了C++11统一初始化语法和initializer_list容器的应用;右值引用章节详细解析了左值/右值概念、移动构造与移动赋值的实现原理,以及如何通过std::move转换左值为右值;引用折叠部分阐述了模板中的引用处理规则;完美转发章节则说明了如何用std::forward保持参数原始类型属性。文章通过大量代码示例演示了这些特性在字符串类等场景中的实际应用,特别强调了右值引用对深拷贝性能的优化作用。

2026-02-19 17:14:30 660

原创 十、C++多态

本文详细探讨了C++中的多态机制,包括多态的概念、定义与实现方式。重点分析了虚函数及其重写规则,介绍了协变和析构函数重写两种特殊情况,以及C++11引入的override和final关键字。文章深入剖析了多态的实现原理,通过虚函数表机制解释运行时多态行为,并对比了单继承和多继承情况下的虚表结构差异。同时介绍了纯虚函数和抽象类的概念,区分了接口继承与实现继承。通过代码示例和内存分析,展示了如何通过虚函数表实现动态绑定,为理解C++多态提供了全面的技术视角。

2026-02-14 09:57:44 646

原创 九、C++继承

本文总结了C++继承机制的核心知识点:1. 继承的概念与定义:通过Person、Student和Teacher类示例展示继承的代码复用特性,说明public/protected/private三种继承方式对成员访问权限的影响。2. 基类与派生类转换:派生类对象可切片赋值给基类指针/引用,反之则需强制类型转换。3. 作用域与隐藏:同名成员会隐藏基类成员,需用作用域限定符访问。4. 派生类默认成员函数:构造函数需显式调用基类构造,拷贝构造/赋值需调用基类对应函数,析构函数自动调用基类析构。

2026-02-13 08:46:24 562

原创 八、IO流

本文主要介绍了C++中的IO流相关知识,包括标准IO流、文件IO流和string IO流。首先讲解了IO流状态的四种标志位(goodbit/eofbit/failbit/badbit)及其处理方法,如使用cin.clear()恢复流状态。其次详细说明了输出缓冲区的管理机制。在文件操作方面,介绍了二进制和文本文件的读写方法,比较了app和ate模式的区别,并指出了二进制读写中string成员可能导致野指针的问题。最后展示了stringstream的使用方法,包括数据序列化和反序列化的实现。

2026-02-12 08:17:39 576

原创 七、模版进阶

本文总结了C++模板编程中的关键知识点:1. 非类型模板参数的使用场景和限制;2. 模板特化的概念和应用,包括函数模板特化、类模板全特化和偏特化;3. 模板分离编译的原理及解决方案;4. 模板编程的优缺点分析。文章以复习为目的,通过实例代码演示了模板参数、特化技术等核心概念,并解释了模板分离编译失败的原因及解决方法。适合已掌握C++基础语法的学习者进行知识回顾。

2026-02-11 15:27:35 587

原创 六、模版初阶

本文介绍了C++中的泛型编程和模板技术。主要内容包括:1. 函数模板的概念、格式和原理,通过模板实现代码复用;2. 函数模板的隐式和显式实例化方式,以及模板参数的匹配原则;3. 类模板的定义格式和使用方法,指出类模板需要在名称后加<>指定类型参数。文章通过交换函数和分数类的例子,展示了模板如何解决代码复用问题,并比较了模板函数与普通函数的区别。

2026-02-10 06:21:14 649

原创 五、内存管理

本文总结了C++内存管理的关键知识点:1. 程序内存区域划分(代码段、常量区、静态区、堆、栈等)及验证堆栈增长方向;2. C语言动态内存管理函数(malloc/calloc/realloc/free)的使用和特点;3. C++的new/delete操作符与malloc/free的区别,特别是对自定义类型对象的构造/析构处理;4. operator new/delete底层实现原理及其与malloc/free的关系;5. 定位new表达式的作用和使用场景;6. 内存泄漏的危害、分类及预防措施。

2026-02-09 10:06:08 622

原创 四、类和对象(3)

本文主要介绍了C++中的构造函数、类型转换、静态成员、友元、内部类和匿名对象等关键概念。重点内容包括:构造函数初始化列表的使用场景(引用成员、const成员、无默认构造的自定义类型);单参数构造函数的隐式类型转换及explicit关键字;静态成员的特性及访问方式;友元函数和友元类的定义与使用;内部类的特性及其与外部类的关系;匿名对象的生命周期特点。这些知识点对深入理解C++面向对象编程具有重要意义,是类与对象相关的重要补充内容。

2026-02-08 13:22:29 624

原创 三、 类和对象(2)

本文总结了C++类中的六大默认成员函数:构造函数、析构函数、拷贝构造函数、赋值运算符重载、取地址操作符重载和const取地址操作符重载。重点讲解了前四种函数的特点和使用方法:构造函数负责初始化对象,支持重载;析构函数完成资源清理;拷贝构造函数实现对象拷贝;赋值运算符重载处理对象赋值。文章还详细介绍了运算符重载的规则和实现方法,并通过一个完整的日期类示例展示了这些成员函数的具体应用。最后讨论了const成员函数的使用场景和注意事项,为C++类设计提供了全面的参考。

2026-02-07 15:20:57 576

原创 二、类和对象(1)

本文是C++面向对象编程的复习笔记,主要讲解了类和对象的核心概念。内容包括:1. 面向过程与面向对象的区别;2. 类的定义格式、访问限定符和类域;3. 类的实例化过程和对象大小的计算方法;4. this指针的原理、特性及其在成员函数中的作用。重点分析了struct与class的区别、空类大小、内存对齐规则等常见问题,并通过代码示例演示了this指针的实际应用场景和使用注意事项。适合已掌握C++基础知识的读者复习使用。

2026-02-06 09:49:57 600

原创 一、C++入门

本文是C++基础知识的复习专题,主要讲解了11个核心知识点:1. 第一个C++程序及命名空间的使用;2. C++输入输出(cin/cout);3. 缺省参数(全缺省和半缺省);4. 函数重载规则;5. 引用概念、特性及与指针的区别;6. const修饰变量、指针和引用;7. 内联函数(inline)特性;8. auto关键字的使用场景;9. 基于范围的for循环;10. nullptr与NULL的区别。文章强调这是博主个人复习使用,适合已学习过C++基础知识的同学参考,每个知识点都配有代码示例和注意事项说明

2026-02-05 15:53:32 786

原创 15. 多线程(进阶2) --- CAS 和 多线程常用的类

本文介绍了CAS(Compare and Swap)机制及其在多线程编程中的应用。CAS通过原子性地比较和交换值实现线程安全,常用于实现原子类(如AtomicInteger)和自旋锁。文章详细解析了CAS的工作流程和ABA问题,并通过伪代码示例说明了自旋锁的实现原理。此外,还介绍了JUC(java.util.concurrent)中的Callable接口,演示了如何通过FutureTask获取线程计算结果。CAS作为CPU指令,为多线程编程提供了高效的同步解决方案,但需注意ABA问题可能引发的并发风

2025-08-21 23:26:08 1054

原创 14. 多线程(进阶1) --- 常见的锁策略和锁的特性

本文主要介绍了多线程编程中常见的锁策略及其特性。首先探讨了悲观锁与乐观锁的区别,悲观锁预期竞争激烈而做额外工作,乐观锁则相反。接着分析了重量级锁与轻量级锁的适用场景,以及挂起等待锁和自旋锁的实现方式。 文章还讲解了读写锁的优势,可重入锁的特性,公平锁与非公平锁的区别。最后重点介绍了synchronized锁的升级机制,包括偏向锁、轻量级锁和重量级锁的转换过程,以及JVM如何根据竞争激烈程度自动选择合适的锁策略。 这些锁策略和特性是多线程编程的核心概念,理解它们有助于开发高效、线程安全的并发程序。

2025-08-21 23:25:17 1133

原创 13. 多线程(10) --- 案例:线程池

文章摘要 本文介绍了线程池的概念及其在Java中的应用。线程池通过预先创建并复用线程,减少频繁创建和销毁线程的开销,提升性能。文中用快递店的例子形象地解释了线程池的工作原理,并分析了线程池的底层实现机制,包括用户态和内核态的交互。 Java标准库中的ThreadPoolExecutor提供了灵活的线程池配置,通过核心线程数、最大线程数、工作队列及拒绝策略等参数优化任务调度。此外,文章还探讨了工厂模式在解决构造方法局限性中的应用,以二维坐标点类的实现为例,展示了工厂模式的实用性。 线程池和工厂模式都是提升代码

2025-05-25 08:34:51 1032

原创 12. 多线程(9) --- 案例:定时器

我们在上个博客中学习到了 阻塞队列的使用和模拟实现,这次我们学习定时器。定时器是软件开发中的一个重要组件。类似于一个 “闹钟”。达到一个设定的时间之后,就执行某个指定好的代码。定时器是一种实际开发中非常常用的组件。比如在网络通信中,如果对方 500ms 内没有返回数据,则断开连接尝试重连比如一个 Map,希望里面的某个 key 在 3s 之后过期 (自动删除)类似于这样的场景就需要用到定时器。

2025-05-05 14:04:01 989

原创 11. 多线程(8) --- 案例:阻塞式队列

上一个博客中,我们讲解了单例模式中的多线程安全的写法,这次我们学习阻塞队列。

2025-05-05 14:03:49 1023

原创 10. 多线程(7) --- 案例:单例模式 (多线程)

上一篇博客中我们主要讲解了单例模式中的懒汉模式和饿汉模式的代码书写,这一次我们把线程安全也考虑进内,来再次书写一下代码。

2025-05-03 01:46:26 961

原创 9. 多线程(6) --- 案例:单例模式 (基础)

前面的博客我们已经把多线程的基础知识都讲解完了,俗话说得好,“光练不说傻把式,又练又说真把式”,下面的博客主要讲解一些案例,咱们再来熟悉熟悉多线程代码,这次博客讲解单例模式。

2025-05-03 01:45:57 789

原创 8.多线程(5) --- wait和notify的使用

上一个博客中我们学习volatile关键字,这个博客中我们学习wait和notify。wait 是 等待,notify是通知。使用这两个方法,可以让后执行的逻辑,等待先执行的逻辑先执行,虽然无法直接干预调度器的调度顺序,但是可以让后执行的逻辑(线程)等待,等待到先执行的逻辑跑完,通知一下当前的线程,让他继续执行。

2025-05-03 01:45:34 1981

原创 7. 多线程(4) ---volatile关键字

上一篇博客中,我们主要讲解了死锁问题,这次我们讲解造成线程安全的另一个原因 - - -内存可见性问题,并且认识volatile关键字。

2025-01-09 17:18:39 791

原创 6. 多线程(4) --- 死锁问题

上一篇博客中我们讲解关键字,使用可以构成锁,如果锁比较多,乱用锁的话,可能就会造成死锁的情况,下面我们用几个例子来观察一下死锁的现象。

2025-01-09 17:18:25 1434

原创 5. 多线程(3) --- synchronized

前面我们通过在两个线程中共同对count进行加一操作,最后得到的结果和预期不一样,并且还通过画图得到了原因。在这个博客中,我们来解决一下问题—引入synchronized关键字。

2025-01-07 22:34:49 1073

原创 4. 多线程(2)---线程的状态和多线程带来的风险

上一篇博客我们学习了,线程的创建,这次我们讲解 线程的状态 和 线程不安全问题。

2025-01-07 22:34:22 759

原创 3. 多线程(1) --- 创建线程,Thread类

上一节课,我们主要引出了线程,以及线程和进程的联系与区别,从这篇博客开始,我们开始编写代码了,Let’s go!

2025-01-06 22:43:03 929

原创 2. 进程和线程

上一篇博客,我们讲到了CPU和操作系统,今天我们讲一个操作系统中一个非常重要的概念—线程和进程。

2025-01-06 22:42:44 949

原创 1. 计算机是如何进行工作的[主讲CPU和操作系统]

哈喽,各位老铁,新的一个专题—JavaEE开始启动了,在这个博客中,我们会面向企业级开发,知识点会更多,并且会有一些项目实践等等,对此,我们可以拭目以待了,而这次博客的主要内容就是一点,简单聊聊计算机是如何工作的。

2025-01-06 22:42:25 826

原创 Java(三十) --- 基于比较的七大比较的排序算法(巨详细)

我们这个博客讲一下七大基于比较的排序。

2024-10-28 07:13:48 1143 1

原创 Mysql(十) --- 用户权限和管理

我们前面学习了许多MySQL的语法和基础知识,今天我们在学一个知识点—用户权限和管理。

2024-10-28 07:13:41 1653

原创 Mysql(九) --- 事务

MySQL(九) --- 事务

2024-10-13 08:02:53 1123 1

原创 Mysql(八) --- 视图

前面我们学习了索引,这次我们来学习视图视图是一个虚拟的表,它是基于一个或多个基本表或其他视图的查询结果集。视图本身不存储数据,而是通过执行查询来动态生成数据。用户可以像操作普通表一样使用视图进行查询、更新和管理。视图本身并不占用物理存储空间,它仅仅是一个查询的逻辑表示,物理上它依赖于基础表中的数据。

2024-10-12 12:22:40 3696 2

原创 Mysql(七) --- 索引

前面我们学习了,数据库的增删改查等操作,在数据库中,用的最多的业务就是查找,在现实生活中,我们会发现有很多的关键字会被经常查到,为了可以更加高效地进行查询,我们为此引出索引MySQL的索引是一种数据结构,它可以帮助数据库高效地查询,更新数据表中的数据。索引通过一定的规则排列数据表中的记录,使得对表的查询可以通过索引的搜索来加快速度。MySQL索引类似于书籍的目录,通过指向数据行的位置,可以快速定位和访问表中的数据,比如汉语字典的目录(索引)页,我们可以按照笔画偏旁部首拼音。

2024-10-12 12:22:25 1863

原创 Mysql(六) --- 聚合函数,分组和联合查询

上一篇博客中,我们学习了数据库的设计,下来我们就要根据多种表来进行联合查询。

2024-10-07 22:04:27 1464 2

原创 Mysql(五) --- 数据库设计

上一篇博客中,我们学习增删查改等基本操作,在工作中,每种表之间都是存在关联的,而不是相互独立的,因此这一篇中,我们来学习数据库设计和联合查询• 数据库表的每⼀列都是不可分割的原子数据项,而不能是集合,数组,对象等非原子数据。• 在关系型数据库的设计中,满足第一范式是对关系模式的基本要求。不满足第一范式的数据库就不能被称为关系数据库,在满足第一范式的基础上,不存在非关键字段对任意候选键的部分函数依赖。存在于表中定义了复合主键的情况下。

2024-10-07 22:04:10 1244

原创 Mysql(三)---增删查改(基础)

上一篇我们学习了数据库的基础操作,这一篇我们学习数据库的增删改查等一系列操作。

2024-08-15 00:07:20 1317

原创 Mysql(四)---增删查改(进阶)

上一篇博客,我们学习了一些主键的概念,并且分别创造了一些示例表,下面我们添加训练案例,来对增删改查进行全面的学习。

2024-08-15 00:06:36 1171

原创 Mysql(一)---安装与配置

前端时间我们学习了数据结构和排序算法,咱们接下来学习新的知识点—数据库

2024-08-12 23:06:22 1521

原创 Mysql(二)---数据库基础

上一篇博客我们学习Mysql数据库的安装与配置,今天我们学习Mysql数据库基础。

2024-08-12 23:06:06 897

原创 初始Java

本篇博客应该要放到学习Java的第一位,但是在学习完JavaSE和数据结构之后,写这一篇可能会有不一样的感受吧,言归正传,咱们开干。

2024-08-11 22:00:00 991

原创 Java(二十八)---哈希桶的模拟实现以及有关Map和Set的Oj题

在上一篇博客中,我们学习了关于Map和Set的,Tree类型和Hash类型,下面我们学习哈希桶的模拟实现以及有关Map和Set的Oj题。

2024-08-09 08:32:10 1254 1

原创 Java(二十九)---反射、枚举以及lambda表达式

Java(二十九)---反射、枚举以及lambda表达式

2024-08-09 08:31:54 946

空空如也

空空如也

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

TA关注的人

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