![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaSE
文章平均质量分 92
Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合javase内容则是java的基石
发了个版
认清真实的自己,积累更多的知识
展开
-
当程序员具备了抽象思维
若想捉大鱼,就得潜入深渊。深渊里的鱼更有力,也更纯净。硕大而抽象,且非常美丽。——大卫·林奇前言抽象思维是我们工程师最重要的思维能力。因为软件技术 本质上就是一门抽象的艺术。我们的工作是存思维的“游戏”,虽然我们在使用键盘、显示器,打开电脑可以看到主板、硬盘等硬件。但我们即看不到程序如何被执行,也看不到 0101 是如何被 CPU 处理的。我们工程师每天都要动用抽象思维,对问题域进行分析、归纳、综合、判断、推理。从而抽象出各种概念,挖掘概念和概念之间的关系,对问题域进行建模,然后通过编程语言实现业务功转载 2021-10-23 19:39:55 · 227 阅读 · 0 评论 -
深入理解工厂模式
目录一 工厂模式介绍1.1 工厂模式的定义1.2 工厂模式的分类:1.3 在开源框架中的使用1.4 为什么要用工厂模式二 简单工厂模式2.1 介绍2.2 适用场景2.3 简单工厂模式角色分配:2.4 简单工厂实例3 工厂方法模式3.1 介绍3.2 适用场景3.3 工厂方法模式角色分配:3.4 工厂方法模式实例4 抽象工厂模式4.1 介绍4.2 适用场景4.3 抽象工厂方法模式角色分配:4.4 抽象工厂的工厂和工厂方法中的工厂有什么区别呢?4.5 抽象工厂模式实例一 工厂模式介绍1.1 工厂模式的定义转载 2020-08-31 14:39:58 · 174 阅读 · 0 评论 -
浅复制与深复制区别以及使用场景和案例
浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。深复制(深克隆):被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。如何进行类复制?object类当中提供了浅复制的具体方法注意事项由doc我们可以得出以下几点主要事项原创 2020-08-18 17:36:51 · 1800 阅读 · 1 评论 -
【设计模式】代理模式,静态代理和动态代理区别以及原理,jDK底层动态代理生成源码解析
概念代理模式一般涉及到的角色有抽象角色:声明真实对象和代理对象的共同接口代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装真实角色:代理角色所代表的真实对象,是我们最终要引用的对象代理模式1.建立一个抽象角色/** * 抽象角色 */public abstract class Subject{ public abs原创 2020-08-12 17:21:25 · 317 阅读 · 0 评论 -
泛型
泛型(Generic)所谓泛型:就是变量类型的参数法泛型是JDK1.5中一个最重要的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastExceptions的可能。泛型之前类别定义时的逻辑完全一样,只是里面成员变量的类型不同如果需要多个相似的类,需要定义多个文件,不同的只是变量的类别,而逻辑是完全一样的对之前代码的一些改写例1public class GenericFoo<T>{ private T foo; public T ge原创 2020-08-02 19:07:56 · 148 阅读 · 2 评论 -
JDK1.8的HashMap底层源码解析。
HashMap关系图doc基于哈希表的Map接口实现。这个实现提供了所有可选的映射操作,并允许空值和空键。(HashMap类与Hashtable大致相当,只是它是不同步的,并且允许为null)这个类对映射的顺序不做任何保证;特别是,它不保证顺序将随着时间的推移保持不变。这个实现为基本操作(get和put)提供了恒定的时间性能,假设hash函数在bucket中适当地分散了元素。集合视图上的迭代所需的时间与HashMap实例的“容量”(bucket的数量)加上其大小(键值映射的数量)成比例。因此,如原创 2020-07-22 15:49:03 · 664 阅读 · 0 评论 -
LinkedList底层双向链表生成,构建过程,新增删除流程源码分析
LinkedList原创 2020-07-11 11:23:40 · 386 阅读 · 0 评论 -
ArrayList 底层源码如何动态扩容流程详解?
ArrayListdoc列表接口的可调整大小的数组实现。实现所有可选的列表操作,并允许所有元素,包括null。除了实现List接口之外,这个类还提供了一些方法来操作内部用于存储列表的数组的大小。(这个类大致相当于Vector,只是它是不同步的。线程不安全)size、isEmpty、get、set、iterator和listIterator操作在固定时间内运行。add操作以摊余常量时间运行,即添加n个元素需要O(n)时间。所有其他操作都是在线性时间内运行的(粗略地说)。与LinkedList实现相原创 2020-07-06 10:59:44 · 1665 阅读 · 0 评论 -
String类使用陷阱深度解析
StringdocString类表示字符串。Java程序中的所有字符串文本(如“abc”)都作为此类的实例实现。字符串是常量;它们的值在创建后不能更改。字符串缓冲区支持可变字符串。因为字符串对象是不可变的,所以可以共享它们。例如:String str = "abc";相当于:char data[] = {'a', 'b', 'c'};String str = new String(data);以下是有关如何使用字符串的更多示例:System.out.println("abc");原创 2020-07-03 18:04:23 · 385 阅读 · 0 评论 -
java原生数据类型及其使用陷阱
原生数据类型Windows: notepad, editplus, ultraedit, gvimLinux: vi, vim, gedit2. Java 中的数据类型分为两大类:1 ) 原生数据类型 (Primitive Data Type )2 ) 引用类型( 对象类型 ) (Reference Type )3. 变量与常量 :所谓常量,就是值不会变化 的量;所谓变量,就是值可以变化的量。4. 如何定义变量?变量类型 变量名;int a;5. 如何为变量赋值?变原创 2020-06-30 18:13:54 · 219 阅读 · 0 评论