设计模式代码

参考地址:https://www.runoob.com/design-pattern/design-pattern-tutorial.html

工厂模式

package com.up.designpatterns.factory;/*** @description: 工厂模式* @author: huilong.ding* @date: 2024/03/28 16:36**/
public class factory {public static void main(String[] args) {ShapeFactory shapeFactory = new ShapeFactory();//获取 Circle 的对象,并调用它的 draw 方法Shape shape1 = shapeFactory.getShape("CIRCLE");//调用 Circle 的 draw 方法shape1.draw();//获取 Rectangle 的对象,并调用它的 draw 方法Shape shape2 = shapeFactory.getShape("RECTANGLE");//调用 Rectangle 的 draw 方法shape2.draw();//获取 Square 的对象,并调用它的 draw 方法Shape shape3 = shapeFactory.getShape("SQUARE");//调用 Square 的 draw 方法shape3.draw();}}interface Shape {void draw();
}class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("Inside Rectangle::draw() method.");}
}class Square implements Shape {@Overridepublic void draw() {System.out.println("Inside Square::draw() method.");}
}class Circle implements Shape {@Overridepublic void draw() {System.out.println("Inside Circle::draw() method.");}
}class ShapeFactory {//使用 getShape 方法获取形状类型的对象public Shape getShape(String shapeType){if(shapeType == null){return null;}if(shapeType.equalsIgnoreCase("CIRCLE")){return new Circle();} else if(shapeType.equalsIgnoreCase("RECTANGLE")){return new Rectangle();} else if(shapeType.equalsIgnoreCase("SQUARE")){return new Square();}return null;}
}

抽象工厂模式

