- 博客(20)
- 收藏
- 关注
原创 工具详解 - Git 详解
慎用,一般情况下,本地分支比远程要信,所以可以直接推送到远程,但有时推送到远程后发现有问题,进行了版本回退,旧版本或者分叉版本推送到远程,需要添加-f参数,表示强制覆盖。这个时候已经执行了git add,但是未执行git commit ,但是用git diff已经看不到任何修改。Git是分布式代码托管的标杆,这里将提供如何使用Git,以及Git工作流的总结,和常用的操作命令。重置暂存区的某文件,与上一次commit保持一致,但是工作区不变。远程仓库的版本很新,但是你还是想用老的版本覆盖。
2023-07-05 16:32:33
248
原创 创建型模式的特点和分类
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成。就像我们去商场购买商品时,不需要知道商品是怎么生产出来一样,因为它们由专门的厂商生产。创建型模式分为以下几种。单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。 原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类.
2022-04-29 15:18:40
339
原创 一句话总结软件设计七大原则
结合前几节的内容,我们一共介绍了 7 种设计原则,它们分别为开闭原则、里氏替换原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特法则和合成复用原则。这 7 种设计原则是软件设计模式必须尽量遵循的原则,是设计模式的基础。在实际开发过程中,并不是一定要求所有代码都遵循设计原则,而是要综合考虑人力、时间、成本、质量,不刻意追求完美,要在适当的场景遵循设计原则。这体现的是一种平衡取舍,可以帮助我们设计出更加优雅的代码结构。各种原则要求的侧重点不同,下面我们分别用一句话归纳总结软件设计模式的七大原则.
2022-04-29 15:16:15
272
原创 合成复用原则——面向对象设计原则
合成复用原则的定义合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。合成复用原则的重要性通常类的复用分为继承复用和合成复用两种,继承复用虽然有简单
2022-04-29 14:54:19
207
原创 迪米特法则——面向对象设计原则
迪米特法则的定义迪米特法则的定义是:只与你的直接朋友交谈,不跟“陌生人”说话(Talk only to your immediate friends and not to strangers)。其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。迪米特法则中的“朋友”是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接访问
2022-04-29 14:32:09
176
原创 接口隔离原则——面向对象设计原则
接口隔离原则的定义接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。以上两个定义的含义是:要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。 单一职责原..
2022-04-29 14:19:47
153
原创 单一职责原则——面向对象设计原则
单一职责原则的定义该原则提出对象不应该承担太多职责,如果一个对象承担了太多的职责,至少存在以下两个缺点:1、一个职责的变化可能会削弱或者抑制这个类实现其他职责的能力2、当客户端需要该对象的某一个职责时,不得不将其他不需要的职责全部包括简历,从而造成冗余代码或者代码的浪费。单一职责原则的优点单一职责原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性。优点:降低类的复杂度。一个类只负责一项职责,其逻辑肯定要比负责多项职责简单得多。 提高类的可读性。复杂性降低,自然其可读性会提高。
2022-04-29 14:03:13
110
原创 依赖倒置原则——面向对象设计原则
依赖倒置原则的定义高层模块不应该依赖底层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象,其核心思想是:要面向接口编程,不要面向实现编程。依赖倒转原则是实现开闭原则的重要途径之一,它降低了客户与实现模块之间的耦合。细节具有多边形,而抽象层相对稳定,因此以抽象为基础搭建起来的架构要比以细节为基础搭建起来的架构稳定的多。这里的抽象是指接口或者抽象类,而细节是指具体的实现类。使用接口或者抽象类的目的是制定好规范和契约,而不去设计任何具体的操作,把展现细节的任务交给他们的实现类去完成
2022-04-29 13:18:40
129
原创 里氏替换原则——面向对象设计原则
里氏替换原则的定义里氏替换原则:继承必须确保超类所拥有的性质在子类中仍然成立里氏替换原则抓哟阐述了有关继承的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,以及其中蕴含的道理。里氏替换原则是继承复用的基础,它反应了基类与子类之间的关系,是对开闭原则的补充,是对实现抽象化的具体步骤的规范。里氏替换原则的作用1 是实现开闭原则的重要方式之一2它客服了继承中重写父类造成的可复用性变差的特点。3它是动作正确行的保证。即类的扩展不会给已有的系统引入新的错误,降低了代码出错的可能性
2022-04-29 11:13:16
204
原创 使用开闭原则解决实际问题
首先创建一个教程接口ICourse,代码如下:public interface ICourse { Integer getId(); String getName(); Double getPrice();}下面创建一个java教程的类javaCoursepublic class JavaCourse implements ICourse { private Integer id; private String name; private D
2022-04-29 10:38:59
802
原创 开闭原则——面向对象设计原则
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据7条原则来开发程序,从而提高软件开发效率开闭原则的定义开闭原则:软件实体应当对扩展开放,对修改关闭这里的软件实体包括以下几个部分:1 项目中划分出的模块2类和接口3 方法开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。开闭原则的作用开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和
2022-04-29 10:34:38
146
原创 【009期】JavaSE面试题(九):集合之Set
List和Set的区别?List,Set都是继承自Collection接口。都是用来存储一组相同类型的元素的。List特点:元素有放入顺序,元素可重复 。有顺序,即先放入的元素排在前面。Set特点:元素无放入顺序,元素不可重复。无顺序,即先放入的元素不一定排在前面。不可重复,即相同元素在set中只会保留一份。所以,有些场景下,set可以用来去重。注意:set在元素插入时是要有一定的方法来判断元素是否重复的。这个方法很重要,决定了set中可以保存哪些元素。Set如何保证
2022-04-25 18:02:01
347
原创 【008期】JavaSE面试题(八):集合之List
说一下集合的体系?单列集合:双列集合:Collection 和 Collections的区别?Collection:是java.uitl下的接口,他是各种集合的父接口,继承于它的接口主要有set 和list;Conllecitons:是个java.util下的类,是针对集合的工具类,提供一系列静态方法对各种集合的搜索,排序,线程安全化等操作。List a=new ArrayList() 和 ArrayList a =new ArrayList()的区别...
2022-04-25 15:45:34
213
原创 【007期】JavaSE面试题(七):异常
说一下Java中的异常体系?Error和Exception的区别?Error(错误):系统中的错误,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。Exception(异常):表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。写出你最常见的 5 个 RuntimeException?(1)java.lang.N
2022-04-25 15:11:09
110
原创 【005期】JavaSE面试题(五):String类
String、StringBuffer、StringBuilder 的区别?都是final类,都不允许被继承String长度是不可变的,StringBuffer和StringBuilder长度是可变的。StringBuffer是线程安全的,StringBuilder是线程不安全的,但是他们两个中的所有方法都是相同的,StringBuffer在StringBuilder的方法上家了sychronized修饰,保证线程安全。StringBuilder比StringBuffer拥有更好..
2022-04-25 14:06:20
172
原创 【004期】JavaSE面试题(四):JavaSE语法(3)
重载(overload)和重写(override)的区别?方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不通则视为重载)重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法与相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常重载对返回类型没有特殊的要求。方法重载的规则:方法名一致,参数列表中参
2022-04-25 13:42:39
134
原创 【003期】JavaSE面试题(三):JavaSE语法(1)
& 和 && 的区别?&运算符有两种用法:按位与逻辑与&&运算符是短路与运算。逻辑与跟短路与的差别是很大的,虽然二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null
2022-04-25 13:21:53
393
原创 【002期】JavaSE面试题(二):基本数据类型与访问修饰符
Java的数据类型有哪些?访问权限修饰符 public、private、protected, 以及不写(默认)时的区别?Java中成员的访问权限共有四种,可见性如下: private default protected public 同一类中 √ √ √ √ 同一包中的类 √ √ √ 子类 √ √ 其他包中的类 √ √
2022-04-25 11:37:08
487
原创 【001期】 | JavaSE面试题(一):面向对象
面向对象和面向过程的区别?面向过程:优点:性能比面向对象高,因为类调用需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象容易维护、容易复用、容易扩展面向对象:优点:容易维护、容易复用、容易扩展、由于面向对象有封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护缺点:性能比面向过程低面向对象的特性以及你对这些特性的理解?一、封装通常认为封装
2022-04-25 10:57:58
134
原创 【000期】Java最全面试题库思维导图
为什么要整理面试题?但是现在Jdk都14了,很多人可能连jdk8新特性都没玩过,那面试的时候如何高效的和面试官瞎扯淡呢?那自然是需要题库考虑到这一点,会按一下六个梯度深入浅出进行面试题的更新第一梯度:计算机组成原理、操作系统原理、网络通信原理、数据结构和算法;第二梯度:javase基础、javaweb相关、java工具(maven/git等)、jdk工具、java各版本新特性、 jvm相关如内存模型、GC算法、JVM性能调优、设计模式;第三梯度:Sprin...
2022-04-25 09:49:49
298
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