自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ylx1066863710的博客

菜鸟上线,请多多指教

  • 博客(25)
  • 资源 (3)
  • 收藏
  • 关注

原创 redis缓存雪崩、击穿、穿透

上几篇笔者描述了reids持久化机制、redis高性能、redis高可靠之主从模式以及redis高可靠之哨兵模式. 本期主要介绍缓存雪崩、击穿、穿透等. 废话不多说, 直接上菜:Q: 为什么会出现缓存异常?A: 缓存异常概括来说主要分为四种:缓存数据与数据库数据一致性;缓存雪崩: 指大量的应用请求无法在 Redis 缓存中进行处理,紧接着,应用将大量请求发送到数据库层,导致数据库层的压力激增。缓存雪崩一般由两个原因导致, 应对方案也有所不同.缓存击穿: 缓存击穿是指,针对某个访问非常频繁的热点数

2020-12-28 02:08:16 233 2

原创 Redis高可靠之哨兵集群

上一篇, 笔者描述了redis的高可靠之从主模式, 本章笔者继续讲解redis高可靠之哨兵模式, 为啥这么分呢? 上图见分晓:废话不多说, 直接上菜!Q: 笔者, 小菜有点懵圈, redis为啥需要哨兵, 这个哨兵主要作用是啥?A: 在主从模式下, 如果从库跪了, 客户端可以继续向其他从库发送请求, 进行相关的操作, 但是如果主库跪了, 就无法向主库中写数据, 主库中的数据也无法同步到从库. 对于高可靠的集群来说, 肯定是不可取的. 因此需要有一个角色来做如下相关的事情:监控: 监空主库是否跪了

2020-12-27 21:14:38 191

原创 redis高可靠之redis主从模式

上两章笔记分享了redis高性能和redis持久化相关的笔记, 本文笔者将继续介绍redis高可靠相关内容, 如有不足指出欢迎留言指正.本文还是采用AQ方式记录, 废话不多说, 开始上菜.Q: 文章的标题为redis高可靠性, 那Redis 具有高可靠性具体是什么意思?A : 高可靠至少有两层含义:数据尽量少丢失;服务尽量少断;上一章提到了AOF和RDB的持久化方式保证了前者; 对于后者redis的做法是增加冗余的副本; 将一份数据同时保存在多个实例上。即使有一个实例出现了故障,需要过一

2020-12-27 15:51:00 234

原创 epoll详细工作原理

开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺爽,确实快,那么,它到底为什么可以高速处理这么多并发连接呢?先简单回顾下如何使用C库封装的3个epoll系统调用吧。[cpp] view plaincopyint epoll_create(int size); int epoll_ctl

2020-12-21 21:50:43 2074

原创 redis的AOF和RDB

上文介绍了redis的高性能, 本文将继续介绍redis高可靠性, 本文继续讨论redis的高可靠性Q: redis如何保障高可靠性?A:AOF(Append Only File)日志和RDB(Redis Database)快照持久化机制;采用主从库的容灾机制;哨兵机制;Q: redis为什么进行持久化?A: redis作为缓存时, 把后端数据库中的数据存储在内存中, 这样读取数据的速度非常快, 但是一旦服务器宕机,内存中的数据将全部丢失, 因此需要将缓存中数据进行持久化, 通常持久化的方

2020-12-21 19:08:17 408

原创 redis高性能

任何系统设计都会有一些取舍, redis也不例外, 本文主要从redis的高性能、高可靠、高可扩展中一些取舍做了一些小结, 采用的形式为QA方式, 具体如下:高性能Q: redis的高性能体现在哪些方面?A:基于内存读写. Redis 的大部分操作在内存上完成,再加上它采用了高效的数据结构,例如哈希表和跳表,这是它实现高性能的一个重要原因。采用单线程, 避免线程线程上线文切换引起资源消耗, 以及相比多线程而言, 单线程不需要对共享资源进行加锁处理, 避免多线程对共享资源竞争导致性能消耗;采用非

2020-12-21 14:43:17 334 2

原创 一致性哈希算法

在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点,那么,我们先来描述一下这个经典的分布式缓存的应用场景。场景描述假设,我们有三台缓存服务器,用于缓存图片,我们为这三台缓存服务器编号为0号、1号、2号,现在,有3万张图片需要缓存,我们希望这些图片被均匀的缓存到这3台服务器上,以便它们能够分摊缓存的压力。也就是说,我们希望每台服务器能够缓存1万张左右的图片,那么,我们应该怎样做呢?如果我们没有任何规律的

2020-12-17 22:39:02 91 2

原创 理解Java中的弱引用