package com.up.designpatterns.abstractfactory;/*** @description: 抽象工厂* @author: huilong.ding* @date: 2024/03/28 17:02**/
public class AbstractFactoryDemo {
}/*为形状创建一个接口。*/interface Shape {void draw();
}
//draw步骤 2
//        创建实现接口的实体类。
//
//        Rectangle.java
//
//        Rectangle.java
class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("Inside Rectangle::draw() method.");}
}class Square implements Shape {@Overridepublic void draw() {System.out.println("Inside Square::draw() method.");}
}class Circle implements Shape {@Overridepublic void draw() {System.out.println("Inside Circle::draw() method.");}
}
//步骤 3
//        为颜色创建一个接口。
//
//        Color.java
interface Color {void fill();
}
//步骤4
//        创建实现接口的实体类。
//
//        Red.java
class Red implements Color {@Overridepublic void fill() {System.out.println("Inside Red::fill() method.");}
}class Green implements Color {@Overridepublic void fill() {System.out.println("Inside Green::fill() method.");}
}class Blue implements Color {@Overridepublic void fill() {System.out.println("Inside Blue::fill() method.");}
}
//步骤 5
//        为 Color 和 Shape 对象创建抽象类来获取工厂。
//
//        AbstractFactory.java
abstract class AbstractFactory {public abstract Color getColor(String color);public abstract Shape getShape(String shape);
}
//步骤 6
//        创建扩展了 AbstractFactory 的工厂类,基于给定的信息生成实体类的对象。
//
//        ShapeFactory.java
class ShapeFactory extends AbstractFactory {@Overridepublic Shape getShape(String shapeType){if(shapeType == null){return null;}if(shapeType.equalsIgnoreCase("CIRCLE")){return new Circle();} else if(shapeType.equalsIgnoreCase("RECTANGLE")){return new Rectangle();} else if(shapeType.equalsIgnoreCase("SQUARE")){return new Square();}return null;}@Overridepublic Color getColor(String color) {return null;}
}class ColorFactory extends AbstractFactory {@Overridepublic Shape getShape(String shapeType){return null;}@Overridepublic Color getColor(String color) {if(color == null){return null;}if(color.equalsIgnoreCase("RED")){return new Red();} else if(color.equalsIgnoreCase("GREEN")){return new Green();} else if(color.equalsIgnoreCase("BLUE")){return new Blue();}return null;}
}
//步骤 7
//        创建一个工厂创造器/生成器类,通过传递形状或颜色信息来获取工厂。
//
//        FactoryProducer.java
class FactoryProducer {public static AbstractFactory getFactory(String choice){if(choice.equalsIgnoreCase("SHAPE")){return new ShapeFactory();} else if(choice.equalsIgnoreCase("COLOR")){return new ColorFactory();}return null;}
}
//步骤 8
//        使用 FactoryProducer 来获取 AbstractFactory,通过传递类型信息来获取实体类的对象。
//
//        AbstractFactoryPatternDemo.java
class AbstractFactoryPatternDemo {public static void main(String[] args) {//获取形状工厂AbstractFactory shapeFactory = FactoryProducer.getFactory("SHAPE");//获取形状为 Circle 的对象Shape shape1 = shapeFactory.getShape("CIRCLE");//调用 Circle 的 draw 方法shape1.draw();//获取形状为 Rectangle 的对象Shape shape2 = shapeFactory.getShape("RECTANGLE");//调用 Rectangle 的 draw 方法shape2.draw();//获取形状为 Square 的对象Shape shape3 = shapeFactory.getShape("SQUARE");//调用 Square 的 draw 方法shape3.draw();//获取颜色工厂AbstractFactory colorFactory = FactoryProducer.getFactory("COLOR");//获取颜色为 Red 的对象Color color1 = colorFactory.getColor("RED");//调用 Red 的 fill 方法color1.fill();//获取颜色为 Green 的对象Color color2 = colorFactory.getColor("GREEN");//调用 Green 的 fill 方法color2.fill();//获取颜色为 Blue 的对象Color color3 = colorFactory.getColor("BLUE");//调用 Blue 的 fill 方法color3.fill();}
}

策略模式

package com.up.designpatterns.strategy;/*** @description: 策略模式* @author: huilong.ding* @date: 2024/03/28 14:42**/
public class StrategyPatternDemo {public static void main(String[] args) {// 加法;System.out.println(new Context(new OperationAdd()).executeStrategy(5, 6));// 减法;System.out.println(new Context(new OperationSubtract()).executeStrategy(5, 6));}
}interface Strategy {public int doOperation(int num1, int num2);
}class OperationAdd implements Strategy{@Overridepublic int doOperation(int num1, int num2) {return num1 + num2;}
}class OperationSubtract implements Strategy{@Overridepublic int doOperation(int num1, int num2) {return num1 - num2;}
}class Context {private Strategy strategy;public Context(Strategy strategy) {this.strategy = strategy;}public int executeStrategy(int num1, int num2) {return this.strategy.doOperation(num1, num2);}
}

观察者模式

package com.up.designpatterns.observer;import java.util.ArrayList;
import java.util.List;/*** @description: 观察者模式* @author: huilong.ding* @date: 2024/03/28 11:57**/public class ObserverDemo{public static void main(String[] args) {// 使用观察者模式循环打印a,b,c各10次;Subject subject = new Subject();new OneObserver(subject);new TwoObserver(subject);new ThreeObserver(subject);for (int i = 0; i < 10; i++) {subject.setState(i+1);}}}class Subject {protected List<Observer> observers =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();}}
}abstract class Observer {protected Subject subject;public abstract void update();
}class OneObserver extends Observer {public OneObserver(Subject subject) {this.subject = subject;this.subject.attach(this);}@Overridepublic void update() {System.out.println("a + " + this.subject.getState());}
}class TwoObserver extends Observer {public TwoObserver(Subject subject) {this.subject = subject;this.subject.attach(this);}@Overridepublic void update() {System.out.println("b + " + this.subject.getState());}
}class ThreeObserver extends Observer {public ThreeObserver(Subject subject) {this.subject = subject;this.subject.attach(this);}@Overridepublic void update() {System.out.println("c + " + this.subject.getState());}
}

单例模式

package com.up.designpatterns.singleton;/*** @description: 单例模式* @author: huilong.ding* @date: 2024/04/01 17:11**/
public class singletonDemo {public static void main(String[] args) {//不合法的构造函数//编译时错误:构造函数 SingleObject() 是不可见的//SingleObject object = new SingleObject();//获取唯一可用的对象SingleObject object = SingleObject.getInstance();//显示消息object.showMessage();}}class SingleObject{//创建 SingleObject 的一个对象private static SingleObject instance = new SingleObject();//让构造函数为 private,这样该类就不会被实例化private SingleObject(){}//获取唯一可用的对象public static SingleObject getInstance(){return instance;}public void showMessage(){System.out.println("Hello World!");}}

建造者模式

package com.up.designpatterns.builder;import java.util.ArrayList;
import java.util.List;/*** @description: 建造者模式* @author: huilong.ding* @date: 2024/04/01 17:41**/
//步骤 1
//        创建一个表示食物条目和食物包装的接口。
//
//        Item.java
interface Item {public String name();public Packing packing();public float price();
}
//Packing.javainterface Packing {public String pack();
}
//步骤 2
//        创建实现 Packing 接口的实体类。
//
//        Wrapper.javaclass Wrapper implements Packing {@Overridepublic String pack() {return "Wrapper";}
}
//Bottle.javaclass Bottle implements Packing {@Overridepublic String pack() {return "Bottle";}
}
//步骤 3
//        创建实现 Item 接口的抽象类,该类提供了默认的功能。
//
//        Burger.javaabstract class Burger implements Item {@Overridepublic Packing packing() {return new Wrapper();}@Overridepublic abstract float price();
}
//ColdDrink.javaabstract class ColdDrink implements Item {@Overridepublic Packing packing() {return new Bottle();}@Overridepublic abstract float price();
}
//步骤 4
//        创建扩展了 Burger 和 ColdDrink 的实体类。
//
//        VegBurger.javaclass VegBurger extends Burger {@Overridepublic float price() {return 25.0f;}@Overridepublic String name() {return "Veg Burger";}
}
//ChickenBurger.javaclass ChickenBurger extends Burger {@Overridepublic float price() {return 50.5f;}@Overridepublic String name() {return "Chicken Burger";}
}
//Coke.javaclass Coke extends ColdDrink {@Overridepublic float price() {return 30.0f;}@Overridepublic String name() {return "Coke";}
}
//Pepsi.javaclass Pepsi extends ColdDrink {@Overridepublic float price() {return 35.0f;}@Overridepublic String name() {return "Pepsi";}
}
//步骤 5
//        创建一个 Meal 类,带有上面定义的 Item 对象。
//
//        Meal.javaclass Meal {private List<Item> items = new ArrayList<Item>();public void addItem(Item item){items.add(item);}public float getCost(){float cost = 0.0f;for (Item item : items) {cost += item.price();}return cost;}public void showItems(){for (Item item : items) {System.out.print("Item : "+item.name());System.out.print(", Packing : "+item.packing().pack());System.out.println(", Price : "+item.price());}}
}
//步骤 6
//        创建一个 MealBuilder 类,实际的 builder 类负责创建 Meal 对象。
//
//        MealBuilder.javaclass MealBuilder {public Meal prepareVegMeal (){Meal meal = new Meal();meal.addItem(new VegBurger());meal.addItem(new Coke());return meal;}public Meal prepareNonVegMeal (){Meal meal = new Meal();meal.addItem(new ChickenBurger());meal.addItem(new Pepsi());return meal;}
}
//步骤 7
//        BuiderPatternDemo 使用 MealBuilder 来演示建造者模式(Builder Pattern)。
//
//        BuilderPatternDemo.javaclass BuilderDemo {public static void main(String[] args) {MealBuilder mealBuilder = new MealBuilder();Meal vegMeal = mealBuilder.prepareVegMeal();System.out.println("Veg Meal");vegMeal.showItems();System.out.println("Total Cost: " +vegMeal.getCost());Meal nonVegMeal = mealBuilder.prepareNonVegMeal();System.out.println("\n\nNon-Veg Meal");nonVegMeal.showItems();System.out.println("Total Cost: " +nonVegMeal.getCost());}
}

