摘要:
题目描述 The cost of taking a taxi in Hangzhou is not a constant for each kilometer you travel: the first 4 kilometers costs 10 yuan (yuan is the monetary 阅读全文
摘要:
题目描述 有三个整数a b c,由键盘输入,输出其中的最大的数。 输入 一行数组,分别为a b c 输出 a b c其中最大的数 输入样例 10 20 30 输出样例 30 分析和代码 根据题意编写代码即可 #include<bits/stdc++.h> using namespace std; i 阅读全文
摘要:
题目描述 喜欢数学的Lucy经常向哥哥LF请教一些题目,哥哥总能很快就帮她解决。这不,Lucy又有难题要请教哥哥了Lucy的难题。 Lucy的难题是有关翻转数的: 翻转数就是把一个数的所有数字以相反顺序写出来,即原来的第一个数字成为最后一个,而原来的最后一个则成为第一个。我们把未翻转的数称为翻转数的 阅读全文
摘要:
Qt简介 Qt是一个跨平台的C++图形用户界面应用程序框架 Qt6安装 从Qt6起,官网不在提供离线的完全安装包,而是改为提供在线安装器。 安装步骤如下: 去Qt官网注册一个账户 到清华开源镜像网站下载对应平台的在线安装器 运行下载好的安装器 Linux平台下的用户安装时可能会遇到的问题: 1.系统 阅读全文
摘要:
8. 压力测试 至此,这个项目就已经完成了,但一个服务器项目,你在本地浏览器键入localhost:9009发现可以运行无异常还不够,你需要对他进行压测(即服务器并发量测试),压测过了,才说明你的服务器比较稳定了。 这里使用了Webbench软件来进行测试(项目里已经包含此软件),在 webbenc 阅读全文
摘要:
7. 注册登入 上一节弄清楚了数据库连接池的概念及实现方式后,我们继续回到 http 类部分,学习对用户的登录及注册等POST请求,服务器是如何做校验的。 当点击新用户按钮时,服务器对这个POST请求的响应是:返回用户一个登录界面;当你在用户名和密码框中输入后,你的POST请求报文中会连同你的用户名 阅读全文
摘要:
6. 使用数据库连接池 前面我们使用了线程池来避免了在处理短时间任务时创建与销毁线程的代价,保证内核的充分利用。同样的,若系统需要频繁访问数据库,则需要频繁创建和断开数据库连接,而创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。 采用数据库连接池,在程序初始化的时候,集中创建多个数据库 阅读全文
摘要:
5. 使用日志系统 日志,由服务器自动创建,并记录运行状态,错误信息,访问数据的文件。 基础知识 同步日志,日志写入函数与工作线程串行执行,由于涉及到I/O操作,当单条日志比较大的时候,同步模式会阻塞整个处理流程,服务器所能处理的并发能力将有所下降,尤其是在峰值的时候,写日志可能成为系统的瓶颈。 异 阅读全文
摘要:
4.使用定时器 服务器程序通常管理着众多定时事件,因此有效地组织这些定时事件,使之能在预期的时间点被触发且不影响服务器的主要逻辑,对于服务器的性能至关重要。为此,要将每个定时事件封装成定时器,并使用某种容器类数据结构,如链表、排序链表和时间轮等,将所有定时器串联起来,以实现对事件的统一管理。 代码块 阅读全文
摘要:
#3.处理用户的HTTP请求 客户端和服务器建立连接后,服务器等待客户端发送HTTP请求,并给出响应。 代码块 http_conn.h 文件 #ifndef HTTPCONNECTION_H #define HTTPCONNECTION_H #include <unistd.h> #include 阅读全文