自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 资源 (3)
  • 收藏
  • 关注

原创 RDMA传输相关代码的问题整理

1、尝试安装softiWARP进行软件模拟RDMA传输,在没有硬件网卡的前提下进行实验。编译的时候遇到了问题。直接编译会报错,“undefined reference to xxx”,意味着缺少链接库文件,所以加上-lrdmacm选项,但是依然报错。根据提示,发现少了个libibverbs.so动态库的链接,所以再加上-libverbs即可。2、编译成功,运行时出现segmentfault,仔细比...

2018-02-26 17:15:38 4819 1

原创 RDMA传输中的SEND/RECEIVE和READ/WRITE

最近在做RDMA传输相关的项目,现分析和对比传统TCP/IP通信和RDMA传输在数据交互中的不同之处。概念解读    传统的TCP/IP通信,发送和接收数据的过程中,都是在源端应用层数据从上向下逐层拷贝封装,目的端从下向上拷贝和解封装,所以比较慢,而且需要CPU参与的次数很多。RDMA通信过程中,发送和接收,读/写操作中,都是RNIC直接和参与数据传输的已经注册过的内存区域直接进行数据传输,速度快...

2018-02-26 16:37:52 6614

原创 RDMA over Commodity Ethernet at Scale (II)

3.  DSCP-BASEDPFC在本小节中,我们测试了原始的基于VLAN的PFC面对的问题,并提出了基于DSCP的PFC方案。基于VLAN的PFC暂停帧中,VLAN TAG中包含了数据包优先级和VID,但是优先级和VID在部署中引发了两个严重的问题,因此提出了基于DSCP的PFC方案。暂停帧是一个二层帧,并没有VLAN标签,数据包的VLAN标签有四部分,TPID被固定为0x8100,DE

2018-02-01 15:30:34 803

翻译 RDMA over Commodity Ethernet at Scale (I)

Abstract在过去一年半的时间,我们已经使用RoCEv2来支持一些微软高可靠性、延迟敏感的服务。本篇论文讲述了在此过程中遇到的挑战以及解决方案。为了把RoCEv2扩展到VLAN之外,我们设计了一个基于DSCP的优先级流量控制机制(PFC)来确保大规模部署。我们已经解决了很多安全挑战,比如PFC-减少死锁、RDMA传输livelock以及NIC PFC暂停帧风暴问题。我们也建立了监控和管理系

2018-01-31 17:22:44 1300

原创 TCP/IP的TCP socket通信过程

传统的TCP/IP通信过程依赖于socket,位于应用层和传输层之间,使得应用程序可以进行通信。相当于港口城市的码头,使得城市之间可以进行货物流通。服务器和客户端各有不同的通信流程。一、服务器    1、建立连接阶段调用socket(),分配文件描述符,即监听套接字调用bind(),将套接字与本地IP地址和端口绑定调用listen(),监听特定端口,socket()创建的套接字是主动的,调用lis...

2017-12-27 20:36:04 18153 1

原创 极限学习机应用于入侵检测(二)

训练样本对机器学习算法效果的影响   机器学习算法的训练过程本质是获得一种分类器或者回归方程,对于分类器,会以不同的形式进行表示,比如朴素贝叶斯算法的概率、神经网络的权重、隐藏层层数、神经元个数、决策树等,而回归方程就是得到输入和输出的线性或者非线性关系,根据输入可以得到输出。ELM的训练过程本质是获得β矩阵,和其它机器学习算法类似,训练过程是获得一种分类器,以矩阵的形式进行存储。对于ELM的

2017-11-14 20:59:22 769

原创 极限学习机应用于入侵检测(一)

引言    最近读了一篇2014年CCS的论文,Using Extreme Learning Machine for Intrusion Detection in a Big Data Environment,并对其内容进行了总结和扩展。基本知识     极限学习机(extreme learning machine)ELM是一种简单易用、有效的单隐层前馈神经网络SLFNs学习算

2017-11-04 20:36:04 8585 3

原创 文件描述符

最近在做TCP/IP传输相关项目,对于socket文件描述符的取值范围和分配进行了探索。在系统头文件posix_types.h中定义了文件描述符的最大数量1024,意味着文件描述符的取值范围是0~1023,并且0、1、2已经被分配了,0表示标准输入,1表示标准输出,2表示标准错误输出,而通过socket()分配的socket文件描述符的取值范围是从3~1023的。普通文件描述符和socket文...

2019-01-08 13:25:50 1929

原创 编写基于gRPC的C/S通信模型

1、编写.proto文件包含:1)定义service,用service{}包起来service ServiceName{ rpc funcname1(Request) returns (Reponse){} rpc funcname2(Request) returns (Reponse){}}2)message Request{}3)message Response{}2、...

