自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

田原的学习笔记

一个菜鸟的成长日记

  • 博客(45)
  • 收藏
  • 关注

原创 2011-2012年腾讯,创新工场,淘宝,百度,阿里,迅雷。网易游戏校园招聘面试题集锦(1-25题含答案)

2011-2012年腾讯,创新工场,淘宝,百度,阿里,迅雷。网易游戏校园招聘面试题集锦(1-25题含答案)又是一年招聘季,小鸟我也在本季参加招聘,所以特在网上和群里面这里去年和今年的面试题,以备战招聘,有些题可能答案有问题,希望大家分享自己的答案和意见,也可以留言提供一些面试题,谢谢大家了。1.五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走

2012-09-16 15:01:47 5512 1

转载 QT时间循环机制

1、事件循环一般用exec()函数开启。QApplicaion::exec()、QMessageBox::exec()都是事件循环。其中前者又被称为主事件循环。事件循环首先是一个无限“循环”,程序在exec()里面无限循环,能让跟在exec()后面的代码得不到运行机会,直至程序从exec()跳出。从exec()跳出时,事件循环即被终止。QEventLoop::quit()能够终

2012-09-13 20:10:05 2661

翻译 QT信号和槽

信号和信号槽 在QT中,我们有一个callback技术的替代方案: 我们使用信号(signal)和信号槽(slot)。当一个特定的事件触发时一个对应的信号就会被发射。QT的控件(widget)拥有许多的预定义信号,当然我们也可以通过在widget的继承子类中添加自己的信号给它们。在一个特定的信号响应里一个被称之为信号槽(slot)的方法被调用。同样的,QT的控件也拥有许多的预定义信号槽,你

2012-09-13 20:08:53 1977

原创 基本数据结构之栈和队列

前言:最近看各大公司的面试笔试题,发现对栈和队列的考察还是挺多,而且这两个都是经典的数据结构,我想虽然简单,但是基础非常重要,还是有必要总结总结;1  栈的概念   栈(Stack):是限制在表的一端进行插入和删除操作的线性表。又称为后进先出LIFO (Last In First Out)或先进后出FILO (First In Last Out)线性表。   栈顶(Top):允许进行插

2012-08-30 19:59:10 1311

原创 华为面试笔试题集锦

1、局部变量能否和全局变量重名?  答:能,局部会屏蔽全局。要用全局变量,需要使用"::"  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局

2012-08-29 14:26:15 1999

原创 TCPvsUDP详解及其区别

TCPvsUDP详解及其区别本文重要收集了UDP和TCP的概念以及连接的建立过程: UDP:用户数据报协议广播和多播仅应用于U D P,它们对需将报文同时传往多个接收者的应用来说十分重要。T C P是一个面向连接的协议,它意味着分别运行于两主机(由I P地址确定)内的两进程(由端口号确定)间存在一条连接。然而,有时一个主机要向网上的所有其他主机发送帧,这就是广播。通过A R

2012-08-29 10:31:22 2572

原创 unix网络编程各种TCP客户-服务器程序设计实例(四)

第六种  TCP预先派生子进程服务器程序,每个线程各自accept:预先派生一个子进程池,每个线程各自调用accept接受连接,不过我们不是让每个线程都阻塞在accept调用上,而是直接使用互斥锁来保证线程间互斥地调用accept。客户端程序还是和unix网络编程各种TCP客户-服务器程序设计实例(三)中的一样,这里就不讲了,我们着重看服务器的程序:pthread.h:typede

2012-08-26 14:03:06 1674

原创 unix网络编程各种TCP客户-服务器程序设计实例(三)

第五种  TCP预先派生子进程服务器程序:对预先派生子进程服务器的最后一种改动就是由父进程调用accept,然后再将所接受的已连接描述字传递给子进程。父进程必须跟踪子进程的忙闲状态,以便给空闲子进程传递新的描述字。为每个子进程维护一个信息结构,用来管理各子进程。在调用fork之前,先创建一个字节流管道(Unix域的字节流套接口),它是Unix域的字节流套接口。当子进程派生后,父进程关闭

2012-08-25 10:06:43 2630 1

原创 MTK笔试面试题集锦

1,若有  unsigned char *p1;   unsigned long *p2;  p1=(unsigned char *)0x1000;   p2=(unsigned long *)0x2000; 请问  p1+5=();p2+5=()答:p1+5=0x1005;p2+5=0x2014;解析:p1指向字符型,一次移动一个字符型,1个字节;p1+5后移5个字节

2012-08-23 14:47:16 8492 2

原创 unix网络编程各种TCP客户-服务器程序设计实例(二)

