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

原创 并发编程上(基础篇)

进程与线程进程:系统资源调度与分配的基本单位,一个进程至少有一个线程,进程里面的线程共享进程资源(网络、磁盘空间、内存)线程:cpu分配的基本单位(CPU资源共享)线程共享区和线程独享区线程的生命周期新建状态(new):当线程对象创建后,即新建状态;就绪状态(Runnable):当线程调用start()方法时,线程进入就绪状态,等待CPU时间片的分配;运行状态(Running):当就绪状态的线程获取到CPU分配的时间片时,此刻线程进入运行状态;阻塞状态(Bl.

2020-05-10 00:20:32 206

原创 java虚拟机(下篇)性能调优

JVM性能调优转载:JVM调优总结(一)-- 一些概念转载:JVM调优总结(二)-- 一些概念转载:JVM调优总结(三)-- 基本垃圾回收算法转载:JVM调优总结(四)-- 垃圾回收面临的问题转载:JVM调优总结(五)-- 分代垃圾回收详述1转载:JVM调优总结(六)-- 分代垃圾回收详述2转载:JVM调优总结(七)-- 典型配置举例1转载:JVM调...

2020-05-07 21:28:28 127

原创 java虚拟机(上篇)内存模型

jvm与jdk、jre关系图JDK:Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API包括rt.jarJRE:javaRuntimeEnviromental(...

2020-05-07 20:48:17 700

原创 通俗易懂的springboot启动原理

SpringBoot是如何通过jar包启动的jar -jar xx.jar就可以启动一个web应用。再也不用操心搭建tomcat等相关web容器,底层原理是怎么实现的呢?前提学习java -jar的官网介绍?If the -jar option is specified, its argument is the name of the JAR file containing class and resource files for the application. The startup c

2022-03-01 11:22:35 619

原创 springboot热部署原理

热部署核心:重建类加载器直接调appclassLoader加载,仅仅修改类的话,已被加载的类不会重新加载所以需要自定义类加载器,要想重新加载需要重构类加载器。1.加载过程启动类SpringApplicationpublic SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { this.resourceLoader = resourceLoader; As

2022-02-28 22:44:42 1345

原创 spring监听器原理

1. 使用Spring 事件Spring事件体系包括三个组件:事件,事件监听器,事件广播器。2.Spring内置事件内置事件中由系统内部进行发布,只需注入监听器监听器简单使用自定义事件public class BigEvent extends ApplicationEvent { private String name; public BigEvent(Object source, String name) { super(source).

2022-02-27 19:54:46 1429

原创 Executor线程池框架(并发编程篇)

为什么引入Executor线程池框架① 重用存在的线程,减少对象创建、消亡的开销,提高性能;② 线程的创建和运行分开,达到解耦目的;③ 可有效控制最大并发线程数,提高系统资源的使用率;Executor原理Executor生命周期​RUNNING:可以接收新任务,并且处理阻塞队列中的任务 SHUTDOWN:关闭状态,不能接收新任务,可以继续处理阻塞队列中的任务。在线程池处于 RUNNING 状态时,调用 shutdown()方法会使线程池进入到该状态。 STOP:不.

2022-02-19 00:06:24 249

原创 线程池框架Executor(并发编程篇)

目录为什么引入Executor线程池框架Executor原理Executor生命周期Executor框架介绍与使用ThreadPoolExecutor线程池类ExecutorService接口Executor接口ScheduledExecutorService接口为什么引入Executor线程池框架① 重用存在的线程,减少对象创建、消亡的开销,提高性能;② 线程的创建和运行分开,达到解耦目的;③ 可有效控制最大并发线程数,提高系统资源的使用率;Execu.

2020-05-25 22:10:53 214

原创 常用并发工具、并发容器(并发编程篇)

jdk-api中文手册常用的并发辅助工具类CountDownLatch:允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。可以理解为:统计xx-x的航班票数,必须等到多个航空公司(多线程)都统计完成后才能汇总展示给用户。用法:CountDownLatch latch=new CountDownLatch(number),先初始化一个number;再多线程情况下每调用一次countDown()方法,计数-1直到number为0时,再配合await()使用;如...

2020-05-25 19:56:05 354

原创 CAS底层原理(并发编程篇)

目录CAS原子性操作CAS底层原理CAS源码解析证明CAS采用自旋高效解决了原子性问题,存在三个缺点:CAS原子性操作Compare And Set(或Compare And Swap),CAS是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)、新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值,否则一直循环(自旋)直到成功。在java中可以通过锁和循环CAS的方式来实现原子操作。Ja

2020-05-24 18:51:23 355

原创 volatile底层原理(并发编程篇)

目录学习volatile之前需要掌握工作空间与主内存之间的交互volatile的定义Volatile关键字的语义分析问题:10个线程分别对线程执行1000次i++操作,结果一定是10000吗?volatile的使用场景volatile和synchronized的区别学习volatile之前需要掌握工作空间与主内存之间的交互java内存中线程的工作内存和主内存的交互是由java虚拟机定义了如下的8种操作来完成的,每种操作必须是原子性的。① lock(锁定):作用于.

2020-05-24 18:19:29 278

原创 JAVA内存模型、指令重排序、happens-before原则(并发编程篇)

Java内存模型

2020-05-24 15:47:22 263

原创 Java对象的组成

目录jvm与hotspot和openJdk关系对象的组成jvm与hotspot和openJdk关系jvm定义虚拟机规范、标准;hotspot实现了jvm规范(sum公司的)、其他公司也可以自己实现自己的虚拟机,如阿里巴巴的虚拟机Alibaba Dragonwell8 JDK等;openJdk:是hotspot的开源项目;引出java对象的组成:protected static User user = new User(); static ReentrantLock rl.

2020-05-16 16:31:16 1015 2

原创 架构之路之设计模式

为什么需要设计模式设计模式是软件设计中常见问题的通用可重用的解决方案,与语言无关。通过引入设计模式,可以更好的提高代码复用性、灵活性、扩展性。程序设计原则程序设计也需要遵循很多原则,开闭原则就是说对扩展开放,对修改关闭。里氏代换原则,任何基类可以出现的地方,子类一定可以出现。依赖倒转原则、接口隔离原则、迪米特法则、合成复用原则。设计模式的分类创建型模式,共五种:工厂方法模式、抽象工厂模...

2020-04-25 00:06:55 180

原创 设计模式之策略模式(行为型模式)

目录背景策略模式应用场景优点缺点模式的结构编写步骤案例总结背景在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算...

2020-04-24 23:51:11 289

转载 java建模UML类图与时序图

目录类图时序图 类图 _images/uml_class_struct.jpg1.车的类图结构为<<abstract>>,表示车是一个抽象类;  2.它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;  3.小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;  4.小汽车与...

2020-04-24 14:20:14 738

原创 虚拟机之GC收集器

哪些内存需要回收? 除了程序计算器所有的内存分布区域都可能存在内存溢出(堆(75-90%)、栈(虚拟机栈和本地方法栈)、方法区(常量池))堆:一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有在程序 处于运行期间时才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,肯定需要我们去关注和回收;(我们主要要关...

2020-04-23 13:54:53 141

原创 XML的4种解析方式比较

目录 XML简介 xml用途 XML的解析方式 解析方式对比 XML简介 XML 指可扩展标记语言(EXtensible Markup Language),常用于简化数据的存储和共享。 xml用途 1.XML 把数据从 HTML 分离如果您需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑 HTML。2.XML 简化数...

2020-04-23 10:25:57 449

原创 浅谈消息中间件之RabbitMQ(基础篇)

什么是rabbitMQ?rabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的消息中间件;AMQP协议 :Advanced Message Queue,高级消息队列协议。AMQP(高级消息队列协议)是一个网络协议。它支持符合要求的客户端应用(application)和消息中间件代理(messaging middleware broker)之间进行通信。扩展AMQP协议分解...

2020-04-09 23:18:44 720

原创 虚拟机学习有感内存分配篇

目录对象的创建对象的内存分布结构对象的访问定位  对象的创建    对象的内存分布结构 对象的组成:对象头、实例数据、对象填充三部分组成(HotSpot虚拟机) 对象头​​​​​​​​​​​​​​第一部分:对象运行时自身的数据(Hash、GC分代、线程持有的锁、偏向线程ID、偏向时间戳等)对象需要存储的运行时数据很多,其实已经超出了32位、   ...

2019-01-30 10:16:41 174

原创 虚拟机内存分配之栈(学习有感)

栈的分类 虚拟机栈和本地方法栈 什么是虚拟机栈 虚拟机栈是用于描述java方法执行的内存模型,跟程序计数器一样,都是线程私有的,生命周期和线程相同。每个java方法在执行时,会创建一个“栈帧(stack frame)”,栈帧的结构分为“局部变量表、操作数栈、动态链接、方法出口”几个部分(具体的作用会在字节码执行引擎章节中讲到,这里只需要了解栈帧是一个方法执行时所需要数据的结构...

2019-01-29 17:09:35 542

原创 网络调用之RPC

RPC是什么? RPC工作原理? RPC实例解析?什么是rpc? rpc就是远程过程调用,通过网络向远程计算机上请求服务,而不需要去了解底层的网络技术的协议。。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。@百度百科多适用于分布式。如阿里巴巴分布式开源框架dubbo等。(PS:关于OSI网络...

2018-09-07 14:48:12 230

原创 servlet之filter工作原理

一、Filter简介.它使用户可以改变一个request和修改一个response,Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在response离开servlet时处理response.换种说法,filter其实是一个“servlet chaining“(servlet 链)用途:不如过...

2018-09-06 17:18:35 2712

原创 大数据Hadoop之MapReduce

(一) 什么是MapReduce?(1).概念官网上原话翻译成中文这么说的:Hadoop MapReduce是一个用于轻松编写应用程序的软件框架,它以可靠的容错方式在大型群集(数千个节点)的商品硬件上并行处理海量数据(多TB数据集). 关键词:软件框架 可靠性 高容错 处理海量数据说白了,其实mapreduce就是把大量数据通过分而治之的核心思想来实现分布式计算框架,核心架...

2018-01-27 22:01:53 231

原创 算法导论之算法基础学习一

插入排序原理:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序。代码实例: 循环不变式目的:主要是来帮忙我们理解算法的正确性;证明:循环的第一次迭代之前,它为真;循环的某次迭代之前为真,那么下次迭代之前也为真;循环终止时,也为真结论:只要证明中的三点成立,那么就可以证明我们插入算法的正确性;我

2018-01-17 17:08:14 154

原创 Hadoop之HDFS学习之路(3)

HDFS之间的通讯协议 名称 功能 ClientProtocol 客户端(java代码客户端)与Namenode之间的通讯协议 DatanodeProtocol Datanode与Namenode之间的通讯协议,如Datanode向Namenode发送心跳报告等 clientDatanodeProtocol client客户端与Datan...

2018-01-13 15:16:00 152

转载 hadoop之HDFS学习之路(2)

1.一般的文件读取操作包括:open 、read、close等客户端读取数据过程,其中1、3、6步由客户端发起:客户端首先获取FileSystem的一个实例,这里就是HDFS对应的实例:①客户端调用FileSystem实例的open方法,获得这个文件对应的输入流,在HDFS中就是DFSInputStream②构造第一步中的输入流DFSInputStream时,通过RPC远程调用...

2018-01-13 14:09:55 239

原创 Hadoop之HDFS学习之路(1)

HDFS:指分布式文件系统,采用分而治之的方式,把大文件拆分成若干小文件存储到集群上(由若干有一定内存,cpu等廉价电脑组成的)。 HDFS的结构与组成 采用master/slave结构,整个集群由一个名称节点(NameNode)、一个备用名称节点(Secondary Namenode)和若干个数据节点(DateNode)组成。 namenode主要是负责管理文件空间名和客户端访问,dat...

2018-01-13 13:10:29 213

空空如也

空空如也

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

TA关注的人

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