- 博客(24)
- 收藏
- 关注
原创 求解最长公共子序列问题(LCS)
刷leetcode一直没做到大名鼎鼎的LCS问题,也不明白LCS具体是什么问题,直到做到去年腾讯笔试的一道编程题:给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述:
2017-02-27 21:46:10 364
原创 线程间同步方式、进程间通信方式
线程间通信方式:锁、信号、信号量进程间通信方式:消息队列、共享内存、信号、信号量、管道、socket套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。(有名管道也是半双工的通信
2017-02-27 19:27:32 389
转载 容器的capacity、max_size以及内存分配
capacity - 容器的成员函数capacity()取得max_size - 容器的成员函数max_size()取得STL容器的capacity属性,表示STL在发生realloc前能允许的最大元素数,也可以理解为预分配的内存空间。例如一个vector v的capacity为5,当插入第6个元素时,vector会realloc,vector内部数据会复制到另外一个内存区域。这样
2017-02-27 18:00:27 295
转载 C++中的虚拟继承
1.为什么要引入虚拟继承虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:class Aclass B1:public virtual A;class B2:public vi
2017-02-27 16:00:17 145
原创 静态数据成员受private控制符的作用
今日在看《c/c++程序员面试秘笈》时,有如下题,p173面试题:对静态数据成员的正确描述是:A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以被类对象调用C.静态数据成员不受private控制符作用D.静态数据成员可以直接用类名调用这里答案给的是CD,对于C有所疑问,于是写下如下代码进行测试:#include #include
2017-02-25 09:57:01 2477 4
转载 不要使用vector<bool>
做为一个STL容器,vector>有两个问题.第一,它不是一个真正STL容器,第二,它并不保存bool类型.除此以外,并没有太多东西与本节题目有关(译注,还不够多吗)一个东西不能成为一个STL容器,只因为会有人说它是一个(译注,:( ).一个东西要成为STL容器,必须满足所有列于C++标准23.1节的容器要求.在这些要求中,有这样一条:如果C是一个T类型元素容器,并且C支持operat
2017-02-25 09:11:01 351
原创 与全局对象相比,使用静态数据成员的优势
同全局变量相比,使用静态数据成员有两个优势:静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其它全局名字冲突的可能性;可以实现信息隐藏。静态数据成员可以是private成员,而全局变量不能; 与静态数据成员一样,我们也可以创建一个静态成员函数,它为类的全部服务而不是为某一个类的具体对象服务。静态成员函数与静态数据成员一样,都是类的内部实现,属于类定义的一部分。普通的成员函数一般都
2017-02-25 09:09:40 1455
转载 C++的四种类型转化符
C++有四种强制类型转换符,分别是dynamic_cast,const_cast,static_cast,reinterpret_cast。其中dynamic_cast与运行时类型转换密切相关,在这里我们先介绍dynamic_cast,其他三种在后面介绍。1、dynamic_cast运算符该转换符用于将一个指向派生类的基类指针或引用转换为派生类的指针或引用。
2017-02-24 21:08:57 270
原创 句柄是什么以及句柄和指针的区别
句柄在Windows编程中是一个很重要的概念,再许多地方都扮演着重要的角色。在Windows环境中,句柄是用来标识项目的,这些项目包括:模块、任务、实例、文件、内存块、菜单、控制、字体、资源、GDI对象等它是Windowss操作系统为各应用程序腾出的一些内存储地址,用来专门登记各应用对象再内存中的地址变化。这个地址是在对象装载(load)时由系统分配的,在卸载时又释放回系统。它并不
2017-02-24 16:43:19 329
原创 const指针与指向const的指针的辨析
经常看到诸如const int * a以及int const *a 或者int *const a这样的指针,最初不理解时总是一头雾水,实际上区分起来非常容易,我们可以以*与const的相对位置为参考,如果const在*左边,那我们可以知道这是指向const的指针,反之则是const指针。指向const的指针,它指向的内容是不可变的,也就是说解引用*a的值不可以改变con
2017-02-23 15:53:57 202
原创 贪心算法基本介绍以及在lintcode上的典型题型
最初接触贪心算法是在学习数据结构与算法基础时,当时接触了最短路径的迪杰斯特拉算法,这是由一个局部贪心从而实现全局最优的一个典型算法,但是作为一个标准问题的解法它实在是太难自己写出来了,所以自己想深入地了解了一下贪心算法,以达到融会贯通的效果一、什么是贪心算法?顾名思义该算法重点在于贪心,也就是对于每一个原子事件,都需要做一个当前受益最大的决定同时做到全局最优二、
2017-02-23 14:55:23 1800
原创 曾经所遇到的C/C++与python的技术坑一二
一.python中去除列表list中重复元素的方法:1.使用内置的set,将list作为set的构造函数构造一个set再转换为list即可(但是会改变元素的排序,同fromkey)example:(1) l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) print l2(2) l1 = ['b','c','d
2017-02-23 14:49:38 531
原创 2016年暑假于北京某家创业公司的python实习面经
这家公司可能是由于刚起步的原因,投了简历之后的笔试与面试都比较随意笔试是到场之后给了张卷子写题,题目不难,所以在这里主要讲面试过程后来总结的一些细节一.字要好好写二.不要说自己工作和生活分开三.尽量表示实习完了之后依旧在这实习实习结束时,HR也问了我几个问题并且问倒了我:对这家公司的了解,实习之后了解有什么变化,有什么意见。其中尤其是实习之后对公司了
2017-02-23 14:45:50 418
原创 位图Bitmap
位图是一种特殊的数组,由01组成,通常来说每一个01序列对应一个特殊的值,从而方便数值的快速定位。比如下面这两道题:1.找出一个不在5TB个整数中存在的数。一般来说我们可以用Hash来做,但是题目中强调了5TB这个数字就表示空间资源有所限定,如果依次遍历数字建立Hash表,太过于浪费。此时可以用位图来做,5TB的数,其中必然有重复的数字,假设一共有4GB个不重复的数字,由位
2017-02-23 14:40:31 285
原创 HTTP状态码及其返回
HTTP协议的状态码主要分为以下五大类:1xx2xx3xx4xx5xx其中1xx表示保留,2xx表示接收请求成功,3xx表示重定向或者需要进一步细化请求,4xx表示客户端错误比如大名鼎鼎的404not found,5xx表示服务端错误
2017-02-23 12:25:34 205
原创 卡特兰数组
接触卡特兰数组是在刷Leetcode上的95.96这两题 unique binary search tree时涉及的知识点,当时只会考虑o(n^2)时间复杂度的解法,后来在discuss中了解到,这是典型的卡特兰数的题型,通过卡特兰数组的通项公式可以得到O(n)的解法。卡特兰数,一种有着特殊规律的数列,先用一道题来引出卡特兰数。10个高矮不同的人,排成两排,每排必须是从矮到高
2017-02-23 11:30:19 435
原创 进程的三种状态以及状态之间的切换
1.进程的三种基本状态 进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。 就绪(Ready)状态 当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。 执行(Running)状态当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。 阻塞(Blocked)状态正在
2017-02-23 11:29:14 1678
原创 MySQL复制的流程
MySQL复制分成三步: (1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events); (2) slave将master的binary log events拷贝到它的中继日志(relay log); (3) slave重做中继日志中的事件,将改变反映它自己的数据。
2017-02-23 11:27:58 275
原创 OSI参考模型
它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。4、物理层:提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性;有关的物理链路上传输非结构的位流以及故障检测指示。5、数据链路层:在网络层实体间提供数据发送和接收的功能和过程;提供数据链路的流控。6、网络层:控制分组传送系统的操作、路由选择、拥护控制、网络互连等功能,它的作用是将具体的物
2017-02-23 11:26:11 220
转载 由ip计算子网掩码和默认网关
超过255台电脑IP和子网掩码的一些知识我们都知道,IP是由四段数字组成,在此,我们先来了解一下3类常用的IP A类IP段 0.0.0.0 到127.255.255.255 B类IP段 128.0.0.0 到191.255.255.255 C类IP段 192.0.0.0 到223.255.255.255 XP默认分配的子网掩码每段只有255或0 A类的默认子网掩码 255...
2017-02-23 11:25:26 16777 6
转载 从汇编层面深度剖析c++虚函数
来源: 海枫,2011-04-20链接:http://blog.csdn.net/linyt/article/details/6336762虚函数是C++语言实现运行时多态的唯一手段,因此掌握C++虚函数也成为C++程序员是否合格的试金石。csdn网友所发的一篇博文《VC虚函数布局引发的问题》从汇编角度分析了对象虚函数表的构,以及C++指针或者引用是如何利用这个表来实现运行时多态。
2017-02-23 11:24:06 298
转载 常见hash算法的原理
来源:mengfanrong链接:www.cnblogs.com/mengfanrong/p/4034950.html散列表,它是基于高速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构能够理解为一个线性表,可是当中的元素不是紧密排列的,而是可能存在空隙。散列表(Hash table,也叫哈希表),是依据关键码值(Key value)而直接进行訪问的数据结
2017-02-23 11:23:04 165
原创 数据结构与算法基础学习之路——tips
一、一个高级语言编写的程序在计算机上运行时所消耗的时间取决于下列因素:– 1. 算法采用的策略,方案– 2. 编译产生的代码质量– 3. 问题的输入规模– 4. 机器执行指令的速度 二、函数的渐近增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,那么,我们说f(n)的增长渐近快于g
2017-02-23 11:12:33 552
原创 写下这篇博客的初衷
2017年2月23日是今年回到学校学习的第二天,今年注定是在我人生规划中最重要的一年,希望能够在这片无人知晓之处,记载着我一年来进步的点点滴滴。本博客会写下一年来我所学习的绝大多数知识点,一方面为了能够让自己在年终的时候对自己的表现有所考核,另一方面也是对自己知识点的一个巩固,希望一切顺利!
2017-02-23 11:05:26 179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人