自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (1)
  • 收藏
  • 关注

原创 内存溢出和内存泄漏的区别

内存溢出(out of memory)程序运行过程中申请的内存大于系统能够提供的内存,导致无法申请到足够的内存。JAVA堆溢出异常测试创建的OOMObject对象太多,在进行垃圾回收之前对象数量达到了最大堆的容量限制。/** * VM Args:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError * * @author bright */...

2020-03-21 14:26:06 267

原创 深入理解JVM-CAS原子操作

前言在学习JVM对象创建的时候,碰到一个问题,对象创建在虚拟机中时非常频繁的行为,即使仅仅修改一个指针所指向的位置,在并发情况下也并不是线程安全的,可能出现正在给A对象分配内存的时候,指针还没来得及修改,对象B又同时使用了原来的指针来分配内存的情况,解决这个问题,其中又一个方案,就是使用CAS配上失败重试的方式保证更新操作的原子性。下面我们一起学习以下CAS的原理。乐观锁与悲观锁我们都知道,...

2020-03-18 22:20:21 651

原创 深入理解JVM-自动内存管理

自动内存管理前言Java内存区域与内存溢出异常运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存OutOfMemoryError异常前言从Java的第一个版本诞生到现在已经有二十余年的时间,白驹过隙,沧海桑田,转眼已过了四分之一个世纪,在图1-3所示的时间线里,我们看到JDK的版本已经发展JDK13。这二十多年里诞生过无数与Java相关的产品、技术与标准...

2020-03-18 21:47:08 669

原创 为什么使用消息中间件

文章目录为什么要使用消息中间件使用消息中间件考虑点保证消息高可用防止消息重复消费保证消息的顺序性为什么要使用消息中间件解耦A服务调用B,C服务,后续后其他服务接入地方,A服务始终要改。举个例子:A触发了一个扫码事件,扫完码之后,会有模板推送(调用了B服务)、跳转到某一个页面(调用了C服务)。后面假如你还想产生其他事件,A服务会越调越多,A服务依赖其他服务也会越来越多。而有了消息中间件,我...

2019-07-16 23:16:37 257 1

原创 Pulsar IO之CDC Debezium Connector

文章目录背景DebeziumPulsar IO入门启动MySQL启动Pulsar standaloneDebezium connector订阅Pulsar topic,监听MySQL数据变化修改MySQL数据参考背景在业务系统中,会涉及到多个数据源的数据流转,例如在线系统的数据流转到分析系统、流计算系统、搜索引擎、缓存系统、事件处理系统等。如图所示:Debezium官网地址:https...

2019-07-15 20:55:58 1317 2

原创 并发编程锁原理总结

ReentrantLockReentrantLock主要利用CAS+AQS(AbstractQueuedSynchronizer)队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这个类通过JNI调用CPU底层

2021-05-04 16:00:25 281

原创 synchronized原理和锁膨胀过程

对象头HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。HotSpot虚拟机的对象头(Object Header)包括两部分信息,第一部分用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等等,这部分数据的长度在32位和64位的虚拟机(暂 不考虑开启压缩指针的场景)中分别为32个和64个Bits,官方称它为“Mark Wor

2021-04-26 22:51:20 251

原创 RESTful API设计规范

REST简介在2000年,罗伊·菲尔德(Roy Fielding)提出了代表性状态转移(REST)作为设计Web服务的体系结构方法。REST是一种用于构建基于超媒体的分布式系统的体系结构样式。REST独立于任何底层协议,不一定与HTTP绑定。但是,大多数常见的REST实现使用HTTP作为应用程序协议,并且本指南重点介绍为HTTP设计REST API。使用HTTP的RESTful API的一些主要设计原则URL设计避免在URI中使用动词,应该采用“动词 + 名词”的设计结构。这是因为HTTP动词应足以

2020-05-15 11:39:28 236

java_ee_api

java_ee_api,编写java web项目或者servlet都会用得到java_ee_api,编写java web项目或者servlet都会用得到java_ee_api,编写java web项目或者servlet都会用得到java_ee_api,编写java web项目或者servlet都会用得到

2017-09-16

空空如也

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

TA关注的人

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