自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

火锅——博客

在路上

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

原创 测试用到的英语

portraite mode 纵向模式 land mode 横向模式plug in 插上 plug out 拔下White-Box Testing 白盒测试 Black-Box Testing 黑盒测试 Gray-Box Testing 灰盒测试Smoke Testing 冒烟测试 Regression Test 回归测试 Function Testing 功能测试Pe...

2018-07-25 09:41:56 482

原创 内存池

什么是内存池????? 通常我们用new或malloc来分配内存的话,由于申请的大小不确定,所以当频繁的使用时会造成内存碎片和效率的降低。为了克服这种问题我们提出了内存池的概念。内存池是一种内存分配方式。内存池的优点就是可以有效的减少内存碎片化,分配内存更快速,减少内存泄漏等优点。 内存池是在真正使用内存之前,先申请分配一个大的内存块留作备用。当真正需要使用内存的时候,就从内存池中

2017-09-11 10:46:23 530

原创 调整一组数据使得奇数位 位于偶数位的前面

#define _CRT_SECURE_NO_DEPRECATE #include<iostream> using namespace std; //判断时候为偶数 bool IsEven(int num) { if (num % 2 == 0) { return true; } return false;

2017-09-10 21:11:44 292

原创 判断一个数是否在一个二维数组中

分析参考网络#include<iostream> using namespace std; #include<assert.h> const int M = 3; const int N = 3; bool Find(const int *a, int x, int y,int &key) { assert(a); while (x < M&&x >=

2017-09-10 21:07:23 1616

原创 删除小写字母字符串中重复字符

#include<iostream> using namespace std; void DeleteCommonStr(char a[]) { int i = 0; while (a[i] != '\0') { int j = i + 1; int k = i + 1; while (a[k]

2017-09-10 20:37:04 508

原创 对n个数字右移k位

<span style="font-size:14px;">#include<iostream> using namespace std; #include<math.h> #include<string.h> void Reverse(char* a, int left, int right) { for (; left < right; left++, right

2017-09-10 20:35:10 323

