自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程-基础概述

线程简介线程实现线程状态线程同步线程通信高级主题

2020-08-16 21:28:26 278

原创 RabbitMQ的高级用法

RabbitMQ高级特性消息可靠性投递在使用RabbitMQ的时候,作为消息发送方希望杜绝任何消息都市,或者投递失败的场景,RabbitMQ为我么提供了两种方式来控制投递可靠性模式confirm 确认模式return 返回模式RabbitMQ消息投递的路径是:producer —> rabbitmq boker —> queue —>consumer消息从Producer到Exchange则返回一个ConfirmCallBack消息从Exchange—>Qu

2020-08-09 08:14:49 759 1

原创 RabbitMQ(消息中间件)

MQ基本概念Message Queue(消息队列)。是指在消息的传输过程中保存消息的容器,,多用于分布式系统之间进行通信。分布式系统两种通信方式远程RPC调用引入消息中间件小结MQ,消息队列,存储消息的中间件分布式系统同行两种方式:直接远程调用和借助第三方间接通信。发布方成为生产者,接收方成为消费者。MQ的优劣优势应用解耦:提高系统容错性和可维护性远程调用带来的下面的耦合可以看出这个远程调用带来的问题就是,系统的耦合性高,容错性低。可维护性也低我们来看看使用中间

2020-08-08 09:33:25 429

原创 JVM优化-Tomcat8优化

Tomcat配置优化需要先下载这个Tomcat8的服务器,JDK等一系列操作优化前配置给Tomcat设置角色cd /tmp wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apachetomcat-8.5.34.tar.gz tar -xvf apache-tomcat-8.5.34.tar.gz cd apache-tomcat-8.5.34/conf #修改配置文件,配置tomca

2020-08-07 00:00:18 176

原创 JVM篇-垃圾回收器(最核心篇)

GC分类与性能指标GC分类垃圾收集器没有在规范中进行过多的规定,可以有不同的厂商、不同的版本的JVM来实现由于JDK的版本处于高速迭代的过程,因此Java发展至今已经衍生了众多GC版本从不同角度分析垃圾收集器,可以将GC分为不同的类型按照线程分为:串行垃圾回收器(默认在JDK Client模式)、并行垃圾回收器按照工作模式分:可以分为并发式垃圾回收器和独占式垃圾回收器按照碎片处理方式分:分为压缩式垃圾回收器(再分配对象空间使用:指针碰撞)与非垃圾回收器(再分配对象空间使用:空闲列表)按工

2020-08-06 05:44:52 794

原创 JVM篇-垃圾回收的相关概念

System.gc()的理解默认情况下,通过System.gc()或Runtime.getRuntime().gc()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存System.gc()调用附带一个免责声明,无法保证对垃圾手气的调用JVM实现着可以通过System.gc()调用来决定JVM的GC行为。如测试一个性能基准,可以在运行之前调用System.gc()内存溢出与内存泄露内存溢出(OOM)原理:没有空闲内存、并且垃圾收集器也无法提供更多内

2020-08-04 09:25:17 161

原创 JVM篇-垃圾回收相关算法

