自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Alatebloomer的博客

记录学习,记录生活

  • 博客(43)
  • 资源 (5)
  • 收藏
  • 关注

原创 简单线程池实现

 目标1.用于执行大量相对短暂的任务2.当任务增加的时候能够动态的增加线程池中线程的数量值到达一个阈值3.当任务执行完毕的时候,能够动态的销毁线程池中的线程4.该线程池的实现本质上也是生产者与消费者模型的应用。生产者线程向任务队列添加任务,一旦队列有任务到来,如果有等待线程就唤醒来执行任务,如果没有等待线程并且线程数没有达到阈值,就创建线程来执行任务。线程池拥有若干个线程,通常情...

2018-08-22 20:20:11 399

原创 Linux多线程--POSIX信号量、互斥锁、读写锁、条件变量

Posix信号量 Posix 信号量 有名信号量 无名信号量 sem_open sem_init sem_close sem_destroy sem_unlink                    ...

2018-08-22 17:17:46 348

原创 Linux多线程 --线程属性

线程属性初始化/销毁线程属性int pthread_attr_init(pthread_attr_t *attr);int pthread_attr_destroy(pthread_attr_t *attr);获取/设置线程分离属性int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachs...

2018-08-22 14:01:59 288

原创 Linux多线程 --线程基本API

POSIX线程库  与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”开头,要使用这些函数库,要通过引入头文<pthread.h>,而且链接这些线程函数库时要使用编译器命令的“-lpthread”选项[Ubuntu系列系统需要添加的是”-pthread”选项而不是”-lpthread”,如Ubuntu 14.04版本] 1.pthread_c...

2018-08-22 11:19:17 1297 1

原创 Linux多线程 --线程理论

线程概念   在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列/指令序列”;   一切进程至少有一个执行线程;进程  VS. 线程    1.进程是资源分配(进程需要参与资源的竞争)的基本单位,而线程是处理器调度(程序执行)的最小单位;   2.线程共享进程数据,但也拥有自己的一部分数据,如线程ID、一组寄存器(IP,SP)、...

2018-08-22 10:37:03 180

原创 POSIX共享内存

1. 创建/获取一个共享内存#include <sys/mman.h>#include <sys/stat.h> /* For mode constants */#include <fcntl.h> /* For O_* constants */int shm_open(const char *name, int o...

2018-08-22 10:04:07 609

原创 posix消息队列

posix和System V历史       UNIX两大贡献者贝尔实验室和BSD,在进程之间通信侧重不同,前者基于内核对进程之间的通信手段进行了改进,形成了“System V IPC”,而后者则是基于网络形成了套接字。       而POSIX则是IEEE制定的标准,目的是为运行在不同操作系统上的软件提供统一的接口,实现者则是不同的操作系统内核开发人员。说明       在信...

2018-08-22 09:33:14 303

原创 System V信号量实现生产者消费者

生产者消费者模型 实现一个先进先出的共享内存shmfifo使用消息队列即可实现消息的先进先出(FIFO), 但是使用共享内存实现消息的先进先出则更加快速 shmfifo说明:   将申请到的共享内存作为一块缓冲区, 将该内存的首部(p_shm到p_payload的内容)格式化为如上图所示的形式;读/写进程不断的按照先进先出的原则从其中读出/写入数据, 则读/写进程就...

2018-08-21 20:32:59 617

原创 System V信号量实现进程互斥和解决哲学家就餐问题

父进程打印输出一个o的字样,子进程打印输出x的字样,父进程打印输出o之后睡眠,睡眠一个随机的时间,然后再次输出o,子进程也是同样的动作,只是输出的是x。父子进程执行流程如下: 父进程 子进程 P P O(print) X(print) sleep ...

2018-08-21 16:51:55 417

原创 System V信号量

