自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

韩超的博客 (hanchao5272)

路漫漫其修远兮,吾将上下而求索。

  • 博客(352)
  • 资源 (5)
  • 论坛 (1)
  • 收藏
  • 关注

原创 四张图理解一致性哈希算法(Consistent Hashing)

1.简述1.1.哈希算法哈希算法:将任意长度的输入通过散列算法转换成固定长度的输出。哈希算法是一种映射算法,将任意个数的输入映射为固定个数的哈希值。1.2.应用场景举例分布式缓存现有用户数据3000万,为提高访问速度,将用户基本信息保存在缓存中,其中:key=user:{uid},其中uid为用户ID,由UUID生成。value为姓名、账号级别等构成的Json串。为了分担单台服务...

2019-08-26 13:50:28 1253 4

原创 负载均衡、DNS、F5、反向代理、LVS、四层与七层、CDN

1.负载均衡负载均衡:将负载(大量请求)均匀的、平衡的分摊到多个服务节点上进行处理。实现负载均衡有很多种手段,例如:DNS、硬件负载均衡设备、Nginx反向代理、LVS。1.1.DNSDNS:Domain Name System,域名系统,更加专业的名字为域名解析系统。域名解析系统部署在DNS服务器上,提供域名解析服务。简单来说,域名解析就是将一个域名解析成多个ip地址。如下图是通过...

2019-08-25 16:44:35 6137 24

原创 MQ: 一张图读懂kafka工作原理

1.关于kafkaKafka是由Apache软件基金会开发的一个开源消息队列,由Scala和Java编写。相关文章参考:MQ: 消息队列常见应用场景及主流消息队列ActiveMQ、RabbitMQ、RocketMQ和Kafka的简单对比[MQ: kafka的Java接入与入门示例]待更新…2.工作原理首先,我们来kafka的整体数据流架构图:2.1.相关术语上图中,涉及以下术...

2019-08-23 14:30:38 3148 5

原创 MQ: 消息队列常见应用场景及主流消息队列ActiveMQ、RabbitMQ、RocketMQ和Kafka的简单对比

1.关于消息队列消息队列,外文名Message Queue,简称MQ,是指在消息的传输中保存消息的容器或服务。消息队列,是分布式系统实现高性能、高可用、可伸缩等高级特效的重要组件,适用多种场景,如:消息通讯、异步处理、应用解耦、流量削峰等等。常见的主流消息队列:ActiveMQ、RabbitMQ、RocketMQ和Kafka。2.应用场景2.1.消息通讯作为消息队列,其本职场景就是实现...

2019-08-21 16:46:56 3180 4

原创 Redis: 缓存过期、缓存雪崩、缓存穿透、缓存击穿(热点)、缓存并发(热点)、多级缓存、布隆过滤器

1.缓存过期缓存过期:在使用缓存时,可以通过TTL(Time To Live)设置失效时间,当TTL为0时,缓存失效。为什么要设置缓存的过期时间呢?一、为了节省内存例如,在缓存中存放了近3年的10亿条博文数据,但是经常被访问的可能只有10万条,其他的可能几个月才访问一次。那么,就没有必要让所有的博文数据长期存在于缓存中。设置一个过期时间比方说7天,超过7天未被访问的博文数据将会自动失效...

2019-08-18 16:34:24 4150 25

原创 Java常用设计模式的实例学习系列-绪论

关于设计模式设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计原则(待更新…)待完善:面向对象的设计原则设计模式分类设计模式分为三种类型,共计23种:创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。结构型模式:适配器模式...

2019-07-15 16:23:08 909

原创 记一次服务内存不断飙升的JVM调试过程

1.问题简述今天同事让我帮忙解决一个异常的服务,其表现如下:通过Spring Boot Admin监测到服务间歇性由状态UP变成OFFLINE。通过Spring Boot Admin监测到服务的状态变更是由于YGC导致的,JVM并未崩溃。通过k8s的pod监控发现内存使用率从16:10的15%飙升至17:40的33%。服务V最大内存8GB。服务某接口的压测结果:最大QPS为200左右...

2019-06-20 20:56:05 3073 8

原创 SpringBoot项目中通过MDC和自定义Filter操作traceId实现日志链路追踪

