综合
文章平均质量分 69
yangshuangtao
这个作者很懒,什么都没留下…
展开
-
经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
1.判断单链表是否有环,要求空间尽量少(2011年MTK)如何找出环的连接点在哪里?如何知道环的长度? 很经典的题目。1.判断是否有环。使用两个指针。一个每次前进1,另一个每次前进2,且都从链表第一个元素开始。显然,如果有环,两个指针必然会相遇。2.环的长度。记下第一次的相遇点,这个指针再次从相遇点出发,直到第二次相遇。此时,步长为1的指针所走的步数恰好就是环的长度。3.环的链接点。转载 2015-04-22 19:37:25 · 984 阅读 · 0 评论 -
各种版本控制工具的使用
一、SVN、TortoiseSVN、Subclipse介绍团队开发技术:(1)单元测试;(2)版本控制;(3)项目自动化;SCM:软件配置管理,包括SVN;SVN是CVS的接班人,是版本控制系统;版本控制简单地说就是要让团队的人能够快速的统一代码,加强沟通;SVN由客户端和服务器组成,服务器是项目仓库,即存储项目的地方;客户端则是本地拷贝,即由SVN管理,可以提交到项目仓库和从转载 2015-12-05 12:38:12 · 466 阅读 · 0 评论 -
apache对象池的使用
Apache commons-pool本质上是"对象池",即通过一定的规则来维护对象集合的容器;commos-pool在很多场景中,用来实现"连接池"/"任务worker池"等,大家常用的dbcp数据库连接池,也是基于commons-pool实现. commons-pool实现思想非常简单,它主要的作用就是将"对象集合"池化,任何通过pool进行对象存取的操作,都会严格按照"pool配置"原创 2016-04-28 09:57:29 · 3531 阅读 · 0 评论 -
QT-基于TCP的网络通信
Qt使用QtNetwork模块来进行网络编程,提供了一层统一的套接字抽象用于编写不同层次的网络程序,避免了应用套接字进行网络编的繁琐(因有时需引用底层操作系统的相关数据结构)。有较底层次的类如QTcpSocket、QTcpServer和QUdpSocket等来表示低层的网络概念;还有高层次的类如QNetworkRequest、QNetworkReply和QNetworkAccessManager使转载 2016-04-28 16:54:30 · 2297 阅读 · 0 评论 -
Windows线程创建、退出及资源释放
可以通过以下几种方法创建一个线程:1、CreateThread2、_beginthread3、_beginthreadex4、AfxBeginThread--------------------------------------------------------------------------------------1、CreateThread函数原型HANDLE Crea转载 2016-04-29 20:27:22 · 3983 阅读 · 0 评论 -
C++多重继承通过中间类继承重写不同基类中相同类型的虚函数
class CBaseA{public: virtual void TestA();};class CBaseB{public: virtual void TestB();};class CDerived : public CBaseA, public CBaseB{public: virtual void TestA(); // 重写基类CBaseA中原创 2016-04-22 16:57:57 · 1102 阅读 · 0 评论 -
windiws C++ 多线程编程
C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD SIZE_T dwStackSize,原创 2016-07-11 11:33:50 · 489 阅读 · 0 评论 -
临界区和互斥量的区别
1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。临界区(Critical Section) 保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进转载 2016-07-23 15:04:35 · 8665 阅读 · 0 评论 -
socket阻塞、非阻塞、同步异步
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干转载 2016-07-29 09:50:26 · 934 阅读 · 0 评论 -
C++STL之map学习
map map是一种关联容器,存储相结合形成的一个关键值和映射值的元素。Map 是一种Pair Associative Container,意味着它的值类型为 pair. 而且也是 Unique Associative Container, 也就是任何两个元素没有相同的key值。map具有重要的属性,就是在map对象中插入一个新元素不指向现有元素的迭代器失效。从map上删除一个元素,也转载 2016-07-29 09:52:40 · 590 阅读 · 0 评论 -
C++资源大全
关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz 发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。 标准库C++标准库,包括了STL容器,算法和函数等。C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Template Li转载 2016-07-29 10:08:36 · 647 阅读 · 0 评论 -
设计模式之观察者模式实例
#include "stdafx.h" #include #include using namespace std; /* 观察者 */ class IObserver { public: IObserver(){} virtual ~IObserver(){} virtual void update() = 0原创 2016-07-29 10:17:23 · 572 阅读 · 0 评论 -
谈程序员的一些缺点
每个行业的人员都有自己的特征,也就是我们常说的职业病。从这个角度看,程序员也不例外。一方面,程序员学习能力强、做事专注、肯钻研,另外一方面他们也容易染上不好的毛病,比如说贪多求快、过分自信、不切实际等等。下面,我们会对这些毛病一一进行分析和总结。坦诚自己的缺点是需要勇气的,关键是在未来的工作和生活中如何避免这些毛病和错误。(1)跟风 说到跟风,其实这是和软件发展的大环境是离不开的。原创 2016-08-20 14:37:53 · 8419 阅读 · 0 评论 -
组件、插件、控件的区别
组件、插件、控件的区别控件:是编程中用到的,按钮就算是一个控件,窗口也是等等组件:是软件的一部分.软件的组成部分.插件:网页中用到的,flash插件,没有它浏览器不能播放flash.首先范围最广的应该是组件,英文component,提起组件我们不应该把他和具体的技术,什么dll文件,ocx控件,activex等等联系起来,因为组件仅仅是一个概念,如果非要解释的话,那就是凡是在软件开转载 2015-11-19 16:10:31 · 486 阅读 · 0 评论 -
程序的编译链接和装载
出处:http://duanple.blog.163.com/blog/static/7097176720111141085197/1.最近碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措。索性化了一天多时间将>中部分内容略读了一遍,主要是关于编译,链接和加载这块的。于是顺便做个笔记,方便以后回顾。基本上知道了这些,对于编译,链接和加载过程中产生的各种问题,应该就能从根本上理解并解决了。转载 2015-11-26 11:53:20 · 2481 阅读 · 0 评论 -
shell脚本中的awk脚本语法
目录:一、概述二、awk基本语法格式三、awk基本操作四、awk条件及循环语句五、awk函数六、awk演示示例(源自于man手册)一、概述1. 产品概述: awk是一种编程语言,用于在linux/unix下对文本和数据进行扫描与处理。数据可以来自标准输入、文件、管道。 awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Pete转载 2015-09-16 12:04:26 · 1669 阅读 · 0 评论 -
经典面试题(二)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
1.正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12(1)、设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项(2)、设计测试数据来验证函数程序在各种输入下的正确性。 感觉有点类似归并排序的Merge。有两个数组A、转载 2015-04-22 19:39:45 · 693 阅读 · 0 评论 -
滑动窗口协议
1.概念 滑动窗口协议,也称为回退N步协议(Go-Back-N,GBN)中,允许发送方发送多个分组(当有多个分组可用时)而不需等待确认,但它受限于在流水线 中为未确认的分组数不能超过某个最大允许数N。滑动窗口协议是TCP使用的一种流量控制方法,此协议能够加速数据的传输。 只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。 收发两端的窗口按照原创 2015-06-19 11:10:56 · 2940 阅读 · 0 评论 -
虚函数表解析
C++ 虚函数表解析 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函转载 2015-06-25 21:13:02 · 503 阅读 · 0 评论 -
百度2013校园笔试题
百度2013校园招聘笔试题(含整理的答案)[日期:2012-10-09] 来源:Linux社区 作者:iloveyin [字体:大 中 小]一:简答题(30)1:数据库以及线程发生死锁的原理及必要条件,如何避免死锁答:产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。产生死锁的四个必要条件:(1)互斥条件:一个资源每次转载 2015-07-05 17:22:12 · 378 阅读 · 0 评论 -
百度研发工程师面试题
C++有哪些数据类型?为什么long和int都是4字节?数据类型有char、short、bool、int、long、float、double,long long等,并不是所有的int和long都是4字节的,在16位机中int就是2字节的,而在64位机中long是8字节的。C++中对int的长度约束是大于等于short型的长度,小于等于long型的长度,且最短长度是2字节。long型则规定长度大转载 2015-07-05 17:20:40 · 1692 阅读 · 0 评论 -
RB树
之前看了很多写红黑树的博客,但是感觉都讲的不太清楚!没说这样操作如何使他保持平衡的,于是疑惑重重,就看不下去了,一次不经意看到一个人说维基百科的红黑树讲的好,我就随便点了一下一看——这下疯了~,怎么讲的这么好!可以说是把一个复杂的问题,讲得简单化!这太幸福了! 于是我就慢慢学会了!强烈推荐维基的这个讲解,再也找不到比这还好的讲解了!不知道它上边其它的怎么样,反正这个很好!!既然学会了,走过来了,我转载 2015-07-16 09:42:01 · 1410 阅读 · 0 评论 -
线程安全
举例比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。在单线程运行的情况下,如果 Size = 0,添加一个元素后,此元素在位置 0,而且 Size=1;而如果是在多线程情况下,比如有两个线程,线程 A 先将元素1存放在位置 0。但是此时 CPU 调度线程A暂停,线程 B 得到运行的机会转载 2015-07-17 11:49:37 · 512 阅读 · 0 评论 -
《STL源码剖析》空间配置器
空间配置器(allocator)空间配置器按我的理解就是C++ STL进行内存管理的组件(包括内存的申请和释放);当然,不只是内存,还可以向硬盘申请空间;我主要看了内存的配置与释放(这里“配置”就应该是“申请”的意思)。STL对此设计的哲学主要包括以下四个方面:1、向系统堆空间申请内存空间2、考虑了多线程的情况下的申请;3、考虑内存不足的应变措施;4、考虑过多“小型区块”的内存碎片的问原创 2015-07-18 23:37:29 · 507 阅读 · 0 评论 -
归并排序
利用分治法和递归思想实现归并排序#includeusing namespace std;void MergeArray(int arr[], int first, int mid, int last, int temp[]){ int i = first, j = mid + 1; int k = 0; while (i <= mid && j <= last) { if (ar原创 2015-07-20 15:23:11 · 602 阅读 · 0 评论 -
避免死锁
什么是死锁什么是死锁,如何避免死锁? 线程A需要资源X,而线程B需要资源Y,而双方都掌握有对方所要的资源,这种情况称为死锁(deadlock),或死亡拥抱(the deadly embrace)。在并发程序设计中,死锁 (deadlock) 是一种十分常见的逻辑错误。通过采用正确的编程方式,死锁的发生不难避免。死锁的四个必要条件-----------------------转载 2015-09-26 19:47:25 · 466 阅读 · 0 评论 -
简单工厂模式和工厂方法模式
在OO设计领域,我们知道前人总结了不少的经验,许多的经验在现代软件工程过程中已经被认为是原则来遵守。下面笔者摘抄几项下文涉及到的OO原则的定义。OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。我的理解是,对于一个已有的软件,如果需要扩展,应当在不需修改已有代码的基础上进行。DIP(依赖倒转原则,Dependence Inversio转载 2015-09-13 17:06:55 · 1048 阅读 · 0 评论 -
求两个字符串中的最长公共子串的长度
利用二位矩阵对角线解决#include#includeusing namespace std;int getLCSLength(string str1, string str2){ int **temp= new int*[(str1.length())*(str2.length())]; //声明一个二维数组,存储最长公共子串长度 int length = 0; //最长公共子串原创 2015-09-29 14:10:01 · 2284 阅读 · 0 评论 -
QT的显示机制
了解QT显示机制,最重要的就是要了解QT是如何管理窗体的显示区域的,这里有个重要的类:QRegion, 在QT中可以通过QRegion定义一个窗体的显示区域,也可以通过QRegion定义窗体的可修改区域,比如在QPainter()中通过QPainter::setClipRect设定一个区域,我们绘图则只能在这个区域,此区域外绘图都是无效的。通过QRegion可以作一系列的逻辑运算,如两个区域相加,转载 2016-08-20 14:57:00 · 2768 阅读 · 0 评论