- 博客(21)
- 收藏
- 关注
原创 arraylist、hashMap的原理、扩容机制答案
在链表的长度大于阈值(默认为8)的时候,会执行treeifyBin()方法判断是否需要转成红黑树,而只有在数组的长度大于或者等于64的时候,才会转为红黑树,达到减少搜索时间的目的,否则的话只会执行resize()方法继续扩容。,每个元素都有其对应的一个下标(index),每个arraylist都有一个容量(capacity),表示的是这个可变数组的实际容量大小,存放的元素不能大于这个容量,否则的话就需要扩容该数组。小于这个值的时候,会频繁的进行扩容,导致占用空间多,并且频繁的扩容还会影响性能。
2024-03-14 16:39:52
643
原创 设计模式 - 装饰者模式
(1)装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)
2023-09-27 11:12:06
128
1
原创 设计模式 - 桥接模式
通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它主要特点是把抽象(Abstraction)与行为实现(Implementation)(1)桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。来,从而可以保持各部分的独立性以及应对他们的功能扩展。(2)是一种结构型设计模式。(3)Bridge模式基于。
2023-09-26 10:55:03
121
原创 设计模式 - 适配器模式
1、适配器模式(adapter pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)2、适配器模式属于结构型模式类适配器模式,对象适配器模式,接口适配器模式adapter类,通过继承src类,实现dst类接口,完成src>dst的适配1、基本思路和类适配器相同,只是将Adapter类做修改,不是继承src类,而是持有src类的实例,以解决兼容性的问题。
2023-09-25 09:54:27
119
1
原创 设计模式 - 建造者模式
1、建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。他可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象2、建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。
2023-09-20 11:35:36
108
2
原创 设计模式 - 原型模式
1、原型模式(Prototype)是指:用原型实例(最初的实例)指定创建对象的种类,并且通过拷贝这些原型,创建新的对象2、原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节3、工作原理:通过将一个原型对象传给那个要发动创建的对象,这个要发动的创建的对象通过请求原型对象拷贝他们自己来实施创建,即 对象.clone()原理结构图说明:1、Prototype:原型类,声明一个克隆自己的接口。
2023-09-19 10:11:53
58
原创 设计模式 -工厂模式
思路:把创建Pizza对象封装在一个类中,这样我们有新的Pizza种类时,只需要修改该类就可,其他有创建到Pizza对象的代码就不需要修改了 -> 简单工厂模式。2、缺点是违反了设计模式的ocp原则,即对扩展开放,对修改关闭。分析:修改代码可以接收,但是如果我们在其他地方也有创建Pizza的代码,就意味着,也需要修改,而创建Pizza的代码,往往有多处。Pizza类,不同的披萨,交给具体的子类实现,pizza类做烘烤,切割,打包,等公共方法。2、披萨的制作有prepare、bake,cut,box。
2023-09-11 11:21:18
79
原创 设计模式 - 单例模式
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象的实例的方法(静态方法)
2023-09-08 10:51:53
88
3
原创 关于设计模式的前期提要
(4)依赖倒转原则是基于这样的设计理念,相对于细节的多变性,抽象的东西要稳定的多,以抽象为基础搭建的架构比以细节为基础的架构要稳定的多,在java中,抽象指的是接口或抽象类,细节就是具体的实现类。(1)客户端不应该依赖它不需要的接口,即一个类对另外一个类的依赖应该建立在最小接口,大接口拆分成为小接口,分别实现即可。(2)一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。(5)使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。
2023-09-04 17:33:07
75
1
原创 effective java 第10条:覆盖equals时请遵守约定
最容易避免的方法就是不覆盖equals方法,在这种情况下,类的每个实例都只与它自身相等。希望知道它们在逻辑上是否相等,而不是想了解它们是否指向同一个对象,为了满足程序员的要求,不仅必须覆盖equals方法,而且这样做也可以使得这个类的实例可以用作映射表(map)的键(key),或者集合(set)的元素。绝对不要忽视这些规定,如果违反了,就会发现程序将会表现的不正常,甚至崩溃,而且很难找到崩溃的原因。4、类是私有的,或者是包级私有的,可以确定它的equals方法永远不会被调用。
2023-07-10 10:05:46
96
1
原创 effective java 第9条:try-with-resources优先于try-finally
在处理必须关闭的资源时,始终要优先考虑用try-with-resources,而不是try-finally 。这样得到的代码将更加的简洁、清晰,产生的异常也更加有价值
2023-07-06 16:54:37
149
1
原创 关于k8s的pod不断重启的原因分析
Kubernetes 具有完备的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制、多粒度的资源配额管理能力。健康检查是在pod中,可能容器进程存在,pod状态也为runing,但容器内部无法提供服务了(可能是因为堆内存溢出等)这种k8s自身无法判断,需要用户来提供检查方式从情况下使用的。(可以理解为提出k8s的负载均衡).yaml,再apply -f?
2023-07-04 11:37:19
4933
原创 java 关于按位操作符的笔记
按位操作符是用来操作整数基本数据类型中的单个“比特”(bit),即二进制。按位操作符会对两个参数中的对应的位执行布尔代数运算,并最终生成一个结果 -- 《java编程思想》按位“与”操作符(&)按位“或”操作符(|)按位“异或”操作符(^)按位“非”操作符(~)
2023-05-05 22:31:41
97
原创 linux 安装docker
3、安装docker ce(docker-ce为社区免费版本)4、启动docker , 诺启动不成功可以关闭防火墙再尝试启动。7、设置国内docker镜像。1、卸载原来docker。5、启动docker。重新启动docker。
2023-02-15 22:05:12
74
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人