CC++程序员必须熟练应用的开源项目

C++总结 C++ 从 C 到 C++ 起源 早期并没有“C++”这个名字,而是叫做“带类的C”,作为C语言的一个扩展和补充出现,增加了很多新的语法,目的是提高开发效率(与Servlet和JSP的关系类比) 这个时期的 C++ 非常粗糙,仅支持简单的面向对象编程,也没有自己的编译器,而是通过一个预处理程序(cfront),先将 C++ 代码”翻译“为C语言代码,再通过C语言编译器合成最终的程序 随着 C++ 的流行,语法越来越强大,已经能够很完善的支持面向过程编程、面向对象编程和泛... 阅读详情

 作为一个经验丰富的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等。

搞分布式开发的可能会有分布式的文件系统库等。


ps:原文转自网络,文章有些点可作为参考学习

POO课程项目:我的“面向对象编程”课程的项目 立即下载

相关推荐

华为防火墙双ISP出口实战:如何用策略路由实现电信联通流量自动切换(附配置截图)

本文详细解析了华为防火墙在双ISP环境下的智能选路技术,通过策略路由与健康检测的深度应用,实现电信联通流量的自动切换。文章包含实战配置截图,帮助企业解决切换延迟、路径劣化等核心挑战,提升业务连续性。

backprop5master的博客 643

盘点适合入门学习的C/C++开源项目

C 项目名称: C 项目简介: 是的,你没有看错,这个项目的名字就是单个字母C。C是一个宝藏项目,可以说是学习数据结构和刷算法题的利器,因为里面包含了几乎各种基础算法、数据结构、以及LeetCode算法题的C语言实现。具体包括: 客户端/服务器问题 统计方法问题 进制转换问题 各种数据结构:数组、链表、字典、二叉树、堆、栈、队列、哈希、图等等 搜索/查找问题 排序问题 LeetCode习题 其他杂项问题 注意,下图中只是截取了一部分数据结构和算法题的具体实现: 对于我们的作用: 可以帮助我们更好的学习数据

OceanStar的博客 3万+

高等数学第五章---定积分(§5.3定积分的计算方法)

这篇博客详细讲解定积分的计算方法,包括直接法、凑微分法、变量代换法和分部积分法。通过典型例题演示如何运用这些技巧计算定积分,特别强调换元必换限的原则和奇偶函数的简化处理。内容涵盖代数变形、三角代换、分段函数积分等常见题型,并附有详细的解题步骤和常见错误分析。适合微积分学习者系统掌握定积分计算技巧,提升解题效率。文中还包含积分等式证明和变限积分函数求导等进阶内容,帮助读者深入理解定积分的应用。

2302_77045867的博客 4334

八个 C++ 开源项目,帮助初学者进阶成长

ThreadPool 一个简单的 C++11 线程池实现,只有一个头文件,代码加起来不到 100 行。 GitHub 地址:https://github.com/progschj/ThreadPool sudoku C++ 实现的命令行数独游戏。600 余行代码,初学者也可以轻松学习。 GitHub 地址:https://github.com/mayerui/sudoku Tinytetris Tinytetris 是一个用 C++ 编写的终端版俄罗斯方块游戏。它提供了两个版本的源码,分为注释版和库版,注释

程序员「阿基米东」的编程之旅 5万+

Android客户端如何设计架构

当我们在新开发一款APP时,我们在初期要如何设计架构呢?在这里我根据我的经验,总结了一些基本的架构思路。 客户端架构设计的时候,首先需要充分考虑到所开发的app的类型,这里我分为功能型和服务型两大类,功能型的app侧重业务和功能,服务型的app侧重服务和运算。下面我就具体来讲讲针对这两种类型的通用架构。 功能型app 功能型app的activity比较多,整个app都以一个个activity承载业务和功能,在设计这类app时,我们需要考虑哪些要素呢? 由于activity比较多,我们需要考虑页面的跳转路由,

