自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 收藏
  • 关注

原创 linux下使用docker安装MongoDB并新建用户、插入数据、查询数据

若没有images 则需要拉取镜像 输入命令docker search mongo docker pull mongo 已有MongoDB的images 1、查询mongo镜像 docker images 2、启动mongo容器 docker run --name mongomuzi -p 2018:27017 -v /data/mongomuzi:/data/mongomuz...

2019-07-31 00:13:01 675

原创 Linux下MySQL创建数据库及数据库的备份

-- 连接MySQL数据库mysql -uroot -p输入密码:-- 查询数据库show databases;-- 新建数据库create database test;-- 为数据库添加用户,只有mysql所在的机器才可以连接。GRANT ALL PRIVILEGES ON 数据库(test).* TO '用户名(admin)'@'数据库所在机器(127.0.0.1)' ...

2019-07-18 20:08:08 463

原创 Linux下Oracle为已有数据库新建用户、表并插入数据

-- 数据库连接命令su - oracle-- 登录数据库-- 数据库管理员权限登录sqlplus / as sysdba;-- 使用用户名密码登录conn 用户名/密码;-- 查看表空间的路径select name from v$datafile;-- 创建表空间CREATE TABLESPACE oracle_test LOGGING DATAFILE '/u01...

2019-07-18 17:45:31 2341

原创 LoadRunner四大组件及其工作原理

LoadRunner四大组件:VuGen发生器(虚拟用户脚本生成器)、控制器(Controller)、负载发生器(Load Generators)、分析器(Analysis)1、VuGen发生器(虚拟用户脚本生成器)     捕捉用户的业务流,并最终将其录制成一个脚本:  (1)选择相应的一种协议;  (2)在客户端模拟用户使用过程中的业务流程,并录制成一个脚本;  (3)...

2019-02-13 11:35:06 3781 1

原创 Http协议Get和Post请求方式的区别及其使用场景

Get和Post请求方式的区别:请求方式         数据位置    数据安全          长度限制            数据类型   应用场景     Get      附加在URL之后      不安全    受URL长度的限制    只允许ASCII字符类型   查询数据    Post  http请求...

2019-02-13 10:59:53 1566

原创 webbench源码剖析

在http://blog.csdn.net/scmuzi18/article/details/77049710这篇文章中介绍了webbench的安装及使用,于是今天我们将对webbench的源码简单的剖析。 webbench中一个开源的测压工具,我们能看到他有两个文件socket.c和webbench.c webbench的工作原理: 1、主函数进行必要的准备工作,进入bench开始压测 2

2017-08-30 20:39:08 526

转载 session与cookie的区别与联系

1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。2.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。 注:为这

2017-08-29 22:46:30 314

原创 数组中出现的次数超过数组长度的一半的数字

