自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蓝旭晨枫╮

无论这个世界对你怎样,都请你一如既往的努力、勇敢、充满希望

  • 博客(185)
  • 资源 (1)
  • 收藏
  • 关注

原创 将二叉树拆成链表

将二叉树拆成链表 描述 笔记 数据 评测将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。您在真实的面试中是否遇到过这个题? Yes 注意事项不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出。样例

2016-04-25 12:35:04 1674

原创 网易游戏第二场 - 题目3 : 神奇的数

题目3 : 神奇的数时间限制:10000ms单点时限:1000ms内存限制:256MB描述Celin一直认为万物皆数,他总会花上很多的时间去研究和数相关的一些问题。最近他在研究一种神奇的数,这种数包含以下3个特征:(1) 这个数至少包含('2', '3', '5')中的任意一个数字;(2) 这个数不能出现'18';(3) 这个

2016-04-22 15:00:03 974

原创 用Trie树统计以给定字符串为前缀的单词个数

#1014 : Trie树时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串,都在

2016-04-21 17:16:06 1928

原创 Lintcode 单词的添加与查找

单词的添加与查找 描述 笔记 数据 评测设计一个包含下面两个操作的数据结构:addWord(word), search(word)addWord(word)会在数据结构中添加一个单词。而search(word)则支持普通的单词查询或是只包含.和a-z的简易正则表达式的查询。一个 . 可以代表一个任何的字母。您在真实的面试中

2016-04-20 18:07:59 1017

原创 微软2016年实习生在线笔试第二题(403 Forbidden)

题目2 : 403 Forbidden时间限制:10000ms单点时限:1000ms内存限制:256MB描述Little Hi runs a web server. Sometimes he has to deny access from a certain set of malicious IP addresses while his

2016-04-19 23:32:07 940 5

转载 Trie树(c++实现)

原理先看个例子,存储字符串abc、ab、abm、abcde、pm可以利用以下方式存储      上边就是Trie树的基本原理:利用字串的公共前缀来节省存储空间,最大限度的减少无谓的字串比较。应用      Trie树又称单词查找树,典型的应用是用于统计,排序和保存大量的字符串(不仅用于字符串),所以经常被搜索引擎系统用于文本词频的统计。设计

2016-04-19 09:40:28 486

转载 教你怎么提高网速 最全提高网速方法

教你怎么提高网速 最全提高网速方法导语:在默认情况下Windows会限制百分之二十的网速,但是我们完全可以解除这个限制!下面为大家介绍不同系统下怎么提高网速。在默认情况下Windows会限制百分之二十的网速,但是我们完全可以解除这个限制!下面为大家介绍不同系统下怎么提高网速。一、win7怎么提高网速Win7提高网速的方法有很多,我这里给大

2016-04-18 22:32:03 10558

原创 关于Linux下的写时复制

