自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 计算机网络分层结构一

计算机网络分层结构一7层OSI参考模型应用层​ 所有能和用户交互产生网络流量的程序​ 典型应用层协议 FTP 文件传输 SMTP 电子邮件 HTTP 万维网表示层​ 用于处理在两个通信系统中交换信息的表示方式功能一 数据格式变换功能二 数据加密解密功能三 数据压缩和恢复会话层​ 向表示层实体/用户进程提供建立连接并在连接上有序地传输数据​ 这是会话,也是建立同步(SYN)功能一 建立、管理、终止会话功能二

2021-08-18 15:56:22 177

原创 云备份项目

项目名称:云备份项目简介: 搭建云备份服务器与客户端,实现客户端针对主机上特定目录下的文件的自动进行备份到云端,并且支持通过浏览器进行查看与下载,并且支持断点续传功能。整个传输过程支持ssl加密传输。概要设计:客户端模块:Windows下的客户端程序功能需求:自动对指定目录下的文件进行备份模块划分:目录监控模块:对指定目录下的文件进行判断哪些文件需要备份1.新增文件; 2.被修改过的文件网络通信模块:实现将文件上传备份到云端的功能服务端模块:Linux服务器功能需求: 备份客户端上传的文

2021-08-18 15:07:53 284

转载 计算机网络的性能指标

计算机网络的性能指标速率数据率 数据传输率 或比特率连接在计算机网络上的主机在数字信道上传ongoing数据位数的速率单位 b/s kb/s Mb/s Gb/s Tb/s速率转化存储容量带宽用来表示网络的通信线路传送数据的能力,通常是指单位时间内从网络中的某一点到另一点所能通过的最高数据率 单位是“比特每秒”网络设备所能支持的最高速度吞吐量表示在单位时间内通过某个网络(或信道、接口)的数据量吞吐量受网络的带宽或网络的额定速率的限制 单位 b/s

2021-08-18 15:02:33 248

原创 数据库的增删改查

数据库介绍:概念:数据存储管理的仓库存储:存储介质:磁盘-文件相较于文件存储:文件存储安全性低文件对数据的查询和管理效率较为低下文件不利于海量存储与查询文件在程序中控制不方便SQL:结构化查询语言数据库的分类:关系型数据库:以一种关系模型(二维表格模型)组织数据的数据库分类:oracle,mysql,sql server,mariadb,sqlite非关系型数据库 :不基于sql实现的数据库分类:redis memcached mongodbmysql数据库的安装安装:

2021-07-18 21:02:41 222 1

原创 Linux复习1

基础指令:目录:ls,pwd,mkdir,rm,cp,cd文件:cat,more,less,head,tail,ln压缩:zip/unzip,gzip/gunzip, bzip2/bunzip,tar匹配: grep,find权限: su,sudo,umask,chmod,chown,chgrp进程:ps,kill网络:ifconfig,traceroute,route,netstat系统:shutdown,reboot,free,top,df,常用工具:yum list s

2021-07-11 20:49:03 49

原创 IO多路转接模型2

Select:操作流程:1.定义事件的描述符集合(位图),清空集合,添加需要监控的描述符2.将集合拷贝到内核中进行监控,有就绪/超时则监控返回,返回前将未就绪的描述符从集合中移除3.监控调用返回后,获取到就绪的描述符集合,判断哪个描述符还在哪个集合中确定这个描述符是否就绪了某个事件接口:fd_set/FD_ZERO/FD_SET/FD_ISSET/FD_CLR/select优缺点:优点:跨平台移植性良好缺点:1.select所能监控的描述符有最大数量上限2.每次监控都需要重新向集合中添加描

2021-07-11 20:00:42 61

原创 IO多路转接模型

网络层:IP协议,地址管理,路由选择路由选择:路由器根据每一条流经路由器的数据中的目标主机地址进行路径选择链路层:ETH协议:6字节目标-源端mac地址,2字节的上层协议,4字节帧尾Mac地址:网卡的物理硬件地址ARP协议:介于网络层与链路层之间的协议-通过IP地址获取MAC地址ARP欺骗攻击:伪造ip进行ARP响应—防火墙白名单MTU:链路层限制的数据帧大小–最大传输单元—以太网默认1500字节Mtu对tcp影响:tcp传输会协商mss,而mss=mtu-40,往后通信每次都是从发送缓冲区

2021-07-09 16:16:39 242 2

