自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java基础

java,面向对象 程序设计语言1995,sun发布;2010,Oracle收购了sun;一、java程序的执行流程:(JVM)xxx . java——> Compiler——>xxx . class——>interp...

2019-10-10 16:02:39 121

原创 HTML超文本标记语言

一、基本格式<html><head><title></title></head></html>二、常用标签1、html的操作思想使用标签把要操作的数据包起来,通过修改标签的属性值来实现标签内数据样式的变化<font size="5"></font>2、图像标签<i...

2019-10-10 15:27:11 218

原创 野指针和悬空指针

一、野指针产生的原因(1)指针定义时未被初始化:指针在被定义的时候,如果程序不对其进行初始化的话,它会指向随机区域,因为任何指针变量(除了static修饰的指针变量)在被定义的时候是不会被置空的,它的默认值是随机的。(2)指针被释放时没有被置空:我们在用malloc开辟内存空间时,要检查返回值是否为空,如果为空,则开辟失败;如果不为空,则指针指向的是开辟的内存空间的首地址。指针指向的内...

2019-08-28 17:32:25 633

原创 tcp如何保证可靠性

参考:https://www.jianshu.com/p/6aac4b2a9fd7https://blog.csdn.net/liuchenxia8/article/details/80428157tcp协议特点:面向连接的 可靠的 流式服务那么,tcp如何保证传输可靠性呢?确保传输的可靠性方式:TCP通过序列号、检验和、确认应答信号、重发控制、连接管理、窗口控制、流量控制、...

2019-03-27 19:50:12 264

转载 利用两个栈实现一个队列,两个队列实现一个栈

利用两个栈实现一个队列栈的特点:先进后出队列的特点:先进先出让我们用两个先进后出的栈来实现 一个先进先出的队列,那么我们把数据压入第一个栈,此时我们很清楚它的出栈顺序是与我们想要的队列的出队顺序是相反的,如果在把这个栈里面的元素依次压入第二个栈入队时,直接压入stack1中 出队时,判断stack2是否为空,如果stack2为空,则将stack1中的元素倒...

2019-03-27 17:51:47 252

转载 Linux系统下的基本gdb调试

转:https://blog.csdn.net/qq_39755395/article/details/78305934一、调试的工具:gdb二、调试的对象:可执行程序,而不是.c文件,调试的对象一定是一个进程,调试时,程序必须带有调试信息,所以在编译链接的过程中,必须加上参数:“-g”。三、调试的命令:l:显示代码b+行号:加断点info break:显示断点信息r:...

2019-03-27 16:37:40 203

转载 AVL树(高度平衡二叉搜索树)与红黑树(R-D)的区别

一、AVL树AVL树是带有平衡条件的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现平衡,左右子树树高不超过1,和红黑树相比,AVL是严格的平衡二叉树,平衡条件必须满足所有节点左右子树高度不超过1。不管我们执行插入还是删除操作,只要不满足上述条件,就要通过旋转来保持平衡,而且因为旋转非常耗时,因此我们知道AVL平衡树适用于插入、删除比较少的情况,查找比较多的情况由于维护这种...

2019-03-27 14:46:09 1283

原创 i++是原子操作吗?

原子操作:是不可被中断的i++不是原子操作分为3步:<1> 先从内存中把i取出来放到寄存器中<2>然后++,<3>然后再把i复制到内存中,这需要至少3步1. 什么是操作系统的“原子操作”原子操作是不可分割的,在执行完毕不会被任何其它任务或事件中断,分为两种情况(两种都应该满足)(1) 在单线程中, 能够在单条指令中...

2019-03-25 21:04:57 1432 1

转载 http最新版本

HTTP(Hypertexttransferprotocol)超文本传输协议,是一个应用层的通信协议。HTTP协议版本介绍:HTTP/0.9:只接受GET一种请求方法,没有在通信中指定版本号,且不支持请求头。由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息。HTTP/1.0:第一个在通信中指定的版本号,至今被广泛采用,特别是在代理服务器中。HTTP/1.1...

2019-03-25 19:43:48 2320 2

原创 Linux下统计文件有多少行,多少字节的命令

