自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式-观察者模式

前面介绍了设计模式中得迭代器模式 ,今天来聊一聊另外一个设计模式- 观察者模式UP主卑微求三连一.需求:天气预报项目需求,具体要求如下: 1) 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如 发布到自己的网站或第三方)。 2) 需要设计开放型API,便于其他第三方也能接入气象站获取数据。【比如小米手机,华为手机的天气预报软件】3) 提供温度、气压和湿度的接口 4) 测量数据更新时,要能实时的通知给第三方二.传统方案WeatherData类 .

2020-09-30 12:15:04 133

原创 NoSql-Redis底层数据结构

前面我们介绍了五种 Redis 的基本类型,现在我们看看到底他们用到了什么数据结构求关注【资源来源:redis官网】STRING(字符串) LIST(列表) SET(集合) ZSET(有序集合) HASH(哈希)第一篇文章我们就说过 Redis 是用 C 语言写的,但是对于Redis的字符串,却不是 C 语言中的字符串(即以空字符’\0’结尾的字符数组),它是自己构建了一种名为 简单动态字符串(simple dynamic string,SDS)的抽象类型,并将 SDS 作为 .

2020-09-29 20:36:52 244

原创 MongoDB-增删查改【CRUD】

前面我们介绍了 MongoDB是什么东西,今天我们就来实际的操作一把,先给UP主整波三连把求关注,点赞,收藏事先说明:方法很多远远不止 这些 我就是介绍介绍基本的 ,你们可以通过官网查询 ,每个标题下面都有很多方法一.创建数据库【这里我们会使用到一个工具,其实什么工具都没所谓,操作命令都是一样的】• use 数据库名 – 使用use时,如果数据库存在则会进入到相应的数 据库,如果不存在则会自动创建 一旦进入数据库,则可以使用db来引用当前库 • db.collection.inser.

2020-09-29 17:26:42 135

原创 linux环境编程-可重入函数/不可重入函数

前面介绍了产生时序竞态的一种情况 和 怎么 解决这个情况的时序竞态,现在来介绍一下可重入/不可重入函数这个是比较概念的东西【大家了解即可{没有代码演示,哈哈哈,关注一波,点赞也行}】一.概念:一个函数在被调用执行期间(还没有执行完),由于某种时序或者被重复调用,称为重入。根据函数实现的方法可分为“重入函数”和“不可重入函数”来看看例子:【我给大家画个图,画的糙别怪我哦】先展示一下伪代码:【就那个意思 大家懂就行了】效果图:【这个 链表 是不是特别怪胎】结合上面的例.

2020-09-29 15:17:49 156 2

原创 linux环境编程-IPC【signal解决mysleep时序竞态】

前面 引出了 时序竞态产生的原因,现在我们来看看怎么解决 这个 问题其实非常的简单 这里 他不是说 自然时钟 发出的 SIGALRM时候 , 当前 进程 还处于 就绪状态嘛,在获取处理机之前,不能执行pause函数,那我们干脆 把这个 信号屏蔽掉【前面的文章讲了】,在调用 pause的时候在把 这个 信号 取消屏蔽,那这个信号不就会触发 pause函数嘛?,但是大家想一想 取消屏蔽这个操作 和 调用 pause 必须要是原子性的 【一次性执行完,没有进程的切换】,那么linux 也非常的贴心,给.

2020-09-29 14:23:07 122 1

原创 linux环境编程-IPC【信号(signal)时序竞态(竞态条件)】

前面我们介绍了信号的捕捉和屏蔽,今天我们介绍一下linux/UNIX中 由于信号产生的时序竞态(竞态条件)一.含义:时序竞态:即由于进程之间执行的顺序不同【CPU发生时钟中断,切换进程】,导致同一个进程多次运行后产生了不同结果的现象。二.首先我们先来介绍一个函数1) pause,在Windows编程中,我们肯定经常用到 system("pause"); 让进程处于阻塞状态,不过在linux中pause是一个系统调用,功能一样的也是用于阻塞进程的。windows中阻塞我们任意按一个键【本

2020-09-29 13:50:41 235

原创 NoSql-Redis配置文件redis.conf介绍

启动的时候,就通过配置文件来启动! 工作中,一些小小的配置,可以让你脱颖而出! 1.配置文件units单元对大小写不敏感2.包含文件 好比我们 C/C++的include 的一样bind 127.0.0.1 # 绑定的ip protected-mode yes # 保护模式 port 6379 # 端口设置 ...