2018-06-22 20:13:28 888

原创 web-app开发——简单的HTTP服务器

go本身可以直接实现HTTP服务器,而不依赖于nginx、Apache等服务器,直接使用包net/http中的函数即可实现,代码如下:package mainimport ( "fmt" "log" "net/http")func helloWorld(w http.ResponseWriter, r *http.Request) { r.ParseForm() //解析参数,默...

2018-06-19 14:51:05 937

原创 Go语言——struct、type、func的综合用法

最近在学golang语言,对于struct、type、func的学习进行了简单的编程练习,代码如下package mainimport ( "fmt")const ( WHITE = iota BLACK BLUE RED YELLOW)//Color 声明Color为byte的别名type Color byte //Box type boxtype Box s...

2018-06-15 19:48:08 10005

原创 Set Matrix Zeroes

需求:Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in-place.Example 1:Input: [  [1,1,1],  [1,0,1],  [1,1,1]]Output: [  [1,0,1],  [0,0,0],  [1,0,1]]分析:1、...

2018-06-08 10:15:02 154

原创 jump games I/II

需求I:Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position.Determine if yo...

2018-06-07 17:13:27 141

原创 Spiral Matrix I/II

需求:Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.Example 1:Input:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]Output: [1,2,3,6,9,8,7,4,5]分析:...

2018-06-07 14:26:07 151

原创 N-Queens I/II

需求:n皇后问题,有一个n*n的棋盘,有n个皇后,要保证每个皇后不能在同一行、同一列、同一对角线,这样才不会出现冲突,求解n皇后共有多少种放置方式。分析:1、创建n*n的char型二维数组,初始化为'.',表示没有放置皇后。2、因为皇后不能在同一行,所以将皇后i放到行i,逐行确定每个皇后的位置。假设,现在要确定皇后num(num的范围是0~n-1)的位置,如果num==n,那么说明已经找到了一个可...

2018-06-07 10:30:27 437

原创 Group Anagrams

需求:Given an array of strings, group anagrams together.Example:Input: ["eat", "tea", "tan", "ate", "nat", "bat"],Output:[ ["ate","eat","tea"], ["nat",&

2018-05-21 22:14:03 340

原创 排序算法--java实现

之前总结过常见排序算法的时间复杂度、空间复杂度、是否稳定等特性,现将代码补上。代码:/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the t...

2018-05-21 21:00:28 166

原创 String Compression

需求:给定一个字符数组chars,由若干个字符组成,现对其进行简化,比如"aaabbcc",将其转化成"a3b2c2",如果字符个数是1,那么不需要进行简化。要求in-place,即直接修改原始字符数组。分析:1)特殊情况处理:如果字符数组是null,那么抛出参数异常;如果字符数组长度是0或者1,那么无需进行简化,直接返回数组长度即可。2)定义三个变量,字符变量ch,存储出现的字符,整型变量num...

2018-05-19 19:51:02 262

原创 nginx的epoll

设想一下,有100万个客户端和服务器的一个进程建立TCP连接,每次只有几十个或者几百个连接是活跃的,那么我们只需要处理这几十个或者几百个连接即可,在poll和select中,服务器进程每次都把这100万个套接字传给操作系统(这是用户态内存到内核态内存的大量复制),让操作系统内核去查询这些套接字上是否有事件发生,轮询完后,再将套接字复制到用户态,让服务器应用程序轮询处理已发生的网络事件,这一过程资源...

2018-05-07 11:14:47 197

原创 动态规划求解路径问题

动态规划求解的两个条件:    1)最优解问题    2)大问题可以拆分成小问题,大问题的最优解包含小问题的最优解,将小问题的最优解保存起来,在求大问题最优解的时候无需重新求解,直接拿来用即可。具体问题需求一:    给定m*n矩阵,从左上角出发,到右下角,每次只能向右走或者向下走,求共有多少路径?分析:    假设路径数是f(m, n),那么第一步如果向右走,那么有f(m, n-1)种走法,如果...

2018-04-26 22:05:22 1818

原创 递归求解复杂的枚举问题

一、问题概述    枚举就是列举出所有的情况。数据量较小时,比较容易列举,但是随着数据量增大,如果依然一一列举,可能会出现遗漏的情况,导致出错,这时候就可以考虑使用递归的方式进行,寻找递推关系。比如先获得数据规模是n-1的所有情况,那么求n就只需要在n-1的基础上做一些修改即可,这样就大大简化了问题,但是如果递归深度较大,可能会产生内存溢出的问题。    对于枚举问题,递归是一个较容易想到的解题思...

