自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++11及以后的版本新特性详解

本文详细介绍了C++11及以后的版本(C++14, C++17, C++20, C++23)所增加的主要新特性,并通过简单的示例代码来帮助读者更好地理解和应用这些特性。C++11引入了自动类型推导、范围for循环、Lambda表达式等,极大地提升了语言的简洁性和表达能力。C++14和C++17在此基础上进行了改进和扩展,如泛型Lambda、结构化绑定、std::optional等。C++20引入了协程、模块和概念等重要特性,进一步提升了C++的现代化和高效性。最新的C++23则在多线程支持、范围库扩展和错误

2024-06-30 16:32:11 955

原创 基于C++、MFC和Windows套接字实现的简单聊天室程序开发

本文介绍了如何使用Visual Studio 2022创建一个简单的聊天室程序,该程序由服务器端和客户端两个项目组成,均基于对话框的MFC应用程序。服务器端项目负责管理客户端的上线、离线状态,并转发客户端发送的信息。客户端项目则负责向服务器发送信息,并接收和显示来自服务器的信息。文章详细描述了服务器端和客户端项目的创建过程,包括对话框资源的编辑、控件的添加及其关联变量的设置,以及相关函数的编写和消息响应的处理。最终,聊天室程序具备了客户端登录、信息发送与接收、以及服务器端消息转发等功能,实现了一个基本的网络

2024-06-16 21:06:39 3046 2

原创 C++中的const和constexpr关键字详解:顶层与底层const以及常量表达式

本文详细介绍了C++11中的const和constexpr关键字,解释了顶层const(对象本身不可变)和底层const(对象所指向的值不可变)的区别,并通过多个例子展示了它们的应用。同时,本文深入探讨了constexpr关键字的用法,包括constexpr变量和函数的定义与注意事项,以及它们与const的区别,帮助读者更好地理解和使用这两个关键字以编写高效可靠的代码。

2024-06-10 17:31:28 646

原创 C++ 中有符号数与无符号数的隐式转换与运算陷阱

在C++编程中,有符号数与无符号数的混合使用可能导致意料之外的结果。本文通过示例代码展示了当有符号数与无符号数一起使用时,隐式转换如何将负数变成一个很大的正数,并探讨了无符号数的特性和溢出行为。此外,本文总结了有符号数与无符号数运算中的常见问题,如混合运算和循环控制问题,并提供了安全使用的建议,包括避免混合使用、检查范围和使用静态分析工具。理解这些概念对于编写健壮的C++代码至关重要。

2024-06-10 11:32:45 756

原创 现代操作系统(第四版)课后习题-5.输入/输出

现代操作系统(第四版)课后习题-5.输入/输出

2024-06-09 17:06:38 2379

原创 现代操作系统(第四版)课后习题-4.文件系统

文件系统课后习题

2024-06-04 13:37:28 943

原创 现代操作系统(第四版)课后习题-3.内存管理

内存管理课后习题

2024-06-02 16:19:29 1031

原创 深入理解 C++ 的 deque 容器

本篇博客深入探讨了 C++ 中 deque 容器的内部实现和操作机制。deque(双端队列)与 vector 不同,它支持在两端快速插入和删除,而无需担心头部操作的低效问题。文章通过详细的示例和代码解释了 deque 的数据结构,包括其分段连续存储的特性、中控器的设计、迭代器的复杂性以及元素的操作方法。此外,还讨论了 deque 的内存管理策略和性能优化技巧,例如在排序时将 deque 转移到 vector。

2024-05-30 12:00:28 1285

原创 现代操作系统(第四版)课后习题-2.进程与线程