1.背景简述依赖原始的log4j2配置,很难从某服务庞杂的日志中,单独找寻出某次API调用的全部日志。本文通过在日志中打印唯一的traceId来实现每次调用的追踪。2.关键思路2.1.MDC日志追踪目标是每次请求级别的,也就是说同一个接口的每次请求,都应该有不同的traceId。每次接口请求,都是一个单独的线程,所以自然我们很容易考虑到通过ThreadLocal实现上述需求。考...

2019-06-15 16:39:56 8410 6

转载 99%的人都理解错了HTTP中GET与POST的区别

99%的人都理解错了HTTP中GET与POST的区别

2019-03-26 10:56:34 2581 17

原创 shell入门学习笔记-序章

概述近期,对shell进行了系统性的入门学习。为了方便日后复习,将学习笔记整理成博文。目录(持续更新中…)01-语言分类、脚本类型、脚本版本、三种提示符02-hello world、四种脚本运行方式03-变量与函数04-作用域05-参数06-字符串07-运算符08-数组09-分支语句与test命令10-输入/输出文件重定向11-命令详解: alias、exit12-...

2019-01-13 18:32:37 325 2

原创 Java并发学习系列-绪论

最近在系统的学习Java并发(concurrent),遂将学习所得整理成博文,作为今后参考的依据。内容简述基本概念与发展历史Thread的线程方法与状态转换JMM、指令重排、happens-before原则、原子性、可见性与有序性易变类型关键字volatile同步关键字synchronized显式锁Lock原子变量Atomic线程本地变量ThreadLocal倒计时门...

2018-03-04 16:07:48 5703 9

原创 SSM框架超级详细整合记录:Spring+Spring MVC+MyBatis+Maven+MySQL

1.前言本文主要对SSM框架整合的过程进行记录,作为之后参考的依据。1.1.参考文章Spring代码实例系列-绪论 Spring MVC代码实例系列-绪论 MyBatis代码实例系列-绪论1.2.技术简介在整合的SSM框架中,主要涉及的框架、插件或技术有:Spring:一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring MVC:一个用...

2018-02-10 23:41:36 6406 6

原创 MyBatis代码实例系列-绪论

SSM框架超级详细整合记录:Spring+Spring MVC+MyBatis+Maven+Git+MySQL+IDEA最近抽空将Mybatis涉及到的一些技术进行了复习,并写了一些代码实例,将源代码整理到这里,作为以后翻阅的记录。说明: 因为时间有限,文章内容可能存在错别字等现象,敬请谅解。 为了展示各知识点,有些命名方式很不规范(尤其是包名、类名),敬请谅解。 因为水平有限,...

2018-01-27 23:29:54 1277

原创 Spring MVC代码实例系列-绪论

SSM框架超级详细整合记录:Spring+Spring MVC+MyBatis+Maven+Git+MySQL+IDEA最近抽空将Spring MVC涉及到的一些技术进行了复习,并写了一些入门实例,将源代码整理到这里,作为以后翻阅的记录。说明: - 因为时间有限,文章内容可能存在错别字等现象,敬请谅解。 - 为了展示各知识点,有些命名方式很不规范,敬请谅解。 1. 不...

2018-01-13 16:15:25 1385

原创 Spring代码实例系列-绪论

SSM框架超级详细整合记录:Spring+Spring MVC+MyBatis+Maven+Git+MySQL+IDEA最近抽空将Spring框架涉及到的一些技术进行了复习,并写了一些入门实例,将源代码整理到这里,作为以后翻阅的记录。说明: - 因为时间有限,文章内容可能存在错别字等现象,敬请谅解。 - 为了展示各知识点,有些命名方式很不规范,敬请谅解。 1. 不规范...

2018-01-07 12:41:39 1425 2

原创 ElasticSearch: master,data,client三类节点区别及节点分配简单例举

目录简述三类节点说明其他说明简单举例简述默认情况下,ES集群节点都是混合节点,即在elasticsearch.yml中默认node.master: true和node.data: true。当ES集群规模达到一定程度以后,就需要注意对集群节点进行角色划分。ES集群节点可以划分为三种:主节点、数据节点和客户端节点。这是一种分而治之的思想,也是一种术业专攻的体现。三类节点说明mas...

