自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 收藏
  • 关注

原创 Java设计模式之适配器模式

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。在适配器模式中,适配器类作为一个中间层,将客户端对目标接口的请求转化为被适配者的方法调用。适配器模式可以帮助客户端与不兼容的接口进行交互,而无需修改客户端代码或被适配者的代码。在这种模式下,计算机并不需要知道具体是什么卡,只需要负责操作接口即可,具体操作的什么类,由适配器决定。实现SDCard接口,并将要适配的对象作为适配器的属性引入。

2023-09-05 15:13:58 848

原创 Java设计模式之原型模式

这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。需要注意的是,在使用原型模式时,克隆出来的新对象与原型对象之间是独立的,它们不共享任何引用类型的成员变量。在实现原型模式时,一般会使用原型接口或抽象类来定义克隆方法,并由具体的原型类实现该方法。通过调用克隆方法,我们可以复制原型对象并创建新的对象。最后,提供一个获取新实例的方法,用来委托复制实例的方法生成新实例。:实现用于复制现有实例来生成新实例的方法。

2023-09-05 14:46:46 808

原创 windows10系统安装docker desktop超常见问题

以管理员方式运行命令提示符运行 netsh winsock reset,然后再打开docker desktop 即可。

2023-08-26 10:23:33 628

原创 lazy初始化和懒加载(Lazy Loading)

lazy初始化指的是在需要时才进行对象的初始化,而不是在声明或加载时立即初始化。这种延迟初始化的方式可以提高程序的性能和效率,特别是在对象较大或者初始化较慢的情况下。需要注意的是,在进行lazy初始化时,要考虑线程安全性和并发性。对于多线程环境下的lazy初始化,需要采取相应的线程同步机制来确保只有一个线程进行对象初始化,以避免竞态条件和数据不一致性问题的发生。

2023-08-25 17:33:51 577

原创 Java设计模式之建造者模式

建造者模式,又称生成器模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。三个角色:建造者、具体的建造者、监工、使用者建造者角色:定义生成实例所需要的所有方法;具体的建造者角色:实现生成实例所需要的所有方法,并且定义获取最终生成实例的方法;监工角色:定义使用建造者角色中的方法来生成实例的方法;使用者:使用建造者模式。

2023-08-25 17:27:50 1189

原创 Java设计模式之单例模式

单例模式是一种设计模式,它的目的是确保一个类只有一个实例,并提供一个全局访问点来访问该实例。这个模式通常在需要控制资源访问权、限制实例化数量或实现全局共享时使用。在实现单例模式时,一般会定义一个私有的构造函数,以防止外部直接实例化该类。然后,提供一个静态方法来获取该类的唯一实例,该方法会判断实例是否已经存在,如果存在则直接返回该实例,否则创建一个新的实例并返回。在这个示例中,Singleton类的构造函数被声明为私有的,确保外部无法直接实例化该类。

2023-08-25 17:10:22 410

原创 计算机网络文件拆分—视频流加载、断点续传

视频流加载的原理是通过网络传输和播放器解码来实现的。首先,视频文件会被分成一系列小的数据包,通常是以流的形式传输,这些数据包通过网络传输到用户设备。在传输过程中,可以采用各种协议,如HTTP、RTSP等。一旦数据包到达用户设备,播放器会开始接收并解码这些数据包。播放器会通过特定的解码器解码视频数据,还可以解码音频数据(如果有的话)。解码后的视频数据被渲染在屏幕上,形成连续的图像序列,从而实现视频播放。为了确保视频的平滑播放,播放器通常会预加载一定数量的数据包,以便在播放过程中保持足够的数据供应。

2023-08-25 16:37:44 987

原创 多线程的使用场景有哪些?

2.为了更快的速度。主线程专用于监控请求,子线程专用于处理请求,可以实现大吞吐量。4.当某个任务比较耗时但不消耗CPU时,开启多线程会显着提升效率。3.虽然是低优先级的服务,但需要时不时做。比如JVM垃圾回收。7.向数据库中插入大量数据,使用适当数量的线程。6.FTP下载,多线程文件操作。1.不阻塞主线程(UI线程)

2023-08-25 16:20:57 1051

原创 word文档的内部实现原理是什么?

在了解word文档的原理之前,先了解记事本原理。记事本原理:文件以二进制数据在文件中储存,前几位为编码机制,标识记事本采用了哪一种字符集,后面按照固定位数读取。任何文件的开头都先指定编码,再根据编码存它们的二进制,存进硬盘。

