- 博客(352)
- 资源 (8)
- 收藏
- 关注
转载 TCP 传输层面试中常问的问题汇总(你所不知道的传输层)
TCP 传输层面试中常问的问题汇总1. 在开始传输前,需要进行三次握手建立链接2. 可靠性:在传输过程中,通信双方的协议模块继续进行通信3. 通信结束后,通信双方都会使用改进的三次握手来关闭链接如同我们自定义的应用层协议一样:协议只是给出了一组规范,规定我们应该怎么样(按什么规则)保存数据。在计算机间传输的永远都是二进制字节码(对于传输层,可以理解为传输的始终是下层的IP数据包),是计算机中的程序通过对这些字节码进行逻辑分析、判断,来控制程序完成差错控制等功能。至于解析这些字节码的程序,则可
2015-09-16 15:59:46 3707
原创 [LeetCode-206] Reverse Linked List(链表反转)
Reverse a singly linked list.链表反转详细分析代码如下:/*无头结点*/struct ListNode* reverseList(struct ListNode* head) { if((head == NULL) || (head->next==NULL)) //链表为空,或只有一个结点(无需反转),直接返回 return head;
2015-09-16 10:54:53 550
原创 [LeetCode-29] Divide Two Integers(两个整数相除,不用乘除取余算术符)
Divide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.采用减法代替除法 代码如下:/*方法一、用减法代替除法*//**dividend: 被除数divisor: 除数**/int divide(int dividend, in
2015-09-15 19:01:09 3710
原创 [LeetCode-190] Reverse Bits(反转位)
Reverse bits of a given 32 bits unsigned integer.For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110
2015-09-15 14:42:25 632
原创 OJ 系列之从M个不同字符中任取N个字符的所有组合
题目如下: #include <string.h>#include <stdio.h>#include <stdlib.h>#define MAXLENGTH 10000//组合问题(从M个不同字符中任取N个字符的所有组合) void combine(char *source,char *result,int n){ if (1==n) { while (
2015-09-15 12:14:34 1689
原创 大整数相乘
处理大整数相乘的办法很多,我这里贴一种最简单实现,通过字符数组去接收和输入大整数。题目要求如下:代码如下:// 2015.9.15 华为.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdio.h>#include <string.h>#define MAXLENGTH 1024#define M 100 /*输出不超过100位大数乘积
2015-09-15 12:09:11 671
原创 [LeetCode-191] Number of 1 Bits(判断一个整数中有多少个1)
方法一:【分析】判断一个整数最右边是不是1,我们可以把输入的整数和1相&,判断相&之后的结果,判断是不是为1,然后继续移位判断其它位方法二:【分析】上述的方法只适用于正数,当输入的数为一个负数的时候,比如按照方法一分析得,0x8000-0000,当右移一位变成0x0400-0000,其实不是这样的,因为移位前是一个负数,所以我们要保证移位后的数也是一个负数,因此移位后改数变为0xC000-0000.
2015-09-14 20:42:43 2677 2
原创 [LeetCode-231] Power of Two(判断一个数是不是2的若干次幂)
Given an integ这里写代码片er, write a function to determine if it is a power of two.【分析】如果一个数是2的若干次幂,那么二进制表示最高位均为1,其他位均为0,该位减去1之后的数全为1,所以将两个数进行与的操作,最终结果为0,说明这个数2的若干次幂。代码如下:bool isPowerOfTwo(int n){ if(n<
2015-09-14 19:59:45 1087
原创 C语言关键词volatile用法。
1、引言volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如: volatile int i=10; int j = i; ... int k = i; 2、vo
2015-09-14 17:10:35 7213
原创 字符溢出分析(数据类型范围以及‘\0’重新认识)
#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ char a[1000]; int i; for (i=0;i<1000;i++) { a[i] = -1-i; } cout<<strlen(a)<<endl; sys
2015-09-14 17:00:38 1035
原创 [LeetCode-203] Remove Linked List Elements(链表节点删除)
Remove all elements from a linked list of integers that have value val.Example Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6 Return: 1 –> 2 –> 3 –> 4 –> 5【分析】头结点放到最后来删除,先保存要删除节点前面一个节点,然后再删除。 代码如下:
2015-09-14 10:54:54 735
原创 [LeetCode-88] Merge Sorted Array(合并有序数组)
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note: You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional
2015-09-13 22:08:22 441
原创 [LeetCode-2] Add Two Numbers(链表数据之和)
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linke
2015-09-13 21:28:33 459
原创 [LeetCode-21] Merge Two Sorted Lists(合并两个有序链表)
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.【分析】合并两个有序链表到一个链表里代码:/** * Definition for singly-linked lis
2015-09-12 10:04:49 582
原创 [LeetCode-19] Remove Nth Node From End of List(删除倒数第N个节点)
Given a linked list, remove the nth node from the end of list and return its head.For example,Given linked list: 1->2->3->4->5, and n = 2.After removing the second node from the end, the linked list be
2015-09-11 10:21:05 548
原创 OJ 系列之求两个字符串最大的公共字串的长度
求两个字符串最大的公共字串的长度 1、暴力解法#include <stdio.h>#include <string.h>#include <stdlib.h>/*大写转化成小写*/void large_to_little(char* strSrc){ if(!strSrc) return; while ( *strSrc != '\0') {
2015-09-10 17:13:49 1263
原创 [LeetCode-13] Roman to Integer(罗马数字转成阿拉伯数字)
不难发现,罗马数字是没有禁止,我建议大家可以先试着从I数到C,这样便对罗马数字有个了解,然后发现其为纯粹叠加而成的,所以用户输入一个数后,我们可以来遍历这个数,用sum来总计和,比较pre (s[i-1]) 和 cur (s[i]),如果,cur 比 pre 小的话,直接相加,如果 cur 比 pre 大的话,则将总和sum减去pre这个地方数的两倍,同时加上 cur 就相当于后边的数比左边的数大,则用右边的数减左边
2015-09-10 09:02:39 691
原创 数组指针、指针数组、地址的强制转换内存布局
1、指针数组首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。2、数组指针首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。
2015-09-09 20:33:36 3286
原创 [LeetCode-14] Longest Common Prefix(多个字符串公共字符子串查找)
【分析】找出输入的多个字符串的公有前序,简单的逻辑遍历查找就好。算法流程:1、判断输入的字符串数量,小于2时候做出相应返回。2、获取最短字符串的长度。3、设定标记 same_flag,控制跳出循环,与长度返回的长度 index以及存储好的公共前序。4、设置字符串结束标志位。
2015-09-09 16:37:44 764
原创 数据结构学习之 union 共用体(union 到底有什么用?)
1、引言共用体常用来节省内存,特别是一些嵌入式编程,内存是非常宝贵的! 共用体也常用于操作系统数据结构或硬件数据结构! union 在操作系统底层的代码中用的比较多,因为它在内存共享布局上方便且直观。所以网络编程,协议分析,内核代码上有一些用到 union 都比较好懂,简化了设计。共用体(union)是一种数据格式,它能够存储不同类型的数据,但是只能同时存储其中的一种类型。主要用处分以下3个方面
2015-09-08 16:11:33 8896 1
原创 [LeetCode-9] Palindrome Number(回文数)
Determine whether an integer is a palindrome. Do this without extra space.Could negative integers be palindromes? (ie, -1)If you are thinking of converting the integer to string, note the restriction o
2015-09-08 09:01:48 601
原创 TCP 握手和挥手图解(有限状态机)
TCP 这段看过好几遍,老是记不住,没办法找工作涉及到网络编程这块,各种问 TCP 。今天好好整理一下握手和挥手过程。献给跟我一样忙碌,找工作的童鞋,欢迎大神批评指正。本文主要是关于TCP3次握手,以及4次挥手过程分析。另外关于TCP有限状态机分析。
2015-09-07 22:12:28 30830 5
原创 TCP的流量控制和拥塞控制 (小结)
1、TCP的流量控制1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。2、TCP的拥塞控制1. 拥塞:即对资源的需求超过了可用的资源。若网络中许多资源同时供应不足,网络的性能就要明显变坏,整个网络的吞吐量随之负荷的增大而下降。 拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路
2015-09-07 16:38:29 1759 1
原创 [LeetCode-8] String to Integer (atoi,字符串转成整数)
【分析】问题:将字符串转换成数字分析:感觉题目不难,但是细节很多,容易想不到1.数字前面有空格 如s=“ 123456”2.数字前出现了不必要或多于的字符导致数字认证错误,输出0 如s=“ b1234” ,s=“ ++1233” , s=“ +-1121”3.数字中出现了不必要的字符,返回字符前的数字 如s=“ 12a12” , s=“ 123 123”4.数字越界 超过了范围(-
2015-09-07 15:41:25 563
原创 [LeetCode-7] Reverse Integer(反转整数)
Reverse digits of an integer.Example1: x = 123, return 321 Example2: x = -123, return -321click to show spoilers.提交代码的时候,发现需要对边界进行处理,如果出现溢出的情况需要,做return 0;操作。见代码:int reverse(int x) { long long rev
2015-09-06 10:46:09 838
原创 [LeetCode-104] Maximum Depth of Binary Tree(二叉树最大深度)
【分析】递归解法: (1)如果二叉树为空,二叉树的深度为0 (2)如果二叉树不为空,二叉树的深度 = max(左子树深度, 右子树深度) + 1
2015-09-05 14:18:07 709
原创 [Leetcode-263] Ugly Number(丑陋数)
【分析】思路:根据丑陋数的定义,我们将给定数除以2、3、5,直到无法整除,也就是除以2、3、5的余数不再为0时停止。这时如果得到1,说明是所有因子都是2或3或5,如果不是1,则不是丑陋数。
2015-09-05 10:57:39 3140 2
转载 C++ 内存池 -- C++ Memory Pool
这是我翻译的文章,来自 Code Project,原文作者: DanDanger2000. 原文链接: http://www.codeproject.com/cpp/MemoryPool.asphttp://blog.csdn.net/060/article/details/1326025C++ 内存池l 下载示例工程 – 105Kbl
2015-09-04 21:42:36 2726
原创 [LeetCode-237] Delete Node in a Linked List(删除链表中节点)
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, t
2015-09-04 15:30:31 916
转载 tar 压缩与解压命令(汇总)
tar命令详解-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的
2015-09-03 16:45:06 2115
原创 Open Data Plane (ODP) 源码下载(git 服务器搭建)
1、引言GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。2、安装假设你已经有sudo权限的用户账
2015-09-03 16:40:51 1585
原创 dlopen Linux 动态库失败原因与解决办法总结
1、dlopen 动态库失败原因,我碰到主要是以下几点(碰到新问题之后再完善,先打个点) ①动态库位置没有放对地方,dlopen 时候找不到你想操作的动态库 解决办法:放到指定目录。 ②头文件没有包全,有不能识别的函数或者标识符 解决办法:加一条打印信息,程序运行到这里,会输出不能识别标识符。if((handle = dlopen(myso, RTLD_NOW)) == NULL) {
2015-08-27 22:10:15 43402
原创 dpdk l2fwd 应用流程分析
intMAIN(int argc, char **argv){ struct lcore_queue_conf *qconf; struct rte_eth_dev_info dev_info; int ret; uint8_t nb_ports; uint8_t nb_ports_available; uint8_t portid, last_
2015-08-23 16:11:37 7926
原创 Linux 如何生成静态库和动态库
1、引言1、linux下的库 静态库和共享库(动态库),二者的不同点在于代码被载入的时刻不同。 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。 共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。2、库存在的意义 库是别人写好的现有的,成熟的,可以复用的代码,你可以使用但要记得遵守许可协议。 现实中每个程序都要依赖很多基础的底层库,不可能
2015-08-20 23:02:41 3592
原创 算法学习之排序算法(五)(快速排序)
1、算法思想设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。一趟快速排序的算法是: 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)
2015-08-19 21:47:56 933
原创 Linux 网卡驱动学习(九)(层二转发)
1、mac 地址表的自学习过程端口1上的A计算机要与端口2上的B计算机通信时,A发到交换机上,交换机收到信息后,交换机先记录发端口1所对应的a的mac地址并记录在自己的mac表中,然后再查收方B的mac是否在表中,若在mac地址表中,直接转发给B所对应的端口2转发下去,如果不在mac表中,则向所有端口广播出去,当B收到后会回应交换机转到A,在回应这个过程中,交换机就会把B的mac地址记录在mac表中
2015-08-19 21:30:48 1657
原创 Linux 网卡驱动学习(八)(基于 MAC 地址转发数据)
1、构建MAC地址表交换机技术在转发数据前必须知道它的每一个端口所连接的主机的MAC地址,构建出一个MAC地址表。当交换机从某个端口收到数据帧后,读取数据帧中封装的目的地MAC地址信息,然后查阅事先构建的MAC地址表,找出和目的地地址相对应的端口,从该端口把数据转发出去,其他端口则不受影响,这样避免了与其它端口上的数据发生碰撞。因此构建MAC地址表是交换机的首要工作。下面举例说明交换机建立地址表的过
2015-08-17 22:17:51 3686
原创 Linux 网卡驱动学习(七)(MAC 与 IP)
IP 地址是服务商给你的,MAC地址是你的网卡物理地址。1、MAC 地址在OSI(Open System Interconnection,开放系统互连)7层网络协议(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层)参考模型中,第二层为数据链路层(Data Link)。它包含两个子层,上一层是逻辑链路控制(LLC:Logical Link Control),下一层即是我们前面所提到的MAC
2015-08-17 22:02:55 3896 1
原创 算法学习之排序算法(四)(希尔排序)
希尔排序的基本思想是把记录按步长 gap 分组,对每组记录采用直接插入排序方法进行排序。随着步长逐渐减小,所分成的组包含的记录越来越多,当步长的值减小到 1 时,整个数据合成为一组,构成一组有序记录,则完成排序。
2015-08-15 19:14:12 1021
GP接口函数描述和入参解析
2022-05-04
Linux 设备模型之kobject
2015-06-08
字符设备LED驱动程序
2015-04-14
Windows下基于socket多线程并发通信的实现
2015-04-07
采温显示存储报警模块
2013-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人