2016年2月3日

多重继承下的类型转换

摘要: 先来看看前面代码的内存布局。 之所以会出现pI1和pI2指向了同一个地址,是因为C++编译器没有足够的知识来把IA*类型转换为IB*类型,只能按照传统的C指针强制转换处理,也就是指针位置不变。为了验证上面的结论,简单的把pIA和pIB打印出来即可。把main()函数修改为如下: int main(i 阅读全文

posted @ 2016-02-03 11:27 cthu 阅读(221) 评论(0) 推荐(0) 编辑

多重继承下的类型转换

摘要: 主要解释强制类型转换的影响。因为static_cast会在编译期间检测,dynamice_cast会在运行时检测。#include #include using namespace std; class I1 { public: virtual void vf1() { cout m_cache; }; I1* CreateC() { return new C(); } int ... 阅读全文

posted @ 2016-02-03 11:21 cthu 阅读(1341) 评论(0) 推荐(0) 编辑

2016年2月1日

LVS笔记

摘要: 一、概念 LVS (Linux Virtual Server) 是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。 二、组成 负载调度器(load... 阅读全文

posted @ 2016-02-01 11:12 cthu 阅读(196) 评论(0) 推荐(0) 编辑

Nginx笔记

摘要: Nginx(发音同engine x) Nginx的运行速度的确很快,耗用的资源却比Apache或IIS服务器少得多。能有如此傲人的表现,归因于它是基于事件的。这意味着,Nginx并不为每一个网页请求创建新的进程或线程。最终结果就是,即使负载加大后,内存方面的使用仍是可以预测的. Nginx还可以用来改进性能,因为它可以作为反向代理系统来使用。在这种模式下,Nginx在用户们看来完全如同另一... 阅读全文

posted @ 2016-02-01 10:58 cthu 阅读(307) 评论(0) 推荐(0) 编辑

2016年1月27日

QT信号槽连接

摘要: 一:信号槽是什么? Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的说法,简单点说就是如何在一个类的一个函数中触发另一个类的另一个函数调用,而且还要把相关的参数传递过去.好像这和回调函数也有点关系,但是消息机制可比回调函数有用 二:Qt支持三种类型的信号-槽连接:1,... 阅读全文

posted @ 2016-01-27 20:21 cthu 阅读(2657) 评论(0) 推荐(1) 编辑

2016年1月25日

STL源码剖析-学习笔记

摘要: 1、模板是一个公式或是蓝图,本身不是类或是函数,需进行实例化的过程。这个过程是在编译期完成的,编译器根据传递的实参,推断出形参的类型,从而实例化相应的函数 2、 后续补充…. 阅读全文

posted @ 2016-01-25 20:17 cthu 阅读(135) 评论(0) 推荐(0) 编辑

boost::bind四种应用场景的例子

摘要: 普通函数 int f( int a, int b ){return a + b;}boost::bind( f, _1, 9 )( 1 ) 成员函数 struct demo{int f( int a, int b ){return a + b;}};demo a, &ra=a;demo *p = &a;boost::bind( &demo::f, a, _1, 20 )(... 阅读全文

posted @ 2016-01-25 20:06 cthu 阅读(609) 评论(0) 推荐(0) 编辑

vector iterators incompatible

摘要: 字面翻译迭代器类型不兼容 今天同事遇到的这个问题算是一个习惯性写法的问题。描述一下代码: struct Track{}; class BaseTrack { … std::vector GetTrackSourceList(); … }; 问题所在: void func(BaseTrack bt) std::vector::iterator it = bt.GetTrackSourceLis... 阅读全文

posted @ 2016-01-25 19:27 cthu 阅读(791) 评论(0) 推荐(0) 编辑

2016年1月19日

BOOST线程详解

摘要: 线程的中断点 thread::join myThread::join调用这个方法的线程进入wait状态,直到myThread代表的线程完成 thread::try_join_forthread::try_join_until 阻塞等待一定的时间段 condition_variable_any::wait wait(mu) condition_variable_any::wai... 阅读全文

posted @ 2016-01-19 20:29 cthu 阅读(1500) 评论(0) 推荐(0) 编辑

2016年1月16日

Qt 和 Boost关于信号和槽的对比说明

摘要: 对比 无论是 Qt 的实现方式还是 Boost 的实现方式,除了必须的定义信号和槽的类之外,都不需要额外的类。 两种实现都解决了类爆炸的问题。下面让我们对照着来看一下我们前面的分析。 两个不同的术语以及各自的动作:信号和槽; 在一个地方(信号)可以连接零个或者多个回调函数(槽)同时也是多对多的,一对多,多对多; 焦点在于连接本身,而不是提供者或者消费者; 不需要手工为了一个连接创建新的... 阅读全文

posted @ 2016-01-16 17:47 cthu 阅读(3104) 评论(0) 推荐(1) 编辑

导航