自定义博客皮肤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)
  • 收藏
  • 关注

转载 eureka 挂掉后消费者和提供者之间关系

Spring Cloud Eureka 挂掉后消费者和提供者之间关系eureka 服务突然宕机1、如果eureka突然宕机的情况下,会出现什么情况呢,服务之间还能不能正常访问?答案是:**可以**原因:在启动消费者和提供者的时候,eureka注册中心是正常运行的,因此可以将各个消费者和提供者可以正常订阅。当eureka突然宕机的时候,各个提供者和消费者都已经保存有相互间的服务名称与ip映射,所以相互访问没有问题...

2020-08-25 15:37:36 646

原创 Java中字符串的存储方式

Java中字符串的存储方式  Java中的字符串只能位于内存中的两个区域:常量池和Java堆。常量池维护了一个StringTable,它是一个hashtable,以字符串hashcode作为键,字符串引用作为值;Java堆中存储的就是普通的字符串对象。那么如何判断字符串到底位于哪一个区域呢?有以下几种情形。情形一String s = "123";虚拟机在处理字面量"123"时,首先在本地栈中创建字符串"123",随后对其调用本地方法intern()。intern方法的作用是检查StringTabl

2020-08-24 17:07:24 3755 9

原创 Unable to connect to Redis;java.net.ConnectException: Connection refused: no further information

Unable to connect to Redis;java.net.ConnectException: Connection refused: no further information问题:今天使用Spring Boot整合Redis时一直连不上,折腾了一小时总算弄好了关闭防火墙 chkconfig iptables off找到并redis的配置文件redis.conf,我的配置文件在/etc/redis目录下1. 注释bind 127.0.0.12. 修改 protected-mode

2020-07-17 17:14:31 666

原创 Redis--AKF架构

Redis--AKF架构AKF架构由于redis是单进程、单线程、单实例的,所以如果我们只使用一个redis与客户端交互就会带来单点故障、缓存容量、压力等一系列问题,如下图所示基于以上三种问题,人们提出了AKF架构,其中,x轴的扩展为redis的全量镜像,保证当前redis挂掉之后服务依然可以正常提供,而且x轴上的redis实例可以向client提供一些服务,缓解压力x轴的扩展有效的缓解了压力和单点故障的问题,但是依旧没有解决容量的问题,毕竟由于要保持数据一致,其中一个满了,其它的也会满,

2020-07-15 22:44:24 1249 6

原创 Redis--RDB和AOF

Redis--RDB和AOF提出问题假设我们要将内存中的数据持久化到硬盘中,而这个过程需要10分钟,该怎么做?使用阻塞的方式:在持久化过程中停止服务直到持久化完毕。这个方法在开发和维护项目时是可行的,但在项目上线后显然不合适不使用阻塞的方式:服务正常运行的同时向硬盘中写数据,但这显然会带来数据时点混乱的问题,如下图所示。因此,在Redis中,提供了RDB和AOF两种方式保证持久化时数据的一致性。RDB持久化方式核心机制linux中子线程间数据相互隔离linux中的fork()函

2020-07-13 21:29:12 115

原创 Redis--bitmap

Redis--bitmap本文主要描述 redis中bitmap相应函数及使用方法setbit key offset value:以二进制形式设置key-value键值对key:目标主键offset:偏移量value:目标值,只能取0或1示例 :setbit k1 7 1 :0000 0001注意:在redis中,是以字节为单位读取数据的,一个字节8位bitcount key [start end]:取得目标key目标范围内1的个数key:目标主键start:开始位置,最下的下

2020-07-13 18:31:06 129

原创 Redis--安装

Redis--安装一、复制虚拟机二、redis安装三、配置redis服务一、复制虚拟机鉴于我每次都忘记怎么复制虚拟机,决定将整个过程记录下来,以后的自己,别再去百度啦ฅ(๑ ̀ㅅ ́๑)ฅ创建完整克隆(node02:basic)进入/etc/udev目录下,进入70-persistent-net.rules文件中,记录eth1的ATTR进入/etc/sysconfig 目录下,修改network文件,将虚拟机名称修改为新的名称进入/etc/sysconfig/network-script

2020-07-10 22:17:18 101

原创 Spring源码--IOC的初始化过程--03

一、前言最近开始重温Spring,觉得只知道会用是不行的,所以想尝试着结合资料观摩一下源码由于Spring源码非常的多,一步步都看完明显是不现实的,所以只记录自己觉得重要的步骤,其它细枝末节不去纠结本人才疏学浅,以下的总结完全主观,在逐渐学习的过程中也会不断更新表述不合适的地方,如果有错误希望能包涵并指出!二、源码阅读接着02博客,到doLoadBeanDefinitions(inputSource, encodedResource.getResource())doLoadBeanDef

2020-06-27 18:05:35 115

原创 Spring源码--IOC的初始化过程--02

