自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

summer-yiru

一个女孩值得拥有两件事,优秀和美好

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

原创 每天3道面试题

一,在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.class Solution {public: bool Find(int target, vector<vector<int> > array) { ...

2018-08-20 23:38:04 308

原创 基于Flask实现个人博客网站

一 项目需求     功能需求:基于Flask框架,实现个人博客 ,包括主页,文章列表页,文章详情页二 项目核心流程数据库 函数和渲染 处理表单并跳转 读取数据和渲染三 项目代码实现     欢迎点击四 项目成果展示启动服务器  浏览器输入网址访问文章列表页文章详情页五 项目成果性能测试当并发800时 结果如下: 每秒钟响应请求数:2348 ...

2018-08-20 15:33:25 16909 6

原创 每天3道面试题

一,给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针next1. 该节点存在右子节点,则下一个节点是右子树的最左节点。 2. 该节点不存在右子节点,则下一个节点是该节点的第一个父子关系为左的祖先节点中的父节点, 因为如果遍历的节点是父节点的右节点说明父节点已遍历过了#include<cstdlib...

2018-08-13 22:59:20 431

原创 基于自定制HTTP服务器实现mini版个人网站&selenium+python自动化测试个人网站

一 项目需求     功能需求:自定制HTTP服务器框架,搭建个人网站主页,展示个人信息,链接博客,链接github,链接个人作品二 项目核心流程读取并解析请求 根据请求计算响应 把响应写回到客户端三 项目代码实现     欢迎点击四 项目成果展示启动HTTP服务器        浏览器上输入网址     服务器端信息链接到个人主页    下拉菜单展...

2018-08-13 12:15:16 398

原创 this指针~类的静态成员~类的const成员~内联函数

什么是this指针?this 是 c++中的一个关键字,也是一个常量指针,指向当前对象(所谓的当前对象,就是正在使用的对象),也就是当前对象的首地址。通过this指针,可以访问当前对象的成员变量和成员函数。 this指针的类型    类类型 * const this指针并不是对象本身的一部分,不会影响sizeof的结果  this的作用域在类成员函数的内部 this指针是类成员函数的第...

2018-08-05 14:58:52 325

原创 C++之类的引入

类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件   1>C语言和C++中struct的区别      1>C语言中:struct不能有函数成员,而C++的struct可以有.(C++中的struct能继承,能实现多态)。      2>C中struct是没有权限的设置的,C++中,struct的成员默认访问说明符为public(为了与...

2018-08-05 10:17:48 308

原创 C++之引用和函数重载

C++之引用C语言中有两种传参方式  传值-----C语言中,在函数调用的过程中会生成一份临时变量,最终把实参的值传递给新分配的临时变量(形参)  传址-----通过指针接收实参的地址C++中这里我们引入---引用引用的概念引用不是新定义一个变量,而是给已经存在的变量取了一个别名,编译器不会给引用变量开辟内存空间,它和它引用的变量共用同一块内存空间类型& 引用变量(对象...

2018-08-05 00:09:20 361

原创 每天3到面试题

一,输入一个链表,求链表是否带环?(快慢指针,快指针一次走2步,慢指针一次走一步,若带环肯定会相遇)#include<stdlib.h>class Solution {public: bool hasCycle(ListNode *head) { if(head==NULL || head->next==NULL) ret...

2018-08-04 21:36:47 145

原创 每天3到面试题(代码的鲁棒性)

一,输入一个链表,反转链表后,输出新链表的表头。#include<stack>class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(NULL==pHead || NULL == pHead->next) return pHead; stac...

2018-08-01 17:13:41 231

原创 C++面向对象之多态(二)-----不同继承方式下对象的模型(不带虚函数VS带有虚函数)

不同继承方式下对象的模型(带虚函数的)   我们采用比较的方式深入理解不同继承方式下的对象模型A>①单继承(不带虚函数)②单继承(带虚函数)B>①多继承(不带虚函数)②多继承(带虚函数)...

2018-07-08 22:31:10 222

原创 C++面向对象之初始多态(一)

C++面向对象之多态(一)多态的概念    同一个事物,在不同场景下表现多种形态.这里举一个牵强的列子列如C/c++语言中的*,int *p=&a表示指针,*p表示解引用,a*b中表示乘号多态的分类    A>静态多态:编译期间完成的,编译器根据函数实参的类型,推断出具体该调用哪一个函数.      a>函数重载      b>泛型编程    B>动态多态:程序运行...

2018-07-07 08:44:39 245

原创 程序内存分布

C/C++程序内存分布 在多任务的操作系统中的每一个进程都运行在一个属于它自己的内存沙盘中,这个沙盘就是虚拟地址空间,在32位模式下,它总是一个4GB的内存地址块.这些虚拟地址通过页表映射到物理内存,页表被操作系统维护并被处理器引用.每一个进程拥有属于它自己的页表.C语言中:1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区...

2018-07-04 14:05:22 355

原创 I/O多路转接---epoll

初始epollepoll是为处理大批量句柄而做改进的poll(句柄类似遥控器的作用)epoll几乎结合了poll的所有优点,并将poll的缺点加以改进.epoll相关的系统调用epoll的使用三个过程:* 调用epoll_create创建一个epoll句柄。* 调用epoll_ctl,将要监控的文件描述符进行注册。(用户告诉操作系统)* 调用epoll_wait,等待文件描述符就绪。(操作系统...

2018-07-04 13:28:49 220

原创 I/O多路转接---poll

I/O多路转接---pollA>poll函数接口#include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout); // pollfd结构 struct pollfd { int fd; /* file descriptor */ short events; ...

2018-06-26 00:17:33 189

原创 I/O多路转接---select

初始select系统提供select函数来实现多路复用输入/输出模型select系统调用是用来监视多个文件描述符的状态变化的程序会停在select这里等待,直到被监视的文件描述符有一个或者多个发生了变化.select函数原型selsect函数原型#include<sys/select.h>int select(int nfds,fd_set *readfds,fd_set*write...

2018-06-24 15:31:28 218

原创 传输层---深入理解UDP/TCP协议

传输层---初识UDP/TCP协议传输层:负责数据能够从发送端传输到接收端我们先来看一下端口号:   1> 端口号(port)标识了一个主机上进行通信的不同应用程序.     在TCP/IP当中,用"源IP","源的端口号","目的IP","目的端口号","协议号"这五元组来标识一个通信.2> 端口号范围划分    0-1023:知名端口号,HTTP,FTP,SSH等这些广为使用的

2018-06-24 15:22:43 379 1

原创 高级IO--五种IO基本模型

高级IO--五种IO基本模型     A>阻塞IO         a>阻塞IO:在内核将数据准备好之前,系统调用会一直等待,所有的套接字,默认是阻塞的方式.         b>阻塞Io模型.           B>非阻塞IO         a>非阻塞IO:在内核将数据准备好之前,系统仍然然会返回,返回的是EWOULDBLOCK错误码.(非阻塞IO往往需要程序员...

2018-06-07 18:21:51 453

原创 十大经典排序算法

十大经典排序算法(附有动图演示哦)       A>交换排序---冒泡排序  a>冒泡排序(Bubble Sort) 算法描述:比较两个相邻的元素,如果升序的话,前面的比后面的大,就交换,这样一轮下来,就会找到这组数据中最大的元素,然后抛开这个元素继续重复上述步骤.知道排完为止.      b>冒泡排序(Bubble Sort)动图演示 b>冒泡排序(Bubble Sort...

2018-05-29 12:17:07 34717 13

原创 哈希扩展---布隆过滤器(bloom filter)

哈希扩展---布隆过滤器(bloom filter)1>认识布隆过滤器:可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构。它可以通过一个Hash函数...

2018-05-23 11:02:36 260

原创 哈希变形---位图

哈希变形---位图(bitmap)1>所谓的位图就是用bit位来存放数据的某种状态,适用于大规模的数据.2>位图实现BitMap.htypedef struct BitMap{ int * Bit_bset;//位的集合 int _capacity; int _size;//有效bit位的个数}BitMap;void BitMapInit(BitMap * bmp,int ...

2018-05-23 10:45:55 163

原创 搜索结构之哈希-----开散列

搜索结构之哈希-----开散列开散列法又叫链地址法(开链法)。开散列法:首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。设元素的关键码为37, 25, 14, 36, 49, 68, 57, 11, 散列表为HT[12],表的大小为12,散列函数为Hash(x) = x % 11...

2018-05-17 15:45:11 186

原创 搜索结构之哈希-----闭散列

搜索结构之哈希-----闭散列解决哈希冲突两种常见的方法是:闭散列和开散列闭散列闭散列:也叫开放地址法,当发生哈希冲突时,如果哈希表未被装满,说明在哈希表中必然还有空位置,那么可以把key存放到表中“下一个” 空位中去那如何寻找下一个空余位置?线性探测设关键码集合为{37, 25, 14, 36, 49, 68, 57, 11},散列表为HT[12],表的大小m = 12,假设哈希函数为:Hash...

2018-05-17 10:42:48 269

原创 搜索结构之哈希----初识哈希

搜索结构之哈希1>顺序搜索以及二叉树搜索树中,元素存储位置和元素各关键码之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。搜索的效率取决于搜索过程中元素的比较次数。2>理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数...

2018-05-17 10:04:45 268

原创 网络编程套接字---UDP TCP

网络编程---UDP   TCP   认识socket   netstat -nltp 查看网络服务  socket可以看成是用户进程与内核网络协议栈的编程接口。  socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。    socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4、IPv6    认识UDP协议(传输控制协议)         ...

2018-05-17 08:16:27 318

原创 linux信号----信号阻塞

linux信号----信号阻塞信号在内核中的表示:信号在内核中一般有三种状态:1)信号递达(Delivery):实际执行信号的处理动作称为信号递达。2)信号未决(Pending):信号从产生到递达之间的状态。3)信号阻塞(Block):被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意:阻塞与忽略是不同的,只有信号被阻塞就不会递达,而忽略是在递达之后可选的一种处...

2018-05-16 17:20:51 309

原创 搜索结构之二叉搜索树

搜索结构之二叉搜索树:二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树      若它的左子树不为空,则左子树上所有节点的值都小于根节点的值      若它的右子树不为空,则右子树上所有节点的值都大于根节点的值      它的左右子树也分别为二叉搜索树二叉搜索树的实现递归和非递归:BSTree.h#pragma once//二叉搜索树---左子树比根节点小,右子树比根节点大...

2018-05-16 00:09:27 174

原创 堆的基本操作和应用

堆的基本操作Heap.h#pragma once//指针可以赋值,类型不可以赋值typedef int(*Compare)(DataType , DataType );//compare是一个类型typedef int DataType;typedef struct Heap{ DataType* _array; int _capacity; int _size; Compare...

2018-05-15 16:21:42 153

原创 信号初识

系统定义的信号列表: [axia@localhost sharememry]$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIGPIPE 1...

2018-05-11 17:37:56 195

原创 进程间关系和守护进程

进程组/作业/会话1.进程组每个进程除了有一个进程ID之外,还属于一个进程组.进程组是一个或多个进程的集合.通常,它们与同一作业相关联,可以接收来自同一终端的各种信号.每一个进程组有一个唯一的进程组ID,每一个进程组都可以有一个组长进程.组长进程的标识是进程ID与进程组ID相同.组长进程可以创建一个进程组,这个进程组中 只要有一个进程 存在,这个进程组就存在。与组长进程是否存在无关. 2.作业sh...

2018-05-09 23:45:15 140

原创 进程间通信---管道

进程间通信----(IPC)InterProcess Communication一:管道管道(包括无名管道和命名管道),通常指无名管道,是 UNIX 系统IPC最古老的形式。[含义]:管道是一个进程的数据流到另一个进程的通道,即一个进程的数据的输出作为另一个进程的数据的输入,管道起到了桥梁的作用。比如:当我们输入: ls -l | cat test .其中ls和cat是两个进程,|代表管道,意思是...

2018-05-01 19:36:54 143

原创 队列--栈--二叉树的基本操作和面试题

队列--栈--二叉树的基本操作和面试题Queue//#ifndef __TREE_H__//#define __TREE_H__#pragma onceextern struct BinTreeNode;typedef struct BinTreeNode* QueueDataType;typedef struct QueueNode{ QueueDataType _data; s...

2018-04-30 15:42:09 510

原创 每天3到面试题

二分查找:思路:利用二分查找的特点,数组内的数据是依次递增的特点,可以将数组中的中间地址取出来依次比较,如果要查找的数大于中间值,则必然在后半段,首地址就会变成middle + 1,如果要查找的小于中间值,则必然在前半段,尾部地址变成middle - 1,直到要查询的数与数组内的某个数相等为止。3种求两个平均值的方法z = (x + y) >>1;z = x + ((y-x) >...

2018-04-05 11:45:54 151

原创 链表的基本操作和面试题

链表的基本操作和面试题(不带头结点的单链表)SList.h#define _CRT_SECURE_NO_WARNINGS 1typedef int DataType;typedef struct Node{ struct Node* _pNext; DataType _data;}Node, *PNode;// 链表初始化void SListInit(PNode* pHead);...

2018-04-02 19:16:58 222

原创 linux下实现进度条

linux下实现进度条-----首先我们得了解一下进度条的原理1.全缓冲 ,全缓冲指的是系统在填满标准IO缓冲区之后才进行实际的IO操作;注意,对于驻留在磁盘上的文件来说通常是由标准IO库实施全缓冲。 2.行缓冲,在这种情况下,标准IO在输入和输出中遇到换行符时执行IO操作;注意,当流涉及终端的时候,通常使用的是行缓冲。 3.无缓冲,无缓冲指的是标准IO库不对字符进行缓冲存储;注意,标准出错流st...

2018-03-27 18:33:53 622

原创 进程间通信----信号量

进程间通信----信号量Linux中的内存空间分为系统空间和用户空间。在系统空间中:由于各个线程的地址空间是共享的,即一个线程可以随意访问 kernel中的任意地址,所以无需进程通信机制的保护。而在用户空间中:每个进程都有自己的地址空间,一个进程要和另外一个进程通信,必须陷入到有足够权限访问其他进程的kernel中,从而与其他进程通信。信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个...

2018-03-27 18:15:59 306

原创 进程间通信---共享内存

进程间通信---共享内存   ------->双向通信   ------->仅是一块内存,可以随意写入数据   ------->无同步互斥   ------->生命周期随内核   -----共享内存是最快的IPC形式.共享内存的本质是物理内存,一旦这样的内存映射到共享它的进程的地址空间,这些空间不涉及内核.进程是一个独立的资源管理单元,不同进程间的资源是独立的,不能在一个进...

2018-03-26 19:24:41 273

原创 进程间通信----消息队列

Linux进程间通信——使用消息队列消息队列,就是一个消息的链表,是一系列保存在内核中消息的列表。用户进程可以向消息队列添加消息,也可以向消息队列读取消息。----->双向通信----->用于随意进程------>面向数据块(链表)------>自带同步互斥------->生命周期随内核消息队列与管道通信相比,其优势是对每个消息指定特定的消息类型,接收的时候不需要按照...

2018-03-25 19:15:52 447

原创 静态顺序表的基本操作

顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。顺序表的基本操作:seqlist.h#...

2018-03-23 16:37:19 346

原创 数组与指针

❀在C语言中,指针就是一个地址,不管是什么类型的指针,它都代表了一个地址❀指针的类型是对于指针指向的内容来说的,比如char类型的指针代表其指向的地址内容是char类型的,指定类型是为了在取数据的时候知道取多少个字节。比如一个指针名为ptr,假设指向0xFFFF0000如果指针是char类型的,也就是char *ptr = 0xFFFF0000;如果我们取ptr所指向的值,就是0x01,依次类推,...

2018-03-05 17:21:29 170

原创 函数栈帧的创建

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>int Add(int x,int y){ int z = 0; z = x + y; return z;}int main(){ int a = 10; int b = 20; int ret = 0; ret =...

2018-03-01 16:53:18 374

空空如也

空空如也

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

TA关注的人

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