自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 WebServer----Server对象

Server对象简介Server类是整个WebServer最顶层的对象。是我们资源配置的上层接口,其内部有一个mianloop,EventLoop线程池对象、AcceptChannel对象由其创建并管理其生命周期。构造过程:Server::Server(EventLoop *loop, int threadNum, int port): loop_(loop), threadN...

2020-02-23 10:41:05 444

原创 WebServer----EventLoopThreadPool

EventLoopThreadPool简介顾名思义,该线程池对象用于管理EventLoopThread对象。其结构很简单,数据成员主要包含所创建和管理的EventLoopThread、Eventloop数组,其中EventLoopThread对象的生命周期由该线程池管理,因此持有他的shared_ptr指针。EventLoop* baseLoop_; //由主函数创建的mianloop...

2020-02-23 09:51:29 189

原创 WebServer----EventLoopThread

EvenvtLoopThread因为one loop one thread的两个结构就是 EventLoop 和 Thread ,所以EventLoopThread是此结构的面向对象的实现。他的数据成员包括Eventloop和Thread。此对象的生命周期由线程池对象管理。该对象的数据成员有: EventLoop *loop_; bool exiting_; Threa...

2020-02-23 09:33:52 253

原创 WebServer----EventLoop

EventLoop类介绍EventLoop是一个事件循环,遵循one-thread-one-loop,用于运行和管理epoll。只要该loop启动后,将一直循环这样一个事件循环。数据成员:bool looping_; //用于标志该loop是否运行起来//epoll结构,事件循环的核心部分。其生命周期由EventLoop控制shared_ptr<Epoll> polle...

2020-02-22 22:49:20 362

原创 WebServer----Epoll类

Epoll的构造Epoll类是事件循环EventLoop的核心结构,每一个EventLoop都持有一个Epoll分发器,因此Epoll对象的创建是在EventLoop的构造函数中完成的。EventLoop::EventLoop(): looping_(false), poller_(new Epoll()), ...//通过系统调用epoll_create1创建一个epoll...

2020-02-22 17:16:26 337

原创 WebServer----Channel类

Channel类每个channel类对一个套接字描述字负责,其与套接字描述符绑定的方式有两种:int _fd; //fd数据成员void setfd(int fd); //setfd成员函数Channel(EventLoop* loop, int fd); //构造函数int getfd(); //获取Channel绑定的fd包含四个回调函数,用于处理连...

2020-02-22 15:52:14 691

原创 OpenDDS在多台机器上使用IP+PORT方式连接DCPSInfoRepo

IP+PORT方式连接DCPSInfoRepo在多个发布者和订阅者的情况下,IP+PORT方式发现DCPSInfoRepo具有不用拷贝.ior文件的便利性;因此提倡使用。问题背景当我们在局域网的情况下是不能连接到DNS服务器的,所以无法进行FQDN(全称域名解析)。这个时候OpenDDS就会使用发现的短名称,如果短名称也发现失败,那么OpenDDS会从回环地址中解析名字。解决办法Op...

2019-10-14 18:34:47 3187

原创 OpenDDS+Windows7+Visual Studio 2017

安装环境系统:Windows7 (64 bit)编译器:Visual Studio 2017OpenDDS版本:3.13.21.安装Perl安装Perl,在windows下推荐安装ActivePerl,用于执行.pl脚本。首先下载ActivePerl下载地址,大小约21.4M,不过官网访问稍慢。之后需要注册账号后下载Windows平台的.exe安装包,安装的时候选择Custom安装到...

2019-08-29 21:45:51 1067

原创 ubuntu 19.04 下安装geant4.10.05

手把手教程 ubuntu 19.04 下安装geant4.10.050.安装cmake和一些编译geant4需要的依赖包snap install --classic cmake //安装cmakesudo apt-get install -y libexpat-devsudo apt-get install -y build-essen...

2019-07-04 21:51:45 5542 5

原创 LeetCode--313--超级丑数

313 超级丑数题目分析:这道题目与264 丑数II几乎一模一样,只是丑数的质因数不再是固定的2、3、5,而是通过数组给出。不过不影响解题。思路:开辟一个primes.size()大小的数组,每个元素初始化为0。其余步骤与 264 丑数II 一样。唯一需要注意的是,可能下一个丑数有不止一种产生方式 UglyNum[index[i]]*primes[i]==UglyNum[index[j]]*p...

2019-04-21 23:22:12 149

原创 LeetCode--264--丑数 II

264 丑数 II题目分析:题目要求我们找出第n个丑数,关于如何确定是不是丑数,在LeetCode 263题中已经有过介绍;那么本题增加的部分就是如何顺序找到第n个丑数,因此需要维护一个升序排列的丑数数组。思路:1. 既然在263题中,我们已经知道丑数由较小的丑数*一个质因数组成,那么也就是说 丑数*任意一个质因数 的结果都是丑数。每次从已有丑数产生的所有更大丑数从中找出最小的一个插入丑数数组...

2019-04-21 23:06:22 155

原创 LeetCode--263--丑数

263 丑数题目分析:先剧透一下,这道题目其实是为了后面的 丑数II、超级丑数做铺垫。关键是明白丑数一定是由一个较小的丑数与其中一个质因数的乘积所得。思路:既然 丑数=较小的丑数*质因数 那么就可以形成递归条件,丑数总是可以分解为 多个质因数的乘积 ;递归终止条件便是最小的丑数 1,下面上代码: bool isUgly(int num) { if(num<1) r...

2019-04-21 22:35:39 109

原创 LeetCode 树 路径总和相关题目总结

LeetCode树的路径总和相关题目总结1、LeetCode 112 路径总和 easy这道题属于路径和相关题目中最基本的一道,所以也是比较适合用来分析思路的,不用考虑其他细节,影响整体思路。分析:确定思路 一条路径是指从根节点到一个叶子节点的节点通路,因此可以借助二叉树的遍历思想,其中先序遍历是从根节点开始,一直遍历到叶子节点再回溯寻找第二个叶子节点;因此,用在这里很合适。刚刚好遍历完...

2019-03-30 11:00:29 390

原创 归并排序--原理解释和代码优化

归并排序原理介绍归并排序利用“分治”的思想,将一个长度为n的待排数组不断的二分为原来的一半;经过logn次之后,每段就将只剩下1个元素,这样的元素段一共有n段,至此,“归“的部分已经完成。(请结合下图理解)这部分的时间复杂度为logn。剩下的就是”并“的部分,每次”并“操作都对相邻两段内的元素进行排序,完成排序之后合并为一段,总段数变为一半,经过logn次合并排序之后,整个数组变为有序的一整段...

2019-03-18 21:16:26 597

原创 Effective C++ Item 49解析

一、基本知识在理解 item 49:了解new-handler的行为 之前必须要了解如下C++的基本知识函数指针函数指针的定义式:返回值类型 (*func)([形参列表])int func(int x); //申明一个函数int (*f) (int x); //申明一个函数指针f=func; //将func函数的首地址赋给函数指针f;f=0; ...

2019-03-17 19:52:56 186

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除