2 NiuBenn

尚未进行身份认证

暂无相关简介

等级
TA的排名 7w+

自己写Http服务器(四)添加线程池

在我们服务器之前的那部分,我们通过创建线程让线程去处理任务,从而可以在同一时间可以处理多个请求,但是这样则需要我们频繁的创建、销毁线程,这样在一定程度上会产生资源的损耗,影响我们服务器的效率,其次如果短时间内的大量请求,导致服务器创建线程数量过多,可能导致内存达到极限,影响操作系统中其他重要进程的运行针对我们目前的服务器可以支持常规的短链接webhttp请求,因为单个任务比较小,为了减小在创...

2019-02-26 23:19:47

自己写Http服务器(三)响应处理

上次讲到在我们在接收到请求以后,创建一个新的线程去处理这个请求,HandlerRequest为我们线程的入口函数,我们将accept到的文件描述符作为参数传递给线程所以这里我们来详细来看一下对请求处理的过程,但是在将之前我们先来谈一个概念:cgi CGI(CommonGatewayInterface)是外部应用程序与Web服务器交互的一个标准接口。CGI应用程序可以完成客户端与服务...

2019-02-26 20:00:03

小型站内搜索引擎

写在前面关于搜索引擎我们平时接触到的再多不过了,谷歌、必应、搜狗等,当然这些搜索引擎都是属于比较大型的搜索引擎,他们基本上是可以对全网的网页数据进行搜索的通常我们在使用搜索引擎时,我们输入完搜索内容之后进行搜索,搜索引擎会在一个极短的时间内为我们反馈出来上万条甚至几十万条跟搜索内容相关的数据其实我们知道这个搜索的过程其实是将用户的搜索请求对各个网页的html文件内容进行匹配关键字,说通...

2019-02-26 14:08:19

自己写Http服务器(二)主体框架

在正式写Http服务器之前,我们先简单的了解一下一个http服务器实际运行时候的一个大致过程:一个http请求从客户端发出,服务器接收到客户端的请求进行处理,再响应给客户端。所以我们首先对服务器接收请求这一方面进行编写,保证服务器首先能够接收到请求,其次再对接收到的请求处理以及进一步的响应。其次我们要明白的http协议是属于应用层的协议,这就意味着我们的数据在传输时候肯定要先从应用层由定...

2019-01-16 14:58:56

自己写HTTP服务器(一)http协议

 在写HTTP服务器之前,我们首先要来了解一下http协议   在讲HTTP协议之前,我们先来说说URL(一)URL:  URL就是我们平时俗称的“网址”   互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。   基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名,如“协议://授权/路径?查询”。完...

2019-01-16 12:23:29

设计模式—单例模式

设计模式:设计模式是一套被反复使用、多数人知晓、经过分类的、代码设计经验的总结单例模式:一个类只能创建一个对象,保证系统中该类只有一个实例,并且提供一访问该类资源的访问点。因为有些时候,保持类的实例只有一个是非常必要的。例如:一个表示文件系统的类,一个操作系统一定是只有一个文件系统的。因此,我们就希望表示文件系统的类的实例只有一个 单例模式的实现有两种模式: 饿汉模式:就是不管你...

2018-12-29 21:37:31

LeetCode--字符串相乘

题目描述:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例1:输入:num1="2",num2="3"输出:"6"示例 2:输入:num1="123",num2="456"输出:"56088"说明: num1 和 num2 的长度小于110

2018-11-03 14:27:38

蓄水池算法

参考文章:http://www.cnblogs.com/ywl925/p/3793003.html问题定义:    给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。求解:  蓄水池算法:  蓄水池算法是针对从一个序列中随机抽取...

2018-10-20 11:11:52

Linux/Windows之间文件传输 之 lrzsz

相信大家在用Linux时可能都会有一个困惑,那就是如何将Linux系统与Windows系统下的文件相互传输其实在Linux上有一款软件lrzsz软件名称:lrzsz软件平台:Linux进程描述:在Linux里可代替ftp上传和下载关于lrzsz安装(CentOS)sudoyuminstalllrzsz 回车无法sodo的情况下,可以suroot...

2018-08-21 20:58:36

VMware虚拟机黑屏解决

相信VM( VMware Workstation)虚拟机很多人都在用,不知道有没有人跟我一样也遇到过VM虚拟机黑屏现象具体表现为:虚拟机可以正常开机,但是屏幕不显示,处于黑屏状态。之前有一次好像是因为win10更新,然后更新以后发现虚拟机开机以后能听见开机以后的开机音效,但是屏幕始终处于黑屏昨天,因为一次电脑重启,虚拟机又出现了相同的问题 所以,VM虚拟机可以正常开机,但是黑屏...

2018-08-21 19:55:33

关于修复LSP解决WV虚拟机黑屏

