![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
Baymax_yan
C++,后台服务器,机器视觉,图像处理
展开
-
后台开发核心技术与应用实践读书笔记(九)
后台开发核心技术与应用实践学习笔记(九)第9章 多线程多进程频繁上下文切换会严重影响系统性能;进程间通信要求复杂的系统实现同一进程内部的多个线程共享该进程的所有资源,通过线程可以支持同一个应用程序内部的并发,免去了进程频繁切换的开销;并发任务间的通信变得简单9.1 多线程是什么单线程一个进程只有一个控制权(函数调用时,该函数获得控制权),多线程允许有多个控制权多线程的进程再内存中...原创 2019-04-26 14:03:15 · 337 阅读 · 0 评论 -
Linux 多线程服务端编程读书笔记(三)
Linux 多线程服务端编程笔记(三)第三章 多线程服务器的适用场合与常用编程模型1、进程与线程每个进程都有自己独立的地址空间线程的特点是共享地址空间,从而有效的共享数据。多个进程能有效的共用代码段(操作系统可以映射为同样的代码段),但不能共享数据多线程的价值是为了更好的发挥多核处理器效能2、单线程服务器的常用编程模型用模型: non-blocking IO + IO mult...原创 2019-05-25 15:49:38 · 337 阅读 · 0 评论 -
Linux 多线程服务端编程读书笔记(四)
Linux多线程服务端编程笔记(四)第四章 C++多线程系统编程精要1、多线程编程最大的思维方式的转变有两点当前线程可能随时会被切换出去,被抢占多线程程序中事件的发生顺序不再是全局统一的先后关系2、 多线程程序的正确性不能依赖任何一个线程的执行速度不能通过原地等待(sleep)来假定其他线程事件已经发生,必须通过适当的同步来让当前事件能够看到其他线程执行的结果无论线程执行的快...原创 2019-05-25 15:50:24 · 243 阅读 · 0 评论 -
Linux 多线程服务端编程读书笔记 (五)
Linux 多线程服务端编程笔记(五)第五章 高效的多线程日志1、 两种日志交易日志诊断日志2、 关键进程记录的日志日志通常需要记录:收到的每条内部消息的 ID、关键字段、长度、hash 值等。收到的每条外部消息的全文。发送消息的全文,每条消息都有全局唯一的id关键内部状态的变更另外:每条日志都有时间戳一个日志库大致分为:前端 - 生成日志;后端 - 把日志写到...原创 2019-05-25 15:50:57 · 432 阅读 · 1 评论 -
Linux 多线程服务端编程读书笔记(六)
Linux多线程服务端编程笔记(六)从这一章开始开始探究muduo网络库部分第六章 muduo网络库简介1、 muduo网络库的一些介绍muduo 是基于 Reactor 模式的网络库,其核心是个事件循环 EventLoop,用于响应计时器和 IO 事件。muduo 采用基于对象(object- based)而非面向对象( objectoriented)的设计风格,其事件回调接口多以 ...原创 2019-05-25 15:51:34 · 330 阅读 · 0 评论 -
Linux 多线程服务端编程读书笔记(七)
Linux 多线程服务端编程读书笔记(七)第七章 muduo编程示例1、UNP 中五个简单的示例discard:丢弃所有收到的数据,简单的长连接TCP应用层协议void DiscardServer::onMessage(const TcpConnectionPtr& conn, Buffer* buf, ...原创 2019-05-25 22:13:12 · 260 阅读 · 0 评论 -
Linux 多线程服务端编程读书笔记(八)
Linux 多线程服务端编程读书笔记(八)第八章 muduo 网络库设计与实现 这一章从0开始实现一个类似muduo的基于Reactor模式的C++网络库1、 Evenloop类one loop per thread 顾名思义每个线程都只能有一个Evenloop对象。故构造之前要检查当前线程是否已经创建其构造函数会记住本对象所属的线程,创建了Evenloop对象的线程时IO线程,主要...原创 2019-05-26 19:53:05 · 227 阅读 · 0 评论 -
C++后台开发相关问题
C++后台开发相关问题1、请你说一下rector模式的组成reactor模型要求主线程只负责监听文件描述上是否有事件发生,有的话就立即将该事件通知工作线程,除此之外,主线程不做任何其他实质性的工作,读写数据、接受新的连接以及处理客户请求均在工作线程中完成。其模型组成如下:1)Handle:即操作系统中的句柄,是对资源在操作系统层面上的一种抽象,它可以是打开的文件、一个连接(Socket)、...原创 2019-06-06 15:29:05 · 272 阅读 · 0 评论 -
Reactor模式
本文截取自:https://blog.csdn.net/plgy_Y/article/details/80472694无论是C++还是Java编写的网络框架,大多数都是基于Reactor模式进行设计和开发,Reactor模式基于事件驱动,特别适合处理海量的I/O事件。1.2.1. 单线程模型Reactor单线程模型,指的是所有的IO操作都在同一个NIO线程上面完成,NIO线程的职责如下:1...转载 2019-06-09 21:51:34 · 191 阅读 · 1 评论 -
关于IO多路复用函数(select、poll、epoll)的一些理解
关于IO多路复用函数(select、poll、epoll)的一些理解一、阻塞现象什么是阻塞现象? 当一个数据流中再也没有数据,read的时候,或者,我们的流中写满了数据在去write的时候,即无数据可读和无空间可写的尴尬现象,称为阻塞现象阻塞等待,非阻塞忙轮询比如这个例子,送快递与收快递的例子阻塞等待相当于快递员在送快递的过程中,客户可以空出大脑睡大觉(不占用CPU的宝贵时...原创 2019-06-10 09:05:48 · 368 阅读 · 0 评论 -
linux 多线程服务端编程读书笔记(二)
linux 多线程服务端编程读书笔记(二)第二章 线程同步精要1、线程同步思想原则尽量最低限度地共享对象,减少需要同步的场合。如果确实需要,优先考虑共享 immutable 对象。使用高级的并发编程构建不得已必须使用底层同步原语(primitives)时,只用非递归的互斥器和条件变量,慎用读写锁,不要用信号量。除了使用 atomic 整数之外,不自己编写 lock-free 代码,也...原创 2019-05-24 19:14:49 · 338 阅读 · 1 评论 -
linux 多线程服务端编程读书笔记(一)
linux 多线程服务端编程读书笔记(一)第一章 线程安全的对象生命期管理1、class线程安全的三个条件:多个线程访问表现出正确的行为无论操作系统如何调度,以及线程的执行顺序如何调用端代码不需要额外的同步与协调动作由此,STL大多数的class都不是线程安全的,需要外部加锁才能同时访问MutexLock与MutexLockGuard2、线程安全的对象构造方法...原创 2019-05-24 17:47:50 · 750 阅读 · 0 评论 -
后台开发核心技术与应用实践读书笔记(七)
后台核心技术开发与应用实践读书笔记(七)第4章 网络IO模型7.0 IO操作 不同的IO设备有不同的特点同步IO与异步IO同步:必须等到IO操作完成后控制权才返回给用户进程异步:无需等IO操作完成,就将控制权返回给用户进程当一个IO操作发生时(如read)会涉及两个对象调用这个IO的进程系统内核当一个read操作发生时,会经历两个阶段:等待数据准备将数...原创 2019-04-25 15:05:04 · 256 阅读 · 0 评论 -
后台开发核心技术与应用实践读书笔记(十)
后台核心技术开发与应用实践读书笔记(十)第10章 进程10.1 程序与进程进程结构:代码段:存放程序代码的数据,数个进程运行同一个程序可以使用同一个代码段数据段:存放全局变量、常量、静态变量堆栈段:用于函数调用,存放函数参数与局部变量。另外还包括了PCB,它位于继承核心堆栈的底部不额外分配空间,是进程的唯一标志。系统通过PCB对进程进行管理和调度程序转化为进程的步骤内核将...原创 2019-04-26 14:04:31 · 322 阅读 · 0 评论 -
后台开发核心技术与应用实践读书笔记(十一)
后台核心技术开发与应用实践读书笔记(十一)第11章 进程间通信11.1 管道两进程间单向通信机制。也称为半双工管道无名管道特点数据只能一个进程流入另一个(读写);双工通信要建立两个只用于父子进程与兄弟进程(亲缘关系)没有名字,要事先约定好数据格式有名管道(FIFO)特点(相对于无名)使不相关的两个进程实现彼此通信可以通过路径名来指定FIFO严格遵循先进先出规...原创 2019-04-26 14:09:38 · 342 阅读 · 0 评论 -
后台开发核心技术与应用实践读书笔记(十二)
后台核心技术开发与应用实践读书笔记(十二)第12章 HTTP协议12.1 HTTP协议工作流程HTTP协议与HTTPS协议的区别http默认端口号是80,https为443http是基于传输层的TCP协议,https是基于TLS与SSL上面的一次http操作成为一个事务,其工作过程为:首先建立客户机与服务器的连接建立连接后,客户机发送一个请求给服务器服务器接收到请...原创 2019-04-26 14:12:50 · 535 阅读 · 0 评论 -
后台开发核心技术与应用实践读书笔记(三)
后台核心技术开发指南与应用实践读书笔记(三)第3章 常用的STL使用3.1 STL是什么 STL是一个标准模板库,是一个高效的C++程序库3.2 stringstring类的实现使用strlen、strcpy、strcat、strcmp等,注意判NULL下面是一道面试题#include "stdafx.h"#include <string.h>class S...原创 2019-04-26 15:47:26 · 147 阅读 · 0 评论 -
后台开发核心技术与应用实践读书笔记(五)
后台核心技术开发与应用实践读书笔记(五)第五章 调试5.1 strace通过跟踪系统调用观察程序在后台所做的事情跟踪信号传递统计系统调用5.2 gdb常用的调试命令 命令 描述 backtrace(或bt) 查看各级函数调用及参数 finish 连续运行到当前函数返回为止,然后停下来等待命令 frame(或f) 帧编号 选择...原创 2019-04-26 17:49:36 · 435 阅读 · 0 评论 -
后台开发核心技术与应用实践读书笔记(八)
后台核心技术开发与应用实践读书笔记(八)第8章 网络分析工具8.1 ping 使用ping检查端对端网络的联通性8.2 tcpdump可以将网络中传送的数据包的“头”完全截取下来提供分析,支持对协议、主机、网络和端口的过滤tcpdump使用tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件...原创 2019-04-26 19:58:09 · 466 阅读 · 0 评论 -
后台核心技术开发与应用实践读书笔记总结
后台核心技术开发与应用实践读书笔记总结一、读书感受 《后台开发核心技术与应用实践》这本书我也是从牛客网上一位后台大佬上得知的。是由腾讯员工写的,很像博客于是我第二遍读的时候干脆写成博客的形式吧,以便后来找工作面试之前读一读。虽然网上说这本书评价不是很好,可能因为讲的不够详细吧,但是讲的比较全面,涉及了后台方面的方方面面,总结还可以,也比较容易明白。此次读书笔记也参考了别人的博客,但大多数是书...原创 2019-04-26 20:52:17 · 203 阅读 · 0 评论 -
后台开发核心技术与应用实践读书笔记(一)
后台核心技术开发与应用实践读书笔记(一)C++编程常用技术1.1 第一个C++程序#include<>与#include” “后者搜索当前目录,在搜索标准目录#include与#include<iostream.h>两者是不同的,前者是C++标准为了与C语言区别开,也为了正确的命名空间,规定的头文件不带.h;1.2 函数函数的定义函数重...原创 2019-04-24 15:20:04 · 627 阅读 · 0 评论 -
后台开发核心技术与应用实践读书笔记(二)
后台核心技术开发与应用实践读书笔记(二)第2章 面向对象的C++2.1 类与对象概念成员函数封装性把数据和数据相关的操作封装在类里,只对可信的类或对象开放构造函数数据成员不能再类中初始化必须在构造函数中类中可以定义不同的构造函数以提供不同的初始化方式(重载)注意要在声明构造函数参数时指定默认参数值,而不是在定义中如果定义了全是默认参数的构造函数,则不能定义重...原创 2019-04-24 17:43:32 · 203 阅读 · 0 评论 -
后台开发核心技术与应用实践读书笔记(四)
后台核心技术开发与应用实践读书笔记(四)第4章 编译4.1 编译与链接 过程:预处理->编译->汇编->链接预处理:主要处理那些源代码文件只能够的以”#”开始的预编译指令。比如“#include”、“#define”,过滤所有注释,添加行号,保留#pragma编译器指令等,最后生成一个.i文件编译:编译器扫描(词法分析)、语法分析、语义分析、源代码优化、代码生成和...原创 2019-04-24 22:18:36 · 176 阅读 · 0 评论 -
后台开发核心技术与应用实践读书笔记(六)
后台核心技术开发与应用实践读书笔记(六)第6章 TCP协议6.1 TCP协议网络模型七层(IOS)五层四层(TCP/IP)应用层表示层会话层应用层应用层传输层运输层传输层网络层网络层网间层数据链路层数据链路层网络接口(链路层)应用层物理层 当然讨论最多的是TCP/IP模型TCP头部...原创 2019-04-25 12:07:03 · 261 阅读 · 0 评论 -
NetServer开发文档(一)
NetServer开发笔记(一)一、 锁的设计1. MutexLock的设计是对pthread_mutex的封装,包含的头文件是pthread.h数据成员:pthread_mutex_t mutex函数成员:+MutexLock()+~MutexLock()+lock()+unlock()+get()2. MutexLockGuard的设计以RALL的方式对Mut...原创 2019-06-30 21:44:14 · 434 阅读 · 4 评论