自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 问答 (1)
  • 收藏
  • 关注

原创 简单web服务器的实现(C++)

一、具体功能实现GET方法请求解析 POST方法请求解析 返回请求资源页面 利用GET方法实现加减法 利用POST方法实现加减法 HTTP请求行具体解析 400、403、404错误码返回的处理注意:!!本人也是小白一只,这是刚刚开始学习网络编程写的东西,存在很多问题。也未用到RAII等机制,纯属是披着C++皮的C语言项目,类的封装也不是太好。也未经过压力、性能等测试。二、什么...

2018-09-20 20:41:25 89301 26

原创 利用fanotify进行文件系统实时监测的认识

目录对最近学习Fanotify的一些理解Fanotify知识总结fanotify基本功能fanotify类型函数fanotify_init()fanotify_markfanotify使用运用中的问题对最近学习Fanotify的一些理解Fanotify (fscking all notifiction and file access system) 是一个 notifier,即一种对文件系统变...

2019-08-20 15:26:35 4324

原创 同步、异步、阻塞、非阻塞IO总结(IO模型总结)

知识点概念IO操作概念同步、异步(IO模型中的概念,并非并发模式中的同步、异步)阻塞、非阻塞同步IO模型异步IO模型读写(read write)与阻塞和非阻塞各种IO模型异同对比IO操作概念在Unix系统中,一切都是文件。文件就是流的概念,在进行信息的交流过程中,对这些流进行数据的收发操作就是IO操作我们都知道unix(like)世界里,一切皆文件,而文件是什么呢?文件就是一串二进制流而已...

2019-04-09 22:51:53 22725 9

原创 HTTP协议进行多线程以及断点下载(没有实用意义的程序)

HTTP下载器实现实现功能具备知识点实现思路多线程下载原理.*td文件代码可扩展功能总结写完个人感觉,没有啥实用意义是因为想从服务器上下载的东西基本都是支持HTTPS协议下载的,并非HTTP了。实现功能多线程下载断点下载进度条显示具备知识点HTTP请求以及响应头多线程下载实现思路根据下载地址(仅仅限于HTTP下载)来解析下载地址中的FQDN以及指定的端口号,通过函数g...

2019-03-26 22:01:22 1050

原创 利用dup dup2函数实现简单的CGI服务器原理

dup函数和dup2函数dup,dup2都是属于创建文件描述符的函数,所以返回值也是一个文件描述符。有时候我们希望把标准输入重定向到一个文件的时候,或者把标准输出重定向到一个网络连接的时候,就可以通过这两个函数实现。简而言之,这两个函数就是复制文件描述符的。dup(oldfd)执行以后会返回一个新的并且是当前系统可用的最小整数值作为新的文件描述符,此时这个新的文件描述符将指向oldfd指向...

2018-08-02 20:50:24 858

原创 利用gethostbyname()和gethostbyaddr()函数获取主机完整信息

函数原型:gethostbyname函数是通过主机名称获取主机的完整信息。name参数是目标主机的主机 名称。 gethostbyaddr函数是通过IP地址获取主机的完整信息。addr是网络字节序的IP地址,len参数是IP地址的长度,type参数是IP地址的类型(合法类型包括AF_INET,AF_INET6) 两个函数的返回都是hostent结构体类型指针。hostent结构体定义如...

2018-08-02 12:37:25 7963 1

原创 数组中求四数之和(三数之和的思路的基础上)

题目:思路:请见三数之和点击打开链接因为是求四个数字之和,所以将i作为第一个数字,其他剩下的三个索引分别为left,mid,right,然后在i的遍历数组的时候,剩下的操作思路和三数之和是一样的。其中需要注意的是,因为求的是四个数字的和,所以left,mid,right分别就已经占用了三个数,所以i只能遍历到 nums.size()-3的前一个下标处。同理,在left遍历的时候,只能遍历到nums...

2018-07-13 00:10:42 1124

原创 最接近的三数之和(三数组问题变种)

题目:思路:在三数字之和的解题思路上,将所有的三数字之和遍历,然后进行更新最小值即可。其中需要注意的是所给的target减去三数字之和的话可能会为负数,所以要将负数值处理为正数,然后看哪三个数字之和最接近target值。其中若三数字之和大于了target值的话需要将right向升序数组的前方移动,小于的话需要将mid数值往升序数组后移动。三数之和解题思路点击打开链接。代码:class Soluti...

