- 博客(37)
- 资源 (22)
- 收藏
- 关注
转载 C++学习 Boost状态机说明statechart
1. 状态 对象在其生命周期内,所处于的运动和发展阶段。例如:人可以处于工作中这个状态,也可以处于娱乐中状态。状态应该有上下文环境。例如:人处于工作中状态,要属于职业生涯状态而不能是退休状态,也必须是活着的,而不能是死亡的状态。状态可以有子状态。例如:工作中状态,可以有开会中,会客中,被训斥中等子状态。2. 状态机由许多相关状态构成的集合。把一个对象,或者一个系统看做是一个
2015-05-29 10:03:39 10575 3
转载 ceph存储 状态机思路在程序设计中的应用
状态机思路在单片机程序设计中的应用状态机的概念状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。比如说一个按键命令解析程序,就可以被看做状态机:本来在A状态下,触发一个按键后切换到了B状态;再触发另一个键后切换到C状态,或者返回到A状态。这就是最简单的按键状态机例子。实际的按键解析程序会比这更复杂些
2015-05-29 09:43:54 1077
转载 C++学习 boost学习之-polymorphic_downcast
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 polymorphic_downcast在调试状态下会测试转换是否成功,在非调试状态下内部直接调用static_cast实现2 在向下转型方面,速度比dynamic_cast快3 polymorphic_downcast 用于那些你应该用而又不想用dyna
2015-05-27 14:22:35 880
转载 C++学习 boost学习之-weak_ptr
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 weak_ptr是share_ptr的观察者,打破递归的依赖关系,旁观一个共享资源而不能拥有所有权,或者为了避免悬空指针2 weak_ptr 不对它所观察的指针提供重载的 operator* 和operator->,所以要访问观察指针,需要转换回share
2015-05-27 14:22:30 635
转载 C++学习 boost学习之-intrusive_ptr
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 与share_ptr功能上是一样的,只不过引用计数是采用侵入式实现的,尽量避免使用,除非:已有代码使用或提供了插入式的引用计数智能指针的大小必须与裸指针的大小相等需要把 this 当作智能指针来使用时(this是智能指针的this)2 需要你
2015-05-27 14:22:28 1910
转载 C++学习 boost学习之-numeric_cast
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 不同类型之间进行转换时,尽量使用numeric_cast,他会检查数据的范围,如果有问题会抛出异常2 对浮点数类型,不会抛出异常,会产生截断3 原则在无符号与有符号类型间进行赋值或比较时在不同大小的整数类型间进行赋值或比较时从一个函数返回类
2015-05-27 14:21:04 1270
转载 C++学习 boost学习之-polymorphic_cast
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 dynamic_cast对指针类型转换失败会返回空,对引用转型失败会抛出异常,而polymorphic_cast统一了这两种不一致的行为;polymorphic_cast会都抛出异常2 polymorphic_cast的好处是避免因为疏忽导致忘记测试转换后的指
2015-05-27 14:20:59 707
转载 C++学习 boost学习之-shared_array
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法: 1 用于共享数组所有权的智能指针 2 用于数组而不是单个对象 3 std::vector的shared_ptr提供了比shared_array更多的灵活性综上,个人认为shared_array价值不大,不如用std::vector的shar
2015-05-27 14:20:52 1449
转载 C++学习 boost学习之-shared_ptr
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 shared_ptr是具有引用计数功能的指针,一般用于复制操作很昂贵,或代表的东西被多个东西共享; 引用计数功能分为侵入式和非侵入式,侵入式要求类提供增加或减少计数的函数或数据成员,而非侵入式的没有这方面要求2 可以在构造时传入删除器,使用自己的
2015-05-27 14:20:50 868
转载 C++学习 boost学习之-scoped_array
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 与socped_ptr类似,之不过它是最数组生存期的管理,析构用delete[]2 最好用vector,因为更强大,更灵活如: std::vector array(100, 0);//定义100个大小的数组,初始化为0 //应用该数组
2015-05-27 14:20:47 579
转载 C++学习 boost学习之-scoped_ptr
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 不需要手工删除,析构函数自动调用delete2 不能被复制和复制构造,因为这个函数是私有函数3 一个scoped_ptr仅保存一个裸指针,不能两个以上scoped_ptr保存一个裸指针,因为析构时会有问题4 用scoped_ptr实现impl机制时,必
2015-05-27 14:20:00 624
转载 嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误
一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。 [cpp]view plaincopyprint?int backtrace(vo
2015-05-27 14:19:23 3534
转载 C++学习 boost学习之-lexical_cast
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 lexical_cast 想象为使用一个 std::stringstream 作为字符串与数值的表示之间的翻译器2 转换对象必须重载输入输出操作符3 如果转换有问题,会抛出异常4 一般用途:从字符串类型到数值类型的转换从数值类型到字
2015-05-21 10:53:52 745
转载 C++学习 boost学习之-BOOST_STATIC_ASSERT
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 编译器断言,同样在运行期通过断言检测程序正确性,但是该宏可以在编译器检查正确性2 由于编译器断言要求在编译器,断言的内容的值是能够计算出来的如:BOOST_STATIC_ASSERT(sizeof(int) 总结,也是比较有用的工具;
2015-05-21 10:52:38 597
转载 C++学习 boost学习之checked_delete
用法:删除一个动态分配的对象时,必须调用它的析构函数。如果这个类型是不完整的,即只有声明没有定义,那么析构函数可能会没被调用。这是一种潜在的危险状态,所以应该避免它。对于类模板及函数模板,风险会更大,因为无法预先知道会使用什么类型。使用checked_delete 和 checked_array_delete, 可以解决这个删除不完整类型的问题。它没有运行期的额外开销,只是直接调用
2015-05-21 10:48:32 611
转载 C++学习 boost学习之-noncopyable
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 私有派生于noncopyable的类都不能复制和赋值2 原理是:noncopyable内部禁止了赋值和复制3 该类可以被很好被复用,减少工作量,不用把想要禁止赋值和复制的类都自行定义私有的赋值和复制方法,只需从该类派生即可4 什么情况下我们需要自定义复
2015-05-21 10:48:17 1080
转载 C++学习 boost学习之addressof
用法:1 要获得一个对象的真实地址请用addressof,而非operator&,2 addressof会绕过operator&而取得真实地址没什么好说的,取对象地址最安全做法就是用这个了!
2015-05-21 10:46:42 518
转载 C++学习 boost学习之-enable_if
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 你需要在把一个符合某些条件的函数加入到或排除出重载决议集合中。你需要根据某个条件将一个类模板的特化版本加入到或排除出特化集合中。2 实现方法,看如下例子: void some_func(int i){ st
2015-05-21 10:46:21 2012
转载 C++学习 boost学习之-Operators
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 c++一个重要的功能是复用,避免写重复代码,而boost为自定义类的operator的实现代码提供了复用实现2 operator重载中,有这样一个事实:多数运算符重载实现中可以通过调用少数的运算符重载函数来实现 如 下:下面的实现,都是通过两个运算符
2015-05-21 10:44:47 575
转载 C++学习 boost学习之-Regex
用法:1 提供列正则表达式的匹配,寻找和替换功能2 匹配用法 boost::regex reg("."); assert(boost::regex_match(“a”,reg)==true);3 查找用法 boost::regex reg("(xxx))");boost::smatch m;std::string s="Calls to xxx. \
2015-05-21 10:42:32 1274
转载 C++学习 boost学习之-any
Boost中文手册下载:http://download.csdn.net/detail/skdkjxy/8723045用法:1 内部原理:通过模板类型的构造函数来实现2 通过any_cast来转换为真实的类型3 通过any_cast转换指针,如果失败返回空4 通过any_cast转换引用,失败抛出异常抛出异常代表非预料性错误,返回空不代表错误;
2015-05-21 10:41:40 517
转载 C++学习 boost学习之-Variant
用法:1 他与c语言中的union相对应2 通过模板参数定义可以支持的类型3 通过boost::get()进行访问4 可通过boost::static_visitor与boost::apply_visitor(visitor, variant).的组合来访问总结,目前还没想到这个有什么很好的用处;看例子体会用法:class print_visitor : pub
2015-05-21 10:39:16 1487
转载 C++学习 boost学习之-Tuples
要点:1 是标准库中std::pair的扩展,只不过pair是一个2-tuple2 tuple最多可以支持10个元素3 tuple较结构体相比,更容易声明,定义和使用;4 与std::make_pair相对应的有boost::make_tuple5 访问tuple boost::tuple triple(42,3.14,"The amazing tuple!")
2015-05-21 10:36:51 727
转载 C++学习 boost学习之-bind
要点:1 是标准库中bind1st和bind2st的扩展,功能更强大2 他是一个创建函数对象的工具,而函数对象时标准库的算法需要的,所以bind提供了方便创建函数对象的功能3 使用bind的代码更简洁,易懂,较标准库的mem_fun,mem_fun_ref等好用4 bind的占位符_1,_2...对普通函数最多有9个,对于成员函数仅支持8个,第一个参数是类的this指针5 bi
2015-05-21 10:35:59 474
转载 C++学习 boost学习之-Lambda
要点:1 c++是面向对象的语言,尽量把所以一切东西看成对象,包括数据类型,函数,表达式,所以把这些东西转换为对象时非常关键的, boost基本上就是把什么都看做是对象来处理,这样把一般函数或表达式转化为函数对象很重要,同前一次说的bind,和这一次要学习 的lambda,本质的作用就是把函数或表达式转换为函数对象;lambda可以把表达式转换为函数对象,避免了程序中写很多仿
2015-05-21 10:33:16 668
转载 C++学习 boost学习之-function
要点:1 用于保存函数对象,本身是函数对象2 与bind一起使用,威力巨大:class command { boost::function f_;public: command() {} command(boost::function f):f_(f) {} void execute() { if (f_) { f_();
2015-05-21 10:31:08 667
转载 C++学习 boost学习之-Signals
要点:1 函数和函数对象的灵活多点回调2健壮的触发器及事件处理的机制3兼容于函数对象工厂,如 Boost.Bind和 Boost.Lambda4 Boost.Signals 库具体化了信号(signals)和插槽(slots),信号指的是某种可被"抛出"的东西,而插槽是接收该信号的连接者。这是一种著名的设计模式,它还有另外一些名字Observer, signals/sl
2015-05-21 10:25:09 975
转载 C++学习 boost学习之-Filesystem
要点:1 头文件 #include "boost/filesystem.hpp" // includes all needed Boost.Filesystem declarations #include // for std::cout using boost::filesystem;2 在path.hpp中定义了路径类 a 支持多种编码格式,包括uni
2015-05-21 10:07:28 800
转载 C++学习 boost学习之-Thread
要点:1 线程对象不可以复制,但是可以转移;2 当线程对象析构时,线程变为detached,但线程并未结束;也可以通过detach()方法来显示的detached;3 等待线程结束,可以用join() or timed_join()方法;4 可以调用interrupt()方法结束一个线程,线程会在运行到interruption points时抛出boost::thread_
2015-05-21 09:55:50 1017
转载 C++学习 boost学习之-Synchronization
要点:1 boost提供了如下lock模板类,以mutex类型作为模板参数Class templatelock_guardClass templateunique_lockClass templateshared_lockClass templateupgrade_lockClass templateupgrade_to_unique_lockMutex-spe
2015-05-21 09:37:22 541
转载 C++学习 boost学习之-生产者消费者问题例子
生产者消费者问题在线程编程中是基础问题,很重要,很多其他问题的解决都通过扩展该问题的解决方法来解决的;boost中的一个例子是这样写的,很简洁;所以boost很强大,屏蔽掉了很多繁琐的问题;#include #include #include #include #include class bounded_buffer : private boost::noncop
2015-05-21 09:34:20 1818
转载 C++学习 boost::apply_visitor说明
函数 apply_visitorboost::apply_visitor — 将给定的访问者应用到给定的 variant 的内容上,该过程在编译期进行类型安全检查,以确认所有类型均被访问者所处理。摘要templatetypename Visitor, typename Variant> typename Visitor::result_type appl
2015-05-21 09:12:20 9583
转载 C++学习 operator两种用法详解
转换函数的名称是类型转换的目标类型,因此,不必再为它指定返回值类型;转换函数是被用于本类型的数值或变量转换为其他的类型,也不必带参数 在写这篇文章之前,让我们先回顾一下编译器通过匹配过程确定调用哪一个函数的匹配顺序:(1)寻找和使用最符合函数名和参数类型(包括返回值)的函数,若找到则调用;(2)否则,寻找一个函数模板,将其实例化产生一个匹配的重载函数,若找到则调
2015-05-20 16:56:22 20164 3
转载 ceph存储 浅谈Ceph纠删码
目 录第1章 引言 1.1 文档说明 1.2 参考文档 第2章 纠删码概念和原理 2.1 概念 2.2 原理 第3章 CEPH纠删码介绍 3.1 CEPH纠删码用途 3.2 CEPH纠删码库 3.3 CEPH纠删码数据存储 3.3.1 编码块读写 3.3.2 间断全写 3.4 使用范围 3.4.1 冷数据 3.4.2 廉价多数据中心存储
2015-05-13 16:53:06 4287
转载 ceph存储 Ceph存储分层技术
目 录第1章 引言 1.1 文档说明 1.2 其他说明 第2章 分层存储概述 第3章 创建池 3.1 设置存储池 3.2 设置缓存池 第4章 创建缓存层 第5章 配置缓存层 5.1 目标的大小和类型 5.2 缓存大小 5.2.1 相对大小 5.2.2 绝对大小 5
2015-05-13 16:49:58 5672
转载 嵌入式 git revert和git reset的区别
原文:http://blog.csdn.net/koffuxu/article/details/6731876git revert 是撤销某次操作,此次操作之前的commit都会被保留git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区具体一个例子,假设有三个commit, git st:commit3: add test3.ccommit2: ad
2015-05-11 14:08:30 550
转载 嵌入式 git fetch和git pull的区别
原文: http://www.tech126.com/git-fetch-pull/ Git中从远程的分支获取最新的版本到本地有这样2个命令:1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge git fetch origin mastergit log -p master..origin/mastergit merge origin/master
2015-05-11 14:07:53 526
tracepoint_lttng使用详解
2015-03-23
多路径multipath配置文档和相关概念
2015-01-07
ceph-fs-rpm-build
2014-12-08
ceph-cognize-docs_zh-v1.3
2014-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人