C++写服务器的一些吐槽

本文纯粹是主观上的吐槽~

很久以前,听说C很底层,很难,C++要好一些,C#、Java更好,开发更简单,开发效率更高。反正就是越新的语言开发效率越高,运行效率月底。但是,一直也就是一个比较朦胧的概念,至于到底是怎么样的,自己没有过多研究,也没有把所有语言都用一遍,所以也不特别清楚。知道最近用C++写服务器,终于明白了,什么叫做进展缓慢,什么叫开发效率低,什么叫做开发成本高……

之前也写过C++,但是架构是别人的,各种通用的库和类都是现成的,自己就写点简单的东西。后来,又用了Lua,简单得不行了,啥都不用管,把手写坏了。这次做C++服务器,遇到的最大问题:

1.设计不到位,不全面

2.设计不够细致,不少东西没有考虑到

3.字符集是个很大的问题,wchar和char没有很好的统一,在选择第三方库的时候也没有考虑这个问题,做的时候发现了,有点晚。

4.C++的强类型,lua久了之后有点难以适应了,有些设计不能通用

5.C++没有引用计数,堆和栈空间的使用要当心,有时候直接用了一个返回值,其实栈已经被释放了,被坑了几次。

当然,出现这些问题,还是跟自身实力不够有关系。但是,从另外一个角度来看,C++要考虑的东西太多,需要的代码量也较大,对技术要求也更高,结果还不一定好,比如健壮性、可维护性方面。比起来,像java、erlang、python就要比C++有太大的优势。

这个服务器开发上,真的是边写、边改、边总结,之后要是再用C++写Server,应该比这次好很多,但是可能会考虑用别的语言了。

时间: 2024-11-09 02:32:05

C++写服务器的一些吐槽的相关文章

尚学堂_java300集笔记_手写服务器

195.httpserver_准备_Socket入门 public class Server { private ServerSocket server; public static void main(String[] args) { Server server = new Server(); server.start(); } public void start() { try { server = new ServerSocket(8080); String msg = null; thi

手写服务器Httpserver

1.创建服务器,并启动(用ServerSocket类) ServerSocket server = new SocketServer(8888); //接受客户端 Socket client = server.accept(); //接受客户端的请求信息 //先建立输入流 BufferedReader dos =new BufferedReader(new InputStreamReader(client.getInputStream())); //开始读取,接受信息 String msg =n

兄弟,不要这样写服务器代码

服务器代码开发规则 1.永远不要相信外部传来的数据是合法的 不管他是TCP传来的, 还是说它是GM工具传来的数据包,都要对数据内容进行校验:包括格式,以及内容:客户端传来的数据可能被中途修改:GM传过来的数据,可能因为运营手误而出数据内容:这时要求服务器程序对传入来的数据进行校验,确保在任何情况下,服务器不会宕机. 2.对所有指针都要进行为空判断 避免因为空指针访问出现异常

手写Tomcat服务器

预备知识 编写服务器用到的知识点 1) Socket 编程2) HTML3) HTTP 协议4) 反射5) XML 解析6) 服务器编写 Socket编程 https://www.cnblogs.com/bfcs/p/10790130.html HTML知识 HTML:HyperText Markup Language 超文本标记语言用于描述网页文档的一种标记语言 表单(form):与用户之间进行交互 method:请求方式 get/post get 数据量小,安全性低,默认方式 post 数据

为什么我要选择erlang+go进行服务器架构

服务器非业余研究http://blog.csdn.net/erlib 作者Sunface 估计很多同学看到这里都会觉得迷惑,go的大名已经如雷贯耳了,但是erlang?这个东东是神马?难道是编程语言?怎么从来没听说过. 这里请允许我先介绍一下使用Erlang开发的比较有名的应用: 一:whatsapp 只凭32个技术人员,如何应付4.5亿的用户?对于刚刚被Facebook用190亿美元收购的WhatsApp来说,答案是Erlang--一种诞生于上世纪80年代的编程语言,终于在此时走到了聚光灯下.

day7-读写分离

主机A-->主机B????读 ????-->主机C????写 启动mysql代理服务 -P:指定代理监听的IP.端口 -r: 指定读服务器的IP.端口???? -b: 指定写服务器的IP.端口???? -s:指定lua脚本文件路径 --keepalive:若进程崩溃,自动重启此进程 /usr/local/mysqlproxy/bin/mysql-proxy –P 192.168.100.100:3306 –r 192.168.100.101:3306 –b 192.168.100.102:33

linux网络编程----->高并发--->多进程并发服务器

在做网络服务的时候并发服务端程序的编写必不可少.前端客户端应用程序是否稳定一部分取决于客户端自身,而更多的取决于服务器是否相应时间够迅速,够稳定. 常见的linux并发服务器模型: 多进程并发服务器 多线程并发服务器 select多路I/O转接服务器 poll多路I/O转接服务器 epool多路I/O转接服务器. 本次主要讨论多线程并发服务器模型: 使用多进程并发服务器时要考虑以下几点: 父进程最大文件描述个数(父进程中需要close关闭accpet返回的新文件描述符) 系统内创建进程个数(与内

记一次服务器上架的总结和反思

由于博主所在公司最近业务量上升,各个项目进度加快,使得原有饱和的服务器资源变得紧张起来.博主很是着急啊,于是就做了一系列的资源使用统计和分析,然后向上递交了采购计划. 如题<记一次服务器上架的总结和反思>,服务器采购计划最终是批了.博主心情愉悦地等待着这批服务器的到达,并设计了相关的上架流程和自动化方案,最终进行了具体的实施操作.虽然在实施过程中遇到了一些问题,不过都是些不影响主流程的小问题,其中不乏在流程中忽略的点和未设计到的点,这些都是很值得事后思考和反思了.毕竟,这只是一次扩容,以后这种

同一世界服务器架构--Erlang游戏服务器

Erlang最大的优点是方便,很多基础功能都已经集成到Erlang语言中.之前用C++写服务器的时候,管理TCP连接很繁琐,需要写一大堆代码来实现.底层的框架需要写很多代码实现,这样既浪费时间,又会有很多BUG.但是用Erlang就方便多了,底层的一切你都不需要考虑,你只需要考虑,服务器的架构以及业务逻辑.从此让你彻底从底层的泥潭中解脱.我从去年年底开始了解学习Erlang,到现在我已经彻底爱上了Erlang.好了,废话不多说,开始详细介绍下我设计的这个服务器架构吧. 首先看下整个架构的布局,如