自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何衡量一个服务器的好坏(小白科普向)

写在前面,窃以为衡量服务器的标准不仅仅只限于服务器的性能,更重要的是性价比。举个例子,最近dmzj的土豆田(服务器)一直在反复的刨地(维护升级),但如果按照阿里的服务器配置,明显的会有大材小用的感觉。因为dmzj的用户本来就不多,会造成大量的服务器资源,开发成本,硬件成本的浪费。说白了就是够用就行,合适的才是最好的。服务器的性能指标有很多,我们先介绍一些基本概念,再来看看衡量服务器性能的正确姿...

2019-04-17 17:43:49 1859

原创 vector <bool>及其相关

std::vector<bool>template < class T, class Alloc = allocator<T> > class vector; // generic templatetemplate <class Alloc> class vector<bool,Alloc>; // b...

2019-03-30 13:58:56 862 2

原创 HTTP请求和响应

web服务器是在物理服务器基础上的具有服务端功能的网络连接程序,简而言之就是处理客户端发来的各种请求然后根据服务器的逻辑处理返回一个结果给客户端。在web服务器和客户端之间的通信是基于HTTP协议进行的。而客户端可以是浏览器也可以是支持HTTP协议的APP。 客户端发送一个HTTP请求到服务器的请求消息包括以下格式: 请求行(request line)、请求头部(header)、空行和请...

2019-02-27 01:23:43 365

原创 如何实现一个简单的web服务器(三)

 I/O复用技术是重要的提高服务器工作效率和性能的手段,Linux下实现I/O复用的系统调用主要有select、poll和epoll。  首先我们来看一下select的函数原型和常用的宏:#include&lt;sys/select.h&gt; int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptf...

2019-02-27 01:10:21 385

原创 如何实现一个简单的web服务器(二)——线程池

目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执...

2019-02-27 00:54:16 773

原创 两种高效的并发模式

半同步/半异步模式 半同步/半异步模式中的同步和异步和前面的IO模型中的同步和异步是完全不用的概念。在IO模型中,同步和异步区分的是内核向应用程序通知的是何种IO事件(是就绪事件还是完成事件),以及该由谁来完成IO读写(是应用程序还是内核)。在并发模式中,同步指的是程序完全按照代码序列的顺序执行,异步指的是程序的执行需要由系统事件来驱动。常见的系统事件包括中断 信号等。 按照同步...

2019-02-27 00:34:34 256

原创 Reactor

Reactor是这样一种模式,它要求主线程只负责监听文件描述上是否有事件发生,有的话就立即将该事件通知工作线程(逻辑单元,下同)。除此之外,主线程不做任何其他实质性的工作。读写数据,接受新的连接,以及处理客户请求均在工作线程中完成。使用同步I/O模型(以epoll_wait为例)实现的Reactor模式的工作流程是1)主线程往epoll内核事件表中注册socket上的读就绪事件。2)主线程...

2019-02-26 23:36:57 249

原创 如何实现一个简单的web服务器(一)————简单了解TCP

TCP建立连接(三次握手) 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。最初两端的TCP进程都处于CLOSED关闭状态,A主动打开连接,而B被动打开连接。(A、B关闭状态CLOSED——B收听状态LISTEN——A同步已发送状态SYN-...

2019-02-26 21:19:17 1230

原创 暑假留校总结(虽然说是总结但其实是碎碎念)

今天八月三十一了。。。暑假要结束了虽然感觉甚至没有暑假。现在回忆一下这一个月来的生活,下面进入碎碎念模式。。 啊,其实感觉和其他人相比我算是比较舒服的了,毕竟可以天天晚上回家吹空调233333333,每天早上六点五十起床,一共留校了四周前两周半基本都是七点二十就到学校了。后一周半基本上就是赶五十前到了,emmmm,来的早也进不去。每天十点往家走,到家差不多十点半了,洗个澡就睡了该追的番剧还是得追...

2018-08-31 01:35:11 582 1

转载 I/O多路复用

一、什么是多路复用? 关于什么是I/O多路复用,在知乎上有个很好的回答,可以参考。   这里记录一下自己的理解。我认为要理解这个术语得从两方面去出发,一是:多路是个什么概念?二是:复用的什么东西?先说第一个问题。多路指的是多条独立的i/o流,i/o流可以这么理解:读是一条流(称之为读流,比如输入流),写是一条流(称之为写流,比如输出流),异常也是一条流(称之为异常流),每条流用一个文件描...

2018-08-16 16:28:14 188

原创 Linux C 线程控制(二)

四、私有数据在多线程环境下,进程内的所有线程共享进程的数据空间,因此全局变量为所有线程共有。在程序设计中有时需要保存线程自己的全局变量,这种特殊的变量仅在某个线程内部有效。在线程内部,线程私有数据可以被各个函数访问,但他对其他线程是屏蔽的。线程私有数据采用了一种被称为一键多值的技术,即一个键对应多个数值。访问数据时都是通过键值来访问,好像是对一个变量进行访问,其实是在访问不同的数据。使用线程私...

2018-08-07 21:10:55 218

原创 Linux C 线程控制(一)

一、线程什么是线程?线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。由于每个线程占用的CPU时间是由系统分配的,因此可以把线程看作操作系统分配CPU时间的基本单位。线程是交替进行的。线程的优点:在多进程情况下,每个进程都有自己独立的地址空间,而在多线程情况下,同一进程内在线程共享进程的地址空间。因此,创建一个新的进程时就要耗费时间来为其分配系统资源,而创建一个线程花费的时...

2018-08-07 08:46:28 1299 1

原创 Linux C 进程控制笔记(二)

五、执行新程序当已经创建子进程后,子进程通常会调用exec函数来执行另一个程序。系统调用exec用于执行一个可执行程序来代替当前进程的执行映像。在exec调用的过程中没有产生新的子进程,当一个进程时他本身就死亡了,系统把代码替换成新程序的代码,废弃原有的数据段,堆栈段,用新的代替。唯一不变的就是进程ID,对系统而言还是同一个进程,但执行的已经是另一个程序了 exec函数       ...

2018-07-31 10:14:24 277

原创 Linux C 进程控制笔记(一)

一、进程进程是一个动态实体,是程序的一次执行过程,是操作系统资源分配的基本单位。进程是运行中的程序,程序是一些保存在硬盘上的可执行代码。二、进程结构Linux中进程由三部分组成:代码段,数据段,堆栈段代码段(存放可执行代码) 数据段(存放程序全局变量,常量,静态变量) 堆栈段(堆存放动态分配的内存变量,栈用于函数调用,存放函数的参数,函数内部定义的局部变量) ...

2018-07-30 17:37:10 241

原创 Linux c ls实现

本周的项目任务是实现ls命令,经过三天的努力。。。实现了ls -a -l -R -i功能我是按照书上的框架做的,因为没有用链表。。所以-R并不能完全跑完根目录。。。日后有时间再写一个链表版的吧。。下面是代码:#include &lt;stdio.h&gt;#include &lt;string.h&gt;#include &lt;stdlib.h&gt;#include &lt...

2018-07-29 15:32:38 451

原创 gets,fgets,scanf与字符串的故事

1.getsgets是从标准输入设备读取字符串的函数,函数原型 char * gets ( char * str );  刚开始学习C语言时觉得gets这个函数相当的好用,因为他比scanf写起来要短,而且可以输入有空格的字符串。但是越往后学就会发现,在C语言中用GCC编译使用了gets函数的源文件,编译器会给警告。warning: implicit declaration of fun...

2018-07-28 15:29:45 2128

空空如也

空空如也

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

TA关注的人

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