自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Steve Sun的专栏

撸呀么撸代码~

  • 博客(249)
  • 资源 (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

转载 轻松搞定面试中的二叉树题目

版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树

2015-07-29 00:54:42 495

原创 c++题目整理

题1: 题2: 题3:以下程序的输出是class Base { public: Base(int j): i(j) {} virtual~Base() {} void func1() { i *= 10; func2(); } int getVa

2015-07-18 18:29:01 2976

转载 linux下进程间通信的几种主要方式简介

linux下进程间通信的几种主要手段简介:管道(Pipe)及有名管道( mkpipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix

2015-07-05 21:35:05 1332

转载 malloc与new的区别

1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于

2015-05-04 23:43:53 422

原创 各种排序算法

快速排序:void Qsort(int a[], int low, int high){ if(low <= high) return; int first = low, last = high; int key = a[first]; while(first < last){ while(first = key) last--; a[first] = a[last]

2015-04-06 17:10:49 540

原创 最长公共连续串问题

#include #include using namespace std;int a[100][100];int getSubStringLen(string query, string text){ int max = 0; int m = query.length(), n = text.length(); for(int i = 0; i < m; ++i){ for(

2015-04-02 14:43:08 461

原创 反转句子

加句子反转, 例如将nice to meet you 反转成为 you meet to nicevoid reverse(char *p, char *q){ while(p < q){ char tmp = *p; *p++ = *q; *q-- = tmp; }}char* reverseSentence(char *s){ char *p = s; //指向单词的

2015-04-02 14:16:44 2465

原创 最大递增子序列LIS

1、一串数据的最大递增序列,输出个数例如 4,2, 6,3, 1,5,最大递增序列为, 2,3, 5,输出3#include using namespace std;#define MAXN 100int list[MAXN], dp[MAXN];int max(int a, int b){ return a > b ? a : b;}int main(){ in

2015-04-02 00:27:47 899

原创 反转单链表

struct Node{ int data; struct Node *next;};Node* ReverseList(Node *head){ Node *pre, *cur, *next; if(head == NULL || head->next == NULL) return head; cur = head->next; pre = head; pre->nex

2015-03-24 20:49:44 762

转载 TCP/IP三次握手与四次挥手

一、TCP报文格式        TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1 TCP报文格式        上图中有几个字段需要重点介绍下:        (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。        (2)确认序号:Ack序号,占32位,只有AC

2015-03-08 14:41:37 707

原创 腾讯2016研发工程师编程题

1、生成格雷码在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。给定一个整数n,请返回n位的格雷码,顺序为从0开始。测试样例:1返回:["0","1"]解法1:class GrayCode {public: vector getGray(int n) {

2017-06-21 23:55:10 565

原创 腾讯2017暑期实习生编程题

小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。你能帮帮小Q吗?输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述:对于每组数据,输出移位后的字符串。输入例子:AkleBiCeilD输出例子:

2017-05-22 00:01:14 708

原创 shell脚本学习笔记

第二章:$cat > nuserswho | wc -l^Dchmod +x nusers./nusers

2017-02-11 15:48:02 580

转载 sed命令详解

sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。使用语法sed命令的使用规则是这样的:

2017-02-09 15:27:35 638

转载 [Shell学习笔记] 切分文件名提取文件扩展名或提取文件名

有些脚本要根据文件名进行各种处理,有时候需要保留文件名抛弃文件后缀,也有时候需要文件后缀不要文件名,这类提取文件部分的操作使用shell的内建功能就能实现。需要用到的几个操作符有:%、%%、#、##。从右向左匹配 :% 和 %% 操作符的示例#!/bin/bash#提取文件名,删除后缀。file_name="text.gif"name=${file_name%.*}echo

2016-10-09 17:09:10 4486

原创 shell学习记录

#!/bin/sh变量名和等号之间不能有空格:your_name="runoob.com"使用一个定义过的变量,只要在变量名前面加美元符号即可:your_name="qinjx"echo $your_nameecho ${your_name}重新定义变量:my_name="sunteng"echo $my_namemy_name=123echo

2016-08-15 20:34:31 386

转载 nohup命令

在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/local/mysql/bin/mysqld_safe –user=mysql &。可是有很多程序并不想mysqld一样,这样我们就需要nohup命令,怎样使用nohup命令呢?这里讲解nohup命令的一些用法。nohup /root/

2016-08-12 17:13:55 1389

转载 GDB调试

GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能:启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。可

2015-12-19 23:30:35 1496

原创 tx电面记录

三次握手四次挥手gdb调试IOCParp icmp网络通信过程linux命令异步同步io

2015-12-16 20:52:55 1344

原创 凤巢面试题

/*** 输出字符串中的所有重复子串:* 例如: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 1453

原创 笔试题整理

题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 4063

原创 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

转载 解决哈希(HASH)冲突的主要方法

虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技术中的两个重要问题。1、开放定址法     用开放定址法解决冲突的做法是:当冲突发生时,

2015-07-31 23:37:17 48788 2

原创 求二叉树中和为某一值的路径

struct BinaryTreeNode{ int m_nValue; BinaryTreeNode *m_pLeft; BinaryTreeNode *m_pRight;};void FindPath(BinaryTreeNode *pRoot, int expectedSum, vector &path, int ¤tSum){ if(!pRoot) return; cu

2015-07-30 22:31:05 527

原创 判断二叉树是否是平衡树

解法1:int TreeDepth(BinaryTreeNode* pRoot){ if(pRoot == NULL) return 0; int nLeft = TreeDepth(pRoot->m_pLeft); int nRight = TreeDepth(pRoot->m_pRight); return (nLeft > nRigh

2015-07-28 22:59:58 345

原创 汉诺塔问题

H(1) = 1H(n) = 2 * H(n - 1) + 1f = 2^n + 1代码:#includevoid hanoi(int n,char A,char B,char C){ if(n==1) { printf("Move disk %d from %c to %c\n",n,A,C); } else { hanoi(n-1,A,C,B); pr

2015-07-28 01:47:20 344

转载 数据库隔离级别详解

事务(transaction)是数据库管理系统的执行单位,可以是一个数据库操作(如Select操作)或者是一组操作序列。事务ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。原子性:保证事务中的所有操作全部执行或全部不执行。例如执行转账事务,要么转账成功,要么失败。成功,则金额从转出帐户转入到目的帐

2015-07-27 19:44:55 6333

原创 求二叉树中节点的最大距离

编程之美中的题目,但是书上的代码递归太复杂,整理了个优化的解法:思路: 可以转换为求二叉树中任意一个节点左右子树的高度和struct Node{ Node *pLeft; Node *pRight;};int maxLen = 0;int treeDepth(Node *pRoot, &maxLen){ if(pRoot == NULL) return -1; in

2015-07-26 20:15:15 397

leetcode C++题解

leetcode 最新C++题解

2015-07-22

C和linux书籍

C和linux书籍

2015-06-11

购票软件源代码2

购票软件源代码2

2013-12-18

购票软件源代码1

购票软件源代码1

2013-12-18

计算机统考真题解析

计算机统考真题解析

2013-11-24

C++实现多线程通信

C++实现多线程通信

2013-11-17

火车票抢票软件

火车票抢票软件

2013-11-14

MFC编写的淘宝抢拍软件

MFC编写的淘宝抢拍软件,用于自动抢拍秒杀淘宝商品。直接多任务多线程,付上了使用文档和软件运行日志

2013-08-30

空空如也

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

TA关注的人

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