信号量集数据结构 struct semid_ds { struct ipc_perm sem_perm; //IPC对象数据结构 time_t sem_otime; //最后一次执行semop(PV操作)的时间 time_t sem_ctime; //信号量集状态最后一次改变的时间 unsigned short sem_nsem...

2018-08-21 16:06:01 195

原创 System V共享内存

共享内存数据结构 struct shmid_ds { struct ipc_perm shm_perm; //IPC对象数据结构 size_t shm_segsz; //共享内存段的大小 time_t shm_atime; //最后一次映射共享内存的时间 time_t shm_d...

2018-08-21 15:15:19 230

原创 共享内存

共享内存共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据,只需要通过一些内存访问函数来传递。共享内存示意图共享内存是整块内存当中的一块特殊区域,这块区域可以映射到不同的地址空间。A、B进程就可以通过共享内存区传递数据,并且不涉及系统调用。 管道、消息队列与...

2018-08-21 14:43:48 890

原创 System V消息队列(3)

消息队列实现回射客户/服务器server进程接收时, 指定msgtyp为1, 从队首不断接收消息server进程发送时, 将mtype指定为接收到的client进程的pid client进程发送的时候, mtype指定为自己进程的pidclient进程接收时, 需要将msgtyp指定为自己进程的pid, 只接收消息类型为自己pid的消息;#include <un...

2018-08-21 13:09:38 330

原创 System V消息队列(2)

消息发送/接收APImsgsnd函数int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);参数   msgid: 由msgget函数返回的消息队列标识码, 也可以是通过ipcs命令查询出来的一个已经存在的消息队列的ID号   msgp:是一个指针,指针指向准备发送的消息,   msgsz:是m...

2018-08-21 09:51:51 243

原创 System V消息队列(1)

消息队列概述   消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法(仅局限于本机);   每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值.   消息队列也有管道一样的不足: 每个消息的最长字节数的上限(MSGMAX); 系统中消息队列的总条数也有一个上限(MSGMNI); 每个消息队列所能够保存的总字节数是有上限的(MSGMNB)查看系统...

2018-08-21 09:16:08 285

原创 Linux IPC-概述

顺序程序与并发程序顺序程序特征顺序性 封闭性 确定性(运行结果) 可再现性(指的是运行结果)并发程序特征共享性 并发性 随机性 进程的同步与互斥   进程互斥: 由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥;系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源, 而在进程中涉及到互斥资...

2018-08-20 22:20:13 592

原创 命名管道

FIFO具名/命名管道   (匿名)管道应用的一个限制就是只能在具有共同祖先(具有亲缘关系)的进程间通信。   如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道;    命名管道是一种特殊类型的文件. 创建一个命名管道1)命名管道可以从命令行上创建:  $ mkfifo filename2)命名管道在程序里创建: ...

2018-08-20 16:23:03 644

原创 匿名管道

管道概念   管道是Unix中最古老的进程间通信的形式,我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”, 管道的本质是固定大小的内核缓冲区;   如:ps aux | grep httpd | awk '{print $2}' 管道限制  管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于具有共同祖先的进程(具有亲缘关系的进程)之...

2018-08-18 15:31:58 942

原创 Linux信号(5) --时间与定时器

三种不同精度的睡眠1.sleep#include <unistd.h>unsigned int sleep(unsigned int seconds);RETURN VALUE   Zero if the requested time has elapsed, or the number of seconds left to  sleep,  if  the ca...

2018-08-18 14:53:40 400

原创 linux信号(4):信号安装函数sigaction和信号发送函数sigqueue

Sigaction 信号安装  signaction 和signal都是信号安装函数#include <signal.h>int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);功能:   sigaction函数用于改...

2018-08-18 14:01:52 720

原创 inux信号(3):信号内核表示 、操作函数,阻塞与未决

信号在内核中的表示   执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。   注意,阻塞和忽略是不同,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。信号在内核中的表示可以看作是这样的:...

2018-08-18 11:02:12 228

原创 Linux信号(2) --信号分类

信号分类 不可靠信号Linux信号机制基本上是从UNIX系统中继承过来的。早期UNIX系统中的信号机制比较简单和原始,后来在实践中暴露出一些问题,它的主要问题是:   1.进程每次处理信号后,就将对信号的响应设置为默认动作。在某些情况下,将导致对信号的错误处理;因此,用户如果不希望这样的操作,那么就要在信号处理函数结尾再一次调用signal(),重新安装该信号。   2.因此导致,...

2018-08-18 10:15:44 804

