java
文章平均质量分 57
ba_pi
这个作者很懒,什么都没留下…
展开
-
23种设计模式之享元模式
享元模式享元(Flyweight)模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。享元模式的本质是缓存共享对象,降低内存消耗。享元模式的主要优点是:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。其主要缺点是:为了使对象可以共享,需要将一些不能共享的状态外部化,这将增加程序的复杂性。读取享元模式的外部状态会使得运行时间稍微变长。pub原创 2022-01-06 21:52:21 · 80 阅读 · 0 评论 -
23种设计模式之装饰器模式
装饰器模式装饰器(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰器模式的主要优点:装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用通过使用不用装饰类及这些装饰类的排列组合,可以实现不同效果装饰器模式完全遵守开闭原则有些人早餐可能会吃煎饼,煎饼中可以加鸡蛋,也可以加香肠,但是不管怎么“加码”,都还是一个煎饼。在现实生活中,常常需要对现有产品增加新的功能原创 2021-12-16 19:53:27 · 304 阅读 · 0 评论 -
23种设计模式之桥接模式
桥接模式桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。举个栗子。车企生产汽车,有不同类型以及不同颜色,例如生产suv,吉普车,轿车,颜色以红色与黄色举例。遵循了里氏替换原则和依赖倒置原则,最终实现了开闭原则,对修改关闭,对扩展开放。桥接(Bridge)模式的优点是:抽象与实现分离,扩展能力强符合开闭原则符合合成复用原则其实现细节对客户透明所以在学习设计模式的时候发现与设计原则在很大原创 2021-12-15 18:02:12 · 261 阅读 · 0 评论 -
23种设计模式之原型模式
原型模式用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。原型模式有2种实现方式,浅克隆和深克隆。浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。由于 Java 提供了对象的 clone() 方法,所以用 Java 实现原型模式很简单。实现Cloneable接口,重写clone方法。例如,user类: /**原创 2021-11-20 11:51:34 · 85 阅读 · 0 评论 -
软件设计七大原则之接口隔离原则
接口隔离原则定义:一个类对另一个类的依赖应该建立在最小的接口上接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。例 学生成绩管理程序分析:学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全原创 2021-11-15 20:52:08 · 176 阅读 · 0 评论 -
软件设计七大原则之单一职责原则
单一职责原则单一职责原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性。例1:大学学生工作管理程序。分析:大学学生工作主要包括学生生活辅导和学生学业指导两个方面的工作,其中生活辅导主要包括班委建设、出勤统计、心理辅导、费用催缴、班级管理等工作,学业指导主要包括专业引导、学习辅导、科研指导、学习总结等工作。如果将这些工作交给一位老师负责显然不合理,正确的做法是生活辅导由辅导员负责,学业指导由学业导师负责。uml图如下三个类代码如下:public interface Student {原创 2021-11-15 14:32:41 · 497 阅读 · 0 评论 -
软件设计七大原则之依赖倒置原则
依赖倒置原则核心思想是:要面向接口编程,不要面向实现编程。例1:顾客购物程序。分析,顾客购物从然后从成都商店和兰州商店购物。uml图如下1.顾客会从很多家商店购物,抽象一个商店接口,public interface Shop { void sell();}2.兰州与成都商店实现shop购买方式public class ChengduShop implements Shop { @Override public void sell() { Syste原创 2021-11-13 17:26:26 · 1274 阅读 · 0 评论 -
软件设计七大原则之开闭原则
开闭原则简单描述:对扩展开放,对修改关闭。开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。实例1:课程以C语言中文网的教程体系为例,来讲解如何使用开闭原则解决实际问题。创建一个 Java 教程的类 JavaCourse。现在要给 Java 教程做活动,价格优惠。如果修改 JavaCourse 类中的 getPrice() 方法,则会存在一定防线,可能影响到其它地方的调用结果。UML图1.首先创建一个教程接口 IC原创 2021-11-11 12:02:38 · 1737 阅读 · 0 评论 -
springboot多环境配置
application.yaml配置spring: # 环境 dev:开发环境|test:测试环境|produce:生产环境 profiles: active: @spring.active@ #激活的配置文件resource下新建文件,文件内部写具体配置在pop.xml project下级新增以下代码<profiles> <profile> <id>dev</id>原创 2021-10-20 17:26:02 · 44 阅读 · 0 评论 -
工作流引擎activiti从陌生到入门
一、创建项目1.创建一个springboot项目,勾选自己需要的依赖,也可以后期在pom.xml添加引入activiti依赖<!--activiti--><dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artifactId> <version>7.1.0.M4<原创 2021-02-26 11:53:11 · 307 阅读 · 2 评论 -
查找算法
查找算法直接查找(遍历的方式查找,效率较低)折半查找(有顺序,类似猜数字大小,确定一个区间)插值查找(与折半查找类型差不多,确定区间范围时的计算方式不同)斐波拉契查找(与折半查找类型差不多,确定区间范围时的计算方式采用黄金分割比例)索引查找(分块索引,倒排索引–文章关键字索引)二叉排序树(二叉查找树)平衡二叉树(通过树的旋转构造一棵平衡二叉树,与哈夫曼树类似)多路查找树(应用,降低磁盘IO)散列函数(简单查找+分布均匀)以上是一些查找算法, 这里以折半查找与散列函数查找为例,至于为什么原创 2021-02-04 23:47:37 · 160 阅读 · 1 评论 -
哈夫曼树/编码:java实现
哈夫曼树哈夫曼编码原创 2021-01-18 12:25:06 · 742 阅读 · 2 评论 -
树及二叉树:java实现
https://codechina.csdn.net/mirrors/mcrwayfun/java-data-structure/-/blob/master/doc/source/tree/%E6%A0%91.md#6-%E8%8E%B7%E5%8F%96%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%AB%98%E5%BA%A6%E5%92%8C%E5%BA%A6原创 2021-01-10 16:19:41 · 170 阅读 · 2 评论 -
数据结构与算法之栈与队列:java实现
闻理似悟,遇境则迷栈与队列来说也算是一种特殊的线性表,栈的特点是后进先出,队列的特点是先进先出。栈栈的特点是后进先出,栈的操作只有出栈和入栈(也叫压栈),除此之外,还包含栈顶与栈底的指向以及栈的长度。因此栈的定义如下public class ZStack { /** * 栈顶指向 */ private int top = 0; /** * 栈底指向 */ private int bottom = 0; /**原创 2020-12-27 20:40:22 · 4618 阅读 · 13 评论 -
数据结构与算法之线性表:java实现
我们每天做着和昨天一样的事情,却又希望明天的结果与今天不一样。呵呵!!!音乐<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=298 height=52 src="//music.163.com/outchain/player?type=2&id=293769&auto=1&height=32"></iframe>前言程序 = 数据结构 + 算法原创 2020-12-20 22:49:21 · 366 阅读 · 0 评论 -
spirngboot 配置redis
1.pom.xml引入redis <!--redis开始--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-re...原创 2020-02-29 23:09:19 · 306 阅读 · 0 评论 -
java多线程通信(多生产者-多消费者实现)
class ProducerConsumerDemo{ public static void main(String[] args){ Resource r = new Resource(); Producer pro = new Producer(r); Consumenr con = new Consumenr(r); Thread t1 = new Threa...原创 2019-08-04 23:31:14 · 218 阅读 · 0 评论