- 博客(15)
- 资源 (8)
- 收藏
- 关注
转载 TCP三次握手及其背后的缺陷
概述总结一下TCP中3次握手过程,以及其原生的缺陷 引起的SYN Flood的介绍【1】TCP三次握手【2】SYN Flood1、TCP连接建立——三次握手几个概念:【1】seq:序号,占4个字节,范围[0,4284967296],由于TCP是面向字节流的,在一个1个TCP连接中传送字节流中国的每一个字节都按照顺序编号,此外序号是循环使用
2015-08-10 00:26:54 8609 1
转载 阻塞、非阻塞、异步、同步以及select/poll和epoll
针对IO,总是涉及到阻塞、非阻塞、异步、同步以及select/poll和epoll的一些描述,那么这些东西到底是什么,有什么差异?一般来讲一个IO分为两个阶段:等待数据到达把数据从内核空间拷贝到用户空间现在假设一个进程/线程A,试图进行一次IO操作。A发出IO请求,两种情况: 1)立即返回 2)由于数据未准备好,需要等待,让出CPU给别的线程,自
2015-08-06 01:15:47 399
原创 凤巢面试题
/*** 输出字符串中的所有重复子串:* 例如:abcab* 输出: a, b, ab**/ voidgetAllSub(string str){ }
2015-08-28 17:20:05 969
原创 leetcode题解
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool isPalin
2015-08-27 21:16:13 1454
原创 笔试题整理
题1:如果x=2014,下面函数的返回值是()int fun(unsigned int x){ int n=0; while((x+1)) { n++; x=x|(x+1); } return n;}A.20 B.21 C.23 D.25答案: C题2:以下代码的输出是
2015-08-27 02:45:45 4065
原创 leetcode 线性表
class Solution {public: int search(vector& nums, int target) { int n = nums.size(); int first = 0, last = n - 1; while(first <= last){ int mid = (first + last)
2015-08-25 22:36:49 519
转载 序列化/反序列化二叉树
题目设计一个算法能够实现序列化和反序列化一棵二叉树(注意,不是二叉搜索树BST)。这里的序列化指的是将一棵二叉树保存到文件中,反序列化就是从文件中读取二叉树结点值重构原来的二叉树。思路前一篇文章保存二叉搜索树到文件中 解决了保存一棵二叉搜索树到文件中的问题,但是由于本题目的意思是要把一棵二叉树保存到文件中并从文件中读出重构二叉树。因为二叉树不一定是二叉搜索树,所以
2015-08-19 22:54:05 606
原创 leetcode 细节实现题
解法1:class Solution {public: bool isPalindrome(int x) { if(x < 0) return false; int d = 1; while(x / d >= 10) d *= 10; while(x){ int p = x / d;
2015-08-18 23:54:52 285
原创 面试题整理
题1:给出以下定义,下列哪些操作是合法的?12constchar *p1 = “hello”;char*constp2 = “world”;p1++;p1[2] = ‘w’;p2[2] = ‘l’;p2++;答案: Ap1是指向
2015-08-16 02:42:31 1065
原创 leetcode 字符串
class Solution {public: bool isPalindrome(string s) { transform(s.begin(), s.end(), s.begin(), ::tolower); auto first = s.begin(), last = prev(s.end()); while(first < last
2015-08-15 01:21:18 381
原创 leetcode-动态规划
class Solution {public: int minimumTotal(vector>& triangle) { for(int i = triangle.size() - 2; i >= 0; --i){ for(int j = 0; j < i + 1; ++j){ triangle[i][j] +=
2015-08-14 00:06:31 410
原创 leetcode 查找
解法1:直接使用STL:class Solution {public: vector searchRange(vector& nums, int target) { const int l = distance(nums.begin(), lower_bound(nums.begin(), nums.end(), target)); const i
2015-08-12 21:21:45 508
转载 基础知识普及帖:百度搜索引擎的工作流程
从输入关键词,到百度给出搜索结果的过程,往往仅需几毫秒即可完成。百度是如何在浩如烟海的互联网资源中,以如此之快的速度将您的网站内容展现给用户?这背后蕴藏着什么样的工作流程和运算逻辑?事实上,百度搜索引擎的工作并非仅仅如同首页搜索框一样简单。搜索引擎为用户展现的每一条搜索结果,都对应着互联网上的一个页面。每一条搜索结果从产生到被搜索引擎展现给用户,都需要经过四个过程:抓取、过滤、建立索引和输
2015-08-08 00:46:43 598
转载 多线程-锁的类型 && CAS 非阻塞同步
锁的类型根据完成任务所需要的结构不同,一个应用程序可能会使用多种不同类型的锁原语,因此,开发人员必须避免在一个给定任务中混淆这些锁原语,尤其在使用第三方提供的库时需要格外小心。假设在一个应用程序中,资源R依赖于第三方提供的库,并且在该库中资源R使用L型锁作为同步原语。此时,若开发者需要在应用程序中对资源R使用锁原语,则必须也使用L而不是其他类型的锁原语。接下来的部分将介绍不同类型的锁,并详细说
2015-08-05 00:57:39 2756
原创 树中两个结点的最低公共祖先
解法1:分别求根结点到两个结点的路径,求出两条路径的最低公共结点即可struct BinaryTreeNode{ int m_nValue; BinaryTreeNode *m_pLeft; BinaryTreeNode *m_pRight;};bool FindPath(BinaryTreeNode *pRoot, BinaryTreeNode *pNode, list &pat
2015-08-01 18:37:30 412
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人