当前位置: 首页 > news >正文

Java程序题案例分析

目录

一、基础语法

1. 类与对象

2. 接口与抽象类

二、面向对象语法

1. 继承与多态

2. 四种访问修饰符

三、设计模式相关语法

一、策略模式(接口回调实现)

1. 完整实现与解析

二、工厂模式(静态工厂方法实现)

1. 完整实现与解析

2. 模式变体

(1) 简单工厂模式(如上例)

(2) 工厂方法模式

三、观察者模式(内部类实现)

1. 完整实现与解析

2. 使用内部类的优化实现

四、设计模式综合应用示例

电商系统折扣策略案例

四、其他核心语法

1. List/Set/Map基本操作

2. 集合遍历

3.异常处理语法

4.IO基础语法

5.泛型类型推断

五、设计题高频语法要点

1. 枚举类型(状态模式常用)

2. 泛型(提高代码复用性)

六、例题 


一、基础语法

1. 类与对象

// 类定义   
public class ClassName {// 字段(成员变量)private int field;// 构造方法public ClassName(int param) {this.field = param;}// 方法public void methodName() {// 方法体}   
}// 对象创建与使用   
ClassName obj = new ClassName(10);   
obj.methodName();

2. 接口与抽象类

// 接口定义   
public interface InterfaceName {void abstractMethod();// Java8+默认方法default void defaultMethod() {// 实现}   
}// 抽象类定义   
public abstract class AbstractClass {public abstract void abstractMethod();public void concreteMethod() {// 实现}   
}   

二、面向对象语法

1. 继承与多态

class Parent {public void show() {System.out.println("Parent");}   
}class Child extends Parent {@Overridepublic void show() {System.out.println("Child");}   
}// 多态示例   
Parent obj = new Child();
obj.show(); // 输出"Child"

2. 四种访问修饰符