适配器模式

package com.up.designpatterns.adapter;/*** @description: 适配器模式* @author: huilong.ding* @date: 2024/04/01 20:07**/
//步骤 1
//        为媒体播放器和更高级的媒体播放器创建接口。
//
//        MediaPlayer.javainterface MediaPlayer {public void play(String audioType, String fileName);
}
//AdvancedMediaPlayer.javainterface AdvancedMediaPlayer {public void playVlc(String fileName);public void playMp4(String fileName);
}
//步骤 2
//        创建实现了 AdvancedMediaPlayer 接口的实体类。
//
//        VlcPlayer.javaclass VlcPlayer implements AdvancedMediaPlayer{@Overridepublic void playVlc(String fileName) {System.out.println("Playing vlc file. Name: "+ fileName);}@Overridepublic void playMp4(String fileName) {//什么也不做}
}
//Mp4Player.javaclass Mp4Player implements AdvancedMediaPlayer{@Overridepublic void playVlc(String fileName) {//什么也不做}@Overridepublic void playMp4(String fileName) {System.out.println("Playing mp4 file. Name: "+ fileName);}
}
//步骤 3
//        创建实现了 MediaPlayer 接口的适配器类。
//
//        MediaAdapter.javaclass MediaAdapter implements MediaPlayer {AdvancedMediaPlayer advancedMusicPlayer;public MediaAdapter(String audioType){if(audioType.equalsIgnoreCase("vlc") ){advancedMusicPlayer = new VlcPlayer();} else if (audioType.equalsIgnoreCase("mp4")){advancedMusicPlayer = new Mp4Player();}}@Overridepublic void play(String audioType, String fileName) {if(audioType.equalsIgnoreCase("vlc")){advancedMusicPlayer.playVlc(fileName);}else if(audioType.equalsIgnoreCase("mp4")){advancedMusicPlayer.playMp4(fileName);}}
}
//步骤 4
//        创建实现了 MediaPlayer 接口的实体类。
//
//        AudioPlayer.javaclass AudioPlayer implements MediaPlayer {MediaAdapter mediaAdapter;@Overridepublic void play(String audioType, String fileName) {//播放 mp3 音乐文件的内置支持if(audioType.equalsIgnoreCase("mp3")){System.out.println("Playing mp3 file. Name: "+ fileName);}//mediaAdapter 提供了播放其他文件格式的支持else if(audioType.equalsIgnoreCase("vlc")|| audioType.equalsIgnoreCase("mp4")){mediaAdapter = new MediaAdapter(audioType);mediaAdapter.play(audioType, fileName);}else{System.out.println("Invalid media. "+audioType + " format not supported");}}
}
//步骤 5
//        使用 AudioPlayer 来播放不同类型的音频格式。
//
//        AdapterPatternDemo.java
public class AdapterPatternDemo {public static void main(String[] args) {AudioPlayer audioPlayer = new AudioPlayer();audioPlayer.play("mp3", "beyond the horizon.mp3");audioPlayer.play("mp4", "alone.mp4");audioPlayer.play("vlc", "far far away.vlc");audioPlayer.play("avi", "mind me.avi");}
}

