自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

feiqiangs的专栏

feiqiangs的学习心得

  • 博客(52)
  • 收藏
  • 关注

原创 dpdk 在VMware 中的安装部署

dpdk简介dpdk 是intel提供的提升数据面报文处理速率的应用程序开发包,它只要是利用一下几个特点优化报文处理过程,从而加快报文处理速度:1、用大页缓存支持来提高内存访问速率。2、利用UIO支持,提供应用空间下驱动程序的支持,也就是说驱动程序运行在用户空间的,减少了报文在用户空间和应用空间的多次拷贝。3、利用Linux 亲和性支持,把控制面的线程及各个数据面线程绑定到不同的c

2016-11-20 17:33:32 5286 4

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

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

2016-10-28 18:07:37 1273

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

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

2016-10-27 18:44:21 671

原创 蓄水池采样

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

2016-10-27 17:31:18 515

转载 c++互斥锁

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

2016-10-09 10:30:04 5210

原创 C++多进程信号量

问题:一个父进程一个子进程,要求父进程与子进程同步:必须子进程先执行,父进程后执行。解决办法:用信号量机制,一开始信号量初始化为0父进程:非临界区 p(s)临界区v(s)非临界区子进程:非临界区v(s)非临界区这样父进程执行临界区代码之前要先p操作,但是信号量是0,因此父进程被阻塞。直到子进程执行了v操作添加一个信号量,这时候父进程才

2016-10-07 22:09:37 3160 1

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

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

2016-10-07 01:33:54 1463 4

转载 C++中static的作用总结

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

2016-09-23 11:31:04 301

原创 C语言实现多态

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

2016-09-23 01:53:38 13706 2

原创 数据流的中位数

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

2016-09-18 02:29:42 236

原创 序列化二叉树

问题:实现两个函数,序列化一个二叉树。如果之前做过一个题目: 用一颗二叉树的中序和前序还原二叉树的话,最直观的解法是用把二叉树系列化成一个中序序列和一个前序序列,但是这个方法的缺陷是每个节点上的值不能相同,而且需要将整个序列都读入之后才能序列化,如果序列到一个流中,在从流中读出来还原二叉树效率将会比较低。其实序列化的时候只需要前序就可以了,只是遍历到每个NULL指针的时候对应的序列

2016-09-17 23:10:44 192

原创 正则表达式匹配

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

2016-09-17 15:35:49 250

原创 正整数的和

题目:输入一个正整数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连续正整数的和,如果和正好是目标值,则找到一个解,否则: 1.如果当前和大于目标值,则small ++ ,2.如果小于目标值则 big ++.

2016-09-16 21:32:23 664

原创 数组中的逆序对

问题:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 思路:最简单的思路是遍历数组,把当前数组元素和它后面的相比较,如果是逆序对,则计数器加1.时间复杂度是o(n^2),还有一个利用归并排序思想的方法时间复杂度是O(nlogn).下面是我用

2016-09-16 18:22:45 306

原创 把数组排成最小数

题目:输入一个正数数组,把数组中所有的数字拼接起来排成一个数,打印能排列出来的数的最小的那一个例如输入{3,32,321} 输出的应该是 321323这个题目的直观做法是先求出所有可能的排列,然后找到最小的那个。但是n个数字的排列有n!个,时间复杂度太高。同时应该注意,如果直接将输出类型定义为int类型的话,如果数组中的值比较大,加合完之后的值可能会超出int类型,因此最好用string

2016-09-16 12:42:12 350

原创 字符串的所有排列

输入一个字符串,打印出该字符串的所有排列,例如输入字符串abc ,则打印出a,b,c 所能排列出来的所有字符串 abc,acd,bac,bca,cab,cba。看似简单,其实不是很好做,应该把问题分解为子问题,我们把字符串看成两个部分,首字母自己作为一部分,后面的其他节点当做其它部分。可以看成两部走:求出所有课程出现在第一位的字符 a和后面的bc交换。第二步:固定第一个字符,求后面所有

2016-09-15 22:05:15 323

原创 求不相邻的最大子数组和

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

2016-09-14 22:32:59 1772

原创 旋转数组的最小数字

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

2016-09-13 17:29:08 198

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

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

2016-09-13 15:24:51 1068

原创 二维数组中的查找

在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的排列,请完成一个函数,输入这样的二维数组和一个整数,判断数组中是否有该整数,如果有返回true,没有返回false#include#include#includeusing namespace std;bool func(int nums[][10],int val,int row_len,int

2016-09-12 23:50:59 194

原创 二分查找的递归与非递归实现

假设有一个已经升序排好序的数组 nums,和一个数值val ,求val 是否在nums 中,如果存在则返回nums对应项的index ,否则返回-1;递归实现:#include#include#includeusing namespace std;int func(int val,int nums[],int begin,int end){ if(begin > end)

2016-09-12 21:44:38 206

原创 最长公共子串的动态规划解法及其优化

最长公共子串问题是:给定两个字符串str1和str2,返回两个字符串的最长公共子串(必须连续)举例: str1 = "abcd12" str2="ebcd32" 它们的最长公共子串是 "bcd"原始解法:设dp[i][j] 表示 以str1[i]和str2[j]最为公共子串的最后一个字符的情况下,公共子串最长能有多长。边界值: 如果 str1[i] = str2[0]则

2016-09-12 21:24:42 2807

原创 最长公共子序列