  • public - 所有类可见
  • protected - 同包及子类可见
  • 默认(无修饰符) - 同包可见
  • private - 仅本类可见

三、设计模式相关语法

一、策略模式(接口回调实现)

interface Strategy {void execute();   
}class Context {private Strategy strategy;public void setStrategy(Strategy s) {this.strategy = s;}public void executeStrategy() {strategy.execute();}        
}        

1. 完整实现与解析

// 策略接口   
interface PaymentStrategy {void pay(double amount);   
}// 具体策略类   
class CreditCardPayment implements PaymentStrategy {private String cardNumber;public CreditCardPayment(String cardNumber) {this.cardNumber = cardNumber;}@Overridepublic void pay(double amount) {System.out.println("使用信用卡" + cardNumber + "支付" + amount + "元");}   
}class AlipayPayment implements PaymentStrategy {private String account;public AlipayPayment(String account) {this.account = account;}@Overridepublic void pay(double amount) {System.out.println("使用支付宝账户" + account + "支付" + amount + "元");}   
}// 上下文类   
class PaymentContext {private PaymentStrategy strategy;public void setStrategy(PaymentStrategy strategy) {this.strategy = strategy;}public void executePayment(double amount) {strategy.pay(amount);}   
}// 使用示例   
public class StrategyDemo {public static void main(String[] args) {PaymentContext context = new PaymentContext();// 使用信用卡支付context.setStrategy(new CreditCardPayment("1234-5678-9012-3456"));context.executePayment(100.0);// 切换为支付宝支付context.setStrategy(new AlipayPayment("example@alipay.com"));context.executePayment(200.0);}   
}
  • 核心思想:定义算法族,分别封装起来,使它们可以互相替换

二、工厂模式(静态工厂方法实现)

class ProductFactory {public static Product createProduct(String type) {switch(type) {case "A": return new ProductA();case "B": return new ProductB();default: throw new IllegalArgumentException();}}            
}            

1. 完整实现与解析

// 产品接口   
interface Shape {void draw();   
}// 具体产品类   
class Circle implements Shape {@Overridepublic void draw() {System.out.println("绘制圆形");}   
}class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("绘制矩形");}   
}// 工厂类   
class ShapeFactory {// 静态工厂方法public static Shape createShape(String type) {if(type == null) {return null;}if(type.equalsIgnoreCase("CIRCLE")) {return new Circle();} else if(type.equalsIgnoreCase("RECTANGLE")) {return new Rectangle();}throw new IllegalArgumentException("不支持的形状类型");}   
}// 使用示例   
public class FactoryDemo {public static void main(String[] args) {// 使用工厂创建对象Shape circle = ShapeFactory.createShape("circle");circle.draw();Shape rectangle = ShapeFactory.createShape("rectangle");rectangle.draw();}    
}    

2. 模式变体

(1) 简单工厂模式(如上例)
(2) 工厂方法模式
interface ShapeFactory {Shape createShape();    
}class CircleFactory implements ShapeFactory {public Shape createShape() {return new Circle();}    
}class RectangleFactory implements ShapeFactory {public Shape createShape() {return new Rectangle();}
}
  • 核心思想:将对象的创建与使用分离

三、观察者模式(内部类实现)

class Subject {private List<Observer> observers = new ArrayList<>();public void addObserver(Observer o) {observers.add(o);}public void notifyObservers() {for(Observer o : observers) {o.update();}}// 观察者接口interface Observer {void update();}        
}        

1. 完整实现与解析

import java.util.ArrayList;   
import java.util.List;// 主题接口   
interface Subject {void registerObserver(Observer o);void removeObserver(Observer o);void notifyObservers();   
}// 具体主题类   
class WeatherData implements Subject {private List<Observer> observers;private float temperature;public WeatherData() {observers = new ArrayList<>();}@Overridepublic void registerObserver(Observer o) {observers.add(o);}@Overridepublic void removeObserver(Observer o) {observers.remove(o);}@Overridepublic void notifyObservers() {for(Observer observer : observers) {observer.update(temperature);}}// 业务方法:当气象站数据更新时调用public void measurementsChanged(float newTemp) {this.temperature = newTemp;notifyObservers();}   
}// 观察者接口   
interface Observer {void update(float temperature);   
}// 具体观察者类   
class CurrentConditionsDisplay implements Observer {@Overridepublic void update(float temperature) {System.out.println("当前温度: " + temperature + "℃");}   
}// 使用示例   
public class ObserverDemo {public static void main(String[] args) {WeatherData weatherData = new WeatherData();CurrentConditionsDisplay display = new CurrentConditionsDisplay();// 注册观察者weatherData.registerObserver(display);// 模拟数据变化weatherData.measurementsChanged(25.5f);weatherData.measurementsChanged(26.0f);}        
}        

2. 使用内部类的优化实现

class WeatherData {private List<Observer> observers = new ArrayList<>();private float temperature;// 内部接口public interface Observer {void update(float temp);}public void addObserver(Observer o) {observers.add(o);}public void setMeasurements(float temp) {this.temperature = temp;notifyObservers();}private void notifyObservers() {for(Observer o : observers) {o.update(temperature);}}        
}// 使用匿名内部类
WeatherData weather = new WeatherData();
weather.addObserver(new WeatherData.Observer() {@Overridepublic void update(float temp) {System.out.println("温度更新: " + temp);}
});
  • 核心思想:定义对象间一对多的依赖关系,当一个对象状态改变时,所有依赖它的对象都得到通知

四、设计模式综合应用示例

电商系统折扣策略案例

// 策略模式:折扣策略   
interface DiscountStrategy {double applyDiscount(double originalPrice);   
}class NoDiscount implements DiscountStrategy {public double applyDiscount(double price) {return price;}   
}class PercentageDiscount implements DiscountStrategy {private double percentage;public PercentageDiscount(double percentage) {this.percentage = percentage;}public double applyDiscount(double price) {return price * (1 - percentage/100);}   
}// 工厂模式:创建折扣策略   
class DiscountStrategyFactory {public static DiscountStrategy createStrategy(String type, double param) {switch(type) {case "NONE": return new NoDiscount();case "PERCENT": return new PercentageDiscount(param);default: throw new IllegalArgumentException();}}   
}// 观察者模式:订单状态通知   
class Order {private List<OrderObserver> observers = new ArrayList<>();private String status;public interface OrderObserver {void update(String orderStatus);}public void addObserver(OrderObserver o) {observers.add(o);}public void setStatus(String status) {this.status = status;notifyObservers();}private void notifyObservers() {for(OrderObserver o : observers) {o.update(status);}}
}
  1. 模式识别:快速判断题目要求使用的设计模式
  2. 类图转换:能够将UML类图转换为Java代码
  3. 模式组合:注意多种设计模式的组合使用
  4. 代码规范
    • 类名使用大驼峰
    • 方法名使用小驼峰
  5. 设计原则
    • 单一职责原则
    • 接口隔离原则

四、其他核心语法

1. List/Set/Map基本操作

List<String> list = new ArrayList<>();        
list.add("Java");        
list.get(0);Set<Integer> set = new HashSet<>();        
set.add(1);        
set.contains(1);Map<String, Integer> map = new HashMap<>();           
map.put("age", 25);   
map.get("age");   

2. 集合遍历

// for-each循环   
for(String item : list) {System.out.println(item);   
}// 迭代器   
Iterator<String> it = list.iterator();   
while(it.hasNext()) {System.out.println(it.next());   
}// Lambda表达式(Java8+)   
list.forEach(item -> System.out.println(item));   

3.异常处理语法

try {// 可能抛出异常的代码int result = 10 / 0;   
} catch (ArithmeticException e) {System.err.println("除零错误: " + e.getMessage());    
} finally {System.out.println("总会执行的代码");    
}    

4.IO基础语法

// 文件读取    
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {String line;while ((line = br.readLine()) != null) {System.out.println(line);}    
} catch (IOException e) {e.printStackTrace();    
}    