原创 DNS域名

DNS:域名系统域名:是个便于记忆的字符串,是一个服务器的别名,访问服务器时通过解析得到服务器的IP地址进行访问一个域名服务器支撑不了所有人的访问,因此采用分布式存储麻将域名信息分散存储到世界各地服务器划分:根域名服务器->顶级域名服务器(.com .org (按用途) .cn(按地域))域名划分:顶级域名:.com/.org/.gov… .cn/.en/.jp二级域名:baidu.com qq.com三级域名:zhidao.baidu.com域名解析流程:查看缓存信息查看本

2021-07-07 18:47:13 95

原创 传输层理论

TCP连接保活机制:通信两端在长时间没有数据通信的情况下,服务端会每隔一段时间向客户端发送一个保活探测数据包(要求对方进行回复),若连续多次没有收到回复,则认为连接已经断开。默认7200s,每隔75s,9次无回复这些数值是可以通过设置套接字选项进行设置的。连接断开对于程序的影响:recv返回0,send会触发SIGPIPE异常可靠传输:保证数据有序,安全到达对端面向连接协议字段中的序号与确认序号,进行包序管理,实现有序传输确认应答机制:接收方针对收到的每一条数据进行确认回复超时重传机制:

2021-06-27 18:04:38 107

原创 TCP协议 握手与挥手

应用层协议目的是了解指定协议的实现便于我们以后使用传输层:负责应用程序之间的数据传输—TCP/UDP了解协议的实现,体会协议的特性,理解对于上层程序编程的影响UDP:协议实现:16源端-对端端口:用于描述识别通信两端进程16位数据包长度:能够存储最大数字65535—udp报文总大小最大不能超过64K16位校验和:采用二进制反码求和算法—校验接收方接收到的数据与发送方发送的数据是否一致。协议特性:无连接 :通信是不需要建立连接,只要知道对方地址就可以直接发送数据不可靠:不保证数据安全、有序

2021-06-22 22:23:03 59

原创 前端搭建过程及面试的一些问题

前端界面模块:html+css+jsHtml:完成页面布局Css:样式语言,面试问题:你说说你做的这个项目吧项目总结:项目名称:点餐系统项目描述:这个点餐系统实现用户通过浏览器与后台服务器进行交互,实现菜品与订单的管理,进而实现用户查看菜品信息以及下单功能,以及管理员对菜品和订单的管理功能。项目实现:这个项目在实现的时候才用了一个不太严谨的MVC框架,将项目实现总体分为三个模块:数据管理,业务处理,前端页面。其中数据管理模块:基于mysql数据库实现数据存储管理,并且封装数据库访问类向

2021-06-20 22:53:30 467

原创 mysql数据库创建

MySQL数据库的基本操作客户端操作:mysql -uroot -p注意事项:sql语句中,每条语句都应该以;结尾sql语句中,并不区分大小写sql语句中,数据库名称,表名称,字段名称不能直接使用sql关键字—”库的操作:创建数据库:create database if not exists dbname;查看数据库:show databases;选择所操作的数据库:use dbname; select database();删除数据库:drop database dbname;表的

2021-06-14 15:40:16 130 1

转载 迷宫问题解决

问题描述走迷宫题目描述NowCoder最喜欢游乐场的迷宫游戏,他和小伙伴们比赛谁先走出迷宫。现在把迷宫的地图给你,你能帮他算出最快走出迷宫需要多少步吗?输入描述:输入包含多组数据。每组数据包含一个10*10,由“#”和“.”组成的迷宫。其中“#”代表墙;“.”代表通路。入口在第一行第二列;出口在最后一行第九列。从任意一个“.”点都能一步走到上下左右四个方向的“.”点。输出描述:对应每组数据,输出从入口到出口最短需要几步。迷宫如下#.#########........##.....

2021-06-13 22:00:33 121

原创 解读密码问题

问题描述nowcoder要和朋友交流一些敏感的信息,例如他的电话号码等。因此他要对这些敏感信息进行混淆,比如在数字中间掺入一些额外的符号,让它看起来像一堆乱码。现在请你帮忙开发一款程序,解析从nowcoder那儿接收到的信息,读取出中间有用的信息。输入描述:输入有多行。每一行有一段经过加密的信息(其中可能包含空格),并且原始信息长度不确定。输出描述:输出每段信息中数字信息。示例:输入$ Ts!47&* s456 a23 * + B9k输出47456239#include<

