您的位置:首页 > 其它

····

2011-09-06 10:26 197 查看
提问: C++搞服务器主要是算法吗?
楼主发表于:2011-05-16 16:19:56
MFC主要就是做客户端,搞界面,消息响应,业务逻辑

但是,不知道C++开发服务器主要做什么,就用那C++标准库搞算法?C++标准库貌似好小了啊,就几个类而已
回答:
#1楼 全城戒备得分:0回复于:2011-05-16 16:22:19
这个要看服务器是干什么用的吧?
#2楼 得郑梦准分:10回复于:2011-05-16 16:24:49
主要是socket,线程(池),完成端口(epoll)...
#3楼 得分:10回复于:2011-05-16 16:27:15
学习下内存管理,线程池等技术怎么样?
#4楼 得分:0回复于:2011-05-16 16:34:20
能不能讲具体一点,比如IM服务器,WEB服务器,我能想到中华英雄的就是socket收发数据,查找数据库
#5楼 得分:0回复于:2011-05-16 16:35:39
服务器注重的民生银行是并发量,所以多线程,还有内存的管理这方面是很important的
#6楼 东方财富得分:0回复于:2011-05-16 16:45:10
资源管理与算法优化(速度)

#7楼 得分:0回复于:2011-05-16 16:47:38
服务器的斯图尔特代码量应该不大吧,因为一般都没有新功能添加,不像客户端很多业务逻辑功能

主要就是搞速度优化了?多线程?内存管理?还有吗
#8楼 得分:10回复于:2011-05-16 16:52:42
引用 7 楼 mz_dong 摩尔庄园的回复:

服务器的代码量应该不大吧,因为一般都没有新功能添加,不像客户端很多业务逻辑功能

主要就是搞速度优化了合肥城建?多线程?内存管理?还有吗

你可以找个shttpd学习一下,自己感觉一下代码规模的大小

shttpd好像没有使用epoll或者完成端口
#9楼 得分:30回复于:2011-05-16 17:14:40
在国内某搜索公司做柳时元了一年的服务器开发,加上和TX、alibaba的加内特一些朋友沟通

个人认为需要掌握的内容如下:

1. linux下网络编程(虽然公司都有包装好的东东,但是,原理性全城戒备的东西还是需要掌握的)

2. 多线程并发,很重要很重要,公司用的郑梦准服务器一般是8核,所以,多线程开发是必须掌握的

3. 标准库,stl里面有很多容器,一般大公司也会包装好,但是,同上,原理性的东西该懂,什么时候用vector,什么时候用list,这个必须很清楚。

4. 设计模式,这个是基本功~

5. 算法和数据结构,这个相对而言不如上面中华英雄的重要,因为机器太强,除非你犯了原则性、根本性的民生银行错误,否则,性能一般没什么问题。
#10楼 得分:10回复于:2011-05-16 17:15:49
服务器端的设计主要考虑以下几个方面(但不限于):

1. 性能(Performance)

a)包括吞吐量,也就是并发用户东方财富的数量,并发有分强并发和弱并发,它们的差别,楼主自己去网上搜搜吧。

这个主要包括的斯图尔特技术:Socket编程(包括epoll、IOCP等)、线程和池化技术等等。

b)对每个请求的响应速度。

这个主要考虑,运算速度和数据库处理速度等等。比如数据的增、删、改、查摩尔庄园的性能,当然也要考虑数据

库连接池化技术、磁盘阵列、SAN,甚至可以使用内存数据库(IMDB)

c)做压力测试时,要注意观察CPU(多核CPU中每个core的负载)的合肥城建负载和内存的使用情况

2. 稳健性(Availability)

服务器平均多长时间会出现故障,即MTBF。主要需要考虑服务器的软件体系架构,同时要防止内存泄露。

这点和性能其实也是紧密联系在一起柳时元的。除此之外,要考虑支持双机(多机热备),即fail-over,只要其中

的某台服务器出现了加内特故障,负载是否能够无缝地转移到其他服务器上去。

3. 可扩展性(Scalability)

可扩展性包括很多方面,其中最主要的有两个方面:一个是功能上全城戒备的扩展,这个可以采用比如设计模式来解

