自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 双重检测所的线程安全问题

双重检测所的线程安全问题解决方案直接来看下面这段代码public class StudentInstance{ private Student student; public Student getInstance(){ if(student == null){ synchronized(this){ if(student == null){ student = new Student("xx",'19'); } } } }}感觉好像没啥问题主

2021-08-06 14:32:29 169

原创 Netty(二)—— NIO

java.io 中最为核心的一个概念是流(Stream),面向流的编程.java 中,一个流要么是输入流,要么是输出流,不可能同时是输入流又是输出流java,nio 中拥有 3 个核心概念:Selector,Channel 与 Buffer,在 java.nio 中,我们是面向块(block)或是缓冲区(Buffer)编程的 . Buffer 本身就是一块内存,底层实现上,它实际上是个数组.数据的读写都是通过 Buffer 来实现的除了数组之外,Buffer 还提供了对于数据的结..

2021-04-18 09:25:47 107

原创 Spring bean

Spring 核心组件装配流程解析IoC (Inverse of Control, 控制反转)DI (Dependency Injection, 依赖注入)关于spring容器管理Bean的过程以及加载模式:代码:Resource resource = new ClassPathResource("applicationContext.xml");DefaultListableBeanFactory defaultListableBeanFactory = new DefaultListab

2021-04-09 20:50:42 111

原创 MySQL数据库监控与调优(2)

索引数据结构1.二叉树,极端情况有可能会出现在一边的情况,二叉树就变成了链表2.平衡二叉搜索树(AVL 树)每个节点的左子树和右子树的高度差不超过1对于n个节点,数的深度是log2n ,查询的时间复杂度是O(log2n)B-Tree & B+TreeB-Tree 特性根节点的子节点个数2 <= X <= m,m是树的阶假设m = 3 ,则根节点可以有2-3个孩子中间节点的子节点个数m/2 <=y <= m假设m = 3 ,中间节点至少有2个孩子,最

2021-03-08 14:56:45 408 2

原创 MySQL数据库监控与调优(1)

安排:发现:慢查询日志与分析分析:EXPL AIN、SQL性能分析、optimizer trace…调优理论:索弓|的原理、创建索引的技巧、索引失效…特定语句的原理与调优JOIN、 LIMIT、 COUNT、GROUP BY、ORDER BY、表结构设计原则…Percona Toolkit数据库调优维度参考:千金良方:mysql性能优化金字塔法则业务需求不合理的需求,可能会造成很多问题勇敢的对不合理的需求说不拨乱反正系统架构做架构设计的时候,应充分考虑业务的实际情况,考虑

2021-03-03 20:52:49 349 2

原创 JVM 性能调优实战(4)

实战:代码缓存区(Code Cache)与代码缓存区满代码缓存区 - 存储编译后的代码属性作用默认值-XX:lnitialCodeCacheSize设置代码缓存区的初始大小,以 java -XX: +PrintFlagsFinal 1 grep InitialCodeCacheSize结果为准不同操作系统、不同编译器的值不同-XX:ReservedCodeCacheSize设置代码缓存区的最大大小,以java -XX: +PrintFlagsfinal 1 grep R

2021-03-02 16:51:01 190

原创 JVM 性能调优实战(3)

实战 - CPU过高问题定位top + jstack首先使用 top 命令PID COMMAND %CPU TIME #TH #WQ #PORTS MEM PURG CMPRS PGRP61603 idea 174.5 03:07.44 64/2 2 471 1662M+ 5732K 207M- 6160362085 java 67.8 00:07.23 19/1 1 79 50M

2021-03-02 14:45:20 705

原创 JVM 性能调优实战(2)

实战: JVM日志实战JDK 8 JVM日志统一日志管理Xlog实战Xlog常用JDK 8垃圾收集相关参数G1PrintHeapRegions、GCLogFileSize、 NumberOfGCLogFiles、PrintAdaptiveSizePolicy、 PrintGC.、PrintGCApplicationConcurrentTime、PrintGCApplicationStoppedTime、PrintGCCause、PrintGCDateStamps、PrintGCDetails

2021-03-02 09:32:12 299

原创 JVM 性能调优实战(1)

前言各种实战,积累经验将理论与工具融会贯通额外的理论增补额外的一些工具预热:JVM参数选项JVM参数选项繁多, 格式不一-开头如 :java -version-X开头如 :java -Xmx50m-XX开头…如 :java -XX:+UseG1GCJVM选项的分类与方式1. 标准选项(Standard Options for Java)1.1 作用用于执行常见操作,例如检查JRE版本,设置类路径,启用详细输出等,各种虚拟机的实现都会去支持标准参数1.2 查看支持的参