2021-06-13 21:54:14 132

转载 五子棋问题

NowCoder最近爱上了五子棋。现在给你一个棋局,请你帮忙判断其中有没有五子连珠(超过五颗也算)。输入描述:输入有多组数据,每组数据为一张20x20的棋盘。其中黑子用“*”表示,白子用“+”表示,空白位置用“.”表示。输出描述:如果棋盘上存在五子连珠(无论哪种颜色的棋子),输入“Yes”,否则输出“No”。解题思路结构设计:dir代表当前位置的8个方向,其中上下、左右、左上右下、右上左下为必须放在一起检测。获取一个棋盘,按照行列检测棋盘中的每个位置,当拿到一个位置后,按照以下步骤进行操

2021-06-12 17:20:53 431

原创 http协议

首行-请求行:请求方法,URL(URI),协议版本\r\n请求方法;GET:从服务端获取实体资源,请求没有正文,但是也可以提交数据,但是提交的数据没有在正文中而是在URL中get提交数据不安全 2.url 长度有限制HEAD;功能与GET类似,但是不要正文实体POST:向服务端提交数据,请求有正文,数据放在正文中URL: 网址–统一资源定位符–用于定位网络中某个主机上的某个资源组成:协议名称://用户名:密码@域名:端口/资源路径?查询字符串#片段标识符域名:服务器别名—最终访问服务器需要

2021-06-06 18:52:01 295

转载 年会抽奖问题

这里是引用题目描述年会抽奖 | 时间限制:1秒 | 内存限制:32768K今年公司年会的奖品特别给力,但获奖的规矩却很奇葩:首先,所有人员都将一张写有自己名字的字条放入抽奖箱中;待所有字条加入完毕,每人从箱中取一个字条;如果抽到的字条上写的就是自己的名字,那么“恭喜你,中奖了!”现在告诉你参加晚会的人数,请你计算有多少概率会出现无人获奖?输入描述输入包含多组数据,每组数据包含一个正整数n(2≤n≤20)。输出描述对应每一组数据,以“xx.xx%”的格式输出发生无人获奖的概率。示.

2021-06-04 18:11:25 161

原创 年终奖问题

问题描述:小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6 * 6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法使小东拿到价值最高的礼物。给定一个6 * 6的矩阵 board,其中每个元素为对应格子的礼物价值,左上角为[0,0],请返回能获得的最大价值,保证每个礼物价值大于100小于1000给定接口clas

2021-05-22 20:24:21 158 1

原创 5.18红黑树

红黑树实现代码#include<utility>template<class K,class V>struct RBNdoe{ typedef bool color; RBNode<K, V>* _parent; RBNode<K, V>* _left; RBNode<K, V>* _right; pair<K, V> _kv; COLOR _color; RBNode(const pair<K, V>

2021-05-19 18:11:46 48 1

原创 喝汽水问题

题目描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?代码示例#include<iostream>using namespace std;void he

2021-05-18 15:48:35 64

原创 查找两个字符串中的最长公共子串

外循环中控制字段的长度;内循环中控制字段的首字母;#include<iostream>#include<string>using namespace std;int main(){ string a, b; while (cin >> a >> b) { int len1 = a.length(); int len2 = b.length(); if (len1 >= len2)//判断两个字符串的长短,对短字符串进行处理

2021-05-18 15:40:44 118

原创 网络5.15

Sip+sport+dip+dport+protocol—五元组-标识一条通信网络中的每条数据都会包含有完整的五元组信息Socket套接字编程 :网络通信程序的编写(接口+流程)Udp协议通信程序的编写/tcp协议通信程序的编写Udp协议与tcp协议的区别初识Udp协议:用户数据报协议特性:无连接 不可靠 面向数据报应用场景:实时性要求大于安全性要求的场景—视频传输Tcp协议:传输控制协议特性:面向连接 可靠 面向字节流应用场景:安全性要求大于实时性要求的场景—文件传输在网络通信程序中,

2021-05-15 20:50:47 58

转载 取手套问题

