自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

04stone37

日积月累

  • 博客(540)
  • 收藏
  • 关注

原创 系统日志方案设计

前后端交互系统前端感知异常与不感知异常的区分有多重方法:不同的异常类或者相同的类,不同的错误码区间等等;有多种交互形式的开放系统

2018-10-02 17:11:32 1936

原创 SpringMVC异常处理

SpringMVC异常处理机制处理机制: DispatcherServlet.doDispatch内部所有异常被捕获,统一由HandlerExceptionResolver链处理,依次遍历判断当前HandlerExceptionResolver是否能够处理,如果能处理则直接处理返回结果,否则交由后续的HandlerExceptionResolver进行处理;public ModelAndV...

2018-10-02 15:17:32 231

原创 Intellij IDEA

常用快捷键格式化代码:command+option+L行注释:command+/块注释:command+option+/查找类:command+o查找方法:command+option+o查找资源文件:command+shift+o查看类的继承关系:control + H查看类的实现类:command+option+B文件内查找:command+F全局查找:command+...

2018-10-02 10:37:37 204

原创 SpringMVC拦截器

HandlerInterceptor所有的拦截器必须实现HandlerInterceptor接口,该接口有三个方法,执行顺序如下:preHandle(…): Before the actual handler is executed;postHandle(…): After the handler is executed;afterCompletion(…): After the com...

2018-10-01 16:51:38 214

原创 HttpMessageConverters

背景知识Content-Type必须是具体确定的类型,不能包含 *;Accept匹配规则:最明确的优先匹配;@RequestMapping:consumes属性指定处理请求的提交内容类型(Content-Type),produces属性指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;HttpMessageConverters作用:Http...

2018-10-01 13:38:07 4272 1

原创 文件上传

MultipartResolver作用: 当接收到content-type类型为multipart/form-data的POST请求时,将HttpServletRequest包装成MultipartHttpServletRequest,以便能够使用MultipartFile入参。使用注意: bean的名称必须为"multipartResolver";具体实现: Apache的 Commons...

2018-09-30 15:07:03 162

原创 Spring注解驱动

XML配置文件的替代@Configuration作用: 相当于XML文件的beans标签;使用范围: 类@Configuration can be considered the equivalent of XML’s <beans/> element. Like <beans/>, it provides an opportunity to exp

2018-09-29 10:18:17 302

原创 Maven生命周期和插件

Maven生命周期Maven拥有三套相互独立的生命周期:clean、default和site。clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。生命周期各阶段执行顺序同一个生命周期中,各阶段的执行是有顺序的:后面的阶段依赖于前面的阶段。这意味着,当后面阶段被执行时,前面阶段都会被触发执行。生命周期命令的执行使用mvn命令...

2018-09-28 22:25:55 191

原创 自定义Starter

组成Autoconfigure:负责bean的自动装配;Starter:负责相关Jar包的集中管理,及依赖Autoconfigure;You may combine the auto-configuration code and the dependency management in a single module if you don’t need to separate thos...

2018-09-27 19:36:53 421

原创 生成配置元数据

配置元数据配置元数据是指对application.properties或application.yml文件中的配置属性进行描述的信息。Spring Boot jars include metadata files that provide details of all supported configuration properties. The files are designed to ...

2018-09-26 21:47:16 1393

原创 Lombok使用总结

Lombok简介Lombok 是一种Java实用工具,目的是消除JavaBean中冗余代码,比如getter/setter、toString、hashCode等等,通过注解达到相同目的;使用步骤1. 添加maven依赖非SpringBoot环境<dependency> <groupId>org.projectlombok</groupId&a

2018-09-20 21:29:17 750

原创 SpringBoot单元测试

POM配置<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>t

2018-09-19 23:55:19 119

原创 HDFS Federation

Federation机制Federation机制是HDFS集群Namespace的水平扩展方案,解决了单个Namenode的内存和性能问题;Federation原理如下图所示,管理节点为Namenode集群,集群中的每个Namenode相互独立,负责管理Namespace的部分服务,DataNode与所有的Namenode建立连接,发送周期性心跳和块报告。Federation优点Na...