2020-09-29 12:58:47 141

原创 NoSql-C/C++操作Redis

前面我们介绍了这么多今天我们一起来用C/C++操作一下redis数据库,后面我们在介绍redis更多高级的东西。现在我们先来连上操作试试感觉怎么样再说。我们需要一个 开源的hiredis:https://github.com/redis/hiredis 这里的封装大家可以直接来用介绍一些常用的函数:1. redisContext* redisConnect(const char *ip, int port) 该函数用来连接redis数据库,两个参数分别是redis数据库的ip和端...

2020-09-28 17:49:32 289

原创 NoSql-Redis事务

前面介绍了 Redis的 基本操作 现在来介绍一些面试 比较容易问道的 东西

2020-09-28 16:25:39 155

原创 NoSql-Redis【三种特殊类型-Bitmap】

为什么其他文章都不喜欢讲这些?这些在生活中或者开发中,都有十分多的应用场景,学习了,就是就 是多一个思路!人在江湖飘 ,技多不压身呀位存储 统计用户信息,活跃,不活跃! 登录 、 未登录! 打卡,365打卡! 两个状态的,都可以使用 Bitmaps! Bitmap 位图,数据结构! 都是操作二进制位来进行记录,就只有0 和 1 两个状态!365 天 = 365 bit 1字节 = 8bit 46 个字节左右! 例子:---------------------..

2020-09-28 14:32:34 95

原创 NoSql-Redis【三种特殊类型-Hyperloglog】

前面我们介绍了 三种特殊类型中的 操作 经纬度的 地理位置类型,底层用Zset实现的。今天来介绍一下另一种Hyperloglog,那Hyperloglog是什么呢? 有什么用呢?求关注什么是基数? A {1,3,5,7,8,7} B{13,5,7,8} 基数(不重复的元素) = 5,可以接受误差! 简介 Redis 2.8.9 版本就更新了 Hyperloglog 数据结构! Redis Hyperloglog 基数统计的算法!优点:占用的内存是固定,2^64 不同

2020-09-28 14:07:43 97

原创 linux环境编程-IPC【信号(signal)的捕捉】

前面我们介绍了怎么操作信号集,来阻塞某个信号,今天我们来看看另一种信号的处理方式捕捉

2020-09-28 13:41:50 147

原创 设计模式-迭代器模式

前面我们介绍了 设计模式中的访问者模式,今天我们来介绍一下 迭代器模式1601093438650一.看一个具体的需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系 组成,一个学校有多个学院,一个学院有多个系。如图:我们先来看看传统的解决方案1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分 层次的 2) 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个 学院,一个学院有多个系, 因此这种方案,..

2020-09-28 11:13:07 277

原创 NoSql-Redis三种特殊数据类型-Geospatial

前面我们介绍完了Redis的常见的五种数据类型。现在来介绍一下比较特殊的三种类型之一白嫖者vsup主官方文档:https://www.redis.net.cn/order/3685.html 一.Geospatial 地理位置 朋友的定位,附近的人,打车距离计算? Redis 的 Geo 在Redis3.2 版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆 几里的人! 可以查询一些测试数据:http://www.jsons.cn/lngco..

2020-09-27 15:41:20 174

原创 linux环境编程-IPC【signal-信号集操作函数】

前面我们介绍了能产生信号的函数,以及他们的传递信号给那些谁【非常的详细了】今天来介绍一下 信号集的操作函数。仔细看下面的视频,别眨眼,你会喜欢的。一.信号集操作函数内核通过读取未决信号集来判断信号是否应被处理。信号屏蔽字mask可以影响未决信号集。而我们可以在应用程序中自定义set来改变mask.已达到屏蔽指定信号的目的。【在前面我已经给大家介绍过啦,怎么影响的原理】信号集设定sigset _t set;// typedef unsigned long sigset .t; .int si

2020-09-27 14:20:44 146

原创 设计模式-访问者模式

前面我们介绍了 设计模式中的命令模式,现在我们来介绍一下设计模式中的访问者模式1601093438650还是来通过需求来介绍一下访问者模式。一.需求:完成测评系统需求 1) 将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对 该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等) 想来看看传统的方案怎么解决这个问题的传统方式的问题分析 1) 如果系统比较小,还是ok的,但是考虑系统增加越来越多新的功能时,对代码改 动较大,违反了ocp原..

