
设计模式、秒杀系统、常见算法、分布式系统面试题备份6
发布日期:2021-05-07 20:43:29
浏览次数:23
分类:精选文章
本文共 3633 字,大约阅读时间需要 12 分钟。
JDK中常用设计模式
在Java开发中,设计模式是解决常见问题的有效方法。以下是JDK中几种常用的设计模式及其应用场景。
1. 单例模式(Singleton pattern)
意图
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
主要解决
一个全局使用的类频繁地创建与销毁。
实现
饿汉式
public class Singleton3 { private static final Singleton3 instance = new Singleton3(); private Singleton3() {} public static Singleton3 getInstance() { return instance; }}
懒汉式
public class Singleton2 { private static Singleton2 instance; private Singleton2() {} public static synchronized Singleton2 getInstance() { if (instance == null) { instance = new Singleton2(); } return instance; }}
2. 工厂模式(Factory pattern)
意图
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
主要解决
主要解决接口选择的问题。
实现
public interface Shape { void draw();}public class Rectangle implements Shape { @Override public void draw() { System.out.println("Rectangle"); }}public class Circle implements Shape { @Override public void draw() { System.out.println("Circle"); }}public class ShapeFactory { public Shape getShape(String shapeType) { shapeType = shapeType.toLowerCase(); switch (shapeType) { case "circle": return new Circle(); case "rectangle": return new Rectangle(); case "square": return new Square(); default: return null; } }}
3. 观察者模式(Observer pattern)
意图
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
实现
public class Subject { private Listobservers = new ArrayList<>(); private int state; public int getState() { return state; } public void setState(int state) { this.state = state; notifyAllObservers(); } public void attach(Observer observer) { observers.add(observer); } public void notifyAllObservers() { for (Observer observer : observers) { observer.update(); } }}public abstract class Observer { protected Subject subject; public abstract void update();}public class BinaryObserver extends Observer { public BinaryObserver(Subject subject) { this.subject = subject; subject.attach(this); } @Override public void update() { System.out.println("Binary String: " + Integer.toBinaryString(subject.getState())); }}
4. 装饰器模式(Decorator pattern)
意图
动态地给一个对象添加一些额外的职责。
实现
public interface Shape { void draw();}public abstract class ShapeDecorator implements Shape { protected Shape decoratorShape; public ShapeDecorator(Shape decoratorShape) { this.decoratorShape = decoratorShape; } @Override public void draw() { decoratorShape.draw(); }}public class RedShapeDecorator extends ShapeDecorator { public RedShapeDecorator(Shape decoratorShape) { super(decoratorShape); } @Override public void draw() { super.draw(); setRedBorder(decoratorShape); } private void setRedBorder(Shape decoratorShape) { System.out.println("Border Color: Red"); }}
2. 分布式系统设计
2.1 集群
集群是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。
2.2 分布式与集群的区别
- 分布式:一个业务分拆多个子业务,部署在不同的服务器上。
- 集群:同一个业务,部署在多个服务器上。
2.3 CAP定理
CAP定理指出在分布式系统中,无法同时满足一致性、可用性和分区容忍性。
2.4 BASE理论
BASE理论是对CAP定理的实践性总结,强调系统的基本可用性、软状态和最终一致性。
2.5 分布式系统的目标
提升系统的整体性能和吞吐量,同时保证分布式系统的容错性。
3. 数据结构与算法
3.1 冒泡排序
冒泡排序是一种简单的排序算法,通过反复交换相邻元素的位置,直到数组有序。
3.2 选择排序
选择排序通过从数组中找到最小(或最大)元素,并将其放到已排序区的末尾,逐步完成排序。
3.3 快速排序
快速排序通过分治法将数组划分为两部分,分别进行排序,最终达到整体有序。
3.4 递归
递归是一种函数调用自身的技术,常用于解决递归问题,如阶乘和斐波那契数列。
3.5 二分查找
二分查找是一种高效的查找算法,通过不断缩小搜索范围来定位目标元素。
3.6 一致性哈希
一致性哈希是一种特殊的哈希算法,通过构建环状的哈希空间,解决分布式系统中的负载均衡问题。
通过以上设计模式和算法的应用,可以显著提升Java程序的可维护性、可扩展性和性能。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月27日 07时28分35秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
手把手教你如何快速构建应用内消息推送与运营能力
2019-03-06
快服务流量之争:如何在快服务中占领一席之地
2019-03-06
【活动】直播揭秘<如何从0开发HarmonyOS硬件>
2019-03-06
Cocos平台集成AGC性能管理(二)—— 性能管理SDK集成
2019-03-06
华为推送服务 | 简单一招,提高用户活跃和留存
2019-03-06
基于Cocos SDKHub接入华为HMS Game服务—打包上架流程
2019-03-06
Unity平台 | 快速集成华为性能管理服务
2019-03-06
详细实例教程!集成华为虚假用户检测,防范虚假恶意流量
2019-03-06
对模拟器虚假设备识别能力提升15%!每日清理大师App集成系统完整性检测
2019-03-06
HMS Core Discovery-七个推送技巧带你玩转App运营
2019-03-06
使用Power BI构建数据仓库与BI方案
2019-03-06
pytest封神之路第二步 132个命令行参数用法
2019-03-06
字符集其实很简单
2019-03-06
Django认证系统并不鸡肋反而很重要
2019-03-06
快用Django REST framework写写API吧
2019-03-06
tep用户手册帮你从unittest过渡到pytest
2019-03-06
12张图打开JMeter体系结构全局视角
2019-03-06