自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Boot 整合 Prometheus

Prometheus 是一款面向云原生应用程序的开源监控工具,常用于监控微服务、操作系统、MySQL、Redis、Flink、RocketMQ / RabbitMQ / Kafka、K8S 等。Spring Boot 整合 Prometheus 一般使用的是 actuator 这个项目,actuator 是 Spring Boot 的子项目,为应用提供了强大的监控能力。

2021-12-19 17:07:36 2498

原创 Linux 下 Prometheus 安装与运维

Prometheus 是一款面向云原生应用程序的开源监控工具,常用于监控微服务、操作系统、MySQL、Redis、Flink、RocketMQ / RabbitMQ / Kafka、K8S 等。

2021-11-08 23:23:39 818

原创 WebStorm 安装配置指南

WebStorm 是一个适用于 JavaScript 和相关技术的集成开发环境。最智能的 JavaScript IDE。

2021-07-07 19:55:04 620

原创 Linux 的体系结构

DispatcherServlet 是 Spring MVC 的分发器,本身是个 Servlet,是 Spring MVC 的核心。

2019-09-27 15:49:02 520

原创 Spring MVC 工作原理

Linux 的体系结构主要分为用户态(用户上层活动)和内核态,在 Linux 启动的时候,首先会启动内核,内核从本质上看是一段管理计算机硬件设备的程序。内核为上层应用程序提供了访问的接口,即系统调用,是一种不能再简化的操作。而公用函数库是对系统调用的封装,方便用户调用。Shell 本质是一个命令解释器,可编程。...

2019-09-13 18:04:38 2006

原创 Spring AOP 的使用和实现原理

软件工程有个基本原则,即关注点分离,不同的问题交给不同的部分去解决,面向切面编程 AOP 正是此种技术的体现,通用化功能代码的实现对应的就是所谓的切面(Aspect),业务功能代码和切面代码分开后,架构将变得高内聚低耦合。

2019-09-13 15:18:41 1224

原创 Spring IOC 实现原理

IOC(Inversion of Control)即控制反转,可以说是 Spring 最核心的部分,IOC 是一种思想,使得开发者从繁琐的对象交互中解脱出来,进而专注对象本身,更进一步突出面向对象。了解 IOC,需要先了解下依赖注入(Dependency Inversion,DI)。

2019-09-10 23:18:57 688

原创 RPC 实现原理

近几年随着微服务化项目的崛起,逐渐成为许多公司中大型分布式系统架构的主流方式,而今天所说的 RPC 在这其中扮演着至关重要的角色。随着这段日子公司项目微服务化的演进,发现在日常开发中都在隐式或显式的使用 RPC,一些刚刚接触 RPC 的小伙伴会感觉无所适从,而一些入行多年的老手虽然使用 RPC 经验丰富,但有些对其原理也一知半解,缺乏对原理的深入理解,往往也会造成开发中的一些误用。

2019-09-02 20:10:45 10119 2

原创 Redis 数据库铁律

Redis 是一个开源的高性能的 Key-Value 数据库,本文介绍了使用 Redis 时的开发规范,从键值设计、命令使用等方面进行说明,通过本文的介绍可以减少使用 Redis 过程中带来的问题。

2019-08-30 19:52:14 498

原创 MySQL 数据库规范

好的数据库规范有助于减少软件实现的复杂度,降低沟通成本,本铁律主要涵盖了建库建表、建索引、写 SQL、ORM 映射等方面的处理约定。

2019-08-30 15:35:48 26011 41

原创 Java 开发规范

好的代码规范有助于减少软件实现的复杂度,降低沟通成本,本规范主要涵盖了软件设计、工程结构、编程、异常日志、单元测试、安全等方面的规范。

2019-08-30 14:37:40 849

原创 Redis 性能调优——内存优化

Redis 云平台 CacheCloud 提供一个Redis云管理平台:实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减少运维成本和误操作,提高机器的利用率,提供灵活的伸缩性,提供方便的接入客户端。

2019-07-31 22:24:43 3964 1

原创 Redis 性能调优——缓存设计优化

Redis 是一个开源的高性能的 Key-Value 服务器。本篇主要介绍一下缓存的设计与优化。

2019-07-31 19:51:18 1746 1

原创 Redis 技术内幕——布隆过滤器

Redis Cluster(集群)是官方提供的集群功能。Redis 在 3.0 版本中提供了 Redis Cluster 来满足分布式的需求。为什么需要集群?并发量,据 Redis 官方测试,有 50 个并发程序来执行 10 万次请求,Redis 读的速度达到了 11 万次/秒,写的速度达到了 8.1 万次/秒。那如果业务需要 100 万次/秒呢? 数据量,一台生产机器内存一般在 16G~256G,如果业务需要 500G 数据呢?

2019-07-31 19:48:33 1906 1

原创 Redis 技术内幕——Redis Cluster

Redis 在 3.0 版本中提供了 Redis Cluster (集群) 来满足分布式的需求。Redis Cluster 采用无中心结构,每个节点保存数据和整个集群的状态,每个节点都和其他所有节点连接,节点之间使用流言协议 (Gossip Protocols) 去传播信息以及发现新的节点。

