代码改变世界

解决使用Skia图形库时遇到的几个问题

2016-12-16 19:43 by jiayayao, 4789 阅读, 0 推荐, 收藏, 编辑
摘要:Skia是一个开源的2D图形库,提供通用的API,适用于工作中遇到的各种硬件和软件平台。这是谷歌浏览器Chrome OS,Android的图形引擎,Mozilla Firefox浏览器和Firefox OS,和许多其他产品。 官方网站:https://skia.org/ 编译及配置方法可以参考Ski 阅读全文

C++11之lambda表达式

2016-12-11 16:41 by jiayayao, 1752 阅读, 0 推荐, 收藏, 编辑
摘要:lambda表达式源于函数式编程的概念,它可以就地匿名定义目标函数或函数对象,不需要额外写一个命名函数或者函数对象。lambda表达式的类型在C++11中被称为“闭包类型”,也可以理解为是一个仿函数(带operator()类),其语法形式如下: [capture] (params) opt -> r 阅读全文

反应器(Reactor)和主动器(Proactor)

2016-12-10 20:20 by jiayayao, 1580 阅读, 0 推荐, 收藏, 编辑
摘要:网络方面用的比较多的库是libevent和boost.asio,两者都是跨平台的。其中libevent是基于Reactor实现的,而boost.asio是基于Proactor实现的。Reactor和Proactor模式的主要区别就是真正的操作(如读/写)是由谁来完成的,Reactor中需要应用程序自 阅读全文

快速排序及STL中的sort算法

2016-12-08 23:15 by jiayayao, 4072 阅读, 0 推荐, 收藏, 编辑
摘要:快速排序基本思想是,对待排序序列进行划分(Partition),一次划分,选择一个元素作为枢轴,然后将所有比枢轴小的元素放到枢轴的左边,将比枢轴大的元素放到枢轴的右边。然后对该枢轴划分的左右子序列分别再进行划分,如此递归。Partition是一个非常重要的概念,因为它只需要O(n)的时间复杂度就可以 阅读全文

设计模式之代理模式

2016-12-06 22:12 by jiayayao, 587 阅读, 1 推荐, 收藏, 编辑
摘要:代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问。使用场合,第一,远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实;第二,虚拟代理,是根据需要创建开销很大的对象。通过它来存在实例化需要很长时间的真实对象;第三,安全代理,用来控制真 阅读全文

C++11之std::function和std::bind

2016-12-06 21:30 by jiayayao, 24780 阅读, 5 推荐, 收藏, 编辑
摘要:std::function是可调用对象的包装器,它最重要的功能是实现延时调用: 由上边代码定义std::function<int(int)> fr2,那么fr2就可以代表返回值和参数表相同的一类函数。可以看出fr2保存了指代的函数,可以在之后的程序过程中调用。这种用法在实际编程中是很常见的。 std 阅读全文

C++11之for循环的新用法

2016-12-06 20:12 by jiayayao, 26387 阅读, 4 推荐, 收藏, 编辑
摘要:C++使用如下方法遍历一个容器: 其中auto用到了C++11的类型推导。同时我们也可以使用std::for_each完成同样的功能: 现在C++11的for循环有了一种新的用法: 上述方式是只读,如果需要修改arr里边的值,可以使用for(auto& n:arr),for循环的这种使用方式的内在实 阅读全文

链表的逆置(又称反转)

2016-12-06 00:00 by jiayayao, 2309 阅读, 1 推荐, 收藏, 编辑
摘要:链表的逆置常作为应届生面试题,主要考察求职者对链表的理解,还有思维能力。逆置的思路主要是保存几个临时的指针变量,其实好多面试题都可以通过保存临时变量的方式来解决。对于此类问题,建议一定不要死记硬背,因为死记硬背一定会随着时间的推移而忘记,建议按照pPrev,pNode,pNext依次向后推移的思路理 阅读全文

冒泡法排序

2016-12-05 23:30 by jiayayao, 905 阅读, 1 推荐, 收藏, 编辑
摘要:冒泡法排序,顾名思义,整个排序过程实际上一次次的冒泡过程,每次冒泡都会进行相邻数字的比较,如果Left>Right,则交换,一次冒泡完毕后,数组最大的值就会被安置到最后的位置。然后进行第二次冒泡,这次冒泡就会将次大值安置到n-1的记录上。依此类推。 冒泡法排序的算法复杂度O(n2). C++代码如下 阅读全文

从活字印刷术的角度理解面向对象编程

2016-12-04 22:24 by jiayayao, 535 阅读, 0 推荐, 收藏, 编辑
摘要:《大话设计模式》开头从活字印刷术的例子讨论面向对象的好处,个人觉得非常形象。活字印刷术主要体现了面向对象的如下几点: 1. 可维护:修改的话只需要修改某一个字; 2. 可复用:别的字可以重新拿来用; 3. 可扩展:如果要加字,只需要刻新字; 4. 灵活性好:横排竖排都可以。 通过封装、继承、多态把程 阅读全文