自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring循环依赖

循环依赖首先要清楚Spring中bean的注入方式有:构造方法注入、Setter注入、静态工厂注入,常用的主要是前两种循环依赖指的是BeanA依赖于BeanB,BeanB依赖于BeanC,BeanC有依赖于BeanA,从而构成了一个环的情景。对应于bean的注入方式,也就有构造方法注入循环依赖,Setter注入循环依赖,静态工厂的不考虑。对于bean的作用域通常又有单例和多例区分...

2019-12-22 16:35:26 208

原创 Redis高可用

刚参加工作,负责的项目责任田就是系统容灾配置与升级,也算是为我接触高可用打下了一些基础。我们的项目主要用于管理通信设备,某些局点由于网络以及电路不稳定,单节点提供服务很难满足客户需求,因此提出了双节点的容灾解决方案。当然在任意时刻,也只有一个节点对外提供服务,而另一个节点作为备节点,要能够自动同步主节点数据库数据与配置数据,而且要在主节点宕机时,能够通过故障转移,将备节点升主,继续对外提供服务,从...

2019-08-21 22:58:47 168

原创 线程池

通过一个简单的例子说明线程池的基本原理与ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue的差异。package com.larry.learning.threadpool;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.B...

2019-08-11 13:31:00 151

原创 Redis持久化二

1、简介持久化是支撑Redis高可用的重要基础。试想如果Redis不支持持久化,不管你部署的Redis是单点、主从、哨兵还是集群,只要系统掉电或者发生其他灾难,Redis中的数据就丢失了。Redis持久化包括RDB和AOF两种方式。2、RDB保存当前内存数据的快照。2.1 触发方式:手动、自动手动触发:执行save或者bgsave命令自动触发:配置save m n手动触...

2019-07-20 00:21:03 148

原创 几种数据分布算法

一、hash算法hash算法的实质是对key进行hash,然后将hash后的值对节点个数取模。其运用场景包括hashmap、数据库分库分表等。相对来说,hash算法实现较简单。但是也存在一些问题,比如当节点个数扩容或者减少,那么存在原来节点中的所有数据需要重新对新节点个数取模,分配新的节点位置。如下图所示,假设当前有三个节点,现在有三个key,通过hash(key)%3后,key1路由到nod...

2019-07-07 16:03:25 3122

原创 Redis持久化

Redis是基于内存的非关系型数据库。数据默认保存在内存中,如果redis挂掉,那么所有的数据都会丢失。数据持久化的意义就在于遇到这种情况时,能够从磁盘或者其他备份恢复数据,将损失降到最低。Redis的持久化包括两种:RDB和AOF。1、RDBRDB,也就是快照,保存的是某一个时刻Redis内存中的所有数据。要注意的是,Redis只会保存一份快照文件,比如,在时刻1生成快照文件RDB1...

2019-07-01 21:15:50 107

原创 记一次渗透测试CS架构产品客户端创建用户机制抓包,通过peach工具重放报文绕过客户端直接创建用户的问题定位。

1、背景该产品基于CS架构设计,可以通过管理员账户客户端创建系统用户。首先通过wireshark抓取了登陆到创建用户的整个报文,并将报文解密,配置peach发包工具,模拟管理员登陆客户端并创建其他用户的功能。2、现象当管理员用户在线的时候,peach工具能够成功发包创建用户。而管理员用户不在线时,peach工具发包无法创建用户。也就是说peach工具复用了已经登陆成功的管理员用户ses...

2019-03-16 21:45:36 2498

转载 Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)

一、重量级锁  上篇文章中向大家介绍了Synchronized的用法及其实现的原理。现在我们应该知道,Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的。但是监视器锁本质又是依赖于底层的操作系统的Mutex Lock来实现的。而操作系统实现线程之间的切换这就需要从用户态转换到核心态,这个成本非常高,状态之间的转换需要相对比较长的时间,这就是为什么Synchron...

2019-03-10 20:10:26 89

转载 Java并发编程:synchronized及其实现原理

一、synchronized的基本使用  synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,synchronized总共有三种用法:  (1)修饰普通方法  (2)修饰静态方法  (3)修饰代码块...

2019-03-10 20:04:30 94

转载 Java对象头

一、Java对象头介绍HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。HotSpot虚拟机的对象头(Object Header)包括两部分信息,第一部分用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等...

2019-03-10 19:53:44 135

原创 JDK1.8 ConcurrentHashMap扩容实现原理

1.8中的concurrentHashMap扩容机制是无锁并发的,即支持多线程同时来对旧哈希数组扩容。那么它怎么保证在多线程场景下的线程安全呢?具体分析: private final void transfer(Node<K,V>[] tab, Node<K,V>[] nextTab) { //计算stride,与运行环境CPU个数有关,至少是16 ...

2019-02-20 22:12:12 2017

原创 工厂模式

工厂模式由三组对象构成:抽象产品,具体产品,实现具体产品的工厂。三者的关系是1、抽象产品定义了接口2、具体产品实现或者是继承抽象产品并实现了抽象产品定义的接口3、工厂持有抽象产品引用,并且知道具体产品,并且定义了获取具体产品的接口以一个生产手机的小demo来展示工厂模式,其UML类图如下:     1、产品接口package factoryDesignPattern;...

2019-02-18 22:39:46 127

原创 volatile

目录一、volatile的特性二、volatile的内存语义三、volatile实现原理Java并发有三大特性:1)可见性,即一个线程中对共享变量操作的结果对另一个线程看见;2)有序性,多线程环境下执行的结果与顺序执行的结果一致;3)原子性,即一组操作要么全部执行完毕,要么都不执行。为了保证多线程环境下,对共享变量的访问不存在竞争,需要通过同步来保证线程在访问共享变量时是顺序执...

