自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (4)
  • 收藏
  • 关注

原创 JVM优化-如何减少FullGC

面试,实战利器。优化的重点就是尽量不要让对象进入老年代。如果对象进不去老年代,想Full GC都难。这是JVM调优的重点。(当然了引起fullgc的还有元空间满了 or 堆外空间满了)

2022-05-23 17:23:20 5297

原创 Java线程池—从源码看ThreadPoolExecutor(下)

该篇算是对Java线程池解析(上)的一个补充,从源码的角度分析了下ThreadPoolExecutor。建议先看下Java线程池解析(上)在看该篇,这样会顺畅不少。如果文中有任何疑问欢迎留言讨论。觉得好的话欢迎转发评论。我们先看下类图结构:线程池类图一.线程池成员变量ctl是Integer原子变量类型,使用一个变量同时记录线程池状态和线程池中工作线程(worker线程)个数,java中int变量是32位,如下面代码所示,其中高三位表示线程池状态,后边的29位用来记录...

2020-05-09 19:23:19 8449 4

原创 redis 集群简述

一.数据分布1.常见的分区规则有:哈希分区:离散度好,数据分布和业务无关,无法顺序访问 顺序分区:离散度易倾斜,数据分布和业务相关,可顺序访问2.哈希分区的规则有:节点取余: 缺点:当节点数量变化时,如扩容或收缩节点,数据节点的映射关系需要重新计算,会导致数据重新迁移 扩容时通常采用翻倍扩容,这样只需迁移50%数据 一致性hash分区 缺点:增加或减少节点时影响相邻...

2020-04-30 17:15:02 973

原创 Java读写锁—ReentrantReadWriteLock 源码解析

一、读写锁简介 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了。 针对这种场景,JAVA的并发包提供了读写锁ReentrantReadWriteLock,它表示两个锁,一个是读操作相...

2020-04-26 15:24:26 733

原创 ReentrantLock 源码解读之lock和unlock过程