原创 用递归实现字符串的逆置

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>void reverse(char *pstr){ char tmp = 0; char *pstr_end = pstr + strlen(pstr) - 1;

2017-09-09 19:43:45 678

原创 用c实现strstr函数(子字符串查找)功能

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>char *mystrstr(const char *dst_str,const char *src_str)//子字符串查找函数{ const char *dst_start

2017-09-09 19:40:04 513

原创 字符串的左旋问题解析

实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 思路:先将一个字符串左移一位,可以使用一层for循环来实现, 然后每次都可以调用这层循环,调用移位的次数,还有就是, 循环次数如果大于字符串的长度,会重复执行一些无用的 操作,所以给step模上字符串的长度,就可以产生一个小于 字符串长度的数字。#in

2017-09-09 19:39:06 245

原创 将字符串逆置(不改变里面单词的顺序)

将student a am i”转换为“i am a student”#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> #include<ctype.h> void reverse(char *begin, c

2017-09-09 19:37:29 560

原创 求一组成对出现的数据中的单身狗

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> int find_diff(int *arr,int sz) { int i = 0; int j = 0; for(i=0; i<s

2017-09-09 19:35:44 225

原创 /*****/BloomFilter(布隆过滤器)

#pragma once #include<vector> using namespace std; struct _HashFunc1 { size_t operator()(const string& str) { size_t num=0; for (int i = 0; i < (int)str.size();i+

2017-09-06 21:03:30 211

原创 /*****/跳表

跳表的原理非常简单,跳表其实就是一种可以进行二分查找的有序链表。跳表的数据结构模型如图:

2017-09-06 20:53:35 197

原创 注释转换

注释转换即用状态机将c语言的注释转换为c++的注释。C转C++可能遇到的问题: 1.一般情况 /* int i = 0; */ 2.换行问题 /* int i = 0; */ int j = 0; /* int i = 0; */ int j = 0; 3.匹配问题 /int i = 0;/*xxxxx/ 4.多行注释问题 /* int i=0; int j = 0;

2017-09-06 20:26:32 380

原创 顺时针打印矩阵

#include<vector>class Solution {public: //打印一圈:只要是打印一圈数据,那么左上角的x和y下标肯定会相等。 void PrintMatrixInCircle(vector<vector<int>>& matrix,vector<int>& res,int start) { int rows = matrix

2017-09-06 19:41:32 159

原创 粘滞位

在了解粘滞位之前,我们先来回忆一下一个文件具有的三种权限,在Linux下有一种一切皆文件的思想,所以,这里的文件包含普通文件和目录了: 一、文件权限: r :可以读这个文件的内容 w :可以编辑这个文件的内容,包括增加和删除文件的具体内容 x :可执行权限。(需注意:在windouw下,文件的可执行权限是通过文件的扩展名表示出来的,而在Linux下是由这个X权限所决定的)。 二、

2017-09-06 19:40:18 239

原创 注释转换

C转C++可能遇到的问题: //1.一般情况 /* int i = 0; */ // 2.换行问题 /* int i = 0; / int j = 0; / int i = 0; */ int j = 0; // 3.匹配问题 /int i = 0;/*xxxxx/ // 4.多行注释问题 /* int i=0; int j = 0; int k = 0; */i

2017-09-05 22:36:30 242

原创 CRC检验解析

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意

2017-09-05 22:28:17 666

原创 守护进程

守护进程是生存期长的一种进程。常常在系统引导装入时启动,仅在系统关闭时才终止。因为没有控制终端,所以说是在后台运行的 守护进程不受用户登录和销毁的控制,通常以d结尾表示为daemon,守护进程是孤儿进程。当前作业与终端无关(因为守护进程自成一个会话,所以不受终端控制) 相关指令 ps -axj -a 显示当前用户其他用户所拥有的进程状态 -x 显示有和没有终

2017-09-05 22:27:08 182

原创 堆的基本代码

#include<iostream> #include<vector> #include<assert.h> using namespace std; template<class T> //利用仿函数,可以完成代码的复用,这里我们假设建立大堆。 struct Greater { bool operator()(const T& x1, const T& x2)

2017-09-05 22:23:28 503 1

原创 堆的应用之堆排序

void AdjustDown1(int* b, int n, int i) //向下调整,建立大堆 { int parent = i; int child = parent * 2 + 1; while (child < n) { if (child + 1 < n&&b[child + 1] > b[child])

2017-09-05 22:19:52 213

原创 堆的应用之TOP K问题

此问题需要在N个数中找出最大或者最小的K 个数。这里我们用找最大的K个数来举例。void AdjustDown(int* hp, int K, int i) { int parent = i; int child = i * 2 + 1; while (child < K) { if (child + 1 < K&&hp[chi

2017-09-05 22:18:45 180

原创 大数运算

1、大数的数据类型设计 可以用一个string和一个long long类型来表示一个大数类型,long long类型表示没有超出范围,string表示超出范围的大数。在初始化的时候我们可以将string和long long都进行初始化,在运算的时候再判断是用long long运算还是用string进行运算。typedef long long INIT64;class BigData{

2017-09-04 16:12:16 270

原创 单例模式&工厂模式

单例模式 一、什么是单例模式 有时候我们会遇到这样一种情况,一个类只能有一个对象被实例化,这时我们就可以使用单例模式了。 单例模式通过类本身来管理其唯一实例。在设计这个类的时候,让他只能创建一个实例并提供对此实例的全局访问。因此单例模式有两个最基本的条件是,确保一个类只有一个实例被创建,提供一个对实例的全局访问指针。 二、常见的单例模式实现 常用的单例模式实现方法有两种,饿

2017-09-04 16:11:07 6165

原创 多态

多态的实现机制: C++中虚函数的主要作用就是用来实现多态,就是使用基类的指针或者引用调用重写的虚函数,当父类的指针或引用指向父类对象时调用的是父类虚函数,当指向子类对象时调用的是子类的虚函数。那么这又是怎么实现的呢 这都是通过虚函数表实现的,虚函数表是通过一块连续内存来存储虚函数的地址。这张表解决了虚函数重写(地址进行覆盖)的问题 。在有虚函数的对象实例中都

2017-08-29 16:08:46 164

原创 Web性能压力测试工具之WebBench

背景: 在运维工作中,压力测试是一项很重要的工作,比如在一个网站上线之前,能承受多大访问量,大访问量下性能如何等这些数据指标好坏将直接影响用户体验。另外,在所有压力测试中存在一个共性那就是压力测试的结果与实际负载结果不会完全相同,再好的压力测试工作也不能保证100%和线上性能指标相同。针对上述问题,我们必须想方设法做模拟,因此,压力测试非常有必要,因为有了这些数据我们就能对自己所维护的平台做到心

2017-08-29 15:08:54 201

原创 /*****/二叉树基础问题

创建一棵二叉树(先序创建): 以{1,2,3,’#’,’#’,4,’#’,’#’,5,6}为例: 先创建左路,每创建一个结点就入栈,cur指向当前结点: 左路创建完毕之后用一个变量top保存栈顶元素3,然后将栈顶的元素3抛出: 然后再创建top的右子树且cur=top->_right,然后再重复上述操作,直到创建完毕。非递归: TreeNonR(c

2017-08-29 13:00:58 208

原创 atoi

#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> enum State { NORMAL, //正常 ABNORMAL //异常 }state; state =

2017-08-19 08:13:04 638

原创 字符串函数strchr,strrchr,strrstr,strncat()函数,strncpy()函数 ,strncmp()函数 ,

#include<stdio.h> #include<stdlib.h> #include<assert.h> char *my_strchr(const char *dst, char c) //由于我们只是查找,不修改这个字符串,所以将dst声明成const { assert(dst);

2017-08-19 08:06:06 356

原创 new/delete和new[ ]/delete[ ]的底层调用和简单实现

在使用new的时候做了两件事: 1、调用operator new分配空间 2、调用构造函数初始化对象 在使用delete的时候也做了两件事: 1、调用析构函数清理对象 2、调用operator delete函数释放空间 在使用new[N]的时候也做了两件事: 1、调用operator new分配空间 2、调用N次构造函数初始化N个对象

2017-08-18 10:12:48 277

原创 函数重载

什么是函数重载? 在同一个作用域中,如果有多个函数的名字相同,但是形参列表不同(参数类型不同或参数个数不同),返回值类型可同也可不同,我们称之为重载函数。重载的函数是通过形参列表区分的,与返回值类型无关。函数重载其实是”一个名字,多种用法”的思想,不仅函数可以重载,运算符也可以重载。 例如:现在要实现一个加法运算,运算子可以是整形也可以是浮点型,就可以通过重载实现。int ADD(int

2017-08-18 10:03:35 221

原创 /*****/排序

直接插入排序 插入排序的基本思想是: 每次将一个待排的记录,按照其关键字的大小,插入到前面已经排好序的有序区中适当的位置,直到全部记录插入完毕为止。 假设待排序的记录存放在数组R[0..n]中,初始时R[0]是一个有序区,R[1..n]是无序区,从i=1开始,依次将R[i]插入到有序区R[0..i-1]中,生成一个包含n个记录的有序区。Sort.h#pragma o

2017-08-07 14:24:32 382

原创 长连接和短连接

什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。 通常的短连接操作步骤是: 连接-》数据传输-》关闭连接; 而长连接通常就是: 连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接; 这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了 什么时候用长连接,短连接?

2017-08-06 18:52:02 195

原创 epoll

#include   #include   #include   #include   #include   #include   #include   #include   #include   #include     int start_up(char* ip, short port)  {      int listen_sock = s

2017-08-06 11:38:27 318

原创 线程池

一、什么是线程池 线程池是服务器预先创建的一组线程,这些线程运行着相同的代码,并具有相同的属性。当有新的任务到来的时候,主线程通过某种方式选择线程池中的某一个线程来为之服务,服务完之后又放回线程池中。二、为什么要有线程池 相比于动态创建线程来说,线程池可以提高速度。因为线程的创建和销毁是需要时间的,如果我们预先创建好,用完之后再回收的话,则会节省不少时间。一般线程池中线程的数量和CPU

2017-08-06 11:31:37 163

原创 输入n,求斐波那契数列第n项。斐波那契数列的第0项为0,第一项为1,之后的项依次为前两项之和。

思路一: 递归 要求第n项,首先就要求出第n-1,n-2项,依次类推。递归的出口就是第0项为0,第1项为1.使用递归虽然代码很简单,但如果n大一点的话,所产生的运行时开销会非常大,这样做的后果就是效率非常低下。思路二: 非递归 使用非递归的话,效率会很高。设置两个三个变量分别表示当前值和前两项的值,使用循环求解。(本例中,只使用两个变量表示这些值)#include<stdio.h

2017-08-06 10:35:23 11109

原创 一个数组中只有两个数字单独出现,其余数字都是成对出现的,请找出这两个数。

排序:#include<stdio.h> #include<stdlib.h> int check(int arr[], int len) //将arr[]中的数组进行异或,然后将结果返回 { int num = 0; for (int i = 0; i < len; i++) {

2017-08-06 10:33:05 774

原创 在字符串中查找第一个只出现一次的字符,例如:输入"abbbacfes",则输出'c'.

char check(char const *src) { assert(src); char const *psrc = src; int dst[256] = { 0 }; while (*psrc) { dst[*psrc++]++; //将字符串中各个字符出现的次数统计出来

2017-08-06 10:30:58 367

原创 I/O多路复用之select&poll

系统提供select函数用来实现I/O多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件描述状态变化的。程序会停在select这里等待,直到被监视的文件描述符有一个或多个发生状态变化。通常I/O操作有两个步骤,一个是等,另一个是数据搬迁。select主要是在等的这个状态阻塞着直到事件发生。 头文件:#include<sys/select.h>#include<sys/ty

2017-08-06 10:19:13 257

原创 Linux-1

1.如果系统的umask设置为244,创建一个新文件后,它的权限:(-r—w–w-) umask是从权限中“拿走”相应的位,且文件创建时不能赋予执行权限. 创建时,文件 默认666,目录默认777,减去umask的位就是结果。 umask 功能说明:指定在建立文件时预设的权限掩码。 语  法:umask [-S][权限掩码] 补充说明:umask可用来设定[权限掩码]。[权限掩码]是由

2017-07-30 17:54:43 3740 1

空空如也

空空如也

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

TA关注的人

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