项目推荐
文章平均质量分 86
推荐入门及就业项目
程序员行者孙
计算机本硕,Java/C/C++学习路线、Java/C/C++基础知识、Java/C/C++内容分享,Java/C/C++技术底层,AI+编程实践玩法,帮助更多朋友快速入门编程,公众号:AI Sun,视频号:AI-行者Sun,分享更多前沿技术。
展开
-
webserver--Buffer类实现内存缓冲区读写(全代码)
一旦数据被写入缓冲区,可以使用相应的读取方法从缓冲区中读取数据。这些方法可能包括读取指定长度的数据、读取直到特定分隔符的数据、以及将数据转换为不同的格式等。:在读写过程中可能会出现各种异常情况,例如缓冲区溢出、读取到不完整的数据等,需要相应的异常处理机制来处理这些情况,以确保系统的稳定性和可靠性。计算机本硕,人工制能研究生。:读取到数据后,可以对其进行各种处理,例如解析 HTTP 请求、执行业务逻辑、或者转发数据给其他模块。:在数据被处理完毕后,可以选择清空缓冲区,以释放内存空间,并准备接收新的数据。原创 2024-03-30 16:27:29 · 11236 阅读 · 0 评论 -
webserver--多缓冲区实现日志系统
的好处是在新建⽇志消息的时候不必等待磁盘⽂件操作,也避 免每条新⽇志消息都触发后端⽇志线程。⽽且最重要的是需要保证⽣产者与消费者的并发,也就是前端不断写⽇志到缓冲区的同时,后端可以把缓冲区写⼊⽂件。🎈 本文专栏:本文收录于《项目推荐》系列专栏,相信一份耕耘一份收获,我会继续分享更多优质项目,届时可以拳打字节,脚踢腾讯。服务器的⽇志系统是⼀个多⽣产者,单消费者的任务场景:多⽣产者负责把⽇志写⼊缓冲区,单消费者负责把缓冲 区中数据写⼊⽂件。传送给后端,相当于批处理,减少了线程唤醒的开销。⾥⾯往硬盘写数据,当。原创 2024-03-29 20:10:29 · 11867 阅读 · 0 评论 -
webserver--基于小根堆实现定时器,关闭超时的非活跃连接
计算机在工作时,我们打开多个网页,但是不使用的时候,系统自动会进入休眠模式,这样会更加省电,节省资源。同样的, 服务器在工作时,建立好连接后,即使你不用,他也会一直为你服务吗?当然不是,不然可太消耗资源了。对于非活跃的用户,达到了设定的时间,那我们就关闭这个连接,等用户再次需要时再重新建立连接。原创 2024-03-29 10:53:05 · 15264 阅读 · 0 评论 -
Muduo类详解之Channel
同时Channel类还提供了设置该fd的感兴趣事件,以及将该fd及其感兴趣事件注册到事件监听器或从事件监听器上移除,以及保存了该fd的每种事件对应的处理函数。revents_代表事件监听器实际监听到该fd发生的事件类型集合,当事件监听器监听到一个fd发生了什么事件,通过Channel::set_revents()函数来设置revents值。持有⼀个⽂件描述符,正在监听的事件,已经发⽣的事件(由Poller 返回),以及各个事件(读、写、更新、错误)回调函数的 Function 对象。原创 2024-03-26 08:30:00 · 17579 阅读 · 0 评论 -
webserver如何从零开始?
git clone ...部署,测试,然后开始写么,这样你大概率会“猪脑过载”,对一个项目的每个部分都没有清晰认识,能写出什么来?写之前当然需要测试每个功能,然后理清项目的框架,整个项目大概有哪几个模块组成(最好画个图),这几个模块具体功能是什么,模块之前的嵌套关系是怎么样的。socket,并且将请求队列中的任务分配给线程池中的⼯作线程,其中⼯作线程能够处理的任务分 为⽇志输出、定时器处理⾮活动连接以及处理 HTTP 请求三种。同时访问服务端)的场景中,服务端的响应速度,并且服务端本身可以建⽴的线程。原创 2024-03-25 18:25:05 · 17552 阅读 · 0 评论 -
webserver烂大街?还有必要做么?
顾名思义,Web Server 就是提供 Web 服务的 Server。比如我们访问 http://,其实就是在使用百度的 Server 提供的服务。一般来说, Web Server 对外提供的是 HTTP 服务(也可以是其他服务),这就是为什么我们的网址都以「http://」开头。超文本传输协议(Hypertext,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似。原创 2024-03-16 20:45:21 · 28120 阅读 · 0 评论 -
Socket编程(头脑清晰,防止过载)
加上之后代码(代码量大的时候)会显得臃肿,没有逻辑,报错和codereview也不方便,所以在写的时候可以封装起来,因为bind(),aceept()都是小写的,我们可以写成大写,再将报错信息写进去,这样代码就会简洁很多。这里有个生动的例子,也是听课听到的:比如去某二楼洗脚,大厅接待的人是第一个socket,而进行后续活动的人,是大厅接待的人(第一个socket)等待客户来了之后分配的(第一个socket监听信息分配socket)。第一次写可以看着上面的图写,然后写多了其实就不用看着上面的图了。原创 2023-12-24 17:00:00 · 29955 阅读 · 1 评论