文中都是自己总结的,如果哪里逻辑不对或者写的不清楚的还请评论区中指出。前言:本篇主要基于源码来解读ReetrantLock加锁和解锁的过程,reetrantLock的主体思想就是通过对锁status的加减操作来实现的,如果当前线程获得当前锁就把status+1,再次获取就继续+1,释放锁就是-1; 如果加锁的时候发现锁status不等于0就把当下线程放入到一个FIFO队列(就是一个双向链...

2019-10-08 01:34:00 1936 8

原创 Redis 主从复制的原理—这一篇就够了

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。主从模型还支持树状模型,使得从节点不但可以复制主节点,同时可以为作其他从节点的继续向下层复制一...

2019-08-23 14:24:42 1001 1

原创 Redis 持久化,超详细吐血总结(7)

我们熟知redis是内存数据库,它将自己的数据存储在内存里面,如果如图redis进程退出或突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。Redis 的持久化机制有三种,第一种是快照(RDB),第二种是 AOF 日志,第三种是混合持久化。快照是一次全量备份,AOF 日志是连续的增量备份。快照是内存数据的二进制序...

2019-07-10 11:06:34 7738 4

原创 redis 命令总结

全局: redis-cli,redis客户端;远程例子 redis-cli -h 127.0.0.1 -p 6379 -a "sendinfo" del [key];exists [key]; Expire key time;为key设置过期时间,time单位为秒 pexpire ...;和expire命令相同,只是过期时间单位为毫秒,pttl..相对应的命令都加p ...

2020-05-27 23:45:19 610

原创 CountDownLatch 源码解读

什么是CountDownLatchCountDownLatch称之为闭锁,它可以使一个或一批线程在闭锁上等待,等到其他线程执行完相应操作后,闭锁打开,这些等待的线程才可以继续执行。确切的说,闭锁在内部维护了一个倒计数器。通过该计数器的值来决定闭锁的状态,从而决定是否允许等待的线程继续执行。常用方法public CountDownLatch(int count):构造方法,count表示...

2019-11-13 13:17:59 274

原创 Redis 内存淘汰策略

Redis默认无限使用服务器内存,为防止极端情况下导致系统内存耗尽,建议所有的Redis进程都要配置maxmemory。Redis的内存回收机制主要体现在以下两个方面:删除键(主动或者删除到达过期时间的键) 内存使用达到maxmemory上限时触发内存溢出控制策略。一、删除过期键对象Redis所有的键都可以设置过期属性,内部保存在过期字典中。由于进程内保存大量的键,维护每个键精准的...

2019-07-26 13:12:31 463

原创 volatile说明

本文简叙:1.诡异的死循环2.java内存模型简述及JMM对volatile变量定义的特殊规则3.通过与synchronized对比来进一步说明volatile作用一:诡异的死循环在说volatile之前,先来个小例子来引入今天得话题。图1 如图1,在eclipse jdk764位环境下执行以上代码会出现诡异得死循环。结果如右图所示。看今天得话题也知道只要在4...

2019-07-19 10:44:53 999 2

原创 jvm学习总结—java内存区域(1)

本文以学习总结为主,这一篇主要是了解下java各个内存区域的作用。注:文中大部分摘自《深入理解Java虚拟机(第二版)》java与c++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人想出来。目录:1.运行时数据区域1.1 程序计数器1.2 Java虚拟机栈1.3 本地方法栈1.4 Java堆1.5 方法区2 HotSpot 对象的...

2019-07-19 10:36:25 243

原创 Redis ziplist(压缩列表)(6)

目录:1.什么是ziplist2.散列表和ziplist3.有序集合和ziplistRedis 为了节约内存空间使用,zset 和 hash 容器对象在元素个数较少的时候,采用压缩列表 (ziplist) 进行存储。什么是ziplist?ziplist是一块连续的内存空间,元素之间紧挨着存储,没有任何冗余空隙。它的设计目标就是为了提高存储效率。ziplist可以用于存储字符...

2019-07-03 17:27:26 3949

原创 Redis 集合(set)实现(4)

set基本介绍Redis里的set结构类似于java里的HashSet,实现上基本相同,它包含的元素无序,且不能重复,Redis里的set结构还实现了基础的集合并、交、差的操作。hashSet底层是hashMap现的,value存的是一个object对象。redis set底层实现为了节省内存随着元素类型是否是整型以及添加的元素的数目多少,而有所变化。概括来讲,当set中添加的元素都是整型且元...

2019-07-02 17:54:23 1729

原创 redis 有序集合内部实现(5)

本篇是redis系列的第四篇。本文主要围绕redis 有序集合 结构展开讨论Redis中的sorted set,是在skiplist, dict和ziplist基础上构建起来的:当数据较少时,sorted set是由一个ziplist(另起一篇文章单独介绍)来实现的。 当数据多的时候,sorted set是由一个叫zset的数据结构来实现的,这个zset包含一个dict + 一个skip...

2019-06-28 10:33:46 629

原创 redis数据结构 (3)——字典

dict是一个用于维护key和value映射关系的数据结构 . Redis的一个database中所有key到value的映射,就是使用一个dict来维护的,key 是对象的名称,value 是各种不同的对象,所有的对象都挂在一棵字典上。除了容纳所有对象的主干字典外,还有容纳所有带过期时间的对象的过期主干字典,它的 key 是对象的名称,value 是对象的过期时间戳。typedefstr...

2019-06-20 19:48:14 743

原创 Redis数据结构(2)——列表

列表内部编码:ziplist(压缩列表):当列表元素个数小于 list-max-ziplist-entries 配置(默认512个),同时列表中每个元素的值都小于list-max-ziplist-value配置时(默认64个字节),redis会选用ziplist来作用列表内部实现(3.2版本前) linkedlist(双向链表):当列表类型无法满足ziplist条件时(3.2版本前) ...

2019-06-14 14:16:16 308

原创 Redis数据结构(1)——redisObject对象和string

前言该系列重点讲解Redis在内存中的数据结构实现(暂不涉及基础api)。Redis本质上是一个数据结构服务器(data structures server),以高效的方式实现了多种现成的数据结构,研究它的数据结构和基于其上的算法,对于我们自己提升局部算法的编程水平有很重要的参考意义。当我们在本文中提到Redis的“数据结构”,可能是在两个不同的层面来讨论它。第一个层面,是从使用者的角度...

2019-04-04 18:10:05 1389

原创 Java线程池解析(上)

一.什么是线程池二.jdk提供的线程池以及其功能1.Executor简介2.jdk提供的线程池三.线程池的内部实现1.workQueue(任务队列)2.拒绝策略3.自定义线程创建ThreadFactory4.扩展线程池(线程的开始结束,异常处理等~~~)例子!正文:一:1.简而言之,使用线程池后创建线程变成了从线程池获取线程,关闭线程变成了向池子归还...

2017-06-20 21:39:07 1281

深度学习Java语言实现

深度学习Java语言实现

2017-08-19

Linux性能优化

Linux性能优化

2017-08-19

MySQL性能调优与架构设计--全册

a

2017-04-06

MySQL LVS+Keepalived+MHA 高可用群集 应用部署操作手册

MySQL LVS+Keepalived+MHA 高可用群集 应用部署操作手册

2017-04-06

空空如也

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

TA关注的人

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