自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Java正则表达式详细解析

元字符正则表达式使用一些特定的元字符来检索、匹配和替换符合规则的字符串元字符:普通字符、标准字符、限定字符(量词)、定位字符(边界字符)正则表达式引擎正则表达式是一个用正则符号写出来的公式程序对正则表达式进行语法分析,建立语法分析树再根据语法分析树结合正则表达式引擎生成执行程序(状态机),用于字符匹配正则表达式引擎是一套核心...

2019-09-26 16:13:00 205

转载 干货系列性能篇之——序列化

序列化方案Java RMI采用的是Java序列化Spring Cloud采用的是JSON序列化Dubbo虽然兼容Java序列化,但默认使用的是Hessian序列化Java序列化原理SerializableJDK提供了输入流对象ObjectInputStream和输出流对象ObjectOutputStream它们只能...

2019-09-25 17:46:00 272

转载 面试官之问:知道你的接口“QPS”是多少吗?

前言:原作:孤独烟。因修改不当之处欢迎指出!大家好,我是小架架。今天一大早就起来水文章了。这篇文章我个人感觉虽然含金量不是特别大,估计大家大概5分钟左右就能看完!到底是因为什么呢,因为平时干货文章分享得有点多,今天的话就一顿截图写几个命令就搞定了,所以含金量不高。然后,我们来看一下近期有一段聊天记录如下看到这里,不要吃惊,不要惊讶!看下文哦...

2019-09-25 14:03:00 970

转载 Java性能之优化RPC网络通信

服务框架的核心大型服务框架的核心:RPC通信微服务的核心是远程通信和服务治理远程通信提供了服务之间通信的桥梁,服务治理提供了服务的后勤保障服务的拆分增加了通信的成本,因此远程通信很容易成为系统瓶颈在满足一定的服务治理需求的前提下,对远程通信的性能需求是技术选型的主要影响因素很多微服务框架中的服务通信是基于RPC通信实现的...

2019-09-24 19:12:00 298

转载 Spring之 JDBC 异常

JDBC异常抽象Spring会将数据操作的异常转换为DataAccessException解析错误码SQLErrorCodeSQLExceptionTranslatorErrorCode定义org/springframework/jdbc/support/sql-error-codes.xmlclasspath下的sql-error-co...

2019-09-24 19:10:00 245

转载 Java性能之synchronized锁的优化

synchronized / Lock1.JDK 1.5之前,Java通过synchronized关键字来实现锁功能synchronized是JVM实现的内置锁,锁的获取和释放都是由JVM隐式实现的2.JDK 1.5,并发包中新增了Lock接口来实现锁功能提供了与synchronized类似的同步功能,但需要显式获取和释放锁3.Lock同步锁是基于J...

2019-09-21 15:47:00 315

转载 浅谈Java中switch分支语句

前言:在程序中遇到多分支选择的时候,想必大家都喜欢用if...else if...else...语句,尤其是初学者,因为在了解switch语句之前,我也是只会用if...else语句。那么现在看完这篇随笔的介绍后,你们又有了另外一种选择,使用switch语句可以增强代码的可能性,当然switch也不是随随便便就能用的,它也有语法规则的约束,请看下面的阐述。一、sw...

2019-09-20 19:15:00 129

转载 Spring Boot 之异步执行方法

前言:最近的时候遇到一个需求,就是当服务器接到请求并不需要任务执行完成才返回结果,可以立即返回结果,让任务异步的去执行。开始考虑是直接启一个新的线程去执行任务或者把任务提交到一个线程池去执行,这两种方法都是可以的。但是Spring 这么强大,肯定有什么更简单的方法,就 google 了一下,还真有呢。就是使用 @EnableAsync 和 @Async 这两个注解就 ok 了。...

2019-09-20 19:11:00 150

转载 Java性能 -- Lock优化

Lock / synchronizedLock锁的基本操作是通过乐观锁实现的,由于Lock锁也会在阻塞时被挂起,依然属于悲观锁synchronizedLock实现方式JVM层实现Java底层代码实现锁的获取JVM隐式获取lock() / tryLock() / tryLock(timeout, unit) / lockIn...

