自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Franco的博客

学习,整理,积累,站在巨人的肩膀上厚积薄发

原创 JVM成神之路-JVM引用模型

本文通过探析Java中的引用模型,分析比较强引用、软引用、弱引用、虚引用的概念及使用场景,知其然且知其所以然,希望给大家在实际开发实践、学习开源项目提供参考。Java的引用对于Java中的垃圾回收机制来说,对象是否被应该回收的取决于该对象是否被引用。因此,引用也是JVM进行内存管理的一个重要概念。Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用C语言那样担心...

2018-10-15 18:41:54 375

原创 JVM成神之路-类加载机制-双亲委派,破坏双亲委派

概述概念虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接时候用的Java类型。类的生命周期类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载。其中验证、准备、解析统称为连接上图中,加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须严...

2018-08-21 09:24:50 6416 3

原创 JVM成神之路-HotSpot虚拟机-编译原理、JIT、编译优化

Java编译原理什么是字节码、机器码、本地代码?字节码是指平常所了解的 .class 文件,Java 代码通过 javac 命令编译成字节码机器码和本地代码都是指机器可以直接识别运行的代码,也就是机器指令字节码是不能直接运行的,需要经过 JVM 解释或编译成机器码才能运行此时你要问了,为什么 Java 不直接编译成机器码,这样不是更快吗?1. 机器码是与平台相关的,也就是操...

2018-08-13 16:02:53 2328 3

原创 JVM成神之路-Java垃圾回收

Java垃圾回收机制为什么要进行垃圾回收?随着程序的运行,内存中存在的实例对象、变量等信息占据的内存越来越多,如果不及时进行垃圾回收,必然会带来程序性能的下降,甚至会因为可用内存不足造成一些不必要的系统异常。哪些“垃圾”需要回收?如果某个对象已经不存在任何引用,那么它可以被回收。什么时候进行垃圾回收?引用计数算法每个对象添加一个引用计数器,每被引用一次,计数器加1,失...

2018-08-02 15:37:53 11865 3

原创 JVM成神之路-Java对象模型