wc命令(word count)wc 选项 文件名wc - l:统计文件行数wc - c:统计文件字节数命令参数:-c 统计字节数。-l 统计行数。-m 统计字符数。这个标志不能与 -c 标志一起使用。-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。-L 打印最长行的长度。-help 显示帮助信息--version 显示版本信息...

2019-03-25 19:30:28 3026

转载 虚函数和纯虚函数的区别

首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。虚函数只能借助于指针或者引用来达到多态的效果。C++纯虚函数一、定义 纯虚函数是在基类中声明的虚函数,它在基类中没...

2019-03-25 19:23:17 177

原创 C++中关于std::vector两个方法operator[]和at使用上的区别

vector[]和at方法operator[]和at的主要区别在于operator[]不做边界检查,而at会做边界检查。由于operator[]不做边界检查, 那怕越界了也会返回一个引用,当然这个引用是错误的引用,如何不小心调用了这个引用对象的方法,会直接导致应用退出。而由于at会做边界检查,如果越界,会抛出异常,应用可以try catch这个异常,应用还能继续运行。结论:使用at...

2019-03-25 18:09:45 669

原创 struct 和 class 区别

struct在C和C++区别:c++最初被称为“c with class”,足见class在c++中的地位。在c++中我们可以用class自定义用户数据类型,然而它还存在一个类似的——struct,他们似乎有着太多的相同的特点与功能。由于在设计c++时就考虑到要向下兼容c,所以c++中的很多东西都能在c中找到,要谈及struct就要从c谈起。c中struct的定义如下:struct 结...

2019-03-25 18:03:26 196

原创 tcp可不可以关闭读或者写

TCP协议的连接是全双工连接,一个TCP连接存在双向的读写通道。简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例:1.服务器读通道关闭2.客户机写通道关闭3.客户机读通道关闭4.服务器写通道关闭关闭行为是在发起方数据发送完毕之后,给对方发出一个FIN(finish)数据段。直到接收到对方发送的FIN,且对方收到了接收确认ACK之后,双方的数据通信完全结束,...

2019-03-25 17:51:51 535

转载 库函数与系统调用的区别和联系

来源:https://blog.csdn.net/ASJBFJSB/article/details/80871888一、库函数和系统调用概念库函数:库函数是语言或应用程序的一部分,可以运行在用户空间中。系统调用:又称广义指令,它是由操作系统向程序提供的程序接口,而非直接向用户提供,用户只能通过程序间接的使用这些接口。1.在概念对比中,可以直观的感触到系统调用是依赖于操作系统的,由于...

2019-03-25 17:37:59 4928

转载 C++中写一个不能被继承的类

利用友元函数不能被继承的特性,可以实现这样的类主要思想:设计一个模板辅助类Base,将构造函数声明为私有的;再设计一个不能被继承的类FinalClass,将FinalClass作为Base的友元类。将FinalClass虚继承Base。#include <iostream>using namespace std;template <typename T>cl...

2019-03-25 17:31:58 319

转载 大小端问题

1、大小端问题的由来在计算机内存中,通常是以字节(Byte),也就是 8 个位(Bit)为基本存储单元(也有以 16 位为基本存储单元的)。对于像C++中的char这样的数据类型,占用一个字节的大小,不会产生什么问题。但是当数据类型为int,在32bit的系统中,它需要占用4个字节(32bit),这个时候就会产生这4个字节在寄存器中的存放顺序的问题。比如int maxHeight = 0x...

2019-03-20 21:48:05 353

原创 进程、线程、协程区别

来源:https://www.cnblogs.com/lxmhhy/p/6041001.html一、概念  1、进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,...

2019-03-20 21:21:56 122

转载 Linux常用的命令

文件和目录:cd /home 进入 '/ home' 目录'cd .. 返回上一级目录cd ../.. 返回上两级目录cd 进入个人的主目录cd ~user1 进入个人的主目录cd - 返回上次所在的目录pwd 显示工作路径ls 查看目录中的文件ls -F 查看目录中的文件ls -l 显示文件和目录的详细资料ls -a 显示隐藏文件创建目录:mk...

2019-03-20 21:11:27 179

转载 在1G内存的计算机中能否malloc(1.2G)?为什么?