2018-04-25 14:47:42 713

原创 TCP拥塞控制

1、TCP拥塞控制的意义早期开发的TCP在启动一个连接的时会向网络发送大量数据包,可能会导致路由器或链路负载过量,产生网络拥塞,使得TCP连接的吞吐量急剧下降。由于TCP源端无法知道网络资源当前的使用情况,因此新建立的TCP连接不能一开始就发送大量数据,只能逐步增加每次发送的数据量,以避免上述现象的发生。网络提供的资源包括缓存空间、链路带宽容量和中间节点的处理能力,由于互联网的设计机制导致其缺乏“...

2018-04-06 22:24:57 857

原创 多线程安全--生产者和消费者

    在多线程安全中,使用较多的例子是生产者和消费者模型。    在这个模型中,生产者和消费者是两个独立的线程,但是他们操作的资源的共享的,生产者生产产品,消费者消费产品。假设资源用一个对象来抽象,该对象的set()和out()方法对应生产和消费,那么为了保证多线程安全,每次只能有一个生产者线程生产产品,即只有一个生产者线程可以调用set()函数,同样,每次只能有一个消费者消费产品,即只有一个消...

2018-03-20 22:04:43 506

原创 单例设计模式--java实现

单例设计模式是一种常见的软件设计模式,通过这种模式,可以保证系统中,该类只有一个实例对象。对于系统中的某些类来说,只有一个实例很重要,比如一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务。为了保证一个类只有一个实例对象,需要满足以下三个条件:    1、外界无法创建该类对象,所以该类对象的构造函数是私有的,外界无法使用。    2、既然外界无法创建该类对象,并且要保证该类只有一个实例对...

2018-03-15 20:18:49 198

原创 java--多种排序算法

基本知识1、时间频度一个算法中的语句执行次数叫做语句频度或时间频度,用T(n)表示。理论上无法计算一个算法执行所需的时间,必须上机测试才能知道,但是我们不可能也没必要对每个算法都进行上机测试,我们只需要知道哪个算法运行时间长,哪个算法运行时间短即可。算法花费的时间和算法中语句执行次数成正比,哪个算法中语句执行次数多,花费时间就长,所以我们只需要知道语句执行次数就可以知道算法大致的执行时间。2、时间...

2018-03-10 19:32:04 214

原创 数组的第k大值

需求:求数组nums中的第k大数,即从大到小排列的第k个数字。分析:1、思路一借助最小堆求解,创建一个大小是k的最小堆(优先队列),遍历数组,当最小堆大小小于k时,存储数组元素,否则,比较数组元素和队列头元素,如果比队列头元素大,就替换队列头元素,否则继续遍历,最终返回队列头部元素。2、思路二借助快排的思想,每次排序,都能将基准数归位,假设归位角标是i,将基准数和第k大的数的位置进行比较,如果相同...

2018-02-19 23:42:08 519

原创 删除链表中的重复节点

需求:给定一个链表,将其中重复的节点删除,不保留重复的节点。分析:1、思路一  1)创建map集合,遍历链表节点,存储节点值和其出现的次数  2)遍历map集合,将其中出现次数是1的节点连起来,输出头结点代码:import java.util.*;//链表节点类class ListNode{ int val; ListNode next; ListNode(int val){ t...

2018-02-18 22:38:52 378

原创 动态规划or贪心算法--剪绳子/切割杆

需求一: 剪绳子,将长度为n的绳子剪成若干段,求各段长度乘积的最大值分析: 1、动态规划    设f(n)代表长度为n的绳子剪成若干段的最大乘积,如果第一刀下去,第一段长度是i,那么剩下的就需要剪n-i,那么f(n)=max{f(i)f(n-i)}。而f(n)的最优解对应着f(i)和f(n-i)的最优解,假如f(i)不是最优解,那么其最优解和f(n-i)乘积肯定大于f(n)的最优解,...

2018-02-12 12:06:41 9280 4

原创 二进制中的1

需求:求整数的二进制形式中1的个数。分析:求整数二进制形式中1的个数1、方法一    如果该数是0,那么直接返回0;如果不是0,就循环和1进行按位与运算,如果结果是1,说明最低位是1,那么1的个数加一,将该数右移一位,循环此过程,每次都需要判断该数是否为0,如果是0,那么就直接返回1的个数,否则继续执行。    该方法适用于正数的求解,因为正数的右移是在高位添0,不会引入多余的1。不适用于负数,因...

2018-02-11 17:05:00 681

原创 堆栈和队列的相互实现