2020-09-27 13:37:05 107

原创 NoSQL-MongoDB介绍

首先我们还是来还是来介绍一下数据库一.数据库(Database) • 数据库是按照数据结构来组织、存储和管 理数据的仓库。 • 我们的程序都是在内存中运行的,一旦程 序运行结束或者计算机断电,程序运行中 的数据都会丢失。 • 所以我们就需要将一些程序运行的数据持 久化到硬盘之中,以确保数据的安全性。 而数据库就是数据持久化的最佳选择。 • 说白了,数据库就是存储数据的仓库。二.MongoDB简介前面文章已经介绍了 NoSql 这里 就不多介绍了,官网:https://.

2020-09-26 16:31:28 157

原创 NoSql-Redis五大类型之一Zset

前面我们介绍了 Hash类型,今天 来介绍五大常用类型的最后一种 Zset【有序集合】------------------------------------------------------------------------------------------------------------------------------127.0.0.1:6379> ZADD myset libero 2 (error) ERR value is not a valid float

2020-09-26 15:06:49 99

原创 linux环境编程-产生信号函数的用法

前面我们介绍了 IPC中的信号机制(signal),今天来介绍 可以产生信号的函数用法一.killkill函数:给指定进程发送指定信号(不一定杀死) int kll(pid_ t pid, int sig);成功: 0;失败: -1(ID 非法,信号非法,普通用户杀init进程等权级问题),设置errno sig:不推荐直接使用数字,应使用宏名,因为不同操作系统信号编号可能不同,但名称一致。 pid>0:发送信 号给指定的进程。 pid=0:发送信号给 与调用kill函数进程属于

2020-09-26 14:11:03 221

原创 设计模式-命令模式

前面我们介绍了 模板方法模式,现在 我们来介绍一下 命令模式。我们先来看看 一个视频 了解一下我们还是先来引出一个需求:一.需求1) 我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装app就 可以控制对这些家电工作。 2) 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个App,分别控制,我 们希望只要一个app就可以控制全部智能家电。 3) 要实现一个app控制所有智能家电的需要,则每个智能家电厂家都要提供一个统一的接口 给app调用,这时 就

2020-09-26 13:10:21 1209 3

原创 NoSql-Redis中Hash类型

前面我们介绍 了 Redis的三种类型 string list set ,今天我们来介绍第四种 hash【这里我默认大家是见过这些常见的数据结构的哦】白嫖者vsup主Map集合,key-map! 时候这个值是一个map集合! 本质和String类型没有太大区别,还是一个简单的 key-vlaue! ---------------------------------------------------------------------------------------------------

2020-09-24 15:05:52 130

原创 linux环境编程-IPC【signal信号机制】

前面我们介绍了 IPC的 两种,现在接收另一种 signal 【信号机制】,先来看个视频了解一下是我一.信号的概念我们先来通俗的介绍一下信号【方便大家更好的理解】,如:古代战争中的狼烟,信号弹;体育比赛中使用的信号枪.....他们的共性:1.简单,2.不携带大量的信息,3.满足某个特定的条件才放松。 信号是信息的载体,linux/UNIX环境下,古老,经典的通讯方式,现在依然是主要的通信手段。 Unix早期版本就提供了信号机制,但不可靠,信号可能丢失,Berkeley和AT&T都对

2020-09-24 14:04:45 235

原创 设计模式-模板方法模式