子者不语的专栏 1544

Cursor设置界面汉化保姆级教程:手把手教你修改JS文件实现中文界面(附避坑指南)

本文提供Cursor编辑器设置界面汉化的详细教程,从定位JS文件到安全修改实现中文界面,包含必备工具清单、文件路径指引和常见问题解决方案。通过手把手教学帮助用户轻松完成汉化,提升使用体验,特别适合不熟悉英文界面的开发者。

weixin_29007809的博客 1412

优秀 C++开源代码项目分享

谷歌开发的 Chromium 是开源的浏览器项目,虽然代码规模庞大复杂,但它展示了 C++ 在大型项目中的应用以及高性能的实现。它具有高效的数据存储和检索能力,代码实现了复杂的存储结构和算法,对于理解数据库底层原理和 C++ 数据结构的应用非常有帮助。该项目是一个设计轻盈优雅的企业级程序引擎,涵盖了网络通信、异步处理、任务调度等多方面的功能,能够帮助开发者深入理解企业级 C++ 后端开发的技术和实践。通过阅读 SQLite 的代码,可以深入了解数据库的内部实现机制以及 C++ 在数据库开发中的应用。

chinansa的博客 1250

国产大模型 coding plan 实战决策指南:GLM、Kimi、豆包、abab 四大模型分层选型与工程落地

大模型辅助编程(coding assistant)正从概念验证走向规模化工程落地,其核心已不再是‘能否生成代码’,而是‘如何在真实开发流程中精准赋能’。理解模型能力边界、匹配技术栈特征、构建分层工作流(L1行级补全/L2函数生成/L3模块重构),是实现稳定提效的关键。GLM系列以工程稳定性见长,适合代码审计与测试生成;Kimi-Max凭借200K超长上下文胜任深度重构与合规审查;豆包响应快、框架适配深,是IDE高频补全的理想选择;abab系列则在IoT固件等跨模态场景中展现独特价值。本文聚焦国产模型在金融、

weixin_32238157的博客 428

GitHub 热点速览 Vol.21:Go 新手起手式,学就完事儿了

作者:HelloGitHub-小鱼干摘要:说到学习之道,方法很重要,好的学习方法能让你比他人更快地入门到精通,比如本周被 3k 多人 pick 的 learngo 项目,它收录了多个例子...

HelloGitHub 的博客 1358

C#里用HttpListener实现WEB API接口服务端

本文介绍了一个基于WinForm的HTTP服务实现方案。该方案使用HttpListener类创建了一个支持JSON POST请求处理的轻量级Web服务器,主要特点包括:1) 纯线程方式实现请求监听和处理;2) 提供标准化的JSON响应格式;3) 支持自定义请求处理逻辑;4) 包含完整的日志记录功能。代码示例展示了如何初始化服务、处理不同类型的请求(包括JSON POST),并提供了线程安全的UI更新机制。该实现适用于需要简单HTTP接口的Windows桌面应用程序,可作为程序间通信的基础设施。

大坡3D软件开发 228

OData V2 消息在 SAP UI5 中的生成、传播与治理全解

SAP UI5 的 OData V2 消息机制通过自动解析服务端响应头(sap-message)或错误体,将消息推送到全局 MessageModel,实现数据质量保障。关键点包括:1)消息通过目标路径与控件绑定联动,触发高亮等反馈;2)生命周期管理需注意避免自动刷新导致消息丢失;3)常见陷阱如批处理错误重复、内外层消息冲突等可通过精准目标路径或自定义处理器解决。代码示例展示了如何配置模型、消息模型及 MessagePopover 实现端到端消息展示,同时支持控件通过 refreshDataState 自定义

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 231

35岁+的大龄程序员:面对“中年危机”,这份书单或许能帮到你_数据库工程师有中年危机吗