前面我们介绍了unix网络编程各种TCP客户-服务器程序设计实例附环境搭建和编译方法本节我们接着介绍另外的几种TCP客户-服务器程序;第四种:TCP并发服务器,每个客户一个子线程在我们前面的并发服务器程序例子中可以看出:父进程接受连接,派生子进程,子进程处理与客户的交互。这种模式的问题:fork()是昂贵的。内存映像要从父进程拷贝到子进程,所有描述字要在子进程中复制等等。

2012-08-21 21:42:24 2154

原创 C位运算符-经典应用总结

算要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。         2 "        3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。         4 ">>>"运算符,右边的位被挤掉,对于左边移出的空位一概补上0。位运算符的应用 (源操作数s 掩码mask)(1)

2012-08-20 09:45:57 1289

原创 经典算法总结之线性时间做选择

问题:输入:一个包含n个(不同的)数的集合A和一个数i, 1 输出:元素x∈A, 它恰大于A中其他的I – 1个元素(即求第k小数)。本博文中寻找最大的K个数(TOP K算法)这篇文章也用了本文中的算法,大家可以参考。三种算法:1、 直接排序,输出数组第i个元素即可, 时间复杂度为O(nlgn)2、 这种算法,利用“快排的或者类似二分”的思想,每次以枢纽为界,分两边,每

2012-08-17 10:15:12 917

原创 unix网络编程之基本套接口编程

第一章  套接口编程简介IPv4套接口地址:“网际套接口地址结构”通用套接口地址结构:套接口函数被定义为采用指向通用套接口地址结构的指针,这要求对这些函数的任何调用都必须将指向特定于协议的套接口地址结构的指针类型转换成指向通用套接口地址结构的指针:套接口地址结构的比较:值-结果参数:当把套接口地址结构传递给套接口函数时,总是通过指针来传递的,即传递的是一

2012-08-16 21:30:48 2190

原创 unix网络编程各种TCP客户-服务器程序设计实例附环境搭建和编译方法(一)

前言:在以前的UNIX网络编程系列中我们介绍了有关网络编程的理论知识,本文将在其基础上总结《UNIX网络编程》上的9种不同的TCP客户程序设计例子,希望能给大家带来帮助。本文只介绍实例,相关的理论知识请参考《unix网络编程》或者本博文的http://blog.csdn.net/ts173383201/article/category/1213821系列;在出代码之前,可能有很多同学遇到《UN

2012-08-16 21:28:22 7820 3

原创 unix网络编程之简介和运输层TCP/UDP

前言:本文只介绍了有关UNIX网络编程的理论知识,具体的应用和例子在稍后的博文中将更新第一章  简介一个简单的服务器程序步骤:说明:1.创建TCP套接口      2.捆绑服务器的众所周知端口      3.把套接口变换成监听套接口      4.接受客户连接,发送应答,服务器进程在调用accept函数后处于睡眠状态,它等待客户的连接和内核对它的接受。TCP连接使用三路

2012-08-15 20:07:50 2116

原创 经典算法大总结之排序算法

从本章开始,我们将总结常用的排序算法这里有一个很好的博文http://blog.csdn.net/morewindows/article/details/6709644一,插入排序,O(n2)#includeusing namespace std;void insertionSort(int* A,int len){ for(int j=1;j<len;j++){ int

2012-08-15 16:17:22 890

原创 常用C字符串库函数总结(strstr/strlen/strcpy/strcat...)

考察编写同库函数一样功能的函数经常见于大大小小的IT公司的面试题目中,以下是常见的字符串库函数的实现,希望大家指正建议。1,反转函数reverse();#include#includechar* reverse(char* Array){ if(!Array) return NULL; int len = strlen(Array); for(int i=0;i<len/2

2012-08-15 11:12:28 2217 1

原创 海量数据面试题集锦

何谓海量数据处理?   所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。处理海量数据问题,无非就是:1.分而治之/hash映射 + hash统计 +堆/快速/归并排序;2.双层桶划分3.Bloom filter/Bitmap;4.Trie树/数据库/倒排索引

2012-08-15 09:17:47 1598

原创 数据结构大总结系列之B树和R树

数据结构大总结系列之B树一,B-树B树是为磁盘或其他直接存储辅助存储设备而设计的一种平衡二叉查找树(通常说的B树是B-树,在1972年由R.Bayer和E.M.McCreight提出,B+树是B树的一种变形),B树与红黑树类似,但在降低磁盘I/O操作次数方面要更好一些,数据库就是通常用B树来进行存储信息。    B树的结点可以有许多子女,从几个到几千个不等,一个B树结点可以拥有的子女数