2018-09-19 09:34:26 214

原创 Profile

Profile作用 作用:同一套代码在不同环境读取不同的配置;Profile使用配置如下图所示,各个环境公共的配置写在application.properties中,与环境相关的配置写在对应的application-{xxx}.properties文件中,当程序启动时会优先读取profile设定的环境配置,若读不到才会从application.properties读取;Profile环...

2018-09-18 15:37:42 429

原创 HDFS数据副本

背景知识位于不同机柜的两台机器进行通信,需要通过交换机路由,增加延时;相同机柜内的网络带宽是要高于机柜间的带宽;整个机柜故障的概率远低于单台机器; Communication between two nodes in different racks has to go through switches. In most cases, network bandwidth betw...

2018-08-30 23:26:34 1102

原创 HDFS架构

HDFS介绍HDFS是Hadoop的分布式文件系统,具有高吞吐高容错性等特点,具体如下:集群容错性好:HDFS设计之初,就考虑到集群规模变大出现硬件故障的概率就会变大的事实,通过数据的备份机制来提升集群容错性;高吞吐量:主要原因有两个,一方面,设计之初就提倡批处理;另一方面,简化了数据一致性模型,一个文件一旦经过创建、写入和关闭后,就不需要修改了;HDFS架构Dat...

2018-08-30 17:09:16 142

原创 Hadoop介绍

狭义Hadoop狭义上,Hadoop是一个分布式计算框架,主要包括以下四个模块:Hadoop Common: 通用工具类模块;HDFS: 分布式文件系统模块;YARN: 子群资源管理模块;MapReduce: 数据批处理计算框架;      广义Hadoop广义上,Hadoop是指大数据生态,如下图所示: Flume:海量日志收集系统;Sqoop:数据导入导...

2018-08-30 11:00:44 239

原创 结构化数据、半结构化数据和非结构化数据

按照结构化程度,大数据可以被分为三大类:结构化数据(Structured Data);半结构数据(Semi-structured Data);非结构化数据(Unstructured Data);结构化数据半结构化数据非结构化数据参考:https://www.w3trainingschool.com/structured-semi-structured-un...

2018-08-28 18:53:52 8253

原创 IaaS、 PaaS 和 SaaS

  当前的云计算服务主要分为三个层次:IaaS、 PaaS 和 SaaS。 IaaS  IaaS(Infrastructure-as-a-Service) ,硬件层面的基础设施服务,为用户提供服务器(物理机或虚拟机)、存储、网络和防火墙等最底层硬件资源;PaaS   PaaS(Platform-as-a-Service) ,软件层面的基础设施服务,为用户提供操作系统、编程语言运行...

2018-08-27 11:53:02 333

原创 HBase --- RegionServer组件

RegionServerRegionServer组件主要分为4部分:WAL: HDFS上日志文件,存储还未持久化到HFile的数据,以及MemStore的恢复,每个RegionServer有一个WAL,被所有Region共享; BlockCache: 读缓存,存储被打开的HFile的索引结构,使用LRU策略;MemStore: 写缓存,存储还未持久化到HFile的最新写数据,每个Re...

2018-08-24 16:49:35 537

原创 HBase --- 故障恢复

数据备份  HBase依赖HDFS的备份机制进行备份容灾,如下图所示:    故障检测和恢复检测:Zookeeper通过心跳检测RegionServer是否存活;恢复:HMaster监听到Zookeeper的通知后,开启恢复流程;恢复流程按照负载均衡策略重新分配Region;按照Region维度拆分WAL;按照拆分后的日志重构Region数据; 参考:...

2018-08-24 11:19:53 756

原创 HBase --- 读写流程(二)

Read Merge背景  随着时间的推移, MemStore会产生众多HFile文件,一方面需要对文件数量进行控制,防止资源浪费和耗尽;另一方面,需要对文件的数据进行合并,以提升读性能;     Minor Compaction  Minor Compaction是指将众多小的HFile文件合并成为若干较大的HFile文件,如下图所示:    优点:IO消耗小;缺...