2019-07-25 10:17:27 1088

原创 Redis 技术内幕——Redis Sentinel

Redis Sentinel(哨兵)是 Redis 官方提供的集群管理工具,是 Redis 高可用的解决方案,本身是一个独立运行的进程,它可以监视多个 Master-Slave 集群,发现 Master 宕机之后,能进行自动切换,将该 Master 下的某个 Slave 晋升为 Master,继续处理请求。

2019-07-21 19:22:29 1268

原创 Redis 技术内幕——主从同步原理

单机 Redis 可能存在机器故障、容量瓶颈和 QPS 瓶颈。主从复制为一个数据提供了多个副本,扩展了读性能。一个 Master 可以有多个 Slave,一个 Slave 只能有一个 Master,Redis 数据流向是单向的,Master 到 Slave。

2019-07-18 15:09:04 448

原创 MySQL 性能调优——索引优化

对于任何系统来说,监控都是重要的组成部分。数据库是一切系统的核心组件,数据库的稳定性从一定程度上决定了系统的稳定性,所以,对于数据库的监控,就显得尤为重要了。常见的开源监控软件有 Nagios、Zabbix。这些监控软件,或是提供了数据库监控插件,或是允许用户以插件的形式开发自己对数据库的监控脚本,并且支持的脚本语言也是多种多样的,用户完全可以按照自己的习惯,来选择自己的监控软件,以及编写适合自己的监控脚本。

2019-07-01 13:29:32 1170 2

原创 MySQL 性能调优——SQL 优化

随着业务的不断增长,数据库中的数据也会越来越多,数据库的压力会越来越大,我们会发现,在业务繁忙的时候,数据库的性能会直线下降,这时为了保证良好的性能,需要想办法分担数据库的压力。分担数据库的读负载可以使用主从复制的方式,增加只读从数据库,通过读写分离的方式把数据库的读负载分担到不同的从数据库中,这时在一段时间内已经可以解决问题了。随着业务的发展,会发现,单一的主数据库已经无法承担写负载了,那么这时就需要对单一的主数据库进行拆分了。

2019-06-28 10:23:42 12288 7

原创 MySQL 性能调优——库表结构优化

如何设计最优的数据库表结构,如何建立最好的索引,以及如何扩展数据库的查询,这些对于高性能来说都是必不可少的。但是只有这些还不够,要获得良好的数据库性能,我们还要设计合理的数据库查询,如果查询设计的很糟糕,即使增加再多的只读从库,表结构设计的再合理,索引再合适,只要查询不能使用到这些东西,也无法实现高性能的查询。所以说查询优化,索引优化,库表结构优化需要齐头并进。

2019-06-26 23:21:44 4663 6

原创 MySQL 技术内幕——MySQL Cluster

索引对于数据库的影响非常关键,索引的主要作用就是告诉存储引擎如何快速的找到需要的数据。当表中的数据比较少时,索引的作用可能还不是很明显,因为此时表中的数据基本上可以完全缓存在内存中,就算进行全表扫描也不会太慢。而随着表中数据越来越多,查询频率也越来越高,内存已经不能完全缓存所有数据的时候,索引的作用就会显得越来越重要。MySQL 的索引是在存储引擎层实现的,而不是在 MySQL 的服务器层实现的,这也就决定了不同存储引擎上的索引可能用的方式是不同的。同是也不是所有的存储引擎都支持所有的索引类型。即使是同一种

2019-06-25 22:14:57 875 2

原创 MySQL 技术内幕——主从同步原理

MySQL 主从同步,Master 必须启用 binlog,即二进制日志,binlog 记录了所有修改数据库的 SQL 语句,不记录任何查询语句。如果不开启 binlog 功能,则无法实现主从同步。

2019-06-16 22:23:40 1183 1

原创 MySQL 技术内幕——锁模块

良好的数据库逻辑设计和物理设计是数据库获得高性能的基础。优化数据库结构可以减少数据冗余(相同的数据在多个地方存在);尽量避免数据维护中出现更新,插入和删除异常(通过范式化设计解决);节约数据存储空间;提高查询效率。

2019-06-16 22:22:19 603

原创 MySQL 技术内幕——存储引擎

数据库存储引擎的选择会对性能产生直接的影响。存储引擎是针对于表的而不是针对于库的(一个库中的不同表可以使用不同的存储引擎)。MyISAM 是 MySQL 5.5 之前版本默认的存储引擎。MySQL 5.5 及之后版本默认存储引擎改为了 InnoDB。

2019-06-16 22:19:43 1010 1

原创 MySQL 技术内幕——数据库架构

数据库性能影响因素包括 sql 查询速度、大表和大事务、数据库存储引擎、数据库参数配置、服务器硬件、网卡流量、磁盘 IO 等因素。需要注意的是 MySQL 5.7 是单线程的服务,并不支持多 cpu 并发运算,意味着每条 sql 只能用到 1 个 cpu。

2019-06-16 22:18:10 1516