首先我们要知道: 在jvm的内存结构中,对象保存在堆中,而我们在对对象进行操作时,其实操作的是对象的引用。 Java对象包含三个部分一个Java对象可以分为三部分存储在内存中,分别是:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头(包含锁状态标志,线程持有的锁等标志) 实例数据 对齐填充 oop-klass model(...

2018-07-23 15:01:17 3704 1

原创 目录

面向对象:https://blog.csdn.net/w372426096/article/details/82775858拆箱装箱:https://blog.csdn.net/w372426096/article/details/81909792基本数据类型+String:https://blog.csdn.net/w372426096/article/details/82857...

2018-07-09 15:02:31 742 1

原创 JVM成神之路-Java内存模型(JMM)

Java 内存模型基础什么是 Java 内存模型(JMM-共享内存模型)内存模型描述了程序中各个变量(实例域、静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存中取出变量这样的底层细节。(共享变量是存放在堆内存中,对于局部变量等不会在线程之间共享) Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率...

2018-07-03 15:32:05 1686 1

原创 JVM成神之路-Java内存模型概述

为什么要有内存模型在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。内存模型,英文名Memory Model,他是一个很老的老古董了。他是与计算机硬件有关的一个概念。那么我先给你介绍下他和硬件到底有啥关系。CPU和缓存一致性我们应该...

2018-07-03 14:35:17 272 1

原创 JVM成神之路-JVM内存结构

 线程私有程序计数器当前线程所执行的字节码的行号指示器 对于 Java 方法,记录正在执行的虚拟机字节码指令的地址;对于 native 方法,记录值为空(Undefined) 唯一一个Java 虚拟机规范中没有规定任何 OutOfMemoryError 的内存区域Java 虚拟机栈:java方法执行的内存模型   生命周期与线程执行结果相同每个线程都有独自的虚拟机栈,...

2018-06-21 10:58:30 790 3

转载 Java中的常量池之Class常量池

在Java中,常量池的概念想必很多人都听说过。这也是面试中比较常考的题目之一。在Java有关的面试题中,一般习惯通过String的有关问题来考察面试者对于常量池的知识的理解,几道简单的String面试题难倒了无数的开发者。所以说,常量池是Java体系中一个非常重要的概念。谈到常量池,在Java体系中,共用三种常量池。分别是字符串常量池、Class常量池和运行时常量池。本文是《好好说说Java中的常量池》系列的第一篇,先来介绍一下到底什么是Class常量池。什么是Class文件在Java代码的

2020-05-19 19:54:09 85

原创 Java对象的内存分配过程是如何保证线程安全的?

JVM内存结构,是很重要的知识,相信每一个静心准备过面试的程序员都可以清楚的把堆、栈、方法区等介绍的比较清楚。上图,是一张在作者根据《Java虚拟机规范(Java SE 8)》中描述的JVM运行时内存区域结构画的。很多人都知道Java对象是在堆内存中分配空间的(JIT优化除外),也知道内存分配过程中是线程安全的,那么虚拟机到底是如何保证线程安全的呢?本文就来简单介绍一下。1...

2020-04-14 09:40:09 75

原创 MySQL 百万数据量分页查询方法

方法1: 直接使用数据库提供的SQL语句 语句样式:MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N 适应场景:适用于数据量较少的情况(元组百/千级) 原因/缺点:全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回1,2,3,另外的一次返回2,1,3). Limit限制的是从结果集的M位置处取出N条输出,其余抛弃....

2020-04-14 09:27:59 65

转载 各种Java加密算法-非对称加密

RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。 这种加密算法的特点主要是密钥的变化,上文我们看到DES只有一个密钥。相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了。RSA同时有两把钥 匙,公钥与私...

2020-03-12 15:21:28 1031

转载 各种Java加密算法-对称加密

如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) HMAC(Hash Message Authentication Code,散列消息鉴别码) 复杂的对称加密(DES、PBE...

2020-03-12 15:20:00 38

原创 Java问题排查工具单命令单

tail最常用的tail -ftail-300fshopbase.log#倒数300行并进入实时监听文件写入模式grepgrepforestf.txt#文件查找grepforestf.txtcpf.txt#多文件查找grep'log'/home/admin-r-n#目录下查找所有符合关键字的文件catf.txt|grep-i...

2020-03-09 09:54:10 59

原创 工作感悟

做事:“价值牵引,技术驱动”; 做人:“成就业务,成就他人”创造用户价值和商业价值并不是孤立的,对于商业企业来说,需要可持续发展,需要创造有商业价值的用户价值,技术是实现这个目标的最有力武器.做到对技术的深度理解;对用户价值和商业价值有深度理解,做好价值域到技术域的链接.避免拿锤子找钉子.推荐方法论:大胆假设,最小代价快速验证,一旦验证通过Allin,复盘成就业务,成就他人,...

2020-01-13 20:51:15 81

原创 分布式锁-这一篇全了解(Redis实现分布式锁完美方案)

前言在某些场景中,多个进程必须以互斥的方式独占共享资源,这时用分布式锁是最直接有效的。随着技术快速发展,数据规模增大,分布式系统越来越普及,一个应用往往会部署在多台机器上(多节点),在有些场景中,为了保证数据不重复,要求在同一时刻,同一任务只在一个节点上运行,即保证某一方法同一时刻只能被一个线程执行。在单机环境中,应用是在同一进程下的,只需要保证单进程多线程环境中的线程安全性,通过 JAV...

2019-12-31 12:11:29 1436

原创 成神之路 第015期。

学习Java中的序列化知识,学习时间两周,学习完请写下你的学习笔记。参考资料:什么是序列化?有哪些应用场景。链接:https://t.zsxq.com/AaieuJq 什么是反序列化?链接:https://t.zsxq.com/bUBqRFu Java中如何实现序列化和反序列化。链接:https://t.zsxq.com/URfAmi2 Serializable 和 Exter...

2019-12-20 11:34:55 45

原创 并发相关-这一篇全了解

什么是并发?什么是并行?解: 参考:深入理解Java并发编程(一):到底什么是线程安全-HollisChuang's Blog什么是进程?什么是线程?解:参考:深入理解Java并发编程(一):到底什么是线程安全-HollisChuang's Blog类变量、成员变量和局部变量分别是什么?哪个是共享变量?解: Java中共有三种变量,分别是类变量、成员变量和局部变量。他们分别存放...

2019-12-20 11:31:35 192

原创 @ConfigurationProperties这一篇全了解

在编写项目代码时,我们要求更灵活的配置,更好的模块化整合。在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值使用 @ConfigurationProperties 配置模块假设我们正在搭...

2019-12-19 10:35:29 215

转载 Mybatis-Configuration-详解

ConfigurationMyBatis的初始化会执行SqlSessionFactoryBuilder的中build()方法,build方法又会调用XMLConfigBuilder()的内部parse()方法进行加载配置,所以我们先看一下parse()的源码:public Configuration parse() { if (parsed) { throw new Build...

2019-11-25 16:01:37 88

原创 模拟面试题

以下是一份3年的简历内容,其中软件技能部分,大概会问以下问题,欢迎各位一起回答一下。『熟悉消息中间件RabbitMq的使用及其实现原理。』 项目中使用过Rabbitmq,是什么场景使用的?不用的话能不能解决问题?Rabbitmq和其他的同类消息中间件相比有什么优缺点吗? Rabbitmq如何保证不丢数据? 如何保证消息的消费不会重复? 什么是业务幂等,什么是请求幂等,你们采用的...

2019-11-12 20:49:19 148

原创 Springboot中Filter,Interceptor执行顺序

Filter优先与Interceptor执行;Interceptor执行顺序:本地配置文件(@Configuration)先执行,然后是引用jar包中的配置文件,然后是配置文件外使用注解的Interceptor.其中配置文件中执行顺序是按照InterceptorRegistry注册的顺序...

2019-11-04 09:12:12 707

转载 url中的jsessionid所引起的问题和解决

jsessionid所引起的问题在Spring MVC当使用RedirectView或者"redirect:"前缀来做重定向时,Spring MVC最后会调用:response.sendRedirect(response.encodeRedirectURL(url));对于IE来说,打开一个新的浏览器窗口,第一次访问服务器时,encodeRedirectURL()会在url后面附加上一段js...

2019-09-06 08:59:20 1106

原创 【成神之路】es搜索相关面试题

es的分布式架构原理能说一下么(es是如何实现分布式的啊)?https://www.cnblogs.com/daiwei1981/p/9403970.htmles写入数据的工作原理是什么啊?es查询数据的工作原理是什么啊?https://www.cnblogs.com/daiwei1981/p/9411482.htmles在数据量很大的情况下(数十亿级别)如何提高查询效率啊?h...

2019-05-30 15:44:09 2234

原创 【成神之路】开放设计编程相关面试题

性能指标有哪些 PV,UV,QPS;响应200,500指数如何发现性能瓶颈 Kibana,Cat等跟踪,健康检查工具性能调优的常见手段 架构上:微服务话,水平拆分,垂直产分数据库上优化查询,代码优化说说你在项目中如何进行性能调优 慢请求;慢查询说说你在项目中使用过的UML图 你如何考虑组件化、服务化、系统拆分 秒杀场景如何设计 说说你的开发流程...

2019-05-27 18:44:15 202

原创 【成神之路】MQ消息中间件相关面试题

为什么是消息队列?消息队列使用的场景介绍和作用; 解耦,异步操作业务-提高性能吞吐量,削峰限流面临的问题:系统可用性降低:系统引入的外部依赖越多,越容易挂掉,本来你就是A系统调用BCD三个系统的接口就好了,人ABCD四个系统好好的,没啥问题,你偏加个MQ进来,万一MQ挂了咋整?MQ挂了,整套系统崩溃了,你不就完了么。系统复杂性提高:硬生生加个MQ进来,你怎么保证消息没有重复消费?怎...

2019-05-27 18:21:48 2707

原创 【成神之路】Netty相关面试题

为什么选择 Netty使用JDK自带的NIO需要了解太多的概念,编程复杂,一不小心bug横飞Netty底层IO模型随意切换,而这一切只需要做微小的改动,改改参数,Netty可以直接从NIO模型变身为IO模型Netty自带的拆包解包,异常检测等机制让你从NIO的繁重细节中脱离出来,让你只需要关心业务逻辑Netty解决了JDK的很多包括空轮询在内的bugNetty底层对线程,selecto...

2019-05-21 11:32:38 2011

原创 [Netty]LengthFieldBasedFrameDecoder

作者:简书闪电侠链接:https://www.jianshu.com/p/a0a51fd79f62拆包的原理关于拆包原理的上一篇博文 netty源码分析之拆包器的奥秘 中已详细阐述,这里简单总结下:netty的拆包过程和自己写手工拆包并没有什么不同,都是将字节累加到一个容器里面,判断当前累加的字节数据是否达到了一个包的大小,达到一个包大小就拆开,进而传递到上层业务解码handler之...

2019-05-21 10:03:55 120

原创 [Netty]拆包器的奥秘

作者:简书闪电侠链接:https://www.jianshu.com/p/dc26e944da95为什么要粘包拆包为什么要粘包首先你得了解一下TCP/IP协议,在用户数据量非常小的情况下,极端情况下,一个字节,该TCP数据包的有效载荷非常低,传递100字节的数据,需要100次TCP传送,100次ACK,在应用及时性要求不高的情况下,将这100个有效数据拼接成一个数据包,那会缩短到一个...

2019-05-21 10:02:53 171

原创 [Netty]writeAndFlush全解析

作者:简书闪电侠链接:https://www.jianshu.com/p/feaeaab2ce56前言在前面的文章中,我们已经详细阐述了事件和异常传播在netty中的实现,(netty源码分析之pipeline(一),netty源码分析之pipeline(二)),其中有一类事件我们在实际编码中用得最多,那就是 write或者writeAndFlush,也就是我们今天的主要内容主要内容...

2019-05-21 10:01:24 1717

原创 [Netty]pipeline(二)

作者:简书闪电侠链接:https://www.jianshu.com/p/087b7e9a27a2前言netty源码分析之pipeline(一)中,我们已经了解了pipeline在netty中所处的角色,像是一条流水线,控制着字节流的读写,本文,我们在这个基础上继续深挖pipeline在事件传播,异常传播等方面的细节主要内容接下来,本文分以下几个部分进行netty中的Unsa...

2019-05-21 09:59:20 128

原创 [Netty]pipeline(一)

作者:简书闪电侠链接:https://www.jianshu.com/p/6efa9c5fa702通过前面的源码系列文章中的netty reactor线程三部曲,我们已经知道,netty的reactor线程就像是一个发动机,驱动着整个netty框架的运行,而服务端的绑定和新连接的建立正是发动机的导火线,将发动机点燃netty在服务端端口绑定和新连接建立的过程中会建立相应的channe...

2019-05-21 09:57:58 492

原创 【成神之路】Http网络相关面试题

OSI七层模型分别对应着五层模型的哪一部分;OSI七层模型,每层都说下自己的理解和知道的,说的越多越好;网络模型的分层、IP和Mac地址在那个层、TCP和HTTP分别在那个层;应用层:HTTP、FTP、TELNET等传输层:UDP,TCP网络层:IP(32位),ICMP数据链路层:ARP,RARP,MAC(48位)从游览器中输入URL到页面加载的发生了什么?可参考《...

2019-05-15 10:10:36 156

原创 【成神之路】集合相关面试题

List 和 Set 区别 List,Set都是继承自Collection接口。都是用来存储一组相同类型的元素的。List特点:元素有放入顺序,元素可重复 。有顺序,即先放入的元素排在前面。Set特点:元素无放入顺序,元素不可重复。无顺序,即先放入的元素不一定排在前面。不可重复,即相同元素在set中只会保留一份。所以,有些场景下,set可以用来去重。不过需要注意...

2019-05-14 16:50:49 271

原创 【成神之路】分布式&微服务相关面试题

请解释什么是C10K问题或者知道什么是C10K问题吗?https://blog.csdn.net/yeasy/article/details/43152115Nginx简介,可参考《Nginx简介》https://blog.csdn.net/wang379275614/article/details/47777985https://mp.weixin.qq.com/s?__biz=...

2019-05-13 18:13:22 357

原创 【成神之路】设计模式相关面试题

设计模式的的六大原则及其含义https://blog.csdn.net/w372426096/article/details/77947265常见的设计模式门面,工厂,单例,代理。。。。常见的单例模式以及各种实现方式的优缺点,哪一种最好,手写常见的单利模式https://blog.csdn.net/w372426096/article/details/77948685设计模...

2019-05-12 10:05:22 95

原创 【成神之路】Java基础相关面试题

面向对象的特征:继承、封装和多态final, finally, finalize 的区别finalfinal关键字可以用于类,方法,变量前,用来表示该关键字修饰的类,方法,变量具有不可变的特性。(1)final关键字用于基本数据类型前:这时表明该关键字修饰的变量是一个常量,在定义后该变量的值就不能被修改。(2)final关键字用于方法声明前:这时意味着该方法时最终方法,只能...

2019-05-12 10:04:35 219

原创 【成神之路】Linux相关面试题

操作系统中虚拟地址、逻辑地址、线性地址、物理地址的概念及区别;物理地址(physical address):用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到 最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是...

2019-05-12 10:03:30 114

原创 【成神之路】tomcat&git&mvn相关面试题

Tomcat的基础架构(Server、Service、Connector、Container)四张图带你了解Tomcat系统架构https://blog.csdn.net/w372426096/article/details/88721985Tomcat如歌创建ServletA.先到缓存中寻找有没有这个对象如果没有: 1、通过反射去创建相应的对象(执行构造方法) 2、t...

2019-05-12 09:57:44 113

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