2023-08-25 16:02:11 408

原创 二叉树、红黑树、B树、B+树

一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。

2023-08-24 21:23:13 803

原创 为什么要第三次握手?为什么要第四次挥手?

为什么要第三次握手? 目的:为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。主要防止资源的浪费。为什么要第四次挥手?为了保证在最后断开的时候,客户端能够发送最后一个ACK报文段能够被服务器接收到。

2023-08-24 18:04:15 63

原创 什么是三次握手,什么是四次挥手

TCP建立连接的过程我们称之为3次握手。终止一个连接要经过四次挥手。处于连接状态的客户端和服务端,都可以发起关闭连接请求。此时需要四次挥手来进行连接关闭。

2023-08-24 17:59:05 107

原创 抽象类和接口有什么异同点?

接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承;接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。抽象类侧重于提取共性,进行限定,强制要求有哪些功能,强迫子类必须具备哪些功能;接口侧重于封装,隐藏实现代码,我们只需要知道功能,里面怎么实现的不用管。

2023-08-24 16:51:32 143

原创 Java对象的初始化顺序

静态成员和static块-->普通成员和非static块-->构造函数。父类静态成员和static块-->子类静态成员和static块-->父类普通成员和非static块-->父类构造函数-->子类普通成员和非static块-->子列构造函数。

2023-08-24 16:43:37 148

原创 Java的类加载顺序

加载、验证、准备、解析和初始化。

2023-08-24 16:32:47 336

原创 Java八大数据类型

Java共有八种数据类型:byte;short;int;long;float;double;char;boolean。

2023-08-24 16:22:41 61

原创 MySQL双主架构、主从架构

MySQL官方说法:单表2000万数据就达到瓶颈了。所以为了保证查询效率,要让每张表的大小得到控制。

2023-08-22 18:16:15 1017

原创 Java——finally的作用和常用场景

finally一般搭配 try--catch--finally 或者 try--finally 使用。一般来说,无论try中是否抛出异常,都会执行finally。,finally没有执行的可能:1、JVM停止运行调用system.exit() 或者 Runtime.getRuntime().halt();2、执行try或者catch代码的线程被中断或杀死。

2023-08-18 10:47:00 282

原创 MySQL常用练手题目

1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数2、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩3、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩-- (包括有成绩的和无成绩的)4、查询学过"张三"老师授课的同学的信息5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩6、查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息7、查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息

2023-08-18 10:03:13 3567

原创 华为OD机试-分奖金

题目描述公司老板做了一笔大生意,想要给每位员工分配一些奖金,想通过游戏的方式来决定每个人分多少钱。按照员工的工号顺序,每个人随机抽取一个数字。按照工号的顺序往后排列,如果遇不到比自己数字大的,就给自己分配随机数数量的奖金。例如,按照工号顺序的随机数字是: 2,10.3。那么第2个员工的数字10比第1个员工的数字2大,所以,第1个员工可以获得1*(10-2) =8。第2个员工后面没有比他数字更大的员工,所以,他获得他分配的随机数数量的奖金,就是10。

2023-08-16 11:54:44 99

原创 找出重复代码

题目描述小明负责维护项目下的代码,需要查找出重复代码,用以支撑后续的代码优化,请你帮助小明找出重复的代码。重复代码查找方法:以字符串形式给出两行代码(字符审长度1< length < 100,由英文字母、数字和空格组成),找出两行代码中的最长公共子串 注:如果不存在公共子串,返回空字符串输入输入的参数 text1,text2 分别表示两行代码输出输出任一最长公共子串样例输入样例输出hello123。

2023-08-16 11:38:32 199

原创 相同数字的积木游戏

题目描述小华和小薇一起通过玩积木游戏学习数学。他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同目所处位置最远的2块积木块,计算他们的距离。小薇请你帮忙替她解决这个问题。输入第一行输入为N,表示小华排成一排的积大总数。接下来 N 行每行一个数字,表示小花排成一排的积大上数字。输出相同数字的积木的位置最远距离;如果所有积木数字都不相同,请返回 -1样例输入样例输出3。

2023-08-16 11:21:11 584

原创 JVM——HotSpot的算法细节实现

