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

List基础与难度题

1. 向 ArrayList 中添加元素并打印

  • 功能描述
    • 程序创建一个空的 ArrayList 集合,用于存储字符串类型的元素。
    • 向该 ArrayList 中依次添加指定的字符串元素。
    • 使用增强型 for 循环遍历 ArrayList 中的所有元素,并将每个元素打印输出到控制台。
  • 测试数据描述
    • 预期向 ArrayList 中添加的字符串元素为 "apple""banana""cherry"
    • 预期控制台输出为:
import java.util.ArrayList;
import java.util.List;public class ArrayListAdd {public static void main(String[] args) {List fruit = new ArrayList();String fruit1 = "apple";String fruit2 = "banana";String fruit3 = "cherry";fruit.add(fruit1);fruit.add(fruit2);fruit.add(fruit3);for (Object fruitNum : fruit) {System.out.println(fruitNum);}}
}

2. 从 HashSet 中移除重复元素

  • 功能描述
    • 首先创建一个 ArrayList 并向其中添加包含重复元素的字符串。
    • 然后利用 HashSet 的特性(HashSet 不允许存储重复元素),将 ArrayList 中的元素添加到 HashSet 中,自动去除重复元素。
    • 最后遍历 HashSet 并将其中的元素打印到控制台,验证重复元素已被成功移除。
  • 测试数据描述
    • ArrayList 中添加的字符串元素为 "apple""banana""apple",其中 "apple" 为重复元素。
    • 预期 HashSet 中存储的元素为 "apple""banana"(元素顺序可能不同,因为 HashSet 是无序的)。
    • 预期控制台输出类似(元素顺序不固定):

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;public class HashSetRemove {public static void main(String[] args) {List fruit = new ArrayList();String fruit1 = "apple";String fruit2 = "banana";String fruit3 = "apple";String fruit4 = "apple";fruit.add(fruit1);fruit.add(fruit2);fruit.add(fruit3);fruit.add(fruit4);for (Object fruitNum : fruit) {System.out.println(fruitNum);}System.out.println("====================");Set fruitNew = new HashSet();for (Object fruitNum : fruit) {fruitNew.add(fruitNum);}System.out.println(fruitNew);}
}

3. 使用 HashMap 统计单词出现次数

  • 功能描述
    • 给定一个字符串数组,程序创建一个 HashMap 用于统计每个单词在数组中出现的次数。
    • 遍历字符串数组,对于每个单词,在 HashMap 中检查该单词是否已存在。如果存在,则将其对应的值加 1;如果不存在,则将该单词作为键,值设为 1 存入 HashMap
    • 最后遍历 HashMap 的键值对,将每个单词及其出现的次数打印到控制台。
  • 测试数据描述
    • 给定的字符串数组为 {"apple", "banana", "apple", "cherry", "banana", "apple"}
    • 预期 HashMap 中的统计结果为:"apple" -> 3"banana" -> 2"cherry" -> 1
    • 预期控制台输出类似(顺序不固定):
