- 博客(34)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 《问题积累》-在线OJ
积累在Nowcoder中经常遇到多次调用函数,导致不通过,开始给我整蒙了都。百思不得其解,一度于怀疑自己是不是入错行了。在主函数里面,他会输入好几组数据,你需要循环来处理每一组数据,而不是只处理完第一次数据就return。#include <iostream>using namespace std;int main() { int a,b; while(sca...
2020-03-24 23:53:33
214
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 《Linux》-No manual entry for xxx 错误解决方案
No manual entry for xxx 错误的解决方案在安装Linux的时候。有些打包镜像未打包一些常用的工具。一开始还以为是命令使用错误了。bash输入:yum install -y man-pages输入之后代码跑完就安装好了。...
2020-03-22 15:50:57
3226
原创 《i/o》-select、poll、epoll
(1)select==>时间复杂度O(n)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll==>时间复杂度O(n)poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态, 但是它没有最大连接数的限制,原因是它是基于链表来存储的.
2020-08-03 19:22:26
196
原创 《数据结构》-归并排序
#include<iostream>using namespace std;int a[] = { 1, 0, 3, 4, 6, 5, 7, 2 };int tmp[8];// 归并排序(C-递归版)//void merge_sort_recursive(int arr[], int reg[], int start, int end) {// if (start >= end)// return;// int len = end - start, mid = (len
2020-08-01 17:37:49
152
原创 《C++》-智能指针
一、 为什么需要智能指针?malloc出来的空间,没有进行释放,存在内存泄漏的问题。异常安全问题。如果在malloc和free之间如果存在抛异常,那么还是有内存泄漏。这种问题就叫异常安全。二、内存泄漏2.1 什么是内存泄漏,内存泄漏的危害什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不 是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而 造成了内存的浪费。内存泄漏的危害:长期运行的程序出现内存泄漏,影
2020-07-31 00:00:02
194
原创 《三次握手》-TCP三次握手
TCP三次握手(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。(3)第三次握手:Client收到确认后,检查ack是否为J.
2020-07-30 00:13:34
177
原创 《shell》-shell脚本
shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。更明白地来说,shell script就像早期dos年代的.bat,最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell script更是提供了数组,循环,条件以及逻辑判断等重要功能,让使用者可以直接以shell来写程序,而不必使用类似C程序语言等传统程序编写的语
2020-07-30 00:02:37
145
原创 《http和https》-两者的区别
http协议与https协议的区别?1、https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。2、http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。3、http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。4、http 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。https协议的工作原理?我
2020-07-28 17:56:44
196
原创 《mysql》-表的约束
表的约束真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。 表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。1 空属性1两个值:null(默认的)和not null(不为空) 数据库默认字段基本都是字段为空,但是实际开发时,尽可能保
2020-07-21 13:30:30
175
原创 《mysql》-事务的ACID特性
事务的ACID特性原子性(Atomicity): 事务是应用中最小的执行单位,就如原子是自然界的最小颗粒,具有不可再分的特征一样,事务是应用中不可再分的最小逻辑执行体。一致性(Consistency):事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态。当数据库只包含事务成功提交的结果 时,数据库处于一致性状态。如果系统运行发生中断,某个事务尚未完成而被迫中断,而改未完成的事务对数据库 所做的修改已被写入数据库,此时数据库就处于一种不正确(不一致)的状态。因此一致性是通过原子性来保证
2020-07-20 17:06:27
243
原创 《TCP》-TCP为什么可靠
事务隔离级别当我们有多个客户端同时操作数据库的某张表,如何进行隔离操作?MySQL提供了隔离级别。当MySQL表被多个线程或者客户端开启各自事务操作数据库中的数据时,MySQL提供了一种机制,可以让不同的 事务在操作数据时,具有隔离性。从而保证数据的一致性。无隔离性的问题脏读是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务 也访问这个数据,然后使用了这个数据。案例:1.Mary的原工资为1000, 财务人员将Mary的工资改为了8000(但未
2020-07-20 17:04:20
248
原创 《mysql》-事务管理
事务事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。事务理论的深度理解参见推荐书籍:《数据库系统概念》的第14章。事务基本操作案例: 银行转账的例子更需要考虑事务的问题。创建测试表 create table account( id int primary key, name varchar(50) not null default ''
2020-07-20 16:55:29
106
原创 《Mysql》-表的约束
表的约束真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。1、空属性两个值:null(默认的)和not null(不为空)数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证
2020-07-11 08:55:41
186
原创 《协议》HTTP协议
虽然我们说, 应用层协议是我们程序猿自己定的.但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。认识URL平时我们俗称的 “网址” 其实就是说的 URLurlencode和urldecode像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现. 比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义.转义的规则如下:将需要转码的字符转为16进制,然后从右到左,
2020-07-01 16:42:44
319
原创 《解析网络版计算器》
例如, 我们需要实现一个服务器版的加法器. 我们需要客户端把要计算的两个加数发过去, 然后由服务器进行计算, 最后再把结果返回给客户端.约定方案一:客户端发送一个形如"1+1"的字符串; 这个字符串中有两个操作数, 都是整形;两个数字之间会有一个字符是运算符, 运算符只能是 + ;数字和运算符之间没有空格;约定方案二:定义结构体来表示我们需要交互的信息;发送数据时将这个结构体按照一个规则转换成字符串, 接收到数据的时候再按照相同的规则把字符串转化回结构体;这个过程叫做 “序列化” 和 “反
2020-07-01 16:35:21
206
原创 《继承与多态》-继承
C++中的继承**1.继承的概念及定义2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数1.继承的概念及定义1.1继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。class Person{public: void Pri
2020-05-28 14:44:02
230
原创 《Linux》-进程间通信
进程间通信进程间通信目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。进程间通信发展管道System V进程间通信POSIX进程间通信进程间通信分类1.管道 1.1匿名管道pipe 1
2020-05-27 16:03:50
178
原创 《内存管理》-内存
内存管理1. C/C++内存分布我们先来看下面的一段代码和相关问题int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static int staticVar = 1; int localVar = 1; int num1[10] = {1, 2, 3, 4}; char char2[] = "abcd"; char* pChar3 = "abcd"; int* ptr1 = (int*)malloc(siz
2020-05-27 15:29:26
278
原创 《Linux》-线程控制
Linux线程控制POSIX线程库与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”打头的要使用这些函数库,要通过引入头文<pthread.h>链接这些线程函数库时要使用编译器命令==“-lpthread”==选项创建线程功能:创建一个新的线程原型 int pthread_create(pthread_t *thread, const p...
2020-04-02 23:19:05
120
原创 《类和对象》-析构函数
析构函数概念前面通过构造函数的学习,我们知道一个对象时怎么来的,那一个对象又是怎么没呢的?析构函数:与构造函数功能相反,析构函数不是完成对象的销毁,局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数,完成类的一些资源清理工作。特性析构函数是特殊的成员函数。其特征如下:析构函数名是在类名前加上字符 ~。无参数无返回值。一个类有且只有一个析构函数。若未显式定义,系...
2020-03-19 22:10:55
185
原创 《类与对象》-类的默认成员函数-构造函数
类的六个默认成员函数六个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。class Date {};1.构造函数2.1 概念对于以下的日期类:class Date {};{ public: void SetDate(int year, int month, int day...
2020-03-19 22:05:35
252
原创 《C++》-内联函数
概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用。查看方式:在release模式下,查看编译器生成的汇编代码中是否存在call Add在debug模式下,需要对编译器进行设置,否则不会展开特...
2020-03-16 15:05:52
136
原创 《C++》-引用
引用引用概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。类型& 引用变量名(对象名) = 引用实体void TestRef(){ int a = 10; int& ra = a;//<====定义引用类型 printf("%p\n", &a); printf("%...
2020-03-16 14:51:15
120
原创 《C++》-函数重载
自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者是“谁也赢不了!”,后者是“谁也赢不了!
2020-03-16 14:37:53
199
原创 《C++》-缺省参数
缺省参数的概念 缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实 参则采用该 默认值,否则使用指定的实参。缺省参数分类1.全缺省参数void TestFunc(int a = 10, int b = 20, int c = 30) { cout<<"a = "<<a<<endl; cout<<"...
2020-03-16 14:19:24
142
原创 《Linux》-基本操作符学习
Linux下基本指令01. ls 指令语法: ls [选项][目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。常用选项:-a 列出目录下的所有文件,包括以 . 开头的隐含文件。-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件-k 以 k...
2019-12-12 20:33:00
296
原创 《Linux》-发展背景
Linux背景发展史本门课程学习Linux系统编程,你可能要问Linux从哪里来?它是怎么发展的?在这里简要介绍Linux的发展史。要说Linux,还得从UNIX说起。UNIX发展的历史1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。1969-1970年,AT&...
2019-12-12 20:24:26
455
原创 《数据结构》-链表
3.链表3.1 链表的概念及结构概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。现实中:实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:单向、双向带头、不带头循环、非循环常见1. 无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等...
2019-11-16 19:51:23
179
原创 《数据结构》-顺序表
顺序表【本节目标】1.线性表2.顺序表3.链表4.顺序表和链表的区别和联系 **1.线性表**线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一...
2019-11-16 19:44:40
275
原创 《数据结构》-复杂度
时间复杂度_空间复杂度1.算法效率2.时间复杂度3.空间复杂度1.算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存...
2019-11-12 20:35:24
251
原创 猜数字小游戏实现
1.猜字谜小游戏,随机生成一个随机数,用户去猜,如果用户猜的大了就提示用户猜的太大了,如果用户猜的小了,就提示用户猜的太小了,如果用户猜中了就恭喜您猜对了.写一个输出函数,给玩家一个提示,提供选择。1.进入游戏 2.退出游戏void mnue() printf("******************************"); printf("*...
2019-10-12 13:56:13
473
原创 C语言操作符总结
c语言中关于操作符部分的学习,可以主要分为两个部分:操作符和表达式。这里首先是列举各种操作符,在C语言中,一般主要的操作符有这么几种:算数操作符,移位操作符,位操作符,赋值操作符,单目运算符,关系操作符,逻辑操作符,条件操作符,逗号表达式以及比较特殊的几个操作符。算数操作符算数操作符,主要是:+ , -, *, /, %+ //加- //减* //乘/ //除%...
2019-10-12 10:44:32
214
原创 《我》
《我》我是谁本人也是一个对计算机比较感兴趣的人,就读西安工程大学,网络工程专业。我感觉计算机的知识跟历代很多学说一样,在其中会学到很多奇妙而耐人寻味的东西。虽然在初入这个方向会有一种把有的问题复杂化了的误解,但是也是一种透过现象看本质的方式。也正是本质和基础的低层建筑成就了现在这个时代,无处不在的都是智能化,信息化等高新技术,从而一方面开始了解放双手的发展趋势。目标我希望在我的不断学...
2019-09-05 14:04:31
179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人