二、进程与线程1.图2.2中给出了三种进程状态。理论上,三个状态之间可以有六种转换,每种状态两个。但图中只给出了四种转换。其余两种转换是否可能发生?在讨论操作系统中进程状态转换的理论时,通常会有三种基本状态:就绪(Ready)、运行(Running)和阻塞(Blocked)状态。转换通常发生如下:就绤到运行:当调度器选择进程执行时,该进程从就绪状态转移到运行状态。运行到就绤:当进程的时间片用完或有更高优先级的进程需要运行时,当前运行的进程会被转移到就绪状态。运行到阻塞:如果进程等待某些事件(如输

2024-05-21 11:30:03 869 1

原创 设计模式-8.组合模式(Composite)C++实现

组合模式是一种结构型设计模式,它允许你将对象组合成树形结构以表示部分-整体的层次结构。组合模式使得客户通过一个统一的接口可以对单个对象和组合对象进行一致的处理。

2024-05-20 20:22:57 369

原创 C++内存分配剖析

详细讨论了C++中高级内存管理技术,包括STL的allocator如何分离内存分配和对象构造。介绍了std::alloc负责内存配置与释放,而construct()与destroy()负责对象的构造与析构,使用"placement new"语法优化内存使用。进一步探讨了内存配置的基本操作和双层级配置器策略,用于有效管理小型区块以减少内存碎片。此外,也讨论了uninitialized_fill_n、uninitialized_copy和uninitialized_fill等函数,这些工具直接在未初始化的内存中

2024-05-19 17:42:04 1389 1

原创 设计模式-7.桥接(Bridge)C++实现

桥接模式是一种结构型设计模式,它将一个大类或一系列紧密相关的类分解成两个独立的层次结构——抽象和实现,使得这两个层次可以独立地扩展。桥接模式通过提供一个桥实现接口的方式来分离抽象部分和其实现部分,从而降低它们之间的耦合度。是一个扩展的抽象,提供了额外的功能,如静音。这种模式的优点在于,如果需要添加一个新的设备类型或控制方式,不需要修改现有的类,只需要扩展它们。这减少了维护成本,提高了系统的灵活性。

2024-05-19 09:29:24 675 1

原创 设计模式-6.适配器(Adapter)C++实现

适配器模式是一种结构型设计模式,它允许不兼容的接口之间进行交互。适配器充当两个不兼容的接口之间的桥梁,通过将一个类的接口转换成另一个类期望的接口来工作。

2024-05-18 08:53:50 501

原创 设计模式-5.单例(Singleton)C++实现

单例模式是一种创建型设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。这种模式确保全局有一个单一的实例,并且这个实例可以在整个程序中方便地访问。这种模式在需要控制资源访问或配置全局状态的场景中非常有用,但应谨慎使用,以避免过度依赖全局状态。

2024-05-17 09:08:55 429 1

原创 设计模式-4.原型模式(Prototype) C++实现

原型模式是一种创建型设计模式,它用于创建对象,通过复制一个已经存在的对象来创建新的对象,而不是通过实例化。原型模式允许你复制已有的对象,而无需使代码依赖它们所属的类。方法来获取克隆的对象。这种模式能够在运行时动态地添加或删除原型,同时避免了直接依赖具体类的实例化。

2024-05-16 10:14:36 656

原创 设计模式-3.工厂方法(Factory Method)C++实现

这个模式的关键在于将产品的创建过程封装在一个方法中,使得修改或扩展产品的创建过程不需要修改使用产品的代码。这样不仅可以减少系统中各部分之间的依赖关系,还可以提高系统的可维护性和可扩展性。工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但让子类决定要实例化的类是哪一个。工厂方法使一个类的实例化延迟到其子类。类的其他部分不需要知道具体的文档类型,从而使得系统更加灵活和可扩展。

2024-05-15 10:51:51 546

原创 设计模式-2.建造者(Builder) C++实现

建造者模式是一种创建型设计模式,它允许你将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。这种模式被用来构建一些复杂的对象,尤其是那些包含多个组成部分的对象。通过使用相同的构建过程可以生成不同的产品。类来获取一个完成的车辆对象,而无需知道具体的构建细节。这种方式特别有用于创建那些构造过程复杂的对象。以下是一个使用建造者模式的 C++ 实例,其中模拟构建一个简单的汽车对象,包括轮子、引擎和车身。

2024-05-14 11:03:52 406 1

原创 设计模式-1.抽象工厂(Abstract Factory) C++实现

抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。该模式允许客户端使用具体工厂的实例来创建其需要的产品对象,同时使客户端不依赖于具体产品的实现。

2024-05-13 09:52:39 590

原创 现代操作系统(第四版)课后习题-1.引论

在操作系统中,陷阱指令(也称为TRAP指令或系统调用指令)是一种特殊类型的指令,用于在用户程序和操作系统之间提供一种安全的交互机制。它允许用户程序请求操作系统提供的服务,如文件操作、网络通信或设备控制,而无需直接访问硬件或敏感数据。

2024-05-12 20:19:23 969

原创 Ubuntu系统上快速安装Miniconda的步骤

在终端中,使用以下命令之一来下载Miniconda安装脚本。按照屏幕上的指示完成安装。这包括阅读许可协议、选择安装位置以及选择是否将Conda初始化到您的shell中。这些步骤将帮助您在Ubuntu系统上快速安装Miniconda,从而可以方便地管理Python环境和包。),选择适用于Linux的安装脚本。根据您的系统架构(例如,64位),选择正确的版本。访问Miniconda的官方网站下载页(打开Ubuntu的终端。

2024-04-27 19:09:27 3648 2

原创 Ubuntu安装深度学习模型驱动的快捷步骤

在 Ubuntu 服务器上安装 NVIDIA RTX 显卡的驱动程序以进行深度学习涉及一系列的步骤,这些步骤包括准备操作系统、安装合适的 NVIDIA 驱动程序,以及安装 CUDA 和 cuDNN 库。

2024-04-27 19:01:48 1058

空空如也

空空如也

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

TA关注的人

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