最长公共子序列问题是经典的动态规划问题:给定两个字符串str1和str2,返回两个字符串的最长公共子序列(不一定要连续)。举例: str1="a1b2c3d4" str2="a2b3c4e" 它们的最长公共子串是"abc"下面是c++代码实现#include#include#includeusing namespace std;int main(){ string st

2016-09-12 11:21:17 222

转载 和为0的最长子串

已知一个数组只有 1和-1,求它和为0的最长子串长度。如 数组{-1,1,-1,-1,1,1,1,1,1} 和为0的最长子串为 {-1,1,-1,-1,1,1} 答案为6.之前一直想的是用动态规划,但是试了半天已知没有找到规律,后来看了看这篇文章:http://blog.csdn.net/fishermandong/article/details/52459059  顿时有了思路,下面是我实现

2016-09-07 22:47:28 1444

原创 快排的递归和非递归实现

快排的思路可以参考文章:http://developer.51cto.com/art/201403/430986.htm下面是我的递归和非递归实现。递归实现:int nums[100];void qsort(int left,int right){ if(left > right) return; int temp = nums[left]; int

2016-09-06 17:59:40 444

原创 260. Single Number III

Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.For example:Given nums =

2016-08-28 21:46:06 337

原创 leetcode:278. First Bad Version

278. First Bad VersionYou are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version

2016-08-24 16:10:04 192

原创 Python爬虫总结(一)入门

Python爬虫总结(一)入门很多做数据分析的同学会抱怨没有实际数据,感觉巧妇难为无米之炊,而火车头采集器一类的软件很难完成一些定制性很强的数据采集任务,这时候就需要自己编写爬虫来采集数据了。python是目前做爬虫比较流行的工具。爬虫的一般原理爬虫一般通过发送http/https请求,从服务器获取数据,进一步解析获取的数据,最后得到有用的信息。而爬虫发送的http/https请求主要

2016-08-03 10:35:59 640

原创 自己编写一个简单的微博爬虫

自己编写一个简单的微博爬虫前言很多做社交媒体数据分析的同学需要采集一些新浪微博上的数据,新浪微博虽然有提供api,但免费的api对获取的数据项和获取的频率都有很大的限制,商业版api据说限制较少,但是作为屌丝学生党拿来那么多钱买买商业版的api?!!!用类似于火车头采集器这种工具又很难解决问题,因此我们往往需要自己编写微博爬虫。下面我简单介绍一下我在编写微博爬虫期间遇到的问题和我的解决思路

2016-08-02 22:06:03 2054

原创 191. Number of 1 Bits

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).For example, the 32-bit integer ’11' has binary representation 000000

2016-03-13 16:41:28 235

原创 235. Lowest Common Ancestor of a Binary Search Tree

Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined betw

2016-03-13 16:26:36 228

原创 并查集总结

先看一个例题:HDU 1232 畅通工程某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N (

2016-03-06 19:51:45 356

原创 LeetCode:Majority Element

LeetCode:Majority Element Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non

2016-02-28 21:09:01 325

转载 带随机数的md5加密

注册的时候,把用户的密码用md5(md5($password).$salt)加密,$salt是一个6位随机数字,下面是我的一个获取6位随机数的一个方法: <?phpfunction randstr($len=6) { $chars='abcdefghijklmnopqrstuvwxyz0123456789'; // characters to build the passw

2013-10-30 07:35:26 4261

转载 md5加密之秘文分割法

md5加密之秘文分割法<?php//把密文分割成两段,每段16个字符function md5_2_1($data){//先把密码加密成长度为32字符的密文$data = md5($data);//把密码分割成两段$left = substr($data, 0, 16);$right = substr($data, 16, 16);//分别加密后再合并$data = md

2013-10-30 07:26:12 867

转载 php+正则表达式实现的防注入算法

php+正则表达式实现的防注入算法<?phpfunction clean($str){ $str=trim($str); $str=strip_tags($str); $str=stripslashes($str); $str=addslashes($str); $str=rawurldecode($str); $str=quotemeta($str); $str=htm

2013-10-30 07:21:31 959

转载 循环md5

循环md5<?php02//迭代算法03function md5_1_1($data, $times = 32)04{05//循环使用MD506for ($i = 0; $i < $times; $i++) {07$data = md5($data);08}09return $data;10}11 12//递归算法13function md5

2013-10-30 07:17:46 630

原创 一个很好的ajax入门小实例,用户登录验证

js代码 var xmlHttp; function createXMLHttpRequest() { if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

2013-10-30 00:42:41 697

转载 javascript实现的DES加密

des.js////THIS SOFTWARE IS PROVIDED "AS IS" AND//ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE//IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOS

2013-10-30 00:15:31 12300 2

原创 一个小时候没有解决的有趣的问题的解

记得当年上小学的时候,不知道是谁出的这个问题(好像是少东),就是问上边的这个图能不能用3笔画出来。当时班里好多同学都被这个问题吸引住了(不如说当时大家都逞能T_T)我当时也傻傻的跟着画了好长时间,但是就是不能三笔就画出上边的图,感觉最少四笔才能画出来,然而当时只是小学生,没有办法证明‘三笔画出上边的图形’是不可能的。所以这个事情也只能不了了之,后来变成了大家无聊的时候的谈资。转眼时间,很多年过去了

2012-11-06 22:25:47 740 1

空空如也

空空如也

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

TA关注的人

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