虽然书中有些内容放在现在有点过时,但如网友所言,在今天的开发思想环境下,也许再也不会出来这样一本重量级的企业架构模式的书,甚至其中的很多模式会被觉得太重,太Java/.NET,但这才是真正的大型软件项目应有的架构模式,值得每一个程序员细细品味。概括了软件行业从业人员所需的“软技能”,从揭秘面试的流程到精耕细作出一份杀手级简历,从创建大受欢迎的博客到打造个人IP,从提高自己工作效率到与如何与“拖延症”做斗争,甚至包括如何投资不动产,如何关注自己的健康,堪称程序员的生活百科全书。

2401_84976207的博客 1033

【React】1、React入门与概览(JSX语法)

React入门 文章目录React入门一、React全家桶1. React是什么?2. 谁开发的?3. 为什么要学?4. React的特点5. 学习React之前要掌握的JavaScript基础知识二、React 概览组件JSXVirtual DOM关于虚拟DOM:Data Flow三、React基本使用相关js库四、React JSXJSX 语法规则五、模块与组件、模块化与组件化的理解5.1 模块5.2 组件5.4 模块化5.5 组件化 一、React全家桶 React基础 React-Router(R

Coding and studying 1379

关于程序员成长的一点思考

新闻来源:51CTO 程序员的我们,是否想过今后的路该怎么走、如何发展、技术怎样提高?其实这也是我一直在思考的问题。下面就此问题,分享下我的看法。因为我阅历有限,有什么说的不对的,大家一起喷! 一、程序员应该打好基础 1. 现在开发工具众多、语言泛滥,经常听人说”不学CC++神马都是浮云”、”CC++才是万王之王”,CC++就真比PHP、Lua、AS、JAVA牛吗? 其实不在于语言本身,而在于...

weixin_30439131的博客 95

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

你离专业程序员有多远《代码整洁之道》_代码整洁之道 程序员的职业素养(1)

承诺:专业开发人员不随便承诺,除非他们确切知道可以完成。不能兑现承诺,他们的损失以及你的声誉都会受到影响。不能兑现承诺是一种欺骗预估暗示性承诺。

2401_84976093的博客 793

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

关于程序员成长的一些思考

关于程序员成长的一些思考自己俨然还是一个涉世未深的甚至可以算得上是还未涉世的年轻程序员。敢以『涉世未深』自居是因为自己在学校实验室多多少少做过点东西。如此,竟然妄自谈论程序员成长相关话题实属不妥,只是因为无意之中看到一篇博文,阅读之后谈谈自己感受罢了。下面是这位博主的原文 程序员的我们,是否想过今后的路该怎么走、如何发展、技术怎样提高?其实这也是我一直在思考的问题。下面就此问题,分享下我的看法。

萬象森羅,能者獨秀! 1701

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

入职TWOWEEKS

入职两个星期了,作医用CT上的控制台程序,VS2005+C#。 先没让我进组,让我独立完成一个小工具,数据恢复系统。这是明智的决定。 C#没什么基础,只懂得最基本的一点东西,现在有点感谢以前啃了《C++primer》了,虽然当时啃的很受,不过算是积累了一点 东西,再看C#不是那么难了。 我渐渐发现,想成为一名优秀的程序员,目前这个阶段我仅仅是看书不够的,学习效率太低

ohyosolitude的专栏 275

路要怎么走?关于程序员成长的一点思考

程序员的我们,是否想过今后的路该怎么走、如何发展、技术怎样提高?其实这也是我一直在思考的问题。下面就此问题,分享下我的看法。因为我阅历有限,有什么说的不对的,大家见谅,千万不要喷…… 一、程序员应该打好基础 1. 现在开发工具众多、语言泛滥,经常听人说“不学CC++神马都是浮云”、“CC++才是万王之王”,CC++就真比PHP、Lua、AS、JAVA牛吗? 其实不在于语言本身,而在于...

weiyinchao88 78
上一篇: make makefile cmake qmake
下一篇: C++学习博客收集
lsfreeing
博客等级 码龄12年 145粉丝 147原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值