Spring源码--IOC的初始化过程--02一、前言二、源码阅读一、前言最近开始重温Spring,觉得只知道会用是不行的,所以想尝试着结合资料观摩一下源码由于Spring源码非常的多,一步步都看完明显是不现实的,所以只记录自己觉得重要的步骤,其它细枝末节不去纠结本人才疏学浅,以下的总结完全主观,在逐渐学习的过程中也会不断更新表述不合适的地方,如果有错误希望能包涵并指出!二、源码阅读接着01博客,现在到了refresh()方法执行了进入refresh(),首先调用的方法是prepare

2020-06-24 22:05:07 121

原创 Spring源码--IOC的初始化过程--01

Spring源码--IOC的初始化过程--01一、前言二、源码阅读一、前言最近开始重温Spring,觉得只知道会用是不行的,所以想尝试着结合资料观摩一下源码由于Spring源码非常的多,一步步都看完明显是不现实的,所以只记录自己觉得重要的步骤,其它细枝末节不去纠结本人才疏学浅,以下的总结完全主观,在逐渐学习的过程中也会不断更新表述不合适的地方,如果有错误希望能包涵并指出!二、源码阅读debug定位到容器创建位置,进入源码调用了3个参数的构造方法创建ClassPathXmlApplica

2020-06-24 22:04:53 168

原创 MySQL--练习题

MySQL--练习题-- 建表语句-- 建表-- 学生表CREATE TABLE `Student`( `s_id` VARCHAR(20), `s_name` VARCHAR(20) NOT NULL DEFAULT '', `s_birth` VARCHAR(20) NOT NULL DEFAULT '', `s_sex` VARCHAR(10) NOT NULL DEFAULT '', PRIMARY KEY(`s_id`));-- 课程表CREA

2020-06-03 18:54:52 300

原创 MySQL--索引

MySQL--索引基础知识储备局部性原理:CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中时间局部性(Temporal Locality):如果一个信息项正在被访问,那么在近期它很可能还会被再次访问空间局部性(Spatial Locality):在最近的将来将用到的信息很可能与正在使用的信息在空间地址上是临近的磁盘预读(预读的长度一般为页(page)的整数倍)页是存储器的逻辑块,操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,

2020-05-23 19:21:17 158

转载 多线程--ThreadPoolExecutor源码解析

ThreadPoolExecutor源码解析本文由马士兵教育连鹏举老师整理!1、常用变量的解释// 1. `ctl`,可以看做一个int类型的数字,高3位表示线程池状态,低29位表示worker数量private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));// 2. `COUNT_BITS`,`Integer.SIZE`为32,所以`COUNT_BITS`为29private static final int C

2020-05-11 15:05:50 137

原创 多线程--线程池

多线程--线程池线程池是什么: 线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问...

2020-05-11 15:03:27 380

原创 多线程--AQS

多线程--AQS一、AQS详解二、源码阅读一、AQS详解什么是AQSAQS:AbstractQuenedSynchronizer抽象的队列式同步器。是除了java自带的synchronized关键字之外的锁机制。AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包AQS的核心思想是,如果被请求的共享资源...

2020-05-07 15:23:49 236

原创 多线程--volatile

多线程--volatile要想深入了解volatile,首先需要了解缓存一致性协议、指令重排和内存屏障缓存一致性协议由于CPU运行速度很快,内存运行速度很慢,频繁的读取内存中的数据显然效率不高,所以CPU会通过读取缓存行(一行64个字节,因为CPU寄存器就是64个字节)的方式将内存中可能使用的数据读入CPU内部。但在读取缓存过程中别的进程可能会修改数据,这样就会导致数据不一致的问题,...

2020-05-04 11:23:19 185

原创 多线程--synchronized

多线程--synchronized锁的类型:锁从宏观角度上分为悲观锁和乐观锁悲观锁:悲观锁是就是悲观思想,即认为写多,遇到并发写的可能性高,每次去拿数据的时候都认为别人会修改,所以每次在读写数据的时候都会上锁,这样别人想读写这个数据就会block直到拿到锁。java中的悲观锁就是Synchronized,AQS框架下的锁则是先尝试cas乐观锁去获取锁,获取不到,才会转换为悲观锁,如Ret...

2020-05-04 11:20:53 140

原创 多线程--基础

回顾与深入--多线程1、前言2、基础回顾1、前言  今天是2020年4月28日,从大二接触Java到现在也已经快2年了,从JavaSE到高级框架,看起来好像学了很多,但其实仔细想想,我对大部分知识的认知都只停留在表面,只是知道怎么使用而已,甚至由于长时间没有相应的回顾与总结,某些基础的东西也已经想不起来了,填鸭子式的学习终究太过浮躁,所以,接下来的一段时间我希望自己能脚踏实地,打好地基,再去建...

2020-05-03 17:08:35 108

原创 深入理解JVM--G1垃圾收集器

