基础整理
文章平均质量分 66
IT_YUAN
这个作者很懒,什么都没留下…
展开
-
部分面试题解题思路
【一】 时间受限大部分的面试题,都是对时间复杂度有所要求的,如果有涉及,“最快”一类的字样,毫无疑问,先上时空原理,用空间来换时间。Hash,大数组,一些辅助性的空间,都是首选。在我的面试经历中,有无数次用到过Hash和大数组的。不过,通常这不会是面试官想听的唯一解法,他们紧接着十有八九是会说“如果只有xxxx空间呢?”。说此类方法只是为自己争取更多的时间,并且体现思考的完整性,简转载 2012-10-16 10:24:48 · 644 阅读 · 0 评论 -
C++中有哪些类型转换方式
C++中四种类型转换运算符的使用方法 reinterpret_cast 该函数将一个类型的指针转换为另一个类型的指针. 这种转换不用修改指针变量值存放格式(不改变指针变量值),只需在编译时重新解释指针的类型就可做到. reinterpret_cast 可以将指针值转换为一个整型数,但不能用于非指针类型的转换. 例: //基本类型指针的类型转换 double d=9.原创 2014-04-01 22:08:46 · 2357 阅读 · 0 评论 -
数据库隔离级别
read uncommited (读未提交) 最低级别,可读取未提交事物的数据,这会导致脏读,比如:某时刻会话a修改了一个数据,但还未提交,此时会话b,读取了该数据,这是,会话a回滚了事物,这就导致数据出现了不一致状态,这就是脏读! read commited (提交读) 避免了脏读,但会导致不可重复读,例如:某时刻会话a的一个事物里查询原创 2014-04-02 15:37:14 · 664 阅读 · 0 评论 -
vector详解
C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。标准库vector类型使用需要的头文件:#include 。vector 是一个类模板。不是一种数据类型,vector是一种数据类型。Vector的存储空间是连续的,list不是连续存储的。一、 定义和初始化vecto原创 2014-04-05 20:56:03 · 949 阅读 · 0 评论 -
同一进程中的线程究竟共享哪些资源
线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这许多共性的同时,还拥有自己的个性。有了这些个性,线程才能实现并发性。这些个性包括: 1.线程ID 每个线程都有自己的线程ID,这个ID在本进程中是唯一的。进程用此来标原创 2014-03-26 22:46:43 · 3138 阅读 · 0 评论 -
面向对象的特征
计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程。面向对象编程就是按现实业务一样的方式将程序代码按一个个对象进行组织和编写,让计算机系统能够识别和理解用对象方式组织和编写的程序代码,这样就可以把现实生活中的业务对象映射到计算机系统中。面向对象的编程语言有封装、继承 、抽象、多态等4个主要的特征。1封装:封装是保证软件部件具有优良的模块性的原创 2014-03-26 22:31:12 · 772 阅读 · 0 评论 -
Linux下的动态链接库和静态链接库
Linux中有两类函数库,分别是静态库和动态库。静态函数库:这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。动态原创 2014-03-26 22:39:49 · 967 阅读 · 0 评论 -
线程与进程
1、线程的基本概念概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。 好处 :(1)易于调度。 (2)提高并发性。原创 2014-03-26 21:55:59 · 813 阅读 · 0 评论 -
linux僵尸进程
僵死进程 在Unix进程模型中,进程是按照父进程产生子进程,子进程产生子子进程这样的方式创建出完成各项相互协作功能的进程的。当一个进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。如果父进程没有这么做的话,子进程虽然已经退出了,但是在系统进程表中还为它保留了一些退出状态的信息,如果父进程一直不取得这些退出信息的话,这些进程表项就原创 2014-03-26 22:34:07 · 837 阅读 · 0 评论 -
Tcp 断开连接 详解
TCP状态转移要点 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不 会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得 注意的状态有两个:CLOSE_WAIT 和TIME_WAIT。1、原创 2014-03-26 22:19:19 · 1364 阅读 · 0 评论 -
面试常考手写代码之--二叉树层次遍历(BFS)
struct BTNode_s{ int value; BTNode_s* pLeft; BTNode_s* pRight;}BTNode;void BFS(BTNode* pRoot){ if(pRoot ==NULL) return; std::dequeBTNode*> tre原创 2014-04-01 22:03:30 · 3221 阅读 · 1 评论 -
利用堆实现k-路归并算法
假设有k个已经排列好的序列A1 A2 ... Ak,现想要将它们归并为一个序列,如何归并?设k个序列的元素总和为n。答:存在时间复杂度为O(nlgk)的算法,具体如下: 1.从k各序列中各取出最小的一个元素组成序列B,由B建立一个大小为k的小顶堆(min-heap) 2. 取B的第一个元素(堆顶)放置在结果序列中,查看该元素的归属i(1=原创 2014-04-01 21:42:12 · 3135 阅读 · 0 评论 -
语言编程需要注意的64位和32机器的区别
一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:16位平台char 1个字节8位short 2个字节16位int 2个字节16位long 4个字节32位指针 2个字节32位平台原创 2014-04-01 21:28:52 · 715 阅读 · 0 评论 -
怎样从10亿查询词找出出现频率最高的10个
1. 问题描述在大规模数据处理中,常遇到的一类问题是,在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常称为“top K”问题,如:在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载率最高的前10首歌等等。2. 当前解决方案针对top k类问题,通常比较好的方案是【分治+trie树/hash+小顶堆】,即先将数据集按照has转载 2012-10-24 13:36:26 · 1611 阅读 · 0 评论 -
C/C++内存分配方式
内存分配方式 内存分配方式有三种: [1] 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量, static 变量。 [2] 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 [3]原创 2014-03-27 16:11:44 · 989 阅读 · 0 评论 -
一个http请求的详细过程
我们来看当我们在浏览器输入http://www.mycompany.com:8080/mydir/index.html,幕后所发生的一切。首先http是一个应用层的协议,在这个层的协议,只是一种通讯规范,也就是因为双方要进行通讯,大家要事先约定一个规范。1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS原创 2014-03-30 21:26:34 · 815 阅读 · 0 评论 -
【笔试必备】HTTP协议各种状态代码
当浏览器向Web服务器请求服务时,有时会有错误产生,这是笔试经常会有的,记住了就简单,没记住就傻逼吧。以下列表给出了产生错误时返回的HTTP状态代码:1xx:信息状态代码:描述:100 Continue服务器收到的请求不完整,但服务器没有拒绝请求,客户端应重新发送一个完整的请求。101 Switching Protoc原创 2014-03-30 21:37:16 · 2033 阅读 · 0 评论 -
死锁
死锁 所谓死锁,是指各并发进程彼此互相等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资源,从而造成大家都想得到资源而又都得不到资源,各并发进程不能继续向前推进的状态。死锁的起因是并发进程的资源竞争,产生死锁的根本原因在于系统提供的资源个数少于并发进程所要求的该类资源数。死锁产生的必要条件:(1)互斥条件,并发进程所要求原创 2014-03-30 21:54:47 · 845 阅读 · 0 评论 -
Linux进程同步机制
为了能够有效的控制多个进程之间的沟通过程,保证沟通过程的有序和和谐,OS必须提供一定的同步机制保证进程之间不会自说自话而是有效的协同工作。比如在共享内存的通信方式中,两个或者多个进程都要对共享的内存进行数据写入,那么怎么才能保证一个进程在写入的过程中不被其它的进程打断,保证数据的完整性呢?又怎么保证读取进程在读取数据的过程中数据不会变动,保证读取出的数据是完整有效的呢?常用的同步方式有: 互斥原创 2014-03-31 21:34:12 · 4973 阅读 · 0 评论 -
内核线程和用户线程的区别
根据操作系统内核是否对线程可感知,可以把线程分为内核线程和用户线程。内核线程建立和销毁都是由操作系统负责、通过系统调用完成的,操作系统在调度时,参考各进程内的线程运行情况做出调度决定,如果一个进程中没有就绪态的线程,那么这个进程也不会被调度占用CPU。和内核线程相对应的是用户线程,用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,用户进程利用线程库提原创 2014-03-31 21:22:58 · 1112 阅读 · 0 评论 -
类的const成员变量、static const、static成员变量的初始化
本博客(http://blog.csdn.net/livelylittlefish )贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! 1. 宏定义 #define ASPECT_RATIO 1.653该宏定义ASPECT_RATIO也许从未被编译器看见,也许在编译器开始处理源代码之前就被预处理器替换了。我们知道,宏定义在预处理阶段会原创 2014-04-01 16:25:25 · 1605 阅读 · 0 评论 -
面向对象的5个基本设计原则
单一职责原则(Single-Resposibility Principle) 其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响,从而大大损伤其内聚性和耦合度。通常意义下的单一职责原创 2014-04-01 21:26:30 · 663 阅读 · 0 评论 -
STL中map用法详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有转载 2014-03-31 22:38:36 · 33892 阅读 · 3 评论