自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ STL 容器与算法全解析:从底层原理到实战优化

vector是动态数组,使用连续的内存空间存储元素,支持快速随机访问。当存储空间不足时,会自动分配更大的内存块,并将所有元素复制过去。list是双向链表,每个元素包含数据和两个指针(前驱和后继),元素在内存中不连续存储。deque(双端队列)是一种双向开口的连续线性空间,可以高效地在头尾两端插入和删除元素。它由多个连续的内存块组成,内部维护一个指向这些块的指针数组。map是键值对(key-value)的集合,其中每个键(key)都是唯一的。map中的元素按照键的大小进行排序(默认升序),通常使用红黑树实现。

2025-10-14 11:20:37 696

原创 C++ 运算符全面详解

运算符特性底层原理数学基础硬件支持优先级语法分析树构建结合律、分配律编译器算法整数运算二进制算术模运算理论ALU 单元浮点运算IEEE 754 标准实数的有限近似FPU 协处理器自增/自减序列点理论副作用时序寄存器操作短路求值条件跳转布尔代数分支预测类型转换类型系统类型论数据表示转换运算符类别关键难点最佳实践优先级/结合性混淆优先级,误解右结合多用括号,复杂表达式分行算术运算整数除法,溢出,负数运算注意类型,检查边界自增/自减前后缀区别,未定义行为。

2025-10-09 19:40:38 387

原创 c++的String详解

是什么?是 C++ 标准库中定义的一个类模板对于char类型的特化别名。这意味着是一个管理字符序列的类,它自动处理内存分配、释放、以及各种字符串操作。头文件:使用必须包含<string>头文件。设计哲学:遵循 RAII(资源获取即初始化)原则。字符串所需的内存由类的构造函数自动分配,并由析构函数自动释放,用户无需手动newdelete,避免了内存泄漏的风险。与 C-style 字符串的区别特性char[]orchar*内存管理手动(易出错,内存泄漏/越界)自动(安全)长度获取strlen()

2025-08-25 17:03:02 807

原创 深入探讨 C++ 中的浮点数数据类型

浮点数只能精确表示有限的十进制小数(本质是特定二进制小数)。像0.10.2这样的十进制小数在二进制中是无限循环小数,存储时必然被舍入。每一次浮点运算(加、减、乘、除)都可能引入微小的舍入误差。这些误差会累积,特别是在复杂的计算或迭代中。这是浮点编程中最常见的错误源之一。总是使用容差 (epsilon) 进行“近似相等”比较。整数转浮点数时警惕精度丢失(大整数);浮点数转整数时明确截断行为并警惕溢出。知道float和double能表示的大致范围 (在代码中考虑NaN和±∞出现的可能性,使用。

2025-07-10 17:22:32 1105

原创 c++面试题每日一学记录- C++对象模型与内存对齐深度原理详解

地址不变(偏移量0)

2025-06-24 14:11:39 708

原创 c++面试题每日一学记录-C++类型转换

通过深入理解转换机制及陷阱,可显著提升代码健壮性。:编译器可确定的类型转换。:运行时安全的类型识别。

2025-06-23 12:33:48 421

原创 C++ 基本数据类型的详细总结

有符号与无符号混合运算现象:负数与正数比较时结果违反直觉原理:C++标准规定混合运算时,有符号类型会被隐式转换为无符号类型(§7.8.2)。负数转换为大正数(模 (2^n) 运算)int i = -1;// 有符号整数// 无符号整数// 现象:-1 < 1 应该为真,实际输出假// 原理:i被转为无符号数(二进制位不变)std::cout << "实际值: "unsignedreturn 0;/* 输出:-1 < 1?false实际值: 4294967295 < 1*/

2025-06-23 08:55:19 2273

原创 C++类的知识点总结

使用class或struct关键字定义。class默认成员是private的,struct默认成员是public的(这是C++中class和struct唯一的本质区别)。描述对象状态的变量。定义对象行为的函数,可以操作成员变量。// 使用 class 定义private: // 访问修饰符:私有成员,只能在类内部访问// 成员变量int age;public: // 访问修饰符:公有成员,可以在类外部访问// 成员函数声明// const 成员函数,承诺不修改对象状态。

2025-06-18 14:10:27 411

原创 c++面试题每日一学记录-C++对象生命周期管理详解

C++11 引入了智能指针来自动化管理动态对象的生命周期,基于 RAII 原则。紧密相关,而作用域决定了其名字的可见性。

2025-06-17 17:37:33 885

原创 c++面试题每日一学记录-RAII与智能指针

RAII提供通用资源管理范式unique_ptr用于独占资源,性能最优处理共享资源,需警惕循环引用优先使用避免裸指针和智能指针混用多线程环境下注意对象状态同步。

2025-06-16 13:05:38 837

原创 c++面试题每日一学记录-移动语义与完美转发

在 C++ 中,和是表达式的两种基本分类,它们描述了表达式的值属性、生命周期和可操作性。理解这两个概念对掌握 C++ 的引用、移动语义和完美转发至关重要。左值的英文简写为“lvalue”,右值的英文简写为“rvalue”。很多人认为它们分别是"left value"、“right value” 的缩写,其实不然。lvalue 是“”的缩写,可意为存储在内存中、有明确存储地址(可寻址)的数据,而 rvalue 译为 “”,指的是那些可以提供数据值的数据(不一定可以寻址,例如存储于寄存器中的数据)。

2025-06-16 13:04:36 1821

原创 c++面试题每日一学记录-Lambda表达式

x][&x][=][&][x, &y][z=x+1]operator()constmutable:移除operator()的const限定符[x,y][=][&][this]

