自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

枝头

Hello

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

原创 CentOS启动报错:Centos kernel panic-not syncing:VFS:Unable to mount root fs on unknown block

这是由于更新内核出现的问题解决方法,在开机启动时,选择下面的旧版本的内核启动,正常进入后,需要设置内核启动项来改变默认启动内核。以下操作需要root权限。1.查看当前默认内核启动项# grub2-editenv list2.查看当前系统使用内核# uname -r3.查看可以使用的内核项# awk -F\' '$1=="menuentry " {print i++ "...

2019-06-07 11:18:12 4618

转载 HTTP头部与Keep-Alive详解

1、什么是Keep-Alive模式?我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服 务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能...

2019-03-02 16:15:37 732

原创 智能指针

C++中没有垃圾回收器,所以对于我们自己申请的内存必须自己来释放,而且要正确释放。但是当程序代码较为庞杂的时候,对于指针的管理开始变得困难起来,申请多个指针,不免会有疏漏而忘记释放,程序异常的抛出导致的跳转而遗漏等等,那么,如何高效的管理指针就成为当前一个棘手的问题。为解决这个问题,我们的前辈得出了智能指针的这个方法,智能指针到底怎样实现智能呢?下面我们一起来看看下面这段代码#inclu...

2019-03-02 15:36:57 173

原创 继承

继承1.释义继承是两个类之间进行的一种操作; 由字面意思可知继承就是一个类获得另一个类的所有数据,可以类比fork()创建子进程; 被继承的类称为父类或者基类,继承的类称为子类或者派生类; 继承的主要目的是实现代码复用。2.继承的三种形式公有继承(public),保护继承(protected),私有继承(private)父类的私有成员无论子类以何种方式继承在类内外都不能访问...

2019-02-13 19:55:00 144

原创 如何在派生类内初始化基类的成员变量

我们明确在初始化一个派生类对象时,会先调用基类的构造函数,然后再调用派生类的构造函数;在回收资源的时候,先调用派生类的析构函数,再调用基类的析构函数。我们在初始化一个派生类的对象时,如何去初始化一个基类的成员变量呢?这里的初始化是指将基类成员变量初始化成我们指定的参数,也就是说想要在初始化派生类对象时将派生类和基类的成员变量的值都传进去。#include<iostream>...

2019-02-13 18:22:55 5034

原创 浅析TCP可靠连接的构建

TCP是处于传输层的协议,它和UDP在网络层使用的都是相同的网络层协议(IP),但是它向网络层提供的确是完全不同的服务。TCP是有连接,可靠的,面向字节流的服务。有连接TCP的连接是通过三次握手建立的,这个连接并不具有物理的实体,而是一种虚拟的连接,只是在连接的两端主机内存上各保留了一份状态信息。SYN:同步序列编号(Synchronize Sequence Numbers)A...

2019-01-31 15:03:35 244

原创 C++异常体系

C语言处理错误的方式 assert()、return、exit(),直接结束程序并返回相应的错误数字,这样程序的容错率较低,处理方式不优雅; 返回错误码。需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到errno中,表示错误; C 标准库中setjmp和longjmp组合。C++异常异常是程序在执行期间产生的问题; C++ 异常是指在程序运行时发生的特殊情...

2019-01-28 14:42:32 401

原创 计算机网络部分名词

IP:互联网协议地址作为网络识别主机的方式,公网下的IP是唯一的,不可重复的。标识主机,类比进程标识符PID。DHCP:动态主机配置协议在同一子网下,网络号相同,但主机号必不能重复,由于同一子网下主机不止一个,人为手动配置IP可能出错,而且麻烦,所以出现了DHCP,它可以自动为你配置当前子网下的可用IP。当然你可以设置指定IP。路由器就相当于一个DHCP服务器DNS:域名系统I...

2019-01-25 00:46:51 141

原创 算法思想简介

以下是高德纳在他的著作《计算机程序设计艺术》里对算法的特征归纳:输入:一个算法必须有零个或以上输入量。 输出:一个算法应有一个或以上输出量,输出量是算法计算的结果。 明确性:算法的描述必须无歧义,以保证算法的实际执行结果是精确地匹配要求或期望,通常要求实际运行结果是确定的。 有限性:依据图灵的定义,一个算法是能够被任何图灵完全系统模拟的一串运算,而图灵机只有有限个状态、有限个输入符号和有...