不久之前,我面试了一些求职Java高级开发工程师的应聘者。我常常会面试他们说,“你能给我介绍一些Java中得弱引用吗?”,如果面试者这样说,“嗯,是不是垃圾回收有关的?”,我就会基本满意了,我并不期待回答是一篇诘究本末的论文描述。然而事与愿违,我很吃惊的发现,在将近20多个有着平均5年开发经验和高学历背景的应聘者中,居然只有两个人知道弱引用的存在,但是在这两个人之中只有一个人真正了解这方面的知识。在面试过程中,我还尝试提示一些东西,来看看有没有人突然说一声“原来是这个啊”,结果很是让我失望。我开始困惑,为

2020-12-17 20:09:24 85 2

原创 JDK基础--ThreadLocal原理分析与使用场景

ThreadLocal原理分析与使用场景一、什么是ThreadLocal变量ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 命名的由来。既然每个 Thread 有自己的实例副本,且其它 Thread 不可访问,那就不存在多线程间共享的问题。ThreadLocal 提供了线程本地的

2020-12-17 19:51:15 104

原创 深入理解 RPC 之序列化篇 --Kryo

一年前,笔者刚刚接触 RPC 框架,从单体式应用向分布式应用的变革无疑是让人兴奋的,同时也对 RPC 背后到底做了哪些工作产生了兴趣,但其底层的设计对新手而言并不是很友好,其涉及的一些常用技术点都有一定的门槛。如传输层常常使用的 netty,之前完全没听过,想要学习它,需要掌握前置知识点 nio;协议层,包括了很多自定义的协议,而每个 RPC 框架的实现都有差异;代理层的动态代理技术,如 jdk 动态代理,虽然实战经验不多,但至少还算会用,而 cglib 则又有一个盲区;序列化层倒还算是众多层次中相对简单的

2020-12-17 16:34:37 783

原创 MySQL优化:如何避免回表查询?什么是索引覆盖?

数据库表结构:create table user ( id int primary key, name varchar(20), sex varchar(5), index(name))engine=innodb;select id,name where name='shenjian'select id,name,sex where name='shenjian'多查询了一个属性,为何检索过程完全不同?什么是回表查询?什么是索引覆盖?如何实现索引覆盖?

2020-12-16 21:29:25 109

原创 MySql锁和MVCC介绍

四种隔离级别性能与数据一致性的权衡SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。1. Read Uncommitted(读取未提交内容)在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。2. Read Committed(读取提交内容)这是大多数数据库系统

2020-12-16 17:52:13 175

原创 MySQL 事务隔离级别和锁

事务及其特性数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务的使用是数据库管理系统区别文件系统的重要特征之一。事务拥有四个重要的特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),人们习惯称之为 ACID 特性。下面我逐一对其进行解释。IBM Compose for MySQLIBM Cloud 上提供的 Compose for MySQL 数据库服务可以帮助您更好地

2020-12-16 15:07:48 113

原创 redis面试

文章目录概述什么是RedisRedis有哪些优缺点为什么要用 Redis /为什么要用缓存为什么要用 Redis 而不用 map/guava 做缓存?Redis为什么这么快数据类型Redis有哪些数据类型Redis的应用场景持久化什么是Redis持久化?Redis 的持久化机制是什么?各自的优缺点?如何选择合适的持久化方式Redis持久化数据和缓存怎么做扩容?过期键的删除策略Redis的过期键的删除策略Redis key的过期时间和永久有效分别怎么设置?我们

2020-12-16 01:14:04 429

转载 Java内部类以及使用场景

所谓内部类,即定义在另一个类中的类。那么,为什么会有内部类这个概念,他的使用场景又是什么呢?首先,来看一下内部类的特点:1. 它体现了一种代码的隐藏机制和访问控制机制,内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类,所以没有必要专门用一个Java文件存放这个类。 public class Outer {  private int num;   private class Inner {    private int num;  }}一般的类是不允许用private修饰符

2020-12-15 19:14:36 4537

原创 数据库分库分表

数据库分库分表1.1. 前言1.1.1. 名词解释1.2. 数据库架构演变1.3. 分库分表前的问题1.3.1. 用户请求量太大1.3.2. 单库太大1.3.3. 单表太大1.4. 分库分表的方式方法1.4.1. 垂直拆分1.4.2. 水平拆分1.5. 分库分表后面临的问题1.5.1. 事务支持1.5.2. 多库结果集合并(group by,order by)1.5.3. 跨库join1.6. 分库分表方案产品1.7. 为什么不建议分库分表1.8. 参考数据库分库分表.

2020-12-15 01:14:12 152

原创 使用try-with-resources优雅关闭资源

