自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(172)
  • 资源 (8)
  • 收藏
  • 关注

原创 Kafka系统架构

文章目录Kafka 架构常见术语Kafka 作为一个消息引擎中间件,越来越多的被国内各个厂商使用。本篇主要介绍一下其系统架构及常用术语。Kafka 架构从上图可以看出,和其他消息引擎类似,主要由生产者、Kafka 集群、消费者构成。但是其中有一点需要注意的是,Kafka 集群和消费者依赖了ZooKeeper 集群。上图中的每个Broker 对应的就是一个一个的Kafka 实例,每个Brok...

2019-12-28 14:02:34 779

原创 MySQL的并行复制策略

文章目录按表分发策略按行分发策略MySQL5.6 的并行复制MariaDB 的并行复制MySQL5.7 的并行复制MySQL5.7.22 的并行复制前面介绍的MySQL 的主从复制流程如下所示:主备延迟的主要原因在于,master A 上产生 binlog 的速度大于slave B 处理 binlog 的速度。数据的积压就在于 sql_thread 处理的速度。在 MySQL 5.6 版本之...

2019-12-28 13:59:44 1172

原创 MySQL主备复制

文章目录MySQL 主备原理binlog 的 3 种格式statementrowmixed循环复制问题我们知道MySQL中的binlog 可以用来归档,同时也可以用来做主从同步,今天来详细介绍一下。MySQL 主备原理从上面流程可以看出,A 节点是主库,B 节点是从库。通常情况下从库我们会设置为 readonly ,这样可以防止因业务代码中的切换 BUG 造成 在从库写数据;同时我们也可以...

2019-12-28 13:54:08 766

原创 MySQL 的 binlog 和 redo log 写入原理

文章目录binlog 的写入流程redo log 写入流程组提交组提交优化总结binlog 的写入流程事务执行过程中,binlog 首先会被写到 binlog cache 中;事务提交的时候,再讲binlog cache 写到 binlog 文件中。一个事务的 binlog 是原子的,无论多大都需要保证完整性。系统为每个客户端线程分配一个 binlog cache,其大小由 binlog_c...

2019-12-28 13:49:39 2779

原创 MySQL加锁原理

文章目录解决幻读加锁规则Demo1:等值查询间隙锁Demo2:非唯一索引等值锁Demo3:主键索引范围锁Demo4:非唯一索引范围锁Demo5:唯一索引范围锁bugDemo6:非唯一索引上存在“等值”的例子Demo7:limit语句加锁Demo8:一个死锁的例子对于MySQL 的加锁规则,笔者之前了解到的也只是行锁的概念。除了业务代码中使用的乐观锁、悲观锁,也没有深入了解MySQL 真正加锁规则...

2019-12-28 13:41:10 900

原创 影响MySQL查询性能的案例

