自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员徐小白的博客

不积小流无以成江河,不积跬步无以至千里

  • 博客(167)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 【JVM】JVM基础知识:垃圾回收、JVM调优

写屏障。写屏障是 JVM 会监听 Java 代码的赋值操作,在赋值前和赋值后都设置一个节点,以便实现更多操作,类似于 AOP。*fieild = new_value // 赋值操作}// 写屏障-写前屏障*fieild = new_value // 赋值操作// 写屏障-写后屏障}读屏障。读屏障是 JVM 监听 Java 代码的每次访问对象地址的操作,在每次访问对象之前设置一个可以扩展操作的节点。}// 读屏障-读取前操作}

2022-11-28 09:00:00 1120 1

原创 【JVM】JVM基础知识:常量池、类加载、JVM内存模型、对象的创建过程

讲一下大概的内容(类加载-JVM内存模型-对象的创建-垃圾回收-JVM调优(入门))最近抽了时间学了一直都很想学的 JVM,之前也学过一点,也发布过一些零散的文章,但这篇文章会更加全面,学完这篇文章就足以应对有关 JVM 的面试(如果遇到没有的题,请写在评论区)。类加载之前类加载。JVM 内存模型。对象的创建。垃圾回收。JVM 调优(入门)。

2022-11-24 09:30:00 724 1

原创 【Java】简述断言(assert)的使用以及使用场景

前言说到 Java 的断言,我第一次听到这个名词的时候,还是在上大学的测试课,老师第一堂课就让我们学习了断言assert,然而因为那个老师是教安卓的,我忘记有没有使用断言框架了,反正那时用着没感觉它是 Java 的东西,后面又很少接触测试的东西,就几乎没有碰过断言assert了。那么为什么现在我会写关于断言assert的内容呢?我当然不是为了水文章啦,肯定是为了学习 Java 的冷门小知识!接下来,我从以下四个方面来介绍assert:什么是断言断言的使用场景如何开启断言断言如何使用第一

2022-03-08 09:00:00 23303 8

原创 【每日算法】力扣121. 买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5

2022-03-07 09:00:00 130

原创 【每日算法】力扣566. 重塑矩阵

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。如果具有给定参数的 resha

2022-03-04 09:00:00 236

原创 【每日算法】力扣118. 杨辉三角

给定一个非负整数 numRows, 生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows = 1输出: [[1]]提示:1 <= numRows <= 30通过次数234,762提交次数319,444做题我们把 示例1 中的数据遍历出

2022-03-03 09:00:00 283

原创 【每日算法】力扣350. 两个数组的交集 II

描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。做题这个说明的第一条我没太看懂。从题目“两个数组的交集”上推测,应该是不需要考虑两个数组的顺序。我一开始还以为

2022-02-27 09:00:00 119

原创 【每日算法】力扣217. 存在重复元素

前言前面刷了牛客上入门级别的五道算法题,个人感觉比较吃力,所以我打算去刷一下数据结构相关的算法,做一个数据结构的专项训练,我本来想在牛客上刷的,但是怎么都找不到数据结构的专项训练,我记得之前有的,所以现在只能在力扣上刷了。确定。让我们来做第一题。描述给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4

2022-02-25 09:00:00 592

原创 【每日算法】力扣53. 最大子序和

描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-10000

2022-02-24 09:00:00 276

原创 【每日算法】力扣1. 两数之和

描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:

2022-02-23 09:15:00 117

原创 【每日算法】88. 合并两个有序数组

描述给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:输入:nums1 =

2022-02-22 09:00:00 1034

原创 【每日算法】NC38 螺旋矩阵

描述给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。数据范围:0≤ n,m ≤10,矩阵中任意元素都满足 ∣val∣≤100要求:空间复杂度 O(nm),时间复杂度 O(nm)示例1输入:[[1,2,3],[4,5,6],[7,8,9]]返回值:[1,2,3,6,9,8,7,4,5]示例2输入:[]返回值:[]做题又是一道只能遍历解决的题,个人感觉做这种提不需要太多的数学知识,对新手来说还是比较友好的。这道

2022-01-24 09:15:00 629

原创 【每日算法】NC65 斐波那契数列