前面我们介绍了设计模式中的代理模式,今天我们来看一看设计模式中的另一种模式- 模板方法模式一.案例:编写制作豆浆的程序,说明如下: 1) 制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 2) 通过添加不同的配料,可以制作出不同口味的豆浆 3) 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 4) 请使用 模板方法模式 完成 (说明:因为模板方法模式,比较简单,很容易就 想到这个方案,因此就直接使用,不再使用传.

2020-09-24 12:12:48 219

原创 NoSql-Redis中的Set类型

前面我们介绍了Redis中的String类型,今天我们来了解另外一种类型set【无序不重复集合】set中的值是不能重复的(一种元素只有一个)【下面的命令(特殊的我会注释一下)其他的只要学过英语都知道是什么意思】--------------------------------------------------------------------------------------------------------127.0.0.1:6379> SADD myset one (i.

2020-09-23 15:22:18 112

原创 linux环境编程-IPC【共享内存-mmap(内存映射)】

前面我们介绍了什么是IPC,以及IPC中得管道,现在我们来介绍IPC得另一种方式mmap原理:将一个文件或者其它对象映射进内存。 1.使用普通文件提供的内存映射 【一般用于无血缘关系进程】2.【一般用于有血缘关系的进程】使用特殊文件提供匿名内存映射,【MAP_ANONYMOUS or MAP_ANON 在 UINX中是没有的但是呢 UNIX中也有 匿名映射的方式(linux中也可以这么用)就是用这两个文件/dev/zero, /dev/null(这两个稍后在匿名映射中...

2020-09-23 14:09:46 318

原创 设计模式-代理模式

前面我们介绍了 享元模式,今天我们来介绍一下 代理模式一.代理模式的基本介绍 1) 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理 对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的 功能操作,即扩展目标对象的功能。 2) 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 3) 代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK代理、接口代 理)和 Cglib代理 (可以在内存动态的创建对象,而不需要实现接口,

2020-09-23 12:52:21 95

原创 NoSql-redis中List类型

前面我们介绍了 redis中的string 类型,和用法【还是 那句话 这些命令都不用去记忆增加自己的负担留个影响,用的时候查就行了】求关注今天我们来介绍一下 redis中的 列表【当然你可以规定把它玩成 栈和队列都是可以的】所有的list命令都是用l开头的,Redis不区分大小命令 ,别问我什么是链表【默认会数据结构哦】Demo127.0.0.1:6379> ping PONG 127.0.0.1:6379> LPUSH list one (integer) 1

2020-09-22 17:48:56 95

原创 设计模式-享元模式

前面我们接收了设计模式中的外观模式,今天我们来介绍一下享元模式。先看个视频了解一下我们还是抛出一个实际的案例,帮助大家理解:一.需求:小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希 望做这样的产品展示网站,但是要求都有些同: 1) 有客户要求以新闻的形式发布 2) 有客户人要求以博客的形式发布 3) 有客户希望以微信公众号的形式发布传统方案解决网站展现项目 1) 直接复制粘贴一份,然后根据客户不同要求,进行定制修改 2) 给每个网站租用

2020-09-22 11:55:45 345

原创 linux环境编程-进程间通信(IPC)-管道

在介绍管道之前我们得先了解 什么 是进程间通信,先看一个 视频 缓解一下气氛一.概念:在linux环境下 每一个进程都有自己独立的地址空间,彼此之间相互独立,任何一个进程的全局变量在另一个进程中都看不到,所有进程之间不能相互访问,要交换数据必须通过内核(kernal),在内核中开辟一块缓冲区,进程1 把数据拷贝进内核空间,进程2把数据再从 内核空间读走,内核提供的这种机制就是所谓的 进程间通信(IPC)二.IPC的方式:【后面我都会逐一详细介绍原理和代码实现】进程间要完成数..

2020-09-22 10:18:48 142

原创 设计模式-外观模式

前面 介绍了 设计模式中的组合模式,今天我们来认识一下外观模式还是 先 提出一个 需求引出外观模式(比较与传统的方法)一.需求:组建一个家庭影院: DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的 功能,其过程为: • 直接用遥控器:统筹各设备开关 • 开爆米花机 • 放下屏幕 • 开投影仪 • 开音响 • 开DVD,选dvd • 去拿爆米花 • 调暗灯光 • 播放 • 观影结束后,关闭各种设备传统的方式.

2020-09-21 12:28:45 61

原创 linux环境编程-waitpid(僵尸进程回收)

前面一篇文章介绍了 wait的 僵尸进程的回收,现在我们来介绍一下waitpid(与wait类似),那么这个函数 怎么使用呢

2020-09-21 10:34:17 553

原创 设计模式-组合模式

今天来介绍一下组合模式 ,什么是组合模式呢?先看个视频了解一下求关注还是 一样的,想通过一个需求来引出我们的 组合模式一.需求:编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系 组成,一个学校有多个学院,一个学院有多个系。我们先来看看传统的解决方式UML类图,看看有什么优势和劣势传统方案解决学校院系展示存在的问题分析 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分 层次的 2) 实际上我们的要求..