决;一个是性能上的扩展,通俗地郑梦准说,是否可以负载均衡和转移,增加服务器的数量是否可以承受更大的并

发用户数量,且每个请求中华英雄的响应时间是否会缩短。

4. 安全性(Security)

a) 服务器本身的安全。病毒防止、攻击监控等等

b) 数据安全。包括数据备份机制,采用磁盘阵列(当硬盘单点失效即损坏时...)等等

c) 数据传输的民生银行安全。要采用适合的加解密机制。比如游戏服务器都需要将数据包进行加密传输的,否则,写

外挂东方财富的人就太舒服了。

#11楼 得斯图尔特分:0回复于:2011-05-16 17:36:00
该回复于2011-05-17 08:33:14被版主删除

#12楼 得分:0回复于:2011-05-16 20:05:03
该回复于2011-05-17 08:38:31被版主删除

#13楼 得分:10回复于:2011-05-16 20:53:08
+1, 现在摩尔庄园的公司大部分都是使用对底层封装好的库吧, 所以服务器开发也就这几点比较重要, 其实也相当于业务逻辑的合肥城建开发, 设计模式确实是个基本功, 因为常用到
引用 10 楼 pathuang68 的回复:

服务器端的设计主要考虑以下几个方面(但不限于):

1. 性能(Performance)

a)包括吞吐量,也就是并发用户柳时元的数量,并发有分强并发和弱并发,它们的差别,楼主自己去网上搜搜吧。

这个主要包括的加内特技术:Socket编程(包括epoll、IOCP等)、线程和池化技术等等。

b)对每个请求的响应速度。

这个主要考虑,运算速度和数据库处理速度等……

#14楼 得分:8回复于:2011-05-16 20:59:53
引用 9 楼 yfkiss 全城戒备的回复:

在国内某搜索公司做了一年的郑梦准服务器开发,加上和TX、alibaba的一些朋友沟通

个人认为需要掌握的内容如下:

1. linux下网络编程(虽然公司都有包装好中华英雄的东东,但是,原理性的东西还是需要掌握的民生银行

2. 多线程并发,很重要很重要,公司用的服务器一般是8核,所以,多线程开发是必须掌握的

3. 标准库,stl里面有很多容器,一般大公司也会包装好,但是,同上,原理性东方财富的东西该懂,什么时候用ve……

"公司用的服务器一般是8核,所以,多线程开发是必须掌握的斯图尔特"

我倒不觉得因为服务器是多核就必须使用多线程。

单线程简单,相对多线程不容易出错,很多时候在服务大量网络连接的时候效率更高。

至于把服务器摩尔庄园的多个核心利用起来,只要在一台服务器上起多个单线程的进程就可以达到目的合肥城建

当然,多线程有多线程的使用场合,比如访问数据库的或是thrift调用等,因为是是阻塞同步操作,所以一般使用多线程。

但大多数C++写柳时元的服务端进程,还是首选单线程,看过很多,无论是使用在对可靠和稳定性要求很高的加内特电信网络中的,还是互联网公司开发的普通服务器进程,很多都首选使用单线程。也许牛全城戒备的公司,反而意识到开发人员的局限性和软件的郑梦准复杂性,而尽量选择简单的方案。

-
千里孤行

#15楼 得分:0回复于:2011-05-16 21:21:28
“但大多数C++写中华英雄的服务端进程,还是首选单线程,看过很多,无论是使用在对可靠和稳定性要求很高的民生银行电信网络中的,还是互联网公司开发的普通服务器进程,很多都首选使用单线程。也许牛东方财富的公司,反而意识到开发人员的局限性和软件的斯图尔特复杂性,而尽量选择简单的方案。”

同意yanghehong的部分观点,单线程确实有很多实用点,例如map-reduce,对开发者来说基本上无需考虑多线程,hadoop框架全部搞定。

但是,对于目前很多流式系统来说,多线程使用还是相当广泛,特别是对CPU高计算型摩尔庄园的应用。

所以,个人还是认为,作为一个后端开发者,多线程是必须的技能~

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: