自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

绝对秋香

liqita 技术博客

  • 博客(111)
  • 资源 (1)
  • 收藏
  • 关注

原创 图解Kafka

什么是消息队列?简单来说,消息队列是存放消息的容器。客户端可以将消息发送到消息服务器,也可以从消息服务器获取消息。问题导读:为什么需要消息系统? kafka架构? kafka如何存储消息? Producer如何发送消息? Consumer如何消费消息? Offset如何保存? 如何保证消息不被重复消费? 如何保证消息的可靠性传输? 如何保证消息的顺序性?为什么需要消息系统?削峰数据库的处理能力是有限的,在峰值期,过多的请求落到后台,一旦超过系统的处理能力,可能会使系

2022-02-28 15:03:39 314

原创 (六)JAVA设计模式中的六大设计原则之开闭原则

开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,需要面向接口编程。

2021-12-28 11:33:00 237

原创 ​(十)JAVA基础及提高篇JDK8之Stream流详细说明

Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。

2021-12-24 18:32:23 215

原创 (五)JAVA设计模式中的六大设计原则之迪米特原则

迪米特法则又叫最少知道原则,最早是在1987年由美国Northeastern University的Ian Holland提出。通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。

2021-12-24 17:43:57 844

原创 (四)JAVA设计模式中的六大设计原则之接口隔离原则

接口隔离原则的含义是:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。

2021-12-23 17:20:15 269

原创 (三)JAVA设计模式中的六大设计原则之依赖倒置原则

所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体。实现开闭原则的关键是抽象化,并且从抽象化导出具体化实现,如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要手段。

2021-12-22 16:18:32 265

原创 (二)JAVA设计模式中的六大设计原则之里氏替换原则

父类中凡是已经实现好的方法(相对于抽象方法而言),实际上是在设定一系列的规范和契约,虽然它不强制要求所有的子类必须遵从这些契约,但是如果子类对这些非抽象方法任意修改,就会对整个继承体系造成破坏。而里氏替换原则就是表达了这一层含义。

2021-12-21 11:24:35 344

原创 (一)JAVA设计模式中的六大设计原则之单一职责原则

简单通俗的来说:一个类只负责一项职责。

2021-12-20 10:28:50 355

原创 二十三 JAVA设计模式23种设计模式之责任链模式实例demo

在职责链模式中,使得每一个对象都有可能来处理请求,从而实现了请求的发送者和接收者之间的解耦。同时职责链模式简化了对象的结构,它使得每个对象都只需要引用它的后继者即可,而不必了解整条链,这样既提高了系统的灵活性也使得增加新的请求处理类也比较方便。但是在职责链中我们不能保证所有的请求都能够被处理,而且不利于观察运行时特征。

2021-12-16 14:44:13 471

原创 二十二 JAVA设计模式23种设计模式之命令模式实例demo

命令模式可以将请求的发送者和接收者之间实现完全的解耦,发送者和接收者之间没有直接的联系,发送者只需要知道如何发送请求命令即可,其余的可以一概不管,甚至命令是否成功都无需关心。同时我们可以非常方便的增加新的命令,但是可能就是因为方便和对请求的封装就会导致系统中会存在过多的具体命令类。

2021-12-16 10:45:48 277

原创 二十一 JAVA设计模式23种设计模式之解释器模式实例demo

所谓解释器模式就是定义语言的文法,并且建立一个解释器来解释该语言中的句子。解释器模式描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发的编译器中。它描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子。

2021-12-13 11:10:13 236

原创 (二十)JAVA设计模式23种设计模式之迭代器模式实例demo

何为迭代器模式?所谓迭代器模式就是提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。迭代器模式是将迭代元素的责任交给迭代器,而不是聚合对象,我们甚至在不需要知道该聚合对象的内部结构就可以实现该聚合对象的迭代。

2021-12-09 09:27:32 463

原创 (十九)JAVA设计模式23种设计模式之中介者模式实例demo

所谓中介者模式就是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。在中介者模式中,中介对象用来封装对象之间的关系,各个对象可以不需要知道具体的信息通过中介者对象就可以实现相互通信。它减少了对象之间的互相关系,提供了系统可复用性,简化了系统的结构。

2021-12-08 10:41:54 340

原创 (十八)JAVA设计模式23种设计模式之备忘录模式实例demo

所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它实现了对信息的封装,使得客户不需要关心状态保存的细节。保存就要消耗资源,所以备忘录模式的缺点就在于消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。

2021-12-07 10:07:46 244

原创 ​(九)JAVA基础及提高篇集合类详细说明

​集合类是Java数据结构的实现。Java的集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。

2021-12-06 15:24:14 271

原创 (十七)JAVA设计模式23种设计模式之观察者模式实例demo