2025-06-12 16:49:08 469

原创 c++面试题每日一学记录-类型推导

特性主要目的关键行为是否忽略引用/顶层 const特殊规则模板类型推导推导函数模板的模板参数T根据形参类型(值、引用、万能引用)和实参推导T。数组/函数会退化。是(值类型形参)万能引用 (T&&) 根据实参值类别推导不同结果auto推导变量的类型规则几乎等同于模板类型推导。auto对应T,初始化器对应实参。是支持{}推导为decltype查询表达式或实体的确切类型返回表达式值类别对应的类型或实体的声明类型。保留所有修饰符。否或复杂表达式产生引用类型用decltype规则推导auto的类型结合。

2025-06-11 17:04:35 505

原创 c++面试题每日一学记录-const关键字

这在一些特殊场景下非常有用,比如需要在 const 函数中修改某些缓存变量、统计访问次数等,但又不希望改变类的外部逻辑状态。是一个 类型修饰符,用于 允许某个类的成员变量。:const成员函数和非const成员函数可重载。:const对象调用非const成员函数。:指针/引用的const属性构成重载。const关键字的深层解析与易错点。:lambda捕获中的const。:const修饰参数不构成重载。:const与线程安全误解。:返回内部指针/引用。:忘记const重载。

2025-06-10 15:44:17 349

原创 c++面试题每日一学记录-虚函数表

虚函数(virtual function)的底层实现机制主要依赖于和,这是C++实现运行时多态(动态绑定)的核心机制。

2025-06-05 16:49:34 397

原创 C++日志调试方法总结

本文介绍了C++开发中的多种日志调试方法:1)使用标准输出流cout/cerr进行基础日志输出;2)通过条件编译宏实现可开关的调试日志;3)利用断言assert进行运行时检查;4)采用第三方库spdlog实现高级日志功能(需添加-pthread链接选项)。这些方法可帮助开发者高效定位问题,其中spdlog提供格式化输出、多级日志等高级特性,是最推荐的解决方案。

2025-06-05 12:39:59 196

原创 C++ 预编译(预处理)详解

它在实际编译前处理源代码中的预处理指令(以。开头的命令),生成传递给编译器的“纯净”代码。非标准但广泛支持的头文件保护机制,比传统。预编译是 C++ 编译过程的第一阶段,由。

2025-05-29 14:24:42 1851

原创 命名冲突和命名空间

命名冲突发生在同一作用域中存在同名的标识符(如函数、类、变量等),导致编译器无法区分它们。命名空间通过将代码封装到逻辑分组中,隔离标识符的作用域,从而避免冲突。友元函数需在类所在命名空间定义,或通过全限定名声明。仅在局部作用域(如函数内部)或源文件中使用。避免全局作用域污染,尤其是库开发者。实现无缝库升级,同时保持向后兼容性。将标识符限制在当前编译单元(类似。C++中更推荐用匿名命名空间替代。

2025-05-19 21:37:43 576

原创 C++作用域详解

同一作用域内不可定义同名变量。

2025-05-19 13:27:37 1093

原创 C++ 的值初始化(Value Initialization)和 零初始化(Zero Initialization)

通过严格遵循这些规则,可以避免大多数未初始化导致的未定义行为,写出更健壮的 C++ 代码。通过严格遵循这些规则,可以避免大多数未初始化导致的未定义行为,写出更健壮的 C++ 代码。静态变量仅在程序启动时初始化一次,避免误用。静态变量仅在程序启动时初始化一次,避免误用。在类的构造函数中使用成员初始化列表。在类的构造函数中使用成员初始化列表。(MSVC)捕捉未初始化问题。(MSVC)捕捉未初始化问题。)可触发值初始化,避免歧义。)可触发值初始化,避免歧义。(GCC/Clang)或。(GCC/Clang)或。

