07 2016 档案
摘要:一些可能用到的工具 并发编程 1.FastFlow(C/C++):http://calvados.di.unipi.it/dokuwiki/doku.php/ffnamespace:about 2.Disruptor(Java):https://github.com/LMAX-Exchange/di
阅读全文
摘要:锁 互斥锁:互相排斥,上锁或释放锁会导致内核态上下文切换,没有获得锁的情况下线程进入休眠。 自旋锁:用户态不停尝试获取锁,直到锁获取成功或者线程切换。 在多核 / 多CPU 的系统上,特别是大量的线程只会短时间的持有锁的时候,这时如果使用 互斥锁,在使线程睡眠和唤醒上浪费大量的时间,也许会显著降低程
阅读全文
摘要:http://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/
阅读全文
摘要:虽然Java有GC垃圾自动回收功能,但并不是说Java程序就不会内存泄漏。如果一个对象没有地方会使用到,但是却仍然有引用指向他,那么垃圾回收器就无法回收他,这种情况就属于内存泄漏。这种泄漏可能属于短暂的(即程序运行一段时间后引用消除进而出发GC)也可能是程序级别的(即程序退出时才会回收)。Java的
阅读全文
摘要:转自http://blog.csdn.net/myan/article/details/5928531 这是那篇C++0X的正文。太长,先写上半部分发了。 Function/bind可以是一个很简单的话题,因为它其实不过就是一个泛型的函数指针。但是如果那么来谈,就没意思了,也犯不上写这篇东西。在我看
阅读全文
摘要:内存的分配和释放,典型的做法有 1.全人工,也就是调用malloc/free,new/delete这些完全靠程序员,当然这样开发的程序很容易出现bug 2.引用计数,对每个分配的对象增加一个引用计数器,这样带来的问题是内存额外开销,增加减少引用时的计算开销,特别在多线程时的加锁,而且还有循环引用的问
阅读全文
摘要:Java能被广泛使用,很重要的就是GC(Garbage Collection,垃圾回收)机制,也是Java与C/C++的主要区别之一。GC机制带来的好处就是不需要我们过多地关注内存泄漏导致的OOM,但是这并不意味着Java开发就不会有内存泄漏,另外在某些情况下GC也会影响程序运行效率,极端情况下导致
阅读全文
摘要:Android编码规范 Android性能优化 Android注意事项
阅读全文
摘要:转自http://droidyue.com/blog/2014/11/08/bad-smell-of-asynctask-in-android/ 译文:Android中糟糕的AsyncTask NOV 8TH, 2014 AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操
阅读全文
摘要:C++为了执行效率,开发效率不断演进,不断推出新的特性,新的标准库。用来开发某一个单独功能时确实很方便快捷,单一旦涉及到UI以及功能复杂点的请况,C++的库就不够用了。java凭借着其简单的语法,以及内存管理,跨平台等优势,赢得了多年稳坐编程语言第一的位置。 在Android开发领域,由于其和C++
阅读全文
摘要:通过上一节的例子,在反射里加入数据成员,属性等,实现更加复杂的对象。 1.实现 2.使用 3.结果
阅读全文
摘要:C++不像C#,java那样天生编译过程实现反射功能,只能在代码层面注册来实现。比如QT,UE等,为了实现反射功能,提供了特殊的宏定义,并且使用工具将宏生成相应的C++代码实现反射功能的。 1.定义 2.使用 3.结果 getIntValue 2 这里实现的反射功能还是很简单,没有对输入参数,输出参
阅读全文
摘要:1.定义 结合前面的内容,可以定义如下的基类 定义继承类型 2.使用 3.结果
阅读全文
摘要:Type Traits, 类型萃取,这个概念涉及到的内容太多。基本常用的萃取方法可以参考 http://en.cppreference.com/w/cpp/types 这里主要记录一下对函数的萃取技巧. 上面只是对函数做了简单的包装,并且forward参数调用。 如果需要更精确的参数控制,则可以如下
阅读全文
摘要:RTTI(Run-Time Type Identification),通过运行时类型信息程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。 C++ 里通过虚函数增加额外信息的方法实现了RTTI。GCC和VS的实现也大同小异,并且都有专门的设置来开关来禁止或使用RTTI。 和R
阅读全文
摘要:在内存管理中,经常需要自定义内存分配释放,也就是需要定义new 和 delete. 通常为了有针对性的对某些对象的内存分配进行管理,定义一个内存管理基类 1.定义 2.使用 1 class MemObject : public Memory { }; 3.调用 通过该方式,实现内存的自我管理和监控。
阅读全文
摘要:SFINAE:即Substitution Failure Is Not an Error!可以理解为匹配失败不是错误,更严格的说应该是参数匹配失败不是一个编译时错误。 C++函数匹配的顺序遵循的原则是按照以下顺序 1.寻找参数的完美匹配函数,找到则使用 2.寻找模板函数,若实例化后的函数能够匹配则使
阅读全文
摘要:1. 当一个文件里面代码过多时,往往需要将代码分组,C#里面有#pragma region的控制字,而C++里面缺少这个,可以使用下面这个来替代。 2.预处理时计算数组大小 3.属性 使用时就可以像C#一样了
阅读全文
摘要:随着C++ 11的语法越来越复杂,功能也越来越强。用泛型+返回类型推导的方法来实现常量字符串的处理,能实现宏实现不了的地方,并且在编译期实现 SO上的牛人太多了,以下是出处 http://stackoverflow.com/questions/15858141/conveniently-declar
阅读全文
摘要:有了上一篇的str2type,类似的可以定义numb2string 1.定义 2.实现 3.使用 1 std::cout << blog_numb2str(12345678) << std::endl; 4.结果 12345678 5.优缺点
阅读全文
摘要:在泛型编程中,很多时候用到类型映射,类型转换等,比如int2type,type2type. 在有些时候可能需要将常量静态字符串作为类型,也就是string2type. //https://github.com/ColinH/PEGTL 这个库将泛型大量用到了字符串处理中,其中就有string2typ
阅读全文
摘要:重载(overloading),简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。 C++里最常用和熟悉的有函数重载,运算符重载,模板重载。在开发过程中有时为了方便,用到宏,网上查了下,也能将宏重载。 http://st
阅读全文
浙公网安备 33010602011771号