2012-08-14 21:17:12 3643

原创 海量数据处理之倒排索引

前言:本文是对博文http://blog.csdn.net/v_july_v/article/details/7085669的总结和引用一,什么是倒排索引问题描述:文档检索系统,查询那些文件包含了某单词,比如常见的学术论文的关键字搜索。基本原理及要点:为何叫倒排索引?一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。 以英文为例,下面是要被索引的

2012-08-14 10:58:40 10998

原创 海量数据处理之数据库索引

前言:本文第一部分讨论数据库的索引及其优化,主要以sql server为例,第二部分我们从Mysql讨论它背后的数据结构和算法原理。第一部分,数据库索引及其优化一,什么是索引  数据库索引好比是一本书前面的目录,能加快数据库的查询速度。  例如这样一个查询:select * from table1 where id=44。如果没有索引,必须遍历整个表,直到ID等于44的

2012-08-13 10:18:28 1836

原创 海量数据处理之Tire树(字典树)

参考博文:http://blog.csdn.net/v_july_v/article/details/6897097第一部分、Trie树1.1、什么是Trie树    Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较

2012-08-13 09:02:23 38235 10

转载 KMP算法

教你初步了解KMP算法作者: July 、saturnma、上善若水。     时间; 二零一一年一月一日-----------------------本文参考:数据结构(c语言版) 李云清等编著、算法导论引言:在文本编辑中,我们经常要在一段文本中某个特定的位置找出 某个特定的字符或模式。由此,便产生了字符串的匹配问题。本文由简单的字符串匹配算法开始,再到KMP

2012-08-10 09:34:03 12799 3

原创 数据结构大总结系列之折半查找与动态查找树

数据结构大总结系列之查找前言:近来对各种算法的研究中,发现会用到大量的基本查找和排序算法,如折半查找,二叉查找树,快速排序,堆排序,归并排序等等,心血来潮,于是特对其做一个总结,作为一种模板库,以后便可性手捏来。废话不多说,下面从各种查找算法入手,排序算法的总结在稍后的章节进行总结。一,顺序表的查找:这是最简单的查找,就是从表中最后一个记录开始,逐个进行记录的关键字和给定值的比

2012-08-09 15:23:00 1835

原创 海量数据处理之Bitmap

什么是Bit-map    所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。    如果说了这么多还没明白什么是Bit-map,那么我们来看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5,3)排序(这里假设这些元素没有重复)。那么我们就可以采用Bit-map的方法

2012-08-09 10:12:41 892

转载 QT的信号和信号槽

QT的信号和信号槽原文地址在:http://doc.qt.nokia.com/4.7/signalsandslots.html。信号和信号槽被用来在对象之间通信。信号和信号槽机制是QT的核心特性,也是与其它类似框架的不同之处。简介在GUI编程中, 当我们改变一个控件时,通常我们也想让其它的控件被通知。一般情况下,我们想让不同种类的对象可以自由与其它对象进行通信。举个

2012-08-08 20:32:42 577

原创 海量数据处理之分而治之/hash映射 + hash统计 + 堆/快速/归并排序

本章和后面的几章我将对海量数据和其处理的方法进行一些总结,很多内容转自博文http://blog.csdn.net/v_july_v/article/details/7382693何谓海量数据处理?   所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。处理海量数据问题,

2012-08-08 15:59:23 1922

原创 海量数据处理之双层桶划分

双层桶划分什么是双层桶事实上,与其说双层桶划分是一种数据结构,不如说它是一种算法设计思想。面对一堆大量的数据我们无法处理的时候,我们可以将其分成一个个小的单元,然后根据一定的策略来处理这些小单元,从而达到目的。适用范围      第k大,中位数,不重复或重复的数字基本原理及要点      因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围,然后最后在一

2012-08-08 15:07:01 2143

原创 海量数据处理之Bloom Filter

问题:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为,这里漏写个了a1)中。这样每个小

2012-08-08 14:32:56 776

原创 Effective C++之模板和泛型编程

7 模板和泛型编程条款41:了解隐式接口和编译器多态。面向对象编程世界总是以显示接口和运行期多态解决问题。Template及泛型编程的世界与面向对象有根本上的不同。在此世界中显示接口和运行期多态任然存在,但重要性降低。反倒是隐式接口和编译器多态移到前头了。请记住:classes和templates都支持接口和多态。对classes而言接口是显示的,以函数签名为中心。多态

2012-08-08 10:36:09 586

原创 Effective C++之继承和面向对象设计

