暂时未有相关云产品技术能力~
关注公众号:JavaEdge,后台回复面试,领取更多大厂求职资源。曾在百度、携程、华为等大厂搬砖,专注Java生态各种中间件原理、框架源码、微服务、中台等架构设计及落地实战,只生产硬核干货!
一、进程 1.1 多道程序设计 允许多个程序同时进入内存并运行,提高CPU的利用率,目的是提高系统效率 a图内存中有四个程序,串行执行,因为这里只有一个程序计数器。
JMM,高并发高吞吐各自适应使用的GC方法,如何造成OOM,解决OOM 手动回收对象 栈中new的对象生存时间 聊聊集合hashmap,ArrayList,concurrenthashmap java锁的分类 java中队列,树数据结构的实现 并发的J...
1 概述 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只适用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap. HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆。
分页 方式1:select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录。
严格来说,容器的初始化过程主要包括 BeanDefinition的Resource定位 BeanDefinition的载入和解析 BeanDefinition在容器中的注册 在初始化的过程当中,我们会看到一个又一个的方法被调用,换句话说,其实是通过调用一些方法来完成IoC容器初始化的.
操作系统的主要特性: 并发,共享,异步,虚拟性 分类 批处理系统 用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行 批处理操作系统的特点是:多道和成批处理。
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类 即虚拟机的类加载机制. 在Java中,类型的加载、链接和初始化过程都是在程序运行期间完成的 如编写一个面向接口的应用程序,可等到运行时再指定其实际的实现类.
1 加载 注意:“加载”是“类加载”(Class Loading)过程的第一步 1.1 加载的过程 在加载过程中,JVM主要做3件事情 通过一个类的全限定名来获取定义此类的二进制字节流(class文件) 在程序运行过程中,当要访问一个类时,若发现...
1 什么是JVM的“无关性”? Java具有平台无关性,也就是任何操作系统都能运行Java代码.之所以能实现这一点,是因为Java运行在虚拟机之上,不同的操作系统都拥有各自的Java虚拟机,因此Java能实现"一次编写,处处运行".
使用分代垃圾收集器,基于以下观察事实(弱分代假设) 大多数分配对象的存活时间短 存活时间久的对象很少引用存活时间短的对象 由此, HotSpot VM 将堆分为两个物理区空间,这就是分代(永久代只存储元数据, eg.
Java所承诺的自动内存管理主要是:给对象分配内存,回收分配给对象的内存. 在Java虚拟机的五块内存空间中,程序计数器、Java虚拟机栈、本地方法栈内存的分配和回收都具有确定性,一般在编译阶段就能确定需要分配的内存大小,并且由于都是线程私有,因此它们的内存空间都随着线程的创建而创建,线程的结束而回收.
1 对象的创建过程 当虚拟机遇到一条含有new的指令时,会进行一系列对象创建的操作 检查常量池中是否有要创建的这个对象所属类的符号引用 若无,说明这个类还没有被定义!抛ClassNotFoundException 若有,转2 检查这个符号引用...
JVM内存模型 1 程序计数器 1.1. 定义 程序计数器是一块较小的内存空间,可看作当前线程正在执行的字节码的行号指示器 如果当前线程正在执行的是 Java方法 计数器记录的就是当前线程正在执行的字节码指令的地址 本地方法 那么程序计数器值为undefined 1.2. 作用 程序计数器有两个作用 字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。
程序计数器、虚拟机栈、本地方法栈都是线程私有的,会随着线程而生,随线程而灭 栈中的栈帧随着方法的进入和退出有条不紊的执行着出栈和入栈操作. 静态内存分配和回收 静态内存分配是指在程序开始运行时由编译器分配的内存,在被编译时就已经能够确定需要的空间,当...
1 修饰属性或者变量 无论属性是基本类型还是引用类型,作用都是变量里面存放的“值”不可变 经常和static关键字一起使用,作为常量 基本类型,变量放的是实实在在的值,如1,“abc”等 引用类型,变量放的是个地址,所以用final修饰引用类型变量指...
在 web.xml 中 < servlet-mapping >和< filter-mapping >都有< url-pattern >配置项 它们的作用都是匹配一次请求是否会执行这个 Servlet 或 Filter,那么这个 URL 是怎么匹配的,又是何时匹配的呢? 先看看 Servlet 是何时匹配的。
在 web.xml 文件中通过和标签组合对编写的filter类进行注册,并设置它所能拦截的资源 实际上,Filter可以完成与Serlvlet一样的工作,甚至比Servlet使用起来更加灵活,因为它除了提供了request和response对象外,还提供了一个FiterChain链对象,他可以让我们更加灵活地控制请求的流转.
基于观察者模式,其设计为开发 Servlet 应用程序提供了一种快捷的手段,能够方便的从另一个纵向维度控制程序和数据. 目前 Servlet 中提供了 6 种两类事件的观察者接口,它们分别是 EventListeners ServletContex...
我们已经清楚了 Servlet 是如何被加载的、初始化及其体系结构,现在的问题就是它是如何被调用的. 用户从浏览器向服务器发起的一个请求通常会包含如下信息http://hostname: port /contextpath/servletpath h...
我们知道 Java Web 应用是基于 Servlet 规范运转的,那么 Servlet 本身又是如何运转的呢?为何要设计成这样呢 Servlet 顶层类关联图 从上图可以看出 Servlet 规范就是基于这几个类运转的,与 Servle...
已经完成了 Servlet 的解析工作,并且被包装成 StandardWrapper 添加在 Context 容器中,但它仍不能为我们工作,以为还未被实例化。
要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪为弹而生,而弹又让枪有了杀伤力。
1 IP地址与MAC地址的关系 MAC是身份证号码,用来识别网络设备本身 IP地址是居住地 2 ARP协议的作用,地址解析的过程 ARP协议作用 将主机的IP地址解析为相应的链路层的MAC地址 不管网络层使用的是什么协议,在实际网络的链...
计网的目的是实现计算机资源共享,即共享硬件,软件,数据 第一章 处在互联网边缘的部分就是连接在互联网上的所有的主机。这些主机又称为端系统(end system)。
1 同步和异步 同步和异步关注的是消息通信机制 所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。就是由调用者主动等待这个调用的结果。 而异步则是相反,调用在发出之后,这个调用就会立即返回,所以没有返回结果。
开发软件时一个常见的情况是有一个通用的算法,只是步骤上略有不同。我们希望不同的 实现能够遵守通用模式,保证它们使用了同一个算法,也是为了让代码更加易读。一旦你 从整体上理解了算法,就能更容易理解其各种实现。
一 简介 1.定义 策略模式属于对象的行为模式. 策略模式能在运行时改变软件的算法行为.如何实现策略模式根据情况而定,但其主要思想是定义一个通用的问题,使用不同的算法来实现,然后将这些算法都封装在一个统一接口的背后. 2.使用场景 针对一个对象,其行为有些是固定的不变的,有些是容易变化的,针对不同情况有不同的表现形式。
典型应用是GUI中的绘图程序, 用命令模式实现“撤销”操作. 命令接收者:执行实际任务。 命令者:封装所有命令者的信息。 发起者:空着一个或者多个命令的顺序和执行。
AOP,面向切面编程,主要的作用是可以将那些分散在业务系统中相同的代码抽取出来放到一个地方进行管理 这么做的好处是减少了重复代码的编写,并且软件的可维护性也强 为什么叫做面向切面编程呢? 举个例子:假如我们的代码中, 有许多以update开头的函数的执行都需要管理员权限。
在前面我们分析了IoC容器的基本实现,下面我们来看看在Web容器中,Spring MVC是建立在IoC容器基础上的.了解Spring MVC,首先要了解Spring IoC容器是如何在Web环境中被载入并起作用的.
初始化的过程,主要完成的工作是在容器中建立 BeanDefinition 数据映射,并没有看到容器对Bean依赖关系进行注入 假设当前IoC容器已经载入用户定义的Bean信息,依赖注入主要发生在两个阶段 正常情况下,由用户第一次向IoC容器索要Bea...
1 BeanDefinition的载入和解析 在完成对 BeanDefinition 的 Resource 定位之后,我们来了解整个 BeanDefinition 信息的载入过程.