
Interview
文章平均质量分 64
如沐春风心旷神怡
成功等于坚定的信念加上不间断的努力
展开
-
如何查看一个进程中的某个线程是否存活?
pthread_kill: 别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。 int pthread_kill(pthread_t thread, int sig); 向指定ID的线程发送sig信号,如果线程转载 2015-04-22 14:08:17 · 12937 阅读 · 0 评论 -
EPOLL服务器端
EPOLL逻辑图。EPOLL的server端的流程图如下。参考资料:http://blog.youkuaiyun.com/chencheng126/article/details/45479241http://blog.youkuaiyun.com/chencheng126/article/details/45397229原创 2015-05-11 14:41:38 · 457 阅读 · 0 评论 -
内存池的实现
1.内存池要解决什么问题?直接用malloc/free进行内存的申请和释放,有一些弊端,比如开销比较大,在申请的时候会根据最优匹配算法找到一个空闲的内存,在释放的时候可能需要合并空闲的内存块,这些都设计到开销;第二个会产生大量的内存碎片,影响效率;第三个,可能发生内存泄露。而用内存池代替malloc/free去分配内存,是在内存池中查找合适的内存块,而不是直接的向操作系统申请。它有几个优点原创 2015-05-11 23:24:29 · 562 阅读 · 0 评论 -
C++单例模式
C++ 线程安全的单例模式http://blog.youkuaiyun.com/chencheng126/article/details/45535161包括懒汉模式和饥汉模式。懒汉模式就是在第一次调用该实例的时候,产生一个新的该类的实例,以后都调用这个实例。这里需要用锁来保证线程的安全性。饥汉模式就是不管是否调用该类实例,在程序开始的时候就会产生一个实例,并在以后返回该实例。因为原创 2015-05-06 14:14:46 · 457 阅读 · 0 评论 -
一些问题
高德:1.数据库调优?性能调优?不懂2.性能测试,如果多个线程去访问底层数据,如果有某些线程挂了,如何能够知道是哪一个线程挂了?我想说的是定义一个回调函数,如果挂了就通知。3.有多个线程,如果某几个线程访问一个资源,这时候又有一个线程去释放,这样造成其它线程访问资源崩溃。怎么避免?我的意思是读写锁+条件变量4.256个数据要去找到一个想要得到的数据,原创 2015-04-22 22:50:13 · 564 阅读 · 0 评论 -
回调函数一个例子
什么是回调函数?回调函数就是函数形参中包含一个函数指针,实现的时候这个函数指针可以指向它的实现函数。这样就可以实现,定义函数,让回调函数来调用,调用和调用者分离了。举个例子:typedef int(*callbackFun)*(char *p) //定一个回调函数模型定义两个方法int funcA(char *p) //方法A{//...};原创 2015-11-07 20:38:51 · 865 阅读 · 0 评论 -
迭代器删除元素
1.序列容器,比如vector序列容器的erase返回的是被删除元素后的有效迭代器。vector vec;vector::iterator iter;for(iter = vec.begin();iter!=vec.end();){ if(need_delete) {iter = vec.erase(iter); }else++iter;}原创 2015-11-07 22:44:27 · 2478 阅读 · 0 评论 -
Sting类的实现
为什么要进行操作符重载?举个例子,正常的数字才可以进行加,如果对string进行+,实际上进行的是拼接的操作。那么这个时候,就需要对+进行操作符重载, 实现拼接的操作。‘为什么赋值操作符(=)重载需要返回引用?因为返回的是自己,而不是自己的一个拷贝。什么是this指针?this指针表示的类对象本身。它只作用在非静态成员函数中,作为一个隐藏参数。所以它的生原创 2015-11-07 19:45:23 · 893 阅读 · 0 评论 -
虚函数的一个例子
做了一个虚函数的例子。在父函数中指定了print是虚函数,那么父类就可以调用子类的print方法。答案是:A::constructB::constructThis is BB::destroyA::destroy请按任意键继续. . .注意:1,2,用指针或者引用将B传个A,虚函数生效。3直接值传递,不生效。#include usin原创 2015-11-08 10:50:02 · 1808 阅读 · 0 评论 -
C++中的static关键字
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:[cpp] view转载 2015-05-06 11:27:13 · 449 阅读 · 0 评论 -
一分钟教你知道乐观锁和悲观锁的区别
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人转载 2015-04-23 21:48:02 · 566 阅读 · 0 评论 -
C++中的三种继承public,protected,private
三种访问权限public:可以被任意实体访问protected:只允许子类及本类的成员函数访问private:只允许本类的成员函数访问 三种继承方式public 继承protect 继承private 继承 组合结果基类中 继承方式 子类中public & public继承 => publicp转载 2015-04-23 20:09:58 · 410 阅读 · 0 评论 -
Linux C内存泄露检测工具
在Linux下些C语言程序,最大的问题就是没有一个好的编程IDE,当然想kdevelop等工具都相当的强大,但我还是习惯使用kdevelop工具,由于没有一个习惯的编程IDE,内存检测也就成了在Linux下编写程序的一个大问题。 是不是说没有一种内存检查工具能够在Linux使用呢,也不是,像valgrind工具还是相当不错的。他的下载地址是http://valgrind.org/down转载 2015-04-22 16:14:08 · 491 阅读 · 0 评论 -
谁动了我的cpu——oprofile使用札记
引言cpu无端占用高?应用程序响应慢?苦于没有分析的工具?oprofile利用cpu硬件层面提供的性能计数器(performance counter),通过计数采样,帮助我们从进程、函数、代码层面找出占用cpu的"罪魁祸首"。下面我们通过实例,了解oprofile的具体使用方法。 常用命令使用oprofile进行cpu使用情况检测,需要经过初始化、启动检测、转载 2015-04-22 23:29:31 · 425 阅读 · 0 评论 -
C++类的构造函数和析构函数的调用顺序
有时候我们做一些笔试或者是面试中可能会遇到定义一些类,然后叫你写出类的构造函数和析构函数调用顺序。这时候我们就需要对这个有了解才能够正确的做出来。先看看下面的一段代码。#include using namespace std;class A {public: A() { cout << "A()" << endl; } ~A() {转载 2015-04-23 17:26:40 · 505 阅读 · 0 评论 -
应用 Valgrind 发现 Linux 程序的内存问题
Valgrind 概述体系结构Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构转载 2015-04-23 15:22:54 · 364 阅读 · 0 评论 -
C++中this指针的用法详解
this指针是什么时候创建的?this在成员函数的开始执行前构造,在成员的执行结束后清除。------------------------------------------------------------------------1. this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在转载 2015-04-23 16:56:23 · 517 阅读 · 0 评论 -
数据库锁
1 前言数据库大并发操作要考虑死锁和锁的性能问题。看到网上大多语焉不详(尤其更新锁),所以这里做个简明解释,为下面描述方便,这里用T1代表一个数据库执行请求,T2代表另一个请求,也可以理解为T1为一个线程,T2 为另一个线程。T3,T4以此类推。下面以SQL Server(2005)为例。2 锁的种类共享锁(Shared lock)。例1:--------转载 2015-04-23 21:47:22 · 397 阅读 · 0 评论 -
MySQL性能优化的最佳20+条经验
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1. 为转载 2015-04-23 22:16:39 · 417 阅读 · 0 评论 -
C++中四种类型转换方式
类型转换有c风格的,当然还有c++风格的。c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,但是传统的c语言风格的类型转换没有区分这些转载 2015-04-23 19:33:11 · 417 阅读 · 0 评论 -
继承和组合
C++的“继承”特性可以提高程序的可复用性。正因为“继承”太有用、太容易用,才要防止乱用“继承”。我们要给“继承”立一些使用规则: 一、如果类A 和类B 毫不相关,不可以为了使B 的功能更多些而让B 继承A 的功能。 不要觉得“不吃白不吃”,让一个好端端的健壮青年无缘无故地吃人参补身体。 二、如果类B 有必要使用A 的功能,则要分两种情况考虑:(1)若在逻辑上转载 2015-11-16 17:30:05 · 446 阅读 · 0 评论