管理员运行netshwinsockreset帮你解决一切烦恼。好吧,说正经的,虚拟机和主机之间的通信,基本上是以socket的方式进行通信的(这里的socket泛指一切socket,包括本地的、网络的等等)某个程序通过LSP给系统的TCP/IPstack注入了自己的DLL,如果程序退出时,没有把这个DLL收回来,或者回收失败、没有彻底回收等,那么这个DL...

2018-08-21 19:44:26

关于Win10下安装Linux ubuntu子系统遇到的几个问题

1.首先是ubuntu下载,在Win10自带的应用商店MicrosoftStore搜索ubuntu 即可找到2.安装完成后启动ubuntu 后 Installing,thismaytakeafewminutes...InstallationFailed!Error:0x8007019ePressanykeytocontinue...按任意键后ubuntu自动退出原因:...

2018-06-30 18:34:09

数据结构 栈和队列 用两个栈实现一个队列

众所周知栈和队列是两个中不同的数据结构,栈是先入后出,队列是先入先出,虽然栈和队列有不同之处,但是他们之间也有相互的联系两个栈实现一个队列了解一下首先我们需要两个栈S1,S2,通过两个栈之间元素的交换从而达到先入先出的目的所以我们对队列Queue定义为typedef struct       Queue{       Stack*

2018-04-21 16:53:34

数据结构 栈和队列面试题 实现一个栈

实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值)的时间 复杂度为O(1) 实现一个栈的出栈入栈其实很简单,可是要求Min(返回最小值)的时间复杂度为O(1),就需要换个思路来思考时间复杂度为O(1),我们可以通过双栈来实现,或者说一个栈里有两个数组存放数据,一个array来存放入栈的元素,一个min来存放当前栈内最小值,入栈的时候往array和min里面同时入数据,出栈时...

2018-04-21 15:22:42

C++语言图形库graphics.h的安装

关于C++图形库<graphics.h>无论是在vc6.0还是VisualStudio中都是需要用户自己安装这个图形库的前段时间由于自己VS2017的更新导致以前安装的图形库没了,所以又重新安装了一遍,在这顺便给大家分享一下好多朋友还不知道在哪里下载及安装 <graphics.h>我自己使用的是Easy-x的安装关于Easy-x的下载:http://www.e...

2018-04-14 21:38:22

C语言如何在控制台窗口设置光标到指定位置

在用C语言写控制台的程序时,说到控制光标,我们通常就是回车换行或者空格之类的进行移动光标控制,但是这类操作只能是将光标移动到当前光标后面的位置,而且效率极低假设我们想要把光标移动到当前光标以前某个位置进行修改,我们通常的就是system("cls")清屏,然后再重新打印到屏幕,这种操作方式虽然可以达到修改当前光标以前位置的效果,但是这种方法也是效率极低其实在C中有专门的函数来实现 我们控制光标在...

2018-04-14 21:09:08

数据结构 之 带头循环双链表

在数据结构中我们经常会接触到链表,链表也分好多种,带头结点和不带头结点、循环和不循环、单向链表和双向链表而在众多不同结构的链表中 带头循环双链表可以说是一种最优的链表结构相比于单链表只能访问当前结点的后续结点的局限性,双链表既可以访问前面结点也可以访问后面结点其次循环的情况下相比于非循环的链表在访问尾节点时,非循环的链表余姚遍历整个链表才能访问尾节点,而循环链表由于它的循环特性,不用遍历链表,头结...

2018-04-05 15:01:02

数据结构之 队列(Queue)的实现及简单操作

在生活中我们经常会遇到排队的事情,比如说排队买东西,大家依次站一个队,队头的人要比后面的人先买到东西,先到先得,然后买完东西就会离开这个队而我们平时为了解决在比如说打客服电话,排队叫号之类的应用问题时我们就应用了 队列 这种数据结构,实现先到先得,先入先出的排队功能队列(Queue):是只允许在一端进行插入操作,在另一端进行删除操作的线性表。队列也是一种特殊的线性表,是一种先进先出的线性表。允许插...

2018-04-05 13:41:13

数据结构 之 栈(Stack)的实现及简单操作

栈是限定仅在表尾进行插入和删除操作的线性表,由于栈只能在尾进行插入和删除,所以这里我们选用顺序表来实现栈更方便快捷一点对于栈我们要做的有栈的初始化,入栈,出栈,查看栈顶元素,查看栈内元素个数,清空栈,打印栈在Stack.h:中对栈相关接口函数进行声明以及对栈的结构体进行定义Stack.h:#pragmaonce#defineNUM50//栈的大小typedefintDataType;...

2018-04-03 13:24:51

单链表实现约瑟夫环(JosephCircle) 问题

首先先了解一下什么是约瑟夫环问题Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀。然后下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16...

2018-04-02 19:17:38

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!