2019-09-17 15:33:00 162

转载 Java性能 -- 线程上下文切换

线程数量在并发程序中,并不是启动更多的线程就能让程序最大限度地并发执行线程数量设置太小,会导致程序不能充分地利用系统资源线程数量设置太大,可能带来资源的过度竞争,导致上下文切换,带来的额外的系统开销上下文切换1.在单处理器时期,操作系统就能处理多线程并发任务,处理器给每个线程分配CPU时间片,线程在CPU时间片内执行任务CPU时间片是CPU分配给每个线...

2019-09-17 15:31:00 290

转载 Java性能 -- CAS乐观锁

synchronized / Lock / CASsynchronized和Lock实现的同步锁机制,都属于悲观锁,而CAS属于乐观锁悲观锁在高并发的场景下,激烈的锁竞争会造成线程阻塞,而大量阻塞线程会导致系统的上下文切换,增加系统的性能开销乐观锁乐观锁:在操作共享资源时,总是抱着乐观的态度进行,认为自己能够完成操作但实际上,当多个线程同时操作一个共享...

2019-09-17 15:29:00 122

转载 高效并发一 Java内存模型与Java线程(绝对干货)

高效并发一 Java内存模型与Java线程本篇文章,首先了解虚拟机Java 内存模型的结构及操作,然后讲解原子性,可见性,有序性在 Java 内存模型中的体现,最后介绍先行发生原则的规则和使用.在多数情况下让计算机同时去做几件事情,不仅是因为计算机的运算能力强大,还有一个重要的原因是计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘 I/O, 网络通信或...

2019-09-16 16:27:00 122

转载 资深架构师教你String 常量池、 String.itern()

什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。Class文件中的常量池在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储主版本号,再接着是用于存...

2019-09-16 16:25:00 116

转载 深入浅出JVM的锁优化案例

锁优化适应性自旋(Adaptive Spinning)线程阻塞的时候,让等待的线程不放弃cpu执行时间,而是执行一个自旋(一般是空循环),这叫做自旋锁。自旋等待本身虽然避免了线程切换的开销,但它是要占用处理器时间的,因此,如果锁被占用的时间很短,自旋等待的效果就非常好,反之,如果锁被占用的时间很长,那么自旋的线程只会白白消耗处理器资源,带来性能上的浪费。因此,自旋等待的时...

2019-09-16 16:21:00 537

转载 Class文件和JVM的恩怨情仇

类的加载时机现在我们例子中生成的两个.class文件都会直接被加载到JVM中吗??虚拟机规范则是严格规定了有且只有5种情况必须立即对类进行“初始化”(class文件加载到JVM中):创建类的实例(new 的方式)。访问某个类或接口的静态变量,或者对该静态变量赋值,调用类的静态方法反射的方式初始化某个类的子类,则其父类也会被初始化Java虚拟机启动时被标明为启动...

2019-09-16 16:18:00 98

转载 详解及对比创建线程的三种方式