需求:堆栈特点是先进后出,队列特点是先进先出。二者有一定联系,可以使用两个队列实现堆栈,也可以用两个堆栈实现队列。分析: 1、两个堆栈实现队列(有两个堆栈stack1,stack2) 添加:添加到stack1中 删除队列头部元素:如果两个堆栈都是空的,那么抛出异常。如果stack2非空,将栈顶pop,如果stack2是空的,判断stack1大小是否是1,如果是1,那么直

2018-02-03 22:45:01 2368

原创 java保留小数点后两位

DecimalFormatDecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地

2018-02-02 16:59:14 1694

原创 java实现死锁

死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。在多线程中,如果同步中嵌套同步,即多个线程互相拥有对方需要的资源而不释放,就会造成所有的线程都无法执行。产生是原因有四个:1)竞争资源引起进程死锁 2)可剥夺资源和不可剥夺资源 3

2018-01-16 19:12:20 1267

原创 java实现文本转换器

需求和分析  用java实现文本转换器  这是一个TCP连接。客户端将文本发送到服务端,服务端会将文本转换成大写形式,并返回给客户端。当客户端发送“over”的时候,就关闭客户端和服务端。  分析:  1、客户端  客户端从键盘录入数据,然后发送到服务端。这个过程中,源是键盘录入,目的是网络输出流,并且都是字符,因此可以使用字符流。为了提高效率,加入缓冲区技术。如果键盘录入的是

2018-01-06 21:35:20 1362

原创 删除排序数组中的重复数字II

需求:删除排序数组中重复的数字,允许重复两次。分析:和删除排序数组中的重复数字I类似,也是需要两个指针,一个用来遍历数组,一个用来记录有效的个数1、当数组是null时,抛出异常2、当数组长度是0,那么返回03、初始化变量index=1,用来表示有效数字的个数。从前向后遍历数组,如果nums[i]!=nums[i-1],和前面的值不相同,那么nums[index++]

2018-01-04 21:48:40 249

原创 判断字符串是否没有重复字符

需求:实现一个算法确定字符串中的字符是否均唯一出现。给出"abc",返回 true给出"aab",返回 false分析:思路一:判断字符串是否有重复字符,类似于,删除数组中重复的数字1、将字符串转成字符数组2、使用Arrays.sort(char[])对字符数组进行排序,然后,逐个遍历整个排序后的数组,如果不是最后一个字符,并且如果当前字符和其后面的字符

2018-01-04 21:28:33 9931

原创 first missing positive

需求:Given an unsorted integer array, find the first missing positive integer.ExampleGiven [1,2,0] return 3,and [3,4,-1,1] return 2.分析:比较简单的思路是对数组进行排序,然后遍历其中的元素,找到相邻元素差值大于1的两数,说明这两数之间有丢失的整数,求该区间中丢失的最小正整...

2017-12-29 10:59:36 123

原创 二叉搜索树

需求:    给定一个二叉树的后序遍历序列,用整型数组存储序列,判断该二叉树是否是一个二叉树搜索树?分析:    二叉搜索树满足父节点的值大于其左子树的所有节点值,而小于右子树的所有节点值,就从这个特性入手。    对于二叉树的后序遍历序列,最后一个数是该二叉树的根,根据大小关系可以将前面的数字部分分为两部分,一个是左子树,其值都小于根,一个是右子树,其值都大于根。对左右子树,

2017-12-11 16:27:05 124

原创 平衡二叉树

需求:    给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 分析:    平衡二叉树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二

2017-12-11 11:10:06 172

原创 二叉树的逐层遍历--java实现

需求一:    逐层遍历二叉树并输出,每一层占一行。分析:思路一:    1、逐层遍历二叉树也是BFS遍历二叉树,因此数据结构选择队列。    2、需要用两个变量存储当前层待遍历的节点个数以及下一行的节点个数。    3、将头结点加入队列尾,当队列不是空的,就移除队列头部元素并输出,并将其儿子节点加入队列尾,当前层待遍历节点个数减一,更新下一层节点个数。    4、当当

2017-12-10 17:01:02 1745

原创 搜索旋转数组

需求:    假设有一个排序的按未知的旋转轴旋转的数组(比如,0 1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。假设,数组中没有重复数字。分析:    按照二分法进行求解。定义min、max、mid分别代表开始、结束、中间元素角标,和传统的二分法不同的是,每次求完mid

2017-12-08 20:53:53 161

java大数相减代码

java实现大数相减,在不使用BigInteger工具的前提下实现大数相减

2017-11-29

java大数相加代码

java实现大数相加,在不使用BigInteger工具的前提下实现大数相加

2017-11-29

java大数相乘代码

java实现大数相乘,在不使用BigInteger工具方法的前提下进行大数相乘运算。

2017-11-29

空空如也

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

TA关注的人

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