- 博客(48)
- 资源 (1)
- 收藏
- 关注
原创 UML流程图
一、何为流程图流程图=流程+图。流程:Flow,是指特定主体为了满足特定需求而进行的有特定逻辑关系的一系列操作过程,流程是自然而然就存在的。但是它可以不规范,可以不固定,可以充满问题。所以就会造成看似没有流程。图:Chart 或者 Diagram, 是将基本固化有一定规律的流程进行显性化和书面化,从而有利于传播与沉淀、流程重组参考。从定义可以看出,只要有事情和任务,流程就会有,但是并不...
2020-05-04 12:30:00 698
转载 句子成分划分(口诀符号及方法)
划分句子的口诀: (1)句子成分要划对,(2)纵观全局找主谓。 (3)主前定状谓后补, (4)谓前只有状地位。(5)“的”定“地”状“得”后补,(6)宾语只受谓支配。 划分句子成分(一)知识要点 1. 什么是句子 句子是由词或词组构成的,是具有一定语调并表达一个完整意思的语言运用单位。根据用途和语气,句子可以分为陈...
2019-01-05 10:53:22 23893 1
原创 Java关键字
Java关键字是对Java编译器有特殊意义的标识符,有时又叫保留字,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。(注意:关键字一律小写。)修饰符是关键字的子集,是用来修饰类、方法、变量的。修饰符分为两类:访问控制修饰符 (public protected,default,private) 非访问修饰符 (static,final,a...
2018-12-20 19:58:41 171
转载 Java虚拟机学习 - 类加载机制
类加载机制JVM把class文件加载的内存,并对数据进行校验、转换解析和初始化,最终形成JVM可以直接使用的Java类型的过程就是加载机制。类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸载(...
2018-12-13 20:23:37 161
转载 Java虚拟机学习 - 类加载器(ClassLoader)
类加载器类加载器(ClassLoader)用来加载 class字节码到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源文件在经过 Javac之后就被转换成 Java 字节码文件(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例。每一个这样的实例用来表示一个 Java 类。实际的情况可能更加...
2018-12-13 20:21:33 154
转载 Java虚拟机学习 - 内存调优
JVM调优主要是针对内存管理方面的调优,包括控制各个代的大小,GC策略。由于GC开始垃圾回收时会挂起应用线程,严重影响了性能,调优的目是为了尽量降低GC所导致的应用线程暂停时间、 减少Full GC次数。代大小调优最关键参数:-Xms、 -Xmx 、-Xmn 、-XX:SurvivorRatio、-XX:MaxTenuringThreshold、-XX:PermSize、-XX:MaxPer...
2018-12-13 20:19:12 118
转载 Java虚拟机学习 - 对象引用强度
无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(PhantomReference) 四种,引用的强度依次骤减。强引用:就是指在代码之中普遍存在的,类似:“Object obje...
2018-12-13 20:17:01 128
转载 Java虚拟机学习 - JDK可视化监控工具
1.JConsole JConsole工具在JDK/bin目录下,启动JConsole后,将自动搜索本机运行的jvm进程,不需要jps命令来查询指定。双击其中一个jvm进程即可开始监控,也可使用“远程进程”来连接远程服务器。进入JConsole主界面,有“概述”、“内存”、“线程”、“类”、“VM摘要”和"Mbean"六个页签:内存页签相当于jstat命令,用于监视收集器管理的虚...
2018-12-13 20:15:21 162
转载 Java虚拟机学习 - 对象内存分配与回收
对象优先在Eden上分配大多数情况下,对象优先在新生代Eden区域中分配。当Eden内存区域没有足够的空间进行分配时,虚拟机将触发一次 Minor GC(新生代GC)。Minor GC期间虚拟机将Eden区域的对象移动到其中一块Survivor区域。大对象直接进入老年代所谓大对象是指需要大量连续空间的对象。虚拟机提供了一个XX:PretenureSizeThreshold参数,令大于这...
2018-12-13 20:10:43 145
转载 Java虚拟机学习 - 垃圾收集器
HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器。如果两个收集器之间存在连线,就说明它们可以搭配使用。Serial(串行GC)收集器Serial收集器是一个新生代收集器,单线程执行,使用复制算法。它在进行垃圾收集时,必须暂停其他所有的工作线程(用户线程)。是Jvm client模式下默认的新生代收集器。对于限定...
2018-12-13 20:07:22 114
转载 Java虚拟机学习 - 垃圾收集算法
跟踪收集器跟踪收集器采用的为集中式的管理方式,全局记录对象之间的引用状态,执行时从一些列GC Roots的对象做为起点,从这些节点向下开始进行搜索所有的引用链,当一个对象到GC Roots 没有任何引用链时,则证明此对象是不可用的。下图中,对象Object6、Object7、Object8虽然互相引用,但他们的GC Roots是不可到达的,所以它们将会被判定为是可回收的对象。可...
2018-12-13 20:02:22 125
转载 Java虚拟机学习 - 对象访问
对象访问会涉及到Java栈、Java堆、方法区这三个内存区域。如下面这句代码:Object objectRef = new Object(); 假设这句代码出现在方法体中,"Object objectRef” 这部分将会反映到Java栈的本地变量中,作为一个reference类型数据出现。而“new Object()”这部分将会反映到Java堆中,形成一块存储Object...
2018-12-13 19:58:18 133
转载 Java虚拟机学习 - 体系结构 内存模型
一:Java技术体系模块图二:JVM内存区域模型1.方法区也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。运行时常量池:是方法区的一部分,Class文件中除了有类的版本、字段、方法、接口等描述...
2018-12-13 19:55:50 129
转载 Java事件监听器原理以及使用Spring的事件监听
事件监听包括必不可少的三个元素:事件、事件源和监听器。事件:容易理解,点击一下鼠标是一个事件,更改某个类属性也可以抽象为一个事件。事件源:发布事件的地方,也就是事件产生的地方。监听器:定义事件发生后要采取的操作。1,接下来举例说明Java如何实现监听模式事件:package com.wxy.popcorn.eventlistener.model; import jav...
2018-12-12 14:23:20 354
转载 Aware相关接口
Aware,是感应和感知的意思。当bean实现了对应的Aware接口时,BeanFactory会在生产bean时根据它所实现的Aware接口,给bean注入对应的属性,从而让bean获取外界的信息。Spring提供了一堆Aware接口:下面列出几个主要Aware接口作用:org.springframework.context.ApplicationContextAware接口:实...
2018-12-12 13:50:52 221
转载 Tomcat服务器顶层结构和启动过程
转自:https://blog.csdn.net/xlgen157387/article/details/53521928号外:2016 最流行的是哪一种 Java 应用服务器呢?通过从部署的 1240 个 JVM 中得到的数据,我们能够确定出现了 862 个容器供应商,或者说是占到了运行环境的 70% 左右。这些容器的供应商分布如下:Tomcat 的安装基数已经连续两年超过排行榜...
2018-12-12 13:30:45 108
转载 谈谈 Tomcat 架构及启动过程[含部署]
这个题目命的其实是很大的,写的时候还是很忐忑的,但我尽可能把这个过程描述清楚。因为这是读过源码以后写的总结,在写的过程中可能会忽略一些前提条件,如果有哪些比较突兀就出现,或不好理解的地方可以给我提 Issue,我会尽快补充修订相关内容。很多东西在时序图中体现的已经非常清楚了,没有必要再一步一步的作介绍,所以本文以图为主,然后对部分内容加以简单解释。绘制图形使用的工具是 PlantUML +...
2018-12-12 11:50:54 224
转载 Spring IOC 容器源码分析
转自:https://javadoop.com/post/spring-ioc更新时间:2017-11-15Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念...
2018-11-07 19:52:54 153
转载 一文理解Netty模型架构
一文理解Netty模型架构本文基于Netty4.1展开介绍相关理论模型,使用场景,基本组件、整体架构,知其然且知其所以然,希望给读者提供学习实践参考。1 Netty简介 Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。JDK原生NIO程序的问题JDK原生也有一套网络应用程序API,但是存在一系列问题,主要...
2018-11-01 10:08:06 717
转载 深入理解非阻塞同步IO和非阻塞异步IO
转自:https://blog.csdn.net/ITer_ZC/article/details/39291647这两篇文章分析了Linux下的5种IO模型 http://blog.csdn.net/historyasamirror/article/details/5778378http://blog.csdn.net/hguisu/article/details/7453390很...
2018-10-25 16:14:40 125
转载 Java多线程干货系列—(一)Java多线程基础
转自:http://tengj.github.io/2016/04/24/thread1/前言多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧。正文线程与进程1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境2...
2018-10-25 13:20:48 140
转载 Java 非阻塞 IO 和异步 IO
转自:https://www.javadoop.com/post/nio-and-aio本文将介绍非阻塞 IO 和异步 IO,也就是大家耳熟能详的 NIO 和 AIO。很多初学者可能分不清楚异步和非阻塞的区别,只是在各种场合能听到异步非阻塞这个词。本文会先介绍并演示阻塞模式,然后引入非阻塞模式来对阻塞模式进行优化,最后再介绍 JDK7 引入的异步 IO,由于网上关于异步 IO 的介绍相对较...
2018-10-24 19:38:11 152
转载 NIO 三大组件的使用:Java NIO:Buffer、Channel 和 Selector
转自:https://www.javadoop.com/post/java-nio本文将介绍 Java NIO 中三大组件 Buffer、Channel、Selector 的使用。本来要一起介绍非阻塞 IO 和 JDK7 的异步 IO 的,不过因为之前的文章真的太长了,有点影响读者阅读,所以这里将它们放到另一篇文章中进行介绍。Buffer position、limit、capaci...
2018-10-24 19:35:00 356
转载 Java基础之—反射(非常重要)
转载:https://blog.csdn.net/sinat_38259539/article/details/71799078?utm_source=blogxgwz1反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属...
2018-10-22 11:59:40 165
转载 动态代理
在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface)、另一个则是 Proxy(Class),这一个类和接口是实现我们动态代理所必须用到的。首先我们先来看看java的API帮助文档是怎么样对这两个类进行描述的:InvocationHandler:InvocationHandler is the interface implemen...
2018-10-19 18:08:28 89
转载 深入分析 Java 中的中文编码问题
转自:https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/几种常见的编码格式为什么要编码不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由于人类的语言有太多,因而表示这些语言的符号太多,无法用计算...
2018-10-19 17:49:18 117
转载 深入分析 Java I/O 的工作机制
转自:https://www.ibm.com/developerworks/cn/java/j-lo-javaio/Java 的 I/O 类库的基本架构I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其突出,很容易成为一个性能瓶颈。正因如此,所以 Java 在 I...
2018-10-19 17:36:36 161
原创 字符串和集合截取
集合的截取方法subList(int fromIndex, int toIndex) 底层的实现方法是: SubList(AbstractList<E> list, int fromIndex, int toIndex) { if (fromIndex < 0) throw new IndexOutOfBoundsExceptio...
2018-10-19 17:12:35 402
原创 注解详解
一:注解的作用注解是jdk5引入的新特性,注解相当于增加了一个配置,当我们使用注解时,我们可以通过反射获取注解从而获取相关的配置,方便我们在代码层面做一些操作。二:注解的相关概念以及使用注解的分类: 供javadoc生成文档用的注解。@param @return 等。 自定义注解,相当于配置文件的作用,使用灵活,配置简单。 在编译时进行格式检查。@override检查是否重...
2018-10-19 17:10:03 269
转载 SpringBoot系列 - 使用消息队列RabbitMQ
RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,AMQP,即Advanced Message Queuing Protocol, 高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处...
2018-10-12 14:56:33 146
转载 搭建kafka集群详细教程
kafka集群搭建网络上的博客质量参差不齐,对新手很不友好,我参考了一些博客文档后,重新写了一遍kafka的搭建教程,包括zookeeper的搭建教程,还附上了遇到的一些常见错误的解决方案。我使用了3台虚拟机,因为kafka需要zookeeper的支持,所以虚拟机上需要事先搭建好zookeeper的集群,具体步骤见 《搭建zookeeper集群》。主要参考了这两个教程: 教程一(三台虚拟机)...
2018-10-12 14:50:59 485
转载 Maven的pom.xml文件结构之Build配置
在Maven的pom.xml文件中,Build相关配置包含两个部分,一个是<build>,另一个是<reporting>,这里我们只介绍<build>。1. 在Maven的pom.xml文件中,存在如下两种<build>:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns...
2018-10-12 10:53:38 129
转载 maven资源文件的相关配置
构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件。 src/main/java和src/test/java 这两个目录中的所有*.java文件会分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes目录中,但是这两个目录中的其他文件都会被忽略掉。...
2018-10-12 10:50:02 192
转载 Centos7 安装Rabbitmq
安装EPELyum install epel-releaseyum install yum-priorities安装Erlangwget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpmrpm -Uvh erlang-solutions-1.0-1.noarch.rpmrpm --im...
2018-10-11 15:20:46 101
转载 spring boot 的常用注解
@SpringBootApplication:包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主类上。@Repository:用于标注数据访问组件,即DAO组件。@Service:用于标注业务层组件。 @RestController:用于标注控制层组件(如struts中的action),包含@Controller和...
2018-10-10 19:53:26 100
转载 Spring MVC 请求流程图
Spring MVC工作流程图 图一 图二 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Han...
2018-10-10 15:32:18 282
转载 SpringMVC 启动流程及相关源码分析
你要知道的SpringMVC启动流程和源码分析都在这里本系列文章主要根据源码讲解SpringMVC的启动过程,以及相关重要组件的源码分析。阅读此系列文章需要具备Spring以及SpringMVC相关知识。本文将分以下几篇文章进行讲解,读者可按需查阅。SpringMVC 启动流程及相关源码分析 SpringMVC DispatcherServlet执行流程及源码分析 SpringMVC ...
2018-10-10 15:26:22 123
转载 Spring的BeanFactoryPostProcessor和BeanPostProcessor
BeanFactoryPostProcessor和BeanPostProcessor,这两个接口,都是Spring初始化bean时对外暴露的扩展点。两个接口名称看起来很相似,但作用及使用场景却不同,分析如下:1、BeanFactoryPostProcessor接口该接口的定义如下:public interface BeanFactoryPostProcessor {/**...
2018-10-10 15:08:08 104
转载 Spring启动过程(二)
上一篇说到的ioc容器的refresh()方法,是整个容器启动的最核心方法,在这个refresh()方法中,会完成资源文件的加载、配置文件解析、Bean定义的注册、组件的初始化等核心工作。 让我们来look look 这个refresh()方法到底干了啥事情~~~ 惯例先贴源码,先看下refresh()方法的说明。refresh()方法是ConfigurableA...
2018-10-10 11:16:10 217
转载 Spring启动过程(一)
Spring的启动过程,就是其IoC容器的启动过程,本质就是创建和初始化bean的工厂(BeanFactory),BeanFactory其实就是整个SpringIoc的核心,Spring 使用 BeanFactory 来实例化、配置和管理 Bean。 对于web程序,IoC容器启动过程即是建立上下文的过程,在web应用中,web容器会提供一个全局的ServletContext上下文环境...
2018-10-10 11:14:29 3322
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人