2018-07-11 13:08:34 699

原创 求三数之和为零的三元组集合

题目:思路:题目要求三数之和为零,即:a+b+c=0; 那么若满足b+c = -a的话就满足题目的第一个要求啦。假设-a = tem 那么 b+c=tem就说明满足条件。这样的话三数之和变成了两数之和,再两个数字和的基础上,只需要找到一个tem为定点以后,然后再判断数组中剩下的数字两两相加是否等于tem即可。若用暴力求解的话会超出时间限制。此时,假设该数组是一个有序数组(升序)的话,那么我们可以知...

2018-07-10 15:12:14 6993

原创 正则表达式匹配问题(暴力求解)

题目:预备知识:(1)正则表达式的概念是对字符串操作的逻辑公式,是事前定义好的一些特定的字符以及特定字符的组合。这里题目中的p就是正则表达式(字符模式)要判断s是否满足p的字符模式。正则表达式是描述了一种字符串匹配的模式,用来检查一个串中是否含有某种模式的子串,或者将匹配的子串替代又或者从里面取出符合某种模式的子串。所以并不是简单的看是否是子串的问题,例如:s="aaa" p="aaaaa"和s=...

2018-07-04 15:47:54 2191

原创 判断一个整数是否为回文数

一、题目描述二、思路(1)可以将该整数转换成字符串,根据字符串的长度奇偶性来确定中间位置,然后首尾进行对比是否是回文数字。此时需要额外空间来存储字符串,然后进行判断(2)可以将整数的最后一半数字进行整数反转,然后将反转的部分与数字的前部分进行比较,判断是否是回文数。也可以将整个整数进行反转然后进行比较,但是会发生溢出情况,所以可以选择只反转数字的后半部分,若与前半部分相同则为回文数。我选择的方案是...

2018-07-03 14:02:50 21050

原创 最长回文子串求解

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例:babad输出:bab(注意aba也是有效答案)思路:1、可以枚举出所有的子串,然后每次都判断该子串是否是回文,若是回文便更新最大长度,并且记录子串的开始位置和结束位置。2、可以从第一个字符为中心向两边检查,若以k为中心 ,那么i往K的左边检测,j往右边检测。若s[i]==s[j]那么说明从i-j的子串为回...

2018-06-22 19:44:46 301

原创 利用分治法求两个有序数组的中位数