责任链模式

package com.up.designpatterns.chain;/*** @description: 责任链模式* @author: huilong.ding* @date: 2024/04/01 20:24**/
//步骤 1
//        创建抽象的记录器类。abstract class AbstractLogger {public static int INFO = 1;public static int DEBUG = 2;public static int ERROR = 3;protected int level;//责任链中的下一个元素protected AbstractLogger nextLogger;public void setNextLogger(AbstractLogger nextLogger){this.nextLogger = nextLogger;}public void logMessage(int level, String message){if(this.level <= level){write(message);}if(nextLogger !=null){nextLogger.logMessage(level, message);}}abstract protected void write(String message);}
//步骤 2
//        创建扩展了该记录器类的实体类。class ConsoleLogger extends AbstractLogger {public ConsoleLogger(int level){this.level = level;}@Overrideprotected void write(String message) {System.out.println("Standard Console::Logger: " + message);}
}class ErrorLogger extends AbstractLogger {public ErrorLogger(int level){this.level = level;}@Overrideprotected void write(String message) {System.out.println("Error Console::Logger: " + message);}
}class FileLogger extends AbstractLogger {public FileLogger(int level){this.level = level;}@Overrideprotected void write(String message) {System.out.println("File::Logger: " + message);}
}
//步骤 3
//        创建不同类型的记录器。赋予它们不同的错误级别,并在每个记录器中设置下一个记录器。每个记录器中的下一个记录器代表的是链的一部分。
//
//        ChainPatternDemo.java
public class ChainPatternDemo {private static AbstractLogger getChainOfLoggers(){AbstractLogger errorLogger = new ErrorLogger(AbstractLogger.ERROR);AbstractLogger fileLogger = new FileLogger(AbstractLogger.DEBUG);AbstractLogger consoleLogger = new ConsoleLogger(AbstractLogger.INFO);errorLogger.setNextLogger(fileLogger);fileLogger.setNextLogger(consoleLogger);return errorLogger;}public static void main(String[] args) {AbstractLogger loggerChain = getChainOfLoggers();loggerChain.logMessage(AbstractLogger.INFO, "This is an information.");loggerChain.logMessage(AbstractLogger.DEBUG,"This is a debug level information.");loggerChain.logMessage(AbstractLogger.ERROR,"This is an error information.");}
}

