自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 jmap -heap 堆参数分析

一、运行jmap命令JDK8环境下运行jmap命令:[root@wechatrobotapp-6d68998864-s4qgx tomcat]# jmap -heap 1Attaching to process ID 1, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.231-b11using thread-local object allocation.

2021-03-17 18:02:34 550

转载 接口幂等性解决方案总结

什么是接口幂等性在HTTP/1.1中,对幂等性进行了定义。它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),即第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。为什么需要实现接口幂等性在以下业务场景中需要考虑接口的幂等性:前端重复提交表单: 用户填写表格后进行提交,很多时候会因网络波动等多方面原因没有返回提交成功响应,致使用户认为没有成功提交,然后一直点提交按钮,这时就会发生重复提交表单请求。用户恶意进行刷单:用户投票的业务

2021-03-17 15:40:32 938 1

转载 jvm中的各种参数以及默认值

1 标准参数(-)所有的JVM都必须实现标准参数的功能,而且向后兼容;通过命令java访问。用法: java [-options] class [args...] (执行类) 或 java [-options] -jar jarfile [args...] (执行 jar 文件)其中选项包括: -d32 使用 32 位数据模型 (如果可用) -d64 使用 64 位数据模型 (如果可用) -serv.

2021-03-16 19:55:07 931

原创 InnoDB 锁定和事务模型

熟悉InnoDB的锁定和事务模型,对于实现高流量,高并发和高可靠的应用程序和调整MySQL性能是非常重要的。1.InnoDB 锁类型

2020-12-03 15:49:22 261

转载 图解LinkedHashMap原理

1.前言LinkedHashMap继承于HashMap,如果对HashMap原理还不清楚的同学,请先看上一篇:

2020-11-11 20:29:04 791

转载 HashMap源码分析

1.前言本文是基于JDK1.8的HashMap源码展开分析的。2.使用和实现2.1 基本使用HashMap是一种数据结构:使用key-value的方式存取数据。具体使用方法如下:Map<String,String> hashMap=new HashMap<String,String>();hashMap.put("name","jasper");String name=hashMap.get("name");2.2 定义HashMap扩展了Abstr

2020-11-10 17:20:51 237

转载 Linux日志系统

在 Linux 系统中,日志文件记录了系统中包括内核、服务和其它应用程序等在内的运行信息。 在我们解决问题的时候,日志是非常有用的,它可以帮助我们快速的定位遇到的问题。在 Cent OS 7中,日志是使用rsyslogd守护进程进行管理的,该进程是之前版本的系统中syslogd的升级版,对原有的日志系统进行了功能的扩展,提供了诸如过滤器,日志加密保护,各种配置选项,输入输出模块,支持通过 TCP 或者 UDP 协议进行传输等。rsyslog的配置文件为 /etc/rsyslog.conf , 大多数

2020-11-07 14:05:37 165

原创 InnoDB体系结构简介

1.总览下图显示了组成InnoDB存储引擎体系结构的内存和磁盘体系结构。2.InnoDB 内存体系结构2.1 缓冲池(Buffer Pool)缓冲池是一块InnoDB用来缓存表和索引数据的内存区域。缓冲池允许直接从内存中访问经常使用的数据,从而加快处理速度。在专用的服务器上,通常将80%的物理内存分配给缓冲池。为了提高大容量读取操作的效率,缓冲池被分为多个页面,每个页面可能包含许多行记录。 为了提高缓存管理的效率,缓冲池被实现为页面的链接列表。 使用LRU算法的变体将很少使用的数据从

2020-11-05 17:04:52 346 1

原创 刨析MySQL5.7版本InnoDB存储引擎(总览)

InnoDB是一种用来平衡高可用和高性能的存储引擎。在MySQL 5.7版本中,InnoDB是默认的MySQL存储引擎。InnoDB的优势:DML语句操作遵循ACID模型,使用事务机制(提供崩溃恢复能力)来保护用户数据 通过行级锁和一致性读特性增加多用户访问时的性能和并行度 InnoDB数据表通过主键方式来优化查询InnoDB特性:特性 是否支持 B树索引 支持 备份/时间点恢复(服务层实现) 支持 集群数据库支持 否 集群索引 支持 压缩