2019-01-15 16:58:06 1931

原创 Linux下查看共享内存及网络状况

ipcsipcs -q : 显示所有的消息队列ipcs -qt : 显示消息队列的创建时间,发送和接收最后一条消息的时间ipcs -qp: 显示往消息队列中放消息和从消息队列中取消息的进程IDipcs -q -i msgid: 显示该消息队列结构体中的消息信息:ipcs -ql : 显示消息队列的限制信息:ipcs [-m|-q|-s]-m 输出有关共享内存(share...

2019-01-15 12:48:04 1718

原创 网络基础梗概

这篇文章目的在于帮你建立起一个网络基础的框架,让你在黑暗中找到前进的方向。网络的模型结构上图就是网络的基本结构,我们主要以TCP/IP四层模型进行分析。为什么要分这么多层呢?人们一般要解决一个比较复杂的问题时,总会想办法将这个问题分解成一个个的子问题,进行模块化处理,从而大大简化问题的处理方法。就像你用C语言写一个三子棋的小游戏时,你并不会将这个问题看成一个整体。而是对问题进行模块...

2019-01-14 19:17:41 124

原创 cin.get()和cin.getline()

get()函数是cin输入流对象的成员函数,它有3种形式:无参数的,有一个参数的,有3个参数的。无参:cin.get()用来从指定的输入流中提取一个字符(包括空白字符),函数的返回值就是读入的字符。 若遇到输入流中的文件结束符,则函数值返回文件结束标志EOF(End Of File),一般以-1代表EOF,用-1而不用0或正值,是考虑到不与字符的ASCII代码混淆,但不同的C ++系统所用...

2019-01-13 14:40:11 700

原创 岁月神偷

分享一首喜欢的歌         金玟岐能够握紧的就别放了能够拥抱的就别拉扯  时间着急的冲刷着       剩下了什么原谅走过的那些曲折原来留下的都是真的  纵然似梦啊半醒着    笑着哭着都快活           谁让时间是让人猝不及防的东西     晴时有风阴有时雨  争不过朝夕又念着往昔 偷走了青丝却留住一个你岁月是一场有去无回...

2019-01-12 18:52:50 369

原创 获取一个正整数的平方根近似值

对于这个问题,最直接的方法是使用库函数,这里我们主要探讨如何自己实现一个sqrt函数。函数形式:Sqrt(int val,double t)val为所求数,t为精度。如何求一个正整数的平方根呢?对于一个正整数val,简单粗暴点直接0-val全部进行搜索,直到达到其精度。这里采用二分的思想,假设val=10,查找区间为(0,10),取val的中间值mid=5,mid平方和val比...

2019-01-11 16:22:33 1832

原创 MYSQL数据库基本操作

数据库的创建1.创建数据库创建一个名为hellword的数据库create database hellword;创建一个使用utf8字符集的 db2 数据库create database db2 charset=utf;创建一个使用utf字符集,并带校对规则的 db3 数据库create database db3 charset=utf8 collate utf8_gener...

2019-01-07 17:03:39 382

原创 C++判断内置类型的方式

#include<iostream>#include<string>#pragma warning(disable:4996)using namespace std;struct Match { static bool get() { return true; }};struct unMatch { static bool get() {...

2019-01-03 15:06:18 473

原创 STL_vector(01)迭代器失效问题

我们先来看看下面的代码:#include<iostream>#include<vector>#include<windows.h>using namespace std;int main(){ vector<int>v2(6, 8); v2.push_back(3); v2.push_back(5); vect...

2019-01-02 19:42:06 150

原创 delete和delete[ ]、exit和return

delete和delete[ ]在C++中,申请堆上空间有着两种方式new和new[ ],new是用来申请单个元素空间,new[ ]是申请存放多个元素的连续空间。空间申请方式的不同对应着空间释放的方式也不同,教材上说new和new[ ]分别对应着delete和delete[ ]#define _CRTDBG_MAP_ALLOC#include<stdlib.h>#in...

2019-01-01 16:42:05 666

原创 STL_string_01

用字符数组存放字符串容易发生数组越界的错误,而且往往难以察觉。因此,C++标准模板库设计了 string 数据类型,专门用于字符串处理。string 类型的变量就是用来存放字符串的,也叫“string对象”。string 并不是 C++ 的基本数据类型,它是 C++ 标准模板库中的一个“类”。在用 C++ 编程时,要优先考虑用 string 对象来处理字符串,因为其用法比字符数组更简单,而且不容易...

2018-12-29 17:50:24 116

原创 模板(C++)(未完待续)

为了提高程序的可重用性,C++中引入了模板这一概念。举例来说,为了实现一个交换函数,因为数据类型的关系,可能你需要实现好几种只是参数类型有差异的相同的函数,这大大降低了我们的工作效率;但通过使用模板我们可以实现一个万能的交换函数。函数模板形式如下:template <class 类型参数1, class类型参数2, ...>返回值类型  模板名(形参表){    函数...

2018-12-28 20:55:13 129

原创 内存泄漏及检测

内存泄漏概念维基百科中这样解释:在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。内存泄漏通常情况下只能由获得程序源代码的程序员才能分析出来。因此在一个具有几十万行源代码的项目中寻找内存泄露无异于大海捞针,因此对于内存泄...

2018-12-26 22:01:19 204

原创 C/C++的内存管理

C/C++内存分布代码段:可执行的代码、只读常量 全局数据区:存储全局数据和静态数据(static修饰) 堆区:使用malloc、calloc、realloc等申请的空间 栈区:非静态局部变量、函数参数、返回值等等 C/C++语言中动态内存管理方式C中使用malloc/calloc/realloc申请堆上的空间,和栈申请空间不同的是,堆上的空间需要编程人员自己调用函数free()释...

2018-12-26 18:49:30 156 1

转载 字符编码及由来(UNICODE,UTF-8,GBK)

转载自:https://blog.csdn.net/stilling2006  很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。  再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。...

2018-12-25 22:46:40 156

原创 C++拷贝构造函数(复制构造函数)

一、拷贝构造函数的形式复制构造函数是构造函数的一种特殊情况。因为类的对象包含各种成员变量,在发生拷贝时不能和普通对象一样来拷贝,所以我们需要使用拷贝构造函数来进行对象拷贝。拷贝构造函数只有一个参数,参数类型是本类的引用。如果构造函数没有显式定义,那么编译器将会自动生成拷贝构造函数。大多数情况下,其作用是实现从源对象到目标对象逐个字节的复制,即使得目标对象的每个成员变量都变得和源对象相等。...

2018-12-22 14:03:33 2773

原创 const T、const T*、T *const、const T&、const T*& 的区别

这些个类型的组合有多种变化,容易产生混淆,这里的T指数据类型,在这里来分析一下这些不同组合的情况和含义。由于本人才疏学浅,不足之处,还请多多指教,大家共同探讨和学习。 const T  所修饰变量的内容不能被修改 const T* 所修饰的变量是个指针,这个指针的指向不能被修改;要修改变量的内容,不能够改变指针指向,但可以通过解引用的方式直接赋值 T *const 所...

2018-12-18 17:48:10 4859 2

原创 CPU到底是什么?

Coding这么久,还记得第一次在敲下“hello word”的情景吗?你会惊叹于计算机的神奇,也会因为它的神奇而产生巨大的好奇心,从而走上这条“不归路”。或许你知道用代码来表达你的思想,但可能并不清楚你写下的每一行代码是怎样被电脑编译的。你可能会说不就是像下面这样吗?准备编译的代码 编译后转换成机器语言的EXE文件 程序运行时,在内存中生成EXE文件副本 CPU解释并处理程序内容...

2018-12-18 13:41:28 867

原创 C++基础概念(1)

命名空间命名空间定义在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作 用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字 污染,namespace关键字的出现就是针对这种问题的。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名 空间的成...

2018-12-15 19:18:15 114

原创 内存对齐

内存对齐是什么? typedef struct { char a; int b; double c;}A; typedef struct { int b; double c; char a; }B;获取A、B两个结构体的大小:sizeof(A)=16,sizeof(B)=24;虽然两个结构体内成员个数和类型虽然相同,但分配给它们内存空间大小却不同,从表面可以看...

2018-12-15 17:08:07 77

原创 Linux下进程间的通信

进程间通信就是在不同进程之间传播或交换信息。但是,我们知道进程是具有独立性的,因此,进程之间不可能直接进行通信。人们之间交流需要空气作为介质,进程之间“交流”也需要一个媒介,那么进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。 系统空间是“公共场所”,各进程均可以访问,所以内核也可以提供这样的条件。 还有双方都可以访问...

2018-12-15 15:24:25 226

原创 Linux下常用函数表(未完)

 pid_t getpid(void)获取当前进程的pid(processID),进程唯一标识符 pid_t fork(void)用于创建一个进程,在内核中操作系统重新为其申请了一个PCB,复制父进程的所有数据,执行和父进程相同的操作,子进程和父进程唯一区别——pid不同fork函数有两个返回值,如果fork成功,子进程中fork的返回值是0, 父进程中fork的返回值是子进程的pid...

2018-12-14 15:43:46 923

转载 Xmind 8 pro 软件破解版

https://blog.csdn.net/qq_16093323/article/details/80967867

2018-12-08 21:38:43 1188

转载 排序算法的时空复杂度、稳定性分析

http://www.cnblogs.com/Camilo/p/3929059.html 

2018-12-08 21:10:35 114

原创 Windows下Git的基本使用与操作

安装Git 这个是一个git的windows系统的命令行版本https://git-scm.com/downloads或者https://pan.baidu.com/s/1kU5OCOB#list/path=%2Fpub%2Fgit  安装 tortoise git  这个是git的图形界面.https://tortoisegit.org/download/  ...

2018-12-08 18:26:42 7920

原创 C语言排序总结

1.    插入排序1.1     直接插入排序 直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表; 直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外...

2018-12-07 20:42:28 207

原创 minishell(模拟shell)

// shell模拟--minishell//标准输出重定向#include <stdio.h>#include <errno.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>int main(){...

2018-12-04 19:59:33 333

原创 Linux进程概述

什么是进程? 一般看来,处于执行期的程序我们称之为进程       但从操作系统管理角度来看,进程是操作系统对进程的描述信息,这个描述信息不是单独存放的,而是存放在一个叫做PCB(进程控制块)数据结构中,这个数据结构是一种结构体,由操作系统创建和管理。操作系统对进程的控制就是通过对上面的这个结构体内成员的控制来达到控制操作系统的目的。linux下这个描述结构叫struct task_s...

2018-12-03 13:52:17 201

原创 二叉树基本操作之递归与非递归遍历(2)

//递归遍历二叉树//二叉树的先序遍历void PreOrderTraverse(BiTree T){ if (T == NULL) return; printf("%c ", T->val); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild);}//二叉树的中序遍历void InOrd...

2018-12-01 19:31:37 134

原创 用堆解决TOP-K问题

/**用堆解决TOP K问题;*获取大数建小堆,小数建大堆;*假如要获取前k个大的数,一个整型大小为n的整型数组,先建一个含有k个元素的*小堆(我们可以先把数组前k个元素当作数组前k个大的数来建堆);然后从*m(m=k+1)个数开始遍历数组后序元素,如果第m个数大于堆顶,则两者交换,*并将堆重新调整为小堆*/#include<stdio.h>#include&lt...

2018-11-28 22:41:55 335

原创 二叉树的创建与遍历(1)

#include<stdio.h>#include<stdlib.h>#pragma warning(disable:4996)typedef struct BiTree { int val; struct BiTree *lchild, *rchild;}BiNode,*BiTree;void CreateBiTree(BiTree *T){ ch...

2018-11-28 22:39:33 267

原创 Linux下常用工具

vim编辑器一般我们配置vim只配置当前用户的,如果你配置的是root下的,则所有用户使用的都是这个配置。 在当前用户的家目录下,新建一个文件,使用   vim ~/.vimrc   然后在打开文件进行修改    vim vimrcgcc编译器gcc  文件名   生成可执行程序除了gcc, 还有哪些常用的编译器(不限制编程语言he'ping) EGCS:包括了C/C++/Ob...

2018-11-27 14:48:03 86

空空如也

空空如也

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

TA关注的人

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