6 继承和面向对象设计条款32:确定你的public继承塑模出is-a关系。如果你令classD以public形式继承class B,你便是告诉C++编译器说,每一个类型为D的对象同时也是一个类型为B的对象。那么使用于base classes身上的每一件事情一定也适用于derived classes身上,因为每一个derived class对象也都是一个base class对象。条款3

2012-08-08 10:30:39 553

原创 Effective C++之实现

5 实现条款26:尽可能延后变量定义式的出现时间。请记住:尽可能延后变量定义式的出现。这样做可增加程序的清晰度并改善程序效率。除非(1)你知道赋值成本比“构造+析构”成本低,(2)你正在处理代码中效率高度敏感的部分,否则你应该使用做法B。条款27:尽量少做转型动作。C++提供四种新式转型:n  const_cast()通常被用来将对象的常量性转除。n  dyna

2012-08-08 10:20:16 389

原创 Effective C++之设计与声明

4 设计与声明条款18:让借口容易被正确使用,不易被误用。如:许多客户端错误可以因为导入新类型而获得预防。既然这样,就让我们导入简单的外覆(wrapper types)类型来区别天数,月份和年份。请记住:n  “促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容。n  “阻止误用”的办法包括建立新类型、限制类型上的操作、束缚对象值,以及消除客户的

2012-08-08 10:16:27 466

原创 Effective C++之资源管理

3 资源管理所谓资源就是,一旦用了它,将来必须还给系统。条款13:以对象管理资源。有时仅仅用delete语句释放资源是行不通的,因为可能程序根本不会执行到delete语句。我们可以把资源放进对象内,我们便可以依赖c++的“析构函数自动调用机制”确保资源被释放。auto_ptr是个“类指针对象”,也就是所谓的“智能指针”,其析构函数自动对其所指对象调用delete。由于a

2012-08-08 10:10:47 604

原创 Effective C++之构造/析构和赋值运算Constructors,Destructors and Assignment Operators

2. 构造/析构和赋值运算Constructors,Destructors and Assignment Operators条款05:了解C++默默编写并调用哪些函数。什么时候空类不再是个空类,当C++处理过后,如果自己没有声明,编译器就会为它声明一个copy构造函数、一个copy assignment操作符和一个析构函数。此外如果你妹有声明任何构造函数、编译器会为你声明一个default

2012-08-08 10:07:05 806

原创 Effective C++之让自己习惯C++

Effective C++学习笔记按孙中山先生的说法,这个世界依聪明才智的先天高下的三种人:先知先觉得发明家,后知后觉的宣传家,不知不觉的实践家。三者之中发明家最少最稀珍。声明,定义,初始化的区别: 当你看到赋值符号时请小心,因为“=”语法也可用来调用copy构造函数:Widget w3=w2;幸运的是copy构造很容易和copy赋值有所区别。如果一个新对象被定义(例如以上

2012-08-08 10:01:18 967

原创 unix网络编程之从selelct谈到epoll

unix网络编程之从selelct谈到epoll第一部分: I/O复用:select和poll函数如果一个或多个I/O条件满足(例如,输入已准备好被读,或者描述字可以承接更多的输出)时,我们就被通知到。这个能力被称为I/O复用,是由函数select和poll支持的。 先介绍一下各种I/O模型:阻塞I/O,非阻塞I/O,I/O复用,信号驱动I/O(SIGIO),异步I/O

2012-08-07 21:55:10 2358

原创 寻找最大的K个数(TOP K算法)

前言:本文是对编程之美第2.5节以及博文http://blog.csdn.net/v_july_v/article/details/6370650的一些总结和心得问题描述:有很多个无序的数,怎么从中选出其中最大的若干数呢?这个问题中的很多可以是几个数也可以使成百上亿的数,针对此问题我们有以下解法:解法一:咱们先简单的理解,要求一个序列中最小的k个数,按照惯有的思维方式,很简

2012-08-07 16:03:42 16731

原创 海量数据处理之外排序

前言:本文是对July博文http://blog.csdn.net/v_JULY_v/article/details/6451990的一些总结现在先让我们来看一道有关外排序的题:问题描述:输入:一个最多含有n个不重复的正整数(也就是说可能含有少于n个不重复正整数)的文件,其中每个数都小于等于n,且n=10^7。输出:得到按从小到大升序排列的包含所有输入的整数的列表。条件:最

2012-08-07 15:10:38 5036

原创 数据结构大总结系列之从HASH谈到set/map再到hashtable/hash_map/hash_set

前言:今天又看了July的博文教你如何迅速秒杀掉:99%的海量数据处理面试题,其中有介绍到set/map与hashtable/hash_map/hash_set,本文就是对其做的一些总结。第一部分:什么是HASH Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种

2012-08-06 15:07:54 1282

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除