暂时未有相关云产品技术能力~
关注公众号:JavaEdge,后台回复面试,领取更多大厂求职资源。曾在百度、携程、华为等大厂搬砖,专注Java生态各种中间件原理、框架源码、微服务、中台等架构设计及落地实战,只生产硬核干货!
Docker 开发人员共同使用同一个 Docker 镜像,同时修改的源代码都被挂载到本地磁盘。不再因为环境的不同而造成的不同程序行为而伤透脑筋,同时新人到岗时也能迅速建立开发、编译环境。
1 域名,域名系统DNS 计算机的用户只是间接而不是直接使用域名系统。 因特网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。 名字到 IP 地址的解析是由若干个域名服务器程序完成的。
一、文件与文件系统 1.1 文件是什么 文件是对磁盘的抽象 所谓文件是指一组带标识(标识即为文件名)的、在逻辑上有完整意义的信息项的序列。 信息项:构成文件内容的基本单位(单个字节,或多个字节),各信息项之间具有顺序关系 文件内容的意义:由文件建立者和使用者解释 1.
请求分页存储管理方式 硬件的支持 1.页表机制 状态位P:用于指示该页是否已调入内存。 供程序访问时参考。 访问字段A:供选择换出页面时参考。 用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问。
一、CPU调度的相关概念 1.1 cpu调度 其任务是控制、协调进程对cpu的竞争,即按一定的调度算法从就绪队列中选择一个进程,把cpu的使用权交给被选中的进程。
一、I/O管理概述 1.1 计算机I/O系统结构 1.2 I/O管理示意图 1.3 I/O的特点 I/O性能经常称为系统性能的瓶颈 操作系统庞大复杂的原因之一:资源多、杂,并发,均来自I/O 速度差异很大 应用 控制接口的复杂性 传送单位 数据表示 错误条件 与其他功能联系密切,特别是文件系统。
一、进程 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内存布局与运行机制,涵盖程序计数器、Java虚拟机栈、本地方法栈、堆、方法区及直接内存等关键区域。结合JDK8特性,探讨了元空间替代永久代的优化方案,并从GC角度分析堆内存管理。内容详尽,适合希望深入了解JVM工作原理的开发者。项目已收录于[Github](https://github.com/Java-Edge/Java-Interview-Tutorial),欢迎关注!
程序计数器、虚拟机栈、本地方法栈都是线程私有的,会随着线程而生,随线程而灭 栈中的栈帧随着方法的进入和退出有条不紊的执行着出栈和入栈操作. 静态内存分配和回收 静态内存分配是指在程序开始运行时由编译器分配的内存,在被编译时就已经能够确定需要的空间,当...
本文详细解析了Java中`final`关键字的用法及其特性,涵盖修饰变量、方法和类的不同场景。修饰变量时,`final`确保值不可变,适用于常量定义;修饰方法时禁止子类重写,提升性能与安全性;修饰类时防止继承,保障类的完整性(如String类)。此外,文章探讨了不可变类的设计原则及多线程环境下的优势,并通过实例分析了`final`变量在类型转换中的特殊行为(如编译时常量优化)。最后,强调了合理使用`final`对代码可读性、性能优化及线程安全的重要意义。项目已开源至GitHub,欢迎关注获取更多技术干货!
在 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 信息的载入过程.
本文介绍了如何使用Spring Expression Language(SpEL)解析和验证方法名是否符合指定表达式,包含核心类与实战示例。
本文深入解析Spring框架中的ImportBeanDefinitionRegistrar接口,探讨其在动态注册Bean定义中的作用、核心方法、应用场景及实例,帮助开发者实现更灵活的Spring配置管理。
本文详解 Spring 容器如何通过反射机制实例化 Bean,涵盖默认构造函数、静态工厂方法与实例工厂方法三种方式,并结合 XML 配置与实战代码演示。内容还对比了 factory-method 与 factory-bean 的区别,总结使用场景与最佳实践,助你掌握 Spring IOC 底层原理。欢迎关注作者,获取更多 Java 架构干货。
本文详细对比了TIMESTAMP与DATETIME在MySQL中的特性,涵盖显示格式、值范围、储存方式及时区影响等内容。TIMESTAMP占用4字节,存储为UTC时间并随本地时区转换;DATETIME则与时区无关,直接以8字节存储实际值。此外,文章还探讨了默认值设置规则及其应用场景,如记录创建时间和更新时间。文末附带实战案例,演示时区变化对TIMESTAMP类型数据的影响。更多技术干货可关注作者或访问编程严选网。
本文详解Redis缓存雪崩、穿透与击穿问题及其解决方案,涵盖差异化过期时间、互斥锁、布隆过滤器等策略,提升系统稳定性与性能。
本文深入解析了Kafka的核心概念与架构原理,涵盖消息、主题、分区、副本、生产者与消费者、Broker等关键组件。内容包括Kafka的高可用机制、数据持久化方式、消费组与重平衡机制,并探讨了其在分布式系统中的应用。适合开发者及架构师学习与实践。文章同步更新于Github与编程严选网。
本文介绍了Spring框架中常用的注解配置方式,包括@Configuration、@ConfigurationProperties及其使用场景,同时对比了XML配置与注解配置的区别,帮助开发者更高效地掌握Spring的自动化配置与注解驱动开发技巧。
本文介绍了编程中的“钩子”概念,通过拦截函数调用或事件来增强或修改程序行为,无需改动源码即可实现监控、分析等功能。文章由Java-Edge整理,收录于Github,关注作者获取更多技术干货。
本文介绍了Git版本控制系统的使用,涵盖Git的安装配置、基础命令、远程仓库操作、分支管理及标签使用等内容。文章还详细讲解了版本控制的发展历程与Git的优势,帮助开发者更好地理解和应用Git进行项目管理。
本文深入解析了MySQL索引的优化策略,涵盖覆盖索引、最左前缀原则、联合索引设计及主键选择等核心内容,并结合实战案例展示如何提升查询性能。
本文深入解析Kafka核心组件及其协作原理,涵盖Consumer订阅流程、元数据更新及拉消息机制,帮助开发者高效掌握Kafka工作原理,避免死记硬背。
本文分享了如何快速了解新公司业务与项目架构的方法,涵盖源码与环境梳理、项目关系分析、数据库与代码结构解析等内容,助你从全局视角掌握系统逻辑,提升技术视野与实战能力。