import java.util.HashMap;
import java.util.Map;public class HashMap_collection {public static void main(String[] args) {String [] fruits = {"apple", "banana", "apple", "cherry", "banana", "apple"};Map<String,Integer> fruitMap = new HashMap<>();for (String fruit : fruits) {if (fruitMap.containsKey(fruit)) {// 如果单词已存在于 HashMap 中,将其对应的值加 1fruitMap.put(fruit, fruitMap.get(fruit) + 1);} else {// 如果单词不存在于 HashMap 中,将该单词作为键,值设为 1 存入 HashMapfruitMap.put(fruit, 1);}}//        int j = 0;
//        int k = 0;
//        int z = 0;
//        for (int i=0; i < fruit.length; i++) {
//            if (fruit[i].equals("apple")){
//                fruitMap.put("apple",j+=1);
//            }else if (fruit[i].equals("banana")){
//                fruitMap.put("banana",k+=1);
//            }else if (fruit[i].equals("cherry")){
//                fruitMap.put("cherry",z+=1);
//            }
//        }System.out.println(fruitMap);}
}

 

4. 合并两个 HashMap

  • 功能描述
    • 分别创建两个 HashMap,用于存储字符串类型的键和整数类型的值。
    • 将第一个 HashMap 的内容复制到一个新的 HashMap 中作为合并的基础。
    • 遍历第二个 HashMap 的键值对,对于每个键,如果在新的 HashMap 中已存在该键,则将对应的值相加;如果不存在,则将该键值对直接存入新的 HashMap
    • 最后遍历合并后的 HashMap,将每个键及其对应的值打印到控制台。
  • 测试数据描述
    • 第一个 HashMapmap1)的键值对为 {"apple" -> 3, "banana" -> 2}
    • 第二个 HashMapmap2)的键值对为 {"apple" -> 2, "cherry" -> 1}
    • 预期合并后的 HashMap 键值对为 {"apple" -> 5, "banana" -> 2, "cherry" -> 1}
    • 预期控制台输出类似(顺序不固定):
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;public class HashMap_combine {public static void main(String[] args) {Map<String,Integer> fruitMap1 = new HashMap<>();Map<String,Integer> fruitMap2 = new HashMap<>();Map<String,Integer> fruitMap3 = new HashMap<>();fruitMap1.put("apple",3);fruitMap1.put("banana",2);fruitMap2.put("apple",2);fruitMap2.put("cherry",1);Iterator it = fruitMap1.keySet().iterator();while(it.hasNext()){String fruitKey = (String) it.next();fruitMap3.put(fruitKey,fruitMap1.get(fruitKey));}System.out.println("map1:"+fruitMap1);System.out.println("map2:"+fruitMap2);System.out.println("map3:"+fruitMap3);Iterator it1 = fruitMap2.keySet().iterator();while(it1.hasNext()){String fruitKey1 = (String) it1.next();if (fruitMap3.containsKey(fruitKey1)){fruitMap3.put(fruitKey1,fruitMap3.get(fruitKey1)+fruitMap2.get(fruitKey1));}else {fruitMap3.put(fruitKey1, fruitMap2.get(fruitKey1));}}System.out.println(fruitMap3);}}

 

5. 实现一个简单的图书管理系统

  • 功能描述
    • 定义一个 Book 类,用于表示图书,包含图书的标题和作者属性。
    • 定义一个 Library 类,包含一个用于存储 Book 对象的 ArrayListLibrary 类提供以下方法:
      • addBook(Book book):向图书馆的图书列表中添加一本图书。
      • removeBook(Book book):从图书馆的图书列表中移除一本图书。
      • findBook(String title):根据图书标题在图书馆的图书列表中查找图书,如果找到则返回对应的 Book 对象,否则返回 null
      • displayAllBooks():遍历图书馆的图书列表,将每本图书的信息(标题和作者)打印到控制台。
    • 在 LibrarySystem 类的 main 方法中,进行以下操作:
      • 创建一个 Library 对象。
      • 向图书馆中添加几本图书。
      • 显示图书馆中所有的图书信息。
      • 根据图书标题查找一本图书,并显示查找结果。
      • 从图书馆中移除找到的图书,然后再次显示图书馆中所有的图书信息,验证图书已被成功移除。
  • 测试数据描述
    • 预期添加到图书馆的图书为:
      • 第一本图书:标题为 "Java Programming",作者为 "John Doe"
      • 第二本图书:标题为 "Python Crash Course",作者为 "Jane Smith"
    • 预期第一次显示所有图书时,控制台输出为:
Title: Java Programming, Author: John Doe
Title: Python Crash Course, Author: Jane Smith
  • 预期查找图书 "Java Programming" 时,能找到对应的 Book 对象。
  • 预期移除找到的图书后,再次显示所有图书时,控制台输出为:
Title: Python Crash Course, Author: Jane Smith

 Book类

public class Book {private String title;private String Author;public Book() {}public Book(String title, String author) {this.title=title;Author=author;}public String getTitle() {return title;}public void setTitle(String title) {this.title=title;}public String getAuthor() {return Author;}public void setAuthor(String author) {Author=author;}
}

Library类

import java.util.ArrayList;
import java.util.HashMap;public class Library {//ArrayListprivate ArrayList<Book> books;public Library() {this.books = new ArrayList<>();}public void addBook(Book book){books.add(book);}public void removeBook(Book book){books.remove(book);}public Book findBook(String title){for (Book book : books) {if (book.getTitle().equals(title)){return book;}}return null;}public void displayAllBooks(){for (Book book : books) {System.out.println("Title:"+book.getTitle()+",Author:"+book.getAuthor());}}//    //HashMap
//    private HashMap<String, Book> books;
//
//    public Library() {
//        this.books = new HashMap<>();
//    }
//
//    public void addBook(Book book) {
//        books.put(book.getTitle(), book);
//    }
//
//    public void removeBook(Book book) {
//        books.remove(book.getTitle());
//    }
//
//    public Book findBook(String title) {
//        return books.get(title);
//    }
//
//    public void displayAllBooks() {
//        for (Book book : books.values()) {
//            System.out.println(book);
//        }
//    }
}

Test类

public class test {public static void main(String[] args) {Library library = new Library();Book book1 = new Book("Java Programming", "John Doe");Book book2 = new Book("Python Crash Course", "Jane Smith");library.addBook(book1);library.addBook(book2);System.out.println("所有图书信息:");library.displayAllBooks();Book foundBook = library.findBook("Java Programming");if (foundBook != null) {System.out.println("找到图书:Title: " + foundBook.getTitle() + ", Author: " + foundBook.getAuthor());} else {System.out.println("未找到该图书。");}System.out.println("\n移除找到的书籍");library.removeBook(foundBook);System.out.println("\n移除图书后所有图书信息:");library.displayAllBooks();}
}

难度题目

在线商城订单管理系统

功能描述

此在线商城订单管理系统是一个较为复杂的面向对象程序,用于模拟在线商城的订单管理流程,包含了商品、用户、购物车、订单等核心概念。以下是各个类的详细功能:

1. Product 
  • 属性
    • productId:商品的唯一标识符,类型为 String
    • name:商品的名称,类型为 String
    • price:商品的单价,类型为 double
    • stock:商品的库存数量,类型为 int
  • 方法
    • 构造方法:用于初始化商品的基本信息。
    • getProductId():获取商品的唯一标识符。
    • getName():获取商品的名称。
    • getPrice():获取商品的单价。
    • getStock():获取商品的库存数量。
    • decreaseStock(int quantity):减少商品的库存数量,当减少的数量大于当前库存时,抛出异常。
    • increaseStock(int quantity):增加商品的库存数量。
2. User 
  • 属性
    • userId:用户的唯一标识符,类型为 String
    • name:用户的姓名,类型为 String
    • shoppingCart:用户的购物车,类型为 ShoppingCart
    • orders:用户的订单列表,类型为 List<Order>
  • 方法
    • 构造方法:用于初始化用户的基本信息,并创建一个空的购物车和订单列表。
    • getUserId():获取用户的唯一标识符。
    • getName():获取用户的姓名。
    • getShoppingCart():获取用户的购物车。
    • getOrders():获取用户的订单列表。
    • addOrder(Order order):将一个新的订单添加到用户的订单列表中。
3. ShoppingCart 
  • 属性
    • items:购物车中的商品项列表,类型为 List<CartItem>
  • 方法
    • 构造方法:用于创建一个空的购物车。
    • addItem(Product product, int quantity):向购物车中添加一个商品项,如果商品已存在,则增加其数量;如果商品不存在,则创建一个新的商品项。
    • removeItem(Product product):从购物车中移除指定的商品项。
    • updateQuantity(Product product, int newQuantity):更新购物车中指定商品项的数量。
    • getTotalPrice():计算购物车中所有商品项的总价。
    • clear():清空购物车中的所有商品项。
4. CartItem 
  • 属性
    • product:购物车中的商品,类型为 Product
    • quantity:商品的数量,类型为 int
  • 方法
    • 构造方法:用于初始化购物车中的商品项。
    • getProduct():获取购物车中的商品。
    • getQuantity():获取商品的数量。
    • getTotalPrice():计算该商品项的总价。
5. Order 
  • 属性
    • orderId:订单的唯一标识符,类型为 String
    • user:下单的用户,类型为 User
    • items:订单中的商品项列表,类型为 List<CartItem>
    • orderStatus:订单的状态,类型为 String(如 "待支付"、"已支付"、"已发货" 等)。
  • 方法
    • 构造方法:用于初始化订单的基本信息。
    • getOrderId():获取订单的唯一标识符。
    • getUser():获取下单的用户。
    • getItems():获取订单中的商品项列表。
    • getOrderStatus():获取订单的状态。
    • setOrderStatus(String status):设置订单的状态。
    • getTotalPrice():计算订单中所有商品项的总价。
6. OnlineMall 
  • 属性
    • products:商城中的商品列表,类型为 List<Product>
    • users:商城的用户列表,类型为 List<User>
  • 方法
    • 构造方法:用于创建一个空的商城,包含空的商品列表和用户列表。
    • addProduct(Product product):向商城中添加一个新的商品。
    • addUser(User user):向商城中添加一个新的用户。
    • processOrder(User user):处理用户的订单,包括创建订单、减少商品库存、清空购物车等操作。

测试数据描述
  • 商品数据
    • 笔记本电脑:商品编号 "P001",名称 "笔记本电脑",单价 5000 元,库存 10 件。
    • 手机:商品编号 "P002",名称 "手机",单价 3000 元,库存 20 件。
  • 用户数据
    • 用户 "张三":用户编号 "U001"
  • 购物车数据
    • 用户 "张三" 的购物车中添加 1 台笔记本电脑和 2 部手机。
  • 预期结果
    • 生成一个新的订单,订单编号为以 "O" 开头并包含当前时间戳的字符串。
    • 订单总价为 1 * 5000 + 2 * 3000 = 11000 元。
    • 订单状态初始为 "待支付"
    • 笔记本电脑的库存减少为 9 件,手机的库存减少为 18 件。
    • 用户 "张三" 的购物车被清空。

Product类

public class Product {private String productId;private String name;private double price;private int stock;public Product(String productId, String name, double price, int stock) {this.productId = productId;this.name = name;this.price = price;this.stock = stock;}public String getProductId() {return productId;}public String getName() {return name;}public double getPrice() {return price;}public int getStock() {return stock;}public void decreaseStock(int quantity) {if (quantity > stock) {throw new IllegalArgumentException("库存不足");}stock -= quantity;}public void increaseStock(int quantity) {stock += quantity;}
}

User类

import java.util.ArrayList;
import java.util.List;public class User {private String userId;private String name;private ShoppingCart shoppingCart;private List<Order> orders;public User(String userId, String name) {this.userId = userId;this.name = name;this.shoppingCart = new ShoppingCart();this.orders = new ArrayList<>();}public String getUserId() {return userId;}public String getName() {return name;}public ShoppingCart getShoppingCart() {return shoppingCart;}public List<Order> getOrders() {return orders;}public void addOrder(Order order) {orders.add(order);}
}

ShoppingCart类

import java.util.ArrayList;
import java.util.List;public class ShoppingCart {private List<CartItem> items;public ShoppingCart() {this.items = new ArrayList<>();}public void addItem(Product product, int quantity) {for (CartItem item : items) {if (item.getProduct().getProductId().equals(product.getProductId())) {item.setQuantity(item.getQuantity() + quantity);return;}}items.add(new CartItem(product, quantity));}public void removeItem(Product product) {items.removeIf(item -> item.getProduct().getProductId().equals(product.getProductId()));}public void updateQuantity(Product product, int newQuantity) {for (CartItem item : items) {if (item.getProduct().getProductId().equals(product.getProductId())) {item.setQuantity(newQuantity);return;}}}public double getTotalPrice() {double total = 0;for (CartItem item : items) {total += item.getTotalPrice();}return total;}public void clear() {items.clear();}public List<CartItem> getItems() {return items;}
}

CartItem类

public class CartItem {private Product product;private int quantity;public CartItem(Product product, int quantity) {this.product=product;this.quantity=quantity;}public Product getProduct() {return product;}public int getQuantity() {return quantity;}public void setQuantity(int quantity) {this.quantity=quantity;}public double getTotalPrice() {return product.getPrice() * quantity;}
}

Order类

public class Order {private String orderId;private User user;private List<CartItem> items;private String orderStatus;public Order(String orderId, User user, List<CartItem> items, String orderStatus) {this.orderId = orderId;this.user = user;this.items = items;this.orderStatus = orderStatus;}public String getOrderId() {return orderId;}public User getUser() {return user;}public List<CartItem> getItems() {return items;}public String getOrderStatus() {return orderStatus;}public void setOrderStatus(String status) {this.orderStatus = status;}public double getTotalPrice() {double total = 0;for (CartItem item : items) {total += item.getTotalPrice();}return total;}
}

OnlineMall类

import java.util.ArrayList;
import java.util.List;public class OnlineMall {private List<Product> products;private List<User> users;public OnlineMall() {this.products = new ArrayList<>();this.users = new ArrayList<>();}public void addProduct(Product product) {products.add(product);}public void addUser(User user) {users.add(user);}public void processOrder(User user) throws Exception {ShoppingCart cart = user.getShoppingCart();List<CartItem> items = new ArrayList<>(cart.getItems());for (CartItem item : items) {Product product = item.getProduct();product.decreaseStock(item.getQuantity());}String orderId = "O" + System.currentTimeMillis();Order order = new Order(orderId, user, items, "待支付");user.addOrder(order);cart.clear();}
}

Test类

public class test {public static void main(String[] args) throws Exception {OnlineMall mall = new OnlineMall();Product laptop = new Product("P001", "笔记本电脑", 5000, 10);Product phone = new Product("P002", "手机", 3000, 20);mall.addProduct(laptop);mall.addProduct(phone);User zhangsan = new User("U001", "张三");mall.addUser(zhangsan);ShoppingCart cart = zhangsan.getShoppingCart();cart.addItem(laptop, 1);cart.addItem(phone, 2);mall.processOrder(zhangsan);System.out.println("订单编号: " + zhangsan.getOrders().get(0).getOrderId());System.out.println("订单总价: " + zhangsan.getOrders().get(0).getTotalPrice());System.out.println("订单状态: " + zhangsan.getOrders().get(0).getOrderStatus());System.out.println("笔记本电脑库存: " + laptop.getStock());System.out.println("手机库存: " + phone.getStock());System.out.println("购物车是否为空: " + zhangsan.getShoppingCart().getItems().isEmpty());}
}

相关文章:

List基础与难度题

1. 向 ArrayList 中添加元素并打印 功能描述&#xff1a; 程序创建一个空的 ArrayList 集合&#xff0c;用于存储字符串类型的元素。向该 ArrayList 中依次添加指定的字符串元素。使用增强型 for 循环遍历 ArrayList 中的所有元素&#xff0c;并将每个元素打印输出到控制台。 …...

Oracle19C低版本一天遭遇两BUG(ORA-04031/ORA-600)

昨天帮朋友看一个系统异常卡顿的案例&#xff0c;在这里分享给大家 环境&#xff1a;Exadata X8M 数据库版本19.11 1.系统报错信息 表象为系统卡顿&#xff0c;页面无法刷出&#xff0c;登陆到主机上看到节点1 系统等待存在大量的 cursor: pin S wait on X等待 查看两个节…...

golang处理时间的包time一次性全面了解

本文旨在对官方time包有个全面学习了解。不钻抠细节&#xff0c;但又有全面了解&#xff0c;重点介绍常用的内容&#xff0c;一些低频的可能这辈子可能都用不上。主打一个花最少时间办最大事。 Duration对象: 两个time实例经过的时间,以长度为int64的纳秒来计数。 常见的durati…...

C++学习:六个月从基础到就业——面向对象编程:重载运算符(下)

C学习&#xff1a;六个月从基础到就业——面向对象编程&#xff1a;重载运算符&#xff08;下&#xff09; 本文是我C学习之旅系列的第十三篇技术文章&#xff0c;是面向对象编程中运算符重载主题的下篇。本篇文章将继续深入探讨高级运算符重载技术、特殊运算符、常见应用场景和…...

【网络安全】谁入侵了我的调制解调器?(二)

文章目录 针对 TR-069 协议 REST API 的攻击思路攻击百万台调制解调器意外发现 Cox 后端 API 的授权绕过漏洞确认我们能够进入任何人的设备访问和更新任何Cox商业客户账户通过泄露的加密密钥覆盖任何人的设备设置执行对任何调制解调器的命令影响最后想说阅读本文前,请先行浏览…...

【4.1.-4.20学习周报】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract一、方法介绍1.1HippoRAG 1.2HippoRAG2二、实验2.1实验概况2.2实验代码2.3实验结果 总结 摘要 本博客介绍了论文《From RAG to Memory: Non-Parametri…...

MySQL 临时表介绍

在 MySQL 数据库中&#xff0c;临时表是一种特殊类型的表&#xff0c;它在数据库会话期间存在&#xff0c;会话结束时自动删除。临时表为处理特定的、临时性的数据操作任务提供了一种高效且便捷的方式。 一、临时表的创建 使用CREATE TEMPORARY TABLE语句来创建临时表。其语法…...

Rust : 关于*const () 与type erase

*const () 可以替代泛型&#xff0c;更加灵活。下面举了两个完全不一样的数据结构Foo和Bar&#xff1b;以及不同的函数&#xff0c;来说明。 一、 代码 trait Work {fn process(&self); } struct Foo(String);impl Work for Foo {fn process(&self) {println!("p…...

python学习—合并多个word文档

系列文章目录 python学习—合并TXT文本文件 python学习—统计嵌套文件夹内的文件数量并建立索引表格 python学习—查找指定目录下的指定类型文件 python学习—年会不能停&#xff0c;游戏抽签抽奖 python学习—循环语句-控制流 python学习—合并多个Excel工作簿表格文件 pytho…...

Java LinkedList深度解析:双向链表的实现艺术与实战指南

在Java集合框架中,LinkedList以其独特的双向链表结构和灵活的操作特性,成为处理动态数据的重要工具。本文将从底层实现、核心方法、性能优化到企业级应用场景,全方位解析这一经典数据结构的设计哲学与实战技巧。 一、LinkedList的设计定位与核心特性 1. 双向链表的本质 Lin…...

c#内存泄露的原因和解决办法

内存泄漏的原因 不正确的对象引用&#xff1a;最常见的原因是对象不再需要时未被垃圾回收器回收。例如&#xff0c;如果一个对象被一个不再使用的变量引用&#xff0c;它将不会被垃圾回收。事件订阅者未取消&#xff1a;如果订阅了一个事件但没有在对象不再需要时取消订阅&…...

android如何在生产环境中做到详实的日志收集而不影响性能?

在Android应用的生命周期中,日志收集贯穿于开发、测试到生产环境的每一个阶段。特别是在生产环境中,当应用部署到成千上万的用户设备上时,开发者无法直接访问用户的运行环境,也无法像在开发阶段那样通过调试工具实时查看代码执行情况。这时,日志就成为连接开发者与用户设备…...

MySQL安装实战:从零开始搭建你的数据库环境

MySQL作为全球最流行的开源关系型数据库&#xff0c;是开发者、运维人员及数据管理者的核心工具之一。本文将通过多平台安装指南、关键配置解析及常见问题排查三个维度&#xff0c;手把手带你完成MySQL环境搭建。 一、多平台安装指南 1. Linux系统&#xff08;以Ubuntu为例&am…...

[Python] UV工具入门使用指南——小试牛刀

背景 MCP开发使用到了uv&#xff0c;简单记录一下&#xff1a; 为什么MCP更推荐使用uv进行环境管理&#xff1f; MCP 依赖的 Python 环境可能包含多个模块&#xff0c;uv 通过 pyproject.toml 提供更高效的管理方式&#xff0c;并且可以避免 pip 的一些依赖冲突问题。…...

PclSharp ——pcl的c#nuget包

简介&#xff1a; NuGet Gallery | PclSharp 1.8.1.20180820-beta07 下载.NET Framework 4.5.2 Developer Pack&#xff1a; 下载 .NET Framework 4.5.2 Developer Pack Offline Installer 离线安装nupkg&#xff1a; nupkg是visual studio 的NuGet Package的一个包文件 安…...

多任务响应1(Qt)

多任务响应1 1. 架构概述2. 代码示例3. 说明 当系统的一些任务都是同一个对象产生&#xff0c;但需要交由不同对象进行响应。 比如&#xff1a;系统有多个按键&#xff0c;这些按键的共用一个槽函数&#xff0c;但不同的按键对应不同的功能响应。 推荐采用命令模式分散响应的思…...

1. k8s的简介

Kubernetes&#xff08;k8s&#xff09;简介 1. 产生背景 随着云计算和微服务架构的兴起&#xff0c;传统的单体应用逐渐被拆分为多个小型、松耦合的服务&#xff08;微服务&#xff09;。这种架构虽然提升了开发灵活性和可维护性&#xff0c;但也带来了新的挑战&#xff1a;…...

单片机 | 基于51单片机的倾角测量系统设计

以下是一个基于51单片机的倾角测量系统设计详解,包含原理、公式和完整代码: 一、系统原理 核心器件:MPU6050(集成3轴加速度计+陀螺仪) 主控芯片:STC89C52RC(51单片机) 显示模块:LCD1602液晶 工作原理: 通过MPU6050采集XYZ三轴加速度数据,利用重力加速度分量计算俯仰…...

div(HTML标准元素)和view(微信小程序专用组件)的主要区别体

div&#xff08;HTML标准元素&#xff09;和view&#xff08;微信小程序专用组件&#xff09;的主要区别体现在以下方面&#xff1a; 一、应用场景与开发框架 ‌适用平台不同‌ div是HTML/CSS开发中通用的块级元素&#xff0c;用于Web页面布局‌&#xff1b;view是微信小程序专…...

MGR实现mysql高可用性

一。MGR和PXC的区别 1. PXC的消息广播机制是在节点间循环的&#xff0c;需要所有节点都确认消息&#xff0c;因此只要有一个节点故障&#xff0c;则会导致整个PXC都发生故障。而MGR则是多数派投票模式&#xff0c;个别少数派节点故障时&#xff0c;一般不影响整体的可用性。这…...

新型多机器人协作运输系统,轻松应对复杂路面

受到鱼类、鸟类和蚂蚁等微小生物体协作操纵的启发&#xff0c;研究人员开发了多机器人协作运输系统&#xff08;Multirobot Cooperative Transportation Systems&#xff0c;MRCTS&#xff09;运输单个机器人无法处理的重型超大物体&#xff0c;可用于搜救行动、灾难响应、军事…...

汇编获取二进制

文章目录 AT&Tasm Intel AT&T mov_test.s mov $0,%r8dgcc -c mov_test.s 输出 mov_test.o,objdump -D mov_test.o 查看 mov_test.o: mov_test.o: file format elf64-x86-64Disassembly of section .text:0000000000000000 <.text>:0: 41 b8 00 00 00 00 …...

【秣厉科技】LabVIEW工具包——OpenCV 教程(19):拾遗 - imgproc 基础操作(上)

文章目录 前言imgproc 基础操作&#xff08;上&#xff09;1. 颜色空间2. 直方图3. 二值化4. 腐蚀、膨胀、开闭运算5. 梯度与轮廓6. 简易绘图7. 重映射 总结 前言 需要下载安装OpenCV工具包的朋友&#xff0c;请前往 此处 &#xff1b;系统要求&#xff1a;Windows系统&#x…...

学习笔记:金融经济学 第3讲

学习笔记&#xff1a;金融经济学 第3讲 注&#xff1a;A本金&#xff0c;n时间&#xff08;比如年&#xff09;&#xff0c;r利率一、 计算习惯1. 单息&#xff08;新产生的利息不算进本金重新计算利息&#xff0c;收款额A(1nr) &#xff09;2. 复利(新产生的利息算进本金重新计…...

NVIDIA RTX™ GPU 低成本启动零售 AI 场景开发

零售行业正在探索应用 AI 升级客户体验&#xff0c;同时优化内部流程。面对多重应用场景以及成本优化压力&#xff0c;团队可采用成本相对可控的方案&#xff0c;来应对多重场景的前期项目预演和落地&#xff0c;避免短期内大规模投入造成的资源浪费。 客户体验 AI 场景的研究…...

【网络】IP层的重要知识

目录 1.IP层的作用 2.主机和节点 3.网络层和数据链路层的关系 4.路由控制 4.1.路由控制的过程 4.2. IP地址与路由控制 4.3.路由控制表的聚合 4.4.静态路由和动态路由 4.5.动态路由的基础 5.数据链路的抽象化 5.1.数据链路不同&#xff0c;MTU则相异 5.2.路径MTU发…...

数理逻辑(Mathematical Logic)综论与跨学科应用

李升伟 整理 数理逻辑&#xff08;Mathematical Logic&#xff09;是现代逻辑学与数学交叉的核心学科&#xff0c;以严格的数学方法研究逻辑推理的形式与规律。其发展深刻影响了数学基础、计算机科学、语言哲学等领域。以下从多个维度综论数理逻辑&#xff1a; 1. 核心分支 命…...

OpenCV 模板匹配方法详解

文章目录 1. 什么是模板匹配&#xff1f;2. 模板匹配的原理2.1数学表达 3. OpenCV 实现模板匹配3.1基本步骤 4. 模板匹配的局限性5. 总结 1. 什么是模板匹配&#xff1f; 模板匹配&#xff08;Template Matching&#xff09;是计算机视觉中的一种基础技术&#xff0c;用于在目…...

一键解锁Landsat 9地表温度计算!ENVI与ArcGIS Pro全流程详解(无需NASA大气校正)

为什么选择Landsat 9的L2SP数据&#xff1f; 之前&#xff1a;《ArcGIS与ENVI——基于landsat与Modis影像的遥感技术的生态环境质量评价》&#xff0c;基于Landsat前期的产品计算温度反演数据需要一系列复杂的步骤。 现在&#xff1a; Landsat 8-9的Collection 2 Level-2&…...

RK3588的linux下实现HDMI输出分辨率及帧率的裁剪

bug反馈&#xff1a;客户现场反馈hdmi接显示屏出现概率性闪黑屏&#xff0c;排除线材&#xff0c;显示屏及GND等外部因素后&#xff0c;提出尝试降低hdmi的输出分辨率和帧率对比测试看看。 Step1&#xff1a;先直接在linux的sdk中找到板卡编译生成后的dts找到hdmi节点 然后找到…...