····
2011-09-06 10:26
197 查看
提问: C++搞服务器主要是算法吗?
楼主发表于:2011-05-16 16:19:56
回答:
#1楼 全城戒备得分:0回复于:2011-05-16 16:22:19
#2楼 得郑梦准分:10回复于:2011-05-16 16:24:49
#3楼 得分:10回复于:2011-05-16 16:27:15
#4楼 得分:0回复于:2011-05-16 16:34:20
#5楼 得分:0回复于:2011-05-16 16:35:39
#6楼 东方财富得分:0回复于:2011-05-16 16:45:10
#7楼 得分:0回复于:2011-05-16 16:47:38
#8楼 得分:10回复于:2011-05-16 16:52:42
#9楼 得分:30回复于:2011-05-16 17:14:40
#10楼 得分:10回复于:2011-05-16 17:15:49
#11楼 得斯图尔特分:0回复于:2011-05-16 17:36:00
#12楼 得分:0回复于:2011-05-16 20:05:03
#13楼 得分:10回复于:2011-05-16 20:53:08
#14楼 得分:8回复于:2011-05-16 20:59:53
#15楼 得分:0回复于:2011-05-16 21:21:28
楼主发表于:2011-05-16 16:19:56
MFC主要就是做客户端,搞界面,消息响应,业务逻辑 但是,不知道C++开发服务器主要做什么,就用那C++标准库搞算法?C++标准库貌似好小了啊,就几个类而已 |
#1楼 全城戒备得分:0回复于:2011-05-16 16:22:19
这个要看服务器是干什么用的吧? |
主要是socket,线程(池),完成端口(epoll)... |
学习下内存管理,线程池等技术怎么样? |
能不能讲具体一点,比如IM服务器,WEB服务器,我能想到中华英雄的就是socket收发数据,查找数据库 |
服务器注重的民生银行是并发量,所以多线程,还有内存的管理这方面是很important的 |
资源管理与算法优化(速度) |
服务器的斯图尔特代码量应该不大吧,因为一般都没有新功能添加,不像客户端很多业务逻辑功能 主要就是搞速度优化了?多线程?内存管理?还有吗 |
引用 7 楼 mz_dong 摩尔庄园的回复: 服务器的代码量应该不大吧,因为一般都没有新功能添加,不像客户端很多业务逻辑功能 主要就是搞速度优化了合肥城建?多线程?内存管理?还有吗 你可以找个shttpd学习一下,自己感觉一下代码规模的大小 shttpd好像没有使用epoll或者完成端口 |
在国内某搜索公司做柳时元了一年的服务器开发,加上和TX、alibaba的加内特一些朋友沟通 个人认为需要掌握的内容如下: 1. linux下网络编程(虽然公司都有包装好的东东,但是,原理性全城戒备的东西还是需要掌握的) 2. 多线程并发,很重要很重要,公司用的郑梦准服务器一般是8核,所以,多线程开发是必须掌握的 3. 标准库,stl里面有很多容器,一般大公司也会包装好,但是,同上,原理性的东西该懂,什么时候用vector,什么时候用list,这个必须很清楚。 4. 设计模式,这个是基本功~ 5. 算法和数据结构,这个相对而言不如上面中华英雄的重要,因为机器太强,除非你犯了原则性、根本性的民生银行错误,否则,性能一般没什么问题。 |
服务器端的设计主要考虑以下几个方面(但不限于): 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) 数据传输的民生银行安全。要采用适合的加解密机制。比如游戏服务器都需要将数据包进行加密传输的,否则,写 外挂东方财富的人就太舒服了。 |
该回复于2011-05-17 08:33:14被版主删除 |
该回复于2011-05-17 08:38:31被版主删除 |
+1, 现在摩尔庄园的公司大部分都是使用对底层封装好的库吧, 所以服务器开发也就这几点比较重要, 其实也相当于业务逻辑的合肥城建开发, 设计模式确实是个基本功, 因为常用到 引用 10 楼 pathuang68 的回复: 服务器端的设计主要考虑以下几个方面(但不限于): 1. 性能(Performance) a)包括吞吐量,也就是并发用户柳时元的数量,并发有分强并发和弱并发,它们的差别,楼主自己去网上搜搜吧。 这个主要包括的加内特技术:Socket编程(包括epoll、IOCP等)、线程和池化技术等等。 b)对每个请求的响应速度。 这个主要考虑,运算速度和数据库处理速度等…… |
引用 9 楼 yfkiss 全城戒备的回复: 在国内某搜索公司做了一年的郑梦准服务器开发,加上和TX、alibaba的一些朋友沟通 个人认为需要掌握的内容如下: 1. linux下网络编程(虽然公司都有包装好中华英雄的东东,但是,原理性的东西还是需要掌握的民生银行) 2. 多线程并发,很重要很重要,公司用的服务器一般是8核,所以,多线程开发是必须掌握的 3. 标准库,stl里面有很多容器,一般大公司也会包装好,但是,同上,原理性东方财富的东西该懂,什么时候用ve…… "公司用的服务器一般是8核,所以,多线程开发是必须掌握的斯图尔特" 我倒不觉得因为服务器是多核就必须使用多线程。 单线程简单,相对多线程不容易出错,很多时候在服务大量网络连接的时候效率更高。 至于把服务器摩尔庄园的多个核心利用起来,只要在一台服务器上起多个单线程的进程就可以达到目的合肥城建。 当然,多线程有多线程的使用场合,比如访问数据库的或是thrift调用等,因为是是阻塞同步操作,所以一般使用多线程。 但大多数C++写柳时元的服务端进程,还是首选单线程,看过很多,无论是使用在对可靠和稳定性要求很高的加内特电信网络中的,还是互联网公司开发的普通服务器进程,很多都首选使用单线程。也许牛全城戒备的公司,反而意识到开发人员的局限性和软件的郑梦准复杂性,而尽量选择简单的方案。 - 千里孤行 |
“但大多数C++写中华英雄的服务端进程,还是首选单线程,看过很多,无论是使用在对可靠和稳定性要求很高的民生银行电信网络中的,还是互联网公司开发的普通服务器进程,很多都首选使用单线程。也许牛东方财富的公司,反而意识到开发人员的局限性和软件的斯图尔特复杂性,而尽量选择简单的方案。” 同意yanghehong的部分观点,单线程确实有很多实用点,例如map-reduce,对开发者来说基本上无需考虑多线程,hadoop框架全部搞定。 但是,对于目前很多流式系统来说,多线程使用还是相当广泛,特别是对CPU高计算型摩尔庄园的应用。 所以,个人还是认为,作为一个后端开发者,多线程是必须的技能~ |
相关文章推荐
- sql 优化 ·· 持续更新··
- 写一个sql中视图和存储过程的简单创建和调用方法!!!自我备忘用····
- ·····
- 中国10大富豪的···学历一览表···
- ···
- ··· Socks Online - 在内部网也能使用QQ ···
- ············
- 转来的··调用系统相机拍照和调用相册
- <<春·加薪>>
- "运动·河软"我来了
- ··· Socks Online - 在内部网也能使用QQ ···
- ····大神
- <转>凯文·凯利斯坦福演讲-预言未来20年科技潮流
- ··· Socks Online - 在内部网也能使用QQ ···
- ·程序人生·征文活动:《无响应,是否重启人生》
- 每天的记录,慢慢来。<十二月> December ··········持续更新中
- >重点算法解疑系列文档·脚踏实地
- ·python·用生成器和迭代器实现自己的xrange
- ··· Socks Online - 在内部网也能使用QQ ···
- "很傻很天真"的"凯文·凯利"