- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 RPC for C/C++
There is a lot of RPC technology for C/C++.For not using JNI, here are some library which support native C/C++.thrift: open-sourced by f
2011-08-12 17:19:40 2655
原创 常用工具集收集
1. 基础:STL,boost2. 网络:boost::asio,Raknet3. 编解码:Xvid4. 界面:QT5. 调试:DebugView,WinDbg Microsoft Network Monitor 6. Linux:Code::block/Ecipse + CDT + MinGW + C++ Formatter
2009-11-19 17:46:00 417
原创 compare signed with unsigned
if (signed then: 1. signed be converted to unsigned; 2. compare so if signed value is nagetive, then you will get surprise. (signed
2009-11-19 17:16:00 510
原创 STL以”Value“为核心
STL中以"Value"为核心。即容器中存入的都是副本,并非引用;也就是说STL中的操作都是值拷贝操作,而非"reference"操作。因此需要注意: a. 类对象需要支持拷贝构造,赋值运算符重载,operator b. 析构函数要公有。
2009-11-18 17:02:00 391
原创 仿函数(又名函数对象)
1. 仿函数可以理解为实现类operator ()重载的类。 2. 仿函数需要提供默认构造,这是一种无形效率损失。 3. 优点: a. 仿函数可以实现配接性; b. 防函数可以具有更加灵活的特点。因为类中可以拥有自己的成员函数和成员变量; c. 可以实现更加复杂的操作,而不会显得函数太拥挤而不清晰。
2009-11-18 16:27:00 525
原创 局部变量生存期
for(int i = 0;i{ int b; { //此花括号很重要,它改变量局部变量a的生存期,将其生存期限制在此花括号范围内。 int a; }}
2009-11-18 16:21:00 530
原创 std::vector
1. 向后插入很快,先前出入为O(n); 2. 在其Capaity()范围内,可以很快的执行push_back()等增长性操作,但是在其范围外,则会重新分配更大的内存,并致辞那个拷贝转移。 这意味着以前元素的reference,pointer,iterator可能失效。 3. 其构造函数如果指定元素个数N,会调用N次默认构造函数。
2009-11-18 16:14:00 344
原创 std::map&&std::set
1. 用Inert()插入元素,push_back()与push_front()毫无意义,因为容器内部采用有序二叉树自动排序。 2. MultiSets与MultiMaps的Key可以重复,Set和Map则不可以。 3. 调用remove()等变动性函数,更改Set和Map的有序二叉树结构;直接操作会破坏已排好序的平衡二叉树结构。
2009-11-18 15:51:00 354
原创 深拷贝&&浅拷贝
深拷贝:需要拷贝类或结构中指针引用的堆资源,保持双份对资源。浅拷贝:只拷贝类中指针,二者指向统一堆资源。 因此:浅拷贝,默认拷贝构造等会造成隐含的堆资源二次析构。 甚至在一些默认的STL(例如:std::auto_ptr)中,拷贝时删除原来的,新建新的,更会增加产生错误的可能性。 采用boost::smart_ptr可以在一定程度上改善这种情况。
2009-11-18 15:36:00 349
原创 模板相关
1. 模板被具体参数化时,不进行默认类型转化,即使类型相融的情况下:如short-->int。 2. 定义抽象模板类成员函数: template typename T::fun tempfun; 注意:a. 模板的具体实现类必须包含成员函数fun; b. typename必不可少,否则会编译错误。
2009-11-18 15:26:00 327
原创 坚持自我
一个人要坚持自己,外界发生的事情可以使他悲伤,痛苦,喜悦,兴奋,当时不可以让这些情绪影响到你真正的自我。当你因事情心烦意乱而迁怒与别人时,请考虑当你平心静气时会怎么做呢? 请坚持自我吧! 在坚持自我,不为外物影响时,对自己所感兴趣的事情和憎恶的事情时也不必刻意保持冷静,应该随心而全情投入。这才是真正的坚持自我。 色即是空,空即是色。心系万物,但万物不萦于心。
2009-11-18 15:09:00 345
原创 拷贝构造&&赋值运算符重载
class A;A a; 定义: 拷贝构造:A::A(A &a); //参数使用引用调用方式,可以减少参数对象的构造! 赋值重载:A operator =(A &a); 使用: 拷贝构造:A b = a; 赋值重载:A b; b = a; 注意:当无拷贝构造时,进行拷贝构造时默认采取memcpy;
2009-11-18 14:43:00 354
原创 std::string
1. 默认不含/0,且其视/0为一般符号,无特殊含义; 转化为char*时,遇到/0终止; 2. data()返回char*,但是不包含/0,非有效的char*;c_str()返回有效char*; data()和C_str()返回的char*空间为string所有,因此不可以修改或释放其内存; copy()同data(); 3
2009-11-18 14:30:00 366
原创 OO设计模式(摘自:《Head First Design Pattern》)
1. 策略模式:定义算法族,分别封装,让他们相互之间替换。此模式让算法的变化独立于使用算法的客户。 a. 实现方式:算法由子类自由决定实现; b. 交互方式:组合委托。 2. 观察者模式:定义了对象之间的一对多依赖,这样一来当一个对象状态变化时,它们所有依赖者都会受到通知并且自动更新。
2009-11-17 18:23:00 586
原创 OO设计原则(摘自:《Head First Design Pattern》)
1. 分离变与不变的部分。2. 针对接口编程,不针对实现。3. 多用组合,少用继承。4. 为了交互对象的松耦合而努力。5. 类应该对扩展开放,对修改关闭。6. 依赖倒置原则:要依赖抽象,不依赖具体。7. “最少知识原则”:只和你的密友谈话。8. “好莱坞原则”:别调用我们,我们会调用你。(例如:观察者模式)9. 一类应只有一个引起变化的原因。1
2009-11-17 17:37:00 408
转载 (转载:转自胡杰的个人空间)字节对齐
转载:http://space.itpub.net/10697500/viewspace-614188 一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对
2009-11-10 12:34:00 1027
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人