关于写时复制在Linux中要启动一个新进程的方式通常是:先调用fork()函数fork出一个新的进程,然后在 新的进程中调用exec()函数来启动新的程序从而达到启动新程序的目的,比如采用下面的代码实现。intstart_prog(char*prog,char* args[]){  pid_t pid =fork(); // 创建子进程if(pid 0)return-1;if(pi

2016-04-18 10:58:43 553

原创 最多有多少个点在一条直线上

最多有多少个点在一条直线上 描述 笔记 数据 评测给出二维平面上的n个点,求最多有多少点在同一条直线上。您在真实的面试中是否遇到过这个题? Yes样例给出4个点:(1, 2), (3, 6), (0, 0), (1, 3)。一条直线上的点最多有3个。标签 /** * D

2016-04-16 18:45:57 840

转载 当你输入一个网址,实际会发生什么?

英文原文:What really happens when you navigate to a URL,编译:寒冬星空作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1. 首先嘛,你

2016-04-14 08:59:39 376

转载 心跳包机制及Socket通信服务的心跳包

本文转自http://www.cppblog.com/tx7do/archive/2009/11/09/100513.html http://xue08161981.blog.163.com/blog/static/324996772009101010852137/ 心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至

2016-04-13 11:11:44 518

转载 Socket心跳包机制

心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一个低级别的线程,在该线程中不断检测客户端的回应, 如果在一定时间内没有收到客户端的回应,即认为客户端已经掉线;同样,如果客户端在一定时间内没 有收到服务器的心跳包,则认为连接不可用。方法

2016-04-13 11:10:18 355

转载 动态规划之0-1背包问题

问题描述:    现有n件物品和一个容量为c的背包。第i件物品的重量是重量为w[i],价值是v[i]。已知对于一件物品必须选择取(用1表示)或者不取(用0表示),且每件物品只能被取一次(这就是“0-1”的含义)。求放置哪些物品进背包,可使这些物品的重量总和不超过背包容量,且价值总和最大。求解思路:    假设有5件物品,其重量分别是w={2,2,6,5,4},价值分别是v=

2016-04-11 10:32:54 375

转载 构造/析构/赋值 函数

条款10:令operator=返回一个reference to *this赋值操作符运算是由右向左运算的。例如一个连锁赋值[cpp] view plain copy "font-size:14px;">int x, y, z;  x=y=z=15;  编译器解释时时这样的:x=(y=(z=15));先给z赋

2016-04-10 22:40:29 355

转载 以对象管理资源、在资源管理类中小心coping行为、在资源管理类中提供对原始资源的访问

在系统中,资源是有限的,一旦用完必须归还给系统,否则可能会造成资源耗尽或其他问题。例如,动态分配的内存如果用完不释放会造成内存泄漏。这里说的资源不仅仅是指内存,还包括其他,例如文件描述符、网络连接、数据库连接、互斥锁等。在任何情况下都要把不使用的资源归还系统是一件非常困难的事情。尤其是考虑到异常、函数内多重回传路径等。基于对象的资源管理办法几乎可以消除资源管理的问题。下面介

2016-04-10 22:33:26 328

原创 考虑写出一个不抛出异常的swap函数

条款25:考虑写出一个不抛出异常的swap函数swap是STL中的标准函数,用于交换两个对象的数值。后来swap成为异常安全编程(exception-safe programming,条款29)的脊柱,也是实现自我赋值(条款11)的一个常见机制。swap的实现如下:namespace std{ templatetypename T> void swap(T& a, T&

2016-04-10 22:25:06 472

原创 了解typename的双重意义

使用模板时,可以用typename,也可以用class templateclass T> class Widget; templatetypename T> class Widget;12两者没有什么不同。作为template的类型参数,意义完全相同。在使用习惯上来说,很多人喜欢使用typename,因为这暗示参数并非一定要是个class类型。C++有时不会把class

2016-04-10 22:17:27 537

转载 千里之行,始于足下的博客园《Linux内核设计与实现》读书笔记

当前标签: linux-kernel1、《Linux内核设计与实现》读书笔记(一)-内核简介 wang_yb 2012-08-15 23:33 阅读:1719 评论:2  2、《Linux内核设计与实现》读书笔记(二)- 内核开发的准备 wang_yb 2012-08-16 10:20 阅读:1474 评论:0  3、《Linux内核设计

2016-04-10 22:14:07 426

原创 进程创建

1、许多其它操作系统提供spawn产生进程的机制。而Unix采用与众不同的方式,它把上述步骤分解到两个单独的函数中去执行:fork()和exec()。首先,fork()通过拷贝当前进程创建一个子进程、子进程与父进程的唯一区别就在一进程ID。PID、PPID(父进程进程号)exec()函数负责读取可执行文件并将其载入地址空间开始运行。2

2016-04-10 22:13:13 415

原创 Linux中getopt()函数用法

1、getopt()2、getopt_long()下面来讲getopt_long函数,getopt_long函数包含了getopt函数的功能,并且还可以指定“长参数”(或者说长选项),与getopt函数对比,getopt_long比其多了两个参数:       int getopt(int argc, char * const argv[],

2016-04-10 22:10:22 1278

转载 gdb调试多线程

gdb使用gdb是非常强大的调试工具,在文本模式下使用。使用方法可以参考陈皓的两篇文章 用GDB调试程序(一) 用GDB调试程序(二)gdb常用命令在下表列出:命令描述backtrace(或bt)查看各级函数调用及参数finish连续运行到当前函数返回为止,然后停下来等待命令

2016-04-10 22:08:45 435

转载 fork调用拷贝缓冲区

fork在创建子进程时,子进程会拷贝父进程的缓冲区。下面是一道经常见到的笔试题。输出多少个"-“?[cpp] view plain copy "font-size:14px;">#include  #include  int main()  {          int i;          for( i=0;i

2016-04-10 21:54:44 337

转载 无锁编程:lock-free原理

定义无锁编程是指在不使用锁的情况下,在多线程环境下实现多变量的同步。即在没有线程阻塞的情况下实现同步。这样可以避免竞态、死锁等问题。原理CAS是指Compare-and-swap或Compare-and-Set CAS是一个原子操作,用于多线程环境下的同步。它比较内存中的内容和给定的值,只有当两者相同时(说明其未被修改),才会修改内存中的内容。 实现如下:int compa

2016-04-10 21:02:08 517

转载 使用valgrind检查内存使用问题

介绍安装使用使用未初始化内存越界使用内存内存泄漏两次释放内存使用已经释放的内存不匹配使用newdelete或newdelete介绍Valgrind是用于内存检泄漏检测、内存调试以及性能分析的工具集。这里主要介绍其用与内存相关的工具Memcheck,它可以发现大部分的内存问题,例如内存泄漏,使用未初始化内存、内存越界等问题。安装我用的时Ubun

2016-04-10 21:00:25 357

转载 gdb调试多线程

gdb使用gdb是非常强大的调试工具,在文本模式下使用。使用方法可以参考陈皓的两篇文章 用GDB调试程序(一) 用GDB调试程序(二)gdb常用命令在下表列出:命令描述backtrace(或bt)查看各级函数调用及参数finish连续运行到当前函数返回为止,然后停下来等待命令fram

2016-04-10 20:59:08 571

转载 C++深拷贝与浅拷贝的区别

转自:http://blog.csdn.net/sghcpt/article/details/5578320又加了一些自己补充。原文:Memberwise copy: 在初始化一个对象期间,基类的构造函数被调用,成员变量被调用,如果它们有构造函数的时候,它们的构造函数被调用,这个过程是一个递归的过程.Bitwise copy: 原内存拷贝.例子,给定一个对象ob

2016-04-10 20:57:51 425

转载 C语言str函数系列

1、strcat()此函数原型为 char *strcat(char *dest, const char *src).功能为连接两个字符串,把src连接到dest后面;返回dest地址实现如下[cpp] view plain copy char * strcat(char *dest,const char *src)  

2016-04-10 20:55:11 502

转载 C++中的智能指针

当设计含有指针的类时,应特别小心。因为指针指向的对象通常不包含在类的对象中,当类对象进行复制时,默认复制构造函数通常是浅拷贝(bitwise copy),只是拷贝了指针的值,这是两个指针指向同一个对象。通过其中一个指针就可以改变对象的值,也可以释放指针指向的对象;这时候另一个指针并不知情。引用C++ Primer的例子[cpp] view plain copy

2016-04-10 20:54:33 307

转载 句柄类中计数器的分离

句柄类是管理基类指针的类,“智能指针”的类其实就是句柄类。智能指针都有一个对应的计数器,这个计数器可以在智能指针指向的对象中,在“C++中的智能指针”中就是这样的;也可以在句柄类中。这两种有一些区别。当计数器在智能指针对象的内部时,我们需要在类的外层加一层包装,之前用Ptr类,但是为了用计数器,在类Ptr外层包装了U_Ptr类。如下图:其实还可以计数器和指针对象的分离,

2016-04-10 20:44:59 397

转载 C/C++中volatile关键字

1. volatile关键字C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler that an ob

2016-04-10 20:40:20 252

转载 do{}while(0)在宏定义中的作用

在开源代码中看到,宏定义经常这样用[cpp] view plain copy #define some()                        do {                                          do_somt_thing();      } while (0)  为什么这样用

2016-04-10 20:34:07 287

转载 虚函数能否是内联函数

内联函数是在编译时,将调用函数处插入内联函数的代码,省去了函数调用时的开销。虚函数是通过指针或引用调用函数时,通过虚函数表来确定调用的函数,在运行时确定。那么虚函数是否可以是内联函数?以前没有想过这个问题,表面上看,虚函数不能为内联函数。我们在类中定义的函数都是内联函数,析构函数经常在类中定义,而析构函数又经常声明为虚函数,以前没有发现什么问题。其实虚函数可以为内联函数,这

2016-04-10 20:29:56 568

转载 TCP漏洞:半连接

本文介绍SYN攻击的基本原理、工具及检测方法,并全面探讨SYN攻击防范技术……据统计,在所 TCP握手协议 SYN攻击原理 SYN攻击工具 检测SYN攻击 SYN攻击防范技术 有黑客攻击事件中,SYN攻击是最常见又最容易被利用的一种攻击手法。相信很多人还记得2000年YAHOO网站遭受的攻击事例,当时黑客利用的就是简单而有效的SYN攻击,有些网络蠕虫病毒配合SYN攻击造成更大的破坏。本文介绍S

2016-04-10 19:27:34 471

转载 TCP协议三次握手连接四次握手断开和DOS攻击

转载:http://hi.baidu.com/xgdcisco/blog/item/60da65f70fd8145d342acc28.html;http://blog.csdn.net/lostyears/article/details/7104349TCP连接的状态图TCP建立连接的三次握手过程,以及关闭连接的四次握手过程贴一个telnet建立连接,断开连接的使用

2016-04-10 19:26:51 374

转载 《STL源码剖析》---stl_hashtable.h阅读笔记

在前面介绍的RB-tree红黑树中,可以看出红黑树的插入、查找、删除的平均时间复杂度为O(nlogn)。但这是基于一个假设:输入数据具有随机性。而哈希表/散列表hash table在插入、删除、查找上具有“平均常数时间复杂度”O(1);且不依赖输入数据的随机性。hash table的实现有线性探测、二次探测、二次散列等实现,SGI的STL是采用开链法(separate chaining)来

2016-04-10 10:51:18 521

转载 STL笔记之优先队列

STL笔记之优先队列程序人生 2014-07-05 95 阅读堆 stl在STL中队列queue是基于deque实现的,优先队列priority_queue则是基于堆实现的。所谓优先队列即元素具有优先级的队列,在最大优先级队列中,队列最前面的元素具有最高的优先级,最大优先级队列基于最大堆(max-heap)实现。1. 堆的基本性质二叉堆是一颗完全二叉树,可以分为

2016-04-10 10:47:44 328

转载 STL笔记之hashtable

STL笔记之hashtable程序人生 2014-08-24 1020 阅读stl之前对hash一直存在恐惧感,毕竟没用过……最近在一个组件里面自己实现了一个hashtable,感觉也就这么回事;回头看看书上对hashtable的分析,发现是极其的相似。不过,旧版本的C++标准里面并没有hashtable这个东西,而C++11中引入了相关的容器(std::unordered

2016-04-10 10:46:17 301

转载 笔试题目总结之一——TCP/IP协议栈

TCP/IP协议,包含了一系列构成互联网基础的网络协议。这些协议最早发源于美国国防部的ARPA网项目。TCP/IP字面上代表了两个协议:TCP(传输控制协议)和IP(网际协议)。1983年1月1日,在因特网的前身(ARPA网)中,TCP/IP协议取代了旧的网络核心协议(NCP,Network Core Protocol),从而成为今天的互联网的基石。最早的TCP/IP由文顿·瑟夫和罗伯

2016-04-09 21:49:14 650

转载 完成端口(CompletionPort)详解

[置顶] 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三标签: 网络编程socketnull服务器windows2011-11-01 08:17 118369人阅读 评论(469) 收藏 举报 分类: VC网络编程基础(2) 版权声明:本文为博主原创文章,未经博主允许不得转载。    手把手叫

2016-04-09 21:47:33 384

原创 fork后子进程保留了父进程的什么?

使用fork函数得到的子进程从父进程的继承了整个进程的地址空间包括:进程上下文进程堆栈内存信息打开的文件描述符信号控制设置进程优先级、进程组号当前工作目录根目录资源限制控制终端等子进程与父进程的区别在于:父进程设置的锁,子进程不继承(因为如果是排它锁,被继承的话,矛盾了)各自的进程ID和父进程ID不同子进程的未决告警被清除;

2016-04-09 20:21:55 4107 1

空空如也

空空如也

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

TA关注的人

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