作者:开点工作室(微信公众号:kaidiancs)链接:https://www.nowcoder.com/discuss/20610?type=0&order=0&pos=6&page=1【解答要点】:malloc能够申请的空间大小与物理内存的大小没有直接关系,仅与程序的虚拟地址空间相关。程序运行时,堆空间只是程序向操作系统申请划出来的一大块虚拟地址空间。应用程序通过m...

2019-03-20 18:06:29 5736

转载 程序奔溃的原因

来源:https://blog.csdn.net/ciengwu/article/details/76861831https://blog.csdn.net/erwuhuoche/article/details/81582817常出现程序崩溃的几种状况<C语言奔溃的原因内存越界,指针为空>1)内存越界具体的代码形式可为数组下标越界和指针移动越界,在操作一个数组或是指针之...

2019-03-20 17:59:58 958

原创 什么是内存泄露?怎么检测

来源:https://blog.csdn.net/u014796694/article/details/80795372什么是内存泄露?简单地说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露了。2、如何检测内存泄露第一:良好的编码习惯,...

2019-03-20 17:32:03 9552

转载 STL

http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.html一、STL简介STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在...

2019-03-19 17:14:21 128

原创 C语言中基本类型的范围

来源:https://blog.csdn.net/weixin_42856843/article/details/81989737C 语言的数据基本类型分为字符型、整型、长整型以及浮点型因为CPU差异,各系统中的数据类型所占的字节数(bytes)不同,二进制位数(bit)也不同。那么怎样才能知道自己系统的数据类型的字节数,位数呢?授之以鱼不如授之以渔,大家可以自己从电脑里获取这些信息。...

2019-03-19 16:30:40 1015

原创 http和https的区别

来源:https://www.cnblogs.com/wqhwe/p/5407468.html超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。  为了解决...

2019-03-19 16:11:53 125

原创 堆排序

堆排序的思想:初始化大根堆然后从倒数第二个叶子节点到根节点上依次调整为大根堆排列成大根堆后然后将最后一个节点的最小元素与根节点大元素交换,固定第一个最大元素然后从根节点再次构建大根堆例子:给定一个列表array=[16,7,3,20,17,8],对其进行堆排序。首先根据该数组元素构建一个完全二叉树,得到然后需要构造初始堆,则从最后一个非叶节点开始调整,调整过程如...

2019-03-19 16:05:30 193

原创 Http状态码

首先,我们要知道几乎所有的HTTP状态码都被分成了五大类:1开头的表示服务器收到请求并需要请求这继续处理;2开头的成功响应,表示成功处理了请求;3开头的重定向,引导浏览器跳转到另一个资源页面;4开头表示请求出错,妨碍了服务器的处理,服务器会返回一个状态码解释到底是什么错误;5开头的表示服务器错误,并不是请求者的原因;1xx:请求收到,继续处理2xx:操作成功收到,分析、接...

2019-03-18 21:14:07 197

原创 select poll epoll 的区别

1、select poll 每次循环都需要从用户空间向内核中传递数据 epoll 直接在内核空间创建 事件表,每个描述符仅需要传递一次2、select poll 在内核中以轮询的方式检测有就绪事件的描述符O(n) epoll 在每个描述符上注册回调函数,事件就绪后,执行回调函数将描述符添加到就绪队列了O(1)3、select poll 返回后,需要遍历所有文件描述...

2019-03-18 19:49:59 102

转载 二叉树的递归遍历与非递归遍历