原创 Linux信号(1) --Linux信号编程概述

中断    中断是系统对于异步事件的响应, 进程执行代码的过程中可以随时被打断,然后去执行异常处理程序;    计算机系统的中断场景:中断源发出中断信号 -> CPU判断中断是否屏蔽(不予处理)以及保护现场 -> CPU(查询中断向量表, 找到中断服务程序的入口地址)执行中断处理程序 ->(处理完中断之后) ->恢复现场,继续执行原来的任务中断分类硬件中断(...

2018-08-17 20:27:57 314

原创 Linux进程(5) --守护进程

守护进程概述Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mys...

2018-08-17 18:24:57 355

原创 linux进程(4):wait,waitpid

本节学习SIGCHLD、wait、waitpid、僵尸进程、systemSIGCHLD当子进程退出的时候,内核会向父进程发送SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止) 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态。 父进程查询子进程的退出状态可以用wait/wait...

2018-08-17 17:29:33 311

原创 计算表达式(falg x y)

计算表达式(falg x y),flag可以是+ ,-,^ ,其中^是一元运算符,要求判断表达式的合法性#include<string>using namespace std;string str;int n;int b = 1;//思路//判断( + x y) 注意x和y可能是数字也可能是一个运算 都需要判断//或者( * x y)//或者( ^ x ...

2018-08-17 09:53:35 276

原创 阿里测试

今天我们看到的阿里巴巴提供的任何一项服务后边都有着无数子系统和组件的支撑,子系统之间也互相依赖关联,其中任意一个环节出现问题都可能对上游链路产生影响。小明做为新人接收到的第一个任务就是去梳理所有的依赖关系,小明和每个系统的负责人确认了依赖关系,记录下调用对应系统的耗时,用这些数据分析端到端链路的数目和链路上最长的耗时。输入: 小明搜集到的系统耗时和依赖列表5  4   // 表示有...

2018-08-17 09:47:34 1233 1

原创 string

一、标准库string类型string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作 ,在VC中直接F1查看template < class CharType, class Traits=char_traits<CharType>, class Allocator=allocator<CharTyp...

2018-08-17 00:40:46 170

原创 Linux进程(3)--进程终止与exec函数族

进程的几种终止方式(1)正常退出   从main函数返回[return]   调用exit   调用_exit/_Exit(2)异常退出   调用abort   产生SIGABOUT信号   由信号终止  Ctrl+C [SIGINT]   ...(并不完全, 如return/pthread_exit等)系统调用_exit直接陷入内核,而C语言库函数是经过一...

2018-08-15 00:18:01 463

原创 Linux进程(2) --僵尸进程与文件共享

孤儿进程与僵尸进程孤儿进程:  如果父进程先退出,子进程还没退出那么子进程成为孤儿进程,此时子进程的父进程将变为init进程(托孤给了init进程)。(注:任何一个进程都必须有父进程)//生成孤儿进程int main(int argc, char *argv[]){ pid_t pid = fork(); if (pid < 0) err_e...

2018-08-13 22:24:59 236

原创 14.重载运算符

类型转换运算符必须是成员函数,不能是友元函数 没有参数 不能指定返回类型 函数原型:operator 类型名();#ifndef _INTEGER_H_#define _INTEGER_H_class Integer{public: Integer(int n); ~Integer(); Integer &operator++(); ...

2018-08-10 00:52:54 151

原创 C语言中的几个重要函数

strcmp函数:比较字符串//C/C++函数,比较两个字符串,设这两个字符串为str1,str2,//若str1==str2,则返回零;//若str1<str2,则返回负数;//若str1>str2,则返回正数。int strcmp(const char* str1, const char* str2){ while(*str1 == *str2 &...

2018-08-06 11:42:28 1387

原创 读取多行数据到vector

要读取多行数据到vector,但是每行的数据个数又不一样,可以用到istringstream,先读取一行字符串,然后转化为字符串流,再从istringstream中读取数据#include<iostream>#include<string>#include<sstream>#include<vector>using namespac...

2018-08-05 21:54:04 815

原创 14.重载运算符