原创 JVM 性能调优——HotSpot VM 调优记录

生产环境中,一旦出现内存泄漏,长期运行下非常容易引发内存溢出(OutOfMemory,OOM)故障,如果没有一个好的工具提供给开发人员定位问题和分析问题,那将会是一场噩梦。为此,JDK 提供了一些内存泄漏的分析工具,如 jconsole,jvisualvm 等,用于辅助开发人员定位问题,但是这些工具很多时候并不足以满足快速定位的需求。

2019-05-28 20:39:25 3412 1

原创 JVM 性能调优——HotSpot VM 参数指南

基于 JDK 1.8 版本 HotSpot VM 参数指南。JVM参数共分为三类, - 标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;非 Stable 参数(-XX),此类参数各个 JVM 实现会有所不同,需要慎重使用。

2019-02-01 12:10:44 1283

原创 JVM 性能调优——JVM Heap Dump 的生成和 MAT 的使用

生产环境中,一旦出现内存泄漏,长期运行下非常容易引发内存溢出(OutOfMemory,OOM)故障。为此,JDK 提供了一些内存泄漏的分析工具,如 jconsole,jvisualvm 等,用于辅助开发人员定位问题,但是这些工具很多时候并不足以满足快速定位的需求。

2018-11-19 18:43:24 1033

原创 JVM 性能调优——JVM 监控和分析的工具

给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括运行日志、异常堆栈、GC 日志、线程快照 (threaddump/javacore 文件) 堆转储快照 (headdump/hprof 文件) 等。经常使用适当的 JVM 监控和分析的工具可以加快我们分析数据、定位解决问题的速度。

2018-11-16 18:12:49 821

原创 JVM 技术内幕——HotSpot VM 类加载机制

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。实现语言无关性的基础是 VM 和字节码存储格式,JVM 不和包括 Java 在内的任何语言绑定,它只与 "Class 文件" 这种特定的二进制文件格式所关联,Class 文件包含了 JVM 指令集和符号表以及若干其他辅助信息。Java 语言中的各种变量、关键字和运算符号的语义最终都是由多条字节码命令组合而成的。

2018-07-30 10:41:35 608

原创 JVM 技术内幕——GC 日志

阅读 GC 日志是处理 JVM 内存问题的基础技能,它只是一些人为确定的规则,每一种收集器的日志形式都是由它们自身的实现所决定的,但 JVM 设计者为了方便用户阅读,将各个收集器的日志都维持了一定的共性。

2018-07-21 16:23:04 406

原创 JVM 技术内幕——HotSpot VM 的垃圾收集器

如果说收集方法是内存的方法论,那么垃圾收集器就是内存回收的具体实现。JVM 规范中对垃圾收集器应该如何实现并没有任何规定,因此不同厂商、不同版本的 JVM 所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。

2018-07-17 17:11:49 667

原创 JVM 技术内幕——垃圾回收机制

JVM 中栈、本地方法栈、程序计数器三个区域随线程而生,随线程而灭,每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟着回收了。而堆、方法区则不一样,只有在程序处于运行期间才能知道会创建哪些对象,内存的分配和回收都是动态的,GC 所关注的是这部分内存。

2018-06-16 22:25:14 558

原创 JVM 技术内幕——HotSpot VM

JDK (包含 Java语言、工具及工具API、Java SE API、JVM) 是用于支持 Java 程序开发的最小环境,JRE (包含 Java SE API、JVM) 是支持 Java 程序运行的标准环境。JDK 默认内置 JVM 是 HotSpot VM。我们平时所提及的高性能 JVM 除了 HotSpot VM,还包括 BEA JRockit VM 和 IBM J9 VM 这类在通用平台上运行的商用虚拟机。

2018-06-03 22:46:40 5830

原创 分布式架构的技术选型与基础平台的建设

本篇主要总结了自己在分布式架构技术选型和基础平台建设方面的经验。

2018-05-02 23:16:49 926

原创 Spring Boot 整合 Elasticsearch 7

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene 基础之上。Elasticsearch 也是使用 Java 编写的,它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的是提供一套简单一致的 RESTful API。

2018-03-14 22:46:02 875

原创 Elasticsearch 分布式特性与 search 运行机制

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene 基础之上。Elasticsearch 也是使用 Java 编写的,它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的是提供一套简单一致的 RESTful API。

2018-01-26 16:34:54 1397

原创 Elasticsearch 倒排索引和 Doc Values

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene 基础之上。Elasticsearch 也是使用 Java 编写的,它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的是提供一套简单一致的 RESTful API。

2017-12-05 17:21:00 5306

原创 Elasticsearch 7 相关概念和 RESTful API

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene 基础之上。Elasticsearch 也是使用 Java 编写的,它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的是提供一套简单一致的 RESTful API。

2017-12-05 10:17:59 2235

原创 Linux 下 Elasticsearch 7 安装与运维

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene 基础之上。Elasticsearch 也是使用 Java 编写的,它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的是提供一套简单一致的 RESTful API。

2017-11-06 21:55:30 1721

空空如也

空空如也

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

TA关注的人

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