过滤器模式/标准模式

package com.up.designpatterns.criteriapattern;import java.util.ArrayList;
import java.util.List;/*** @description: 过滤器模式/标准模式* @author: huilong.ding* @date: 2024/04/01 17:52**/
//步骤 1
//        创建一个类,在该类上应用标准。class Person {private String name;private String gender;private String maritalStatus;public Person(String name,String gender,String maritalStatus){this.name = name;this.gender = gender;this.maritalStatus = maritalStatus;}public String getName() {return name;}public String getGender() {return gender;}public String getMaritalStatus() {return maritalStatus;}
}
//步骤 2
//        为标准(Criteria)创建一个接口。interface Criteria {public List<Person> meetCriteria(List<Person> persons);
}
//步骤 3
//        创建实现了 Criteria 接口的实体类。class CriteriaMale implements Criteria {@Overridepublic List<Person> meetCriteria(List<Person> persons) {List<Person> malePersons = new ArrayList<Person>();for (Person person : persons) {if(person.getGender().equalsIgnoreCase("MALE")){malePersons.add(person);}}return malePersons;}
}class CriteriaFemale implements Criteria {@Overridepublic List<Person> meetCriteria(List<Person> persons) {List<Person> femalePersons = new ArrayList<Person>();for (Person person : persons) {if(person.getGender().equalsIgnoreCase("FEMALE")){femalePersons.add(person);}}return femalePersons;}
}class CriteriaSingle implements Criteria {@Overridepublic List<Person> meetCriteria(List<Person> persons) {List<Person> singlePersons = new ArrayList<Person>();for (Person person : persons) {if(person.getMaritalStatus().equalsIgnoreCase("SINGLE")){singlePersons.add(person);}}return singlePersons;}
}
//AndCriteria.javaclass AndCriteria implements Criteria {private Criteria criteria;private Criteria otherCriteria;public AndCriteria(Criteria criteria, Criteria otherCriteria) {this.criteria = criteria;this.otherCriteria = otherCriteria;}@Overridepublic List<Person> meetCriteria(List<Person> persons) {List<Person> firstCriteriaPersons = criteria.meetCriteria(persons);return otherCriteria.meetCriteria(firstCriteriaPersons);}
}
//OrCriteria.java
//        import java.util.List;class OrCriteria implements Criteria {private Criteria criteria;private Criteria otherCriteria;public OrCriteria(Criteria criteria, Criteria otherCriteria) {this.criteria = criteria;this.otherCriteria = otherCriteria;}@Overridepublic List<Person> meetCriteria(List<Person> persons) {List<Person> firstCriteriaItems = criteria.meetCriteria(persons);List<Person> otherCriteriaItems = otherCriteria.meetCriteria(persons);for (Person person : otherCriteriaItems) {if(!firstCriteriaItems.contains(person)){firstCriteriaItems.add(person);}}return firstCriteriaItems;}
}
//步骤4
//        使用不同的标准(Criteria)和它们的结合来过滤 Person 对象的列表。
public class CriteriaPatternDemo {public static void main(String[] args) {List<Person> persons = new ArrayList<Person>();persons.add(new Person("Robert","Male", "Single"));persons.add(new Person("John","Male", "Married"));persons.add(new Person("Laura","Female", "Married"));persons.add(new Person("Diana","Female", "Single"));persons.add(new Person("Mike","Male", "Single"));persons.add(new Person("Bobby","Male", "Single"));Criteria male = new CriteriaMale();Criteria female = new CriteriaFemale();Criteria single = new CriteriaSingle();Criteria singleMale = new AndCriteria(single, male);Criteria singleOrFemale = new OrCriteria(single, female);System.out.println("Males: ");printPersons(male.meetCriteria(persons));System.out.println("\nFemales: ");printPersons(female.meetCriteria(persons));System.out.println("\nSingle Males: ");printPersons(singleMale.meetCriteria(persons));System.out.println("\nSingle Or Females: ");printPersons(singleOrFemale.meetCriteria(persons));}public static void printPersons(List<Person> persons){for (Person person : persons) {System.out.println("Person : [ Name : " + person.getName()+", Gender : " + person.getGender()+", Marital Status : " + person.getMaritalStatus()+" ]");}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20万就想买智能驾驶汽车?!我给你找到了三款车

文 | AUTO芯球 作者 | 雷歌 我都不敢相信&#xff0c;智能驾驶的车型已经这么便宜啦&#xff01; 一年多前&#xff0c;我一个前同事大冤种&#xff0c;还另掏3万多买某个造车新势力品牌的智驾包呢。 现在动不动就全给你标配了。 近的就说刚刚发布的小米SU7标准版&#xf…

962: 括号匹配问题

【学习版】 【C语言】 【C】 #include<iostream>class MyStack { public:struct Node {char val;Node* prev;Node* next;Node(char x) :val(x), prev(NULL),next(NULL) {};};MyStack() {base new Node(0);top base;}bool empty() {return top base;}void push(int …

Mysql底层原理五:如何设计、用好索引

1.索引的代价 空间上的代价 时间上的代价 每次对表中的数据进⾏增、删、改操作时&#xff0c;都需要去修改各个B树索引。⽽且我们讲过&#xff0c;B树每层节点都是按照索引列的值从⼩到⼤的顺序排序⽽组成了双 向链表。不论是叶⼦节点中的记录&#xff0c;还是内节点中的记录&a…

vue 中使 date/time/datetime 类型的 input 支持 placeholder 方法

一般在开发时&#xff0c;设置了 date/time/datetime 等类型的 input 属性 placeholder 提示文本时&#xff0c; 发现实际展示中却并不生效&#xff0c;如图&#xff1a; 处理后效果如图&#xff1a; 处理逻辑 判断表单项未设置值时&#xff0c;则设置其伪类样式&#xff0c;文…

深度学习基础之一:机器学习

文章目录 深度学习基本概念(Basic concepts of deep learning)机器学习典型任务机器学习分类 模型训练的基本概念基本名词机器学习任务流程模型训练详细流程正、反向传播学习率Batch size激活函数激活函数 sigmoid 损失函数MSE & M交叉熵损失 优化器优化器 — 梯度下降优化…

IVS模型解释

核心思路 【Implied volatility surface predictability: The case of commodity markets】 半参数化模型&#xff1a;利用各种参数(或者因子)对隐含波动率进行降维&#xff08;静态参数化因子模型&#xff09;&#xff0c;对参数化因子的时间序列进行间接的建模 基于非对称…

未来的技术发展趋势

文章目录 前言一、人工智能技术势必聚焦安全能力二、单云环境逐渐让位于多云环境三、后量子密码或将在美大范围普及总结前言 2023 年,与网络空间安全息息相关的人工智能等技术发展迅猛,新的信息安全时代已然拉开大幕。在目睹了 ChatGPT、“星链”和量子通信等技术展现出的巨…

计数问题java

计数问题 题目&#xff1a; 试计算在区间 1 到 n 的所有整数中&#xff0c;数字 x&#xff08;0 ≤ x ≤ 9&#xff09;共出现了多少次&#xff1f;例如&#xff0c;在 1 到 11 中&#xff0c;即在 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 中&#xff0c;数字 1 出现了 4 次。 输入…

rust实现一个post小程序

主要是白天折磨了半天&#xff0c;无论如何post出去都不能成功&#xff0c;搞得我专门修改了一堆server的代码&#xff0c;以拦截任何访问服务器的数据&#xff0c;结果还是返回502&#xff0c;结果晚上回来一遍过&#xff0c;也真是奇怪的不行。先把一遍过的代码放出来&#x…

RocketMQ笔记(七)SpringBoot整合RocketMQ发送事务消息

目录 一、简介1.1、流程图1.2、事务消息流程介绍 二、Maven依赖三、生产者3.1、application配置3.2、员工表3.3、实体3.4、持久层3.5、监听器 四、测试4.1、普通消息4.2、事务消息4.2.1、消费者4.2.2、正常提交4.2.3、异常提交 五、其他5.1、接口说明5.2、checkLocalTransactio…

解决Xshell连接Linux虚拟机速度慢问题

我们频繁更换网络环境时&#xff0c;可能会发现xshell连接Linux虚拟机的速度变得很慢 为什么呢&#xff1f; 因为ssh的服务端在连接时会自动检测dns环境是否一致导致的 我们把它修改为不检测即可 修改文件位置&#xff1a; vi /etc/ssh/sshd_config 把 #UseDNS yes 修改…

防抖 节流 防抖和节流

防抖和节流可以通过使用 Lodash 库中的 debounce 和 throttle 方法来实现。 防抖&#xff08;debounce&#xff09;是指在一定时间内&#xff0c;如果事件持续触发&#xff0c;则只执行最后一次事件。常用于输入框搜索、滚动加载等场景。 回城 节流&#xff08;throttle&…

有关介绍CVPR‘2024工作《持续学习的无干扰低秩适应》正式实施

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2024.04.03 Last edited: 2024.04.03 代码&#xff1a;GitHub - liangyanshuo/InfLoRA&#xff1a;CVPR2024 工作 Interference-Free Low-Rank A…

LeetCode-热题100:240. 搜索二维矩阵 II

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a; matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[…

2014最新AI智能系统ChatGPT网站源码+Midjourney绘画网站源码+搭建部署教程文档

一、文章前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持…

【Java基础】DOS命令

开始时间: April 8, 2024 结束时间: April 8, 2024 阶段: Done 绝对路径与相对路径 相对路径&#xff1a;从当前目录开始定位&#xff0c;形成的路径绝对路径&#xff1a;从**顶级目录&#xff0c;**开始定位&#xff0c;形成的路径 常用的 dos 命令 查看当前目录是有什么内…

图书馆自助借书机怎么借书

图书馆自助借书机借书流程如下&#xff1a; 1. 找到图书馆自助借书机&#xff0c;在机器上选择借书功能。 2. 输入自己的借书卡号或者身份证号码&#xff0c;如果是第一次借书&#xff0c;可能需要进行注册。 3. 输入图书的条形码号码&#xff0c;可以通过扫描条形码或者手动输…

子集生成的一些总结

对于给定的n&#xff0c;生成集合{1&#xff0c;2……n - 1}的子集 简单枚举有三种办法 1&#xff0c;增量构造法 一次选出一个元素放到集合中&#xff0c;每一次递归都需要输出集合&#xff0c;因为是子集 #include<cstdio> int A[1000000];void print_subset(int n,…

Hybrid混合开发 和 Android平台JSBridge的原理

书接上篇&#xff1a;移动端研发技术的进化历程 纯原生开发主要面临动态化和开发成本两个问题&#xff0c;而针对这两个问题&#xff0c;诞生了一些跨平台的动态化框架。 针对原生开发面临的问题&#xff0c;业界一直都在努力寻找好的解决方案&#xff0c;而时至今日&#xf…

【Shell语言学堂】Shell 脚本练习1

Shell 脚本练习 shell语言实战 Shell 脚本练习&#x1f4a7;CSDN划过手的泪滴t现有一个脚本可传入n个参数&#xff0c;要求在脚本中实现在终端输出第n个参数之前的所有参数(不包含第n个参数)编写一个计算bmi体质指数的脚本&#xff0c;该脚本需要用户输入身高和体重信息&#x…