![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 87
降温vae+
这个作者很懒,什么都没留下…
展开
-
单例模式--确保对象唯一性
文章目录单例模式的动机单例模式的结构单例模式的实现方式单例模式总结 单例模式的动机 为什么需要单例模式呢?对于一个软件系统的某些类而言, 我们无须创建多个实例。 举个大家都熟知的例子——Windows任务管理器, 如图3-1所示, 我们可以做一个这样的尝试, 在Windows的“任务栏”的右键弹出菜单上多次点击“启动任务管理器”, 看能否打开多个任务管理器窗口?( 注: 电脑中毒或私自修改Windows内核者除外) 。 通 常情况下, 无论我们启动任务管理多少次, Windows系统始终只能弹出一个任务管理原创 2021-09-06 13:48:05 · 1177 阅读 · 0 评论 -
抽象工厂模式
文章目录抽象工厂模式代码示例优缺点 抽象工厂模式 抽线工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品。 抽象工厂模式定义如下:抽象工厂模式(Abstract Factory Pattern): 提供一个创建一系列相关或相互依赖对象的接口, 而无须指定它们具体的类。 抽象工厂模式又称为Kit模式, 它是一种对象创建型模式。 在抽象工厂模式中, 每一个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品,这些产品构成了一个产品族,原创 2021-08-30 09:38:46 · 83 阅读 · 0 评论 -
工厂方法模式
文章目录工厂方法模式代码实例优缺点 工厂方法模式 简单工厂虽然简单, 但存在一个很严重的问题。 当系统中需要引入新产品时, 由于静态工厂方法通过所传入参数的不同来创建不同的产品, 这必定要修改工厂类的源代码, 将违背“开闭原则”, 如何实现增加新产品而不影响已有代码? 工厂方法模式应运而生,下面我们就来了解一下。 简单工厂模式最大的缺点是当有新产品要加入到系统中时, 必须修改工厂类, 需要在其中加入必要的业务逻辑,这违背了“开闭原则”。 此外, 在简单工厂模式中, 所有的产品都由同一个工厂创建, 工厂类职责原创 2021-08-23 22:21:09 · 112 阅读 · 0 评论 -
Java基础复习(二)
文章目录接口和抽象类异常object类中的方法类加载反射String类 jdk1.8 接口和抽象类 应用场景: 抽象类 一种事物的抽象 接口 JDK1.8 抽象方法 常量 行为的抽象 抽象类:abstract 修饰类 方法 (抽象类 可以包含抽象方法 含有抽象方法的类->抽象类 含有抽象类的方法不一定是抽象类) 不能实例化对象 实例类 extends 抽象类{} 抽象类相比实例类:构造 实例变量 静态,实例方法 接口:1.interface修饰 2.接口不能实例化对原创 2021-07-22 13:27:33 · 164 阅读 · 4 评论 -
Java基础复习(一)
面向对象三大特征:封装(访问限定符)继承 多态 四大:抽象 封装 继承 多态 多态:定义 实现原理 (1.静态绑定:重载–》条件:相同作用域,方法名相同,参数列表不同 2.动态绑定:重写–》条件 父子类,子类重写父类方法,方法名相同,参数列表也相同,修饰符子类权限大于等于父类 原理:地址覆盖) 实现条件(1.继承关系/实现 2.方法重写 3.向上造型 方法调用) 基类引用 引用 派生类对象 基接口引用 引用 实现该接口的类对象 类加载过程:1.装载(加载) 产物 Class对象 保存当前类的类信息原创 2021-07-20 23:04:20 · 277 阅读 · 3 评论 -
Java基础常见面试题
文章目录1、重载和重写的区别2、ArrayList和LinkedList的区别 1、重载和重写的区别 首先,重写存在于子类与父类中,重载存在于一个类中 重写(override): 重写是覆盖了原来的方法,实现不同的功能。一般用于子类在继承父类时,重写父类中的方法。 重写规则: 1、参数列表与原来相同 2、访问修饰符不能小于原方法(public>protected>default>private) 3、返回值一致 4、声明为final的方法不能被重写。声明为static的方法不能被重写,但原创 2021-07-19 22:01:06 · 152 阅读 · 1 评论 -
简单工厂模式
文章目录简单工厂模式代码实例优缺点 简单工厂模式 工厂模式是最常用的一类创建型设计模式,通常我们说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式。简单工厂模式并不属于23个经典设计模式,但通常将它作为哦学习其他工厂模式的基础,它的设计思想很简单,基本流程如下: 首先将需要创建的各种不同对象的相关代码封装到不同的类中,这些类称为具体产品类,而将它们公共的代码进行抽象和提取后封装在一个抽象产品类 中,每一个具体产品类都是抽先后产品的子类;然后提供一个工厂类用于创建各种产品,在工厂类中提供一个创建产品的原创 2021-05-06 20:50:17 · 85 阅读 · 0 评论 -
面向对象设计原则
文章目录面向对象设计原则单一职责原则开闭原则里氏代换原则依赖倒转原则 面向对象设计原则 对于面向对象系统软件的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。在面向对象设计中,可维护性的复用是以设计原则为基础的。每一个原则都蕴含一些面向对象的设计思想。 以下是最常见的7种面向对象设计原则如下: 单一职责原则 单一职责是最简单的面向对象原则,它用于控制类的粒度大小。 单一职责原则定义:一个 类只负责一个原创 2021-05-06 19:10:40 · 247 阅读 · 1 评论 -
基于Socket通信的在线网络聊天室
文章目录项目结构clientconstansentityutilIOserveruiother大致思路演示 时间:2021/4/20 开发环境: jdk1.8 编译器:idea2018 编程语言:java 源码下载:github 前言:这个项目是笔者在学习完JavaSE基础后,为夯实基础所做的JavaSE实战开发。这一项目涉及的知识点有逻辑基础、面向对象、异常、集合框架、IO流、网络编程、多线程等。实现了包括登录、服务器监控、群聊私聊、发送图片、抖动、改变字体在内的功能。 项目结构 整个项目大体分为服务端原创 2021-04-20 22:59:03 · 2677 阅读 · 13 评论 -
JDBC简介
文章目录JDBC介绍JDBC使用步骤通过maven管理依赖编码SQl注入问题 JDBC介绍 JDBC(Java Data Base Conection)是Java中提供的一套标准的应用编程接口,用来连接Java编程语言和数据库。 JDBC常用组件: DriverManger:数据库驱动程序的管理类,匹配Java程序到数据库的驱动的协议(mysql、sqlsever等),识别出某个子协议与数据库服务器进行通信。 Driver:处理与数据库服务器通信的,主要是DriverManger管理的对象,指具体的连接驱原创 2021-04-13 20:34:35 · 116 阅读 · 0 评论 -
volatile关键字
文章目录Java的内存模型volatile关键字volatile使用场景happen-before原则 Java的内存模型 在讲解volatile关键字之前,我们需要先了解一下Java内存模型。 Java内存模型规定了所有的变量都存储在主内存中。每条线程还有自己的工作内存,线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同的线程之间也无法访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成。原创 2021-02-20 15:56:34 · 99 阅读 · 0 评论 -
Synchronized关键字
文章目录概念背景底层原理用法修饰成员方法同步代码块synchronized关键字的不足及改进: 概念 synchronized 可以保障原子性和可见性。因为 synchronized 无论是同步的方法还是同步的代码块,都会先把主内存的数据拷贝到工作内存中,同步代码块结束,会把工作内存中的数据更新到主内存中,这样主内存中的数据一定是最新的。更重要的是禁用了乱序重组以及保证了值对存储器的写入,这样就可以保证可见性。 背景 现在可以多个线程对同一片存储空间进行访问,这时存储空间里面的数据叫做共享数据。线程并发给我原创 2021-02-19 16:54:37 · 97 阅读 · 0 评论 -
多线程基础
线程和进程的概念 线程的创建 线程的生命周期原创 2021-02-19 16:56:24 · 77 阅读 · 0 评论 -
HsahMap使用、结构及源码分析以及常见面试题
HashMap使用 HashMap是基于哈希表的Map接口的非同步实现,继承自AbstractMap,AbstractMap是部分实现Map接口的抽象类 哈希表也称散列表,根据关键码值key进行访问的数据结构,也就是说,能够将关键码映射到表中一个位置我们就可以区访问value,加快查找的速度,这个映射函数叫做散列函数,存放记录的属组叫做散列表。我们之前使用的两种数据结构,数组寻址容易(时间复杂度为O(1)),插入和删除困难(复杂度为O(N)),而链表寻址困难(复杂度为O(N)),插入和删除容易(复杂度为O原创 2021-02-19 11:48:51 · 319 阅读 · 0 评论 -
static关键字
static关键字有什么作用? 1.第一,为某特定数据类型或对象分配单的存储空间,而与创建对象的个数无关。 2.第二,希望某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的情况下就可以通过类来直接调用方法或使用类的属性。 static关键字的用途 1.static成员变量 虽然java语言中没有全局的概念,但可以通过static关键字来达到全局的效果。java类提供了两种类型的变量:用static关键字修饰的静态变量和没有static关键字修饰的实例变量。 静态变量属于类,在内存中只有一原创 2021-02-02 17:08:19 · 68 阅读 · 0 评论 -
Java数据结构(习题)
1.给定两个序列 第一个序列是栈的压入序列 第二个序列是栈的弹出序列 判断第二个序列是否是第一个序列正确的弹出序列 问题分析:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入序列为1,2,3,4,5,其可能的一个弹出顺序为4,5,3,2,1(先入1,2,3,再入4,随后弹出4,再入5随后全部弹出)。但4,3,5,1,2(若要4先出,则应4再3前入栈)就不可能为此栈的弹出队列。 思路分析:我们可以借助一个栈,同时再两个队列中分别定义两个临时指针。首先,让入原创 2021-01-07 17:18:26 · 533 阅读 · 0 评论 -
Java数据结构----单链表习题
单链表习题递归实现逆序输出单链表逆置单链表合并两个有序的链表,保证合并后的链表依然有序判断两个链表的相交结点判断单链表是否有环,同时得到环的入口节点是哪个 递归实现逆序输出单链表 我们可以采用递归的方式实现逆序输出单链表的操纵,因为head节点的next节点是指向head的下一个节点,所以我们从头开始遍历链表,并让head往后走,当head.next为空时,此时已经走到链表结尾处,输出节点值。重复以上操作,即可实现链表逆序输出。 代码如下: public static <T> void rev原创 2020-12-05 15:02:13 · 176 阅读 · 0 评论 -
几种简单排序算法(Java实现)
几种简单的排序算法冒泡排序思想代码选择排序思想代码直接插入排序思想代码 冒泡排序 思想 冒泡排序,又称下沉排序,其大致思路为: 在一个整数序列中,两两进行比较,若前者大于后者,则两者交换位置,若后者大于前者,则保持不变继续进行比较。在进行完一次冒泡后,则会将最大元素放至序列最后。序列中有多少数据,就需要进行多少趟冒泡。 示例如下 代码 代码实现: public static void bubbleSort(int[] array){ //参数合法性判断 if(arr原创 2020-11-30 23:02:03 · 166 阅读 · 0 评论 -
Java泛型基础
Java泛型基础泛型前言泛型类泛型类定义泛型类注意事项泛型接口泛型接口定义泛型方法泛型方法定义类擦除机制 泛型前言 泛型主要是Java SE 1.5 的新特性,泛型的本质就是参数化类型,参数化类型就是所谓的操作数据类型被指定为一个参数,将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式,然后再使用/调用时传入具体的类型(类型实参)。这种参数可以在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 我们用以下代码做示例 import java.util.ArrayLis原创 2020-11-24 17:12:32 · 90 阅读 · 0 评论 -
Java类加载过程
Java类加载过程前言类加载时机第一大阶段:装载阶段第二大阶段:链接阶段1)验证2)准备3)解析第三大阶段:初始化阶段 前言 一个Java文件的执行大致分为两个阶段 编译 运行 编译,即将我们写好的Java文件通过Javac命令编译成字节码文件,即我们常说的.class文件。 运行,就是将我们编译好的.class文件交给Java虚拟机(JVM)来运行。 而我们所说的类加载过程即是指JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程。 类加载时机 那我们什么时候需要原创 2020-11-20 20:29:28 · 167 阅读 · 0 评论 -
java实现简单银行ATM系统
#ATM系统 ##功能 模拟银行ATM机系统,具有注册、登录功能 用户登录后可实现以下功能: 1)存款 2)取款 3)转账 4)查询 5)退出 ##设计思路 首先,要进行ATM机操作应该具有银行卡和ATM,所以我们要设计一个ATM类和Bankcard类,ATM具有存取款等操作,Bankcard用来记录用户存取款等操作后的越,其次因为ATM同时为多个用户服务,所以我们应该识别每张卡,这里增加一个Bank类来记录银行卡个数以及各个用户持有哪些银行卡。 ##具体代码 ###Bank类 import jav原创 2020-11-18 22:54:59 · 4614 阅读 · 0 评论 -
JAVA类和对象(封装、继承和多态)
JAVA类和对象 类和对象 ##类和对象简介 ###对象:对象是事物存在的实体,通常又会将对象划分为两个部分,对象的属性和对象的行为 ###类:具有一系列相同的属性和行为的物品 public class People{ private String name;//实例变量 private int age; public People(){ } } Peoplo people = new People(); 如上所示,我们建立了People这个类,并且使用People构造方法构造了peop原创 2020-11-18 22:12:38 · 213 阅读 · 0 评论 -
java双亲委派模型
#双亲委派模型 ##类加载器 系统提供三种来类加载器 类加载器 路径 Bootst classLoader(启动类加载器) jre/lib/rt.jar Ext classLoader(扩展类加载器) jre/lib/ext/*.jar App classLoader(应用类加载器) ClassPath路径 ##双亲委派模型 首先,双亲委派模型是为了避免类的重复加载问题,这三个类加载器之间存在继承关系。 通过下面代码可以看出,此时People类的类加载器为App classLoa原创 2020-11-08 10:28:44 · 107 阅读 · 0 评论