通过递归算法与非递归算法的比较,非递归其实就是利用栈的基本操作,进栈,出栈等。基本数据结构typedef struct BiNode{char data;//二叉树根节点struct BiNode *lchild,*rchild;//左右孩子节点}BiNode,*BiTree;二叉树的创建先申请根节点的空间,然后赋值,然后分别递归建立其左子树和右子树二叉树的...

2019-03-13 17:12:31 131

原创 栈和堆的区别

一个由C/C++编译的程序分为以下几个部分:(1)栈区(stack):由编译器自动分配内存,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈(先进后出)(2)堆取(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,(与数据结构中的堆不同)(3)全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块...

2019-03-13 15:57:10 77

原创 c++中空类占一个字节

图中实现一个空类,发现结果为1个字节,为了就是让对象的实例区别开来,空类也可以被,并且每个实例在内存中都有独一无二的地址,因此,编辑器会给空类隐含加上一个字节,这样空类的实例化之后就可以拥有独一无二的内存地址,如果没有这一个字节的占位,就无所谓空类的实例化了。因为实例化的过程就是在内存中分配一个地址。...

2019-03-13 14:03:31 664

原创 const 和宏define的区别

(1)起作用的阶段不同,#define是在编译的预处理阶段起作用,而Const是在编译、运行的时候起作用(2)起作用的方式不同,#define只是简单的字符替换,没有类型检查,而const有对应的数据类型,需要进行判断(3)就存储方式来看,#define只是进行展开,有多少个地方使用,就替换多少次,它定义的宏常量在内存中有好多备份,而const在内存中只有一个备份。(4)从代码调试的方...

2019-03-12 17:12:35 284

原创 指针和引用的区别

(1)指针可以为空,所以用指针时需要判空,而引用不能为空,当被创建时,必须初始化。从安全性来看引用占优(2)引用没有const,指针有const,const的指针不可变,指向的内容可变(有const指针,没有const引用)(3)对指针和引用求sizeof,结果不同,sizeof(指针)是指针本身大小它的大小,在32位下为4字节,在64为下为8字节,sizeof(引用)得到的是指向变量的大...

2019-03-12 16:45:59 162

原创 给一个整数,求出它的二进制中1的个数

利用(x&amp;x-1)把一个整数减去1,再和原整数做与运算,会把该整数的最右边一个1变为0,那么一个整数的二进制中有多少个1,就可以进行多少次这样的操作。public static int(NumberOflSolution3(int n){ int count = 0; while(n&gt;0){ count++;...

2019-03-12 16:30:43 385

原创 判断链表是否有环(单链表)

看到了两种方法:1、快慢指针(slow和fast)从头结点Head开始标记,慢指针走一步,快指针走两步,如果走的快的追上了走的慢的,就一定有环,如果走的快的走到了链尾也没有追上走的慢的,则一定不是环形链表//判断链表是否有环bool IsLoop(NODE *head)//假设为带头节点的单链表{ if(head=NULL) return ...

2019-03-12 16:21:28 159

原创 结构体大小

结构体内存对齐      //结构体大小,存在内存对齐问题(1)先定义一个结构体A,并将其初始地址设为100我们通常认为a先申请1个字节,b在申请4个字节大小空间,结构体A总共占5个大小字节100 101 102 103 104 105 106 107 a b b   b b       1+4=...

2018-07-27 17:43:57 139

原创 动态内存的申请和释放

动态内存:动态创建内存,创建大内存在Windows中,堆中最大的连续内存大概1.3G左右一、申请1.malloc(当我们需要在堆中申请一块连续且指定大小的内存块时的内存时,我们可以使用动态内存。)参数:size(分配的字节)需要的头:&lt;stdlib.h&gt;和&lt;malloc.h&gt;使用:指针类型+变量名=(指针类型)+malloc+(n*sizeof(数据...

2018-07-23 18:51:43 418

原创 字符串常量和字符数组

char *Mystrcat(char *des,const char *src){    assert(des!=NULL &amp;&amp; src!=NULL);    char *p = des;    while(*des!='\0')//找尾巴    {        des++;    }    while(*des++ = *src++);//复制    ...

2018-07-16 22:16:11 235

原创 求字符串长度strlen和某种类型的字节数sizeof

#include &lt;stdio.h&gt;#include &lt;assert.h&gt;#include &lt;string.h&gt;//计算字符串的有效长度,不包含'\0'int Mystrlen(const char *str){    assert(str != NULL);    int count = 0;    while(*str != '\0') ...

2018-07-16 21:55:38 239

原创 计算(1+2+3+...+n )计算(1*2*3*...*n)n!

(1)计算1+2+3+...+n可分别用for,while,dowhile循环语句实现#include&lt;stdio.h&gt;//for语句/*int Sum(int n){ int tmp=0; for(int i=1;i&lt;=n;i++) {  tmp+=i; }  return tmp;}int main(){ printf("%d\n",Sum(100));}//while语句/...

2018-07-15 21:32:35 2614

空空如也

空空如也

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

TA关注的人

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