2020-09-20 10:32:39 96

原创 linux环境编程-wait(僵尸进程回收)

前面我们介绍了什么是僵尸进程,今天我们来看看 怎么回收 进程残留的PCB还是老规矩 看看视频 了解一下求关注#include<sys/types.h> #include<sys/wait.h> pid_t wait (int * status); wait()会暂时停止目前进程的执行,直到有信号来到或子进程结 束。如果在调用 wait()时子进程已经结束,则 wait()会立即返 回子进程结束状态值。子进程的结束状态值会由参数 status 返回, ..

2020-09-19 12:56:27 379

原创 NoSql-Redis五大常规类型-String类型

我们来具体介绍一下Redis的五大常用类型白嫖者vsup主【官网解释】Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。 Redis 内置了复制(replication)...

2020-09-19 11:17:38 140

原创 NoSql-redis基本命令和redis为什么是单线程的

昨天介绍了 redis的基本操作,今天来介绍一下 redis的基本命令1.首先我们先来 介绍一下 redis默认是有16个数据库的可以使用select 对数据库进行切换【和MySql的use差不多】(如果不切换,某人的数据库就是 0);select 3 切换数据库 DBSIZE 查看DB大小! keys * 查看数据库所有的key flushdb 清除当前数据库 flushdb flushall 清除全部数据库的...

2020-09-19 09:31:50 83

原创 linux环境编程-孤儿进程,僵尸进程,守护进程

前面的 进程控制我们已经陆续的介绍啦,今天介绍一下孤儿进程,僵尸进程,还有守护进程那他们到底是什么东西呢??先来个 视频了解一下博主的为人。一.孤儿进程父进程 先于 子进程结束,那子进程就成为了孤儿进程,父进程的资源被 init进程回收,没有结束的子进程就被init进程领养,init进程可以被看程是孤儿院的院长。二.僵尸进程:父进程 还在运行 ,子进程已经结束了【按常理来说,进程结束,他所开辟的资源都会被释放,当时这里 我要提醒大家,并不是所有的资源都会被释放的,内核中PCB(进程

2020-09-18 11:00:46 124

原创 NoSql-Redis基本操作

前面介绍了Redis 是什么,现在我们来介绍一下 基本的操作1.先启动redis-server2. 通过命令查看 redis 的端口号 和 进程号,当然上面启动的时候 也有关于进程号的日志信息3.使用redis-cli 进行连接测试!【如果输入ping 显示一个 PONG 就说明连接上了】4.如何关闭Redis服务呢? 方式有很多 你可以 kill -9 6379 , SHUTDOWN 或者其他的都是可以的5.redis的性能测试redis-benchmark ..

2020-09-18 10:04:18 109

原创 NoSql-Redis介绍

还是那句话只要没学死,就往死里学在NoSql 中 redis 算是非常出名的一种NoSql了,那么redis 是什么?先看个视频了解一下一.介绍Redis(Remote Dictionary Server ),即远程字典服务 !是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库, 并提供多种语言的API。 redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slav.

2020-09-18 09:13:56 238

原创 linux环境编程-exec函数族

介绍一下 exec函数族,那exec函数族到底是什么呢? exec函数族里面 有那些成员呢?先看个视频了解一下看完视频之后,我们来具体的介绍一下这个exec函数族一.exec函数族fork创建子进程之后,子进程执行的是和父进程相同的代码,但可能是不同的代码分支,子进程往往也可以调用一种exec函数族的 一种来执行另一个程序。当进程 调用exec函数族中的一种时,该进程的用户空间代码和数据完全被新的程序替换掉。从新的程序的启动历程开始执行,调用exec并不是创建新进程【调用前 和 调用后

2020-09-17 16:46:12 96

原创 设计模式-装饰者模式

前面 我们介绍了桥接模式,今天我们来介绍一下装饰者模式.那么什么是装饰者模式呢? 先来看一个视频介绍一下。看完之后 您应该了解博主的为人了,那我们来进去正题。一.我们先来看一看一个 案例:星巴克咖啡订单项目(咖啡馆): 1) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式 咖啡)、Decaf(无因咖啡) 2) 调料:Milk、Soy(豆浆)、Chocolate 3) 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便.

2020-09-17 15:41:39 92

空空如也

空空如也

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

TA关注的人

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