上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 25 下一页
摘要: 18.1 异常处理 异常处理(exception handling)机制,允许程序中独立开发的部分能够在运行时就出现的问题进行通信,并做出相应的处理。 异常使得我们能将问题的检测和解决过程分离开,传统C语言异常处理必须对每个函数返回的异常作处理,也就是检测和解决过程捆绑在一起。 这样做的优势在于: 阅读全文
posted @ 2022-02-14 16:42 明明1109 阅读(103) 评论(0) 推荐(0)
摘要: 题目来源:01背包 | 牛客网 描述 已知一个背包最多能容纳体积之和为v的物品。现有 n 个物品,第 i 个物品的体积为 vi , 重量为 wi。求当前背包最多能装多大重量的物品? 数据范围: 1≤v≤1000,1≤n≤1000,1≤n≤1000 , 1≤vi≤1000, 1≤wi≤1000 进阶: 阅读全文
posted @ 2022-02-13 23:55 明明1109 阅读(109) 评论(0) 推荐(0)
摘要: timerfd特点 timerfd的特点是将时间变成一个文件描述符,定时器超时时,文件可读。这样就能很容易融入select(2)/poll(2)/epoll(7)的框架中,用统一的方式来处理IO事件、超时事件。这也是Reactor模式的特点。 timerfd定时器与传统Reactor模式定时器 传统 阅读全文
posted @ 2022-02-12 13:39 明明1109 阅读(5005) 评论(0) 推荐(2)
摘要: 之前讲述了如何利用readdir/readdir_r,对指定目录进行遍历并输出,参见:Linux C 讲解系统调用readdir, readdir_r 以及如何遍历目录下的所有文件 这里讲述利用scandir和alphasort如何遍历指定目录,并对文件名排序输出。 scandir,alphasor 阅读全文
posted @ 2022-02-07 23:36 明明1109 阅读(4801) 评论(0) 推荐(0)
摘要: 系统调用基本概念 为了和用户空间上运行的进程进行交互,内核提供了一组接口,透过该接口,应用程序可以访问硬件设备和其他操作系统资源。这组接口称为系统调用。 系统调用是用户空间和硬件设备之间添加的一个中间层,主要作用: 1)为用户空间提供一种硬件的抽象接口。 2)保证系统的稳定和安全。 3)每个进程都运 阅读全文
posted @ 2022-02-02 00:07 明明1109 阅读(1120) 评论(0) 推荐(0)
摘要: 背景 Linux中断上半部,参见Linux中断和中断处理程序 。 Linux中断下半部,参见Linux中断下半部及推后执行的工作。 这部分讲Linux内核中断和中断处理程序。 [ ] 中断 硬件中断 -- 异步中断 中断本质上是一种电信号,由硬件设备发出,用于通知处理器特定事件。 不同设备对应不同中 阅读全文
posted @ 2022-01-30 14:00 明明1109 阅读(2821) 评论(0) 推荐(1)
摘要: 计时函数 用于获取当前(日期)时间: time(2) / time_t (秒) ftime(3) / struct timeb (毫秒) gettimeofday(2) / struct timeval (微妙) clock_gettime(2) / struct timespec (纳秒) gmt 阅读全文
posted @ 2022-01-26 13:16 明明1109 阅读(336) 评论(0) 推荐(0)
摘要: 这部分讲Linux内核定时器。 基本概念 系统定时器:一种可编程硬件芯片,能以固定频率产生中断。 定时器中断:系统定时器固定时间周期产生的中断,其中断处理程序负责更新系统时间,执行周期性任务。 动态定时器:一种用来推迟执行程序的工具。内核可以动态创建、销毁动态定时器。 节拍率(tick rate): 阅读全文
posted @ 2022-01-26 12:44 明明1109 阅读(2512) 评论(0) 推荐(0)
摘要: 这部分讲操作系统内核中的并发和同步问题。 为什么需要同步? 因为计算机中很多共享的资源有限,如共享内存,在同一时间被多个执行并发访问的话,有可能发生各个线程间相互覆盖共享数据的情况,造成访问数据处于不一致状态,从而造成系统不稳定的隐患,而且很难跟踪和调试。 而同步就是保护共享资源的手段,避免同一时刻 阅读全文
posted @ 2022-01-24 22:32 明明1109 阅读(194) 评论(0) 推荐(0)
摘要: Linux内核提供一组同步方法,用于避免共享数据之间的竞争: 内核态进程的非抢占性 原子操作 关中断 锁 [ ] 内核态进程的非抢占性 Linux内核是非抢占的:正在运行的进程处于内核态时,不会被抢占,即使来了优先级更高进程。 以下断言,在Linux中总是成立: 内核态运行的进程不会被其他进程取代, 阅读全文
posted @ 2022-01-23 23:56 明明1109 阅读(291) 评论(0) 推荐(0)
摘要: 基本概念 函数将一个或多个实参传递给其他函数,这个过程称为转发。 完美转发(perfect forwarding)是指转发过程中,保持被转发实参的所有原始性质,包括实参类型是否为const,左值 or 右值等。 转发 转发示例 编写一个转发的示例:翻转函数flip1能将2个参数逆序,传递给函数f。 阅读全文
posted @ 2022-01-19 00:22 明明1109 阅读(749) 评论(0) 推荐(1)
摘要: 目录什么是智能指针?shared_ptrshared_ptr基本用法初始化判定共享指针是否为空获取原始指针删除器使用shared_ptr的陷阱unique_ptrunique_ptr基本用法reset()与release()自定义make_uniqueunique_ptr与shared_ptr的区别 阅读全文
posted @ 2022-01-18 22:09 明明1109 阅读(2095) 评论(2) 推荐(0)
摘要: 异步操作简介 什么是异步操作,为何会有异步操作? 在C++中,不能直接从thread.join()得到结果,必须定义个变量,在线程执行时,对这个变量赋值,然后执行join(),过程相对繁琐。 Linux中有AIO(异步IO)做异步操作,C++中如何进行异步操作? 答:是有的,C++11提供了异步操作 阅读全文
posted @ 2022-01-17 16:38 明明1109 阅读(1621) 评论(0) 推荐(1)
摘要: 目录互斥量独占互斥量std::mutex递归互斥量 std::recursive_mutex带超时的互斥量std::timed_mutex及std::recursive_timed_mutex条件变量condition_variableunique_lock与lock_guardcall_once/ 阅读全文
posted @ 2022-01-16 23:22 明明1109 阅读(897) 评论(0) 推荐(0)
摘要: 目录读写锁基本概念读写锁与互斥锁的关系优先级策略接口实现使用2个mutex使用1个condition variable + 1个mutex使用1个mutex + 2个条件变量测试程序小结参考 读写锁基本概念 读写锁(readers-writer lock),又称为多读单写锁(multi-reader 阅读全文
posted @ 2022-01-08 20:00 明明1109 阅读(8833) 评论(0) 推荐(6)
摘要: 第43条:算法调用优先于手写的循环 对于许多C++程序员来说,编写一个循环比调用一个算法更自然,而且读懂循环代码比读懂mem_fun_ref或mem_fun更容易。为什么要优先调用算法,而不是手写循环呢? 因为三个理由: 效率:算法通常比程序员自己写的循环效率更高。 正确性:自己写循环比使用算法更容 阅读全文
posted @ 2021-12-29 11:33 明明1109 阅读(159) 评论(0) 推荐(0)
摘要: std::bind 之前这篇文章已经讲过C++ 参数绑定bind(适用于C++11以后),参见 C++ Primer学习笔记 - 参数绑定bind。 using namespace placeholders; // or using std::placeholders::_1; auto f = b 阅读全文
posted @ 2021-12-28 16:15 明明1109 阅读(941) 评论(0) 推荐(0)
摘要: 函数子、函数子类的基本概念 所有重载了函数调用操作符(operator())的类都是一个函数子类(又称函数类型)。 从这些类创建的对象被称为函数对象,或函数子(functor)。 也就是说,函数子类是一种class,而函数子是这个class的一个object。函数子类可用作模板的参数类型,而函数子则 阅读全文
posted @ 2021-12-25 00:23 明明1109 阅读(190) 评论(0) 推荐(1)
摘要: 插入迭代器 当通过insert、push_front、push_back等方式加入新对象到STL容器时,容器会自动扩充存储空间以存储这些对象。但STL容器并不总是能正确管理其存储空间。 例如, int transmogrify(int x); // 根据x生成一个新值 vector<int> val 阅读全文
posted @ 2021-12-23 23:09 明明1109 阅读(99) 评论(0) 推荐(0)
摘要: 第26条:iterator优先于const_iterator、reverse_iterator以及const_revserse_iterator STL标准容器提供4种不同的迭代器类型:iterator、const_iterator、reverse_iterator、const_reverse_it 阅读全文
posted @ 2021-12-21 23:26 明明1109 阅读(151) 评论(0) 推荐(0)
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 25 下一页