feiqiangs的专栏

feiqiangs的学习心得

dpdk 在VMware 中的安装部署

dpdk简介 dpdk 是intel提供的提升数据面报文处理速率的应用程序开发包,它只要是利用一下几个特点优化报文处理过程,从而加快报文处理速度: 1、用大页缓存支持来提高内存访问速率。 2、利用UIO支持,提供应用空间下驱动程序的支持,也就是说驱动程序运行在用户空间的,减少了报文在用户空间和应用...

2016-11-20 17:33:32

阅读数 2716

评论数 4

从大小为N的样本集中随机采集不同的K个样本

这类为题可以抽象为随机生成K个 1~N之间不同的整数。 解决思路: a,选中第1个元素,将其与n个元素中的任意一个交换(包括第1个元素自己)。这时排序后的第1个元素已经确定。 b,选中第2个元素,将其与n-1个元素中作任意一个交换(包括第2个元素自己)。 c,重复上面步骤K次 实现代码:...

2016-10-28 18:07:37

阅读数 651

评论数 0

归并排序的递归和非递归实现

归并排序是一个时间复杂度为O(nlogn)的算法,它可以由递归和非递归两种方式实现。 递归: #include using namespace std; void combine(int *nums,int l,int m,int r){ // cout<<"com...

2016-10-27 18:44:21

阅读数 352

评论数 0

蓄水池采样

问题描述: 现实生活中有很多流式数据,在流式数据上采样可以抽象为: 设几个中元素个数为N,并且N在不断的增大,如何在集合中采集K个样本,使得每个样本被采集到的概率相等(K/N)? 蓄水池抽样法: 算法思路是,先构造一个可以放K个元素的池子,池子中一开始放元素1~k。 对于K+1~N 以K...

2016-10-27 17:31:18

阅读数 260

评论数 0

c++互斥锁

摘要: 从本质上说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁,对互斥量进行加锁以后,任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥量.如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个变量为运行状态的线程可以对互斥...

2016-10-09 10:30:04

阅读数 4302

评论数 0

C++多进程信号量

问题:一个父进程一个子进程,要求父进程与子进程同步:必须子进程先执行,父进程后执行。 解决办法:用信号量机制,一开始信号量初始化为0 父进程: 非临界区  p(s) 临界区 v(s) 非临界区 子进程: 非临界区 v(s) 非临界区 这样父进程执行临界区代码...

2016-10-07 22:09:37

阅读数 1712

评论数 0

C++ I/O复用实现聊天室程序

今天学习了Linux 高性能服务器变成中的I/O复用,根据书上的内容,实现一个聊天室程序。 1.客户端,客户端程序用poll同事坚挺用户输入和网络连接,并用splice 函数将用户输入直接定向到网络连接上发送,从而实现数据零拷贝。 #define _GNU_SOURCE 1 #include ...

2016-10-07 01:33:54

阅读数 894

评论数 1

C++中static的作用总结

主要有以下作用: 【1】在函数体,局部的static变量。生存期为程序的整个生命周期,(它存活多长时间);作用域却在函数体内(它在什么地方能被访问(空间))。 一个被声明为静态的变量在这一函数被调用过程中维持其值不变。因为它分配在静态存储区,函数调用结束后并不释放单元,但是在其它的作用域...

2016-09-23 11:31:04

阅读数 131

评论数 0

C语言实现多态

综述 多态性是面向对象程序设计的一个重要特征,利用多态性可以设计和实现一个易于扩展的系统。 顾名思义,多态的意思是多种形态,在C++程序设计中,多态指的是:具有不同功能的函数可以用同一个函数名,这样可以用一个函数名调用不同内容的函数。 C++的多态分两种:静态多态性和动态多态性。 1. C++中的...

2016-09-23 01:53:38

阅读数 5417

评论数 0

数据流的中位数

题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 解题思路:将数字放入两个堆,一个小堆 min_h 一个大堆max_h 大堆存放的是数组中最小的一半数据...

2016-09-18 02:29:42

阅读数 148

评论数 0

序列化二叉树

问题:实现两个函数,序列化一个二叉树。 如果之前做过一个题目: 用一颗二叉树的中序和前序还原二叉树的话,最直观的解法是用把二叉树系列化成一个中序序列和一个前序序列,但是这个方法的缺陷是每个节点上的值不能相同,而且需要将整个序列都读入之后才能序列化,如果序列到一个流中,在从流中读出来还原二叉树效率...

2016-09-17 23:10:44

阅读数 105

评论数 0

正则表达式匹配

题目:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*a...

2016-09-17 15:35:49

阅读数 157

评论数 0

正整数的和

题目:输入一个正整数s打印出s的连续正整数合(至少含有两个数字)如15 ,由于1+2+3+4+5 = 4+5+6 = 7+8 = 15 所以结果是 {1,2,3,4,5}{4,5,6}{7,8} 设两个数small big,求从small 到big连续正整数的和,如果和正好是目标值,则找到一个解...

2016-09-16 21:32:23

阅读数 116

评论数 0

数组中的逆序对

问题:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007  思路:最简单的思路是遍历数组,把当前数组元素和它后面的相比较,如果是逆序对,则计数器...

2016-09-16 18:22:45

阅读数 139

评论数 0

把数组排成最小数

题目:输入一个正数数组,把数组中所有的数字拼接起来排成一个数,打印能排列出来的数的最小的那一个例如输入{3,32,321} 输出的应该是 321323 这个题目的直观做法是先求出所有可能的排列,然后找到最小的那个。但是n个数字的排列有n!个,时间复杂度太高。 同时应该注意,如果直接将输出类型定...

2016-09-16 12:42:12

阅读数 178

评论数 0

字符串的所有排列

输入一个字符串,打印出该字符串的所有排列,例如输入字符串abc ,则打印出a,b,c 所能排列出来的所有字符串 abc,acd,bac,bca,cab,cba。 看似简单,其实不是很好做,应该把问题分解为子问题,我们把字符串看成两个部分,首字母自己作为一部分,后面的其他节点当做其它部分。可以看成...

2016-09-15 22:05:15

阅读数 154

评论数 0

求不相邻的最大子数组和

问题1:给出一个数组,求出其中一个子集,使得子集中每个元素在原数组中两两都不相邻并使子集的和最大。 解法:对任意一个元素ai ,有两种可能: 选ai ,单选了ai 就不能选ai-1 ;不选ai 那么ai-1 可以选也可以不选,主要根据ai-2的情况,因此动态规划是这样设计的。  ds[i] 表示选...

2016-09-14 22:32:59

阅读数 935

评论数 0

旋转数组的最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的的数组的旋转,输出旋转数组的最小元素,如{3,4,5,1,2}位{1,2,3,4,5}的数组旋转。最小值是1 思路:用二分查找法 #include #include #include #inclu...

2016-09-13 17:29:08

阅读数 119

评论数 0

前序序列和中序序列还原树

题目:输入某二叉树前序中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中不包含重复数字。例如 输入前序遍历{1,2,4,7,5,6,8} 和中序遍历{4,7,2,1,5,3,8,6} 以下是我用c++的实现 #include #include #include #inclu...

2016-09-13 15:24:51

阅读数 621

评论数 0

二维数组中的查找

在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的排列,请完成一个函数,输入这样的二维数组和一个整数,判断数组中是否有该整数,如果有返回true,没有返回false #include #include #include using namespace std...

2016-09-12 23:50:59

阅读数 110

评论数 0

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