- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 单一原则理论
开篇单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。定义一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其...
2019-05-28 21:12:13
470
原创 开闭原则理论
开篇开闭原则(OCP原则):面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。定义一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。软件实体:软件实体可以指一个软件模块、一个由多个类组成的局部结构或一个独立的类。特征:对扩展是开放的,对修改是封闭的。描述任何软件都需要面临一个很重要的问题,即它们的需求会随...
2019-05-28 21:10:52
818
原创 里氏替换原则
开篇如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1代换o2时,程序P的行为没有变化,那么类型S是类型T的子类型。定义所有引用基类(父类)的地方必须能透明地使用其子类的对象。描述里氏替换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何影响,反过来则成立,即:如果一个软件实体使用的是一个子类对象,那么...
2019-05-28 21:02:04
160
原创 依赖倒转原则
开篇如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则(DIP原则)就是面向对象设计的主要实现机制之一,它是系统抽象化的具体实现。定义抽象不应该依赖于细节,细节应该依赖于抽象。换言之就是针对接口编程,而不应该针对实现编程。描述依赖倒转原则要求我们在程序传递参数的时或者关联关系时,尽量引用层次高的抽象层或接口层,即使用接口或抽象类进行变量类型声明、参数类型声明、方法返回类...
2019-05-28 21:00:00
186
原创 接口隔离原则
定义使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。描述根据接口隔离原则,当一个接口太大时,我们需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干。这里的“接口”往往有两种不同的含义:一种是指一个类型所具有的方法特征的集合,仅仅是一种逻辑上的抽象;另外一种是指某种...
2019-05-28 20:54:44
298
原创 对象内存分配
概述 Java技术体系中所提到的内存自动化管理最终可以归结为自动化地解决两个问题 对象分配内存 内存分配往大方向上来讲,就是在堆上分配。如果启动了本地线程分配缓存,将按线程优先在TABLE上分配,少数情况下也可能直接分配在老年代中。 回收分配给对象的内存 关于回收内存我们可以使用各种的垃圾收集器、各种垃圾回收算法等来了解。 两种GC Minor...
2019-04-30 22:37:35
673
原创 垃圾回收算法
学习的作用在高并发的情况下的代码优化就需要垃圾回收、并且需要了解何时回收如何判断对象为垃圾对象引用计数法 在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器的值就+1,当引用失效的时候,引用计数器的值就-1。当引用计数器的值为0的时候,就会被回收。 引用计数法很少被使用,因为如果对象A在堆内存中被另一个对象B所引用,对象B又被对象A所引用,那么对象A和对象B的引用计...
2019-02-28 22:02:56
300
原创 JVM内存管理
内存管理示意图:我们通常所说的堆内存和栈内存。堆内存指定是线程共享区的堆;栈内存指的是线程独占区的虚拟机栈,具体说就是虚拟机栈中局部变量表这么一部分。方法区和堆是分配给进程的,所以就是所有的线程共享。虚拟机栈、本地方法栈和程序计数器是分配给每个独立线程的,是运行过程中必不可少的资源。程序计数器程序计数器是一块较小的内存空间,他可以看做是当前线程所执行的字节码的行号指示器。...
2019-02-27 20:24:55
108
原创 HotSpot虚拟机对象
对象的创建概述Java是一门面向对象的语言,Java程序运行过程中无时不刻都有对象被创建出来。在语言层面上,创建对象(克隆、反序列化)就是一个new关键字而已,但是在虚拟机层面却不是如此,看一下在虚拟机层面上创建对象的步骤 类加载检查当JVM检测到有一条new指令时,首先先检查该指令的参数是否在常量池中定位到一个类的符号引用,并检查这个符号引用所代表的类是否已被加载、解析...
2019-01-19 22:13:57
91
原创 Java体系结构
Java技术体系包括Java程序设计 各硬件平台上的Java虚拟机 Class文件格式 Java API类库、来自商业机构或者开源社区的第三方类库 我们通常所说的JDK包括三部分:Java程序设计语言、Java虚拟机、JavaAPI类库程序运行过程 Code通过编译器生成class文件格式,由JVM负责解析运行。此处的不一定是Java语言编写的Code,其...
2019-01-19 21:28:18
403
1
原创 oracle序列
序列定义序列是一个计数器,它并不会与特定的表关联。通过创建Oracle序列和触发器实现表的主键自增。 序列的用途一般用来填充主键和计数。创建序列CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [{CYCLE|
2018-02-06 15:42:37
181
原创 新建Maven项目只有resource目录
我们在新建Maven项目的时候,点开源包发现只有一个resource包。main/java和test/java包都不显示,如下图所示:这是因为在新建maven项目的时候,引用的JDK不会是默认的JDK,我们只需要在Java Build path中修改Library引用的jre就可以了。选中项目->Build Path ->Configure Build Path...->Libra
2017-10-27 20:47:37
2320
原创 修改plsql的连接数据库
在使用PL/SQL的时候,怎样添加数据库登录界面的数据库。Step1:找到tnsnames.ora文件,文件路径为:Oracle安装目录下oracle11\product\11.2.0\dbhome_1\NETWORK\ADMIN中Step2:编辑tnsnames.ora文件,在文件后面追加你要登录的远程数据库相关信息注意:修改完成之后需要重启PL/SQL,并且你的PL/SQL在首
2017-10-24 11:18:06
1917
转载 Oracle安装之后的服务
为什么需要了解安装Oracle11g之后,会发现系统开启和关闭都会变得非常缓慢,出现这样的情况是因为在机器启动的时候会加载服务,而Oracle服务又非常的吃内存,所以导致启动或者运行的时候变得非常缓慢Oracle11g服务详解在运行窗口运行services.msc,打开服务窗口,你会发现有七个Oracle开头的服务,默认开启的有四个服务,2个手动开启,1个禁止开启。假设你的数据库全局名
2017-10-17 18:24:05
1490
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人