1 amoscykl

尚未进行身份认证

Casablanca!

等级
博文 356
排名 1w+

Ping的工作原理

PING的工作流程我们以下面一个网络为例:有A、B、C、D四台机子,一台路由RA,子网掩码均为255.255.255.0,默认路由为192.168.0.11.在同一网段内在主机A上运行“Ping192.168.0.5”后,都发生了些什么呢?首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168....

2019-04-15 13:41:53

局域网内和局域网间的通信(交换机与路由器)

交换机和路由器区别交换机主要是用于组建局域网,而路由器则是负责让主机连接外网。局域网间通信例子1:PC1与PC2通信时,在PC1电脑中,应用层产生数据交给传输层;传输层进行数据的分段,使数据的大小适合在网络上传递,根据应用层不同软件产生的数据,选择不同协议栈进行封装TCP或UDP,再进行不同服务端口号的封装(例...

2019-04-10 18:54:46

剑指offer:二叉树的下一个结点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。ACC++Solution:classSolution{public:TreeLinkNode*GetNext(TreeLinkNode*pNode){if(pNode==NULL)...

2019-04-06 16:24:53

剑指offer: 丑数

题目描述把只包含质因子2、3和5的数称作丑数(UglyNumber)。例如6、8都是丑数,但14不是,因为它包含质因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。ACC++Solution:每个丑数都是前面的丑数乘以2,3,5得到的,所以此题可以通过动态规划解决!相当于维持三个队列classSolution{public:in...

2019-04-05 19:05:33

剑指offer:二叉搜索树与双向链表

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路:对于二叉搜索树,中序遍历的即是一个有序的序列,所以进行中序遍历从而构造一个有序的链表。classSolution{public:voidinorder(TreeNode*cur,TreeNode*&pre){...

2019-04-04 11:13:38

剑指offer: 按之字形顺序打印二叉树

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解题思路:利用一个双端队列,一个方向标志,当本行是从左往右遍历时,将其子节点按左节点右节点的顺序先后加入到队列头;当本行是从右往左遍历时,将其子节点按右节点左节点的顺序先后加入到队列尾;classSoluti...

2019-04-02 14:39:38

剑指offer:把二叉树打印成多行

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解题思路:二叉树层次遍历,利用一个队列,每层之间用一个NULL分割开,当遇到NULL则代表当前层已遍历完ACC++Solution:classSolution{public:vector<vector<int>>Print(TreeNode*...

2019-04-02 13:35:26

剑指offer: 二叉搜索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路:对于BST的后序序列,最后一个元素即为根节点,根节点的左子树为数组前段,右子树为数组后段;ACC++Solution:classSolution{public:/*对于BST的后序序列,最后一个...

2019-04-02 13:10:53

剑指offer: 二叉搜索树的第K个节点

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如,(5,3,7,2,4,6,8)中,按结点数值大小顺序第三小结点的值为4。解题思路:对于二叉搜索树,中序遍历即使从小到大的排序,同时用一个变量记录,当遍历到第k个的时候就返回。classSolution{public:TreeNode*KthNode(TreeNode*pRoot,in...

2019-04-02 12:57:12

剑指offer: 滑动窗口的最大值

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:{[2,3,4],2,6,2,5,1},{2,[3,4,2],6,2,5,1},{2,3,[4,2,6],2,...

2019-04-02 12:45:52

剑指offer: 机器人的运动范围

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7=18。但是,它不能进入方格(35,38),因为3+5+3+8=19。请问该机器人能够达到多少个格子?解题思路:用一个二维数组记录每...

2019-04-02 12:42:46

剑指offer:最小的k个数

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:使用C++中的mutiset容器(可包含重复元素),multiset是有序的,使用greater<T>,使multiset呈递减趋势。 建堆的时候,默认是大根堆,第三个参数用greater<T>会变成小根堆; ...

2019-03-30 18:16:59

数据库系统原理: 并发控制之悲观锁与乐观锁

1.并发控制在多线程环境下,为了保证线程安全,需要使用并发控制。数据库管理系统中有事务的概念,它是一组操作,并且满足ACID特性。一个事务可以看成一组任务,而任务是由线程驱动的,因此事务也可以并发地执行。并发执行多个事务时,为了保证每个事务都具有ACID特性,也同样需要使用并发控制。...

2019-03-25 09:31:48

数据库系统原理: 封锁 (封锁粒度、封锁类型、封锁协议)

封锁封锁粒度MySQL中提供了两种封锁粒度:行级锁以及表级锁。应该尽量只锁定需要修改的那部分数据,而不是所有的资源。锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高。但是加锁需要消耗资源,锁的各种操作(包括获取锁、释放锁、以及检查锁状态)都会增加系统开销。因此封锁粒度越小,系统开销就越大。在选择封锁粒度时,需要在锁开销和并发程度之间做一个权衡。封锁...

2019-03-24 23:42:24

LeetCode 300.Longest Increasing Subsequence (最长上升子序列)

题目描述:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入:[10,9,2,5,3,7,101,18]输出:4解释:最长的上升子序列是[2,3,7,101],它的长度是4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为O(n2)。进阶:你能将算法的时间复杂度降低到O(nlogn)...

2019-03-20 22:24:18

LeetCode 239.Sliding Window Maximum (滑动窗口最大值)

题目描述:给定一个数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口k内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。示例:输入:nums=[1,3,-1,-3,5,3,6,7],和k=3输出:[3,3,5,5,6,7]解释:滑动窗口的位置最大值---...

2019-03-19 23:04:31

MySQL中键(key)和索引(index)的区别

key和index区别mysql的key和index多少有点令人迷惑,这实际上考察对数据库体系结构的了解的。1.key是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primarykey,uniquekey,foreignkey等。primarykey有两个作用,一是约束作用(constrain...

2019-03-14 15:12:46

为什么建立TCP连接需要三次握手,为什么断开TCP连接需要四次握手,TIME_WAIT状态的意义

为什么建立TCP连接需要三次握手?原因:为了应对网络中存在的延迟的重复数组的问题(已失效的连接请求报文段)例子:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于...

2019-02-19 17:40:32

C/C++ 字节对齐问题

字节对齐的原因    为了提高CPU的存储速度,编译器会对struct和union的存储进行优化,即进行字节对齐。对齐方式    对于struct或union中的struct或者union来说,它们的字节对齐标准就是它的所有成员中字节数最大的数据的字节数。一般情况下C/C++的变量所占用的字节数       char:   1字节;   ...

2019-02-19 11:53:39

C++中static关键字的作用

1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。//a.cchara='A';//globalvariablevoidmsg(){printf("Hello\n");...

2019-02-19 00:22:47
奖章
  • Github
    Github
    绑定github第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!