自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis缓存相关问题

1.缓存穿透2.缓存雪崩3.缓存击穿4.缓存和实际数据库不一致以上四个问题是常见的使用缓存的问题,个人其实十分厌恶缓存穿透和缓存击穿这两个总结的名字,非要把很简单的现象用两个听上去差不多的名词代替,搞的人特别容易混淆,但是很多人说也没办法,只能找个记忆的方法。缓存穿透定义缓存穿透是指大量请求了一定不存在的数据,数据库里没有,也不会有写回到缓存的操作,缓存失去了存在的意义(像透明化了一...

2020-05-06 16:40:52 174

原创 Redis之布隆过滤器

定义布隆过滤器,是指一个辅助的手段,通过一个类似于按位读或者说是类似数组赋值的方式告诉程序,一个key一定不存在,或者是可能存在。好处试想一下,如果去判断某个元素是否存在,会使用什么样的方法,从时间复杂度的角度来讲应该是会用到hashmap,但是当元素的量十分巨大,hashmap的空间复杂度也会变得十分巨大,因此,布隆过滤器这样的按位去标记的好处就能体现出来,在一个相对占空间较小的情形下,可...

2020-04-25 17:43:50 227

原创 redis——主从复制笔记

redis主从复制在redis中,欧诺个话可以通过slaveof命令或者slaveof选项,让一个服务器去复制另一个服务器的数据,2.8版本前是旧版复制功能,即同步sync和命令传播command propagate两个操作旧版复制1.同步从服务器向主服务器发送sync命令主服务器执行BGSAVE命令(不阻塞),生成RDB文件,并在缓冲区中记录从现在开始执行的写命令从服务器接受RDB文...

2019-12-11 11:49:03 172

原创 redis——持久化方式RDB和AOF笔记

RDBRedisDataBase是一种保存redis数据库状态的方式,存储的是相对AOF更加直观的数据,数据内容大概是:REDISdbversiondatabasesEOFcheck_sum↑这是最上层的文件格式,比较底层的是key_value_pairs部分↓TYPEkeyvalueTYPE对应了string、list、set、zset、has...

2019-12-09 18:18:45 132

原创 Redis-事务笔记

redis事务的执行过程事务从开始到结束通常会经历3个阶段:事务开始 //MULTI命令入队事务执行 //EXEC事务开始redis > MULTIokMULTI命令可以将客户端从非事务状态切换至事务状态,是通过在客户端状态的flags属性中打开REDIS_MUTLI标志实现的命令入队当客户端处于事务状态时,所有除EXEC、DISCARD、WATCH、MU...

2019-12-09 10:49:33 110

原创 Go语言学习记录——知乎图片爬虫工具

Q1:为什么是Go语言?因为网上别的语言的爬虫有很多,而最近学习go语言,发现go语言的爬虫非常少,或者说现成的爬虫框架特别难懂,于是想要记录一下爬虫学习的过程。Q2:为什么是爬知乎的图片叻?因为本人没事就爱刷知乎,以小时为单位起刷,所以就想以知乎入手,学习学习,写一篇文章叻就想记录一下学习过程。话不多说,开始接受爬虫,个人认为就是将想要的数据批量的下载下来,经过过滤筛选,得到最后自己想...

2019-07-05 20:50:58 2653 9

原创 Gogoroutine的使用——“使用两个goroutine,一个打印数字,一个打印字母实现‘12AB34CD56EF78GH910IJ’”

思路:交替打印势必需要同步,就引入chan 通道的想法 ,简单模拟了锁的功能,创建两个chan ,goroutine 1 :打印数字前上锁(从chan1读,若chan1无数据,即阻塞),若有数据,开始打印12打印完给给chan2写如数据,(即给通道2释放锁)goroutine 2:...

2019-04-04 15:00:32 1053

原创 Go语言——通俗理解接口的概念

接口定义了对象的行为这是很多资料对接口的定义,可能会看不大懂,那就从实际的使用中来理解吧首先定义对象的行为,那么就上一个类,和他实现的方法type Animal struct{}//以下是Animal实现的方法func (a *Animal) shout() { fmt.Println("call shout()&amp

2019-03-15 18:15:14 1262

原创 C++设计模式——观察者模式

什么是观察者模式??? 是对象与对象之间的一对多的关系,当一个对象的状态改变时,他所对应的所有对象都要受到消息。observer对象通常有一个map表,map就是一种键值的对应关系,为了编码简单,用int代替事件的发生,map的second采用数组,存放基类指针。 上代码!//非线程安全的#include <iostream>#include <vector>...

2018-05-16 17:04:29 259

原创 内存管理——智能指针的理解

首先,还是从为什么出发 为什么要有智能指针??? 为了防止内存泄漏,比如:程序员写new的时候忘记delete,或者异常处理时候直接跳过你的delete语句了,自己在编译器里写程序的危害还不算太大,因为进程结束,操作系统会自动回收对应分配出去的内存,但试想有公司里服务器上的进程需要不停的用,那么内存泄漏带来的危害是很恐怖的,那么就引入了智能指针的概念,它利用了类对象出作用域自动调用析构函数的这...

2018-05-15 19:24:55 417

原创 内存管理——ptmalloc、空间适配器、nginx内存管理的区别

今天整理一下最近看到的三个关于内存管理的方法,他们有哪些相同点,有哪些不同点。 上一篇博客已经讲述了ptmalloc和二级空间配置的不同点,今天来聊聊nginx网络库自带的内存管理的独特方式。 首先,先来看看nginx内存池的主要的两种数据结构typedef struct {u_char *last; //表示当前已使用数据区的结尾u_char *end; ...

2018-05-14 17:24:16 265

原创 内存管理——ptmalloc机制和SGI STL的二级空间配置器的区别

今天遇到了一个有意思的问题:ptmalloc内存分配机制是数组+链表管理的,而SGI STL的二级空间适配器同样是数组+链表管理方式,那么有了malloc的ptmalloc的机制,为什么不直接用呢?为什么还要有二级空间配置器这东西存在呢???个人理解: 先从空间配置器入手,空间配置器将new的操作细分: 1.先申请空间, 2.在申请的空间上调用构造函数 (为什么要将这两步拆分,之前的博...

2018-05-13 18:01:55 326

原创 网络——拥塞控制

什么是拥塞控制?????? 拥塞控制提高网络利用率,降低丢包率,保证网络资源对每一条数据流的公平性的一种手段。拥塞控制的过程 回答这一问题,我认为分两点回答思路最为清晰。

2018-05-09 18:58:54 585

原创 网络——当你在浏览器中输入百度回车的时候都发生了什么

今天碰到了一个有意思的问题,从输入网址到呈现出来都发生了什么。通过这一问题,复习一下网络方面的知识吧。1.负责域名查询与解析的DNS服务器开始起到作用 一般用户通常使用域名访问某网站,而不是IP地址,然而计算机只认识IP地址,因此,DNS服务应运而生,DNS协议提供通过域名查找IP地址或逆向从IP地址反查域名的服务。

2018-05-09 17:03:31 1075

原创 操作系统——内存管理和虚拟地址映射那些事

为什么会有内存管理??? 随着计算机的高速发展,计算机早已不是单道处理模式了,不再使用古老的纸带打孔的方式,将持续输入到cpu,让其执行了,而是将程序加载到内存中去,那么当多个程序同时运行的情况下,怎么去给程序分配位置就是发明者要考虑的问题了。因此有了内存管理这种说法,内存管理的目标有两点: 1.地址保护:一个程序不能访问另一个程序的地址空间 2.地址独立:程序发出的地址应与物理地址没有直接关

2018-05-08 17:35:43 1175

原创 STL——空间配置器的笔记

空间配置器是什么???? 空间配置器是STL六大组件之一,是为容器提供配置空间的一个组件。(容器如vector、list、map等作为基础就不单独写一篇博客了)那么谈到空间适配器之前,我们需要了解这样的预备知识 c++的new的操作实质上分为两步:1.申请内存 2.调用构造函数 delete同样也是两步:1.调用析构函数 2.释放内存那么STL为了紧密分工,将调用构造函数,和空间的...

2018-05-07 17:00:33 267

原创 Nginx理解和总结

版本:1.0.14 参考书籍:《深入理解Nginx模块开发与架构解析第2版》第一个问题:什么是nginx? nginx是一个支持高并发的web服务器,利用了等待时间,实现少数几个进程就解决大量的并发问题。 引出第二个问题:何为等待时间呢? 普通的服务器时通过一个连接开辟线程/进程处理请求,线程数就是并发数,那么大部分的web请求之后的等待时间都是因为消息的处理和传递,而nginx只...

2018-05-04 16:43:39 279

原创 Libevent的理解和总结

版本:1.4.13 libevent是什么???首先,从是什么入手,libevent是异步事件库,一个支持linux,windows,跨平台的事件库 运用了经典的Reactor模式,即事件驱动模式。 支持多种I/O复用技术:epoll,select,poll,dev,kqueue 支持I/O事件,定时事件和信号事件 为什么要用Reactor的模式??? ...

2018-05-04 16:13:18 4162

空空如也

空空如也

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

TA关注的人

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