根节点枚举:固定可作为GC Roots的节点主要在全局性的引用(如常量或类静态属性)与执行上下文(如栈帧中的本地变量表)中,尽管目标明确,但查找要做到高效很难。现在java应用越来越庞大,光方法区的大小就常有数百上千兆,里面的类、常量等更是恒河沙数,逐个检查以这里为起源的引用肯定得消耗不少时间。同时迄今为止,所有收集器在根节点枚举这一步时都是必须暂停用户线程的。根节点枚举必须在一个保障一致性的快照中进行。一致性的意思是整个枚举期间执行子系统看起来就像被冻结在某一个时间点上,不会出现分析过

2023-08-16 10:58:11 500

原创 JVM——分代收集理论和垃圾回收算法

分代收集理论、跨代引用问题和垃圾回收算法以及各自优缺点。

2023-08-15 16:26:50 528

原创 LeetCode1137. 第 N 个泰波那契数

泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数n,请返回第 n 个泰波那契数 Tn 的值。

2023-08-05 16:59:46 232

原创 队列中offer,add;poll,remove;peek,element之间的区别

offer() 和 add() 都是向队列中加入新项。一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。这时新的offer方法就可以起作用了。它不是对调用add()方法抛出一个unchecked异常,而只是得到由offer()返回的false。

2023-08-05 16:36:51 515

原创 LeetCode933. 最近的请求次数

写一个类来计算特定时间范围内最近的请求。

2023-08-05 16:18:09 122

原创 LeetCode1207. 独一无二的出现次数

给你一个整数数组arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回true;否则返回false。

2023-08-05 15:58:36 211

原创 LeetCode724. 寻找数组的中心下标

给你一个整数数组nums,请计算数组的。数组是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为0,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回的那一个。如果数组不存在中心下标,返回-1。

2023-08-05 15:13:25 260

原创 LeetCode1732. 找到最高海拔

有一个自行车手打算进行一场公路骑行,这条路线总共由n + 1个不同海拔的点组成。

2023-08-05 14:48:03 181

原创 LeetCode643. 子数组最大平均数 I

给你一个由n个元素组成的整数数组nums和一个整数k。请你找出平均数最大且k的连续子数组,并输出该最大平均数。任何误差小于 10^-5 的答案都将被视为正确答案。12.75最大平均数 (12-5-6+50)/4 = 51/4 = 12.755.00000。

2023-08-05 14:35:04 255

原创 Java的Object类有哪些方法

该方法导致当前线程等待,直到其他线程调用此对象的 notify() 方法或notifyAll()方法,或在指定已经过去的时间。wait 方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里将参数改变,这时就需要在类中复写clone方法。对象在被GC释放之前一定会调用finalize方法,对象被释放前最后的挣扎,因为无法确定该方法什么时候被调用,很少使用。

2023-07-27 17:28:31 152

原创 Java设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。工厂模式提供了一种将对象的实例化过程封装在工厂类中的方式。通过使用工厂模式,可以将对象的创建与使用代码分离,提供一种统一的接口来创建不同类型的对象。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

2023-07-25 17:50:29 259

原创 JVM五大内存模型

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一个虚构出来的计算机,有着自己完善的硬件架构,如处理器、堆栈等。

2023-07-25 14:29:09 893

原创 Java自定义注解

像平时用到的 springboot、mybatis 等框架提供了许多的注解,免去了许多配置文件的繁琐工作,大大简便了开发,Java 提供了自定义注解的功能,这里就先展示简单的例子。

2023-07-24 00:08:19 44

原创 synchronized锁

synchronized是Java的一个关键字。来自官方的解释:Synchronized方法支持一种简单的策略,用于防止线程干扰和内存一致性错误:如果一个对象对多个线程可见,则对该对象变量的所有读或写操作都通过Synchronized方法完成。

2023-07-24 00:07:55 70

原创 MySQL事务

事务是一个最小的不可在分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务是一个最小的工作单元)

2023-07-24 00:06:50 31

原创 并发和并行的区别和联系

当有多个线程在操作时,如果系统只有一个,则它根本不可能真正同时进行一个以上的线程,它只能把在一个时间段的线程代码运行时,其它线程处于挂起状。这种方式我们称之为并发(Concurrent)。

2023-07-24 00:06:16 355

原创 微服务网关

随着单体架构转化为微服务架构的时候,由一个后台服务由一个单一的服务变成了多个微服务,前端应用需要调用多个服务的接口,为了解决这个问题,网关就产生了。网关就是说微服务架构当中一个对外的统一入口,解耦客户端与内部服务。

2023-07-24 00:04:41 891

原创 栈和队列相关操作代码

【代码】栈和队列相关操作代码。

2023-07-24 00:04:00 16

空空如也

空空如也

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

TA关注的人

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