9 luckxu

尚未进行身份认证

我要认证

Any problem in computer science can be solved by another layer of indirection.

等级
TA的排名 22w+

策略类题目

1. 桌子上有2014枚棋子,甲乙两人轮流取走棋子.规则是:每人每次取的个数是1枚至5枚,谁最后取光桌上的棋子谁就获胜.如果甲先取,那么甲先取______枚棋子,才能保证自己必胜

2014-09-07 13:11:54

如何理解C++中的动态绑定

在浏览C++论坛时,我总是能发现很多C++初学者的提问帖子,都是关于动态绑定的。基本大意就是不完全理解动态绑定该如何理解,造成一些面试或者实际编程上的困扰。本文就是针对这个问题作出的解答。作者并非技术大牛,不当之处还请大家在评论中指出,在下万分感谢。    我对于C++动态绑定的理解,一句话,就是编译器用静态分析的方法加上虚拟函数的设计实现在程序运行时动态智能执行正确虚拟函数的

2014-05-21 23:54:13

n个数顺序入栈后的出栈顺序

解法①:递推法有n个位置,现在任意选定一个数,比如1,那么1可以在1-->n的任意一个位置上。假设1在第k的位置上,显然在1的前面有k-1个数,并且这些数的数值为2-->k,在1后面有n-k个数。用f(k)表示k个数顺序入栈后的出栈顺序,则f(n)就是我们要求的最终答案。而f(n)这个事件又可以分解成1在1-->n这n个位置上出现的n种情况,于是根据加法/乘法原理,易得f(n)is Cat

2014-04-05 17:37:14

C++编译器与链接器工作原理

zz: http://blog.sina.com.cn/s/blog_5f8817250100i3oz.html要明白的几个概念:    1、编译:编译器对源文件进行编译,就是把源文件中的文本形式存在的源代码翻译成机器语言形式的目标文件的过程,在这个过程中,编译器会进行一系列的语法检查。如果编译通过,就会把对应的CPP转换成OBJ文件。    2、编译单元:根据C++标准,

2014-02-28 23:06:54

Socket之shutdown()用法

zz: http://blog.csdn.net/moxiaomomo/article/details/7897943通常来说,socket是双向的,即数据是双向通信的。但有些时候,你会想在socket上实现单向的socket,即数据往一个方向传输。单向的socket便称为半开放Socket。要实现半开放式,需要用到shutdown()函数。一般来说,半开放socket

2014-01-18 23:31:25

TCP协议中的三次握手和四次挥手(图解)

zz: http://blog.csdn.net/whuslei/article/details/6667471 建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生

2014-01-18 21:43:28

Linux网络编程socket选项之SO_LINGER

Linux网络编程中,socket的选项很多.其中几个比较重要的选项有:SO_LINGER(仅仅适用于TCP,SCTP), SO_REUSEADDR. SO_LINGER 在默认情况下,当调用close关闭socke的使用,close会立即返回,但是,如果send buffer中还有数据,系统会试着先把send buffer中的数据发送出去,然后close才返回. SO_L

2014-01-18 20:57:01

表达式求值(前缀、中缀、后缀)

为了简化问题,关注算法,本文的讨论基于以下三点:1. 只考虑 + - * / ( ) 这几个基本运算符,且是二元操作2. 运算数只考虑 0-9,这10个简单的数,方便从string中取出来3. 输入的表达式没有语法错误 【背景知识】中缀表示法(Infix expression):操作符位于两个操作数中间,算术表达式的常规表示法。只用于二元操作符的情况,而且需要用括号和优先规

2014-01-04 19:25:42

Linux 信号signal处理机制

信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出

2014-01-03 14:18:13

Linux 配置支持高并发TCP连接(socket最大连接数)

Linux配置支持高并发TCP连接(socket最大连接数)1、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打

2013-12-31 11:25:53

linux下错误的捕获:errno、strerror和perror的使用

经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。    在程序代码中包含 #include ,然后每次程序调用失败的时候,系统会自动用用错误代码填充errno这个全局变量,这样你只需要读errno这个全局变量

2013-12-28 20:46:09

有关send() / recv()函数的理解

转自:http://blog.csdn.net/petershina/article/details/79757981.send 函数  int send( SOCKET s, const char FAR *buf, int len, int flags );  不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而

2013-12-24 11:00:46

socket编程中write、read和send、recv之间的区别

一旦,我们建立好了tcp连接之后,我们就可以把得到的fd当作文件描述符来使用。由此网络程序里最基本的函数就是read和write函数了。ssize_t write(int fd, const void*buf,size_t nbytes);write函数将buf中的nbytes字节内容写入文件描述符fd.成功时返回写的字节数.失败时返回-1. 并设置errno变量. 在网络程序中,当我

2013-12-24 10:55:18

bind出现Address already in use解决方法

转自:http://blog.csdn.net/petershina/article/details/7955183每次修改了源代码并再次编译运行时,常遇到下面的地使用错误:Cann't bind server socket !: Address already in use虽然用Ctrl+C强制结束了进程,但错误依然存在,用netstat -an |grep 5120和ps au

2013-12-24 10:53:33

动态规划详解

终于来到了算法设计思想中最难,也最有趣的这部分,在去年的google笔试中,7道算法设计题有2道动态规划(Dynamic Programming)。看了这么久的算法,这部分也是唯一感觉到了比较难的地方,从这篇文章开始,将花连续的篇幅来讨论一些动态规划的问题。这包括书上介绍过的计算二项式系数,Warshall算法求传递闭包,Floyd算法求完全最短路径,构造最有二叉查找树,背

2013-12-23 17:18:48

问题分解,分治与动态规划

问题分解就是通过对问题进行分解,从而将问题分解成有限个问题规模更小的子问题,从而达到问题求解的过程或者方法。问题分解是一种从问题规模出发来进行问题求解的方法,一般来讲,问题的规模与问题的复杂性密切相关,通过降低问题的规模可以达到减低问题复杂性,从而易于问题的求解。分治策略和动态规划都是这种思想。其实问题分解是问题求解思维中的一种基本的思维方式。当然问题能通过分解来获得答案,最关键的地方就是原问题的

2013-12-23 15:09:39

Linux epoll使用详解

epoll简介epoll 是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够获得较好的性能( 此时被监视的文件描述符数目非常大,与旧的 select 和 poll 系统调用完成操作所需 O(n) 不同, epoll能在O(1)时间内完成操作,所以性能相当高),

2013-12-23 11:19:56

linux socket 编程 常用函数

socket  目 录 socketsocket()bind()connect()listen()accept()send() 和recv()sendto() 和recvfrom()close() 和shutdown()getpeername()gethostname()

2013-12-23 11:13:07

Linux中epoll使用详解(精髓)

epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且

2013-12-23 11:09:49

linux中select()函数分析

Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式

2013-12-23 11:08:05

查看更多

勋章 我的勋章
    暂无奖章