摘要:
随着互联网技术的发展,面对海量数据的存储和分析,传统关系型数据库已经无法满足,由此衍生出一种与关系型数据库区别开的数据库NoSQL(Not Only SQL)。国外做的比较成熟的NoSQL有MongoDB,Cassandra,ToKuMX等,不一一列举。据我的粗略了解,BAT等巨头内部基本都有自己的... 阅读全文
摘要:
本篇仅仅是Python的学习和Python和C++数据对接过程中的一些总结。由于工作的需要,用一周的时间学习 Python。Python是基于C实现的一门解释型语言,由于其易用性,俘获了不少开发者和运维的心。据说,Python 在科学计算领域,逐步吞噬着古老语言 Fortran的份额。这门语言是Go... 阅读全文
摘要:
在关于UI回调Invoker的实现(二)这一篇中,我说到了接口设计问题。一个对象,只能访问属于自己应该访问的方法,而对于不能访问不该访问的方法。其实,这是一句废话。怎么评判“什么方法应该访问,什么方法不应该访问”呢?如果一个类,public访问属性的方法全部是继承自接口的方法。那么,我认为这个接口没有任何意义。接口的意义在于,接口的客户,不知道接口是如何实现的。但是它仍然能通过接口的实例,访问(对应的)方法。如果代码有这样的例子,这跟把类的方法直接全部暴露给客户,没有区别。例如上篇文章给的例子。SetPressFunc这个方法,是button等有响应的窗口控件才有的,对于窗口本身没有任何意义( 阅读全文
摘要:
上篇我说到,光有一个IOperation*的指针,是无法记录这么多事件的。由于无法确定要把回调绑定到哪个事件上,因此,我们需要引入一个中间的传递机制。没有看到前面的请先查阅上一篇关于UI回调Invoker的实现(一)问题回到,我怎么让InitControl(...)知道,我是SetPressFunc,还是SetItemChangeFunc,等等事件的回调。我初步的想法是:定义一个IAttacher接口:class IAttacher{public: virtual ~IAttacher() {}; virtual void AttachInvoker(IUIWnd* wnd) = 0;}; . 阅读全文
摘要:
打算写一个DirectUI库,在写其中底层窗口的回调构造的时候遇到一个问题。Invoker是一个模板,因为closure的关系,它必须保存一个类对象的指针,和回调函数的地址。而函数调用的时候,就可以用一个通用的接口invoke就行了。接口的声明如下:class IOperation{public: virtual ~IOperation() {}; virtual void Invoke(IUIWnd* wnd, const EventArg& arg) = 0;}; 回调函数调用的时候,调用Invoke(...),传入(谁)那个窗口调用的,和调用的可能需要的数据。因为回调函数可能有不 阅读全文
摘要:
在实际项目中,很多地方都存在IO。而IO是很耗时间的,比方说:new、malloc。对于现代的计算机来说,动辄就是GHz量级的主频,似乎感觉不到影响。但是在大型的项目里面,反复的new和delete,不仅会耗大量的时间,还会造成内存碎片。new是一个很麻烦的东西。有new的地方,就是你可能栽坑的地方... 阅读全文