2020-11-04 11:00:14 537

原创 kafka和rocketmq的区别

协调节点策略kafka通过zookeeper来进行协调,而rocketMq通过自身的namesrv进行协调。rocketMq在协调节点的设计上显得更加轻量。kafka在具备选举功能,在Kafka里面,Master/Slave的选举,有2步。第1步,先通过ZK在所有机器中,选举出一个KafkaController;第2步,再由这个Controller,决定每个partition的Master是谁,Slave是谁。因为有了选举功能,所以kafka某个partition的master挂了,该partiti

2020-09-30 12:35:14 2356

原创 Pigeon-extension模块功能介绍

简介Pigeon是一个分布式服务通信框架(RPC),在美团点评内部广泛使用,是美团点评最基础的底层框架之一主要特色除了支持spring schema等配置方式,也支持代码annotation方式发布服务、引用远程服务,并提供原生api接口的用法。支持http协议,方便非java应用调用pigeon的服务。序列化方式除了hessian,还支持thrift等。提供了服务器单机控...

2020-09-08 10:45:23 279 2

原创 pigeon-remoting模块功能分析

1.简介Pigeon是一个分布式服务通信框架(RPC),在美团点评内部广泛使用,是美团点评最基础的底层框架之一2.主要特色除了支持spring schema等配置方式,也支持代码annotation方式发布服务、引用远程服务,并提供原生api接口的用法。支持http协议,方便非java应用调用pigeon的服务。序列化方式除了hessian,还支持thrift等。提供了服务...

2020-09-08 10:43:57 99

转载 24张图带你彻底理解Java中的21种锁

帮你总结好的锁:1、乐观锁乐观锁是一种乐观思想,假定当前环境是读多写少,遇到并发写的概率比较低,读数据时认为别的线程不会正在进行修改(所以没有上锁)。写数据时,判断当前 与期望值是否相同,如果相同则进行更新(更新期间加锁,保证是原子性的)。Java中的乐观锁:CAS,比较并替换,比较当前值(主内存中的值),与预期值(当前线程中的值,主内存中值的一份拷贝)是否一样,一样则更新,否则继续进行CAS操作。如上图所示,可以同时进行读操作,读的时候其他线程不...

2020-09-08 10:30:42 363

原创 高并发架构通解

前言高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己业务场景的高并发处理方案。在电商相关产品开发的这些年,我有幸的遇到了并发下的各种坑,这一路摸爬滚打过来有着不少的血泪史,这里进行的总结,作为自己的归档记录,同时分享给大家。服务器架构...

2020-02-26 10:16:21 244

转载 MyBatis缓存配置

1. 前言使用缓存可以使应用更快地获取数据,避免频繁的数据库交互,尤其是在查询越多,缓存命中率越高的情况下,使用缓存的作用就越明显。MyBatis作为持久化框架,提供了非常强大的查询缓存特性,可以非常方便地配置和定制使用。MyBatis的缓存类型分为两种:一级缓存和二级缓存。下面将就这两种缓存类型分别进行介绍。2. 缓存2.1 一级缓存先通过一个简单示例来看看MyBatis一...

2020-02-26 09:45:06 213

转载 如何设计可动态扩容缩的分库分表

1 面试题 如何设计可动态扩容的分库分表2 考点分析选一个数据库中间件,然后深入分析 设计分库分表的方案,要分成多少个库,每个库分成多少个表 基于已选的数据库中间件,以及在测试环境建立好的分库分表,?能否正常执行分库分表的读写 完成单库单表到分库分表的迁移(使用双写方案) 线上系统,开始基于分库分表对外服务后续随着业务的发展需要扩容成6个库,每个库需要12个表,你怎么来增...

2020-02-21 16:51:39 407

原创 MySQL千万级数据量优化方案

前言千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区。除此之外,还有其他的思路和解决方案。根据本人多年的工作经验,做了如下总结。方案...

2020-02-19 21:52:30 5268

转载 MySQL自定义排序函数FIELD()介绍

MySQL可以通过field()函数自定义排序格式:field(value,str1,str2,str3,str4)value与str1、str2、str3、str4比较,返回1、2、3、4,如遇到null或者不在列表中的数据则返回0. 这个函数好像Oracle中没有专门提供(也可能是我没有用到),不过自己实现这样一个函数还是比较简单的。mysql> select * fro...

