1、搭建一个后台服务器--引子

2023-10-29 11:58
文章标签 服务器 搭建 后台 引子

本文主要是介绍1、搭建一个后台服务器--引子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近去了几家公司面试,有一些大公司(比如企鹅)的考核内容真心弱智,考的都是些算法,尼玛,拿一个刚毕业的学生来做说不定也可以过的,看来本来就不是在招搞服务器的,举个例子,企鹅多个部门都曾出的一道题:如何知道集合A,B中的相关性。
意思就是哪些元素在A,B之中都有,哪些元素在A,B中不都出现。

其实解法很简单,学过算法的完全可以做到 。我们知道集合具有互异性,就是集合中的元素只能出现一次,可以建一个map< key, value >,是标准库的还是自建一个红黑树都无所谓,将A,B集合中的元素当成key,各自遍历一次,插入map中,每次插入value自增一次,最后再遍历一次map,所有 value = 2的key是A,B共有的,value=1的key是A,B相异的。

如果A,B中的元素是整数,而且很小,问题则退化成类似计数排序,解法如下:
A{ 2,4,6,10,7,25 } B{ 3,9,4,2,19,25 }

#define MAX_NUM  
int test(int A[], int a_len, int B[], int b_len)  
{int size, i, max, tp_key;  int  *tmp;  if( !a_len || !b_len )  {  return -1;  }  size = MAX_NUM * sizeof( int );  tmp = malloc( size );  if( !tmp )  {  return -1;  }  memset( tmp, 0, size );  max = 0;  for( i = 0; i < a_len; ++i )  {  tp_key = A[i];  max = tp_key > max ? tp_key : max;  tmp[ tp_key ]++;  }  for( i = 0; i < b_len; ++i )  {  tp_key = B[i];  max = tp_key > max ? tp_key : max;  tmp[ tp_key ] ++;  }  ++max;  for( i = 0; i < max; ++i )  {  if( !tmp[ i ] )  continue;  if( 1 == tmp[ i ]  )  {  printf( "%d is in A or B\n", i );  }  else  {  printf( "%d is in A and B\n", i );  }  }  free( tmp );  return 0;  
}  

言归正传,其实算法应该是大家的基本功,考核算法应该也没有错,但既然招的是服务器架构开发,我想考核更多的是实战经验。
有一家中等公司的面试题不错,此系列博文将围绕它展开研究。
原题:时间同步系统开发需求
需求场景:客户端向服务器发起登录请求,鉴权通过后(为了简化工作,所有登录请求,只要请求参数里的用户名和密码不为空,都鉴权通过),客户端再向服务器请求当前系统时间,服务器返回当前系统时间后关闭连接。

要求:
1、传输层使用TCP协议,应用层协议不限。
2、可支持同时在线用户量:大于 2W。
3、并发性能:没有明确指标。
4、服务器端运行环境:linux 2.4以上内核版本;开发语言:C++/C。
5、客户端运行环境:不限;开发语言:不限。(可以很简单,不要求界面)
6、要求有模拟性能测试操作方法,如多客户端、多线程模拟同时请求等。
7、用真实代码。
8、不要求日志系统,但是要考虑在主线程打印屏幕引起的性能问题。

我就觉得要是哪个公司面试的时候能出得出这样的题目,那就应该很专业了,对面试的人也就可以算得上挑战了。
tcp 服务端-客户端通信的程序,网上一搜一大堆,大家可能都会写,但是并发量和容错性不一定能上得去,2W的并发量不是盖出来的,如果这道题目能够搞定,基本上服务器这块应该是难不倒了。
下面说说我应该怎么做:
首先是建立前后端的通信协议:
request:
username/password, 约定username与password 各占32个字节(联同末位0)
response:
time_t 格式

由于通信内容简单,选择二进制传输,而不选择http,当然如果要考考 http 协议的了解,那就另当别论了。
请回头对题目认真看看,或者自己也可以写写,这里没有放代码,是因为我打算连载,请关注啦。
下篇我给大家写客户端程序先。
转载自http://blog.csdn.net/xiaofei_hah0000/article/details/8742279

这篇关于1、搭建一个后台服务器--引子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/300482

相关文章

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.