++运算符重载前置++运算符重载成员函数的方式重载,原型为:  函数类型 & operator++();友元函数的方式重载,原型为:  friend 函数类型 & operator++(类类型 &);后置自增和后置自减的重载成员函数的方式重载,原型为:  函数类型 & operator++(int);友元函数的方式重载,原型为:...

2018-08-03 23:29:38 279

原创 13.运算符重载

目录运算符重载成员函数重载非成员函数重载运算符重载规则运算符重载运算符重载允许把标准运算符(如+、—、*、/、<、>等)应用于自定义数据类型的对象 直观自然,可以提高程序的可读性 体现了C++的可扩充性 运算符重载仅仅只是语法上的方便,它是另一种函数调用的方式 运算符重载,本质上是函数重载 不要滥用重载、因为它只是语法上的方便,所以只有在涉及的代码更容...

2018-08-03 22:00:58 195

原创 12友元

友元介绍友元是一种允许非类成员函数访问类的非公有成员的一种机制。可以把一个函数指定为类的友元,也可以把整个类指定为另一个类的友元。友元函数 友元类友元函数友元函数在类作用域外定义,但它需要在类体中进行说明为了与该类的成员函数加以区别,定义的方式是在类中用关键字friend说明该函数,格式如下:friend  类型 友元函数名(参数表);友元的作用在于提高程序的运行效...

2018-08-03 21:29:46 150

原创 Linux进程(1) --Linux进程编程概述

什么是程序程序是完成特定任务的一系列指令集合。什么是进程从用户的角度来看进程是程序的一次执行过程 从操作系统的核心来看,进程是操作系统分配的内存、CPU时间片等资源的基本单位。 进程是资源分配的最小单位 每一个进程都有自己独立的地址空间与执行状态。 像UNIX这样的多任务操作系统能够让许多程序同时运行,每一个运行着的程序就构成了一个进程进程数据结构进程由三部分组成:PCB...

2018-08-03 11:58:01 299

原创 设计模式简介

目录 1. 设计模式简介课程目标什么是设计模式GOF 设计模式从面向对象谈起深入理解面向对象软件设计复杂的根本原因-变化如何解决复杂性?软件设计的目标2. 面向对象设计原则面向对象设计,为什么?重新认识面向对象八种设计原则:面向接口设计将设计原则提升为设计经验3. 模板方法 Template MethodGOF-23 模式分类...

2018-08-02 15:03:17 334

原创 Singleton 单件模式

“对象性能”模式面向对象很好的解决了“抽象”的问题,但是必不可免地要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理。典型模式Sington Flyweight单例模式Singleton保证一个类仅有一个实例,并提供一个该实例的全局访问点。——《设计模式》GoF动机在软件系统中,经常有这样一个特殊的类,必须...

2018-08-02 11:36:53 311

原创 11 static与单例模式

单例模式保证一个类只有一个实例,并提供一个全局访问点 禁止拷贝#include <iostream>using namespace std;class Singleton{public: static Singleton* GetInstance() { if (instacne_ == NULL) { instacne_ = new Single...

2018-08-01 22:58:03 397

深度学习 最新完整pdf

《深度学习》由全球知名的三位专家IanGoodfellow、YoshuaBengio和AaronCourville撰写,是深度学习领域奠基性的经典教材。该版本是2017年9月4日版

2017-11-02

MATLAB最新时频工具箱和使用说明

到目前为止MATLAB最新时频工具箱,里面包含了PDF的使用说明

2017-10-17

HHT中的EMD算法

HHT算法的详细讲解PPT, 包含其处理过程的演示以及应用讲解。还 包括HHT变换的相关资源链接

2017-10-13

中央大学数据分析HHT EMD Matlab 源代码

黄锷院士所在中央大学数据研究中心提供EMD 代码,其中有EMD和EEMD的算法工具箱

2017-10-13

Debug编译操作

debug是为DOS提供的有力的侦错,跟踪程序运行,检查系统数据的工具程序,它是在字符界面下以单字符命令方式工作。要很好地使用它必须具备一定的汇编程序设计和硬件基本知识的能力,当然,它为汇编语言程序员提供了有效的调试手段

2014-10-16

空空如也

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

TA关注的人

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