取手套在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色,只能分辨出左右手。所以他会多拿一些手套,然后选出一双颜色相同的左右手套现在的问题是,他至少要拿多少只手套才能保证一定能选出一双颜色相同的手套给定颜色种数n(1≤n≤13),同时给定两个长度为n的数组left,right,分别代表每种颜色左右手手套的数量。数据保证左右的手套总数均不超过26,且一定存在至少一种合法方案测试样例:4,[

2021-05-13 21:41:20 199

原创 查找输入整数二进制中1的个数(位运算)

功能实现public static int findNumberOf1( int num){/* 请实现 */return 0;} 譬如:输入5 ,5的二进制为101,输出2计算整数二进制中1的个数题目解析通过(n >> i) & 1可以获取第i位的二进制值,每次n右移一位,可以获取一位的二进制值,右移32次,n变成0,循环终止。代码示例#include <iostream>using namespace std;int main() {

2021-05-13 21:33:44 159

原创 重定向 动态库与静态库

在minishell中加入重定向的实现:功能:将原本要写入标准输出的数据,写入到指定文件中echo”nihao”>>a.txt:追加重定向,把持文件原内容不变,将新数据追加到文件末尾:清空重定向,清空文件原有内容,将新数据写入文件中1.捕捉键盘输入;1.5解析输入,是否包含重定向(遇到>则替换为\0)\0前边的数据就是命令,按照之前的处理流程即可\0后边的数据,判断重定向方式,取出重定向文件名2.解析输入信息—得到命令名称,运行参数3.创建子进程 O_TRUNC,

2021-03-30 22:31:12 210

原创 进程间通信

进程间通信:进程间的几种通信方式(管道,共享内存,消息队列,信号量)为什么进程间不能直接通信?因为进程间具有独立性,每个进程访问的都是自己的独立虚拟地址空间,使用的都是虚拟地址,通过页表映射到物理内存。因此就算将数据的内存地址交给其他进程,其他进程也无法访问(当然其实也无法直接给)只能通过操作系统提供的几种方式来进行本质上来说是操作系统为多个进程提供了一处公共的数据传输媒介(内存)。因为通信场景不同,因此提供了多种不同的方式:管道:用于传输数据特性:半双工通信–可以选择方向的单向通信本质

2021-03-30 22:29:43 44

原创 Linux-基础IO-库函数

库函数IO接口:fopen fwrite fread fclose fseekFILE *fopen(const char *path,cosnt char *mode);path:要打开的文件路径名称;mode:”r”,”r+”,”w”,”w+”,”a”,”a+”,b;r:只读;r+:可读可写w:只写 ,文件不存在则创建新文件;w+:可读可写, 文件不存在则创建新文件a:追加只写-总是将数据写入文件末尾,不存在则创建新文件a+:读和追加写 打开文件从起始读,写在文件尾,不存在则创建新文件

2021-03-24 07:38:43 165

原创 进程等待

进程等待:父进程等待子进程的退出,获取退出子进程的返回值,释放退出子进程的资源为了避免产生僵尸进程操作:pid_t wait(int* status);status:一个整形空间的地址,用于获取退出子进程返回值返回值:成功返回退出子进程的pid,失败返回-1;等待任意一个子进程的退出,如果当前没有子进程退出则一直阻塞等待阻塞:为了完成一个功能,发起调用,若当前不具备完成条件,则一直等待非阻塞:为了完成一个功能,发起一个调用,若当前具备完成条件,则立即返回pid_t waitpid(pid_

2021-03-20 07:36:51 299

原创 程序和进程

创建进程 进程就是一个pcb是一个task_struct结构体(linux中),创建一个进程实际就是创建了一个task_struct结构体pid_t fork(void)–创建进程的接口–通过复制调用这个接口的进程(父进程),创建一个新的进程(子进程)ps -ef/-aux 查看所有进程信息进程状态 :用于操作系统对于进程的管理(什么状态该对进程进行什么操作)运行态,就绪态,阻塞态linux中的进程状态:运行态(R):正在运行或者轮转到时间片则能够运行统称运行态可中断休眠态S:可以被中断的休眠

2021-03-17 20:58:14 56

原创 类和对象下篇

class Time{public Time(int hour,int minute,int second) :_hour(hour) ,_minute(minute) ,_second(second) private:class Date{public:Date(int year,int month,int day)//const,引用必须在定义的时候初始化//初始化列表:真正初始化的位置//const,引用成员必须在初始化列表中进行初始化//const,引用成员定义的地方

2021-03-17 20:58:01 41

原创 进程概念

进程控制:创建,退出,等待,替换创建:pid_t fork();----通过复制父进程创建一个子进程-----父子进程代码共享,数据独有返回值:错误返回-1,对于父进程返回值大于0-子进程pid,对于子进程返回0写时拷贝技术:创建子进程后,子进程与父进程各自有自己的虚拟地址空间,但是数据映射的实际上是同一块物理内存,等待内存发生改变的时候为子进程重新开始一块独立的空间,保存子进程的数(保持进程独立性)提高fork创建子进程的效率pid_t vfork(void)–通过复制父进程创建一个子进程–

2021-03-17 20:42:00 49

原创 Linux知识小结

进程概念冯诺依曼体系结构:所有的硬件都是围绕内存工作操作系统:系统的定位–搞管理–先描述再组织系统调用接口:操作系统向上层提供的用于访问内核的接口函数库函数:对系统调用接口进行封装之后的一些函数进程概念:进行中的程序,对于操作系统来说进程就是pcb-进程控制块,在linux下,是一个task_struct结构体,是操作系统对于运行中程序的一个动态描述,通过这个描述实现对于程序运行的调度和管理描述:内存指针, 上下文数据, 程序计数器标识符,IO信息…进程状态:linux下的状态 --运行,可

2021-03-17 20:40:57 35

原创 C++模板 string

template<class T>class seqList{public:seqList(int n):_data(new T[n],_size(0),capacity(n){}T seqListAt(size_t pos);private://int* _data;T* _data;size_t _size;size_t _capacity;};//类外定义函数:需要加泛型声明template<class T>T seqList::seqLis

2021-03-15 19:44:48 128

原创 STL笔记--string类

STL标准模板库是C++标准库的重要组成部分是一个包罗数据结构预算法的软件框架

2021-03-14 15:08:55 50

原创 linux 常用工具

常用工具:yum,vim,gcc/g++,gdb,make/Makefile,gityum:软件包管理工具查看: yum list,yum search;安装:yum install;卸载:yum removevim:命令行下的编辑器操作模式:12种,常见3种-普通,插入,底行底行常见操作::w :q :wq :q!(不要使用ctrl+z退出vim)普通常见操作:光标移动-hjkl,wb,ctrl+f/b,gg/G;文本操作:nyy/p/ndd/x/dw;其他:u/ctrl+r,gg=G

2021-03-05 20:33:05 51

原创 类和对象中篇

默认构造函数编译器自动生成的默认构造只能存在一个析构函数对象的生命周期结束时,编译系统会自动调用析构函数析构函数是在类名前面加上一个 ~赋值运算符 重载增加代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数函数名字为:关键字operator后面接需要重载的运算符号函数原型:返回值类型 operator操作符(参数列表)注意:不能通过连接其他符号来创建新的操作符 比如operator@重载操作符必须有一个类型5个不能重载的运算符赋值运算符主要有四点1 参数类型2 返

2021-03-03 19:14:51 430 2

原创 冒泡排序

void BubbleSort(int * a,int n){ assert(a); for(size_t end=n;end>0;--end) { int exchange =0; for(size_t i=1;i<end;++i) { if(a[i-1]>a[i]) { Swap(&a[i-1]), exchange=1; } } if(exchange==0) break }} 最坏时间复杂度O(n2)...

2021-02-08 10:37:08 61

原创 类和对象2

析构函数在类名前面加上~typedef int DataType;class SeqList{public:seqlist定义一个C++的类//定义一个C++的类:和结构体的定义方式一样 struct Student{ void SetStudenInfo(const char* name, const char* gender, int age) { strcpy(_name, name); strcpy(_gender, gender); _age = age; }

2021-02-05 00:26:51 51

原创 内联函数

以inline为首的函数inline int add(int a, int b){ return a + b;}void test(){ int a = add(10, 20);}1.inline是一种以空间换时间的做法,省去调用函数的额外开销。所以代码很长或者有循环/递归的函数不适宜使用作为内联函数2.inline 对于编译器而言只是一个建议,编译器会自动优化,如果定义为inline的函数体内有循环/递归等等,编译器优化师会忽略掉内敛。3.inline 不建议声明和定义分离,分离会

2021-02-03 21:52:02 111

原创 C++入门

函数重载引用类型+&#include<iostream>using namespace stdstruct A{ int a; int b; int c; int d; int e; } void test(){ int a=10; //ra是一个引用:是a的别名,指向和a相同的实体 int& ra=a; A sa; sa.a=1; sa.b=1; sa.c=1; sa.d=1; sa.e=1;

2021-02-01 10:47:23 37

空空如也

空空如也

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

TA关注的人

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