2021-03-01 21:50:35 930

原创 JVM垃圾收集器

垃圾收集算法:为实现垃圾回收提供理论支持垃圾收集器:利用垃圾收集算法,实现垃圾回收的实践落地术语术语-Stop The World简写为STW ,也叫全局停顿,Java代码停止运行,native代码继续运行,但不能与JVM进行交互原因:多半由于垃圾回收导致;也可能由Dump线程、死锁检查、Dump堆等导致危害:服务停止、没有响应;主从切换、危害生产环境术语-并行收集Vs并发收集并行收集:指多个垃圾收集线程并行工作,但是收集的过程中用户线程(你的业务线程)还是处于等待状态的并发收集:指用户

2021-02-26 15:01:29 175

原创 JVM 垃圾回收

垃圾回收先抛出 3 个问题什么场景下该使用什么垃圾回收策略?垃圾回收发生在哪些区域?对象在什么时候能够被回收?什么场景下该使用什么垃圾回收策略?在对内存要求苛刻的场景,想办法提高对象的回收效率,多回收掉一些对象,腾出更多内存在CPU使用率高的情况下,降低高并发时垃圾回收的频率,让出更多的 CPU去执行你的业务而不是垃圾回收垃圾回收发生在哪些区域?虚拟机栈,本地方法栈,程序计数器,这三个区域都是线程独占的,随着线程的创建而创建,销毁而销毁,所以这三块区域是不需要考虑垃圾回收的堆和方法

2021-02-25 17:59:31 130

原创 JVM编译器优化机制

编译器优化机制字节码是如何运行的?解释执行:由解释器一行一行翻译执行编译执行:把字节码编译成机器码,直接执行机器码解释vs编译解释执行优势在于没有编译的等待时间性能相对差些编译执行运行效率会高很多, 一般认为比解释执行快一个数量级带来了额外的开销怎么查看运行模式呢?  ~  java -versionjava version "1.8.0_161"Java(TM) SE Runtime Environment (build 1.8.0_161-b12)Java Ho

2021-02-25 14:19:37 335 2

原创 JVM 内存结构和加载过程

一、JVM内存结构其中堆和方法区是线程共享的,虚拟机栈,程序计数器,本地方法栈是线程隔离的堆:JVM 最大的内存空间,就大部分对象都是存在堆内存中的,堆内存又做了细分,分为了新生代和老年代还有一个 jdk8之前是永久代,jdk8 及其以后都是元空间,元空间并不是堆内存的一部分,而是本地内存。From Survivor 和 to Survivor 是存活区,垃圾回收使用复制算法的时候会用到虚拟机栈:是线程独享的,当创建线程的时候就会创建虚拟机栈,虚拟机栈由栈帧组成,每一次的方法调用都会创建栈帧,每

2021-02-24 17:17:59 177

原创 分布式限流

概述分布式限流介绍常见方案技术选型分布式限流常用算法基于客户端的限流方案Guava RateLimiter客户端限流[算法源码] Guava的预热模型基于Nginx的分布式限流基于IP地址的限流方案基于最大连接数的限流方案基于Redis + Lua的分布式限流30分钟了解LuaLua基本用法和介绍Redis预加载Lua客户端分布式限流基于Redis+ Lua实现限流定义自定义注解封装限流逻辑Guava RateLimiter客户端限流创建

2021-02-03 18:04:10 145

原创 接口幂等性设计

本章概述什么是幂等性幂等性设计的核心思想select、update、 delete、 insert和混合操作的接口幂等性接设计与重试机制引发的问题接口幂等性提交订单按钮如何防止重复提交? .表单录入页如何防止重复提交?微服务接口,客户端重试时,会对业务数据产生影响吗?什么是幂等性幂等性: f(f(x)) = f(x)幂等元素运行多次,还等于它原来的运算结果在系统中,-个接口运行多次,与运行一-次的效果是一致的什么情况下需要幂等性重复提交、接口重试、前端操作抖动等业务

2021-02-03 11:57:42 108

原创 分布式事务

概述CAP 原理ACID原理与BASE原理基于XA协议的两阶段提交事物补偿机制基于本地消息表的最终一致方案基于MQ消息队列的最终一 致方案分布式事务问题传统的应用都是单一数据库事务所有的业务表都在同一数据库内数据库的事务可以很好的得到支持分布式系统中,业务拆分成多个数据库多个独立的数据库之间,无法统一事务造成数据不一致比如:一个下单操作,用户使用积分购买商品用户库扣减积分,订单库生成订单,商品库扣减库存由于它们不在同一数据库,不能保证事务统一解决方案基于XA协议的

2021-02-02 22:18:08 171

空空如也

空空如也

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

TA关注的人

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