2019-10-28 23:26:21 4147 2

原创 MySql:分页查询limit的正确用法

MySql:分页查询limit的正确用法-- 原始分页查询-- 4500 ms-- 慢的原因:1.* 2.limit太大select * from post_history limit 2000000,10;-- 用明确字段代替*-- 1600msselect id,uid,media_id,media_name,news_id,comment from post_histo...

2019-10-28 23:01:19 2938

原创 一句话描述volatile关键字如何保证可见性

被volatile关键字修饰的变量,在每个写操作之后,都会加入一条store内存屏障命令,此命令强制工作内存将此变量的最新值保存至主内存;在每个读操作之前,都会加入一条load内存屏障命令,此命令强制工作内存从主内存中加载此变量的最新值至工作内存。...

2019-09-15 16:40:44 1037 2

原创 Maven: pom.xml文件中dependency标签的scope属性的几种取值及对应的项目阶段

简述pom.xml文件中,dependency标签的scope属性定义了依赖包在项目的使用阶段。项目阶段包括: 编译compile、测试test、运行run和发布deploy。本文对几种scope进行简单的对比总结。总结scope编译阶段测试阶段运行阶段发布阶段备注compileyesyesyesyes默认scopeprovidedyesy...

2019-09-15 16:22:50 834

原创 随笔-在linux通过top命令查找问题线程的nid

最近比较忙,就简单写个随笔吧。简述对于cpu爆满问题,常常会分析是否存在问题线程,本文记录一种通过top快速找到问题线程nid的方式。找到问题进程PID通过top找到问题进程,例如下面有个进程CPU占用率高达99%,他的PID=270973。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMM...

2019-09-10 16:22:08 836

原创 记一次Mysql连接未满但程序却报错连接已满获取连接超时GetConnectionTimeoutException的问题

1.问题描述今天同事找到我,让我帮忙查一个问题,据说已经持续一个月:之前服务正常,问题在上个月开始出现。服务运行大概1天左右,后台开始报错:获取数据库连接失败GetConnectionTimeoutException。服务配置的最大连接数maxActive=600。但是,此时通过show processlist却显示此服务实际只占用了300~400左右的连接。服务重启,问题暂时消失。...

2019-08-27 15:20:00 6764 7

转载 dependencies与dependencyManagement的区别

dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)。dependencyManagement声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的。只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom。...

2019-08-26 15:23:12 351

原创 ElasticSearch: 数据刷新相关的刷新间隔refresh_interval、刷新接口_refresh和刷新策略RefreshPolicy

1.简述默认情况下ElasticSearch索引的refresh_interval为1秒,这意味着数据写1秒才就可以被搜索到。因为上述表现,所以称ElasticSearch是近实时搜索引擎。如果需要调整数据刷新方案,则有三种途径:设置数据刷新间隔:refresh_interval。调用数据刷新接口:_refresh。设置数据刷新策略:RefreshPolicy。本文只描述前两种途...

2019-08-26 15:17:07 8983

原创 分布式概念简单了解:数据一致性、CAP、BASE、分布式事务、分布式锁

今天对分布式相关的一些概念与理论进行学习。1.集群与分布式**集群:**相同的应用部署在多台服务器。**分布式:**不同的应用部署在多台服务器。1.数据一致性在分布式环境中,为了提高系统整体性能,数据以多副本冗余机制存储,副本之间通过数据复制进行同步。数据副本与数据复制必然引入新的问题:如何处理副本数据的一致性?总的来说,无法找到一种能够满足所有分布式环境的一致性解决方案,很多时候要...

2019-08-24 16:44:05 903

原创 MQ: kafka的Java接入与入门示例(topic增删改查,Producer多参发送,Consumer多分区接受)

本文主要通过实际编码来对《MQ: 一张图读懂kafka工作原理》提到的部分原理进行验证与实现。相关文章参考:MQ: 消息队列常见应用场景及主流消息队列ActiveMQ、RabbitMQ、RocketMQ和Kafka的简单对比MQ: 一张图读懂kafka工作原理1.版本说明后续代码依赖于以下版本,其他版本不保证代码可用:kafka 服务版本:2.11-1.0.1kafka-cli...