一.Java创建线程的三种方式Java中创建线程主要有三种方式:1.继承Thread类2.实现Runnable接口3.使用Callable和Future1.继承Thead类创建线程(1)继承Thread类并重写run方法(2)创建线程对象(3)调用该线程对象的start()方法来启动线程public class CreateThreadTest { p...

2019-09-12 21:13:00 92

转载 浅析Java中线程组(ThreadGroup类)

Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理。可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示。用户创建的所有线程都属于指定线程组,如果没有显式指定属于哪个线程组,那么该线程就属于默认线程组(即main线程组)。默认情况下,子线程...

2019-09-12 15:57:00 123

转载 简单定义多线程!

1 说到线程,首先来说下进程,以下是进程的定义:进程是操作系统结构的基础,是程序的一次执行,是一个程序及其数据结构在处理机上顺序执行时所发生的活动,是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。简单来说一个任务管理器中列表的一个exe文件就可以理解成进程,如QQ.exe就是一个进程,进程是受系统管理的基本运行单元。1.1 什么是线程?线程是操...

2019-09-12 14:23:00 102

转载 五分钟看懂UML类图与类的关系详解

在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。基本概念类图(Class Diagram): 类图是面向对象系统建...

2019-09-11 21:22:00 173

转载 JAVA集合框架的特点及实现原理简介

1.集合框架总体架构集合大致分为Set、List、Queue、Map四种体系,其中List,Set,Queue继承自Collection接口,Map为独立接口Set的实现类有:HashSet,LinkedHashSet,TreeSet...List下有ArrayList,Vector,LinkedList...Map下有Hashtable,LinkedHash...

2019-09-11 20:19:00 165

转载 详解:Java字符串类型"switch"的底层原理

前言:最近更新得会比较频繁,希望大家见谅哦!也感谢关注我的人,我会更加更加努力去做的!基础我们现在使用的Java的版本,基本上是都支持String类型的。当然除了String类型,还有int、char、byte、short、enum等等也都是支持的。然而在其底部实现中,还是基于 整型的,也就是int、byte、short这些类型。我们先来看一下int的一个简单例...

2019-09-11 18:00:00 147

转载 深入理解负载均衡经典案例

前言闲来无事写篇文章总结下负载均衡。正文负载均衡负载均衡是高可用架构的一个关键组件,主要用来提高性能和可用性,通过负载均衡将流量分发到多个服务器,同时多服务器能够消除这部分的单点故障。当然负载均衡器本身就是一个单点故障隐患,可以考虑文章后面说的负载均衡双机热备或其他方案消除单点故障提高可用性。一个没有使用负载均衡的Web架构一般会长得像这样:...

2019-09-11 15:28:00 244

转载 深入浅出JVM之垃圾收集算法

判断哪些对象需要被回收引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。 但是JVM没有使用此方法,因为此方法无法解决2个对象相互循环引用的问题。可达性分析算法:这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜...

2019-09-11 15:01:00 68

转载 看一下“Dubbo 2.7”的三大新特性

Dubbo 2.7.x 作为 Apache 的孵化版本,除了代码优化之外,还新增了许多重磅的新特性,本文将会介绍其中最典型的三个新特性:一、异步化改造二、三大中心改造三、服务治理增强一、异步支持优化我们知道dubbo协议本身支持三种发送请求方式:单向发送:执行方法不需要返回结果同步发送:执行方法后,等待结果返回,否则一直阻塞.异步发送...

2019-09-10 21:46:00 115

转载 Java中的集合类(List,Set.Map)

1.List1.1 Arraylist 与 LinkedList 区别是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;底层数据结构: Arraylist 底层使用的是 Object 数组;LinkedList 底层使用的是 双向链表 数据结构插入和删除是否受元素位置的影响: ① ArrayList 采用数组存储,所...

2019-09-10 20:32:00 102

转载 看懂什么是环境变量!

前言相信大家初学java时,肯定会涉及到“配置环境变量”,而在网上搜索大多是教我们如何如配置,真正说明为什么要去配置环境变量的不多。不管在windows里还是liunx里都少不了环境变量的配置,一键Copy是解决不了问题的,还可能会出现各种各样的问题,如果我们搞清楚原理,就会方便许多。今天我们就以java环境变量来了解,什么是环境变量以及为什么要配置。...

2019-09-10 18:01:00 198

转载 来看一下Java中“-”与equeals的区别

简介:====是比较两个变量的值,如果是基本数据类型,那么就是比较的基本数据的大小值情况一int a=1;int b=1;System.out.println(a==b);以上图中:==比较的就是上面两个内存块中的值,都是1,所以是true但是如果存储的是引用类型,其实比较的还是变量本身所存储的值,我们都...

2019-09-10 16:25:00 90

转载 Java内存泄漏解析!

前言:内存管理是Java最重要的优势之一,你只需创建对象,Java垃圾收集器会自动负责分配和释放内存。但是,情况并不那么简单,因为在Java应用程序中经常发生内存泄漏。本章会说明什么是内存泄漏,为什么发生,以及如何防止它们。什么是内存泄漏?内存泄漏的定义:应用程序不再使用的对象,垃圾收集器却无法删除它们,因为它们正在被引用。为了理解这个定义,我们需要了解对象在内存中的...

2019-09-10 14:28:00 65

空空如也

空空如也

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

TA关注的人

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