作为一个经验丰富的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的管理界面,方便用户登录上去查看程序的各种信息, 很有必要。 我这里有一个方便的web后台管理的http实现, 可以方便的集成到应用程序中。在IE里面输入监听的端口,就可以查看程序的状态。代码还没有仔细整理。有需要的弟兄可以给我留言, 给大家发。

五、读取配置文件 所有的程序都必须有配置文件, 方便配置一些项目, 为程序提供灵活性。 所以写程序,必须有读取配置文件的封装类。

六、内存池 所有的进程都需要分配内存, 对C/C++来说, 分配和管理内存是已经很有挑战性的工作。 给大家推荐 nedmalloc 这个开源的内存池库。nedmalloc是一个跨平台的高性能多线程内存分配库,很多库都使用它。

七、缓存库 众所周知, 缓存库用得最多的就是 memcache 了。在做数据库开发的时候特别有用。

八、脚本 脚本是一个很有意思的东西,很多功能,其实我们只要写个脚本就可以完成,代码量少,开发速度快。 必须掌握的脚本,比较通用的要算 perl 了, 很古老的语言,但是功能太强大了。 我可以保证的说,.net,Java能干的工作,肯定可以让perl来干。 C能干的, perl不一定能干。 perl作为linux, unix的系统集成的脚本语言,必须学会。 lua 语言, 这个语言, 在游戏行业用得比较多。不推荐学。Python 脚本, 功能很强大, 推荐学。 上面这些是所有程序都会用到的比较通用的功能。 在不同的应用领域, 需要掌握不同开源库, 比如搞游戏开发的, 可能需要掌握开源的UI库CEGUI, 开源的3D引擎OGRE等。 搞分布式开发的可能会有分布式的文件系统库等。 --------------------- 本文来自 lsfreeing 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/lsfreeing/article/details/77815967?utm_source=copy

芭蕉树上第二十根芭蕉-- c++路线相关推荐

  1. 第二十二课.XGBoost

    目录 模型公式 优化算法 目标函数 树的生成 预测值的确定 特征空间的划分 使用 XGBoost 实现波士顿房价预测 使用 XGBoost 完成乳腺癌诊断的二分类问题 模型公式 XGBoost 在集成 ...

  2. 大白话5分钟带你走进人工智能-第二十六节决策树系列之Cart回归树及其参数(5)...

                                                    第二十六节决策树系列之Cart回归树及其参数(5) 上一节我们讲了不同的决策树对应的计算纯度的计算方法, ...

  3. 求二叉树高度_LeetCode刷题——第二十五天(平衡二叉树)

    这段时间跟二叉树杠上了,接下来还有许多二叉树的题目,虽然已经做了不少了,大多题目都涉及到了递归,也挺好,刚好有机会练习一下递归,但是遇到新的题目还是有点力不从心,还需要看参考答案,真希望有一天像汤神一 ...

  4. 并查集路径压缩_第二十五天:并查集

    今天是释然发题解的第二十五天,以后会经常和大家分享学习路上的心得,希望和大家一起进步,一起享受coding的乐趣 本文约1400字,预计阅读5分钟 昨天我们学习了动态规划之线性规划,忘记的小伙伴们可以 ...

  5. 大白话5分钟带你走进人工智能-第二十四节决策树系列之分裂流程和Gini系数评估(3)...

     第二十四节决策树系列之分裂流程和Gini系数评估(3) 上一节中我们讲解了决策树的数学表达形式,本节的话我们讲解决策树的分裂流程以及分裂条件的评估.我们基于决策树的递归表达式上:           ...

  6. 【正点原子MP157连载】第二十八章 A7和M4联合调试-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  7. 笑话集原创笑话精品展第二十四期

    1.有一个多次在大巴车上实施的罪犯在法庭上受审. 法官:这位被告,公诉机关指控你在客车上用暴力.控吓等不正当手段强行夺取他人钱财,你可知道你的行为已构成什么犯罪行为? 罪犯:知道. 法官:什么罪? 罪 ...

  8. 现实迷途 第二十八章 钱珊其人

    第二十八章 钱珊其人 注:原创作品,请尊重原作者,未经同意,请勿转载,否则追究责任. 面对江北的深情表白,钱珊沉默了一阵,然后说:"江北,谢谢你喜欢我,但是不好意思,我是个慢热型的人,我对你 ...

  9. OpenGL教程翻译 第二十二课 使用Assimp加载模型

    第二十二课 使用Assimp加载模型 原文地址:http://ogldev.atspace.co.uk/(源码请从原文主页下载) 背景 到现在为止我们都在使用手动生成的模型.正如你所想的,指明每个顶点 ...

  10. 活动预告 | 智能化软件开发微访谈·第二十一期:可观测性与智能化运维

    CodeWisdom 智能化软件开发沙龙是复旦大学CodeWisdom团队参与组织的专注于代码大数据与智能化软件开发的学术和技术沙龙,面向相关领域的学术界研究者和工业界实践者,通过各种线上和线下交流活 ...

最新文章

  1. AS1.0(2.0)中的XML示例
  2. 曾大战LeCun的谷歌女性科学家,刚刚被Jeff Dean开除了!
  3. 自然水体辐射特性与数值模拟 pdf_【技术·航天】定量评估贡献 精准决策未来 ——气象卫星数据在数值预报系统中贡献的定量评估...
  4. 零基础如何入门深度学习?
  5. 算法与数据结构(Java解八皇后问题)
  6. python爬虫scrapy安装_零基础写python爬虫之爬虫框架Scrapy安装配置
  7. 工业以太网交换机可以家用吗?
  8. php mysql sqlite缓存_使用sqlite作为数据缓存
  9. numpy 库使用说明
  10. 网络工程制图论文计算机,工程制图论文
  11. android字体颜色渐变色,android背景颜色渐变
  12. labview温度采集系统(数据保存到excel)
  13. 标准库函数begin和end的使用
  14. 洛谷 P4704 太极剑
  15. wamp5工具安装介绍
  16. 5G时代即将来临,VR虚拟现实技术会得到更大发展,WebVR将逐渐走入大众视野!
  17. 魏德米勒端子eplan宏_Eplan部件库和宏全集
  18. Python实现BOA蝴蝶优化算法优化支持向量机回归模型(SVR算法)项目实战
  19. Springboot,SSM及SSH的概念、优点、区别及缺点
  20. c语言程序表达语句,《C语言程序设计》讲稿.doc

热门文章

  1. 自研返利网源码、有需要的私信
  2. 使用腾讯云轻量服务器搭建flarum论坛
  3. python爬虫爬取糗百成人图片单线程版本
  4. css3顺时,CSS3 - 顺时针旋转比逆时针
  5. 访谈录#1:成为“温赵轮”
  6. WIN10 拨号连接下 如何开启移动热点
  7. 总结2019,立2020flag
  8. 计算机技能大赛备赛计划,技能大赛计划.doc
  9. was 部署php,was 配置web服务器
  10. 通过路由远程计算机重启,如何通过三种方式重启路由器