2019-08-23 17:33:23 1572

原创 Redis: lua脚本支持以及抢红包案例的简单实现

1.关于luaLua脚本可以调用大部分的Redis命令,Redis运行开发者通过编写脚本传入Redis,一次性执行多条命令。使用Lua脚本的好处可以参考pipeline:Redis: pipeline基本原理以及Jedis和Redisson的实现示例提升性能:减少多个命令在I/O上的耗时。原子操作:一个lua脚本内的多个命令的执行时原子操作。脚本复用:lua脚本会加载到redis内存中...

2019-08-20 18:08:44 650

原创 swagger: 数组/集合参数的正确配置方式allowMultiple、dataType

接口参数的注解配置// GET参数@ApiImplicitParam(name = "list", value = "用户ID列表", paramType = "query", allowMultiple = true, dataType = "int")// POST参数@ApiImplicitParam(name = "list", value = "用户名称列表", paramTy...

2019-08-19 15:13:58 6159 2

原创 Redis: pipeline基本原理以及Jedis和Redisson的实现示例

1.关于pipelinepipeline即管道的意思,在Redis中,它表示的是一次性执行多条命令。在原生模式下,每执行一次redis命令,都需要经过发送命令(I/O)、执行命令(内存)和返回结果(I/O))三个阶段。其中,主要耗时在发送命令与返回结果。在pipeline模式下,一次性执行多条命令,也只需要一次发送命令和一次返回结果。节省了大量花费在I/O上的耗时。...

2019-08-19 13:13:17 1326

原创 Redis: 分布式锁的官方算法RedLock以及Java版本实现库Redisson

1.简介在单机应用中,当多个线程访问共享资源时,我们通常通过synchronized关键字、Lock锁、线程安全对象等措施保证资源的安全使用。在分布式环境下,上述措施不再能满足需求,这事,我们需要一种应用于分布式换件的加锁机制,即:分布式锁。分布式锁的实现方式有多重,如:数据库、Redis、ZooKeeper等等。本文主要讲解Redis的分布式锁实现方式,主要依据官方文档:Distribu...

2019-08-17 17:08:45 2280

原创 Redis: 单线程模型、I/O多路复用、影响性能的因素(为什么这么快)、性能与QPS(到底有多快)

1.单线程架构Redis基于Reator模式开发了自己的网络事件处理器:文件事件处理器。其架构图如下:文件事件处理器的四部分:套接字、I/O多路复用程序、文件事件分派器和事件处理器。1.1.套接字Socket文件事件就是对套接字的抽象,每当一个套接字准备好执行连接、写入、读取、关闭等操作时,都会产生一个文件事件。因为一个Redis服务器会连接多个套接字,所以多个文件事件可能会并发出现...

2019-08-17 11:18:28 1059 1

原创 Redis:简介、数据结构、回收策略、持久化方式

简介Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置...

2019-08-16 13:01:04 878

转载 SpringBoot2使用Jetty容器(替换默认Tomcat)

Jetty和tomcat的比较Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的Servlet规范和JavaEE规范。架构比较Jetty的架构比Tomcat的更为简单。Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。性能比较...

2019-08-15 18:31:57 1204

转载 HBase入门: 简介、特点、优缺点、数据结构、系统架构、入门操作、适用场景、注意事项与遇到的坑

简介HBase ——Hadoop Database,是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase是Google Bigtable的开源实现:类似Google Bigtable利用GFS作为其文件存储系统,HBase 利用Hadoop HDFS作为其文件存储系统,HDFS为HBase提供了高可靠性的...

2019-08-06 18:46:35 454

原创 MySql: 表级锁、行级锁、共享锁、排他锁、乐观锁、悲观锁

1.表级锁与行级锁表级锁:table-level locking,锁住整个表。开销小,加锁快。不会死锁(一次性加载所需的所有表)。锁粒度大,发生锁冲突概率大,并发效率低。适合查询。行级锁:row-level loking,锁住一行记录。开销大,加锁慢。会死锁。锁粒度小,发生所冲突概率小,并发效率高。适合并发写,事务控制。并不是直接丢记录行加锁,而是对行对应的索引加锁...

2019-08-06 13:04:53 2904