2025-05-12 14:00:29 860

转载 PL/SQL性能调优

1、理解执行计划1-1.什么是执行计划oracle数据库在执行sql语句时,oracle的优化器会根据一定的规则确定sql语句的执行路径,以确保sql语句能以最优性能执行.在oracle数据库系统中为了执行sql语句,oracle可能需要实现多个步骤,这些步骤中的每一步可能是从数据库中物理检索数据行,或者用某种方法准备数据行,让编写sql语句的用户使用,oracle用来执行语句的这些步骤的组合...

2019-03-27 17:53:31 537

原创 Linux就该这么学-红帽认证-第五章用户的身份与权限

Linux系统三类用户身份——UID管理员:0 root 系统用户:5/6 1-499 7 1-999 (nologin) 普通用户:5/6 1000-65536 7 1000-~用户权限操作添加/删除用户useradd [选项] 用户 -d 指定用户的家目录(默认为/home/username) -e 账户的到期时间,格式为YYYY-MM-...

2019-03-26 16:02:45 427 3

转载 MySQL和Oracle的区别

只针对MySQL数据库和Oracle数据库的区别对事务的提交MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮分页查询MySQL是直接在SQL语句中写"select… from …where…limit x, y",有limit就可以实现分页;而Oracle则是需要用到伪列ROWNUM和嵌套查询事务隔离级别M...

2019-03-23 10:22:19 284

原创 Oracle笔记整理

Oracle的体系结构数据库:datebaseOracle数据库是数据的物理存储。这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的是一个操作系统只有一个库。可以看做是Oracle就只有一个大数据库。实例一个Oracle实例(Oracle Instance)有一系列的后台进程和内存结构组成,一个数据库可以有n个实例。数据文件数据文件是数据库的...

2019-03-23 10:15:01 234

原创 Java专项练习知识点整理第二天

1.switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。2.非法表达式a!= 4||b==1’a’ % 3’a’ = 1/3(错误)’A’ + 32‘a’可被视为ASCII码为97的常数,常数不能被赋值3.数组复制...

2019-03-22 10:11:57 189

原创 Java专项练习知识点整理第一天

1.Java中的 类是单继承,多实现,接口可以 多继承2. 不同访问修饰符说明publicprotecteddefaultprivate同包同类√√√√同包不同类√√√同包不同类继承√√√不同包继承√√访问不同包无任何关系的类√3.程序题 public class TestThread { pu...

2019-03-21 11:23:52 264

原创 Java基础-泛型

public class Generics { public static void main(String[] args) { List arrayList = new ArrayList(); arrayList.add("aaa"); arrayList.add(100); for (int i = 0; i < arrayList.size(); i++) {...

2019-03-18 17:19:58 351

原创 Java基础

基本数据类型字节型(byte)字节型是一种 8 位有正负的二进制整数最小值是 -128最大值是 127默认值为 0短整数(short)短整型是一种16位有正负的二进制整数最小值是 -32768 (2^15)最大值是 32767 (2^15-1)短整数类型的数据也可以像字节型一样用于节省空间。短整数比* 整数小两倍默认值为 0数型(int)整数型是一种 32 位有...

2019-03-18 13:27:56 213

原创 Web前端之JavaScript

JavaScript(简称JS)开发: 是一门脚本语言,由浏览器来解释执行,不需要经过编译JS声明变量:   var  变量的名字;JS声明函数: function 函数的名称(参数的名字){}JS开发的步骤:    1. 确定事件    2. 事件要触发函数,所以我们是要声明函数    3. 函数里面通常是去做一些交互才操作,  弹框, 修改页面内容,动态去添加一些东西JS中常用的事件...

2019-02-25 16:04:05 201

原创 Web前端之CSS

CSS(Cascading Style Sheets)CSS样式规则:&lt;style&gt; 选择器{ 属性名称:属性的值; 属性名称2: 属性的值2; } &lt;/style&gt;选择器&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;&lt;/title&gt; &lt;sty

2019-02-25 11:48:08 261

原创 Web前端之HTML

HTML: Hyper Text Markup Language 超文本标记语言超文本: 比普通文本功能更加强大,可以添加各种样式标记语言: 通过一组标签.来对内容进行描述. &lt;关键字&gt; , 是由浏览器来解释执行HTML语法规范 1. &lt;!DOCTYPE html&gt;是一个文档声明 2. 根标签 html 3. html文件主要包含两...

2019-02-24 14:30:53 137

空空如也

空空如也

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

TA关注的人

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