解法一:int num(int *arr, int n){ if(arr==NULL||n<=0) return 0; //找数组中最大的元素max int max=arr[0]; for(int i=1;i<n;i++) { if(arr[i]>=max) max=arr[i]; } //重新定义一个大小为max+1的数组ar

2017-08-14 20:45:04 424 3

原创 哈希表平均查找长度

题目:关键字序列为:{38,25,74,63,52,48},哈希函数为H(k)=k%7,哈希表的长度为7,用线性探测和链地址法处理冲突,分别计算等概率情况下查找成功的平均查找长度。注:没给哈希表长度,给出装填因子时,可求哈希表长度, 可根据此公式装填因子=元素个数/表长推:表长=元素个数/装填因子。线性探测法由上构造的哈希表如下: 等概率下查找成功的平均查找长度为: ASL=(1+3+1+1+

2017-08-13 10:53:31 40398 3

转载 12个小球中,有一个小球质量M与其他11个小球不同,只能测试3次,怎么可以找出它?

转自:http://jingyan.baidu.com/article/20b68a886c4511796cec62d9.html 题目:12个小球中,有一个小球质量M与其他11个小球不同,30分钟内,只能测试3次,怎么可以找出它?思路: 1、先平均分三组,每组4个球。 2、考虑到,第一次测试有不平衡和平衡两种情况。 3、然后再继续展开分情况讨论,很难表达。看下图。第

2017-08-12 20:44:16 941

原创 CentOs6.5下webbench的安装及测试

1.安装(安装的前提:需要安装gcc和make)yum -y install ctags wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz tar -zvxf webbench-1.5.tar.gz cd webbench-1.5 make && make install 2、出错及错误解决webb

2017-08-10 13:54:37 875

原创 valgirnd的简单使用

一、Valgrind包括如下一些工具:Memcheck。这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。 Callgrind。它主要用来检查程序中函数调用过程中出现的问题。 Cachegrind。它主要用来检查程序中缓存使用出现的问题。 Helgrind。它主要用来检查多线程程

2017-08-10 11:58:49 559

原创 C语言模式实现C++继承和多态

//C++中的继承与多态//C++中的多态可以通过虚函数来实现class A{public: //基类函数为虚函数,必须加关键字virtul virtual void fun() { cout << "A:fun()" << endl; } int a;};class B :public A{public: //子类里的v

2017-08-07 22:16:20 296

原创 gtest学习笔记

简单的测试用例: 1、自己不用编写main函数,因为gtest框架已为饿哦们提供了main函数,但此时我们需要在Makefile中链接gtest_main库,如下图:测试用例如下: 这里使用了gtest框架中TEST这个宏,它有两个参数TEST(TestCaseName,TestName) ASSERT_* 失败时,直接在当前函数中返回,当前函数中ASSERT_*后面的语句将不会执行 测试结

2017-08-07 19:16:15 505

原创 求二叉树中两个结点的最近公共祖先

1、该二叉树为二叉搜索树。 二叉搜索树:如果左子树存在,其结点都比父结点小,如果右子树存在,其结点都比父结点大。故从根结点开始与两个输入结点比较: 如果当前结点大于这两个结点时,那么这两个结点的最近公共祖先一定在当前结点的左子树中; 如果当前结点小于这两个结点时,那么这两个结点的最近公共祖先一定在当前结点的右子树中。参考代码:Node<T>* _GetlastcommonNode(Node<T

2017-08-07 14:38:36 1303

原创 重建二叉树(前序遍历和中序遍历)

void Rebuild(T pre[], size_t presize, T in[], size_t insize) { size_t idx = 0; _Rebuild(_root,pre,idx,presize,in,insize,0,insize); }void _Rebuild(Node<T>*& root, T pre[], size_t

2017-08-07 10:42:59 323

原创 归并排序

归并排序 基本思想 一、递归//归并void merge(int *arr,int * tmp,int left,int mid,int right){ int begin1=left; int end1=mid; int begin2=mid+1; int end2=right; int idx=left; while(begin1<=end1&&begin2<

2017-08-06 12:56:43 274

原创 选择类排序:选择排序和堆排序

选择排序void select_sort(int *arr,int size){ int tmp=0; for(int i=0;i<size-1;i++) { for(int j=i+1;j<size;j++) { if(arr[j]<arr[i]) { tmp=arr[j]; arr[j]=arr

2017-08-04 18:16:05 230

原创 插入类排序:插入排序&希尔排序

插入排序: void insert_sort(int *arr,int len){ for(int i=1;i<len;i++) { int tmp=arr[i]; int j=i-1; while(j>=0&&tmp<arr[j]) { arr[j+1]=arr[j]; j--; } arr[j+1]=tmp;

2017-08-04 13:49:08 243

原创 交换类排序:冒泡排序和快速排序

冒泡排序void Bubblesort(int *arr, int len){ for (int i = 0; i < len - 1; i++) { for (int j = 0; j < len - 1 - i; j++) { int temp = 0; if (arr[j]>arr[j + 1])

2017-08-01 13:54:18 323

原创 判断一棵树是否是完全二叉树

满二叉树:如下图除叶子节点外每个结点都达到饱和(左右孩子都存在) 完全二叉树:与满二叉树的前N个结点的结构相同的二叉树。 当找到第一个不饱和结点时,有如下情况: 1、该不饱和结点的左右孩子都存在,此时肯定是完全二叉树 2、该不饱和结点只有左孩子,也是完全二叉树 3、该不饱和结点只有右孩子,不是完全二叉树 4、该不饱和结点无孩子 bool IsCompleteTree()

2017-07-31 17:27:56 413

原创 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。

基本思想: 1、选取矩阵右上角的数字; 2、如果选取得数字等于要查找的数字,查找结束; 3、如果选取的数字大于要查找的数字,所在的列col–; 4、如果选取的数字小于要查找的数字,所在的行row++。bool Find(int *arr, int rows, int cols, int n){ bool flag = false; if (arr!=NULL&&ro

2017-07-31 16:23:18 788

原创 求一颗二叉树的镜像

//求二叉树镜像 void Binary_mirror() { _Binary_mirror(_root); } void _Binary_mirror(Node<T>* root) { if (root) { std::swap(root->_left,root->_right);

2017-07-31 16:18:11 334

原创 判断一个节点是否在一棵二叉树中&判断一颗二叉树是是否是另一颗树的子树

判断一个节点是否在一棵二叉树中 //给一个数找是否在二叉树中,找到返回所在节点 Node<T>* find(const T& data) { return _find(_root, data); } //判断一个节点是否在一棵二叉树中 bool IsNodeintree(const Node<T>* node) {

2017-07-31 16:09:24 626

原创 面试题:替换空格

题目:替换字符串中的空格为$$$。要求时间复杂度为O(N) 例如:将”talk is cheap show me the code”替换。 基本思想: 栗子:we are family 参考代码:void ReplaceBlank(char string[], int length){ //length为字符串的总容量 if (string == NULL || leng

2017-07-31 15:58:48 282

原创 两个栈实现一个队列,两个队列实现一个栈

栈的特性:先进后出 队列的特性:先进先出 两个栈实现一个队列 实现过程如图: 参考代码:template<class T>class Cqueue{public: Cqueue() {} ~Cqueue() {} void add(const T &node); T delete1();private: stack<T> s1

2017-07-31 15:23:40 200

原创 面试题:复杂链表的复制

题目:复制一个复杂链表。复杂链表就是在链表中的每个结点除了有一个 _next指针指向下一个结点外,还有一个_sbiling指针指向NULL或链表中的任意一个结点。 复杂链表的复制分为以下三步。 1、根据原始链表的每个结点N创建对应的结点N’,并把N’链接在N后面。 void CloneNode(Node* head){ Node* node = head; while (n

2017-07-19 13:13:05 335

原创 判断两个链表是否相交,若相交,求第一个交点

首先,判断这两个链表各自是否带环。故存在下面三种情况: 1、两个链表都没带环,此时两个链表可能相交。 2、一个带环,一个不带环,则不可能相交。 3、两个都带环,判断第一个链表fast与slow相遇的结点是否在第二个链表的环中,如果在,则相交(相交时,环是两个链表公有的)两个链表都没环,解法如下://判断两个无环单链表是否相交,如果两个无环但链表相交,则两个链表的最后一个结点一定相等。bool

2017-07-18 15:50:30 412

原创 设计一个不能被继承的类

C#中,被关键字sealed修饰的类不可被继承。 Java中,被关键字final修饰的类不可被继承。C++中,子类会自动调用父类的构造函数,也会自动调用父类的析构函数,为了让此类不被继承,可以将该类的构造函数和析构函数设置为私有的。如下:设计一个类不能被继承//设计一个类不能被继承class A{private: A() { cout << "A()" <<

2017-07-16 13:32:24 463

原创 面试题:合并两个有序的链表

题目:输入两个递增有序的链表,合并这两个链表后,使新链表中的结点 也是递增有序的。//递归方式实现两个有序链表的合并struct ListNode{ int _value; ListNode* _next; ListNode(int value) :_value(value) {}};ListNode* merge(ListNode* phea

2017-07-14 12:47:23 366

原创 面试题:求1+2+....+n的和

题目:求1+2+…+n的和,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)//1、递归int add(int n, int &sum){//n为0的时候即退出 n && add(n - 1, sum); return (sum += n);}void test1(){ int sum = 0;

2017-07-14 12:43:10 676

原创 shell字符串截取

对字符串的截取,是针对“行”来的分析的。 我们可以用cut命令来进行截取。 cut -c :以字符为单位取出固定字符区间 注:“-”表示截取第1和第4个之间所有的字符 “,”表示截取第1个和第6个字符 cut -d : 以某个字符为分隔符,打印指定列 注:以“,”为分隔符,显示第二列 以“:”为分隔符,显示第一列和第二列cut -

2017-07-09 12:38:28 291

原创 crond服务和crontab命令

**crond服务:**crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。linux系统调度可分为以下两类: 系统任务调度: 系统周期性所要执行的工作,比如写缓存数据到硬

2017-07-08 15:06:36 526

原创 C++模拟实现静态顺序表

#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<stdio.h>#include<stdlib.h>#include<assert.h>using namespace std;const int Max = 10;struct SeqListNode{ int data[Max]; size_t _s

2017-07-02 16:29:06 272

原创 硬链接与软链接

在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。  链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic l

2017-07-01 22:34:35 292

原创 shell进度条以及shell中背景和字体颜色的设置

代码如下: 运行结果: 颜色设置有如下选项: 将字体颜色设置为某种颜色,例:紫色 注意注意:空格#!/bin/bashbuf="hello world"while :do sleep 4 printf "\e[35m %s \e[0m\n" "$buf"done设置背景颜色,将背景设置为红色,字体颜色未做修改#!/bin/bashbuf="hello w

2017-06-29 13:10:59 411

原创 Shell脚本基础

shell属于解释性语言,shell脚本不需要编译,不需要声明,无数据类型,但需要解释器解释shell脚本的执行有以下几种方法: 本来创建一个文件夹,创建一个文件并将“hello world”写进文件需要执行三次,但如下写入shell脚本中,只需执行一次。 变量引用,在定义变量时不用,取变量值时要用 ,取变量值时要用。和C语言不同的是,Shell变量不需要明确定义类 型,事实上Shell变量的值

2017-06-15 16:15:12 277

原创 linux系统约定不同类型文件默认的颜色

•白色:表示普通文件•蓝色:表示目录•绿色:表示可执行文件•红色:表示压缩文件•浅蓝色:链接文件•红色闪烁:表示链接的文件有问题•黄色:表示设备文件•灰色:表示其它文件

2017-06-14 16:50:33 262

原创 构造函数与析构函数的比较

构造函数的作用:创建并初始化对象,即为对象成员变量赋初始值。 特点: 1、构造函数名与类名相同。 2、构造函数没有返回值。 3、构造函数不可以被直接调用。 4、定义了类没有定义构造函数时C++会提供默认构造函数,默认构造函数是无参构造函数,仅负责创建对象。 5、一个类可以有多个构造函数。 6、构造函数不可以是虚函数。原因:虚函数通过基类指针或引用来调用派生类的成员,调用前对象必须存在,

2017-06-13 13:33:45 1194

原创 求一组整数的第二大数

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;const int MINNUM = -32767;int find(int array[],int size){ if (size < 0 || size == 0)

2017-06-13 12:52:05 440

空空如也

空空如也

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

TA关注的人

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