也是看了一篇很好的博客,思路很清晰,只是有些地方感觉博主没有详细解释,后来理解了,做了一个小总结。原博客链接:点击打开链接题目还是昨天的那道题目:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。示例 1:nums1[1,3]nums2[2]中位数:2.0示例 2:nums1[1,2]nums2[...

2018-06-20 22:47:58 12891 3

原创 求两个排序数组的中位数

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。示例 1:nums1[1,3]nums2[2]中位数:2.0示例 2:nums1[1,2]nums2[2,3]中位数:(2+2)/2=2.0思路:因为是两个已经有序的数组,要求中位数,只需要将两个数组合并成一个有序数组,然后根据数组元素个数的奇偶性...

2018-06-19 15:44:30 1036 1

原创 求字符最长且不重复的子串长度(暴力以及滑动窗口解决)

题目:给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列  而不是子串。暴力解决方法:首先枚举出所有的子串

2018-06-15 16:05:34 4663 1

原创 线性表的一些简单操作(C++实现)

#include<iostream>using namespace std;template<class T>class linearList{public: virtual ~linearList(){}; virtual bool empty() const = 0; //判断线性表是否为空 virtual int size() cons...

2018-05-21 17:40:21 1681

原创 栈的简单实现

#ifndef _STACK_H#define _STACK_Hclass stack{private:    enum {MAX = 10};    int num[MAX];    int SIZE;public:    stack();    bool empty() const;    bool isfull() const;    bool push(const int &n);...

2018-05-15 19:36:50 246

原创 堆排序的思路以及代码的实现

关于堆的一些知识点回顾堆是一个完全二叉树完全二叉树即是:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。堆满足两个性质: 堆的每一个父节点数值都大于(或小于)其子节点,堆的每个左子树和右子树也是一个堆。 堆分为最小堆和最大堆。最大堆就是每个父节点的数值要大于孩子节点,最小堆就是每个父节点的数值要

2018-05-09 23:52:56 17687 5

原创 桶排序、冒泡排序、选择排序、快速排序回顾

桶排序第一次了解桶排序的时候,是在C语言课本的一个题目。题目大概意思是要将三万个学生的成绩进行排名,分数从0分到100分。桶排序的时间复杂度时O(M+N)。所以就可以申请一个大小为100的为int类型的数组,然后将数组初始化为0,再将数组的下标看作为分数,把数组元素中存储的数值对应着获得该分数的人数,这样分数就自己在数组中有了排名,最后再用循环依次输出,只是输出的时候要看该分数有多少人获得,就重复

2018-05-08 17:00:42 491

原创 死锁小笔记

互斥锁(互斥量)互斥量可以帮助线程同步对共享资源的使用,防止线程A试图访问一个共享变量的时候,此时线程B正在对这个共享变量进行修改。目的保护共享变量的的访问。死锁死锁情况一般是一个线程需要访问多个不同的共享资源的时候,但是每一个资源又都由不同的互斥量来管理,当超过一个线程(比如子线程已经对互斥量b进行量加锁后,此时主线程试图对互斥量b进行加锁时候,要等待子线程中的b解锁,若此时子线程的下一步执行操作

2018-02-02 21:28:22 243

原创 DFS和BFS学习总结

DFS深度优先遍历深度遍历就是在图中从一个顶点开始,按照一个规则不重复地走下去。就是不撞南墙不回头一样。假如从A顶点开始,按照一个规则去走(假如我们按照一直字典顺序走)那么就从A走到B再从B走到了C,走到C后再按照字典顺序的时候,发现A已经走过,那么此时就退回到C点,选择另一个D走下去。就和树的前序遍历是一样的。实现方式1、递归实现(通过邻接矩阵来实现)void DFS(MGrap G. int i

2017-12-04 11:56:54 606

原创 通过DFS和BFS判断无向图是否连通

基础定义无向图:没有方向的图 连通图:任意两个顶点可以直接或者通过其他顶点走通,那么就是连通图,和完全图需要区别(完全图是需要任意两个顶点直接有路)遍历图的基本方法来判断是否连通DFS和BFS有的步骤都是从一个顶点开始,然后判断该顶点是否被访问,而且该顶点和其他顶点是否有关系,若有关系并且没有访问过,就往下访问,要是无向图是连通的,那么这个过程会依次下去遍历所有节点。所以通过这个特性,就可以设置一

2017-11-27 22:18:30 14041 2

原创 二叉树的递归与非递归遍历

#include<stdio.h>#include<stdlib.h>#include<unistd.h>#define Size 100#define False 0#define Ture 1/*树的存储结构*/typedef struct Tree { char data; struct Tree *Lift; struct Tree *Right;}Tr

2017-11-19 14:08:22 307

原创 cin输入错误处理

开始学习cin, cin.get( ), cin.getline( )觉得还好。直到昨天错误地写了一个代码的时候,发现输入不正确了。然后对这个问题进行了一些总结。cin(输入是以回车键结束,遇到空格停止读取)cin是从缓冲区读取数据的,那么当缓冲区有残留的数据的时候,按理来说cin也应该从缓冲区读取,并会跳过键盘输入的这个过程。 代码:#include<iostream>using namesp

2017-11-13 14:44:12 3694

原创 TCP/IP协议族体系结构及其主要协议

一、主要四层协议系统注:顺序为从下到上存在在内核空间的:数据链路层网络层传输层存在在用户空间的:列表内容二、对四层协议系统的简单理解1、数据链路层(1)常用协议是ARP和RARP,其中RAP是根据IP地址获取一个物理地址,而RARP则是相反的,通过一个物理地址获得IP地址。(2)ARP用途:数据链路层是通过物理地址去寻找一个机器的,比如MAC地址。所以网络需要把目的IP地址转化成物理地址

2017-11-07 20:15:04 2297

原创 稀疏矩阵(快速定位转置)

三元表 三元表就是存储稀疏矩阵非零元素的行列位置及其元素值的一个表。对稀疏矩阵进行了压缩吧。快速定位转置 该算法是对要被转置矩阵的三元表只进行一次扫描,使得所有的非零元素一次性就被存放到装置的三元表里。所以要预先确定原来矩阵每一列的第一个非零元素的位置,那么接下来的元素在转置的时候根据上一个元素在三元表的位置,可以推出自己的位置,并且依次放入应有的位置。所以同一列中有多少个非零元素,那么转置之

2017-11-05 13:26:49 885

空空如也

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

TA关注的人

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