- 博客(40)
- 收藏
- 关注
原创 C++11新特性(十三)——默认函数控制=default与=delete
C++11的=default和=delete增强了对类默认函数的控制:=default可显式让编译器生成默认的构造、赋值、析构等特种成员函数,仅适用于这类函数;=delete可将函数标记为删除函数,禁止任何调用(包括成员/友元),还能阻止非预期的函数重载、模板实例化
2025-12-16 10:46:57
939
原创 C++11新特性(十二)——委托构造函数和继承构造函数
C++11 提供委托构造与继承构造两种简化类初始化的方式。委托构造允许同一类中构造函数链式调用,消除冗余代码,需避免闭环调用且应在初始化列表使用。继承构造通过using Base::Base让派生类直接复用基类构造函数,同时using也可引入基类被隐藏的重载函数,解决子类重写同名函数导致的基类重载不可用问题。
2025-12-16 10:04:59
384
原创 C++11新特性(十一)——可调用对象包装器和绑定器
C++11的std::function是可调用对象包装器,能统一处理函数、仿函数等(除类成员指针),可作回调函数。std::bind可绑定可调用对象及其参数,支持部分绑定(用占位符),二者配合可解决类成员函数/变量的包装问题,实现延迟调用与统一操作
2025-12-11 12:27:47
1105
原创 C++11新特性(十)——模板的优化
C++11优化了模板使用规则:模板右尖括号无需加空格,编译器会优先解析为模板参数结束符,而非右移操作;同时支持函数模板默认参数(此前仅类模板支持),函数模板默认参数无需置于参数表末尾,调用时优先自动推导类型,推导失败则用默认参数,类模板即便参数全默认仍需加<>实例化。
2025-12-10 13:18:36
129
原创 C++11新特性(九)——lambda表达式
C++11 的 lambda 表达式是匿名函数,语法为[capture](params) opt->ret{body;}。捕获列表支持多种方式,可按值或引用捕获外部变量,类中可通过this访问成员。返回值可由编译器自动推导,但不支持列表初始化推导。没有捕获任何外部变量的 lambda 可作函数指针,有捕获的可结合std::function使用,mutable可修改值拷贝的变量。
2025-12-10 12:38:21
884
原创 C++11新特性(八)——基于范围的for循环
C++11 新增基于范围的 for 循环,语法为for(declaration : expression),可遍历容器、数组等对象。遍历中用引用可修改元素,加const则仅可读且效率更高。遍历关联容器时,auto推导为pair类型;set等只读容器无法修改元素,map键值不可变更。该循环仅初始化时获取一次遍历对象,提升了遍历便捷性与效率。
2025-12-09 10:17:10
340
原创 C++11新特性(七)——列表初始化
C++11 新增统一初始化方式,支持用{}对对象、数组、new 分配的内存等进行初始化,形式更灵活。其需区分聚合体与非聚合体:聚合体可直接用列表初始化成员,非聚合体则需自定义构造函数。此外,借助std::initializer_list可实现函数或构造函数接收任意长度同类型参数
2025-12-09 10:01:37
658
原创 C++11新特性(六)——using的使用
using语法和typedef一样,并不会创建出新的类型,它们只是给某些类型定义了新的别名。using相较于typedef的优势在于定义函数指针别名时看起来更加直观,并且可以给模板定义别名。
2025-12-08 10:44:45
266
原创 C++11新特性(五)——final和override
C++11的final和override关键字用于规范类的继承与虚函数重写。final可修饰虚函数(阻止子类重写)或类(禁止该类被继承),需置于函数/类后;override仅修饰子类重写的虚函数,明确标识重写意图,且会检查函数签名是否与基类虚函数一致,不匹配则报错
2025-12-08 10:22:37
393
原创 C++11新特性(三)——常量表达式修饰符constexpr
C++11新增constexpr关键字,用于修饰编译阶段可计算的常量表达式,区分开const的“只读”语义。constexpr可修饰内置类型常量、满足特定条件的函数、模板函数及空函数体的构造函数。模板函数若不满足常量表达式要求,constexpr会自动失效。
2025-12-07 11:00:26
566
原创 C++11新特性(二)——指针空类型
C++ 中 NULL 因底层定义为 0,在函数重载场景会匹配 int 类型而非指针类型,存在局限性。C++11 引入关键字 nullptr,其类型为 nullptr_t,专用于初始化空指针,可隐式转换为任意指针类型,且无法隐式转为整形,完美解决 NULL 的重载匹配问题,C++11 中推荐用 nullptr 初始化空指针。
2025-12-06 13:27:07
343
原创 C++11新特性(一)——原始字面量
C++11 新增原始字符串字面量 R"xxx (字符串列表) xxx",可直接表示字符串实际含义,无需转义字符。需注意 () 两侧辅助字符串需完全一致(长度、顺序),实际使用中通常省略该字符串,仅用 R"(内容)" 即可。
2025-12-06 13:01:19
308
原创 C++11新特性(四)——自动类型推导
C++11 重构 auto 与 decltype 关键字,新增返回类型后置语法,形成高效自动类型推导体系。auto 作为类型占位符,需通过初始化推导类型,可结合指针、引用及 const,适用于 STL 遍历、泛型编程,但有函数参数、类非静态成员等使用限制。decltype 编译期推导表达式类型且不计算值,能保留原始类型,适配复杂泛型场景。返回类型后置(auto func(...) -> decltype(表达式))解决泛型函数返回类型依赖形参的问题。
2025-12-05 14:35:20
849
原创 Linux DBus通信机制
本文详细介绍了DBus进程间通信机制及其技术实现。DBus采用总线形式实现进程间通信,核心组件包括守护进程dbus-daemon、服务名、对象路径和接口名。文章阐述了信号发送/接收、远程方法调用等核心功能,并提供了完整的服务端和客户端示例代码。服务端示例展示了注册服务、处理远程调用和发送信号等功能,客户端示例演示了发送请求和接收信号的过程。通过该文可以全面了解DBus的工作原理、API使用方法和实际应用场景。
2025-12-05 12:32:48
1747
原创 Linux网络编程(十七)——Libevent框架
17 Libevent框架17.1 Libevent框架使用流程17.1.1 创建底座(event_base)17.1.2 创建事件(event_new)17.1.3 添加/删除/释放事件17.1.4 循环监听事件满足17.1.5 释放底座(event_base_free)17.1.6 一些其他相关函数17.1.7 综合案例17.2 未决和非未决17.3 带缓冲区的事件bufferevent17.3.1 bufferevent事件的原理17.3.2 带缓冲区事
2025-04-08 16:29:30
1213
原创 Linux网络编程(十六)——多线程服务器端的实现
16 多线程服务器端的实现16.1 理解线程的概念16.1.1 引入线程的背景16.1.2 线程和进程的差异16.2 线程创建及运行16.2.1 线程的创建和执行流程16.2.2 可在临界区内调用的函数16.2.3 工作(Worker)线程模型16.3 线程存在的问题和临界区16.3.1 多个线程同时访问同一变量的问题16.3.2 临界区位置16.4 线程同步16.4.1 同步的两面性16.4.2 互斥量(互斥锁)16.4.3 信号量16.5 线程
2025-04-08 16:19:37
880
原创 Linux网络编程(十五)——优于select的epoll
15 优于select的epoll15.1 epoll理解及应用15.1.1 基于select的I/O复用技术速度慢的原因15.1.2 select的优点15.1.3 实现epoll时必要的函数和结构体15.1.4 epoll_creat115.1.5 epoll_ctl15.1.6 epoll_wait15.1.7 基于epoll的回声服务器端15.2 条件触发和边缘触发15.2.1 条件触发和边缘触发的区别在于发生事件的时间点15.2.2 掌握条件触发的事件特
2025-04-07 10:39:49
890
原创 Linux网络编程(十四)——关于I/O流分离的其他内容
14 关于I/O流分离的其他内容14.1 分离I/O流14.1.1 2次I/O流分离14.1.2 分离 “流” 的好处14.1.3 “流”分离带来的EOF问题14.2 文件描述符的复制和半关闭14.2.1 终止“流”时无法半关闭的原因14.2.2 复制文件描述符14.2.3 复制文件描述符 dup&dup214.2.4 复制文件描述符后“流”的分离
2025-04-07 09:41:22
1055
原创 Linux网络编程(十三)——套接字和标准I/O
13 标准I/O函数的有点13.1 标准I/O函数的优点13.1.1 标准I.O函数的两个优点13.1.2 标准I/O函数和系统函数之间的性能对比13.1.3 标准 I/O 函数的几个缺点13.2 使用标准I/O函数13.2.1 利用fdopen函数转换为FILE结构体指针13.2.2 利用fileno函数转换为文件描述符13.3 基于套接字的标准I/O函数使用
2025-04-02 11:53:50
1010
原创 Linux网络编程(十二)——多播与广播
12 多播与广播12.1 多播12.1.1 多播的数据传输方式及流量方面的优点12.1.2 路由(Routing)和 TTL(Time to Live,生存时间)以及加入组的办法12.1.3 实现多播 Sender 和 Receiver12.2 广播12.2.1 广播的理解及实现方法
2025-04-02 10:41:13
794
原创 Linux网络编程(十一)——多种I/O函数
11 多种I/O函数11.1 send & recv 函数11.1.1 Linux 中的 send & recv11.1.2 MSG_OOB:发送紧急消息11.1.3 紧急模式工作原理11.1.4 检查输入缓冲11.2 readv & writev 函数11.2.1 使用 readv & writev 函数11.3.2 合理使用 readv & writev 函数
2025-03-28 09:45:46
642
原创 Linux网络编程(十)——I/O复用
10 I/O复用10.1 基于I/O复用的服务器端10.1.1 什么是复用10.1.2 复用技术在服务器端的应用10.2 理解 select 函数并实现服务端10.2.1 select 函数的功能和调用顺序10.2.2 设置文件描述符10.2.3 设置检查(监视)范围及超时10.2.4 调用select函数后查看结果10.2.5 select 函数调用示例10.2.6 实现I/O复用服务器端
2025-03-28 09:13:01
909
原创 Linux网络编程(九)——进程间通信
9 进程间通信9.1 进程间通信的概念9.1.1 通过匿名管道实现进程间通信9.1.2 通过管道进行进程间双向通信9.2 运用进程间通信9.2.1 保存消息的回声服务器
2025-03-27 09:36:32
454
原创 Linux网络编程(八)——多进程服务器端
8 多进程服务器端8.1 进程概念及应用8.1.1 并发服务器端实现方法8.1.2 理解进程8.1.3 进程ID8.1.4 通过调用fork函数创建进程8.2 进程和僵尸进程8.2.1 销毁僵尸进程1:利用wait函数8.2.2 销毁僵尸进程2:使用waitpid函数8.3 信号处理8.3.1 向操作系统求助8.3.2 信号与 signal 函数8.3.3 利用sigaction函数进行信号处理8.3.4 利用信号处理技术消灭僵尸进程8.3.5 通过f
2025-03-27 09:24:19
3622
1
原创 Linux网络编程(七)——套接字的多种可选项
文章目录7 套接字的多种可选项7.1 套接字可选项和I/O缓冲大小7.1.1 套接字多种可选项7.1.2 getsockopt & setsockopt7.1.3 SO_SNDBUF & SO_RCVBUF7.2 地址再分配 SO_REUSEADDR7.2.1 发生地址分配错误(Binding Error)7.2.2 Time-wait状态7.2.3 地址再分配7.3 TCP_NODELAY7.3.1 Nagle算法7.3.2 禁用Nagle算法
2025-03-26 10:01:30
832
原创 LInux 网络编程(六)——域名及网络地址
6 域名及网络地址6.1 域名系统6.1.1 什么是域名6.1.2 DNS服务器6.2 IP地址和域名之间的转换6.3 利用IP地址获取域名
2025-03-26 10:01:10
861
原创 Linux 网络编程(五)——如何优雅的断开套接字连接
调用 close 函数的会关闭 I/O 流,这样也会向对方发送 EOF ,但此时无法再接受对方传输的数据。例如,主机 A 发送完最后的数据后,调用 close 函数断开最后的连接,之后主机 A 无法再接受主机 B 传输的数据。最终,由主机 B 传输的、主机 A 必须要接受的数据也销毁了。我们假设这样一个场景:“一旦客户端连接到服务器端,服务器端将约定的文件传给客户端,客户端收到后发送字符串 “Thankyou' 给服务器端。其中一个主机的输入流与另一个主机的输出流相连,而输出流则与另一个主机的输入流相连。
2025-03-25 14:00:00
707
原创 Linux 网络编程(四)——基于UDP的服务器端/客户端
4 基于UDP的服务器端/客户端4.1 UDP套接字的特点4.2 UDP协议适用场景4.3 基于UDP数的I/O函数4.4 基于UDP的回声服务器端/客户端4.5 UDP的数据传输特性4.6 已连接UDP套接字与未连接UDP套接字(可略过)
2025-03-25 11:00:00
699
原创 Linux 网络编程(三)——基于TCP的服务器端/客户端
3 基于TCP的服务器端/客户端3.1 TCP 服务器端的默认函数调用顺序3.2 TCP客户端的默认函数调用顺序3.3 基于TCP的服务器端/客户端函数调用关系3.4 实现迭代服务器端/客户端3.5 回声客户端完美实现3.5.1 回声客户端问题解决方法3.5.2 如果问题不在回声客户端:定义应用层协议
2025-03-24 09:30:00
1076
原创 Linux网络编程(一)—— 基于Linux的文件操作
介绍Linux网络编程中文件操作的基础知识,涵盖标准I/O库函数(如fopen、fputs)和系统I/O调用(如open、write),并提供了综合案例
2025-03-24 09:00:00
422
原创 Linux 网络编程(二)——套接字编程简介
2 Socket 套接字2.1 什么是 Socket2.2 Socket编程的基本操作2.3 地址信息的表示2.4 网络字节序和主机字节序的转换2.4.1 字节序转换2.4.2 网络地址初始化与分配2.5 INADDR_ANY2.6 Socket 编程相关函数2.7 C标准中的 main 函数声明2.8 套接字应用示例
2025-03-24 09:00:00
1204
原创 JavaScript学习笔记(三)
本篇文章主要记录了 JavaScript 的部分基础进阶内容,包括对象、内置对象(Math对象、Date对象、字符串对象、数组对象等)、简单类型与复杂类型的概念、相关代码、应用以及注意事项等
2022-10-10 22:48:03
288
原创 JavaScript学习笔记(二)
本篇文章主要记录了 JavaScript 的部分基础内容,包括函数、作用域、以及预解析的概念、相关代码、应用以及注意事项等
2022-10-05 06:00:00
226
原创 JavaScript学习笔记(一)
本篇文章主要记录了 JavaScript 的部分基础内容,包括变量、数据类型、运算符、流程控制、循环以及数组的相关代码、应用以及注意事项等。
2022-10-02 16:00:00
647
原创 CSS 学习笔记(二)
本篇文章主要记录了 CSS 的部分进阶内容,包括 CSS 的三大特性、盒子模型、圆角边框、盒子阴影、浮动以及定位的相关代码、应用以及注意事项等,目的主要是为了帮助自己记录学习,同时也把文章分享出来,供大家参考学习。
2022-09-24 06:00:00
4664
原创 CSS 学习笔记(一)
本篇文章主要记录了 CSS 的部分基础内容,包括 CSS 的基础选择器、字体属性、文本属性、复合选择器、显示模式以及背景的相关代码、应用以及注意事项等,目的主要是为了帮助自己记录学习,同时也把文章分享出来,供大家参考学习。
2022-09-15 13:00:00
392
原创 【语义分割】PSPNet
pyramid scene parsing network(PSPNet)模块能够聚合不同区域的上下文信息,从而提高获取全局信息的能力,此外,作者还提出了一种深度监督损失函数的优化策略(optimization strategy with deeply supervised loss)
2022-01-20 13:23:57
2534
原创 【语义分割】U-Net++
该论文提出了一种新的、更强大的医学图像分割体系结构U-Net + + 。其本质上是一个有着Encoding 和 Decoding 的深度监督网络,Encoding 和 Decoding 子网络通过一系列嵌套的、密集的跳跃路径连接。
2022-01-07 14:36:24
4877
1
原创 【语义分割】初识U-Net
U-Net可以说是当今时代下一个炙手可热的网络模型,作为分割领域的一种基础网络,其代表了一种高性能的基础网络设计架构,很多网络为了延续U-Net的核心思想,加入了新的模块或者融入其他设计理念设计而成。如今,当代的所有图像分割问题,人们都会尝试着用各种U-Net网络架构看看效果。
2022-01-01 14:23:49
3593
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