JavaEE
文章平均质量分 53
SeanSunnn
这个作者很懒,什么都没留下…
展开
-
JAVA设计模式:观察者模式
模式的定义与特点观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式是一种对象行为型模式,其主要优点如下。降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。符合依赖倒置原则。 目标与观察者之间建立了一套触发机制。它的主要缺点如下。目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。 当观察者对象很转载 2021-06-02 17:56:26 · 231 阅读 · 0 评论 -
Java类加载器ClassLoader
Java类加载过程Java类加载过程主要可以分为三个步骤:加载、连接、初始化。加载过程是Java将字节码数据从不同的数据源读取到JVM中,映射为JVM认可的数据结构。连接是把原始的类定义信息平滑地转入JVM运行的过程中。这一阶段可以细分为验证、准备、解析三步。初始化是执行类初始化的代码逻辑,包括静态字段赋值的动作,以及执行类定义中的静态初始化块内的逻辑。Java虚拟机会创建三类ClassLoader,分别是 BootStrap ClassLoader(启动类加载器) E.原创 2021-05-26 17:28:05 · 90 阅读 · 1 评论 -
JAVA基础:父子类初始化加载顺序
父类静态代码块 ==> 子类静态代码块 ==> 父类非静态代码块 ==> 父类构造函数 ==> 子类非静态代码块 ==> 子类构造函数DEMO:class Bowl { Bowl(int marker) { System.out.println("Bowl(" + marker + ")"); }} class Tableware { static Bowl bowl7 = new Bowl(7); ...原创 2021-05-19 14:42:31 · 267 阅读 · 0 评论 -
Java优化:多个if else改用设计模式
在实际项目中相信大家都遇到过令人糟心的代码,一个方法一溜下来全是if else,还写满了业务逻辑,代码如下:public static void main(String[] args) { String name = "张三"; if("张三".equals(name)){ // 业务逻辑... System.out.println("我是张三"); }else if("李四".equals(name)){原创 2021-04-30 15:00:50 · 6847 阅读 · 4 评论 -
Java基础:ArrayList.toArray强转的“坑”
一、ArrayList类的定义ArrayList 是一个数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。ArrayList实现了RandmoAccess接口,即提供了随机访问功能。RandmoAc...原创 2021-04-30 14:11:24 · 904 阅读 · 0 评论 -
Java基础:Arrays.asList的“坑”
一、Arrays类的定义Arrays类位于java.util包中,主要包含了操纵数组的各种方法使用时导包:import java.util.Arrays二、asList方法源码public static <T> List<T> asList(T... a) { return new ArrayList<>(a); }DEMO1:public static void main(String[] args) { ..原创 2021-04-30 12:01:12 · 211 阅读 · 1 评论 -
Java基础:跳出多重循环
首先,我们得知道break,continue的运用场景。break: 此语句导致程序终止包含它的循环,并进行程序的下一阶段(整个循环后面的语句),即,不是跳到下一个循环周期而是退出循环。如果break语句包含在嵌套循环里,它只跳出最里面的循环。continue: 循环语句里有此语句时,程序运行到此语句时,不在执行循环体里continue后面的语句而是跳到下一个循环入口处执行下一个循环。对于单层循环,这个两个关键字直接够用啦~对于多重循环,似乎得想想其他办法了。比如:我们想输出第一对 i.原创 2021-04-29 14:37:18 · 208 阅读 · 0 评论 -
基础演练(三):序列化与反序列
好记性不如烂笔头!序列化是一种对象持久化的手段,普遍应用于网络传输和远程方法调用(RMI)等场景中。1.概念序列化:把对象转换为字节序列的过程称为对象的序列化。 反序列化:把字节序列恢复为对象的过程称为对象的反序列化。2.作用实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里) 利用序列化实现远程通信,即在网络上传送对象的字节序列。3....原创 2020-03-23 16:18:56 · 203 阅读 · 0 评论 -
string去除重复字符两个方法
string去除重复字符两个方法 网上有很多伪方法,只删除了相邻重复字符串,大家警惕!主要使用list.contains()检测重复。一直在想本来应该怎样做,因为面试官说了句只用了一层循环,可能这样是比较通用的:1、charAt遍历String每个字符(第一层循环)2、charAt遍历StringBuffer每个字符,...原创 2018-07-30 17:50:57 · 22076 阅读 · 0 评论 -
什么是java中的CAS
问题一:java中的CAS是什么?问题二:为什么要使用CAS?问题三:CAS使用中需要注意什么问题? 这里以提问的方式引出话题,下面带大家慢慢了解CAS。1.CAS的含义CAS是compare and swap的缩写,即我们所说的比较交换。cas是...转载 2018-07-30 17:08:55 · 587 阅读 · 0 评论 -
Java并发机制及锁的实现原理
转自:[Java并发机制及锁的实现原理](https://blog.csdn.net/sunxianghuang/article/details/51932179%20Java%E5%B9%B6%E5%8F%91%E6%9C%BA%E5%88%B6%E5%8F%8A%E9%94%81%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86)Java并发编程...转载 2018-07-30 11:50:30 · 2044 阅读 · 0 评论 -
斐波那契数
前段时间应邀笔试遇到这题感觉有点意思,特此记录一下。大意如下:0 1 2 3 5 8 13 21 34 55…写出第n个的值?我第一眼看上去就简单的,规律也看出来了,但在经历了几道智力题考验查克拉有点不足啦,硬是没有在纸上写出完整的代码(囧),强行甩锅给IDEA,哈哈哈…回来敲了一下:public class Test { public stati...原创 2018-07-20 10:51:36 · 147 阅读 · 0 评论 -
移位运算
比如3<<2 这种运算<<:是逻辑左移,右边补0,符号位和其他位一样要移动。例如: 3 << 2,则是将数字3左移2位 计算过程:3 << 2 首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个...原创 2018-07-20 10:23:42 · 418 阅读 · 0 评论