深入理解JVM--G1垃圾收集器吞吐量:吞吐量关注的是,在一定时间内,最大化一个应用的工作量用一段时间内同一个事务(或者任务,请求)完成的次数(tps)来衡量系统吞吐量的好坏对于关注吞吐量的系统,卡顿是可以接受的,因为这个系统关注的是长时间大量任务的执行能力,单次快速的响应不值得考虑响应能力:响应能力指的是一个程序或系统对一个请求能否及时响应,比如:一个桌面UI是否能快速...

2020-04-27 13:10:42 246

原创 深入理解JVM--垃圾回收器

深入理解JVM--垃圾回收器1、垃圾回收主要对象2、垃圾判断算法3、GC算法4、垃圾回收器1、垃圾回收主要对象堆(Heap) :Java虚拟机管理内存中最大的一块堆里面存放对象的实例GC的主要工作区域线程共享堆主要由分代算法(Generational) 分为新生代和老年代新生代(Young Generation)新生成的对象都放在新生代,新生代用复制算法进行GC(理论上,新...

2020-04-24 13:09:29 119

原创 深入理解JVM--JVM结构

深入理解JVM--JVM结构JVM模型:虚拟机栈(JVM Stack):一个线程对应一个JVM Stack,一个JVM Stack中包含一组栈帧(Stack Frame),栈帧是一组数据结构,封装了方法的局部变量表,动态链接信息,方法的返回地址以及操作数栈等信息。 栈帧的结构图:局部变量表(LocalVariableTable):每一个方法都有对应的局部变量表,用于存储方法中的局部...

2020-04-20 17:16:35 132

原创 Mybatis--SqlSession对象创建过程

Mybatis--SqlSession对象创建过程一. 源码阅读二. 文字总结三. 图像总结mybatis是个很方便的框架,其中最重要的无疑就是session对象了。知其然,知其所以然才能不断提高,今天开始尝试阅读源码,掌握更多的知识!当然,本篇皆为个人推测总结,博主才疏学浅,有错误望包涵指出!一. 源码阅读通过Resource加载全局配置文件,并返回一个流对象实例化SqlSes...

2020-01-02 16:38:27 1791

原创 深入理解JVM--字节码文件结构解析

深入理解JVM--字节码文件结构解析在cmd窗口使用javap -verbose 类名称 命令分析一个字节码文件时,将会分析该字节码文件的魔数、版本号、常量池、类信息、类的构造方法、类中的方法信息、类变量与成员变量等信息。魔数:所有的.class字节码文件的前4个字节都是魔数,魔数为固定值:0xCAFEBABE,若魔数不对JVM会认为该字节码文件非法而不去加载魔数之后的4个字节为版本信息,...

2019-11-11 11:06:54 231

原创 深入理解JVM--类加载器深入解析

深入理解JVM--类加载器深入解析JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.class文件缺失或存在错误,类加载器必须在程序首次主动使用该类时才报告错误(LinkageError错误);如果这个类一直没有被程序主动使用,那么类加载器就不会报告错误Java虚拟机结束生命周期的几种情况执行了System.exit();方法程序正常执行完毕程...

2019-10-29 18:13:10 145

原创 深入理解JVM--类加载全过程

深入理解JVM一、类加载器一、类加载器类加载  1.1 在java代码中, 类型的加载、连接与初始化过程都是在程序运行期间完成的    加载: 将磁盘中的class文件加载到内存中    连接:      1. 验证:确保被加载的类的正确性      2. 准备:为类的静态变量分配内存,并将其初始化为默认值( 此时变量的值并不       是代码中的值,而是该变量类型的默认值!如变...

2019-10-25 16:48:36 119

原创 大话设计模式阅读总结(16-)

大话设计模式阅读总结一、状态模式一、状态模式定义:  状态模式(State),当一个对象内在状态改变时允许改变其行为,使这个对象看起来变成了其他类优点:  2.1 将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。  2.2 允许状态转换逻辑与状态对象合成一体,而不是某一个巨大的条件语句块。  2.3 可以让多个环境对象共享一...

2019-09-23 15:56:59 103

原创 大话设计模式总结(1-15章)

大话设计模式读后感一、简单工厂设计模式一、简单工厂设计模式写代码最基本的几个问题  1.1 命名是否规范  1.2 代码是否简洁  1.3 是否有做边缘处理  1.4 代码的可维护性与可拓展性  1.5 代码是否易于复用面向对象设计思维(自己理解)  把一个复杂的问题拆分成许多独立的小问题分开解决,在最后用创建对象的方式将他们相互建立连接,解决最初的问题,这样当代码需要添加或修...

2019-08-31 17:20:51 252

原创 linux学习:环境配置和基本命令

知识点目录一.Linux 简介新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入一.Linux 简介1.发展历...

2019-08-10 22:49:00 251

空空如也

空空如也

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

TA关注的人

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