JAVA

JVM内存模型
JAVA

JVM内存模型

12 0

JVM内存模型可以分为两个部分,如下图所示,堆和方法区是所有线程共有的,而虚拟机栈,本地方法栈和程序计数器则是线程私有的。1.堆(Heap)堆内存是所有线程共有的,可以分为两个部分:年轻代和老年代。下图中的Perm代表的是永久代,但是注意永久代并不属于堆内存中的一部分,同时jdk1.8之后永久代也将被移除。堆是java...

自定义Jackson Serializer实现复杂Json转换
JAVA

自定义Jackson Serializer实现复杂Json转换

9 0

Jackson提供了自定义序列化器的方式,可以很方便的处理我们想要的json格式,例如:我们需要对金额保留两位小数格式化输出一、自定义Serializerpublic class MoneySerializer extends JsonSerializer<BigDecim...

Redis存储机制
JAVA

Redis存储机制

10 0

Redis简介Redis(REmoteDIctionaryServer) 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis与其他key-value缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不...

2020常见JAVA面试题整理(进阶)
JAVA

2020常见JAVA面试题整理(进阶)

48 0

1、jsp9大内置对象request:封装客户端的请求,其中包含来自GET或POST请求的参数;response:封装服务器对客户端的响应;pageContext:通过该对象可以获取其他对象;session:封装用户会话的对象;application:封装服务器运行环境的对象;out:输出服务器响应的输出流对象;con...

如何解决Redis雪崩、穿透、并发等5大难题
JAVA

如何解决Redis雪崩、穿透、并发等5大难题

24 0

缓存雪崩数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。比如一个雪崩的简单过程:1、redis集群大面积故障2、缓存失效,但依然大量请求访问缓存服务redis3、redis大量失效后,大量请求转向到mysql数据库4、mysql的调用量暴增,很快...

红黑树简介之java实现
JAVA

红黑树简介之java实现

20 0

声明本文最后会使用java语言实现红黑树的插入和删除的算法实现,所以本文是站在java的角度来描述红黑树,比如叶子节点会用null表示,而不是nil。红黑树其实是一颗自平衡二叉搜索树,对二叉搜索树不了解的,可以先看《二叉搜索树简介之java实现》这篇文章,下面的内容假定已经了解了二叉搜索树,所以不再重点关注二叉搜索树的...

二叉搜索树简介之java实现
JAVA

二叉搜索树简介之java实现

20 0

声明本文是对二叉搜索树(也叫排序二叉树)的基本介绍,及相关操作说明,最后附有代码说明,本文主要采用的编程语言为java。1.定义二叉搜索树,看字面意,本质就是一个特殊结构的二叉树,按照维基百科的说法:二叉搜索树是带根的二叉树,其内部每个节点都存储一个键(以及可选的关联值),并且每个都有两个不同的子树,通常表示为左和右。...

JDK1.7中HashMap底层实现原理
JAVA

JDK1.7中HashMap底层实现原理

225 0

一、数据结构HashMap中的数据结构是数组+单链表的组合,以键值对(key-value)的形式存储元素的,通过put()和get()方法储存和获取对象。(方块表示Entry对象,横排表示数组table[],纵排表示哈希桶bucket【实际上是一个由Entry组成的链表,新加入的Entry放在链头,最先加入的放在链尾】...

Twitter的分布式自增ID算法snowflake (Java版)
JAVA

Twitter的分布式自增ID算法snowflake (Java版)

280 0

概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存...

java序列化/反序列化xstream、protobuf、protostuff 简单使用
JAVA

java序列化/反序列化xstream、protobuf、protostuff 简单使用

715 0

背景        项目中http通信离不开对象的序列化和反序列化,通过序列化技术,可以夸语言实现数据的传输,例如把一个对象序列化后的二进制数据、xml格式数据存在文本文件,下次通过读取文件,然后反序列化一下即可重新生成该对象,抑或通过网络...