 5.泛型类型推断

通过泛型指定集合只能存储String类型,避免运行时ClassCastException

 // Java 5/6:需重复声明类型List<String> list = new ArrayList<String>();// Java 7+:使用<>自动推断List<String> list = new ArrayList<>();  // 编译器推断为ArrayList<String>

五、设计题高频语法要点

1. 枚举类型(状态模式常用)

enum State {START, RUNNING, STOPPED
}public class StateMachine {private State current = State.START;public void changeState(State newState) {this.current = newState;}
}

2. 泛型(提高代码复用性)

class Box<T> {private T content;public void set(T content) {this.content = content;}public T get() {return content;}
}// 使用
Box<String> stringBox = new Box<>();
stringBox.set("Hello");

六、例题 

阅读以下函数说明和Java代码,将应填入(n)处的子句写在答题纸的对应栏内。


【说明】

现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显示display()。

需要新增图形Circle,又已知有类XXCircle实现了所需要实现的功能:显示displayIt()。为了继承自Shape以提供统一接口,又不希望从头开发代码,希望使用XXCircle。这样将XXCircle作为Circle的一个属性,即Circle的对象包含一个XXCircle对象。当一个Circle对象被实例化时,它必须实例化一个相应的XXCircle对象;Circle对象收到的做任何事的请求都将转发给这个XXCircle对象。通过这种被称为Adapter的模式,Circle对象就可以通过“让XXCircle做实际工作”来表现自己的行为了。图7 - 52显示了各个类间的关系。以下是Java语言实现,能够正确编译通过。

图7 - 52 各个类之间的关系


【Java程序】

//Shape.java文件   
public interface Shape {public (1) abstract void display();   
}//XXCircle.java文件   
public class XXCircle {public void displayIt() {//省略具体实现}   
}//Circle.java文件   
public class Circle (2) implements Shape {private XXCircle pcx = (3) new XXCircle();public void display() {pcx.displayIt();}   
}//Factory.java文件   
public class Factory {public (4) static Shape getShapeInstance(int type) {switch (type) {case 1: return new Line();//Line类未定义,假设存在case 2: return new Square();//Square类未定义,假设存在case 3: return new Circle();default: return null;}}   
}//Main.java文件   
public class Main {public static void main(String[] args) {int type = 1;Factory factory = new Factory();Shape s;s = factory.(5) getShapeInstance(type);if (s == null) {System.out.println("Error get the instance!");return;}s.display();return;}   
}
  • (1) abstract:表示接口Shapedisplay方法的抽象性质。在Java接口里,方法默认是publicabstract的,写abstract明确该方法需由实现类去具体实现。
  • (2) implements:用于Circle类声明实现Shape接口。在Java中,类通过implements关键字来表明遵循某个接口的契约,要实现接口里的抽象方法。
  • (3) new XXCircle():用于在Circle类中实例化XXCircle对象pcx,创建一个XXCircle类的实例供后续使用。
  • (4) Shape:这是Factory类中getShapeInstance方法的返回类型。因为该方法返回的可能是LineSquareCircle等不同形状类的实例,而这些类都实现了Shape接口,所以返回类型是Shape接口类型,以实现多态。
  • (5) getShapeInstance(type):在Main类中,通过Factory类的实例factory调用getShapeInstance方法,并传入参数type,以此获取对应的形状实例。
#include <iostream>   
using namespace std;class Shape {   
public:virtual void display() = 0;  // (1) 纯虚函数声明   
};class Line : public Shape {   
public:void display() override {cout << "Displaying Line" << endl;}   
};class Square : public Shape {   
public:void display() override {cout << "Displaying Square" << endl;}   
};class XXCircle {   
public:void displayIt() {cout << "Displaying XXCircle" << endl;}   
};class Circle : public Shape {   
private:XXCircle *pxc;   
public:Circle();void display() override;   
};Circle::Circle() {pxc = new XXCircle();  // (2) 创建XXCircle对象   
}void Circle::display() {pxc->displayIt();  // (3) 调用XXCircle的显示方法   
}class Factory {   
public:Shape* getShapeInstance(int type) {  // (4) 返回Shape指针类型switch(type) {case 1: return new Square();case 2: return new Line();case 3: return new Circle();default: return nullptr;}}   
};int main(int argc, char *argv[]) {if(argc != 2) {cout << "Usage: program <shape_type>" << endl;cout << "Shape types: 1=Square, 2=Line, 3=Circle" << endl;return 1;}int type = atoi(argv[1]);Factory factory;Shape *s = factory.getShapeInstance(type);  // (5) 获取形状实例if(s == nullptr) {cout << "Error: Invalid shape type!" << endl;return 1;}s->display();delete s;return 0;   
}
  1. virtual void display() = 0; - 声明纯虚函数,使Shape成为抽象类
  2. new XXCircle() - 创建XXCircle对象实例
  3. displayIt() - 调用XXCircle的显示方法
  4. Shape* - 工厂方法返回Shape基类指针
  5. getShapeInstance(type) - 调用工厂方法获取形状实例

阅读以下函数说明和Java代码,将应填入(n)处的子句写在答题纸的对应栏内。


【说明】 很多时候,希望某些类只有一个或有限的几个实例,典型解决方案是所谓单身(Singleton)模式。但在多线程情况下,Singleton模式有可能出现问题,需要进行同步检查。如果对“检查Singleton对象是否已经创建”进行同步,则存在严重的瓶颈,所有的线程都必须等待检查对象是否存在。解决方式是一种称为Double-Checked-Locking的模式,其意图是将非必需的锁定优化掉,同步检查最多只发生一次,因此不会成为瓶颈。以下是Java语言实现,能够正确编译通过。


【Java程序】

public class USTax {private static USTax instance = null;(1) USTax() {}private (2) static void doSync() {if(instance == null) {System.out.println("实例不存在,创建实例...");instance = (3);System.out.println("实例创建成功");}else{System.out.println("实例已被创建");}}public static USTax getInstance() {if(instance == null) {System.out.println("实例暂时不存在");(4); //同步控制}else{System.out.println("实例已经存在");}return (5);}   
}
  • (1):答案为private。因为希望USTax类只有一个实例,将构造函数设为private可防止外部直接实例化。
  • (2):答案是synchronizeddoSync方法用于同步控制,所以要声明为synchronized
  • (3):应填new USTax()。此处是创建USTax实例。
  • (4):答案是doSync()。进行同步控制需调用同步函数doSync
  • (5):应填instance。此位置是返回实例的引用。

相关文章:

Java程序题案例分析

目录 一、基础语法 1. 类与对象 2. 接口与抽象类 二、面向对象语法 1. 继承与多态 2. 四种访问修饰符 三、设计模式相关语法 一、策略模式&#xff08;接口回调实现&#xff09; 1. 完整实现与解析 二、工厂模式&#xff08;静态工厂方法实现&#xff09; 1. 完整实…...

【Lanqiao】数位翻转

题目&#xff1a; 思路&#xff1a; 写蓝桥不能不写dp&#xff0c;就像.... 题目数据给的不大&#xff0c;所以我们可以考虑一种 n*m 的做法&#xff0c;那么对于这种题目可以想到的是用dp来写&#xff0c;但是如何构造转移方程与状态是个难事 由于这题对于任意一个数我们有两…...

基于QT(C++)实现(图形界面)校园导览系统

校园导览系统 一、任务描述 大学校园充满着忙忙碌碌的学生和老师们&#xff0c;但是有时候用户宝贵的时间会被复杂的道路和愈来愈多的建筑物的阻碍而浪费&#xff0c;为了不让同学们在自己的目的地的寻路过程中花费更多的时间&#xff0c;我们着手开发这样一款校园导览系统。…...

【C/C++】虚函数

&#x1f4d8; C 虚函数详解&#xff08;Virtual Function&#xff09; &#x1f4cc; 什么是虚函数&#xff1f; 虚函数&#xff08;Virtual Function&#xff09; 是 C 中实现运行时多态&#xff08;Runtime Polymorphism&#xff09; 的核心机制。 它允许派生类 重写&…...

no main manifest attribute, in xxx.jar

1、问题&#xff1a; Spring Boot项目在idea中可以正常运行&#xff0c;但是运行Spring Boot生成的jar包&#xff0c;报错&#xff1a; 1、no main manifest attribute, in xxx.jar 2、xxx.jar中没有主清单属性 2、解决办法&#xff1a; 删除pom.xml中<configuration&g…...

使用 AI 如何高效解析视频内容?生成思维导图或分时段概括总结

一、前言 AI 发展的如此迅速&#xff0c;有人想通过 AI 提效对视频的解析&#xff0c;怎么做呢&#xff1f; 豆包里面有 AI 视频总结的功能&#xff0c;可以解析bilibili网站上部分视频&#xff0c;如下图所示&#xff1a; 但有的视频解析时提示&#xff1a; 所以呢&#x…...

比较入站和出站防火墙规则

组织需要仔细配置防火墙规则&#xff0c;监控网络的传入和传出流量&#xff0c;从而最大限度降低遭受攻击的风险。在有效管理入站和出站防火墙规则前&#xff0c;了解入站与出站流量的区别至关重要。 一、什么是入站流量&#xff1f; 入站流量指的是并非源自网络内部&#xf…...

开放式耳机什么品牌的好用?性价比高的开放式耳机品牌推荐一下

这几年蓝牙耳机发展得很快&#xff0c;从最早的入耳式&#xff0c;到现在流行的开放式&#xff0c;选择越来越多。我自己是比较偏向佩戴舒适的类型&#xff0c;用过开放式之后就回不去了。它不堵耳、不压迫&#xff0c;戴着轻松不累&#xff0c;对我这种耳朵容易不适的人来说太…...

WPF之高级绑定技术

文章目录 引言多重绑定&#xff08;MultiBinding&#xff09;基本概念实现自定义IMultiValueConverterMultiBinding在XAML中的应用示例使用StringFormat简化MultiBinding 优先级绑定&#xff08;PriorityBinding&#xff09;基本概念PriorityBinding示例实现PriorityBinding的后…...

k8s高可用集群,自动化更新证书脚本

#!/bin/bash # 切换到证书目录 cd /etc/kubernetes/pki || exit # 备份原有证书&#xff08;重要&#xff01;&#xff09; sudo cp -r apiserver.crt apiserver.key \ apiserver-etcd-client.crt apiserver-etcd-client.key \ apiserver-kubelet-client…...

【Python 函数】

Python 中的函数&#xff08;Function&#xff09;是可重复使用的代码块&#xff0c;用于封装特定功能并提高代码复用性。以下是函数的核心知识点&#xff1a; 一、基础语法 1. 定义函数 def greet(name):"""打印问候语""" # 文档字符串&…...

Filecoin矿工资金管理指南:使用lotus-shed actor withdraw工具

Filecoin矿工资金管理指南&#xff1a;使用lotus-shed actor withdraw工具 引言lotus-shed actor withdraw命令概述命令语法参数选项详解常见使用场景1. 提取全部可用余额2. 提取指定数量的FIL3. 通过受益人地址发送交易 最佳实践资金安全管理操作流程优化 常见问题与解决方案提…...

AI辅助DevOps与自动化测试:重构软件工程效率边界

随着AI技术渗透至软件开发生命周期&#xff0c;DevOps与自动化测试领域正经历颠覆性变革。本文系统性解析AI在需求分析、测试用例生成、部署决策、异常检测等环节的技术实现路径&#xff0c;结合微软Azure DevOps、Tesla自动驾驶测试等典型场景&#xff0c;探讨AI如何突破传统效…...

css内容省略——text-overflow: ellipsis

title: css内容省略 date: 2025-05-07 19:41:17 tags: css text-overflow: ellipsis text-overflow: ellipsis用于在文本溢出容器时显示省略号(…) 1.单行省略 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"&g…...

nginx性能优化与深度监控

一、性能调优方向 1. 系统层面优化 内核参数调整 TCP队列与连接管理&#xff1a; net.core.somaxconn&#xff08;最大连接队列长度&#xff0c;建议设为65535&#xff09;net.ipv4.tcp_max_syn_backlog&#xff08;SYN队列长度&#xff0c;建议65535&#xff09;net.ipv4.tc…...

leetcode 70.爬楼梯(c++详细最全解法+补充知识)

目录 题目 解答过程 补充哈希表知识 哈希表基本特性 常用成员函数 基本用法 实现代码 1.递归 2.循环遍历 3.哈希表 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#…...

护照阅读器简介

护照阅读器简介 护照阅读器&#xff08;Passport Reader&#xff09;是一种专用设备&#xff0c;用于快速、准确地读取护照、身份证、签证等旅行证件的机读区&#xff08;MRZ&#xff09;和芯片&#xff08;ePassport&#xff09;信息&#xff0c;广泛应用于出入境管理、机场安…...

切片和边缘计算技术分析报告

切片和边缘计算技术分析报告 一、引言 随着 5G 通信技术的快速发展&#xff0c;网络切片和边缘计算技术逐渐成为通信领域的热点研究方向。网络切片技术通过将物理网络划分为多个逻辑上的虚拟网络&#xff0c;以满足不同业务场景对网络性能的差异化需求。边缘计算则将计算、存…...

vue3笔记(自存)

1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;n 经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年10月&#xff0c;最…...

多线服务器具有什么优势

在当今数字化飞速发展的时代&#xff0c;多线服务器宛如一位低调的幕后英雄&#xff0c;默默为我们的网络世界提供着强大的支持。那么&#xff0c;多线服务器到底具有哪些令人瞩目的优势呢 首先&#xff0c;多线服务器的最大优势之一就是网络访问的高速与稳定。想象一下&#x…...

Azure OpenAI 聊天功能全解析:Java 开发者指南

Azure OpenAI 聊天功能全解析&#xff1a;Java 开发者指南 前言 在当今人工智能飞速发展的时代&#xff0c;AI 驱动的文本生成技术正深刻改变着众多应用场景。Azure OpenAI 作为这一领域的重要参与者&#xff0c;由 ChatGPT 提供支持&#xff0c;不仅具备传统 OpenAI 的功能&…...

【情感关系】健全自我

一些看到后深有感触的文字 请大家无论如何也不要相信这种&#xff1a;“童年/原生家庭经历决定人生走向”的论调。 过去可以影响我们但是无法主宰我们&#xff0c;人是有主观能动意识的&#xff0c;认识自己的问题就是改变人生轨迹的第一步。 后来我们会发现&#xff0c;对于…...

SLAM:单应矩阵,本质矩阵,基本矩阵详解和对应的c++实现

单应矩阵(Homography Matrix) 单应矩阵(Homography Matrix)是计算机视觉中描述同一平面在不同视角下投影变换的核心工具,广泛应用于图像校正、拼接、虚拟广告牌替换等场景。以下从原理、求解方法和C++实现三方面展开详解: 一、单应矩阵的数学原理 定义与作用 单应矩阵是…...

数据报(Datagram)与虚电路(Virtual Circuit)的区别

数据报&#xff08;Datagram&#xff09;与虚电路&#xff08;Virtual Circuit&#xff09;的区别 数据报和虚电路是计算机网络中两种不同的通信方式&#xff0c;主要区别体现在 连接方式、路由选择、可靠性、延迟和适用场景 等方面。以下是它们的详细对比&#xff1a; 1. 基本…...

工业现场ModbusTCP转EtherNETIP网关引领生物现场领新浪潮

生物质发生器是一种能够产生、培养生物的设备。客户现场需要将生物发生器连接到罗克韦尔系统&#xff0c;但是二者协议无法直接通讯&#xff0c;需要通过ModbusTCP转Ethernet/IP网关将两者进行通讯连接&#xff0c;生物质发生器以其独特的工作原理和优势&#xff0c;使得生物的…...

DeepSeek的100个应用场景

在春节前夕&#xff0c;浙江杭州的AI企业DeepSeek推出了其开源模型DeepSeek-R1&#xff0c;以仅相当于Open AI最新模型1/30的训练成本&#xff0c;在数学、编程等关键领域展现出媲美GPT-o1的出色性能。发布仅数日&#xff0c;DeepSeek-R1便迅速攀升至中美两国苹果应用商店免费榜…...

【Linux 系统调试】Linux 调试工具strip使用方法

‌ 目录 ‌ 一. strip 工具的定义与核心作用‌ ‌1. strip 是什么&#xff1f;‌ 2. strip 工具调试符号的作用‌ 3. strip 工具调试符号的重要性‌ 二. 如何确认文件是否被 strip 处理&#xff1f;‌ 1. 通过 file 命令检查文件状态 2. strip 的典型用法‌ ‌基础命…...

Solana批量转账教程:提高代币持有地址和生态用户空投代币

前言 Solana区块链因其高吞吐量和低交易费用成为批量操作&#xff08;如空投&#xff09;的理想选择。本教程将介绍几种在Solana上进行批量转账的方法&#xff0c;帮助您高效地向多个地址空投代币。 solana 账户模型 在Solana中有三类账户&#xff1a; 数据账户&#xff0c;…...

leetcode hot100 技巧

如有缺漏谬误&#xff0c;还请批评指正。 1.只出现一次的数字 利用异或运算相同得0的特点。所有出现过两次的数字都会在异或运算累加过程中被抵消。、 class Solution { public:int singleNumber(vector<int>& nums) {int res0;for(int i0;i<nums.size();i) re…...

搭建spark伪分布集群

1.先查看虚拟机的默认名称&#xff0c;将其修改为vm01 2.更改了主机名&#xff0c;还需要修改/etc/hosts文件&#xff0c;在这个文件设定了IP地址与主机名的对应关系&#xff0c;类似DNS域名服务器的功能 3.修改spark相关配置文件&#xff0c;包括spark-env.sh和slave两个文件 …...

vue3自定义audio音频播放【进度条,快进,后退,音量加减,播放速度】

本文将介绍如何使用Vue3构建一个功能完备的自定义音频播放器&#xff0c;包含进度条控制、快进/后退、音量调节和播放速度控制等功能。相比使用浏览器默认的audio控件&#xff0c;自定义播放器可以提供更一致的用户体验和更灵活的设计空间&#xff0c;复制粘贴即可使用&#xf…...

学习基本开锁知识

本文主要内容 目前市面上锁的种类有哪些 机械锁 钥匙开锁 &#xff1a;这是最常见的传统开锁方式&#xff0c;通过插入匹配的钥匙转动来开锁&#xff0c;如常见的家用门锁、汽车门锁等&#xff0c;钥匙形状和齿纹各异&#xff0c;有单排齿的一字锁、双排齿的双面锁&#xff0c;…...

泛微ECOLOGY9 流程表单中添加按钮的方法

使用场景介绍 有时需要在流程表单中添加一个按钮来实现弹窗、打开指定的页面等需求。 实现方式一:通过ID 在流程表单中想要生成按钮的地方指定一个ID,然后再到ecode中创建按钮及方法。 具体步骤如下: 一、表单中指定ID为 exceldc 二、在ecode中实现按钮及功能。 1.建立…...

小刚说C语言刷题—1331 做彩纸花边

1.题目描述 李晓芳用一条长为 n 米的彩纸制作花边&#xff0c;每朵花李晓芳用一条长为 n 米的彩纸制作花边&#xff0c;每朵花的宽度为 x 厘米&#xff0c;花与花之间的间隔为 y 厘米。请问 n 米的彩纸最多能做多少朵花的花边。 如&#xff0c;图中的案例花的宽度为 4.5cm &a…...

【Python】读取excel文件的时候,遇到“Excel file format cannot be determined”的问题

使用os.path 读取路径下的文件&#xff0c;并拼接文件名&#xff0c;可能会遇到这个问题&#xff1a; ValueError: Excel file format cannot be determined, you must specify an engine manually. 因为我用的是相对路径的拼接的方法&#xff0c;读取出来会有这样的问题&#…...

天气预报、天气查询API接口文档 | 实时天气 | 七日天气 | 15日天气查询

天气预报、天气查询API接口文档 | 实时天气 | 七日天气 | 15日天气查询 这篇文章详细介绍了一种天气查询服务&#xff0c;提供了实时天气(1天)、7天预报和15天预报三个RESTful接口&#xff0c;支持通过地区名称、编码、IP或经纬度等多种方式查询&#xff0c;返回数据包含温度、…...

Linux中的线程安全与线程同步详解

在Linux系统中&#xff0c;线程安全性是指在多个线程同时访问共享资源时&#xff0c;能够确保这些共享资源不被破坏或者产生数据错误。线程同步是一种机制&#xff0c;用于保证多个线程之间的操作次序和协调&#xff0c;以避免竞态条件、死锁等问题。 以下是线程安全和线程同步…...

qwen2.5vl

多模态大模型通用架构&#xff1a; 在通用的MM-LLM&#xff08;Multi-Modality LLM&#xff09;框架里&#xff0c;共有五个模块&#xff0c;整体以LLM为核心主干&#xff0c;分别在前后有一个输入、输出的投影模块&#xff08;Projector&#xff09;&#xff0c;投影模块主要…...

国产Word处理控件Spire.Doc教程:在Java中为Word文本和段落设置边框

在 Word 文档中添加边框是一种突显重点信息的有效方式&#xff0c;尤其适用于包含大量文本的内容场景。相比普通格式&#xff0c;给字符或段落添加边框不仅能强化视觉层次&#xff0c;还能提升文档的专业感与可读性。E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品&a…...

【CUDA C实战演练】CUDA介绍、安装、C代码示例

文章目录 0. 前言1. 并行计算与异构计算1.1 并行计算&#xff08;Parallel Computing&#xff09;1.2 异构计算&#xff08;Heterogeneous Computing&#xff09; 2. CUDA 的核心概念2.1 主机&#xff08;Host&#xff09;与设备&#xff08;Device&#xff09;2.2 线程层次结构…...

滑动窗口——无重复字符最长的字串

题目&#xff1a; 子字符串&#xff0c;我们也可以看成子数组。 题意不难理解&#xff0c;这个题我们暴力枚举的思路是把每一个字符遍历存到hash桶中&#xff0c;如果放两次就进行结果更新。 但这个题我们有更优化的方法&#xff0c;利用数组代替hash&#xff08;重点不在这&…...

QT中connect高级链接——指针、lambda、宏

1、connect使用指针 connect(button,&QPushButton::released,this,&MainWidget::mySlot); //【抬起】按钮button时&#xff0c;修改按钮b2的标题 2、使用lambda表达式 引入lambda表达式&#xff0c;类似内联函数&#xff0c;可以用于不会被重用的短代码片段&#x…...

说说es配置项的动态静态之分和集群配置更新API

这天因为某件工作来到了es官网某个参数配置相关的页面&#xff0c;注意到了下图圆圈里的“Dynamic”&#xff1a; 链接&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/8.1/modules-cluster.html#misc-cluster-settings 显然这是对配置项的一个描述&am…...

如何有效防御服务器DDoS攻击

分布式拒绝服务&#xff08;DDoS&#xff09;攻击通过大量恶意流量淹没服务器资源&#xff0c;导致服务瘫痪。本文将提供一套结合代码实现的主动防御方案&#xff0c;涵盖流量监控、自动化拦截和基础设施优化。 1. 实时流量监控与告警 目标&#xff1a;检测异常流量并触发告警…...

C#上传文件到腾讯云的COS

测试环境&#xff1a; vs2022 .net 6控制台应用程序 测试步骤如下&#xff1a; 1 添加子用户&#xff0c;目前是为了拿到secretId和secretKey&#xff0c;打开添加子用户界面链接&#xff1a;https://console.cloud.tencent.com/cam 并为子用户添加API 密钥 2 通过链接htt…...

强缓存与协商缓存的实现机制

文章目录 前言**1. 强缓存&#xff08;强制缓存&#xff09;****强缓存生效流程**&#xff1a;**2. 协商缓存&#xff08;对比缓存&#xff09;****协商缓存生效流程**&#xff1a;**对比总结****实际应用建议** **1. 缓存配置的三种主要实现方式** 前言 强缓存与协商缓存的实…...

【云备份】项目展示项目总结

目录 一. 项目展示 二. 项目总结 一. 项目展示 首先我们打开服务端&#xff0c;把没有用的东西都删干净&#xff0c;包括备份的文件信息啊什么的 这个时候我们启动服务器 我们先用浏览器去看看 什么东西都没有。 好&#xff0c;我们现在去启动客户端&#xff0c;下面这个是客…...

嵌入式 Linux Platform 驱动模型测试

文章目录 一、为什么要用 Platform 驱动模型&#xff1f; 二、Platform 驱动模型的三大核心组件 1.Platform 总线&#xff08;虚拟总线&#xff09; 2.Platform 设备&#xff08;platform_device&#xff09; 3.Platform 驱动&#xff08;platform_driver&#xff09; 三、Plat…...

Linux:web服务nginx

一.Nginx简介 Nginx (engine x) 是一个高性能的Web和反向代理服务器&#xff0c;同时也是一个 IMAP/POP3/SMTP 代理服器。Nginx处理高并发能力是十分强大的&#xff0c;能经受高负载的考验。而且支持热部署&#xff0c;几乎可以做到 7 * 24 小时不间断运行&#xff0c;即使运行…...

【“星睿O6”评测】Armv9.2a、KLEIDIAI及vulkan加速llamacpp部署本地AI

llamacpp 简介 llama.cpp 的主要目标是通过最小的设置&#xff0c;实现 LLM 推理&#xff0c;在各种硬件上&#xff08;无论是本地还是云端&#xff09;提供最先进的性能。 纯 C/C实现&#xff0c;无任何依赖苹果 M1/M2 芯片&#xff08;Apple silicon&#xff09;优化&#…...