- 博客(43)
- 资源 (1)
- 收藏
- 关注
原创 进程间通信IPC——命名管道
命名管道1、基本概念2、创建1)命令行2)函数3、示例1、基本概念命名管道是一种特殊的文件类型,其存在于磁盘上,但是大小永远是0。不同于匿名管道的是:可在同一台计算机的不同进程之间或在跨越网络的不同计算机的不同进程之间实现通信支持可靠的、单向或双向的数据通信命名管道只是让两个无关的进程之间建立起联系,一旦关系建立起来,与命名管道的文件不再有关命名管道FIFO(first input first output)总是遵循先进先出的原则,即第一个进来的数据会第一个被读走命名管道可以一个读端,多个
2020-11-29 17:48:11
973
原创 进程间通信IPC——管道(匿名管道)
管道1、概念管道是个伪文件,本质上是内核使用环形队列机制,借助内核缓冲区实现。2、特性1)特征管道本质为内核缓冲区,用户态来看是一个伪文件由于是伪文件,所以对于管道有两个文件描述符印用,一个表示读端,一个表示写端管道是基于字节流实现通信的管道依赖于文件系统,其生命周期随进程管道本身自带同步互斥fork()进程的时候,子进程会继承父进程的管道与其描述符2)局限性管道采用半双工通信方式,数据只能在单方向上流动管道中数据不可反复读取。一旦读走,管道中不再存在管道必须作用于有血缘关
2020-11-29 15:32:09
386
原创 最快进程间通信方式——共享内存
共享内存共享内存1、概念2、共享内存数据结构3、共享内存操作函数共享内存最快的进程间通信方式—— 共享内存 。1、概念共享内存即多个进程共享指定的一块物理内存空间,一旦此物理内存映射到共享它的进程的虚拟地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据共享内存允许多个进程共享指定的物理内存空间。共享内存少了两次涉及用户态和内核态数据拷贝的时间和资源消耗 ,带来极高的效率;2、共享内存数据结构3、共享内存操作函数创建或打开共享内存
2020-11-21 00:17:44
1454
转载 平均值,标准差,方差,协方差,期望,均方误差
平均值,标准差,方差,协方差都属于统计数学;期望属于概率数学。统计数学1)平均值,标准差,方差统计学里最基本的概念就是样本的均值、方差、标准差。首先,我们给定一个含有n个样本的集合,下面给出这些概念的公式描述:均值:方差:标准差:均值描述的是样本集合的中间点,它告诉我们的信息是有限的。方差(variance)是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差...
2019-10-16 19:26:32
4084
原创 sizeof总结并于strlen对比~
sizeof总结并于strlen对比一、sizeof总结在C/C++中,sizeof是一个判断数据类型或者表达式长度的运算符。其作用好像类似于strlen()函数,但是两者还是有所不同。The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(includin...
2019-01-16 13:56:25
408
原创 typedef与#define解析!
typedef与#define解析!一、typedef在C和C++程式语言中,typedef是一个关键字,它用来对一个资料类型取一个别名,目的是为了使原始码更易于阅读和理解。其通常用于简化宣告复杂的类型组成的结构,但它也常常在各种长度的整数资料型别中看到,如size_t和time_t。资料类型:在程式设计的型别系统中,数据类型(Data Type),又称资料型态、资料型别,是用来约束数据的...
2019-01-15 21:00:33
379
原创 volatile关键字解析!
volatile关键字解析!在C、C++、JAVA等语言中,使用volatile关键字声明的变量或者对象通常具有优化、多线程相关的特殊属性。通常,volatile作为类型修饰符,其在不同的语言中的用法和语义有所不同。在C语言中,其作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。准确地说就是编译器在用到volatile变量时,提醒编译器,volatile变量随时...
2019-01-15 14:20:26
275
3
原创 关键字const详解~
关键字const详解~const在C语言中的关键字,其应用比较广泛,我们在C++、Pascal、PHP5之中也经常见到,今天就const的常用方法以及含义进行解释。const的作用:1、const修饰的变量称为常变量,其是变量,但是具有常属性,即变量或对象的值是不能被更新的。使用const在一定程度上可以提高程序的安全性和可靠性。2、可以保护被修饰的对象或变量。const可以保护那些不希望...
2019-01-10 19:50:45
818
原创 static关键字分析
static关键字在C/C++中含义我们经常可以看到在一些语言之中static作为关键字和函数出现,只是在不同的语言中其有着不同的作用,今天我们就来分析一下static在C/C++中的具体作用。C语言中static在C语言中主要有两个作用,如下:...
2019-01-09 22:58:27
172
原创 考研结束啦!开始修仙啦~
考研结束啦!开始修仙啦~漫长的考研之路终于结束了,从3月份开始准备到12月份参加完考试。半年的时间,伴随着斗转星辰一直向前。如今这段路终于快要走到尽头了。不管最终的结果怎么样,充满希望面对生活总是好的。半年时间没有更新博客,感觉像是被遗弃的玩具,蒙了一层灰尘。重新拾起最初的目标,多写博客,多敲代码,是时候继续向前出发啦!...
2019-01-09 18:03:59
245
原创 WordPress数据库连接错误解决方案!
原文见此:www.louhang.xin 前段时间网站莫名其妙显示“WordPress数据库连接错误”,之后各处搜寻错误原因,终得解决,现在将自己的解决方案分享一下,希望对大家有帮助~一. 原因分析数据库连接相关参数存在问题:数据库名,数据库账号,登陆密码等等,需要验证更新wp_options表出现问题,导致了连接失败。数据库前缀不一致,因为有可能数据库在迁移过程中,其前缀发生...
2018-03-31 20:50:22
10593
2
原创 Java聊天室(一)---框架搭建
聊天室BBS(一)----框架搭建设计目标:聊天室软件(BBS),能够实现不同数量用户之间的同时通信。此项目选择JAVA语言开发技术,考虑其(a) 跨平台特性。(b) JAVA的Swing 组件开发技术可以开发丰富的图形界面(c) 面向对象,有丰富的API支持开发效率会大大提高。(d) Java支持多线程运行,提供分布式的并行机智,运行效率高。Java支持Socket网络编程,使用起来简单...
2018-03-12 16:50:52
2255
原创 list模拟实现
list模拟实现前期我已经简单的介绍过list相关内容,今天进行list的模拟实现。代码见下:#pragma once#include"Iterator.h"#include<iostream>#include<assert.h>using namespace std;template <class T>struct ListNode{ ListNode<T>* _next;
2018-03-12 10:51:56
323
原创 list简析
list原文链接见此:简介上篇博客简单解析了vector的应用,这篇则要对list进行解析。list与vector一样,都是C++标准函数库的内容,其两者可以说都是容器。API中对与list的定义如下:Lists are a kind of sequence container. As such, their elements are ord
2018-01-23 20:59:24
343
原创 简析vector
简析vector1. 简介vector是C++标准模板库中的内容,简单说,它是一个能够存放各种类型的动态顺序表,其亦是一个包含数据结构与算法的模板类和函数库。以下是API中的定义:Vectors are a kind of sequence container. As such, their elements are ordered following a stri
2017-12-21 19:58:28
357
原创 简析C++模板
简析C++模板原文见:www.louhang.xin模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式。模板分为模板函数和模板类。通过模板我们可以增强代码的复用性。 减少无意义的重复工作,提高工作效率以及代码质量。模板函数模板函数的定义如下:template 返回类型 函数名(参数列表){
2017-12-03 13:08:13
250
原创 C++之 “虚函数” 详解
C++之 “虚函数” 详解原文见:www.louhang.xin虚函数在C++中有着十分重要的作用,通过虚函数可以实现多态(polymorphism)机制。在看《C++ primer plus》时,发现作者将虚函数放在类继承的一章之中,和动态/静态联编一起进行了讲解。我也就顺着复习了继承,便再剖析一下虚函数。虚函数--类的成员函数前面加virtual关键字,则这
2017-12-03 11:39:29
978
原创 多态及其对象模型
多态及其对象模型多态是C++中极为重要的一部分,前几篇博客我回顾了继承,菱形虚拟继承等,今天则要重新温估一下多态。多态(Polymorphism):多种形态,在面向对象编程过程中,接口的多种不同的实现方式即为多态。归根到底实则为可以将子类类型的指针或对象赋给父类的指针或引用,进而通过父类的指针或引用来完成对重写的函数的不同方式的调用。多态通过对统一操作作用于不同的对象,
2017-12-02 21:35:38
396
原创 菱形继承--菱形虚拟继承
菱形继承--菱形虚拟继承菱形继承菱形继承,其继承模型如下:菱形继承存在问题,Teacher类和Student类都继承了Person类,所以Teacher类和Student类除了拥有自身的成员变量都还拥有继承于Person的成员变量。而Assistant类继承了Teacher类和Student类,所以,Assistant类除了拥有自身的数据,还拥有Te
2017-11-25 23:14:57
419
原创 C++之--继承
最近在看《C++ primer plus》时,发现了很多之前存在的知识漏洞,故在此查漏补缺一波。废话不多说,直接重点。继承是C++中极为重要的一部分,是⾯向对象复⽤的重要⼿段。通过继承定义⼀个类,继承是类型之间的关系建模,共享公有的东西,实现各⾃本质不同的东西。C++中不同的限定修饰符限定了不同的继承关系。以下是三种不同的继承方式的基类特性和派生类特性简单总结:**基类的私有成员在派⽣类中不能访问
2017-11-25 15:02:32
302
原创 C++之--智能指针Smart Pointer
原文见www.louhang.xin设计思想最近在看《C++ Primer Plus》,不得不说这本书确实非常棒,里面把C++很多的语法都讲到的很清楚。这几天看了智能指针,所以在此,简单的进行一下剖析。 智能指针,顾名思义,既其首先是指针,其次其具有智能部分。具体是什么意思呢?RAII(Resource Acquisition Is Initialization) 资源分配即初始化,定义一个类
2017-11-24 14:31:39
353
原创 引用计数--写时拷贝
引用计数--写时拷贝原文章见www.louhang.xin假设一下场景:存在类A,其内含有成员变量为指针类型。首先创建对象a1,给a1 new了一块空间进行了初始化。之后创建了对象a2(可写对象),并且用对象a1进行拷贝构造来完成初始化,此时需要显现的写出拷贝构造函数,为a2 new一块新的空间,以防止浅拷贝,a1和a2都指向同一块空间,两者之间相互影响。但是,又定义了
2017-11-08 23:19:14
367
原创 C++对拷贝构造及默认成员函数的优化处理
C++对拷贝构造及相关默认成员函数的优化处理前面的博客中,将C++的默认成员函数构造函数、拷贝构造函数、析构函数等简单做了分析。在分析拷贝构造函数的时候有提到,传参时必须传引用,不能传值,否则会发生无穷递归调用。详见之前博客《C++之--拷贝构造函数》。那么在C++之中,拷贝构造及相关构造函数我们会频繁调用,那么是不是说,每次调用,都要有栈帧开销? 实际上,并不会,因为在
2017-10-25 00:30:47
270
原创 C++动态内存管理:new/delete
C++动态内存管理:new、delete C语言里动态内存管理是通过malloc/calloc/realloc/free进行管理。具体的详见我的博客《C语言动态内存管理》。C++之中的动态内存管理是通过new、delete这两个运算符来实现的,当然C语言当中的malloc、free在C++之中仍然可以应用,但是malloc、free却不适合C++的环境,具体的原因下面会详说。
2017-10-21 17:13:13
591
原创 运算符重载--日期类
运算符重载-日期类运算符重载即实现一名多用。下面来通过一个日期类的实现来看一看运算符的重载。#include #include using namespace std;class Date{public: Date(int year = 1949, int month = 10, int day = 1) //构造函数 : _year(year), _mo
2017-10-20 11:08:24
1120
1
原创 C++之--析构函数
C++之--析构函数析构函数也是一个·特殊的成员函数,其作用与构造函数刚好相反,析构函数是用进行清理工作的。析构函数的定义方式为在类名前加上“~”。而“~”在C++中是位取反运算符,所以从这里也可以想到,析构函数是与构造函数作用相反的成员函数。下面来看一下代码:class Student{public: //全缺省构造参数 Student(char* Na
2017-10-16 18:06:18
292
原创 C++之--拷贝(复制)构造函数
C++之--拷贝(复制)构造函数C++在类之中除了默认提供构造函数,同时还默认提供了拷贝构造函数又称复制构造函数。如果在创建对象的时候要用同类对象来进行初始化,那么这个时候就要用到拷贝构造函数。拷贝构造函数也是构造函数,不过是一种的特殊的构造函数罢了。下面来看一下简单的代码:#include using namespace std;class St
2017-10-13 18:53:46
411
原创 c++之--构造函数
c++之--构造函数在C++中,类里面提供了六个默认的成员函数:构造函数、析构函数、拷贝构造函数等。今天我来简单分析一下其中的构造函数。构造函数在C++中,对象的初始化是一个不可缺少且十分重要的问题。而为了解决这个问题,C++提供了一种特殊的成员函数——构造函数,来帮助我们完成对象的初始化。构造函数是一种特殊的成员函数,与其他成员函数不同,构造函数不用用户来
2017-10-08 23:11:14
426
原创 类与对象
类与对象类是C++的中非常重要的一个概念,也是实现面向对象程序设计的基础。对象可以是客观世界的一个实体,对象具有属性和行为。类是对象的抽象,对象是类的实例化。类是用户定义好的,而对象则是类类型的一个变量。首先来看一下如何定义一个简单地类:class Student{public: void showinfo() {}private:
2017-10-08 16:39:59
444
原创 C++“引用”详解
C++“引用”详解引用是标识符的“别名”,或者这样说,如果为一个对象定义了引用,那么这个引用就相当于这个对象的“别名”。就类似于有个同学叫王明,但是他还有一个外号,叫大毛,那么这个大毛即是王明的别名。类比推论,引用即是对象的别名。定义引用一般采取如下形式: 类型 & 引用变量名 = 已定义的变量名需要注意的是: 定义一个引用的时候,必须同时对它进行初始化,使
2017-10-04 23:01:50
341
原创 C++初识之函数重载、缺省参数
C++初识之函数重载、缺省参数C语言是结构化和模块化的语言,它是基于过程的,在面对小规模的问题是还比较容易来处理,但是当在公司以及个人解决某些复杂,程序规模比较庞大的问题时,C语言就显得有点力不从心了,故,C++就应运而生了~~~相比于C语言,C++是面对对象的语言,虽然相比于如今的纯面向对象语言JAVA一点,其显得不那么专一,但是其却将同时具有基于过程和面对对象的机制,大大提高了
2017-10-04 10:46:00
428
原创 C语言实现静态顺序表
C语言实现静态顺序表首先小小声明一下,最近一直没有更新博客,主要是在忙于搭建自己的博客,因为这个CSDN用起来确实不是很方便,再加上刚开学事情比较多,所以就没有太更新。现在,做个小小的宣传,我的个人博客网站:www.louhang.xin 欢迎大家来访问,这个网站上也主要是我的学习历程和技术分析。以后我的主要博客技术分享就主要放在自己的网站上了,当然CSDN上也会更新的。ok,闲话
2017-09-14 17:06:01
750
原创 简析结构体存储分配
简析结构体的存储分配结构与数组类似,但是两者之间存在着很大的差别。数组是通过下标进行访问,而结构是通过其成员的名字进行访问的。其次结构体内部成员更加灵活,那么结构体在内存中的存储是怎么分配的?来看下面代码:#include struct S1{ int a; char c;};struct S2{ char c; int a;};int main(){ p
2017-08-12 16:26:23
473
原创 指针经典例题
关于指针的经典例题上一篇博客,我基本上算是详细的介绍了一下指针,那么这篇博客就来分享几道有关指针的经典的例题。1.代码如下,请问程序运行结果是多少?#include int main(){ char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; char** cp[] = { c + 3, c + 2, c + 1, c }; ch
2017-08-02 21:07:00
9048
原创 解析指针!
“灵活”的指针指针是C中极为重要的一个概念,在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,可以指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。而在不同的机器中,指针变量所占据的内存也不相同。在32位机器中,一共有32个跟地址线,每个地址
2017-07-31 22:17:07
784
原创 可变参数列表解析
“可变”参数列表解析函数其参数在大多数情况下都是确定的,但是在某些时候,其参数却是可变的。今天我就来简单做一下可变参数列表的解析。什么是可变参数?如果留心的话可以发现,就库函数里面有些大家常用的均可接受1个以上的任意多个参数。比如printf函数:下来先看一个简单的例子,使用可变参数,实现函数求未知参数部分n个数的平均值:#include #includeint a
2017-07-29 19:52:14
474
原创 浅谈函数调用过程(栈帧)
浅谈函数调用过程(栈帧)众所周知,计算机在编译或运行时,使用某个函数来完成相关命令。而函数之前则是相互调用的关系。今天,我从栈空间的层面浅谈一下函数调用(栈帧)的具体过程,以加深对函数调用深层次的理解。接下来通过一个简单的程序来分析一下函数调用过程:#includeint Add(int, int);int main(){ int a = 5; int b = 10;
2017-07-26 11:14:08
574
原创 C语言简单实现扫雷小游戏~~~
C语言实现扫雷C语言编写小游戏扫雷,因为目前个人技术问题,外观界面不能做出来,最终呈现的效果还是在命令里进行,但是总体来说还是完成了扫雷的基本功能。不过,标记的函数,没有写的完美,每次都要进行标记,比较麻烦,所以在代码中我将其注释了,若有人能够有好的算法的话,还请不吝赐教。代码见下:#define _CRT_SECURE_NO_WARNINGS 1#ifndef __GAME_
2017-07-24 15:29:21
1583
原创 c语言简单实现三子棋(五子棋)
c语言简单实现三子棋(五子棋)此版本三子棋,我将其命名为三子棋1.0,其特点在于玩家无法赢取电脑,最大可能是和电脑平局,否则就是电脑赢若想让玩家取胜,也可以。只需将代码中的函数game()里面玩家的走动放在电脑前面即可,即让玩家先手移动。话不多说,直接上代码:1.三子棋: #define _CRT_SECURE_NO_WARNINGS 1#ifndef _GAME_
2017-07-17 14:57:03
1163
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人