描述大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。斐波那契数列是这样一个数列:1、1、2、3、5、8、13、21、34…就是第一和第二位都是 1,后面的数都是前面两个数之和。数据范围:1 ≤ n ≤ 39要求:空间复杂度 O(1),时间复杂度 O(n) ,本题也有时间复杂度 O(logn)的解法输入描述:一个正整数n返回值描述:输出一个正整数。做题做这种题,肯定不用递归啦,递归????都不用。肯定需要两

2022-01-21 09:15:00 957

原创 【每日算法】 NC151 最大公约数

描述如果有一个自然数 a 能被自然数 b 整除,则称 a 为 b 的倍数, b 为 a 的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。输入 a 和 b , 请返回 a 和 b 的最大公约数。数据范围:1≤ a,b ≤10^9进阶:空间复杂度 O(1),时间复杂度 O(logn)。暴力 for 循环最简单的一种做法了,直接循环i++去找出两个数能够同时整除的数,然后一直循环到 i 等于最小的那个数。/*** 暴力 for 循环

2022-01-20 09:15:00 423

原创 【每日算法】牛客-NC103 反转字符串

描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)数据范围: 0 < n < 1000要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)考察过的公司:腾讯、百度、微盟做题虽然这道题目非常简单,但是也有不少大公司考察了,所以不要好高骛远,脚踏实地地做好每一道题非常的重要。反转字符串,目前的String类几乎没有功能能够“一键”完成这个功能,所以就必须得自己写算法了,不能抄捷径了。反转字符串,字符串其实也可以转成一个数组的,那

2022-01-19 09:15:00 298

原创 【设计模式】为什么装饰器模式能够取代继承?

什么是装饰器模式(Decorator )概念装饰器模式(Decorator Pattern)属于结构型模式,是在不改变现有的对象结构(代码)的情况下,对这个对象动态添加一些新的职责(功能),希望通过用组合对象的方式替代继承的方式来实现对类的扩展。我们看它的名字就知道,装饰器,像我们带的手表,就能够不影响我们,然后赋予我们看时间的能力。装饰器模式是在不改变核心功能的基础上去新增一些新的功能,和代理模式非常地相似,在下面学习完如何实现装饰器模式后会做一下区分的总结。优点装饰器模式是继承的一种替代

2021-11-09 09:30:00 628

原创 【设计模式】享元模式,池技术的指导思想。

什么是享元模式(Flyweight)概念享元模式(Flyweight Pattern)属于结构型模式,主要是用于减少对象的创建和销毁的性能消耗,以减少内存的占用。面向对象的语言能够给我们的开发带来一定的灵活性和扩展性,而且更加符合人的思维方式,但这会让我们的系统创建很多对象,这会让我们系统的性能下降,所以可以使用一个缓冲池来把这些反复使用的对象存储起来,减少反复创建和销毁的次数,享元模式的思想就是复用对象。我们的生活中也有非常多的享元模式的例子,例如,围棋的棋子,共享单车,还有游泳池的游泳圈,这些东西

2021-11-08 19:01:19 135

原创 【设计模式】组合模式?建议改名叫树形模式!

什么是组合模式(Composite)概念组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。组合模式关注的是对象间的结构,希望能够让调用者在使用一组对象时和使用单个对象没什么区别,屏蔽掉组合对象和单个对象的差别。个人感觉组合模式应该叫做树形模式,当对象呈现成树形结构时,使用这个模式就非常的好了,建议改名。组合模式分为两种

2021-10-24 22:05:00 234

原创 【设计模式】学会了适配器模式,让你的陈年旧类也能用。

前言适配器模式属于结构型模式,在前面的文章还讲到了代理模式,代理模式也是结构型模式,剩下的结构型模式有桥接模式、过滤器模式、组合模式、装饰器模式、外观模式、享元模式,而创建型模式已经全部介绍完了,包括工厂模式、单例模式、建造者模式、原型模式。什么是适配器模式(Adapter)概念适配器模式(Adapter)的定义如下:将一个类的接口转换成用户期待的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。总来说就是为了让A类能够使用B类,新创建一个C类来将B类转化成一个A类能够使用的类

2021-10-24 10:01:58 1334

原创 【设计模式】为什么要叫桥接模式?学完了我也没搞懂!

什么是桥接模式(Bridge)概念桥接模式的定义如下:**将抽象与实现分离,使它们可以独立变化。**这个概念说得很抽象,意思是将实现部分中的抽象部分分离出来,让抽象部分和实现部分间的耦合度降低。抽象化:将复杂事物中共同的特性抽象出来,对于面向对象来说就是把各种对象的特性抽象成一个类。实现化:针对抽象化的具体实现。桥接模式主张采用组合关系代替多层继承关系,继承关系会让实现类数量呈指数级增长,类的耦合程度也会提高。例如,现在想要设计产品类,小米和华为都有手机和平板,现在想要设计它们的产品类,如

2021-10-23 09:50:12 1327

原创 【设计模式】外观模式,其实我们一直都在用。

什么是门面模式(Facade)概念门面模式,又叫做外观模式,属于结构型模式。我个人比较喜欢叫门面模式,因为这个模式是为了隐藏系统内部的复杂性,向外部提供一个统一的接口,使得外部访问该系统更加方便、更加简单。门面模式是迪米特法则的代表,它关心对象和对象之间的组合关系,它主要是想几个对象之间的复杂操作都封装在一个高层次的类中,外部调用无需关心它内部的逻辑,只需要调用自己想要的功能即可。我们在日常的开发中也会用到门面模式,用过Spring做开发的小伙伴一定知道MVC的层次划分,其中Controller层和

2021-10-22 10:25:30 380

原创 【设计模式】学状态模式?学状态机√

什么是状态模式(State)概念状态模式(State Pattern)属于行为型模式,定义:一个对象的行为由其内部的状态决定。要想学习状态模式,那就一定要提到状态机了,状态机又是什么?状态机就是列举出一个东西的多种状态,研究这几种状态的切换行为,然后绘制成一个可以连通的状态图。这里以门闸为例,在广州地铁里,我们过完安检后,想要进入到地铁内部的话就需要刷卡过门闸,这里的闸门就有很多种状态,未刷卡前是关闭状态,我们无法通过闸门;刷卡后会有一个中间状态:处理中状态,这个状态,我们已经刷了卡,但机器还在处

2021-10-21 09:39:38 115

原创 【设计模式】中介者模式的目标是让对象的网状结构变成星形结构。

什么是中介者模式(Mediator)概念中介者模式(Mediator Pattern)属于行为型模式,中介者模式是为了解决对象之间相互引用的情况,通过中介者对象来解除这些对象之间的相互引用,让对象之间的通信交给中介者对象来完成,使得对象从网状结构转变成了星形结构,以此降低对象间的耦合程度。像我们在水群里聊天,我们可以把每个客户端当成一个对象,如果采用网状结构,那么就得每个客户端都得记录其他客户端的地址才行,那一个人想要加入这个水群就非常地困难,如果是采用星形结构,每个客户端都和一个服务端进行连接,服

2021-10-19 09:05:46 150

原创 【设计模式】我觉得Java程序员不需要学模板方法模式,你觉得呢?

什么是模板方法模式(Template Method)概念模板方法模式(Template Method)属于行为型模式,这个模式的名称听着有点让人摸不着头脑。模板方法模式是指在抽象类中定义一个非抽象方法,在这个非抽象方法中定义好如何调用抽象方法,而这些抽象方法实现交给子类去完成,相当于父类定好了框架,子类负责实现这个框架的内容。在面向对象语言中,我们如何使用抽象类,并在其中定义非抽象方法和抽象方法,模板方法模式给出了一个可以提供我们模仿的规范。现实生活中也有非常多这样的例子,像一台电脑,电脑主板已经固

2021-10-18 09:48:29 215

原创 【设计模式】怒敲两百多行代码来解释命令模式!

什么是命令模式(Command)概念命令模式(Command Pattern)属于行为型模式,定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。命令模式讲究的是解耦合,可延迟,像线程就是命令模式的典例,如果不适用命令模式的话,那么就无法将我们要执行的方法交给线程去执行,必须立马执行方法。举个例子,我们去餐厅吃饭,服务员都会拿个菜单给我们,这个菜单就是已经写好的“命令”,只需要我们跟服务员(请求者)说想要吃什么菜(命令),那服务员就会

2021-10-15 08:58:38 100

原创 【设计模式】观察者模式:被观察者发生变化不应该是被观察者来通知吗?

什么是观察者模式(Observer)概念观察者模式(Observer)又称发布-订阅模式,属于行为型模式,研究对象之间的交互。观察者模式定义了对象间一对多的依赖关系,当被观察者对象发生改变时,所有依赖于它的对象都会得到通知并完成自动更新。观察者模式是为了解决一个对象想知道另一个对象状态变化的问题。当我们处于一对多情况,比如微信公众号和用户,多个用户订阅了一个公众号,用户想要知道公众号是否更新 ,这时候有两种方式可以获取到公众号的更新,第一种是poll方式,也就是拉取,每个用户都去发送请求,看看公众号是

2021-10-14 08:52:20 888

原创 【设计模式】访问者模式,不愧是最复杂的设计模式之一!

什么是访问者模式(Visitor Pattern)概念访问者模式(Visitor Pattern)属于行为型模式,定义:在类的内部结构不变的情况下,不同的访问者访问这个对象都会呈现出不同的处理方式。有一点点抽象,前一句话的意思是指在写好一个类之后,这个类就基本上不需要改动了(只要需求不改),这其实就是为了解决类结构不变但操作处理逻辑易变的问题,把对数据的操作都封装到访问者类中,我们只需要调用不同的访问者,而无需改变改变结构类,实现了。又到了举例子的时间。来说说奶茶店会员,每个会员都是访问者,他们来到

2021-10-12 09:37:40 1006

原创 【设计模式】我写了个简单的Demo来演示迭代器模式

什么是迭代器模式(Iterator)概念迭代器(Iterator)模式属于行为型模式,定义:提供一个迭代器来顺序访问聚合对象(聚合对象内部存储着其他对象,这些对象和聚合对象不一定是同生共死的关系)中的一系列数据,而不暴露聚合对象的内部表示。也就是实现聚合数据和遍历算法的分离,如果把数据和遍历算法都放到一个类中,首先这个类会变得非常臃肿,其次如果想更换遍历算法,就得修改代码了。一般情况下,只有在设计数据结构时才会使用迭代器模式,Java已经为我们定义好了非常多的数据结构, Collection、Lis

2021-10-09 13:50:32 162

原创 【设计模式】策略模式让你的每一个方法都像一个锦囊妙计!

什么是策略模式(Strategy)概念策略(Strategy)模式属于行为型模式,定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。简单来说,就是把本来写在类内部的算法而且可以相互替换的算法全部都提取到算法类中,这些算法类就像一个个锦囊一样,然后通过使用不同的算法对象来实现算法的替换,至于为什么是算法,我觉得其实业务也行,但是业务的替换性不是很强,很多情况下不太适用。策略模式是想使用组合对象的方式来实现继承实现不了的代码复用,并且能够在横向竖向

2021-10-08 09:01:22 162

原创 【设计模式】备忘录模式不只是记录怕忘记的东西那么简单!

什么是备忘录模式(Memento)概念备忘录(Memento)模式属于行为型模式,又叫作快照模式,定义:在不破坏封装性的前提下,捕获一个对象内部的状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。简单来说,就是保存一个对象之前的状态,然后在某个时间回退到这个状态。我们使用的很多软件都提供了这个功能,我们使用的编辑工具,word、记事本、idea、typora等等,ctrl+z就可以回退自己的操作,可以防止我们的误操作。还有浏览器的倒退,可以让我们回到上一个页面。游戏中的存档,

2021-10-06 09:03:14 150

原创 【Java】java的原生clone只是一个浅拷贝!

浅拷贝和深拷贝这里会涉及到浅拷贝和深拷贝,我之前的文章(Java的传值方式中)也有提到然而像基本类型的数据,例如int、long这些,它们之间用==作比较都是true,因为它们在内存中都是作为常量来存储的。==是在比地址,而.equls可以在重写之后比较对象数据的差别.clone这里写一个clone方法的实例,首先是实现Object自带的clone方法,用这个方法创建一个对象,然后在这个clone上做一些修改,解决浅拷贝的问题。代码实现clone方法的类:PrototypeEntity/**

2021-06-21 11:56:51 251

原创 【设计模式目录】简单阐述一下设计模式

前言我爆肝了将近一个月的时间,写完了二十二种设计模式的学习笔记,还有一个解释器模式我打算后续有空就补一下。我个人觉得我的设计模式系列更加适合想要从零开始学习设计模式的小伙伴,因为我的开发经验也不是特别丰富,内容不涉及实际开发,仅供学习参考。如果有什么不正确的地方,希望各位大佬能帮我指点一二。为了能够有修改错误的时间,我打算一篇一篇地来发布文章,有问题会立刻修改。设计模式是什么?设计模式的本质是面向对象设计原则的实际运用,是对类的封装、继承、多态以及类的关联关系和组合管理的充分理解和应用。设计模式

2021-06-19 10:27:51 104

原创 【设计模式】原型模式,这是我学过最简单的设计模式了。

前言原型模式是属于创建型模式的一种,我在前面也是介绍了单例模式、构建器模式、工厂模式,这是创建型模式的最后一种了。在原型模式结束后,我会很快地进入结构性模式的学习。什么是原型模式(Prototype)概念用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。———百度百科简单来说,就是通过某个对象复制一个跟它一模一样的新对象。最形象的比喻就是,孙悟空拔毛后轻轻一吹就生成很多分身一样。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zDko9MVR-

2021-05-31 20:59:56 131 5

转载 联系我的方式

微信搜【程序员徐小白】,关注即可第一时间阅读最新文章。回复【面试题】有我准备的50道高频校招面试题,以及各种Java学习资料。在CSDN、博客园、掘金都有我的踪迹,期待你的关注!

2021-05-31 08:25:30 318

原创 很多人都不知道外包公司居然有两种,真的要去该怎么选择?

前言经常会听说,程序员进外包毁一生,程序员进入外包就会被鄙视。。。这些彷佛说的外包公司十分的差劲,一旦有程序员去了外包公司就不得翻身了所以我结合我的亲身经历和对外包的认识,给出我的一些见解,希望对大家有帮助。什么是外包公司想要知道该不该去外包,不得先知道什么是外包吗?外包公司分为两种,一种承包人力的,另一种是承包项目的。承包人力的公司就是那种A公司跟你签合同,A公司给你发工资,但是你是去B公司上班的,你不属于B公司的员工,可能工牌都不一样,如果B公司没活干了。你就会被派到其他公司去干活。

2021-05-28 22:25:16 5971 2

原创 【设计模式】Java程序员不能不学的七大设计原则!面向对象编程的黄金法则!

面向对象编程必须要会的,赶紧进来看,最后附上面试回答

2021-05-26 17:02:23 173

原创 【Java】 以后遇到lambda别再一头问号啦

Lambda表达式为什么会有Lambda表达式要说Lambda表达式,就一定要先说一下匿名类了,像使用Thread时,要创建一个Runnable接口的实现类放入Thread的构造方法中,一般情况下都是采用内部类的形式来创建的例如Thread thread1=new Thread(new Runnable(){@Override public void run(){ c=1; a=d; }});这不是很乱嘛,于是就诞生了lambda表达式,lam

2021-05-26 13:29:24 137

原创 【Java】带你了解一个对象从出生到死亡

对象的生命周期Java对象在JVM中的运行周期大致上分为七个阶段,创建阶段(Creation)、应用阶段(Using)、不可视阶段(Invisible)、不可到达阶段(Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)与释放阶段(Free)用了那么久的Java对象,怎么可能不把它的生命周期搞清楚嘞?下面我将对每个阶段进行介绍创建阶段一个对象想要进入创建阶段,前提是它的类文件必须已经加载到内存中,并且创建了Class对象,这样才能根据类信息进行创建创建的过程:

2021-05-26 13:20:22 279

原创 【Java】很少人知道,Java居然有四种对象引用方式

一、为什么会有四种引用01在一开始当一个对象不被引用(就是没有属性/变量引用,例如Object ob=new Object();ob=null;)时,就会被JVM自动回收,在没有等于null之前就是强引用。打个比方,就像你去餐厅吃饭,你站在位置上就是引用了这个位置,服务员(JVM)就不会过来收走你的餐具,当你走了,服务员就会收走你的餐具02随着Java的发展,需求也越来越多样化了,有些人希望当一个对象不被引用时也不要被收走,而是在内存保存一段时间,于是软引用就诞生了。接着上面的例子,餐厅的老板(

2021-05-26 13:15:30 139 2

原创 【Java】简简单单的类初始化,面试题必考,建议反复阅读

类初始化过程需要类加载并初始化的时机一个类要创建一个实例main方法所在的类子类要初始化时,需先加载并初始化父类类初始化的过程一个类初始化就是执行<clinit>()方法(cl...

2021-03-27 23:58:00 111

application管理后台系统web

学校期末大作业,分为前台管理和后台管理,上架app,审核app,展示app,app版本更新,资源包含数据库和源代码

2020-06-02

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

TA关注的人

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