网站首页 > 资源文章 正文
作为一个经验丰富的C/C++程序员,肯定亲手写过各种功能的代码,比如封装过数据库访问的类,封装过网络通信的类,封装过日志操作的类,封装过文件访问的类,封装过UI界面库等,也在实际的项目中应用过,但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用,对于自己来说,在不同的项目中应用,只需要复制代码,改改也就可以了,因为自己写的代码自己很熟悉。问题是你封装的这些库,在给别人使用的时候,别人用起来是否很方便,跨平台方面是不是也很通用,性能是不是足够的好,是不是支持多线程,功能是不是也足够强大,可以适用于各种不同的需求。如果你上面这些都做到了,证明你在这个库上确实花费了一番功夫, 经过了持续的改进和优化。
在日常的开发中,作为一个程序员,很多东西已经没有必要再重新开发了,可以直接拿过来使用,毕竟21世纪都已经过了N年了。我们没有必要重新发明轮子(不可否认发明轮子的过程可以学到很多东西,我就是这么走过来的)。
下面结合自己多年的开发经验, 想到哪里写到哪里, 希望对新人有一定的帮助。
一、网络
网络库必须掌握 ACE 和 libevent, 一个是重量级的网络库, 一个是轻量级的网络库。仔细想想,现在那个程序不用网络啊。不懂网络,你将寸步难行啊。熟悉这两个开源库的前提是你必须懂socket的原理,给大家推荐的好书就是 《UNIX网络编程》,看懂这本书就可以了,其他的什么《windows网络编程》这些都不用看,因为网络编程,你学会了伯克利的套接字,你就可以在任何平台上进行网络编程了,不需要学什么windows下的网络编程,因为windows下的网络也是从伯克利套接字搞过来的,如果你学习《windows网络编程》,那么你那天在linux,unix下进行网络编程,你还得在学习一下,没有那个必要。
二、数据库
数据库嘛,开源的Mysql和开源的PostgreSQL只要懂其中一个就可以了,商业数据库在掌握一个Oracle就可以了,文件数据库掌握 sqlite。不过请大家注意,不要被上面数据库名字给迷惑了,数据库的本质是SQL语句,一定要懂数据库的基本原理,熟练应用SQL语言,懂数据库的优化,存储过程等。数据库的原理搞懂了,拿什么数据库过来都轻松掌握,就不会在乎是Mysql还是Oracle了。
三、日志操作
日志操作推荐大家熟悉 log4cpp这个日志库, 支持多线程, 日志重定向到网络等都有, 反正你能想到的日志的功能, 都有。日志嘛,一个是方便查找问题,方便记录程序运行的一些情况。这是必须的。
四、管理后台
众所周知,写程序是给其他人用的,不是自己用,所以在程序的易用性上,多给对方提供一些可以直接查看的管理界面,显得十分重要。为程序提供一个web的管理界面,方便用户登录上去查看程序的各种信息很有必要。
五、读取配置文件
所有的程序都必须有配置文件,方便配置一些项目为程序提供灵活性。 所以写程序,必须有读取配置文件的封装类。
六、内存池
所有的进程都需要分配内存, 对C/C++来说, 分配和管理内存是已经很有挑战性的工作。
给大家推荐 nedmalloc 这个开源的内存池库。nedmalloc是一个跨平台的高性能多线程内存分配库,很多库都使用它。
七、缓存库
众所周知, 缓存库用得最多的就是 memcache 了。在做数据库开发的时候特别有用。
八、脚本
脚本是一个很有意思的东西,很多功能,其实我们只要写个脚本就可以完成,代码量少,开发速度快。必须掌握的脚本,比较通用的要算 perl 了, 很古老的语言,但是功能太强大了。我可以保证的说,.net,java能干的工作,肯定可以让perl来干。 C能干的, perl不一定能干。 perl作为linux, unix的系统集成的脚本语言,必须学会。lua 语言, 这个语言, 在游戏行业用得比较多。不推荐学。python 脚本, 功能很强大, 推荐学。
上面这些是所有程序都会用到的比较通用的功能。在不同的应用领域, 需要掌握不同开源库, 比如搞游戏开发的, 可能需要掌握开源的UI库CEGUI, 开源的3D引擎OGRE等。搞分布式开发的可能会有分布式的文件系统库等。
转自CSDN博客Langeldep的专栏
大家如果对编程感兴趣,想了解更多的编程知识,解决编程问题,我们这里有java高手,C++/C高手,windows/Linux高手,android/ios高手,请大家关注我的微信公众号:程序员互动联盟or coder_online
- 上一篇: Go语言爱好者周刊:第 45 期
- 下一篇: 适合初学者和高级开发人员的 11 本最佳 Java 书籍
猜你喜欢
- 2025-01-07 Go语言爱好者周刊:第 45 期
- 2025-01-07 linux服务器网络编程之线程模型
- 2025-01-07 程序员进阶书单:操作系统篇
- 2025-01-07 永远别轻视任何技术,也永远别轻视自己(含操作系统书单)
- 2025-01-07 Linux系统脚本编程设计简单的选修课程管理系统
- 2025-01-07 实用C语言编程(第三版)高清PDF
- 2025-01-07 周末福利-分享UNIX shell范例精解第4版中文高清电子版
- 2025-01-07 Cursor使用指南:释放AI编程的无限潜能
- 2025-01-07 如何在Linux下的进行多进程编程(初步)
- 2025-01-07 读书笔记之《不止代码》
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)