boost在实际项目中的使用

对于boost在实际项目中的使用应该有一个相对客观的态度,既不能过分使用,在项目中铺满boost,又不能对其畏之如虎,不敢使用。


我想实际游戏开发中,我们的团队伙伴大多应该是跟我一样程度的----对c++有一定的了解,又绝对成不上专家。所以,我们使用boost应该有下面这些原则或者说是注意事项:


1、不要认为boost非常庞大就一概否定,认为游戏客户端里面绝对不能或者完全没有必要加boost。   我们完全可以使用bcp裁剪我们需要的模块,虽然boost的牵连性还是很大的,裁剪一个智能指针有可能会裁剪出一大堆文件,但是至少不会把100mb+ 的代码都加到项目中。


2、我们常用的一些boost库已经加到tr1里面了,我们常用的开发环境又都是支持tr1的。vs2010、xcode、android ndk。所以如果我们只是用这些功能的话那么确实没有必要引入boost。


3、尽量避免需要编译的boost库的使用。只使用头文件形式的。如果一定要使用的话,那么可以选择把实现文件直接加到项目中,当做我们自己的代码 来进行维护。这样ios和android环境维护起来要方便很多。  如果我们只在windows下进行开发,那么boost的auto_link机制也还方便。至少最近几个版本的boost编译起来已经相当方便了,方便 到不需要教程的地步了。


4、尽量避免平台相关的库的使用。虽然像filesystem这样的库使用起来很方便,boost也帮助我们封装了平台依赖。但是还是尽量要避免这 些库的使用。因为boost虽然支持ios和android,但并不意味着这些库在ios和android下都能正常工作。比如我之前就碰到 过,filesystem的某个函数在ipad2上会崩溃,但是在iphone和ipad1上面又正常。还有boost::mutex在ios下怎么也锁 不住,但是自己简单封装下pthread又可以正常工作。所以与平台紧密相关的操作还是自己维护的好,否则就是要替boost debug代码了。


5、不要认为boost什么都好,就在代码里面充斥着boost的代码。因为boost再工业化强度,也仅仅是“准”标准库。不是人人都会使用boost,也不是人人都愿意学习boost。代码中大量出现mpl什么的绝对不是一个聪明的选择。


6、boost相关的头文件,要么加入到预编译头里面。要么放到实现文件里面。千万不要放到会被大量引用,但是又没有预编译的头文件。因为boost里面大量充斥着模板,编译起来时间相当漫长。


7、我常用的一些boost库:


      smart_ptr  function   bind   这三个不用多说了,已经加到tr1里面的,如果还不会的话,就跟c++程序员不会stl一样,直接面壁去。


      algorithm/string  字符串算法库,这个相当好用并且很基础。如果不用这个话,那肯定还是要自己重复造轮子的。


      format   这个见仁见智,如果不喜欢它的语法的话,那就自己封装个。这个比vsnprintf最大的好处就是安全性,不会因为参数传错而崩溃


      pool   这个还没有真正使用,不过如果我有内存池的需要的话,绝对不会介意使用这个


      regex  这个也是加到tr1里面的,不过ios下面貌似没有。不管怎么说,如果用到正则表达式,这个还是首选。虽然它有一大堆实现文件。


     


       一些我个人绝对不会使用的库:


      test   用起来很不方便,不如用cxxtest


      preprocessor  游戏开发需要词法分析吗?  加上这个库会让你的工程编译时间变成一个世纪那么长


      mpl  牛人可以使用它来封装自己的模板库,但是接口中一定不要暴露出相关的东西。因为这个东西可不是人人都懂的。


      lambda 虽然tr1中也有lambda,但是还是不要为了省两行代码加入匿名函数了。  自己看着爽了,别人就都看不懂了。毕竟c++是c++,java是java


      date_time  这么简单的东西,还是自己封装下好了。牵扯到夏时令还有时区的时候,还是自己写的更加放心


      property_tree  可能我会封装一个类似的兼容xml和json和ini的配置读取方式,但是肯定不会是property_tree这样的形式,应该更加简洁一些,即便扩展性差些。


      thread  前面说过了,自己封装下也不麻烦,不就是pthread吗?
这个是完整源码 java实现 大数据 Spark 可视化大屏+Kafka+SpringBoot+Vue3 【大数据毕业设计】基于Spark实时电商用户行为分析与预测(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 源码+论文 完整版 数据Mysql 随着电子商务行业的快速发展,平台每天都会产生海量的用户行为数据,包括浏览、加购、收藏和购买等。如何对这些行为数据进行实时采集、高效统计与科学预测,已成为电商运营决策和智能推荐的关键问题。传统的离线批处理方式存在延迟高、反馈慢、难以支撑实时运营的不足,因此构建一套面向实时场景的电商用户行为分析与预测系统具有重要的工程意义和应用价值。 本文设计并实现了基于 Spark 的实时电商用户行为分析与预测系统。系统采用前后端分离架构,后端以 Java 与 Spring Boot 为核心构建 REST 接口服务,结合 Apache Kafka 完成行为事件的异步投递与缓冲,利用 Spark MLlib 对窗口销售额进行线性回归预测,并将结果持久化至 MySQL;前端基于 Vue3、Element Plus 与 ECharts 实现管理后台与可视化大屏。系统主要功能包括管理员登录与个人中心、数据概览、行为数据查询、商品管理、实时统计、销售额预测以及可视化大屏展示。 在数据分析方面,系统通过行为模拟器持续生成 pv、cart、fav、buy 四类行为事件,按时间窗口聚合 PV、UV、加购数、收藏数、购买数和销售额等指标;在预测方面,采用滞后特征与小时特征构建训练集,优先使用 Spark 线性回归模型,并在异常情况下自动降级为 Java OLS 回归,保证服务可用性。测试结果表明,系统能够稳定完成实时统计与预测展示,界面交互清晰,能够满足本科毕业设计对完整性、可用性和技术综合性的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值