你还在使用try-catch-finally关闭资源吗,如果是,那么就有点out了。皮皮甜手把手教你使用JDK7引用的try-with-resourceJDK7之前资源的关闭姿势:/** * jdk7以前关闭流的方式 * * @author hetiantian * */public class CloseResourceBefore7 { private static final String FileName = "file.txt"; public static voi

2020-12-14 21:27:00 162

原创 联合索引及最左匹配原则

上一篇文章《MySQL索引那些事》主要讲了MySQL索引的底层原理,且对比了B+Tree作为索引底层数据结构相对于其他数据结构(二叉树、红黑树、B树)的优势,最后还通过图示的方式描述了索引的存储结构。但都是基于单值索引,由于文章篇幅原因也只是在文末略提了一下联合索引,并没有大篇幅的展开讨论,所以这篇文章就单独去讲一下联合索引在B+树上的存储结构。本文主要讲解的内容有:联合索引在B+树上的存储结构联合索引的查找方式为什么会有最左前缀匹配原则在分享这篇文章之前,我在网上查了关于MySQL联合索引在B+

2020-12-14 10:43:33 437

原创 聚簇索引与非聚簇索引

通俗点讲聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行,myisam通过key_buffer把索引先缓存到内存中,当需要访问数据时(通过索引访问数据),在内存中直接搜索索引,然后通过索引找到磁盘相应数据,这也就是为什么索引不在key buffer命中时,速度慢的原因澄清一个概念:innodb中,在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯

2020-12-13 21:27:42 121

原创 SQL优化的一些方法

需要尽量避免全表扫描,首先应该考虑where 及 order by 涉及的列上建立索引;应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。.

2020-12-13 16:18:00 62

原创 乐观锁与悲观锁

一、基本概念乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。悲观锁:悲观锁在操作数据时比较悲观,认为别人会同时修改数据。因此操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据。二、实现方式(含实例)在说明实现方式之前,需要明确:乐观锁和悲观锁是两种思想,它们的使用是非常广泛的

2020-12-13 00:17:38 108

原创 访问者模式

意图:主要将数据结构与数据操作分离。主要解决:稳定的数据结构和易变的操作耦合问题。何时使用:需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,使用访问者模式将这些封装到类中。如何解决:在被访问的类里面加一个对外提供接待访问者的接口。关键代码:在数据基础类里面有一个方法接受访问者,将自身引用传入访问者。应用实例:您在朋友家做客,您是访问者,朋友接受您的访问,您通过朋友的描述,然后对朋友的描述做出一个判断,这就是访问者模式。优点:1、符合单一职责原

2020-12-12 23:27:38 80

原创 解释器模式

解释器模式的结构  下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示:模式所涉及的角色如下所示:(1)抽象表达式(Expression)角色:声明一个所有的具体表达式角色都需要实现的抽象接口。这个接口主要是一个interpret()方法,称做解释操作。(2)终结符表达式(Terminal Expression)角色:实现了抽象表达式角色所要求的接口,主要是一个interpret()方法;文法中的每一个终结符都有一个具体终结表达式与之相对应。比如有一个简单的公式R=R1+R2,

2020-12-10 00:55:53 134 2

原创 分布式锁

什么是锁?在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线程结束同步代码块取消标记后再去尝试设置标记。这个标记可以理解为锁。不同地方实现锁的方式也不一样,只要能满足所有线程都能看得

2020-12-07 16:47:21 119

原创 Java内存泄漏

内存泄漏:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对象。如果对象满足这两个条件,这些对象就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,然而它却占用内存。

2020-12-06 02:12:45 232

TCP_IP协议

tcp/ip协议基础,非常适合网络初学者,以及想要深入理解网络的人

2018-05-08

ffmpeg filter过滤器基础实例以及全面解析

ffmpeg filter过滤器基础实例以及全面解析,pdf版,内容丰富,便于理解

2018-05-07

centos6.5 rpm安装nfs服务器

> 1.rpm -ivh keyutils-libs-1.4-4.el6.x86_64.rpm > 2.rpm -e --nodeps keyutils-libs-1.4-5.el6.x86_64 > 3. rpm -ivh keyutils-libs-1.4-4.el6.x86_64.rpm > 4. rpm -ivh keyutils-1.4-4.el6.x86_64.rpm > 5. rpm -ivh libevent-1.4.13-4.el6.x86_64.rpm > 6. rpm -ivh libgssglue-0.1-11.el6.x86_64.rpm > 7.rpm -ivh rpcbind-0.2.0-9.el6.x86_64.rpm > 8. rpm -ivh nfs-utils-lib-1.1.5-4.el6.x86_64.rpm nfs-utils-1.2.3-26.el6.x86_64.rpm

2017-12-25

空空如也

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

TA关注的人

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