Mudo C++网络库第四章学习笔记】的更多相关文章

C++多线程系统编程精要 学习多线程编程面临的最大思维方式的转变有两点: 当前线程可能被切换出去, 或者说被抢占(preempt)了; 多线程程序中事件的发生顺序不再有全局统一的先后关系; 当线程被切换出去回来继续执行下一条语句(指令)的时候, 全局数据(包括当前进程在操作系统内核中的状态)可能已经被其他线程修改了; 访问非法地址, 会产生段错误(segfualt); 在没有适当的同步的情况下, 多个CPU上运行的多个线程中的事件发生先后顺序是无法确定的; 在引入适当同步后, 事件之间才有了ha…
反思C++面向对象与虚函数 C++语言学习可以看<C++ Primer>这本书; 在C++中进行面向对象编程会遇到其他语言中不存在的问题, 其本质原因是C++ class是值语义, 而非对象语义; 朴实的C++设计 实用当头, 朴实为贵, 好用才是王道; C++ 是一门(最)复杂的编程语言, 语言虽复杂, 不代表一定要用复杂的方式来使用它; 不一定非得有基类和派生类的设计才是好设计; 一个类代表一个概念; 让代码保持清晰, 给我们带来了显而易见的好处; 不要因为某个技术流行而去用它, 除非它确…
muduo网络库简介 高级语言(Java, Python等)的Sockects库并没有对Sockects API提供更高层的封装, 直接用它编写程序很容易掉到陷阱中: 网络库的价值还在于能方便地处理并发链接; 网络核心库 muduo是基于Reactor模式的网络库, 其核心是个事件循环EventLoop,用于响应计时器和IO事件; muduo采用基于对象(object-based)而非面向对象(object-oriented)的设计风格; 网络附属库 网络库有一些附属模块, 它们不是核心内容,…
多线程服务器的适用场合与常用编程模型 进程间通信与线程同步; 以最简单规范的方式开发功能正确.线程安全的多线程程序; 多线程服务器是指运行在linux操作系统上的独占式网络应用程序; 不考虑分布式存储, 只考虑分布式计算; 进程与线程 进程(process)是操作系统里最重要的两个概念之一(另一个是文件), 粗略的讲, 一个进程是"内存中正在运行的程序"; 每个进程有自己独立的地址空间(adress space), "在同一个进程"还是"不在同一个进程&q…
muduo编程示例 muduo库是设计来开发内网的网络程序, 它没有做任何安全方面的加强措施, 如果在公网上可能会受到攻击; muduo库把主动关闭连接这件事分成两步来做: 如果主动关闭连接, 会先关本地写端, 等对方关闭之后, 再关闭本地读端; muduo Buffer类的设计与使用 muduo输入输出缓冲区的设计与实现; Unix/Linux上的五种IO模型: 阻塞(blocking); 非阻塞(non-blocking); IO复用(IO multiplexing); 信号驱动(signa…
高效的多线程日志 日志(logging)有两个意思: 诊断日志(diagnostic log), 常用日志库提供日志功能; 交易日志(transaction log), 用于记录状态变更, 通过回放日志可以逐步恢复每一次修改后的状态; 日志通常用于故障诊断和追踪(trace), 也可用于性能分析; 日志通常是分布式系统中事故调查时的唯一线索, 用来追寻蛛丝马迹, 查出原凶; Log Everything All The Time; 关于进程, 日志通常要记录: 收到每条内部消息的ID(还可以包括…
<Linux内核设计与实现>第四章学习笔记           ——进程调度 姓名:王玮怡  学号:20135116 一.多任务 1.多任务操作系统的含义 多任务操作系统就是能同时并发地交互执行多个进程的操作系统. 无论在单处理器或者多处理器机器上,多任务操作系统都能使多个进程处于堵塞或者睡眠状态,也就是说,实际上不被投入执行,直到工作确实就绪. 相反,这些进程利用内核阻塞自己,直到某一事件(键盘输入.网络数据.过一段时间等)发生. 2.多任务操作系统的分类 非抢占式多任务 抢占式多任务 3.…
                                                                    <Linux内核设计与实现>第四章学习笔记——进程调度 姓名:高艺桐  学号:20135109 一.多任务 1.多任务操作系统的含义 多任务操作系统就是能同时并发地交互执行多个进程的操作系统. 无论在单处理器或者多处理器机器上,多任务操作系统都能使多个进程处于堵塞或者睡眠状态,也就是说,实际上不被投入执行,直到工作确实就绪. 相反,这些进程利用内核阻塞自己,直…
Spring实战第四章学习笔记----面向切面的Spring 什么是面向切面的编程 我们把影响应用多处的功能描述为横切关注点.比如安全就是一个横切关注点,应用中许多方法都会涉及安全规则.而切面可以帮我们模块化横切关注点.而当我们要重用通用功能时,最常见的面向编程技术是继承或委托.但当整个应用都用相同的基类继承会导致整个对象体系脆弱,而委托会使调用变复杂.切面则提供了取代继承和委托的另一种方案.在使用面向切面编程时,我们仍然在一个地方定义通用功能,但是可以通过声明的方式定义这个功能要以何种方式在何…
决策树 前几天学习了<机器学习>的前三章,前三章介绍机器学习的基础知识,接下来,第四章到第十章介绍一些经典而常用的机器学习方法,这部分算是具体的应用篇,第四章介绍了一类机器学习方法——决策树. 3.1 基本流程 决策树(decision tree)是一类常见的机器学习方法.以二分类任务为例,我们希望从给定训练数据集学得一个模型用以对新示例进行分类,这个把样本分类的任务,可看作对“当前样本属于正类嘛?”这个问题的“决策”或“判定”过程.顾名思义,决策树,就是基于树结构来进行决策的.例如我们对一个…