观察者模式包含如下角色:Subject: 目标ConcreteSubject: 具体目标Observer: 观察者ConcreteObserver: 具体观察者何谓观察者模式?观察者模式定义了对象之间的一对多依赖关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和删除观察者,使得系统更易于扩展。所以观察..

2021-12-06 10:18:51 262

原创 (十六)JAVA设计模式23种设计模式之状态模式实例demo

同时状态模式是将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。但是这样就会导致系统的结构和实现都会比较复杂,如果使用不当就会导致程序的结构和代码混乱,不利于维护。

2021-12-03 10:37:29 571

原创 (十五)JAVA设计模式23种设计模式之策略模式实例demo

在策略模式中它将这些解决问题的方法定义成一个算法群,每一个方法都对应着一个具体的算法,这里的一个算法我就称之为一个策略。虽然策略模式定义了算法,但是它并不提供算法的选择,即什么算法对于什么问题最合适这是策略模式所不关心的,所以对于策略的选择还是要客户端来做。客户必须要清楚的知道每个算法之间的区别和在什么时候什么地方使用什么策略是最合适的,这样就增加客户端的负担。

2021-12-02 11:25:08 281

原创 (十四)JAVA设计模式23种设计模式之模板模式实例demo

有些时候我们做某几件事情的步骤都差不多,仅有那么一小点的不同,在软件开发的世界里同样如此,如果我们都将这些步骤都一一做的话,费时费力不讨好。所以我们可以将这些步骤分解、封装起来,然后利用继承的方式来继承即可,当然不同的可以自己重写实现嘛!这就是模板方法模式提供的解决方案。

2021-12-01 14:51:54 661

原创 (十三)JAVA设计模式23种设计模式之访问者模式实例demo

访问者模式俗称23大设计模式中最难的一个。除了结构复杂外,理解也比较难。在我们软件开发中我们可能会对同一个对象有不同的处理,如果我们都做分别的处理,将会产生灾难性的错误。对于这种问题,访问者模式提供了比较好的解决方案。访问者模式即表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

2021-11-30 11:08:16 582

原创 (十二)JAVA设计模式23种设计模式之代理模式实例demo

代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引用。它使得客户不能直接与真正的目标对象通信。代理对象是目标对象的代表,其他需要与这个目标对象打交道的操作都是和这个代理对象在交涉。

2021-11-26 10:26:43 202

原创 (十一)JAVA设计模式23种设计模式之享元模式实例demo

在一个系统中对象会使得内存占用过多,特别是那些大量重复的对象,这就是对系统资源的极大浪费。享元模式对对象的重用提供了一种解决方案,它使用共享技术对相同或者相似对象实现重用。享元模式就是运行共享技术有效地支持大量细粒度对象的复用。系统使用少量对象,而且这些都比较相似,状态变化小,可以实现对象的多次复用。这里有一点要注意:享元模式要求能够共享的对象必须是细粒度对象。享元模式通过共享技术使得系统中的对象个数大大减少了,同时享元模式使用了内部状态和外部状态,同时外部状态相对独立,不会影响到内部状态,所以享...

2021-11-25 10:14:10 618

原创 (十)JAVA设计模式23种设计模式之外观模式实例demo

我们都知道类与类之间的耦合越低,那么可复用性就越好,如果两个类不必彼此通信,那么就不要让这两个类发生直接的相互关系,如果需要调用里面的方法,可以通过第三者来转发调用。外观模式非常好的诠释了这段话。外观模式提供了一个统一的接口,用来访问子系统中的一群接口。

2021-11-24 09:33:19 210

原创 (九)JAVA设计模式23种设计模式之装饰者模式实例demo

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

2021-11-23 09:50:48 340

原创 (八)JAVA设计模式23种设计模式之组合模式实例demo

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

2021-11-22 10:25:07 544

原创 (七)JAVA设计模式23种设计模式之桥接模式实例demo

桥接模式桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆。介绍意图:将抽象部分与实现部分分离,使它们都可以...

2021-11-19 16:20:50 641

原创 (六)JAVA设计模式23种设计模式之适配器模式实例demo

适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。我们通过下面的实例来演示适配器模式的使用。其中,音频播放器设备只能播放 mp3 文件,通过使用一个更高级的音频播放器来播放 vlc 和 mp4...

2021-11-17 14:53:38 725

原创 (八)JAVA基础及提高篇String、StringBuffer、StringBuilder区别

1、String:在字符串不经常变化的场景中可以使用String类,如:常量的声明、少量的变量运算等。 2、StringBuffer:在频繁进行字符串的运算(拼接、替换、删除等),并且运行在多线程的环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装等。 3、StringBuilder:在频繁进行字符串的运算(拼接、替换、删除等),并且运行在多线程的环境中,则可以考虑使用StringBuffer,如SQL语句的拼装、JSON封装等...

2021-11-17 11:36:26 353

原创 (七)JAVA基础及提高篇内部类实现多重继承