原创 MySql: 事务特性ACID、三大并发读、四种事务隔离级别

1.事务特性ACID1.1.原子性Atomicity原子性:事务的所有操作,要么全部执行,要么全部不执行,不存在部分执行成功的情况。如果执行过程中出错,则应该回滚rollback到事务开始前的状态。事务是一个不可分割的整体。1.2.一致性Consistency一致性:事务执行完成之后,数据应该满足完整性约束。举例:事务执行前A、B的存款都是100,事务内容是A转账B,则事务执行...

2019-08-05 20:59:36 2031 11

转载 MySql: 浅谈主从复制简介、原理、方式

1.简介随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器。在此之前我们必须要保证每台MySQL服务器里的数据同步。数据同步我们可以通过MySQL内部配置就可以轻松完成,主要有主从复制和主主复制。MySQL数据库自身提供的主从...

2019-08-05 16:51:47 148

转载 MySqL: 并发量大、数据量大的互联网业务数据库设计军规

一、基础规范1.1.必须使用InnoDB引擎解读:支持事务、行级锁,并发性能好、CPU及内存缓存页优化使得资源利用率更高。1.2.必须使用utf8mb4编码解读:万国码,无需转码,无乱码风险,节省空间。1.3.必须为表、字段添加注释解读:不要给后来者挖坑。1.4.禁止使用存储过程、触发器、视图、Event解读:高并发大数据的互联网业务,架构设计思路是解放数据库CPU,将计算转移...

2019-08-05 11:40:10 220

原创 一篇文章掌握MySql索引的语法、分类、实现原理、失效场景及优化策略

1.简介1.1.什么是索引索引是对记录集的多个字段进行排序的方法。在一张表中为一个字段创建一个索引,将创建另外一个数据结构,包含字段数值以及指向相关记录的指针。数据库的索引,可以理解为字典的目录,能够帮助我们快速找到需要查询的字。1.2.为什么需要索引使用索引的目的就是为了提高查询效率。假定表中存在5,000,000条记录,共需要1,000,000个磁盘块,当前查找字段为身份证号...

2019-08-03 17:47:07 2066

原创 SPU与SKU的简单理解

1.1.SPUStandard Product Unit,即:标准化产品单元。用途:描述一种产品。举例: 一个土豪金色IPhone X和一个银色IPhone X都是同一个SPU,不进行颜色、商家的区分。场景:数据统计,例如:通过SPU查看本月IPhone X的销售量。1.2.SKUStock Keeping Unit,即:库存量单元。用途:描述一种产品的最小存货单元,即:单品。...

2019-07-31 20:29:54 796

原创 设计模式-代理模式-以购房中介为例

超级链接: Java常用设计模式的实例学习系列-绪论参考:《HeadFirst设计模式》1.关于代理模式代理模式是一种结构型模式。代理模式:为其他对象提供一个代理以控制对这个对象的访问。本文以购房中介为场景来学习代理模式:购房者可以直接找房主买房。如此做较累,因为买房之前要多次房屋筛选,买房之后要签订合同等等。购房者可以找房屋中介买房,购房者只需进行少量看房即可,中介将代劳筛选房...

2019-07-29 14:44:00 943

dataimport.properties

Solr自动更新配置文件的配置文件,修正版本,亲测可用

2018-05-03

apache-solr-dataimportscheduler-1.0-with-source.jar(修正版)

对apache-solr-dataimportscheduler-1.0.jar进行修改,解决原jar包bug。

2018-05-03

OnetasticInstaller.x86.exe

Microsoft Onenote的一款插件,可以以日历格式显示工作清单。

2018-02-02

plantuml.jar

PlantUML 不仅可以嵌套到各种文本编辑器,IDE 工具,也提供在线版,你用 sublime、你用 Android Studio,你用 Eclipse,你什么工具都没有,裸机到只有一款浏览器,你也可以把 PlantUML 集成到服务器,等等,你都可以用 PlantUML。

2018-02-02

mysqlworkbench633.zip

MySQL Workbench是为MySQL设计的ER/数据库建模工具。是著名的数据库设计工具DBDesigner4的继任者。具有设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL 迁移的作用。

2018-02-02

hanchao5272的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

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

TA关注的人 TA的粉丝

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