自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 jvm(7)GC算法

回收算法1、标记清除算法标记-清除算法分为标记和清除两个阶段。该算法首先从根集合进行扫描,对存活的对象对象标记,标记完毕后,再扫描整个空间中未被标记的对象并进行回收,如下图所示标记-清除算法的主要不足有两个:效率问题:标记和清除两个过程的效率都不高;空间问题:标记-清除算法不需要进行对象的移动,并且仅对不存活的对象进行处理,因此标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。2、复制

2020-11-09 10:56:24 164

原创 JVM(6)堆

堆JAVA堆内存是如何划分的,如图:JVM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Generation),非堆内存就一个永久代(Permanent Generation)。年轻代又分为Eden和Survivor区。Survivor区由FromSpace和ToSpace组成。Eden区占大容量,Survivor两个区占小容量,默认比例是8:1:1。堆内存用途:存放的是对象,垃圾收集器就是收集这些对象,然后根据GC算法回收。非堆内存用途:永

2020-11-08 18:31:07 161 1

原创 JVM(5)栈

栈是什么1.栈(stack)又名堆栈,一个数据集合,可以理解为只能在一端进行插入或删除操作的列表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。2.栈就是一个桶,后放进去的先拿出来,它下面本来有的东西要等它出来之后才能出来(先进后出)3.栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域,该区域具有FIFO的特性,在编译的时候可以指定需要的Stack的大小。4.栈的基本操作:  进栈(压栈):pus

2020-11-08 12:25:38 130

原创 JVM(4)native 关键字,pc寄存器与方法区

native关键字1.native是什么简单地讲,一个Native Method就是一个java调用非java代码的接口,即调用底层的c 与c++(为了能在那个c,c++横行的年代,不得不能够调用)。换种说法就是,凡是带了native关键字,java语言就作用不到了。2.怎么调用c,c++在jvm中单独开辟了一块内存native method stack,用来标识native方法,native方法通过调用本地方法接口(JNI)来调用本地方法库,即调用c或则c++。3.什么是JNIJNI:java

2020-11-08 11:05:14 821

原创 JVM(3)沙箱安全机制