2020-02-06 19:32:47 400

原创 微服务注册中心比较

分布式理论基础 CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。一、常用的注册中心对比Zookeeper、Eureka、Consul、Etcd、Nacos,其中Zookeeper、Consul、Etcd 保证CP;Eureka保证AP;Nacos对CP、AP都支持。和Sp...

2020-01-19 11:13:00 895

转载 CAP定理

分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。本文介绍该定理。它其实很好懂,而且是显而易见的。下面的内容主要参考了 Michael Whittaker 的文章(https://mwhittaker.github.io/blog/an_i...

2020-01-19 09:29:24 123

转载 最强最全常用开发库 - 日志类库详解

从性能上Log4J2要强,但从生态上Logback+SLF4J优先。

2020-01-14 09:19:25 477

转载 MySQL数据库设计规范

1. 规范背景与目的MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。2. 设计规范2.1 数据库...

2020-01-13 11:03:47 140

转载 HBase基础之常用过滤器hbase shell操作

创建表create 'test1', 'lf', 'sf'lf: column family of LONG values (binary value)-- sf: column family of STRING values导入数据put 'test1', 'user1|ts1', 'sf:c1', 'sku1'put 'test1', 'user1|ts2', 'sf:...

2019-12-21 10:38:25 172

转载 JDK core dump分析

线上应用在运行的过程中有时候会因为jvm自身异常而退出,同时也会生成core文件。这时候需要充分挖掘core文件的有用信息来排查问题

2019-09-27 17:14:26 748

转载 Emoji-java使用说明

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/persistencegoing/article/details/89159946当Emoji表情字符存储有问题,或者遇到保存字符串到数据库里出现\xF0\x9F\x92\x94等类似的问题时,可以用emoji-java来解决 ...

2019-09-16 14:48:53 909

原创 ibatis框架提供的动态SQL功能详解

ibatis框架的<dynamic>标签用来动态生成SQL,一般在SQL语句的查询条件和更新部分结合<isNotEmpty>,<isEmpty>,<isNotEqual>标签使用。update t_consumer <dynamic prepend="SET "> <isNotEmpty property="isNe...

2019-08-24 16:23:05 1284

原创 BigDecimal详解

1.前言在《Effective Java》这本书中提到过这样一个原则: float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用java.math.BigDecimal。所以,这次介绍下BigDecimal类型。如果需要精确计算,需要通过String来构造BigDecimal对象2.介绍BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (sc...

2019-08-05 23:31:03 1030

原创 Spring整合Disruptor3

1.Disruptor介绍从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列。那么它的应用场景自然就是“生产者-消费者”模型的应用场合了。可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是什么。我们知道 BlockingQueue 是一个 FIFO 队列,生产者(Producer)往队列里发布(publish)一...

2019-08-04 18:07:14 680

原创 jmeter使用教程

最近因为工作需要,需要对线上应用进行集群压测。经过一番调研了后选择了jmeter工具包进行压测。jmeter是基于JVM(最新版本基于jdk8+)的压测工具包。提供了丰富的工具来设置压测计划,执行压测任务和生成压测报告。我这边使用的是windows10平台。整个流程如下:1.下载jmeter打开https://jmeter.apache.org/download_jmet...

2019-06-29 16:21:50 57341 1

转载 Hbase详解

【转自:http://jiajun.iteye.com/blog/899632】一、简介historystarted by chad walters and jim2006.11 G release paper on BigTable2007.2 inital HBase prototype created as Hadoop contrib2007.10 First u...

2019-06-25 11:58:39 172

原创 maven打包问题排查

问题在项目开发的过程中,我手动添加了一个spring-orm 3.2.5依赖,用来兼容已有代码的Ibatis框架依赖。使用dependency:tree命令能够查看到但在查看运行maven-assembly-plugin生成的压缩包时,发现lib目录还是保存了spring-orm 4.2.5依赖。排查过程1.手动设置assembly.xml定义的dependencySet元素的scop...

2019-06-04 17:10:39 386

原创 Maven中如何解决Cannot access central in offline mode

本地Maven仓库有所需jar包依然报错,missing………………既然有这个jar包为什么还会报错呢?查找到对应_remote.repositories文件。内容如下:#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior...

2019-05-29 14:58:24 5614

原创 Mybatis一对一映射

1.前言MyBatis是一款优秀的支持自定义SQL查询,存储过程和高级映射的持久层框架,消除了几乎所有的JDBC代码和参数的手动设置以及结果集的检索。MyBatis可以使用XML或注解进行配置和映射,MyBatis通过将参数映射到配置的SQL形成最终执行的SQL语句,最后将执行SQL的结果映射成Java对象返回。这篇文章主要介绍Mybatis框架提供的一对一映射功能。2.一对一映射2....

2019-05-12 21:24:17 1263

原创 Java应用故障排查命令和工具

背景对于在线运行的应用来说,会因为流量过高,程序bug,依赖故障,线程死锁,配置错误等一系列原因,导致系统不可用或者部分不可用,从而带来损失。对于技术人员来说,需要第一时间定位原因并解决故障,以将损失降到最低。本文将介绍常用的Java故障排查命令和工具。常用命令常用工具1.BtraceBrace是一个开源的Java程序动态跟踪工具。工作的基本原理是通过Hotspot虚拟机的...

2019-05-08 17:42:58 503

转载 记一次 OOM 查询过程

现象监控系统发现服务挂掉, 登上机器ps -ef|grep **发现进程还在,因为监控系统是通过心跳检测来监控服务的存活状态的,服务假死排查过程1、df、free、top 三连磁盘空间正常、内存使用率正常、某个进程的CPU占用率达300%多2、top -H-p pid查看占用CPU最高的进程对应线程,得到线程ID tid3、printf ‘%x’ tid线程I...

2019-05-07 10:48:05 2774

原创 OAuth协议

背景随着互联网的深入发展,互联网巨头逐渐积累了海量的用户和数据。对于平台级应用而言,用户需求多种多样,变化万千,独立应付不免分身乏术。因此,将数据以接口的形式下放给众多的第三方开发者,第三方开发者经过二次开发,满足用户的独特需求。同时,平台型应用吸引了第三方开发者和用户,在大平台周围形成了一个良好的生态环境。OAuthOAuth介绍OAuth协议旨在为用户资源的授权访问提供一个安全...

2019-05-06 10:32:25 4400

原创 Spring-AOP模块的ProxyConfig分析

描述:在Spring框架中,AOP模块是通过实现BeanPostProcessor相关类型与IOC模块集成的UML结构图如下:AbstractAdvisingBeanPostProcessor:BeanPostProcessor的基本实现,将一个Spring AOP advisor应用到多个spring bean 属性:@Nullableprotected Advisor...

2019-04-18 17:39:43 595

原创 Spring如何分析xml定义的元素

Spring定义了NamespaceHandlerSupport类型来解析xml定义的命名空间和元素使用组合模式保存xml元素与BeanDefinitionParser,xml元素与BeanDefinitionDecorator等映射关系NamespaceHandlerSupport子类具体负责每个命名空间的元素解析,具体内容可见下表:类型 元素 描述 TxName...

2019-04-18 17:39:04 155

转载 主流消息队列的比较与选型

目前业务上需要选用合适的消息队列来做数据传输,因此特意调研了一下当下较主流的消息队列的各特点:消息中间件三要素:生产者、消息、消费者。衡量标准:生产者、消息、消费者三者的交互。1.消息路由:消息如何经过消息中间件到达消费者。2.消息可靠性: 2.1.不允许消息丢失 2.2.允许消息丢失,性能需求大于可靠性3.消息重放:已经消费过的消息是否能设置某一时...

2019-04-18 17:38:30 458

原创 Spring-webmvc模块分析

Spring-webmvc模块主要用于在遵守servlet规范的前提下将Spring框架集成到java web 应用springmvc启动过程:容器加载ContextLoaderListenr,调用contextInitialized()(内部调用initWebApplicationContext方法)ContextLoaderListener:Spring的ApplicationCont...

2019-04-10 17:21:40 880

空空如也

空空如也

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

TA关注的人

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