自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring 5.x 源码阅读环境构建

目录设备环境搭建gradle环境配置idea下载缺失jar包设备环境系统环境:win10java版本:jdk1.8ide:IntelliJ IDEA已从GitHub拉取spring5.x源代码搭建gradle环境1)下载gardle安装包(官方下载地址:http://services.gradle.org/distributions/注意需要下载4版本...

2019-07-31 11:26:39 210

转载 总线锁定和缓存一致性的问题

转自https://blog.csdn.net/qq_21125183/article/details/80848941随着多核时代的到来,并发操作已经成了很正常的现象,操作系统必须要有一些机制和原语,以保证某些基本操作的原子性,比如处理器需要保证读一个字节或写一个字节是原子的,那么它是如何实现的呢?有两种机制:总线锁定和缓存一致性。我们知道,CPU和物理内存之间的通信速度远慢于CP...

2019-07-17 16:21:21 386

转载 服务熔断和服务降级比较

两者其实从有些角度看是有一定的类似性的:目的很一致,都是从可用性可靠性着想,为防止系统的整体缓慢甚至崩溃,采用的技术手段;最终表现类似,对于两者来说,最终让用户体验到的是某些功能暂时不可达或不可用;粒度一般都是服务级别,当然,业界也有不少更细粒度的做法,比如做到数据持久层(允许查询,不允许增删改);自治性要求很高,熔断模式一般都是服务基于策略的自动触发,降级虽说可人工干预,但在微服务架构...

2019-07-10 11:03:06 1360

原创 深入理解Java虚拟机笔记(十)线程安全与锁优化

文章目录线程安全Java语言中的线程安全1. 不可变2. 绝对线程安全3.相对线程安全4.线程兼容5.线程对立线程安全的实现方法1.互斥同步2.非阻塞同步3.无同步方案锁优化自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁线程安全定义:当多个线程访问一个对象时,如果不用考虑执行线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获...

2019-07-10 11:00:54 221

原创 深入理解Java虚拟机笔记(八)Java内存模型与线程

文章目录概述硬件的效率与一致性Java内存模型主内存与工作内存内存间的交互操作对于long和double型变量的特殊规则原子性,可见性与有序性原子性可见性有序性注意先行发生规则Java与多线程线程的实现1. 使用内核线程实现2.使用用户线程实现3.使用用户线程增加轻量级进程混合实现4.Java线程的实现Java线程调度状态转换概述多任务处理在现代计算机操作系统中几乎已是一项必备的功能了。在许多...

2019-07-10 10:59:05 159

原创 深入理解Java虚拟机笔记(七)晚期(运行期)优化

文章目录概述HotSpot虚拟机内的即时编译器解释器与编译器编译对象和触发条件编译过程client complierserver complier编译优化技术一个例子公共表达式消除数组边界检查消除方法内联逃逸分析概述在部分的商用虚拟机中,Java程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行...

2019-07-10 10:55:15 134

原创 深入理解Java虚拟机笔记(六)早期(编译器)优化

文章目录概述JAVAC编译器解析与填充符号表词法,语法分析填充符号表注解处理器语义分析和字节码生成标注检查数据及控制流分析解语法糖字节码生成Java语法糖的味道泛型与类型擦除自动装箱,拆箱和遍历循环条件编译概述Java语言的"编译器"其实是不确定的一段过程,可能是.java文件变为.class文件的过程也可能是字节码变成机器码的过程还可能是源代码直接编译为机器码的过程。前端编译器:Sun的...

2019-07-10 10:52:53 117

原创 深入理解Java虚拟机笔记(五)虚拟机字节码执行引擎

文章目录概述运行时栈帧结构局部变量表情况1情况2情况3回收的原因还需注意的要点操作数栈动态链接方法返回地址方法调用解析分派静态分派动态分派单分派与多分派虚拟机动态分派实现概述从外观上看,所有的Java虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。运行时栈帧结构栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的...

2019-07-10 10:49:45 334

原创 深入理解Java虚拟机笔记(四)虚拟机类加载机制

文章目录概述类加载的时机生命周期被动引用实例示例1示例2示例3注意类加载的过程加载验证文件格式验证元数据验证字节码验证符号引用验证准备解析初始化类加载器双亲委派模型破坏双亲委派模型概述虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制类加载的时机生命周期加载,验证,准备,解析,初始化,使...

2019-07-10 10:47:10 128

原创 深入理解Java虚拟机笔记(三)类文件结构

文章目录无关性基石Class类文件结构的基础魔数和Class文件的版本常量池入口访问标志类索引,父类索引与接口索引集合字段表集合方法表集合属性表集合code属性字节码指令简介字节码与数据类型加载和存储指令指令类型公有设计与私有实现无关性基石无关性有平台无关性和语言无关性。统一的程序存储格式----字节码特定的二进制文件格式----“Class文件”虚拟机不关注Class的来源是什么语...

2019-07-10 10:41:17 83

原创 解释执行和编译执行

Java解释执行和编译执行区别编译执行是利用事先编写好的成为编写程序的机器语言程序,作为系统软件存放在计算机内,当高级语言源程序进入计算机,被这个翻译成目标程序,以完成源码要处理的运算并取得结果解释方式是源程序进入计算机内,解释程序边扫描边解释,逐句输入逐句翻译,计算机一步一步执行,并不产生目标程序JAVA中的区别解释执行:将编译好的字节码一行一行地翻译为机器码执行。编译执行:以...

2019-07-02 09:56:58 812

原创 深入理解Java虚拟机笔记(二)垃圾收集器与内存分配策略

文章目录GC要完成的事情对象已死吗?引用计数法概述问题可达性分析算法基本思路作为GC Roots的对象再谈引用需求种类生存还是死亡回收方法区判断是否废弃常量判断是否无用的类注意垃圾回收算法标记-清除算法不足复制算法内容代价现状标记-整理算法内容分代收集算法HotSpot的算法实现枚举根节点GC时面对的问题解决方法OopMap准确式GC保守式GC安全点概念一般生成位置抢先式中断主动式中断安全区域概念...

2019-07-02 09:43:43 316

原创 SpringCloud学习笔记(一)初识微服务架构

文章目录什么是微服务与单体系统的区别(微服务相对单体系统的优点)服务拆分引发的问题(缺点)如何实施微服务服务组件化智能端点和哑管道去中心化治理去中心化管理数据基础设计自动化容错设计什么是微服务简单来说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务(由单进程演化为多进程),这些服务之间通过基于HTTP的RESTful API进行通信协作。被拆分的每一个小...

2019-05-22 10:23:30 143

原创 深入理解Java虚拟机笔记(一)Java内存区域与内存溢出异常

typora-root-url: 图片文章目录@[toc]运行时数据区域程序计数器作用作用域:线程私有记录内容Java虚拟机栈作用听得比较多的说法局部变量表内存空间分配两种异常状况本地方法栈Java堆目的发展内存回收相关分类Java虚拟机规范规定方法区概述版本变动"永久代"中的垃圾收集抛出的异常运行时常量池概述存储对象动态性抛出异常直接内存概述抛出异常HotSpot虚拟机对象探秘对象的创建类...

2019-05-21 19:52:03 293

原创 Nginx核心技术笔记(一) 初识nginx

文章目录1.Nginx的优点2.主要应用场景3. Nginx出现的原因4. Nginx的组成5.编译属于自己的Nginx源码目录:编译更新安装后目录6. 主要语法规则http指令块7. Nginx命令行8. 搭建静态资源步骤:注意:9. 搭建反向代理10. GoAccess实现可视化并实时监控11. SSL协议相关内容CA公信机构证书类型证书链11 .TLS通讯过程12 . SSL协议握手时Ngi...

2019-05-19 20:17:08 283

转载 HTTPS原理

众所周知,WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于传输的数据进行加密传输目前主流的网站基本上开始默认采用HTTPS作为通信方式,一切的考虑都基于对安全的要求,那么如何对自己的网站配置HTTPS通信,是本文着重介绍的本文的主要内容包括:https加密传输的原理、如何申请https所用的CA证书,...

2019-05-19 17:13:28 139

转载 Apache,Tomcat和Nginx的简单介绍及比较

定义ApacheApache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。其属于应用服务器。Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。(Apche可以支持PHPcgiperl,但是要使用Java的话,你需要Tomcat在Apache后台支撑,将Java请求由Apache...

2019-05-17 20:58:54 107

原创 记跨域的几种解决方法

去年做项目的时候遇到的跨域相关的问题,记下代码以后备用。后台:几种做法任选其一即可public class CorsFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws I...

2019-05-12 21:23:21 219

转载 安装好的nginx如何查看已经安装模块和添加一个未被编译安装的模块

以nginx-gridfs为例./configure --prefix=/apps/nginx/nginx-1.14.2 --add-module=/apps/src/nginx-gridfs1,查看当前nginx编译参数[root@nginx1 nginx-1.14.0]# /usr/local/nginx/sbin/nginx -Vnginx version: nginx/1.1...

2019-05-12 21:05:19 771

原创 数据库表的设计笔记

数据库设计简介优良的设计糟糕的设计减少数据冗余存在大量数据冗余避免数据维护异常存在数据插入,更新,删除异常节约存储空间浪费大量存储空间高效的访问访问数据低效设计步骤需求分析数据库需求的作用点:数据是什么数据有哪些属性数据和属性各自的特点有哪些逻辑设计使用ER图对数据库进行逻辑建模物理设计根据数据库自身的特点把逻辑设计转换为...

2019-04-23 10:53:54 1477

原创 关于对泛型擦除机制的几个测试

测试原因在对泛型擦除机制的学习中,有一些困惑,因此做了几个实验来验证自己所学习的内容是否正确。测试1public class ErasedTypeEquivalence { private void setList(List list){ list.add("1234"); list.add(123); } public static ...

2019-04-22 16:03:38 135

空空如也

空空如也

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

TA关注的人

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