![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
雪花中的火苗
这个作者很懒,什么都没留下…
展开
-
建造者模式
建造者模式 引言 在软件开发工程中有时需要创建一个非常复杂的对象。比如,建造一座房子。需要建造墙壁、地面、窗户、门等,这些产品都由多个部件构成,可以灵活选择。使用工厂模式无法完成这些需求。 定义 构造者模式是将一个复杂对象的构造和表示分离,使同样的构建过程可以构建不同的表示。它将一个复杂的对象分解为一个简单的对象,一步步构建而成,他将变与不变相结合,即产品的组成部分是不变的,但每一部分可以灵活选择。 特点 优点 各个建造者相互独立有利于系统的扩展 客户端不必知道产品的内部组成细节,便于控制细节风险 缺点原创 2020-06-12 22:58:47 · 87 阅读 · 0 评论 -
Volatile的使用及原理
原文链接:https://www.cnblogs.com/paddix/p/5428507.html 一、volatile的作用 我们已经知道可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,...转载 2020-06-13 16:17:37 · 155 阅读 · 0 评论 -
JVM-类加载机制
类加载过程 加载 连接(验证+准备+解析) 初始化 使用 卸载 类加载器 类与类加载器 双亲委派模型 自定义类加载器-Tomcat 参考:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) ...原创 2020-03-30 13:52:09 · 132 阅读 · 0 评论 -
Java多线程(Thread, Runnable,Callable, Executors)
Java多线程实现方式有4种,继承Thread类,实现Runnable接口,实现Callable接口,使用线程池实现(Executors) 1. 继承Thread类 通过继承Thread类,实现run方法,从而实现多线程。该方式实现简单,但该类不可作为拓展类,因为Java是单继承模式,该类继承了Thread类,便无法继承其他类了。 class ChildThread2 extends Thread...原创 2020-03-27 15:24:25 · 300 阅读 · 0 评论 -
Java参数传递是值传递还是引用传递
** Java参数传递是值传递 ** 对很多人来说,Java参数传递是值传递还是引用传递,很迷惑。下面是笔者在看过这篇博客https://www.cnblogs.com/9513-/p/8484071.html,自己的理解。这是笔者的处女作,若有不对之处,欢迎指出,多多见谅~~ 参数传递 1.Java中的参数的传递都是值传递,无论是基本数据类型,还是对象。 2.参数为基本数据类型是传递的值的副本拷...原创 2019-11-19 17:22:23 · 113 阅读 · 0 评论 -
操作给定的二叉树,将其变换为源二叉树的镜像
操作给定的二叉树,将其变换为源二叉树的镜像 问题描述 将给定的原二叉树变换为镜像二叉树 例: 思路 观察上图发现:镜像二叉树就是把根节点的左子树和右子树互换,因此我们只要将该二叉树从根节点依次遍历即可。此时可以按照构造二叉树的思想,使用递归。 代码如下 //将原二叉树变为镜像二叉树 public void Mirror(TreeNode root) { if(root == null...原创 2019-11-25 21:02:00 · 409 阅读 · 0 评论 -
JVM-内存及垃圾回收
1.JVM简介 JVM全称是Java Virtual Machine(Java虚拟机),它是一个虚构出来的计算机,仿真模拟真实计算机的各种功能。JVM是Java语言能够跨平台的根本原因,它屏蔽了底层系统的细节,它把Java文件编译成能够在虚拟机上运行的class文件,然后由虚拟机自动完成在各个平台运行的转化工作。 JVM既然是虚拟的计算机,那么必然具备内存区域,接下来就讨论Java内存区域、内存回...原创 2020-03-21 19:15:19 · 165 阅读 · 0 评论 -
Java基础-线程同步(synchronized,ReentrantLock)
synchronized与ReentrantLock比较 它们都是线程同步方式,都是阻塞式实现方式(即一个线程获取锁后,其他要获取该锁的线程处于阻塞状态) 都是可重入性锁,即可以对某一对象重复加锁。常见于递归,例如方法A调用加锁的方法B,而方法B又递归调用自身。如果不可以重入,递归调用时发现方法B已经上锁,需要等待。这是就出现了自身等待自身释放锁的情况。 两者性能差不多。在synchronize...原创 2020-03-26 20:50:25 · 166 阅读 · 0 评论 -
Java基础-Map
Map集合是双列集合,就是说它存储的都是键值对(K-V),其中的K不可以重复,而V可以重复。 HashMap 介绍 HashMap是Map下最常用的集合类。对K进行hash运算,得到hashcode,从而存储元素。然而,hash算法不是完美算法,只能尽可能对键值进行散列,的到元素在内存中的存储位置。所以会产生hash冲突。解决hash冲突的方法有开放地址发、再散列法,链表法。 在jdk1.7中Ha...原创 2020-03-26 20:50:38 · 115 阅读 · 0 评论 -
Java设计模式--代理模式
定义 为对象提供一种代理来控制其他对象的访问,一般一个对象不适合或不能直接访问另一对象,而代理可以在对象之间起到中介作用。 角色 抽象角色:真实角色和代理角色共同的接口 代理角色:代理角色内部含有对真实对象的引用,从而可以操纵真实对象。同时代理对象有和真实对象同样的接口,以便能随时替代真实对象。 真实角色:就是我们想要访问的角色。 分类 静态代理:代理类的字节码文件在运行前就已经存在,代理对象...原创 2020-03-26 20:27:24 · 68 阅读 · 0 评论 -
Java设计模式--原型模式
1.定义 通过复制现有的对象来创建新的对象 2.实现 实现Cloneable接口 Cloneable接口可以通知JVM在运行时安全的让实现此接口的类使用clone方法。如果没有实现Cloneable接口,使用clone方法,JVM会在运行时抛出CloneNotSupportException异常 重写Object类的clone方法 Object类是所有Java类的父类,其中有一个cl...原创 2020-03-26 20:29:22 · 104 阅读 · 0 评论 -
Java设计模式--工厂模式
定义 工厂模式是常用的设计模式之一,属于创建型模式,提供了一种创建对象的最佳模式。 工厂模式主要为创建对象提供过渡接口,以便将创建的过程屏蔽起来,达到提高灵活性的目的 特点 工厂方法是一种粒度很小的模式,因为模式的表现只是一个抽象的方法。提前定义一个接口,具体的实现交给子类,即在工厂和产品的中间增加一个接口,不再由工厂创建对象,而是让接口针对不同的类返回类实例,由类实例创建。 抽象产品接口 //抽...原创 2020-03-26 20:30:50 · 80 阅读 · 0 评论 -
Java设计模式--单例模式
定义 单例模式是一种常见的设计模式。核心结构是含有一个被称为单例的特殊类,即系统中一个类只能有一个实例对象。 特点 单例类只能有一个实例 单例类必须自己创建唯一实例 单例类必须提供其他引用它的对象实例 要点 私有的构造方法 指向自己实例的私有静态引用 以自己实例为返回值的静态的公有方法 其中单例模式分为饿汉单例模式和懒汉单例模式 饿汉单例指在类加载时就生成一个类的实例 懒汉单例指在调用获取...原创 2020-03-26 20:35:07 · 56 阅读 · 0 评论