标记阶段:引用计数算法垃圾标记阶段:对象存活判断在堆里存放这激活所有的Java对象实例,在GC执行垃圾回首之前,首先需要区分出内存中那些是存活对象,那些是已经死亡的对象,只有被标记为已经死亡的对象,GC才会执行垃圾回收,垃圾回收会释放已经占用的内存空间,因此这个过程可以称之为垃圾标记阶段那么JVM中究竟如何标记一个死亡的对象呢?当一个对象不再被任何存户好对象继续引用时,就会宣判已经死亡。判断对象存活一般有两种方式:引用计数法和可达性分析算法引用计算算法引用计算法(Reference Cou

2020-08-03 01:48:57 206

原创 JVM篇-垃圾回收概述

什么是垃圾垃圾收集,不是Java语言的半生产物,早在1960年第一门开始使用动态分配和垃圾收集急速的Lisp语言诞生关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候回收?如何回收垃圾收集机制是Java的招牌能力,它极大的提高了开发效率什么是垃圾(Garbage)呢?垃圾是指运行程序中没有任何指针指向的对象,这个对象就是需要回收的垃圾如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占用的内存空间会一直保留到应用程序结束,有可能影响其他对象的使用或者导致内存溢出为

2020-08-02 23:54:58 256

原创 JVM篇-StringTable

String的基本特性String 字符串,使用一对 “” 表示String s1=“AA”;//字面量定义String s2=new String("AA“”);String 声明为final的不可被继承String 实现了Serializable接口,表示是字符串是支持序列化的,实现Comparable接口表示:String可以比较大小String在JDK8及以前内部定义了final char[] value用于存储字符串数据,jdk9改为byte[]String 代表不可变的是字

2020-08-02 19:51:01 210

原创 JVM篇-执行引擎(Execution Engine)

执行引擎概述执行引擎是Java虚拟机核心的组成的部分之一虚拟机的执行引擎是有软件自行实现的,不受物理条件制约的定制指令集与执行引擎结构体系,能执行不被硬件支持的指令集格式。JVM主要任务是装在字节码到其内部执行引擎的主要任务就是:将字节码指令解释/编译(后端编译。生成字节码的编译成为前端编译)为本地机器指令JVM中的执行引擎重放了将高级语言翻译为机器语言的翻译者Java代码编译和执行过程大部分的程序代码转换为物理机的目标代码或者虚拟机能执行的指令集之前,都需要执行上述步骤。什么

2020-08-02 15:41:38 937 1

原创 JVM篇-直接内存(Direct Memory)

直接内存概述不是虚拟机运行时数据区的一部分。直接内存是Java堆外边的、直接向系统申请的内存区域来源NIO(非阻塞式IO)DirectByteBuffer操作Native内存通常访问直接内存的速度会优于Java堆,读写性能高因此出于性能考虑,读写频繁的场合会考虑使用直接内存Java的NIO库允许Java程序使用直接内存、用于数据缓冲区直接内存存在的问题可能到时OOM异常直接内存在Java堆外,因此它的大小不会被==>-Xmx指定堆大小限制缺点分配回收成本高不受JV

2020-08-02 12:59:29 820

原创 JVM篇-对象的实例化内存布局与访问定位

对象实例化创建对象的方式newClass的newInstance()(反射==>之能调用空参构造器,权限是public )Constructor的newInstance(xxx)==>可以空参、带参、权限没有要求使用clone()反序列化:从网络获取对象的二进制流第三方库Objenesls创建对象的步骤字节码的角度的创建从执行角度看(细致分为6个步骤)对象的内存布局对象的访问定位...

2020-08-01 19:09:24 189

转载 SpringCloud操作手册

https://blog.csdn.net/weixin_38305440/article/details/102775484

2020-08-01 15:47:33 177

原创 JVM篇-方法区(Method Area)

栈、堆、方法区的交互关系方法区的理解方法区的简介尽管方法区在逻辑上是属于堆的一部分,但是一些简单的实现可能不会选择去进行垃圾收集或者进行压缩HotSpot VM 方法区有个别名叫做Non-Heap(非堆) 就是用于和堆分开方法区看做是一块独立于Java堆的内存空间基本理解方法区与堆一样 是各个线程共享的内存区域方法区在JVM启动的时候就会被创建 并且它实例的物理内存空间和Java堆一样都可以不连续方法区的大小 跟堆空间一样 可以选择固定大小或者动态变化方法区的对象决定了系

2020-07-31 09:10:37 613

原创 JVM篇-堆空间(Heap)

堆的核心概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域Java堆区在JVM启动的时候既被创建,其空间到校也就确定了,是JVM管理的最大一块内存空间(堆内存可以调节)《Java虚拟机规范》规范,对可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区(Thread Local Allocation Buffer,TLAB)(几乎)所有的对象实例以及数组都应当在运行时分配在堆上。数组和对象可能永远刽存储在栈上,

2020-07-30 03:18:43 471

原创 JVM篇-本地方法栈(Native Method Stack)

什么是本地方法?(无方法体,native关键字修饰)简单来说:Native Method(本地方法)就是一个非Java调用非Java代码的接口。为什么要使用本地方法Java 环境外交互有时需要Java应用需要与Java外面的环境交互。这是主要原因与操作系统交互使用本地方法,我们得以用Java实现了Jre的予底层系统的交互,甚至JVM的一些不等就是用C写的Sun `s JavaSun的解释器是用C实现了, 这使得它能像一个普通的C一样与外部交互。现状目前该类的方法使用原来越少,除非是

2020-07-29 13:40:23 324

原创 JVM篇-虚拟机栈(Stack)

虚拟机栈的概述总所周知Java是跨平台的的设计,Java的指令都是根据栈来设计,不同平台的CPU架构不同,所以不能设计为基于寄存器的优势: 跨平台 指令集小,编译器容易实现不足:性能下降(对比寄存器) 实现同样的功能需要更多的指令栈(Stack)是运行时的单位 堆(Heap)是存储的单位(理论上是最大的内存空间)虚拟机栈的基本内容什么是虚拟机栈?每个线程在创建时都会创建一个虚拟机栈内部保存一个个栈帧(Stack Frame) 对应着一次次的Java方法调动线程私有(与线程生命周期

2020-07-27 01:57:58 446

原创 JVM篇-运行数据区的内存结构之PC寄存器

运行数据区内存划分图JVM优化重点是优化堆内存(Heap)和本地方法区线程回顾(JVM角度)1. 线程是程序里的运行单元,JVM允许一个应用有多和线程2. Hotspot JVM中,每个线程斗鱼操作系统和本地线程之间映射(当一个Java现成饭准备执行易购,此时一个操作系统本地线程也会同时创建,Java线程执行中止后,本地线程也会回收)3. 操作系统负责所有线程的安排调度到任何一个可用的CPU上.一旦本地线程初始化成功,他会调用Java线程中的run()方法(线程分为==>守护线程 .

2020-07-27 00:22:30 256

原创 JVM篇-双亲委派机制与沙箱安全机制

双亲委派机制 1. 如果一个类加载器收到了类加载请求,不自己加载而是把请求给其父类去执行. 2. 若父类加载器还存在其父类的加载器,进一步向上委托. 3. 如果父类加载器可以完成类加载任务就返回,若不能才让自己子类加载双亲委派机制的优势1. 避免类的重复加载2. 保护程序安全,防止核心API被所以篡改 (如自定义类:java.lang.String)沙箱安全机制 举例: 我们自定义一个String类.但是加载自定义String的类会游戏使用引导类加载器加载(BootStrap)加

2020-07-26 23:27:50 287

原创 SQL优化之锁机制

锁机制解决因资源共享造成的并发问题示例:某网购平台平台仅剩一件衣服X两个Women :WA、 WBWA : X 抢购 X加锁===>下单===>付款===>卖家收到订单===>抢购完成WB : X 抢购 X已经加锁===>等待阻塞中===>WA付款之后===>提示已经售空锁分类按照操作类型分1. 读锁(共享锁)===>对于同一个数据(衣服X),多个操作可以同时进行,互不干扰。2. 写锁(互斥锁)===>

2020-07-26 02:35:44 262

原创 SQL优化之SQL排查与数据分析

SQL排查慢查询日志 用于记录MySQL提供的一种日志记录,用于记录MySQL中响应时间超过阀值的SQL语句 阀值:long_query_time:(default)10s (十秒没查完就会被定义为一条慢SQL) 慢查询日志默认是关闭(开发调优打开,部署关闭)开启慢查询日志检查是否开启了慢查询日志命令 show variables like '%slow_query_log%';临时开启(在内存中开启)set global slow_query_log = 1 ; --在

2020-07-26 01:50:50 566

原创 SQL优化之避免索引失效原则

避免索引失效的一些原则索引使用原则不要跨列或者无序使用(最佳左前缀原则)-- 复合索引尽量使用全索引匹配 --复合索引####不要在索引上使用任何操作(如:计算、函数、类型转换),否则索引失效。正常演示explain select * from book where authorid=1 and typeid=2\G explain select * from book where authorid = 1 and typeid*2 = 2 ;--用到了a1个索引explain s

2020-07-25 23:54:00 514

原创 SQL优化之索引优化案例

前言本次优化会从如下几个维度去考虑单表优化、两表优化、三表优化单表优化数据准备create table book( bid int(4) primary key, name varchar(20) not null, authorid int(4) not null, publicid int(4) not null, typeid int(4) not null ); insert into book values(1,'tjava',1,1,2) ;insert into b

2020-07-25 17:04:25 561

原创 SQL优化之SQL执行计划分析

分析SQL执行计划查询执行计划 explain + SQL语句 explain select * from tb;结果 id: 1 -- 编号 select_type: SIMPLE -- 查询类型 table: tb -- 表 type: system -- 类型possible_keys: NULL -- 预测用的到的索引 key: NULL -- 实际使用的索引 key_len: NULL -- 实际使

2020-07-24 19:51:42 847

原创 SQL优化之索引机制与性能问题

1.为什么需要SQL优化?不为吃饭,不为工作,单单就是咱SQL写的垃圾!1.1原因分析性能低执行时间等待时间太长SQL语句欠佳(问题的根源在于连接查询)索引失效5.服务器参数设置不合理(缓冲区-线程数)1.2 垃圾SQL语句示例与底层解析过程编写过程 select dinstinct ..from ..join ..on ..where ..group by ...having ..order by ..limit ..解析过程 from .. on.. join

2020-07-24 02:28:22 304

原创 SQL优化之MySQL底层原理

1.MySQL逻辑分层MySQL是一个使用C/S架构分为客户端与服务端1.客户端负责提供SQL语句(CRUD)2.服务端里面主要有三层1.连接层提供客户端连接服的服务(本身不处理SQL语句)2.服务层2.1提供用户使用的接口(处理SQL)2.2提供SQL优化器(MySQL Query Optimzer)(这个优化器不好,可能导致SQL语句混乱)3 .引擎层3.1 提供各种数据存储的方式3.2 InnoDB(事务优先,适合高并发,行锁) 默认3.2 MyISAM(性能优先,表锁

2020-07-24 00:58:15 417

原创 JVM篇-JVM内存模型与类加载机制

1.HotSpot内存模型简图详细图

2020-07-20 22:54:51 141

原创 Redis必知必会-入门篇

Redis1.什么是Redis1.1百度百科说法1.2 Redis定义(No SQL 数据库)Redis是一款高性能的No SQL的数据库,完全开源免费支持数据的持久化(RDB(默认) AOF两种方式)提供多种数据结构的存储支持数据的备份,master-slave(主从模式)模式数据备份1.3 Redis支持的数据类型String (字符串)Hash (hash类型)List (列表类型)4.Set (集合类型)ZSet (Sorted Set 有序集合)

2020-07-20 13:41:58 145

原创 JVM篇-虚拟机的介绍

深入理解JVM

2020-07-20 00:55:07 159 1

原创 关于JSON的那些事儿

关于JSON的详解1、JSON有什么用?​ 随着互联网的高速发展,Web1.0已经逐渐成为了过去,一个新的篇章,冉冉升起,Web2.0,为了能够解决新的需求,并且提升开发效率,降低耦合性…诸如此类的因素。​ 伟大的程序员们将群体,将前后端进行了分离,淘汰的JSP这项技术。​ 但是前后端分离又引申出一个问题,数据交互怎么办?,由此产生了模板引擎(FreeMarker,Thymeleaf),接下来就是重点,模板引擎通过什么来交互数据呢,没错就是Json。2、JSON简介​ 对于Json百度百

2020-06-09 23:52:54 271 1

空空如也

空空如也

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

TA关注的人

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