什么是沙箱?Java安全模型的核心就是Java沙箱(sandbox),什么是沙箱?沙箱是一个限制程序运行的环境。沙箱机制就是将 Java 代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。沙箱主要限制系统资源访问,那系统资源包括什么?——CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。  所有的Java程序运行都可以指定沙箱,可以定制安全策略。组成沙箱的基本组件:字节码校验器(b

2020-11-08 10:38:53 376

原创 JVM(2)类加载器与双亲委派机制

类加载器运行图:类加载器是负责将可能是网络上、也可能是磁盘上的class文件加载到内存中。并为其生成对应的java.lang.class对象。一旦一个类被载入JVM了,同一个类就不会被再次加载。那么怎样才算是同一个类?在JAVA中一个类用其全限定类名(包名和类名)作为其唯一标识,但是在JVM中,一个类用其全限定类名和其类加载器作为其唯一标识。也就是说,在JAVA中的同一个类,如果用不同的类加载器加载,则生成的class对象认为是不同的。类加载的分类当JVM启动时,会形成由三个类加载器组成的初始类加

2020-11-07 19:08:20 137

原创 JVM(1)JVM体系结构

体系结构

2020-11-07 17:42:12 116

原创 ElasticSearch(2) Kibana安装

安装KibanaKibana 是为 Elasticsearch设计的开源分析和可视化平台。你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互。你可以很容易实现高级的数据分析和可视化,以图表的形式展现出来第一步:下载去官网下载即可。下载要与ES版本一致。第二步,安装拆箱即用,解压即可用第三步,启动测试双击bin目录下的kibana.bat文件。默认端口5601,浏览器访问5601即可。第四步,汉化添加配置kibana.yml。默认是英文。i

2020-11-07 17:23:20 100

原创 ElasticSearch(1)ES的安装以及head插件安装

ElasticSearch的安装1.进入官网下载对应版本,我下载的是7.6.1版本。最低jdk环境为1.8.2.开箱即用,下载完毕解压即可3.Elasticsearch 7.6.1 目录结构如下:bin :脚本文件,包括 ES 启动 & 安装插件等等config : elasticsearch.yml(ES 配置文件)、jvm.options(JVM 配置文件)、日志配置文件等等JDK : 内置的 JDK,JAVA_VERSION=“12.0.1”lib : 类库logs : 日

2020-11-06 11:55:24 142

原创 redis(23) 缓存穿透与缓存雪崩

缓存穿透1.概念缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。这里需要注意和缓存击穿的区别,缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。2、

2020-11-05 16:27:40 104

原创 Redis(22)哨兵模式

哨兵模式Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障

2020-11-05 15:08:57 137

原创 Redis(21)主从复制

主从复制在 Redis 复制的基础上,使用和配置主从复制非常简单,能使得从 Redis 服务器(下文称 slave)能精确得复制主 Redis 服务器(下文称 master)的内容。每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并且无论这期间 master 发生了什么, slave 都将尝试让自身成为 master 的精确副本。这个系统的运行依靠三个主要的机制:当一个 master 实例和一个 slave 实例连接正常时, master 会发

2020-11-04 17:18:25 225 1

原创 Redis(20)订阅发布

订阅发布Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:测试开启两个客户端。订阅者订阅一个频道[root@liuqing

2020-11-04 16:12:13 112

原创 Redis(19) redis AOF持久化

AOF(append only file)Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作配置详情1 redis 默认关闭,开启需要手动把no改为yesappendonly yes2 指定本地数据库文件名,默认值为 appendonly.aofappendfilename "appendonly.aof"3 指定更新日志条件(触发

2020-11-04 15:36:52 117

原创 Redis(18)RBD持久化

RBD 持久化详解1、RDB 简介2、触发方式①、配置详解②触发方式3、恢复数据4、停止 RDB 持久化5、RDB 的优势和劣势6、RDB 自动保存的原理图1、RDB 简介由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库要快的多(内存的读写效率远远大于硬盘的读写效率)。但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。

2020-11-04 11:52:39 513

原创 Redis(17)自定义RedisTemplate 实现自定义序列化

RidesTemplateRestTemplate默认是用的jdk序列化,会导致乱码问题,解决方式,自定义序列化即可自定义RidesTemplate配置类编写redistemplate配置类,实现自定义序列化@Configurationpublic class RedisConfig { @Bean @SuppressWarnings("all") public RedisTemplate<String, Object> redisTemplate(Redi

2020-11-03 11:25:59 893

原创 Redis(16) SpringBoot 整合redis

整合redis1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2.配置文件:主要配置信息可以看RedisPropertiesspring.redis.host=主机ip #默认是localho

2020-11-03 00:28:38 118

原创 Redis(15) jedis

jedisJedis是Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis中间件,必须对Jedis熟悉才能写成漂亮的代码使用方式。1.导入依赖 <!--导入jedis的包--> <dependencies> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> &lt

2020-11-02 23:50:20 216

原创 Reddis(14)事务

事务事务可以一次执行多个命令, 并且带有以下两个重要的保证:事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。注意...

2020-11-02 22:37:16 249

原创 Redis(13)三大特殊类型之Bitmaps(位存储)

BitmapsBitmaps是一种数据结构,来操作二进制的位来记录,只有 0 或 1两种状态可以用来统计用户的状态,比如登录状态,打卡状态。三种操作方式:1.添加 取值 统计127.0.0.1:6379> setbit sign 0 0 #添加(integer) 0127.0.0.1:6379> setbit sign 1 0(integer) 0127.0.0.1:6379> setbit sign 2 1(integer) 0127.0.0.1:6379&gt

2020-11-02 20:02:33 130

原创 Redis(12)三大特殊数据类型之 hyperloglogs(基数统计)

Hyperloglogs1.什么是基数集合中不重复元素的个数:A{ a, b ,c ,d ,e c } 集合基数为5.2.什么是Hyperloglogs是一种概率数据结构,用于统计唯一的事物(从技术上讲,这是指估计集合的基数。算法是用内存换取精度的:一个标准误差作为结束的估计值,误差小于1%。最多内存不会超过12k bytes3.统计元素与添加值:pfcount 与 pfadd127.0.0.1:6379> pfadd mykey a b c d e f g i j k(inte

2020-11-02 19:45:12 279

原创 Redis(11)三大特殊数据类型之地理空间(geospatial)

Geospatital1.添加地理位置:geoadd将指定的地理空间位置(经度,纬度、名称)添加到指定的key中。有效的经度从-180度到180度。有效的纬度从-85.05112878度到85.05112878度geoadd chan:city 116.40 39.30 bejing(integer) 1127.0.0.1:6379> geoadd chan:city 121.47 31.23 shanghai(integer) 1127.0.0.1:6379> geoad

2020-11-02 17:55:18 265

空空如也

空空如也

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

TA关注的人

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