自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 微型个人博客服务器

Http相关简介Http是应用层的基于请求响应的一个协议, 其中Http的请求响应可以分为四部分. 请求行, 请求报头,空行, 请求正文.其中请求行包括了请求方法, url, 版本号, 请求报头包括请求属性, 冒分割的键值对, 每组属性之间都以换行的形式分开, 最后一空行作为请求的结束标识. 最后一部分是请求正文.当请求正文存在的时候, 会在头部信息中有一个Content_Length的属性标...

2018-08-09 18:49:34 779

原创 java中引用传递

基本概念栈内存所谓的栈内存就是存储进程在运行过程中变量的内存空间堆内存所谓的堆内存就是存储系统中数据的内存空间数组相关的引用传递先来看一段代码public class ArrayDemo { public static void main(String[] args) { int[] x = null; x = new int[3]; ...

2018-11-04 14:29:40 256

原创 比较ArrayList和数组的区别

区别1:创建时的区别一般数组在创建的时候都需要指定数组的大小,但是ArrayList不需要指定数组的大小//创建一个ArrayList对象ArrayList<String> myList = new ArrayList<String>();//创建一个数组String [] myList = new String[2];区别2:赋值时的区别//数组在存放对象...

2018-11-02 16:44:50 2587

原创 房多多面试总结

测试一个ATM机功能上取钱    正常        要取的钱的面值是否支持ATM机服务        要取的钱的数目是否小于等于存的钱的数目        要取的钱的数目大于存钱的数目    异常        取钱的时候操作出现异常,导致吞卡现象        插入的卡是其他银行的卡        卡里面已经没有钱了存钱    正常        存入的钱数在规定的范...

2018-09-28 17:43:46 771

原创 进程的通信

管道什么是管道由于进程之间是相互独立的,因此在进程与进程之间进行相互联系的时候,此时就需要采用一种机制,通过管道的方式将进程一个进程的执行数据交给另外一个进程,此时就可以以通过管道来实现匿名管道和命名管道匿名管道 创建一个匿名管道的方式是pipe(int pipe[2]) 要创建一个匿名管道,此时两个管道之间必须有父子关系,同时匿名管道对数据的读取是基于流的方式实现的,,同...

2018-09-05 10:43:00 180

原创 网络五层模型

TCP/IP五层模型应用层:HTTP,HTTPS协议,其中HTTP没有对数据进行加密操作,但是HTTPS对数据进行了加密操作 其中HTTP端口号一般是80/8080等等,HTTPS端口号是443,SSH端口号一般是22,ftp是21 HTTP协议报头:首行:请求方法,url,协议版本请求报头:HOST:主机Connection:长连接还是短连接Content-Lengt...

2018-09-01 21:52:57 4375 1

原创 软件测试相关

软件测试模型V模型:用户需求->需求分析与系统->概要设计->详细设计->编码->单元测试->集成测试->系统测试->验收测试 W模型: 开发:用户需求->需求分析与系统设计->概要设计->详细设计->编码->集成-&

2018-09-01 20:23:29 321

原创 小知识点总结

用户输入一个url之后到整个页面返回给客户这个过程都经历了一些什么首先url是为了让人记忆方便的,计算机在进行网络传输的过程中只能通过ip地址找到对应的主机,所以当输入一个ip地址的时候,此时就需要找对应的url,首先从浏览器中取查找ip地址,再到系统中去查找,再到域名解析服务器中去查找,直到找到根域名服务器,此时就会出错. 当找到对应的ip的地址之后此时DNS服务器就会将这个ip地址进行返...

2018-09-01 17:42:36 182

原创 五种IO模型

阻塞IO模型在内核将数据准备好之前, 进程将会一直等待, 直到内核将数据全部准备好非阻塞IO模型如果数据还没有准备好, 内核将会向当前进程返回一个 EWOULDBLOCK 错误码, 同时当前进程会不断的进行返回, 轮询式的取检查是否有数据准备好信号驱动模型要想实现信号驱动模型, 必须在之前给当前进程注册一个 SIGACTION 信号, 然后返回, 当内核中数据到达的时候...

2018-08-26 20:23:38 211

原创 C++异常

基本概念在C++中所谓的异常就是当一个函数在执行的时候发现一个自己无法处理的错误, 此时就将该异常扔调用自己的函数,或者间接调用自己的一个函数,取处理这个错误, 此时这种情况就叫异常异常的捕获和抛出异常通过三个个机制 try 和 catch来捕获以及throw抛出, 编译器在编译的时候通过检查throw后面的类型, 然后选择出一个距离自己最近并且和自己最符合的一个函数取执行异常处理相应...

2018-08-08 10:13:35 184

原创 软件测试相关概念

什么叫软件测试软件测试就是测试产品没有错误,同时又证明软件是可以正确运行的测试和调试的区别调试一般都在开发期间 ,测试是伴随着整个软件的生命周期, 调试是发现程序中问题并且解决问题, 测试是发现程序中的缺陷软件测试的目的和原则目的:验证软件有没有问题 原则:以客户为中心, 遵循软件测试的规范,标准和要求需求满足用户期望或者文档条件和权能. 用户需求:比较粗...

2018-08-05 09:43:48 205

原创 模板实现栈队列以及链表

模板实现链表//test.h#include <iostream>#include <cstdio>#include <assert.h>using namespace std;template <class T>struct ListNode{ ListNode* _prev; ListNod

2018-08-01 09:33:12 215

原创 多态相关概念

多态相关注意事项所谓的多态就是指函数有多中状态, 在C++中通常是通过父类指针指向子类对象的方法实现多态, 这样父类可以通过子类的类型调用不同的方法. 即实现一个接口多种方法, 多态的引用是为了实现接口复用 在 C++中多态是通过虚函数来实现的. 子类通过对父类相关接口进行重写实现一个接口多种状态. 虚函数允许子类对父类相关接口进行重写, 多态性的条件:派生类的虚函数必须和基类的...

2018-08-01 09:17:56 219

原创 C++::模板

模板的简单介绍C++中模板是为了能够使得函数或者类实现范型编程的目的, 同时C++模板的出现是为了避免代码的冗余 举个例子void Swap(int& a, int& b){ int tmp = a; b = a; a = b;}void Swap(char& a, char& b){ char tmp = a;...

2018-07-25 09:02:19 196

原创 C++::探索对象模型

前面我们已经知道, 在没有虚函数的时候, 对象的大小就是对应的成员变量的大小, 而成员函数不会占用对象的空间, 今天我们来讨论一下, 当类中定义了虚函数的时候, 此时对象的大小以及对象模型非继承下的对象模型class Base{public: virtual void func1() { cout << "Base::func1()" &...

2018-07-19 10:04:18 204

原创 C++:继承和多态

虚函数:只有类的成员函数才能定义为虚函数虚函数 在类的成员函数前面加上一个 virtual 关键字, 此时这个成员函数就叫做虚函数 虚函数 当在子类中定义了一个与父类完全相同的虚函数的时候,此时就叫做子类的虚函数重写了父类的虚函数 构成多态的条件 派生类重写基类的虚函数实现多态, 必须要求函数名相同参数列表以及返回值相同(协变除外) 协变 派生类重写基类的虚函数的时候函数名相同, 参数列...

2018-07-17 09:39:48 205

原创 C++:String的写时拷贝

String的写时拷贝//test.h#pragma once#include <iostream>#include <string.h>#include <cstdio>#include <assert.h>using namespace std;#define TESTHEADER printf(&q

2018-07-16 14:35:16 227

原创 C++:String深拷贝

#include <iostream>#include <cstdio>#include <string.h>#include <assert.h>using namespace std;#define TESTHEADER printf("\n================%s===============\n", __FUNCTIO...

2018-07-16 14:31:48 865

原创 C++:Vector和List的实现

Vector的实现//test.h#pragma once#include <iostream>#include <cstdio>#include <string.h>#include <assert.h>using namespace std;typedef int DataType;#define TE

2018-07-16 14:24:34 659

原创 C++继承

三种继承关系我们都知道成员访问限定符总共有三种, public, protected, private.那么对应到继承关系上的时候也就有对应的三种继承关系, public, private, protected. C++中的继承是为了实现代码复用的技术思想.简单来说就是一个对象可以不用定义直接使用另一对象的属性和方法.原始类称为基类,继承类称为派生类,它们是类似于父亲和儿子的关系,所以也分别...

2018-07-16 14:17:19 180

原创 俄罗斯方块

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/time.h>#include <signal.h>#include <unistd.h>#include "keyboard.h"int FC = 5;int BC

2018-07-13 18:44:02 227

原创 动态内存管理

数据的元素存储于内存中连续的位置上,当一个数组被声明时,他所需要的内存在编译时就被分配。当然,我们也可以使用动态内存分配在运行时为他分配内存。在动态内存分配中我们需要经常用到malloc,free,calloc,realloc这四个函数malloc/calloc/realloc的作用void* realloc(void* ptr, unsigned newsize);void* mall...

2018-07-10 12:46:02 211

原创 3-V2-类和对象 -- const&内联 & 静态成员 & 友元

const修饰成员函数在成员函数后面加一个const, const修饰this指针指向的对象, 保证调用这个const成员函数的对象在函数内不会被改变 注意:成员函数如果不修改成员变量,则加上const,成员函数如果要修改成员变量,此时就不能给其加上const修饰了 1.const对象不能调用非const成员函数,可以调用const成员函数 2.非const对象可以调用非const成...

2018-07-10 10:10:28 137

原创 日期类的实现

#include <iostream>#include <assert.h>#include <assert.h>#include <cstdio>using namespace std;class Date{public: // 1.无参的构造函数 // Date() // { //

2018-07-07 22:32:28 136

原创 3_V1-类和对象 -- 默认成员函数

定义一个日期类#include <iostream>#include <assert.h>using namespace std;class Date{public: void Display();private: int _year; int _month; int _day;};注意:在定义一个类的时候...

2018-07-07 22:30:26 175

原创 C++的基本认识

简单介绍C++语言特点支持数据封装和数据隐藏在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。 在面向对象的程序设计中,将数据和对该数据进行合法操作的函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。每个给定类的对象包含这个类所规定的若干私有成员、公有成员及保护成员。完好定义的类一旦建立,就可看成完全封...

2018-07-03 16:56:48 1241

原创 C++第一节课

C++数据类型几个概念命名空间是C++标准库引入的,其中命名空间可以解决变量冲突问题,当出现局部变量和全局变量同名的时候, 局部变量优先被访问.同时命名空间的格式如同一下代码namespace name1{int a = 0;}namespace name2{int a = 2;}注意C++中的所有组件都是在一个叫做std的命名空间中被定义.这里来看两段...

2018-06-30 19:05:26 839

原创 mysql思维导图

后期会不断进行更新

2018-06-26 21:27:35 3149 2

原创 排序

排序1.冒泡排序冒泡排序较为简单,总体思路如下 void Swap(int*a, int* b){ int tmp = *a; *a = *b; *b = tmp;}void BubbleSort(int array[], int size){ if(size <= 1) { return; } ...

2018-06-24 23:18:57 128

原创 多路转接select1

高级IO通常情况下所有的 IO 都可以分为两步来完成, 第一步等待, 第二步数据搬迁, 为了提高 IO 效率通常所运用的方法就是减少等待的时间举个钓鱼的例子现在有五个人张三, 李四, 王五, 赵六, 钱七. 它们五个人来到湖边来钓鱼. 而它们五个人的钓鱼方各不相同. 张三钓鱼方法: 往鱼钩上挂上鱼饵, 然后一动不动地盯着鱼饵, 不管有任何人来叫张三, 张三谁都不理, 唯一关注...

2018-06-10 22:12:19 229

原创 TCP粘包问题

TCP的粘包问题首先明确一点, 此处的”包”指的是数据在传输过程中的数据包. 在进行数据报的传输过程中 TCP 的报头信息中只明确指出了 16 位的序列号和 16 为的确认序列号, 并没有明确指出报文的长度是多少, 当接受方接受到这一大堆的数据包的时候, 此时由于 TCP 是面向字节流的, 于是在对端的接收缓冲区中就会有一大批的数据包, 那么就有可能是发送端在发送的过程中发送了10个报文, 而...

2018-06-04 12:59:38 176

原创 三次握手四次挥手

三次握手四次挥手三次握手简单介绍首先由客户端发出连接请求, 此时客户端向服务器端发送一个 SYN 请求建立连接, 自己进入 SYN_SENT 状态, 当服务器端接收到这个 SYN 请求报文的的时候此时服务器向客户端发送一个 SYN + ACK 表名客户端发送过来的请求自己已经收到, 进入SYN_RCD状态, 客户端收到这个报文时, 此时客户端认为连接建立好了, 于是给服务器端发送一...

2018-06-04 12:58:38 197

原创 数据库以及表的基本操作

一.数据库的操作create database[if not exists]数据库名;创建一个名字为company2的使用utf8忽略大小写的数据库create database company charset=utf8 collate utf8_general_ci;创建一个数据库区分大小写create database company1 charset=utf8 collate...

2018-06-02 21:55:54 348

原创 排序

冒泡排序void Swap(int*a, int* b){ int tmp = *a; *a = *b; *b = tmp;}void BubbleSort(int array[], int size){ if(size <= 1) { return; } int bound = 0; for(; ...

2018-05-31 21:45:32 152

原创 布隆过滤器

相关数据结构#define BloomHashCount 2typedef uint64_t (*BloomHash)(const char* str);typedef struct BloomFilter{ Bitmap bm; BloomHash bloom_hash[BloomHashCount];}BloomFilter;初始化void B...

2018-05-31 21:40:38 136

原创 位图

相关数据结构typedef uint64_t BitmapType;#define BITMAPMAXSIZE 1000 //位图所能容纳的位数typedef struct Bitmap{ uint64_t* data; uint64_t capacity;}Bitmap;初始化void BitmapInit(Bitmap* bm, uint64_t c...

2018-05-31 21:26:41 162

原创 哈希表2

哈希表的初始化void HashInit(HashTable* ht, HashFunc func){ if(ht == NULL) { return; } ht -> size = 0; ht -> func = func; size_t i = 0; for(; i < MaxSize; i++)...

2018-05-31 21:21:11 118

原创 哈希表1

1. 初始化void HashInit(HashTable* ht, HashFunc func){ if(ht == NULL || func == NULL) { return; } ht -> size = 0; ht -> func = func; int i = 0; for(; i < ...

2018-05-31 21:16:42 168

原创 TCP相关代码

TCP 多进程代码//tcp_server.c#include<stdio.h>#include<error.h>#include<sys/types.h>#include<string.h>#include<unistd.h>#include<sys/

2018-05-26 11:39:57 1408

原创 netstat 相关命令解析

1.列出所有的端口 netstat -a 列出TCP协议的端口 netstat -at UDP协议的端口 netstat -au2.列出处于监听状态的socket netstat -l 列出监听的TCP端口 netstat -lt 列出监听的UDP端口 netstat -lu 列出监听的UNIX端口 netstat -l...

2018-05-26 11:17:35 854

空空如也

空空如也

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

TA关注的人

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