- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 leetcode--34. Search for a Range
Given a sorted array of integers, find the starting and ending position of a given target value.Your algorithm's runtime complexity must be in the order of O(log n).If the target is not found
2016-08-08 21:36:54
466
原创 leetcode--31. Next Permutation
Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it as the lowest possible
2016-08-08 20:05:19
430
原创 leetcode--27. Remove Element
Given an array and a value, remove all instances of that value in place and return the new length.Do not allocate extra space for another array, you must do this in place with constant memory.
2016-08-08 15:29:19
357
原创 leetcode--26. Remove Duplicates from Sorted Array
Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this in place with
2016-08-08 15:13:59
353
原创 leetcode --3Sum Closest
题目:Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have
2016-08-08 14:52:45
331
原创 nginx学习之epoll
首先说一下传统的I/O多路复用select和poll,对比一下和epoll之间的区别:举个例子:假如有100万用户同时与一个进程保持TCP连接,而每一时刻只有几十或者几百个tcp连接是活跃的(即能接收到TCP包),那么在每一时刻进程只需要处理这100万连接中的有一小部分。select和poll这样处理的:在某一时刻,进程收集所有的连接,其实这100万连接中大部分是没有时间发生的。因此,如果
2016-07-07 10:09:06
5335
转载 C++何时会帮忙合成default constructor
原文地址:http://blog.csdn.net/wangyuquanliuli/article/details/28466967C++新手一般有两个常见的误解:1.任何class如果没有定义default constructor,就会被合成出一个来。2.编译器合成出来的default constructor会显示设定“class 内每一个data member的默认
2016-06-29 09:28:56
343
原创 排序算法--冒泡、插入、归并、快排
整理了一下几种常见的排序算法,包括冒泡、插入、归并、快排。还有另外几种待整理:堆排序、希尔排序、桶排序直接上代码:#include#include//#include using namespace std;void swap(int* a, int* b){ if(a==NULL || b==NULL) cout << "bad in swap" <<
2016-06-23 10:19:47
538
原创 string 类的实现
string类的实现,主要包含这几个函数:构造、拷贝构造、析构、赋值、比较、字符串相加、获取长度及子串。下面是代码:#include #include using namespace std;class String{ public: String(const char* str = NULL ); //普通构造函数 String(const String
2016-06-22 17:10:35
427
原创 二分查找递归和非递归实现
非递归实现:int BinSearch(int data[], int length, int key){ if ( data == NULL || length <= 0) throw new std::exception("Invalid Parameters"); int start = 0; int end = length - 1; int mid = start;
2016-06-21 22:44:20
415
原创 红黑树(RB-tree)比AVL树的优势在哪?
今天看了STL源码剖析中关于红黑树的原理和实现,看完复杂的节点插入、节点颜色变换后不禁想:这些功能经典的AVL树也能实现,为什么要提出红黑树?查了些资料,并且加上自己理解,感叹红黑树的巧妙。首先红黑树是不符合AVL树的平衡条件的,即每个节点的左子树和右子树的高度最多差1的二叉查找树。但是提出了为节点增加颜色,红黑是用非严格的平衡来换取增删节点时候旋转次数的降低,任何不平衡都会在三次旋转之内解决
2016-06-16 17:03:24
49427
6
原创 linux-malloc底层实现原理
本文大致讲解一下linux下malloc的底层实现原理。首先malloc肯定是从堆中分配内存,而堆又在用户空间中占据什么位置?通过下面这张图可以看出来:很明显是32位系统,寻址空间是4G,linux系统下0-3G是用户模式,3-4G是内核模式。而在用户模式下又分为代码段、数据段、.bss段、堆、栈。各个segment所含内容在图中有具体说明。其中bss段:存放未初始化的全局变量
2016-06-15 13:58:37
36558
11
转载 如何看待操作系统的用户空间和内核空间?
原文地址:http://blog.chinaunix.net/uid-23069658-id-3344883.html作为中央核心处理单元的CPU,除了生产工艺的不断革新进步外,在处理数据和响应速度方面也需要有权衡。稍有微机原理基础的人都知道Intel X86体系的CPU提供了四种特权模式ring0~ring3,其中ring0特权最高,ring3的特权最低,之所以要做这样的区分一个主要目的
2016-06-15 09:28:54
4062
原创 SGI STL空间配置器-第二级空间配置器
相比第一级配置器,第二级配置器多了一些机制,避免小额区块造成内存的碎片。小额区块不仅仅是碎片的问题,配置时的额外负担也是一个大问题。因为区块越小,额外负担所占的比例就越大,就越显得浪费。额外负担是指动态分配内存块的时候,位于其头部的额外信息,包括记录内存块大小的信息以及内存保护区(判断是否越界),即索取任何一块内存时,都要得有一些“税”要交给系统。SGI STL第二
2016-06-14 16:51:30
1292
原创 SGI STL空间配置器-第一级空间配置器
一、SGI STL配置器简介 如果要了解STL的实现,必须要了解空间配置器,因为整个STL的操作对象都放在容器之内,而容器一定需要配置空间以存放数据等资料。allocator叫做空间配置器而不是内存配置器,因为空间不一定是内存,也可以是磁盘或者其他辅助存储介质。可以写一个allocator直接向硬盘取空间。当然这里介绍的allocator配置的是内存。 二、SGI标准的空间配置器 其实
2016-06-13 16:04:09
1574
原创 C++ traits编程技法之__type_traits
__type_trivial 双底线前缀,表示是SGI STL以外的东西,不在STL标准范围之内。__type_trivial负责萃取型别(Type)的特性,究竟是什么特性呢? 注:trivial是英文“无意义的、不重要”的意思。 答曰:这个型别是否具备non-trivialdefalt ctor、non-trivial copy ctor、non-t
2016-06-13 13:59:41
4187
1
转载 孤儿进程与僵尸进程[总结]
原文地址:http://www.cnblogs.com/Anker/p/3271773.html1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。
2016-06-12 11:24:20
362
转载 c++中的 trivial destructor
今天看《STL源码剖析》时看到的这个名词,google了下原文地址:http://blog.csdn.net/wudishine/article/details/12307611 如果用户不定义析构函数,而是用系统自带的,则说明,析构函数基本没有什么用(但默认会被调用)我们称之为trivial destructor。反之,如果特定定义了析构函数,则说明需要在释放空间之前做一
2016-05-15 11:14:18
695
原创 c++之多态性(动态绑定)
多态性 指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。 a、编译时多态性:通过重载函数实现 b、运行时多态性:通过虚函数实现 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。多态亦可以解
2016-05-11 11:39:26
2068
原创 openrov爱好者
去年和同学一块研究了国外开源项目openrov openrov是一款水下机器人 可以用键盘和手柄控制运动 实时传输水下视频信息到PC上其软硬件全部开源 结合实验室条件 我和另外一名同学对其进行了1:1仿制 并进行了水池下水实验 实验状况良好去年我对openrov软件进行了研究 主要是底层的C++实现 上位机是基于node.js实现 由于个人能力 精力有限 没有对其进行深入分析 国内也有少
2016-05-09 22:59:35
2769
2
原创 眼疼
看了一天的书 眼好累AVL树旋转已经把我看蒙逼了一想到还有论文要搞 实验室还有活要干 还要准备找工作 不禁菊花一紧 慢慢来吧 少年还好我这学期坚持锻炼身体 精力还算充沛 接下来几个月就是干了!加油!
2016-05-09 22:51:54
306
原创 APUE多线程--条件变量
关于条件变量相关的定义和函数参考下面第一篇博客,比较直观的程序例子参看第二篇博客.二位老人家写的不错,http://blog.csdn.net/hiflower/article/details/2195350http://blog.csdn.net/hongmy525/article/details/5194006我这里只是捋一下APUE书中关于条件变量的代码#incl
2016-05-06 16:10:21
964
转载 linux core文件
原文来自博客园http://www.cnblogs.com/dongzhiquan/archive/2012/01/20/2328355.html1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。2. 开启或关闭core文件的生成用以下命令来阻止系统生成core文件:
2016-05-04 08:04:26
310
原创 墙上时钟时间 ,用户cpu时间 ,系统cpu时间内,核态和用户态的区别
时钟时间(墙上时钟时间wall clock time):从进程从开始运行到结束,时钟走过的时间,这其中包含了进程在阻塞和等待状态的时间。用户CPU时间:就是用户的进程获得了CPU资源以后,在用户态执行的时间。系统CPU时间:用户进程获得了CPU资源以后,在内核态的执行时间。 进程的三种状态为阻塞、就绪、运行。 时钟时间 = 阻塞时间 + 就绪时间 +运行时间
2016-05-03 21:23:29
8462
原创 linux进程调度,优先级、进程nice值
我自己补充一下:APUE8.16中讲到进程调度,UNIX系统历史上对进程提供的只是基于调度优先级的粗粒度的控制.调度策略和调度优先级是由内核确定的.但是内核可以通过调整nice值选择以更低优先级运行(通过调整nice值降低它对cpu的占有,因此该进程是"有好的").只有特权进程允许提高调度权限.POSIX(proteble operate system interface)可移植操作系统接
2016-05-03 16:06:04
11943
转载 gcc -O优化选项
原文:http://blog.csdn.net/misiter/article/details/7514428查查gcc手册就知道了,每个编译选项都控制着不同的优化选项 下面从网络上copy过来的,真要用到这些还是推荐查阅手册 -O设置一共有五种:-O0、-O1、-O2、-O3和-Os。 除了-O0以外,每一个-O设置都会多启用几个选项,请查阅gcc手册的优化选项章节,以便了解每个
2016-05-02 07:49:45
614
原创 二叉搜索树与双向链表
要求:输入棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树种结点指针的指向。具体见剑指offer题27。 分析:在二叉树中,每个节点都有两个指向子节点的指针。而在双向链表中,每一个节点也有两个指针,分别指向向前和后向的节点。因此这两种数据结构有相似之处,并且二叉搜索树是一种排序的数据结构,可以转换为排序的双向链表。主要思想:将原先指向左子节点的
2016-04-28 12:20:18
613
转载 串口芯片型号8250、16550A等是什么意思
原文地址:http://blog.sina.com.cn/s/blog_a6559d920101lnj6.html串口的关键部件是通用异步接收发送器(Universal Asynchronous Receiver Transmitter,UART)。它负责从计算机总线采集数据,转换成传输格式,然后发送到串口;也负责从串口接收数据,检查和删除附加的位,并传送结果数据给计算
2016-04-26 08:45:58
9058
转载 DM9000 和处理器地址的关系
先码下 现在在弄imx6和DM9000通信 回头补充DM9000对外来说只有两个端口——地址口和数据口,地址口用于输入内部寄存器的地址,而数据口则完成对某一寄存器的读写。DM9000的CMD引脚用来区分这两个端口,当CMD引脚为0时,DM9000的数据线上传输的是寄存器地址,当CMD引脚为1时,传输的是读写数据。我们把DM9000的AEN接到s3c2440的nGCS4引脚上,则DM9000
2016-04-22 11:16:06
1200
原创 TTL电平和RS232电平
TTL电平 TTL是Transistor-Transistor Logic,即晶体管-晶体管逻辑的简称,它是计算机处理器控制的设备内部各部分之间通信的标准技术。TTL电平信号应用广泛,是因为其数据表示采用二进制规定,+5V等价于逻辑"1",0V等价于逻辑"0"。 数字电路中,由TTL电子元器件组成电路的电平是个电压范围,规定:输出高电平>=2.4V,
2016-04-22 10:18:08
669
原创 由unix文件I/O引出的原子操作
第二遍看APUE,打算把知识点总结一下。问题提出:当两个独立进程A、B同时对一个文件进行追加写操作时(假设这里打开时没有使用O_APPEND参数,即没有从文件尾打开),如果此时进程A调用lseek对该文件偏移量设为100(文件尾),同时内核切换为进程B,B将偏移量也设为100,然后B调用write函数使得B偏移量增加到110。之后内核切换为A,此时如果A调用write的话,还是会从100处开始写入,
2016-03-18 12:49:16
1289
转载 当在浏览器中输入google.com时发生了什么?
原文地址:https://github.com/skyline75489/what-happens-when-zh_CN当在浏览器中输入google.com时发生了什么?这个仓库试图回答一个古老的面试问题:当你在浏览器中输入 google.com 并且按下回车之后发生了什么?不过我们不再局限于平常的回答,而是想办法回答地尽可能具体,不遗漏任何细节。这将是一个协作的过程,所以深入挖掘吧,并且帮助我们一
2016-03-03 08:51:10
845
原创 用编程来判断系统是大端还是小端
大端是高位字节先存储(低地址)小端是地位字节先存储(低地址)网络字节序是大端的,也就是高位字节先传输下面是程序:#include <stdio.h>int main() { union ut{ short s; char c[2]; }}u;if(sizeof(short) == 2){ u.s = 0x0102; if(u.c[0] ==
2016-03-02 23:01:01
1011
原创 git使用、将本地代码提交到github
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git的功能特性: 从一般开发者的角度来看,git有以下功能: 1、从服务器上克隆完整的Git仓库(包括代码和版本
2015-10-21 16:47:09
979
转载 java中静态代码块的用法 static用法详解
转载自博客园:http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是
2015-10-20 16:18:19
462
原创 leetcode-T7 Reverse digits of an integer
题目要求:Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321解:#define INT_MAX 2147483647#define INT_MIN (-INT_MAX -1)class Solution {public:
2015-10-20 08:35:54
902
1
原创 windows下文本转到liunx下出现问题
做阿里穿衣搭配比赛的时候遇见的问题,记录一下。之前写程序的时候遇到过这个问题,当时从网上找了资料,捣鼓半天才弄好,没有留下笔记,so...对恭喜你又猜到了问题出现背景:阿里比赛提供的数据我放在了window系统下,处理文本的程序我在linux(Ubuntu)下写的(没错,两台电脑,就是这么有钱),找相同商品数据的时候发现找不到,加入测试语句,发现待测试商品后面都带有一个^M,带
2015-10-19 21:16:42
427
转载 SQL Server如何启用xp_cmdshell组件
今天从txt向sqlserver导入的时候出现错误,从博客园上找来一篇。原文地址:http://www.cnblogs.com/atree/p/SQL_SERVER_xp_cmdshell.htmlSQL Server如何启用xp_cmdshell组件【错误描述】: SQL Server阻止了对组件‘xp_cmdshell’的过程‘sys.xp_cmdshell’的访问。
2015-10-19 19:10:14
1168
转载 搜狐2013实习生笔试题
还好涉猎广,选择题都看过一、不定项选择题1、HTTP状态码500代表什么含义(C)A、请求资源未在服务器上发现B、请求成功,相应的响应头或数据包丢失C、服务器错误D、返回时间500ms注解:HTTP状态码:500 :Internal Server Error服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说
2015-10-18 22:32:34
765
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人