文章目录WHERE条件字段使用函数字段隐式转换隐式字符编码转换解决方案在互联网应用中,通常情况下我们查询DB 只会使用简单的、查询效率较高的SQL,大部分的逻辑都需要在代码中去实现。今天介绍一下,一些看起来简单的SQL,也有可能导致查询性能的低下。WHERE条件字段使用函数假设我们有如下创建表的语句mysql> CREATE TABLE `tradelog` ( `id` int...

2019-12-28 13:29:34 579 1

原创 MySQL的 order by 工作原理

在程序设计当中,我们很多场景下都会用 group by 关键字。比如在分页读取数据时,为了避免重复扫描记录,这就是必须要使用 group by 了。比如我们使用如下 DDL 创建表:CREATE TABLE `user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `city` varchar(16) NOT ...

2019-11-13 20:30:50 1489

原创 MySQL删除数据表空间不变原因

文章目录innodb_file_per_table数据删除流程重建表Online 和 inplace作为一名资深的CV 战士,我们可能很少去关注 MySQL的数据文件存储在哪里。当我们执行一批删除操作的时候,也不会去观察数据库文件的大小到底有没有变化。下面我们一起来看一下 MySQL 数据存储相关的原理。在MySQL 8.0 之前,表结构定义是存储在 .frm 为后缀的文件里,如下图所示。因为...

2019-11-13 20:17:20 1258

原创 MySQL抖动的原因

文章目录刷脏页触发刷脏页的条件InnoDB 的 flush 脏页策略我们在使用MySQL实现业务处理的时候,更多的关注可能在SQL本身上面是不是最优的。今天我们从一个很小的点去看一下MySQL的实现原理,那就是MySQL刷脏页相关的问题。刷脏页在MySQL中,如果内存数据页(buffer pool)和磁盘数据不一致时,这个内存数据页我们认为是“脏页”;当内存数据页 flush 到磁盘之后,内...

2019-11-13 20:08:43 767

原创 MySQL字符串加索引

文章目录Demo详解我们在创建MySQL的字符串索引时,用的最多的就是对所有字符创建索引。但是往往我们忽略的是,字符串可以创建左前缀的索引,这样更短的字符索引可以减少索引的维护成本,下面详细介绍一下。Demo比如我们通过邮箱去检索用户的信息,就可能会执行如下的SQL 查询。mysql> select a, b from user where email = '[email protected]';...

2019-11-13 19:59:44 844

原创 MySQL普通索引和唯一索引的区别

文章目录查询流程区别更新过程区别change buffer索引选择change buffer 与 redo log对于普通索引和唯一索引的使用,对于一个开发来说,我相信更多的区别场景就是:如果需要在库里面做一个唯一限制,就使用唯一索引;否则就使用普通索引了。下面主要介绍一下这 2 种索引的区别(使用MySQL时,大多数场景下使用的是B+ 索引,下面的案例或者描述默认都是 B+ 索引)。查询流程...

2019-11-13 19:52:46 1302 1

原创 MySQL事务隔离原理

文章目录一致性视图工作原理更新操作可重复读和读已提交的区别首先来介绍一下 MySQL 里面的“视图”的概念。视图:查询语句定义的虚拟表,可以通过 create view … 来创建。一致性视图:InnoDB 实现的,在 MVCC 中用到的,用于支持 RC (Read Commited,读提交) 和 RR (Repeatable Read,可重复读)隔离级别的实现。一致性视图工作...

2019-02-23 10:48:31 1091

原创 MySQL全局锁表锁&行锁

文章目录全局锁FTWRLmysqldumpset global readonly = true表级锁表锁MDL (metadata lock)行锁两阶段锁死锁在我们开发的过程中,使用全局锁和表锁的场景比较少,接触的也相对少一点,下面主要介绍一下。全局锁FTWRL全局锁就是对整个数据库实例加锁,MySQL 提供了 flush tables with read lock (FTWRL) 的方式...

2019-02-23 10:41:39 811 1

原创 MySQL索引结构

文章目录常见索引类型Hash索引B+索引InnoDB的索引结构主键索引和普通索引的区别索引维护主键ID自增覆盖索引联合索引索引下推数据库的索引就像一本书的目录一样,它可以快速定位你所需要的信息。下面来详细说一下MySQL的索引结构。常见索引类型Hash索引Hash索引的底层实现是由Hash表来实现的,非常适合以 key-value 的形式查询,也就是单个key 查询,或者说是等值查询。其结...

2019-02-23 10:31:49 1804

原创 MySQL事务隔离级别

文章目录事务隔离级别事务隔离的实现谈到事务最先想到的就是 ACID 属性(Atomicity 原子性、Consistency 一致性、Isolation 隔离性、Durability 持久性),今天主要介绍一下MySQL的隔离属性。事务隔离级别SQL标准里定义的隔离级别有以下 4 种:读未提交:一个事务可以读取到,另外一个事务尚未提交的变更。读已提交:一个事务提交后,其变更才会被...

2019-02-23 10:24:06 4119 2

原创 MySQL日志系统

文章目录redo logbinlog总结当我们在MySQL客户端执行更改数据库的操作时,就会牵扯到日志系统了。如我们使用最多的存储引擎InnoDB而言,里面就会用到:redo log (重做日志)和 binlog(归档日志)。下面主要介绍一下这两种日志的区别与联系:redo log在MySQL里,如果我们要执行一条更新语句。执行完成之后,数据不会立马写入磁盘,因为这样对磁盘IO的开销比较大。...

2019-02-23 10:18:44 757

原创 MySQL架构设计

文章目录连接器查询缓存分析器优化器执行器MySQL用了好多年了,但是对于大部分开发人员来说,还是停留在使用上面。接下来的数篇文章将记录一下,MySQL原理的实现原理。首先看一下MySQL的架构图,如下所示:从上面的示意图可以看出,MySQL从上到下包含了:客户端、Server层和存储引擎层。对于客户端实现,可以是我们常用的MySQL命令行窗口,或者是Java的客户端程序等等,这里不做过多的...

2019-02-23 10:12:16 927 1

原创 Netflix-Zuul 原理分析

文章目录核心模块ZuulServletZuulRunnerFilterProcessorRequestContext过滤器加载模块FilterFileManagerFilterLoader过滤器管理模块ZuulFilterDAOZuulFilterPoller定制开发的建议目前网上大多数关于Zuul的相关讨论大都是 Spring-Cloud-Zuul相关的,但是笔者认为Spring Cloud ...

2018-09-28 23:58:11 5680

原创 Java8 List removeIf用法技巧

文章目录字符串切割使用List.removeIf API 剔除元素问题解决我们在写业务代码时,经常需要截取字符串转成List,然后再通过一个自定义的规则去删减元素。通常使用的是String.split(",")的这种方式来切割字符串,然后再用Arrays.asList(T...)的方式创建List。然后再去处理List 里面的内容。下面介绍一下1.8 里面存在的坑。字符串切割通常我们会使用A...

2018-09-28 23:47:39 13941 1

原创 Spring Boot Security跨域访问 cors

文章目录未使用Security 的Boot 项目使用Security 的情况使用Security开启允许iframe嵌套使用Spring Security 在Boot 项目中,实现前后端分离的跨域访问,只需要简单的配置即可。未使用Security 的Boot 项目在未使用Spring Security 的Boot 项目中,只需要在 Application.java 中添加如下代码即可@Be...

2018-09-28 23:40:02 13596 2

原创 CacheCloud搭建(Redis云平台)

下载源代码启动Server1、初始化MySQL数据库2、启动(本地)登录系统Redis 机器环境初始化普通用户注册应用申请客户端连接在中小型互联网公司里面,对于运维使用的监控系统不是很完善。今天介绍一下 CacheCloud,是搜狐视频开源的 Redis 云平台。可以对Redis 官方提供的3 种部署模式(Standalone、Sentinel、Cluster)...

2018-08-24 09:10:19 13079 3

原创 Redis Cluster流程原理

拓扑结构配置的一致性1、配置信息数据结构2、信息交互3、一致性的达成sharding1、数据分片(slot)2、客户端的路由3、分片的迁移failover1、failover的状态变迁2、故障发现3、故障确认4、slave选举5、结构变更通知可用性和性能1、Redis Cluster的读写分离2、master单点保护Redis 3.0之...

2018-08-11 19:54:54 9918 6

原创 分布式Redis故障转移(sentinel)

sentinel的相互感知三个定时任务master的故障发现sentinel Leader选举故障转移failoverslave晋升的规则总结当2台以上Redis实例形成了主备关系,他们组成的集群就具备了一定的高可用:当master 故障时,slave可以成为新的master,对外提供读写服务,这种运行机制称为failover。那么谁去发现master的故障,并做...

2018-08-11 19:21:36 1453

原创 分布式Redis主备复制

主备复制流程断点续传当数据落在不同节点上时,如何保证数据节点之间的一致性是非常关键的。Redis采用主备复制的方式保证一致性,所有节点中,只有一个节点为主节点(master),它对外提供写服务,然后异步的将数据复制到其他节点上。主备复制流程Redis包含master 和slave 2种节点:master 对外提供写服务;slave 节点作为master的数据备份,不可...

2018-08-11 19:06:18 1446

原创 Redis持久化详解(RDB&AOF)

全量模式的持久化(RDB)1、写入流程2、恢复流程增量模式的持久化(AOF)1、写入流程2、回放流程AOF模式的优化重写Redis 对外提供数据访问服务时,使用的是常驻内存的数据。为了在Redis Server重启之后数据还可以得到恢复,Redis具备将数据持久化到硬盘中的能力。全量模式的持久化(RDB)Redis Server在多有db 中存储的k...

2018-08-05 19:18:44 1538 2

原创 Redis客户端与服务端交互详解

Redis协议网络模型序列化协议inline commandsimple stringbulk stringerrorintegerarrayC/S 两端使用的协议数据类型请求/响应模式串行化实现pipeline实现事务模式1、入队/执行分离的事务原子性2、事务的一致性3、事务的只读操作4、乐观锁的可串行化事务隔离5、事务实现6、事务交互模式...

2018-07-31 23:15:09 6259

原创 Redis数据结构详解

valueObject通用结构string基本操作内存结构SDS结构buf 的扩容与缩容字节串与字符串SDS编码的优化使用场景List基本操作内存结构linkedlist实现ziplist实现Map基本操作内存结构HashTable 实现Hash表扩容ziplist 实现Set基本操作内存结构intsetSorte...

2018-07-28 11:28:42 1425 1

原创 Spring Security缓存请求详解

请求流程代码实现ExceptionTranslationFilterAbstractAuthenticationProcessingFilter我们在Java开发中,可能会经常使用到Spring Security来实现系统的权限控制。在企业级应用中,也有可能会使用Spring Security集成CAS来实现单点登录和权限控制。当然一些独立的系统(如人事管理系统等),也有...

2018-07-22 13:13:37 4651

原创 CentOS7安装MySQL5.7

下载 Mysql yum包安转软件源安装MySQL服务端启动MySQL检查运行状态修改临时密码获取临时密码登录并修改密码修改密码授权远程机器登录下载 Mysql yum包官方下载地址为:http://dev.mysql.com/downloads/repo/yum/wget http://repo.mysql.com/mysql57-commu...

2018-07-17 10:47:21 524

原创 IDEA配置Tomcat8远程调试

Tomcat8开启Debug端口1、修改catalina.sh2、修改start.sh3、防火墙开启9901端口/关闭防火墙IDEA配置添加Tomcat配置填写IP端口如果要用Eclipse或者IDEA远程Debug到测试服务器上面,首先需要开启Tomcat的调试端口。从原生的Tomcat来看,每个版本都有所不同,下面主要介绍一下Tomcat8的配置。T...

2018-07-17 10:43:06 4030

原创 分布式多级缓存

基本概念缓存数据的方式是否过期不过期缓存过期缓存细粒度缓存大Value缓存热点缓存基本概念所谓分布式多级缓存,就是指在整个系统的不同层级进行数据的缓存,以提升系统的访问速度。通常情况下,分布式系统的访问流程如下所示:接入层Nginx将请求负载均衡到应用层Nginx,常用的负载均衡算法是轮询/一致性哈希。轮询可以是请求更加的平均,一致性哈希可以...

2018-07-17 10:38:42 1912

原创 Nginx缓存配置

Nginx HTTP缓存设置expiresif-modified-sinceproxy_pass 流程Nginx代理层缓存HTTP模块配置proxy_cache 配置小结Nginx HTTP缓存设置Nginx提供了 expires、etag、if-modified-since 指令来实现浏览器缓存控制。expires如果我们使用了Nginx...

2018-07-17 10:34:10 1822

原创 HTTP缓存

HTTP缓存首次访问F5刷新Ctrl+F5强刷from disk cacheagevaryviaetag我们在使用浏览器加载网页时,往往一个网页浏览器就会发起多次请求。每个请求又会有很多的请求头和请求体,下面看一下一些常见的请求头/请求体。HTTP缓存首次访问当我们第一次请求服务器资源时,服务器会给出 200 的响应码。立即F5刷新后,如果浏...

2018-07-17 09:55:33 1296

原创 分布式缓存击穿(布隆过滤器 Bloom Filter)

缓存中无值(未宕机)互斥锁缓存永不过期缓存宕机白名单布隆过滤器代码实现前面的文章介绍了缓存的分类和使用的场景。通常情况下,缓存是加速系统响应的一种途径,通常情况下只有系统的部分数据。当请求了缓存中没有的数据时,这时候就会回源到DB里面。此时如果黑客故意对上面数据发起大量请求,则DB有可能会挂掉,这就是缓存击穿。当然缓存挂掉的话,正常的用户请求也有可能造成缓存...

2018-07-17 09:46:09 40983 5

原创 JetCache的简单使用

JetCache特点软件要求Boot项目配置maven依赖MySpringBootApp.javaapplication.yml方法缓存缓存API高级API异步API分布式锁读取并自动刷新传统项目配置今天我们来介绍一下由Alibaba开源的一款缓存框架JetCache。其号称比Spring Cache用起来更加好用,笔者用了之后发现确实比较好用。...

2018-07-17 09:23:03 13400

原创 分布式应用缓存使用模式

Cache-AsideCache-As-SoRRead-ThroughWrite-ThroughWrite-Behind在我们使用缓存时,有一些模式或者策略。其主要分为两大类,Cache-Aside:由业务代码直接维护缓存;Cache-As-SoR:把Cache作为数据源,所有的读写操作都是对Cache而言的,如果要执行持久化等操作,则是由Cache本身去处理。Cac...

2018-07-17 09:08:10 1133

原创 Spring Boot Thymeleaf非严格校验

application.yml使用Spring Boot时,大多数场景下都会使用thymeleaf作为模板文件。默认情况下,thymeleaf要求HTML格式必须为严格的html5格式,必须有结束标签,否则会报错。但是大多数情况下我们希望HTML没有严格的标签约束,解决办法如下。application.ymlspring: mvc: view: ...

2018-07-17 09:03:42 1960

原创 分布式应用缓存

缓存命中率缓存回收策略基于空间基于容量基于时间基于Java对象引用回收算法Java缓存类型堆内存Guava Cache实现Ehcache实现非堆内存磁盘缓存EhCache实现分布式缓存多级缓存示例代码多级缓存封装本地缓存初始化写缓存封装读缓存封装NULL Cache缓存是解决分布式提供高可用的利器之一,它可以大幅度的...

2018-07-17 08:59:27 869

原创 OpenResty动态负载均衡

ConsulConsul+Consul-templete方式Consul-Server注册服务Consul-template上游服务器测试验证Consul+Lua方式OpenResty配置在之前提到的OpenResty/Nginx的负载均衡当中,当服务器启动之后,upstream中的上游服务器就是固定死的了,做不到动态的变更。这里面说到的变更,其实更多指...

2018-07-16 10:22:46 5801

原创 Nginx负载均衡与反向代理

四层/七层负载均衡的区别upstream配置负载均衡算法失败重试健康检查TCP心跳检查HTTP心跳检查长连接配置其他配置域名上游服务器备份上游服务器不可用服务器配置示例全局配置(proxy cache)location配置我们使用Nginx时,大多数场景下使用的都是七层的HTTP负载均衡(ngx_http_upstream_module)。在...

2018-07-16 10:10:23 702

Spring-data-redis(Version 1.6.0.RC1)中文版

该文档为Spring Data Redis1.6官方文档的翻译。其中有一些翻译不是很恰当,敬请谅解!

2015-09-14

Apache2.4+Tomcat8.0集群安装--测试项目

Apache2.4+Tomcat8.0集群安装--测试项目。集群配置地址为:

2015-06-28

spring security3.1英文版 PDF

此文档为spring security3.1英文版参考书籍,不是官方文档,英文原版。

2014-09-29

EXTjs4.1中文API

EXTJS4 1完全中文版API 该资源涵盖了 下载你就知道了

2014-04-21

面向对象分析与设计-麻志毅-PPT

面向对象分析与设计-麻志毅-PPT,官方课件!

2013-02-19

数据仓库与数据挖掘技术(第2版)[陈京民]PPT

数据仓库与数据挖掘技术(第2版)[陈京民]PPT

2013-02-19

spring3.1源码包

spring源码包,spring框架,java学习,web框架学习

2012-11-28

空空如也

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

TA关注的人

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