2019-01-30 22:26:36 197

原创 Java并发体系

并发是Java中最重要又比较有难度的内容,想要掌握这部分内容需要很大的功夫。Java并发体系主要包括7部分内容,如下图所示。后续将深入学习探讨这些内容。Java并发体系...

2019-01-30 21:12:23 197

转载 如何在windows平台下使用hsdis与jitwatch查看JIT后的汇编码

本文转自:https://www.cnblogs.com/stevenczp/p/7975776.html 1. 安装hsids这一步比较麻烦,需要提前安装cygwin,以及下载openjdk的源码具体步骤请参考下面的两篇文章How to build hsdis-amd64.dll and hsdis-i386.dll on Windows在64位Windows上编译hsd...

2019-01-28 21:15:45 287

原创 HashMap实现原理

目录一、hash函数实现二、HashMap内部哈希数组的长度为什么要取2的幂三、哈希数组的扩容1、什么时候触发扩容?2、扩容做什么事情?1)新hash数组初始化2)已存储键值对重新散列四、HashMap存储原理1、put操作1)hash数组索引位置为null2)索引位置第一个节点key与要存储的键值对key相等3)要存储的位置已经是树节点4)普通...

2019-01-27 22:10:04 811

原创 List和Set

目录一、List和Set比较二、List 1、ArrayList2、LinkedList 三、Set一、List和Set比较List和Set对比 List Set 基于数组或者双链表实现 基于map实现 允许重复元素 不允许重复元素 支持FailFast机制 非线程安全 二、List ArrayList和LinkedList是...

2019-01-23 20:54:42 169

原创 Java中三大常用容器体系

目录一、Java中三种容器区别二、容器体系一、Java中三种容器区别Java中的容器类型包括:List、Set和Map。三种容器的区别:Java中三大容器区别 List Set Map 可以存储重复元素 不可以存储重复元素 键值对方式存储,存储的键不能重复 基于数组或者链表实现 基于Map实现 基于哈希表或者红黑色实现 二、容器...

2019-01-19 17:12:07 2680

原创 Comparable和Comparator

目录一、Comparable二、Comparator Comparable和Comparator都表示对类型进行比较。但是Comparable表示的是某个类型本身具有比较的能力,而Comparator侧重于类型本身无比较能力,但是我们可以通过外部定义其可以通过某种规则进行比较。一、ComparableComparable是接口,位于java.lang包中。JDK中对Compar...

2019-01-19 16:11:48 353

原创 FailFast机制

目录FailFast机制的定义FailFast机制的定义Java中对非线程安全的容器的迭代器进行了限制。JDK中具体描述如下:structurally modified at any time after the iterator is * created, in any way except through the iterator's own * {remove()}  ...

2019-01-16 21:20:37 203

原创 深拷贝与浅拷贝

目录一、clone的条件二、浅拷贝和深拷贝 三、如何实现浅拷贝和深拷贝Object基类中声明了一个clone()方法,用于实现对象的拷贝。在Java中,所有对象都是Object的子类,因此,都可以通过clone()方法创建新的类型实例。但是Object类中的clone()方法声明为protected,不能直接调用。子类要调用Object类中的clone()方法通常是重写clone(...

2019-01-16 21:04:09 116

原创 包装类型

目录一、体系二、内部实现原理一、体系包装类型对应8种基本数据类型:byte、short、int、long、float、double、char、boolean。其中,除了Boolean与Character类型之外,其余6种类型都继承了Number。  二、内部实现原理JDK推荐使用valueOf方法初始化对应包装类型。包装类型内部分别封装了对应基本类型的域用以存储...

2019-01-14 22:52:36 145

原创 foreach原理

目录一、foreach的作用二、foreach实现原理一、foreach的作用遍历容器或者数组中的元素。从学C语言开始,我们知道可以用循环获取容器中的所有元素,后来接触Java,知道还可以用迭代器获取容器中的所有元素,foreach也是一种遍历容器所有元素的方法。那么foreach是怎么实现的呢?二、foreach实现原理看一个简单的例子:public stati...

2019-01-14 22:26:21 1208

原创 异常

目录一、异常体系二、Throwable三、Error四、ExceptionJava中,异常表示程序运行过程中发生的某种已知或者未知的不正确的行为。这种行为,会影响甚至终止程序的正确运行。在实际编程中,我们会遇到各种类型的异常,接下来由分四部分对异常进行简要的介绍。一、异常体系  在Java中,Throwable是所有异常的父类。根据UML图,我们可知,异常分为Err...

2019-01-13 22:33:59 168

原创 String、StringBuffer、StringBuilder

目录一、String二、StringBuffer与StringBuilder一、String1、特点:不可变2、内部实现原理:内部声明了一个char类型的数组,存储字符串内容。3、重要方法1)hashCode() public int hashCode() {        int h = hash;        if (h == 0 && ...

2019-01-13 21:24:50 88

空空如也

空空如也

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

TA关注的人

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