原创
文章平均质量分 79
Pluto_God
这个作者很懒,什么都没留下…
展开
-
变量概述
在编程语言中我们经常用到很多变量,比如整型变量、字符型变量、指针变量等等。那么它们都是如何区分的呢?下面我们以c语言为例,一起来看看。 我们说变量,变量有什么特点呢?它的属性有哪些呢?变量有五大属性:生命周期、内存区域、作用域、默认值和连接属性。我们就从这五个方面来说。 变量的可以分为四大类:(静态)全局变量、(静态)局部变量、动态内存和函数。我们分别来...原创 2018-05-12 21:20:42 · 221 阅读 · 0 评论 -
HTTP协议分析
在前面我们有讨论过IP协议和TCP协议,讨论了他们的功能和他们是如何完成网络通信的。本篇文章中,我们来讨论HTTP协议是如何来完成网络通信的,以及它的功能是什么。我们都知道我们可以通过浏览器访问任何一个Internet网上的Web服务器。但却不知Web客户端和服务器之间就是使用HTTP协议通信的。HTTP协议是一种应用层协议,它默认使用的传输层协议是TCP协议。何为HTTP协议:大家都...原创 2019-08-08 14:34:18 · 323 阅读 · 0 评论 -
进程间通信(三)之共享内存
上接进程间通信(二)四、共享内存共享内存也称共享存储,共享内存就是指允许两个或多个进程共享一定的存储区。因为数据不需要客户进程和服务器进程之间复制,所以说共享内存时最快的一种IPC。使用共享内存时要掌握的唯一要点,就是多个进程之间对一定存储区的同步访问。若服务器进程正在将数据放入共享存储区,则在它做完这一操作之前,客户进程不应该去取这些数据。通常,信号量被用来实现对共享内存的同步访问。(当...原创 2019-07-27 19:24:24 · 364 阅读 · 0 评论 -
Linux下函数的堆栈调用
在说堆栈调用之前我们先来看看linux中一个程序的4G虚拟地址空间是如何进行分配的,我们以下面一段代码为例,int glob1 = 10;int glob2 = 0;int glob3;int add(int a,int b){ return a+b;}int main(){ int a = 10; int b = 20; int c = max(a,b); ...原创 2019-07-22 11:06:14 · 823 阅读 · 0 评论 -
进程间通信(二)信号量
上接进程间通信(一)三、信号量信号量与前面的管道和消息队列不同,它相当一个计数器,用于多进程之间对共享数据对象的访问。使用信号量对共享资源进行控制之后,进程想要获取共享资源。进程需要执行下列操作:(1)检测控制该资源的信号量(2)若此信号量的值为正,则进程可以使用该资源。进程将信号量值减1,表示他使用了一个资源单位。(3)若此信号的值为0,则进程进入休眠状态,直至信号量值大...原创 2019-07-25 17:33:14 · 243 阅读 · 0 评论 -
进程间通信(一)
无论是多进程编程还是多线程编程都是为了能够高效的处理事务,若进程或线程之间无法进行数据交换,多进程编程或者多线程编程将显得毫无意义,每个进程都完成着自己独立的任务,与单进程、单线程有什么区别?所以进程之间需要数据交流,我们称之为进程间通信。进程都是独立运行的,所以进程要通信,必须有能够共享的东西——内核对象。内核对象:由操作系统内核维护的,在操作系统内核中的结构体变量。一般内核对象都...原创 2019-07-24 20:59:29 · 394 阅读 · 0 评论 -
进程、线程
在学习的过程中,我们很多人会搞不清楚进程和线程的区别,我们今天就从以下几个方面来讨论进程和线程的区别。一、概念1.进程(Process)进程时处于执行期的程序,但进程并不仅仅局限于一段可执行程序代码。进程还包含其他资源,像打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间以及一个或多个执行的线程(thread of execution),当然还包括用...原创 2019-07-24 15:57:32 · 229 阅读 · 0 评论 -
TCP详解
TCP协议是TCP/IP协议族中一个重要到的协议。和IP协议相比,TCP协议更靠近应用层,因此在应用程序中具有更强的课操作性。一、TCP服务的特点传输层协议主要有两个:TCP协议和UDP协议,相对于UDP协议而言,TCP协议是面向连接的字节流服务,具有可靠传输的特点。使用过TCP协议通讯到的双方必须先建立连接,然后才能开始数据的读写,双方都必须为连接分配必要的内核资源,以用...原创 2019-03-07 16:50:57 · 279 阅读 · 0 评论 -
C++三大特征之继承
C++有三大特征,封装、继承与多态,在本篇文章中,与大家来聊一聊继承。继承的本质就是代码的复用。简单的说,继承是指一个对象直接使用另一对象的属性和方法。C++中的继承关系就好比现实生活中的父子关系,继承一笔财产比白手起家要容易得多,原始类称为基类,继承类称为派生类,它们是类似于父亲和儿子的关系,所以也分别叫父类和子类。而子类又可以当成父类,被另外的类继承。1.在C++中派生来(子类)继...原创 2019-01-14 19:31:07 · 205 阅读 · 0 评论 -
函数模板详解
模板是c++泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。在 C++ 中,模板分为函数模板和类模板两种。函数模板是用于生成函数的,类模板则是用于生成类的。就以容器为例,每个容器都有一个单一的定义,比如 vector <int> 或 vector <string...原创 2019-01-13 18:45:47 · 657 阅读 · 0 评论 -
类中6个默认的函数
在C++中,系统给了6个默认的函数:构造函数、析构函数、拷贝构造函数u、赋值运算符的重载函数、取地址操作符的重载函数和const修饰的取地址操作符的重载函数。1、构造函数构造函数的函数名与类名相同,比如class Goods{};它的默认构造函数就是Goods(),没有返回值。构造函数时系统调用的,如果自己在类中写了,系统就不会提供,系统提供的构造函数都是共有的(public)、内联的...原创 2018-12-04 12:10:26 · 914 阅读 · 0 评论 -
类和对象
学习C++的都知道,C++有三大特征:封装、继承和多态1、类和对象的关系类和对象之间的关系就可以看作是现实生活中,对物体的描述与物体的实体之间的关系,实体经过抽象处理之后就是ADT,ADT对应C++中的类,对象就是类的实例化。抽象数据类型(ADT)是一个实现包括储存数据元素的存储结构以及实现基本操作的算法。我们通过一段代码来说明:#include<iostream&...原创 2018-11-29 15:44:20 · 188 阅读 · 0 评论 -
Linux系统下的编译、连接与运行
众所周知,我们程序员所写的代码都是英文字母与数字的集合,我们人能看懂,但是电脑只能识别高低电压,也就是所说的01代码,它是如何识别我们程序员所写的代码呢,比如c语言、c++。我们所写的代码又是经过了哪些过程之后,计算机就能识别了呢?也就是本文要讲的我们所写的代码是如何变成可执行的二进制文件的。这节讲的是Linux系统下,我们所写代码文件(.c/.cpp)文件是如何变成可执行的二进制文件的。...原创 2018-11-13 14:36:33 · 624 阅读 · 0 评论 -
C语言—推箱子
推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。简单的推箱子游戏受到了广大人民的热爱,让我们来看看程序员眼中的推箱子是什么样子的。下面我给大家介绍一下推箱子的C源代码。要完成推箱子项目首先要了解推箱子...原创 2018-08-23 15:20:09 · 2974 阅读 · 2 评论 -
如何统计一本英文书(比如简爱)中出现次数最多的前1000个单词
如何统计一本书中出现最多的前1000个单词,其实只要处理好新单词的储存,已经出现单词个数的统计,和根据出现次数的排序,就基本完成了这个项目。思路:1、从文件中依次读取一个个字符,如果是字母字符就放到一个字符数组中,当读取的字符是空格或者标点符号时,则已经读取的字符串视为一个单词,将其储存起来。 ...原创 2018-08-22 13:56:17 · 3292 阅读 · 0 评论 -
智能指针
在使用C++的过程中我们对内存的管理是一件让人很头疼的事情。在使用new和malloc的过程中,我们往往会忘记调用delete或free去释放已经不再所使用的堆内存,导致了内存泄露的情况。内存泄露会造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。为了能保证手动申请的内存都能够被释放,C++中就引入了智能指针这个概念。我们知道在C++中对象的生成会调用构造函数,当一个对象的生存周...原创 2019-08-10 18:04:53 · 195 阅读 · 0 评论