2018-08-24 09:59:36 446

原创 HBase --- 读写流程(一)

整体流程读写流程主要分为两大部分:Client从MetaTable路由到Region所在的Region Server;Client直接与对应的Region Server进行交互;    路由表MetaTable  MetaTable存储Region与Region Server的对应关系,其结构如下所示: 路由表的获取时机  Client 首次读写时会首先从Zoo...

2018-08-23 17:39:29 628

原创 HBase --- 架构组成

整体架构    HMaster  主要负责HRegionServer的协调管理及Table的DDL操作(新增、更新和删除),HRegionServer的管理包含两方面:监控HRegionServer的运行状态(从ZK接受通知);Region的分配(HRegionServer扩容、宕机及负载均衡等情况);ZookeeperHMaster的HA解决方案(主备切换、M...

2018-08-23 15:40:53 265

原创 HBase --- 数据模型(二)

逻辑表与物理存储一张逻辑表被水平拆分成多个Region,存储在不同的RegionServer上,如下图所示:   每个Region按CF维度进行垂直拆分,每个CF对应多个HFile(LSM树原因),存储在HDFS上,如下图所示:  参考:https://mapr.com/blog/hbase-and-mapr-db-designed-distribution-scale-...

2018-08-23 12:33:59 143

原创 HBase介绍

出现背景  传统的关系型数据库适用于OLTP类业务,但是存储容容量和计算能力无法任意水平扩展,不适合于大数据场景;HBase介绍  HBase是构建于Hadoop之上的NoSQL数据库,具有分布式、易扩展和高性能特点;特点1:分布式  逻辑上一张BigTable被水平拆分成多个Region,分布在多台机器上,如下图所示:     特点2:易扩展只需添加Regio...

2018-08-23 11:43:48 344

转载 LSM树

背景知识无论是机械硬盘还是固态硬盘,顺序操作要比随机操作快,相差大约三个数量级;当代数据存储引擎主要基于两类数据结构:B+树和LSM树。传统的SQL数据库,如MySQL、Oracle等主要基于B+树;当前流行的HBase,Cassandra,LevelDB等NoSQL数据库的核心存储引擎都是基于LSM树的思想发展而来的。LSM树思想  牺牲部分读性能,提升写性能,将随机写转换...

2018-08-21 15:43:40 803

原创 B+树优缺点

优点单次请求涉及的磁盘IO次数少(出度d大,且非叶子节点不包含表数据,树的高度小);查询效率稳定(任何关键字的查询必须走从根结点到叶子结点,查询路径长度相同);遍历效率高(从符合条件的某个叶子节点开始遍历即可); 在B+树中, 由于底层的各个叶子节点都通过指针组织成一个双向链表, 结构如下图所示。 因此,只需要从跟节点到叶子节点定位到第一个满足条件的Key, 然后不断在叶子节点...

2018-08-21 10:47:45 20690

原创 机械硬盘和固态硬盘

机械硬盘HDD VS 固态硬盘SSD  总结: SSD具有速度快、功耗低等优点,但是成本高,容量受限;HDD具有成本低、容量大等优点,但是速度慢、功耗大,各项具体比较如下图所示: 固态硬盘SSD  固态硬盘没有机械装置,数据存储在可持久记忆的硅晶体上,因此可以像内存一样快速随机访问。但同时,很多针对机械硬盘的优化算法换成SSD将会失效。参考:https://www....

2018-08-20 15:33:01 1286

原创 HBase --- 数据模型(一)

数据模型Row每行被RowKey(行键)唯一标识;行按照RowKey的排序结果(字母顺序)进行存储; A row in HBase consists of a row key and one or more columns with values associated with them. Rows are sorted alphabetically by the row...

2018-08-20 09:49:57 441

原创 Hive --- 表类型

Managed Table(内部表/管理表)管理表有如下特点:表数据存储在管理表的存储目录下;删除管理表时,元数据和表数据都会被删除;External Table(外部表)Partitioned Table(分区表)...

2018-08-17 18:01:08 1109

原创 Hive --- 安装模式

嵌入模式  Hive使用自带的Derby存储元数据,这种模式只允许建立一个连接,主要用于Demo场景;本地模式  Hive使用部署在同一台物理机上的MySQL、Oracle等存储元数据,主要用于开发和测试;远程模式  Hive使用部署在其它台物理机上的MySQL、Oracle等存储元数据,主要用于线上环境;参考:https://blog.csdn.net/Dax1n/...

2018-08-17 14:53:24 262

原创 Hive --- 体系结构

体系结构元数据是什么?  元数据包括表信息(存储位置、属性及分区信息等)、列信息等;存储位置  元数据一般存储在关系型数据库中,如MySQL及默认的Derby等;HQL语句执行过程...

2018-08-17 11:51:29 177

原创 Hive --- 整体介绍

Hive简介  Hive可看作一款数据仓库软件,使用者可通过类SQL的命令查询统计,极大提升了Hadoop易用性,使用者不再需要编写提交MR任务。 The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distribu...

2018-08-16 11:30:13 1236

原创 转账方案设计

数据一致性方案方案1A业务处理和消息发送在同一个本地事务中执行,执行完成后本地消息表中有条status=0记录;B收到消息后,在同一个事务中进行业务处理和消息发送(返回响应);如果B处理失败,由Broker进行失败重试;A收到响应消息后更新对应的消息状态为1;A端本地会启动定时任务,定时扫描状态为0的消息,发出告警,甚至进一步可以执行数据补偿操作;方案2A业务...

2018-08-09 15:36:43 1330

原创 PoolArena

数据结构分配过程首先,对要请求的容量进行规整化;如果是tiny\small\normal类型的容量,优先使用线程中缓存的空间,若无法分配再从PoolArena分配;如果是huge类型的容量,PoolArena不再支持,需要从JVM中申请空间;参考:https://gsmtoday.github.io/2017/09/03/netty-memory-pool-md/...

2018-08-08 16:12:15 220

转载 PoolChunk

转载:https://gsmtoday.github.io/2017/08/27/poolchunk/数据结构  PoolChunk逻辑上是一颗完全平衡二叉树,代码实现上用数组表示,如下所示: 初始化逻辑  数组下标表示二叉树中各节点的编号id,数组元素内容表示当前节点可分配内存的子节点(即未分配)在二叉树中的深度,如下所示: memoryMap = new...

2018-08-08 12:02:31 176

原创 PooledByteBufAllocator

作用  池化的ByteBuf分配器,提供统一的ByteBuf分配服务;内存分配算法:jemallocPooledByteBufAllocator采用了jemalloc内存分配算法,大致思想如下:为了降低锁竞争,将池化空间划分为多个PoolArena,每个线程按照负载均衡算法绑定到特定的PoolArena;为了进一步降低同一个PoolArena不同线程间的锁竞争,每个线程内部增加...

2018-08-07 19:30:49 1449

原创 PoolThreadCache

缓存构成  PoolThreadCache的缓存由三部分构成:tiny、small 和 normal。tiny  缓存数据大小区间为[16B, 496B]数据,数组长度为32,根据数据大小计算索引的办法:数据大小除以16,如下代码所示:static int tinyIdx(int normCapacity) { return normCapacity >&gt...

2018-08-07 17:18:09 364

原创 JVM停顿

JVM停顿  JVM在运行过程中,许多事件都可能造成Stop The World,常见的有GC、JIT、取消偏向锁(RevokeBias)、RedefineClasses(AOP)等等,其中GC停顿对应用程序的影响最大。排查手段将JVM停顿时间输出到GC日志中:-XX:+PrintGCApplicationStoppedTime;将JVM停顿原因输出到GC日志中:-XX:+Pr...

2018-08-02 14:51:22 613

空空如也

空空如也

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

TA关注的人

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