内部类一个重要的特性:内部类可以继承一个与外部类无关的类,保证了内部类的独立性,正是基于这一点,多重继承才会成为可能。demo入口类package com.other;import org.junit.Test;import principle.interface_segregation_principle.C;/** * 通过内部类来实现多重继承 */public class Client { @Test public void test(){ .

2021-11-15 17:11:21 612

原创 (六)JAVA基础及提高篇浅克隆及完全克隆

浅拷贝只是Java提供的一种简单的拷贝机制,不便于直接使用。clone()方法是使用Object类的clone()方法,但是该方法存在一个缺陷,它并不会将对象的所有属性全部拷贝过来,而是有选择性的拷贝,基本规则如下:1、 基本类型 如果变量是基本很类型,则拷贝其值,比如int、float等。2、 对象 如果变量是一个实例对象,则拷贝其地址引用,也就是说此时新对象与原来对象是公用该实例变量。3、 String字符串...

2021-11-15 10:26:07 95

原创 (五)JAVA设计模式23种设计模式之原型模式实例demo

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。优点:1、性能提高。2、逃避构造函数的约束。缺点:1、配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。2、必须实现 Cloneable 接口。3、逃避构造函数的约束。demo入口类packag.

2021-11-15 09:02:16 206

原创 (五)JAVA基础及提高篇栈和堆

栈函数中定义的基本类型变量,对象的引用变量都在函数的栈内存中分配。数据执行完毕,变量会立即释放,解约内存。栈内存中的数据,无默认初始化值,需要手动设置。堆堆内存用来存放new的对象和数组。堆内存中所有实体都有内存地址值。堆内存中的实体是用来封装数据的,这些数据都有默认初始化值。堆内存中的实体不被指向时,JVM启动垃圾回收机制,自动清除。补充局部变量定义:定义在函数中的变量、定义在函数中的参数上的变量、定义在for循环内部的变量dem...

2021-11-12 16:33:41 69

原创 (四)JAVA基础及提高篇抽象类与接口

抽象类特点:1、抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。2、抽象方法必须由子类来进行重写。3、只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方法。4、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。5、子类中的抽象方法不能与父类的抽象方法同名。6、abstract不能与final并列修饰同一个...

2021-11-12 15:22:03 69

原创 (四)JAVA设计模式23种设计模式之建造者模式实例demo

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各...

2021-11-12 14:33:27 405

原创 (三)JAVA基础及提高篇父类、子类的加载顺序

父类、子类的加载顺序1、父类的静态变量和静态块赋值(按照声明顺序)  2、自身的静态变量和静态块赋值(按照声明顺序)  3、父类的成员变量和块赋值(按照声明顺序)  4、父类构造器赋值  5、自身成员变量和块赋值(按照声明顺序)  6、自身构造器赋值  7、静态方法,实例方法只有在调用的时候才会去执行特别注意:当静态加载中遇到需要加载非静态的情况:先加载非静态再加载静态(因为非静态可以访问静态,而静态不能访问非静态)demo说明,结构图如下:入口Clent...

2021-11-11 15:51:45 1181 1

原创 (三)JAVA设计模式23种设计模式之抽象工厂模式实例demo

抽象工厂模式抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产抽象工厂(Abst...

2021-11-11 11:35:20 769

原创 (三)JAVA基础及提高篇三大特性之多态

Java 多态多态是同一个行为具有多个不同表现形式或形态的能力。多态的优点1. 消除类型之间的耦合关系 2. 可替换性 3. 可扩充性 4. 接口性 5. 灵活性 6. 简化性多态存在的三个必要条件继承 重写 父类引用指向子类对象:Parent p = new Child();Java 多态的经典例子继承链中对象方法的调用例子demo中继承关系图如下:入口类package com.other;import org.junit....

2021-11-11 11:03:09 373

原创 (二)JAVA基础及提高篇三大特性之继承

入口类package com.other;import org.junit.Test;/** * Java 继承 * 继承的概念 * 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 * * 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 */public class Client { @Test public void test(){ ...

2021-11-10 14:32:27 63

原创 (一)JAVA基础及提高篇三大特性之封装

封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节(当然也无从知道),但可以通过该对象对外的提供的接口来访问该对象。package com.other;import princi...

2021-11-10 11:43:06 59

原创 (二)JAVA设计模式23种设计模式之工厂方法模式实例demo

工厂方法模式入口类package factory_method_mod;import org.junit.Test;/** * 工厂模式 * 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 * * 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 * * 介绍 * 意图:定义一个创建对象的接口,让其子类自己决定..

2021-11-10 10:13:02 411

程序员面试宝典.pdf

非常实用,毕业生外企面试简历 职场牛人总结的面试成功守则 要以一颗平常心正确对待面试,要做好承受挫折的心理准备。即使面试一时失利,也不要...

2010-12-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除