- 博客(11)
- 资源 (6)
- 收藏
- 关注
原创 Linux epoll 与 Windows IOCP比较
前言epoll 和 IOCP(IO Completion Ports) 分别是 Linux 和 Windows 系统上的高效网络模型。相比其他网络模型,同样是 polling 方式,这两种模型有如下特点:在系统资源允许下,监控的文件描述符没有上限。多线程同时监视和修改文件描述符是可行的,少量的线程即可实现支持大量连接的服务端程序。这两种模型的事件通知会有一定开销。如果应用程序不需要太多的客户端连接,select 和 poll 是更合适的模型。epoll 和 IOCP 的设计目的是应付成千上万的连接
2022-01-15 23:50:57 2972
原创 C/C++ 实现内存泄露检测之一
前言当动态申请的内存在其管理者(指针)的生命周期结束后,没有被归还给操作系统时,就发生了内存泄露,“泄露”的内存在应用程序退出前无法被访问,且无法被归还。随着程序的持续地运行,“泄露”的内存越多,可用内存就越少,久而久之,应用程序将面临无法再动态申请内存的窘境,更严重将导致程序崩溃。为了避免这种现象的发生,除了在开发过程中进行正确地小心地管理内存外(事实上即使小心谨慎也难免出错),内存泄露检测工具将为我们提供更加有效的保障。该系列将探讨几种内存泄露检测的实现方式。这些实现方式的出发点就是对 mallo
2022-01-09 18:56:26 566
原创 C/C++ 编程中常见的内存错误
前言没有 Java 中垃圾回收机制,也没有 Rust 中的编译期类型检查机制,C/C++ 要求开发人员自己管理内存(合理申请内存,并及时归还),确保内存安全是应用程序开发者的责任。毕竟好的厨子不应该将厨房弄得一团糟;-)C/C++ 程序中各种因内存产生的错误大致有以下几种情况,这些错误一般出现在程序运行期间,有些错误一旦出现,往往是“致命”的。以下示例使用 C 语言风格,其中大部分实例将 malloc/realloc 替换成 new, free 替换成 delete 可以阐释 C++ 中类似的操
2022-01-09 12:06:59 707
原创 单例模式的线程安全
前言单例模式(Singleton)几乎是人尽皆知的设计模式了,它限制一个对象只能实例化一次,且该对象的生命周期一般与整个应用的生命周期一致(否则,单例模式完全可以被普通类对象替代)。单例对象应该允许多线程访问,确保单例对象是线程安全的十分有必要。单例由于其生命周期特点,一般被实现为指针对象或静态对象,下面将分别讨论这两种情况的线程安全实现。静态指针变量下面实现一个基本的单例对象:// Example 1class Singleton{private: Singleton() = de
2021-12-31 22:08:01 6526 2
原创 Linux IO 多路复用(select、poll、epoll)
Linux IO 模型 (select、poll、epoll)1. select 详解及优缺点2. poll 详解及优缺点3. epoll 详解及优缺点
2021-12-30 23:36:56 1065
原创 并发编程笔记
前言在程序设计过程中,难免涉及操作系统、多进程、多线程、数据库等领域。在这些领域内,确保对共享资源的异步操作不出差错,是每个程序开发者必须要考虑的问题。面对并发问题,除了需要谨慎和小心外,引入并发控制策略是解决问题的主要手段,常见的相关技术有锁、互斥量、信号量、原子操作等。一、锁(lock)1.1 概念锁是一个抽象概念,是一种保护共享资源访问的同步化技术。锁有两个操作:acquire 和 release。它一次最多只允许一个线程获取,一旦所有权被某一线程获取,其他线程只能等待该线程释放锁才能访问被保
2021-12-29 22:36:45 348
原创 Modern C++ 变长参数的展开
// 变长参数模板和变长参数// Code 来自 《现代 C++ 教程:高速上手 C++11/14/17/20》一书(欧长坤著),这里作为笔记记录。#include <iostream>#include <string>// 变长参数解包:/*************************//* Method 1: 递归模板函数 *//*************************/// 递归是非常容易想到的一种手段,也是最经典的处理方法。这种方法不断.
2021-02-19 14:44:36 372
原创 OpenCV之离散傅里叶变换
离散傅里叶变换是指傅里叶变换在时域和频域上都呈现出离散的形式,将时域信号的采样变换成为在离散时间傅里叶变换频域的采样。简单来说,对一张图像使用傅里叶变换就是将它分解成正弦和余弦两部分,也就是将图像从空间域转换到频域。在频域里,高频部分代表了图像的细节、纹理信息,而低频部分代表了图像的轮廓信息。傅里叶变换在图像处理中的应用:图像的增强与图像去噪、图像分割之边缘检测、图像特征提取、图像
2016-12-19 11:06:35 828
转载 OpenCV 输入输出XML和YAML文件
目录(?)[-]代码实现运行结果总结输入输出是sequence还是map读写自定义类型用到的类和函数FileStorageFileNodeFileNodeIterator在OpenCV的学习中,经常会用到文件的输入输出,特别是XML和YAML格式的输出文件,如果大家有做过人脸识别就可以体会到,用主分量分析法得到的特征脸、平均脸等等数据都会被保存成
2016-12-18 17:11:27 342
转载 Matlab风格的Plot类 for OpenCV
plot.h 头文件使用说明ploth 头文件使用说明功能说明使用CPlotPlot注功能Matlab style plot functions for OpenCV author libing64 && Jack Dong 原代码地址 : https://github.com/libing64/CPlot
2016-12-16 15:34:02 593
转载 OpenCV Mat属性type,depth,step
Mat的作用The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It can be used to store real or complex-valued vectors and matrices, grayscale or color image
2016-12-15 10:08:59 443
Modern-CPP-Programming-Cookbook-Second-Edition-master.zip
2021-02-10
Digital Image Processing (Third Edition) Rafael C. Gonzalez 原版电子文档-非扫描
2017-11-05
Python3.6.2中文教程
2017-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人