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

基于Java网上点餐系统设计与实现

博主介绍: ✌至今服务客户已经1000+、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌
🍅 文末获取源码联系 🍅
👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到

Java项目精品实战专区icon-default.png?t=N7T8https://blog.csdn.net/java18343246781/category_12537229.htmlJava各种开发工具资源包网站icon-default.png?t=N7T8http://62.234.13.119:9000/html/visitor/softwareResourceList.html

软件安装+项目部署专区icon-default.png?t=N7T8https://blog.csdn.net/java18343246781/category_12539864.htmlv


系列文章目录

前言

一、运行环境

二、代码示例

三、系统展示


前言

  在快节奏的现代生活中,网上点餐系统成为了满足用户便捷用餐需求的重要工具。本文将为您介绍一款多功能而智能的网上点餐系统,为用户提供了全方位的用餐体验。该系统的前端设计涵盖了各类便捷功能,使得用户可以轻松浏览菜单、分类点菜、加入购物车、下单,同时享受查看订单、管理钱包、地址、留言等一系列便捷服务。同时,后端管理功能丰富,包括对菜单、用户、留言、订单、餐桌等的全面管理,为商家提供了高效的运营工具。

  用户可以通过系统直观而美观的界面,轻松浏览丰富的菜单,根据个人口味和需求分类点菜,并随时加入购物车,构建个性化的点餐体验。一键下单后,用户可以方便地查看自己的订单,进行支付,同时管理自己的钱包、地址等信息。系统还提供了投诉信息和留言功能,用户可以通过系统表达建议、意见和需求,促进用户与商家的有效沟通。

  对于商家而言,后端管理系统为其提供了高效的工具,可以对菜单进行灵活管理,维护用户信息,处理留言和投诉,以及有效管理订单和餐桌。这使得商家能够更好地把握经营状况,提高服务水平。

  希望这款网上点餐系统能够为用户和商家之间搭建起一座便捷而愉悦的沟通桥梁,为现代餐饮行业注入更多智能化、便捷化的元素。

一、运行环境

系统采用了JDK 1.8作为基础开发环境,并搭建在Spring Boot框架之上,实现了快速、简便的Java应用程序开发。数据库方面选择了MySQL,作为可靠的关系型数据库管理系统,用于存储和管理商品、用户以及订单等相关数据。持久层框架方面使用了MyBatis和MyBatis Plus,简化了数据访问层的开发,提供了便捷的操作和功能。

        在前端设计上,系统使用了Layui框架,为用户提供了直观而美观的界面,包括商城列表、购物车、订单列表等功能。同时,为了实现动态页面生成,系统引入了Thymeleaf技术,与Spring框架良好集成,使得前端页面与后端数据更加紧密地结合,提升了用户体验。

二、代码示例

代码如下(示例):

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.wl.dto.OrdersDto;
import com.wl.enums.OrdersStateEnum;
import com.wl.enums.OrdersTypeEnum;
import com.wl.enums.TableStateEnum;
import com.wl.mapper.OrdersEntryMapper;
import com.wl.po.*;
import com.wl.service.*;
import org.apache.tomcat.util.buf.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;/*** 表现层控制类*/
@Controller
@RequestMapping("cart")
@Slf4j
public class ShoppingCartController {@Autowiredprivate ShoppingCartService shoppingCartService;@Autowiredprivate AddressService addressService;@Autowiredprivate WalletService walletService;@Autowiredprivate UserService userService;@Autowiredprivate DeskService deskService;@Autowiredprivate MenuService menuService;@Autowiredprivate OrdersService ordersService;@Autowiredprivate OrdersEntryService entryService;//加入购物车@ResponseBody@RequestMapping(value = "/addToCart", method = RequestMethod.GET)public String addToCart(String menuId, HttpSession session) {User user = comment(session);ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(menuId));Integer count = shoppingCartService.selectCountByCart(cart);if (count == null || count == 0) {cart.setCount(1);shoppingCartService.addCart(cart);} else {cart.setCount(count + 1);shoppingCartService.updateCartCount(cart);}return "商品成功加入购物车";}//加入购物车@RequestMapping("addCart/{menuId}")public String addCart(@PathVariable("menuId") String menuId, HttpSession session) {User user = comment(session);ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(menuId));Integer count = shoppingCartService.selectCountByCart(cart);if (count == null || count == 0) {cart.setCount(1);shoppingCartService.addCart(cart);} else {cart.setCount(count + 1);shoppingCartService.updateCartCount(cart);}return "redirect:/user/cart";}//批量删除购物车商品@RequestMapping("delAllCart")@ResponseBodypublic String delAllCart(String menuIds, HttpSession session) {String[] strings = null;String string = null;if (menuIds.contains("&")) {strings = menuIds.split("&");} else {string = menuIds;}User user = comment(session);if (string == null) {for (int i = 0; i < strings.length; i++) {ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(strings[i]));shoppingCartService.delCart(cart);}} else {ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(string));shoppingCartService.delCart(cart);}return "删除成功";}//购物车商品减一@RequestMapping("redCart/{menuId}")public String redCart(@PathVariable("menuId") String menuId, HttpSession session) {User user = comment(session);ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(menuId));Integer count = shoppingCartService.selectCountByCart(cart);if (count > 1) {cart.setCount(count - 1);shoppingCartService.updateCartCount(cart);} else {shoppingCartService.delCart(cart);}return "redirect:/user/cart";}//单个商品下单详情页面@RequestMapping("choiceOrders")@ResponseBodypublic String choiceOrders(String menuIds, HttpSession session, Model model) {User user = comment(session);String[] strings = menuIds.split("&");//判断用户是否填写地址信息Address address = addressService.selectByUserId(user.getId());if (address.getAddress() == null || address.getName() == null || address.getPhoneNumber() == null) {return "地址信息未填写";}BigDecimal menuAllPrice = BigDecimal.ZERO;BigDecimal menuPrice;List<OrdersEntry> entryList = new ArrayList<>();for (int i = 0; i < strings.length; i++) {//购物车信息ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(strings[i]));cart = shoppingCartService.selectCart(cart);//订单条目类Menu menu = menuService.selectByMenuId(Integer.parseInt(strings[i]));OrdersEntry entry = new OrdersEntry();entry.setCount(cart.getCount());entry.setDishName(menu.getDishName());entry.setPrice(menu.getPrice());menuPrice = menu.getPrice().multiply(new BigDecimal(cart.getCount()));entryList.add(entry);//累加计算订单总金额menuAllPrice = menuAllPrice.add(menuPrice);}//订单DTOOrdersDto ordersDto = new OrdersDto();ordersDto.setOrdersEntryList(entryList);ordersDto.setUserId(Integer.parseInt(user.getId()));ordersDto.setUserName(address.getName());ordersDto.setTotalPrice(menuAllPrice);ordersDto.setPhoneNumber(address.getPhoneNumber());ordersDto.setOrdersAddress(address.getAddress());ordersDto.setRemark(address.getRemark());ordersDto.setOrdersState(OrdersStateEnum.ORDERS_STATE_UNPROCESSED.getText());ordersDto.setOrdersType(OrdersTypeEnum.ORDERS_TYPE_ENTER.getText());model.addAttribute("ordersDto", ordersDto);session.setAttribute("choicePageSession", ordersDto);session.setAttribute("menuIdsSession", menuIds);return "true";}//单个下单,批量下单@ResponseBody@Transactional@RequestMapping("toOrdersOne")public String toOrdersOne(OrdersDto choiceDto, HttpSession session) {//判断的地址信息是否填写User user = comment(session);Address address = addressService.selectByUserId(user.getId());if (address.getAddress() == null || address.getName() == null || address.getPhoneNumber() == null) {return "地址信息未填写";}//下单前获取支付密码并判断输入密码是否正确Account account = (Account) session.getAttribute("account");Wallet wallet = walletService.selectWalletByAccountId(account.getId());OrdersDto dtoSession = (OrdersDto) session.getAttribute("choicePageSession");//余额判断if (dtoSession.getTotalPrice().compareTo(wallet.getMoney()) > 0) {return "余额不足";}if (!wallet.getPayPassword().equals(choiceDto.getPayPwd())) {return "密码错误";}//订单编号生成Date date = new Date();SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");String ordersNumber = format.format(date).concat(dtoSession.getUserId().toString());String menuIdsSession = (String) session.getAttribute("menuIdsSession");String[] strings = null;String string = null;if (menuIdsSession.contains("&")) {strings = menuIdsSession.split("&");} else {string = menuIdsSession;}//批量下单if (null == string) {for (String s : strings) {//购物车ShoppingCart cart = new ShoppingCart();cart.setUserId(dtoSession.getUserId());cart.setMenuId(Integer.parseInt(s));cart = shoppingCartService.selectCart(cart);//订单条目类Menu menu = menuService.selectByMenuId(Integer.parseInt(s));OrdersEntry entry = new OrdersEntry();entry.setCount(cart.getCount());entry.setDishName(menu.getDishName());entry.setOrdersNumber(ordersNumber);entry.setPrice(menu.getPrice());entryService.addEntry(entry);//订单生成后删除购物车中数据ShoppingCart cart1 = new ShoppingCart();cart1.setUserId(dtoSession.getUserId());cart1.setMenuId(Integer.parseInt(s));shoppingCartService.delCart(cart1);//商品销量加countmenu.setSale(menu.getSale() + cart.getCount());boolean b = menuService.updateDish(menu);}}//单个下单else {//购物车ShoppingCart cart = new ShoppingCart();cart.setUserId(dtoSession.getUserId());cart.setMenuId(Integer.parseInt(string));cart = shoppingCartService.selectCart(cart);//订单条目类Menu menu = menuService.selectByMenuId(Integer.parseInt(string));OrdersEntry entry = new OrdersEntry();entry.setCount(cart.getCount());entry.setDishName(menu.getDishName());entry.setOrdersNumber(ordersNumber);entry.setPrice(menu.getPrice());entryService.addEntry(entry);//订单生成后删除购物车中数据ShoppingCart cart1 = new ShoppingCart();cart1.setUserId(dtoSession.getUserId());cart1.setMenuId(Integer.parseInt(string));shoppingCartService.delCart(cart1);//商品销量加countmenu.setSale(menu.getSale() + cart.getCount());boolean b = menuService.updateDish(menu);}//订单Orders orders = new Orders();orders.setOrdersType(dtoSession.getOrdersType());//进店用餐 餐桌信息绑定if (dtoSession.getOrdersType().equals(OrdersTypeEnum.ORDERS_TYPE_ENTER.getText())) {orders.setOrdersTable(choiceDto.getOrdersTable());orders.setOrdersAddress(null);String reserveDate = choiceDto.getReserveDate();String ordersStartTime = choiceDto.getOrdersStartTime();String ordersEndTime = choiceDto.getOrdersEndTime();orders.setReserveDate(choiceDto.getReserveDate());orders.setOrdersStartTime(choiceDto.getOrdersStartTime());orders.setOrdersEndTime(choiceDto.getOrdersEndTime());deskService.updDesk(ordersNumber,choiceDto.getOrdersTable(), dtoSession.getUserId(), TableStateEnum.STATE_TRUE.getValue(), reserveDate,ordersStartTime,ordersEndTime);} else {//外卖配送 地址信息orders.setOrdersAddress(choiceDto.getOrdersAddress());orders.setOrdersTable(null);}orders.setPhoneNumber(choiceDto.getPhoneNumber());orders.setRemark(choiceDto.getRemark());orders.setUserId(dtoSession.getUserId());orders.setOrdersState(dtoSession.getOrdersState());orders.setOrdersType(dtoSession.getOrdersType());orders.setOrdersNumber(ordersNumber);orders.setUserName(dtoSession.getUserName());orders.setTotalPrice(dtoSession.getTotalPrice());ordersService.addOrders(orders);//钱包减BigDecimal subtract = wallet.getMoney().subtract(dtoSession.getTotalPrice());wallet.setMoney(subtract);walletService.updateWallet(wallet);return "下单成功";}//更新订单信息@ResponseBody@Transactional@RequestMapping("toUpdateOrders")public String toUpdateOrders(OrdersDto choiceDto, HttpSession session) {//下单前获取支付密码并判断输入密码是否正确Account account = (Account) session.getAttribute("account");//获取订单类型OrdersDto ordersDtoGetType = (OrdersDto)session.getAttribute("choicePageSession");//获取修改的订单编号String ordersNumberUpd = (String) session.getAttribute("ordersNumberUpd");Wallet wallet = walletService.selectWalletByAccountId(account.getId());if (!wallet.getPayPassword().equals(choiceDto.getPayPwd())) {return "密码错误";}//根据订单编号,更新订单信息Orders orders = new Orders();orders.setOrdersNumber(ordersNumberUpd);orders.setOrdersType(ordersDtoGetType.getOrdersType());//获取用户idUser user = userService.selectByAccountId(Integer.parseInt(account.getId()));//进店用餐if (orders.getOrdersType().equals(OrdersTypeEnum.ORDERS_TYPE_ENTER.getText())){orders.setOrdersAddress(null);orders.setOrdersTable(choiceDto.getOrdersTable());String reserveDate = choiceDto.getReserveDate();String ordersStartTime =choiceDto.getOrdersStartTime();String ordersEndTime = choiceDto.getOrdersEndTime();orders.setReserveDate(choiceDto.getReserveDate());orders.setOrdersStartTime(choiceDto.getOrdersStartTime());orders.setOrdersEndTime(choiceDto.getOrdersEndTime());deskService.updDesk(ordersNumberUpd,choiceDto.getOrdersTable(), Integer.parseInt(user.getId()), TableStateEnum.STATE_TRUE.getValue(), reserveDate,ordersStartTime,ordersEndTime);}//外卖配送else{orders.setOrdersAddress(choiceDto.getOrdersAddress());orders.setOrdersTable(null);}orders.setPhoneNumber(choiceDto.getPhoneNumber());orders.setRemark(choiceDto.getRemark());return ordersService.updateOrdersByNumber(orders);}//下单  订单类型@RequestMapping("ordersType/{type}")public String ordersType(@PathVariable("type") Integer type, HttpSession session,Model model) {String ordersType = "进店用餐";if (type == 1) {ordersType = "外卖配送";}OrdersDto choicePageSession = (OrdersDto) session.getAttribute("choicePageSession");choicePageSession.setOrdersType(ordersType);session.removeAttribute("choicePageSession");session.setAttribute("choicePageSession", choicePageSession);model.addAttribute("ordersDto", choicePageSession);return "user/choicePage";}//订单修改  订单类型@RequestMapping("ordersUpdType/{type}")public String ordersUpdType(@PathVariable("type") Integer type, HttpSession session,Model model) {String ordersType = "进店用餐";if (type == 1) {ordersType = "外卖配送";}OrdersDto choicePageSession = (OrdersDto) session.getAttribute("choicePageSession");choicePageSession.setOrdersType(ordersType);session.removeAttribute("choicePageSession");session.setAttribute("choicePageSession", choicePageSession);model.addAttribute("ordersDto", choicePageSession);return "user/editOrdersPage";}@RequestMapping("zhuan")public String zhuan(HttpSession session, Model model) {OrdersDto choicePageSession = (OrdersDto) session.getAttribute("choicePageSession");model.addAttribute("ordersDto", choicePageSession);return "user/choicePage";}//公共方法private User comment(HttpSession session) {Account account = (Account) session.getAttribute("account");return userService.selectByAccountId(Integer.parseInt(account.getId()));}}

三、系统展示

系统首页:可以通过餐品类别进行筛选。同时可以看到留言板,也可以进行留言。

基本信息:可更改自己的基本信息。

购物车信息:可以查看购物车的菜品,可以进行删除、下单。

菜品下单:可以备注预约餐桌与时间。支持进店用餐和外卖配送。

订单信息:查看订单详情,支持添加商品、修改信息、取消订单。

地址管理:如需外卖配送需要填写配送地址。

我的钱包:可以进行重置与更改密码。

投诉信息:可以对商家进行投诉。

后台管理员登录页面。

用户管理:可以重置用户密码。

钱包管理:查看用户钱包剩余金额。

菜品管理:可以新增、删除、修改。

餐桌管理:支持用户进店就餐。

订单管理:分为四种订单未处理、处理中、已完成、已取消订单。

留言管理:可以选择优质留言在首页进行展示。

投诉管理:商家可看到投诉信息并进行处理。

相关文章:

基于Java网上点餐系统设计与实现

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…...

公司电脑文件加密系统——防止内部核心文件数据 | 资料外泄,自动智能透明加密保护

一套从源头上保障企业电脑数据安全和电脑使用安全的加密软件。天锐绿盾加密软件包含了表格数据加密、图纸加密、文档文件加密、内网文件加密流转、密级管控、电脑离线管理、文件外发管理、灵活的审批流程、工作模式切换、服务器白名单等功能。天锐绿盾加密系统全面覆盖Mac、Win…...

计算机毕业设计------ssm茶叶溯源系统

项目介绍 茶叶溯源系统&#xff0c;分为前台与后台。普通用户可在前台通过18位的编码查询茶叶的出售历史。 后台分为两种角色&#xff0c;管理员与经销商&#xff1b; 管理员主要功能包括&#xff1a; 主界面&#xff1b; 管理员管理&#xff1a;管理员列表、添加管理员&am…...

【网络安全 | Misc】miss_01 太湖杯

解压时提示输入密码&#xff1a; 如果 frFlags 或 deFlags 不为0会导致zip的伪加密 将deFlags的值修改为0 将9改为0&#xff0c;另存为123.zip&#xff1a; 即可绕过加密&#xff1a; 得到一个zip一个docx&#xff0c;但zip需要密码&#xff1a; 因此看docx有无敏感信息&#x…...

【深度学习目标检测】十一、基于深度学习的电网绝缘子缺陷识别(python,目标检测,yolov8)

YOLOv8是一种物体检测算法&#xff0c;是YOLO系列算法的最新版本。 YOLO&#xff08;You Only Look Once&#xff09;是一种实时物体检测算法&#xff0c;其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化&#xff0c;提高了检测速度和准确性。…...

《深入理解C++11:C++11新特性解析与应用》笔记六

第六章 提高性能及操作硬件的能力 6.1 常量表达式 6.1.1 运行时常量性与编译时常量性 大多数情况下&#xff0c;const描述的是运行时常量性&#xff0c;也即是运行时数据的不可更改性。但有时候我们需要的却是编译时的常量性&#xff0c;这是const关键字无法保证的。例如&am…...

C# 基于事件的观察者模式

观察者模式是一种软件设计模式&#xff0c;用于定义对象之间的一对多依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;它的所有依赖者&#xff08;观察者&#xff09;都将得到通知并自动更新。这种模式通过解耦合主题和观察者来提高对象的灵活性。 定义 观察者模式…...

ARM CCA机密计算软件架构之软件堆栈概述

Arm CCA平台通过硬件添加和固件组件的混合方式实现,例如在处理元素(PEs)中的RME以及特定的固件组件,特别是监视器和领域管理监视器。本节介绍Arm CCA平台的软件堆栈。 软件堆栈概述 领域VM的执行旨在与Normal world(正常世界)隔离,领域VM由Normal world Host(正常世界…...

《Python机器学习原理与算法实现》学习笔记

以下为《Python机器学习原理与算法实现》&#xff08;杨维忠 张甜 著 2023年2月新书 清华大学出版社&#xff09;的学习笔记。 根据输入数据是否具有“响应变量”信息&#xff0c;机器学习被分为“监督式学习”和“非监督式学习”。 “监督式学习”即输入数据中即有X变量&…...

k8s集群通过helm部署skywalking

1、安装helm 下载脚本安装 ~# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 ~# chmod 700 get_helm.sh ~# ./get_helm.sh或者下载包进行安装 ~# wget https://get.helm.sh/helm-canary-linux-amd64.tar.gz ~# mv helm …...

介绍一款PDF在线工具

PDF是我们日常工作中的一种常见格式&#xff0c;其处理也是我们工作的重要基础性环节&#xff0c;一款可靠的处理工具显得十分重要。 完全免费、易于使用、丰富的PDF处理工具&#xff0c;包括&#xff1a;合并、拆分、压缩、转换、旋转和解锁PDF文件&#xff0c;以及给PDF文件…...

docker学习——汇总版

历时一个月将docker系统的学习了一下&#xff0c;并且记录了详细的笔记和实践过程。 希望能对工作需要的小伙伴们有所帮助~ docker基础篇 docker学习&#xff08;一、docker与VM对比&#xff09; docker学习&#xff08;二、安装docker&#xff09; docker学习&#xff08;…...

百度沧海文件存储CFS推出新一代Namespace架构

随着移动互联网、物联网、AI 计算等技术和市场的迅速发展&#xff0c;数据规模指数级膨胀&#xff0c;对于分布式文件系统作为大规模数据场景的存储底座提出了更高的要求。已有分布式文件系统解决方案存在着短板&#xff0c;只能适应有限的场景&#xff1a; >> 新型分布式…...

16-网络安全框架及模型-BiBa完整性模型

目录 BiBa完整性模型 1 背景概述 2 模型原理 3 主要特性 4 优势和局限性 5 应用场景 BiBa完整性模型 1 背景概述 Biba完整性模型是用于保护数据完整性的模型&#xff0c;它的主要目标是确保数据的准确性和一致性&#xff0c;防止未授权的修改和破坏。在这个模型中&#…...

ssm基于冲突动态监测算法的健身房预约系统的设计与实现论文

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装健身房预约系统软件来发挥其高效地信息处理的作用&#xff…...

基于 Element UI 适用于 Vue 2 版本的虚拟列表选择器组件el-select

背景&#xff1a;在某些使用情况下&#xff0c;单个选择器可能最终加载数万行数据。 将这么多的数据渲染至 DOM 中可能会给浏览器带来负担&#xff0c;从而造成性能问题。 ——vue3element-plus有现成的轮子。而vue2element-ui没有。 以下 文章大部分 摘自 源组件中的README.md…...

java常见面试题:请解释一下Java中的常用分布式框架,如Spring Boot、Dubbo等。

下面我将详细介绍Java中的两个常用分布式框架&#xff1a;Spring Boot和Dubbo。 1. Spring Boot Spring Boot是一个用于创建独立、可运行的、生产级别的Spring应用程序的框架。它简化了Spring应用程序的创建和部署&#xff0c;使得开发人员能够专注于编写业务逻辑&#xff0c…...

FreeRTOS列表与列表项相关知识总结以及列表项的插入与删除实战

1.列表与列表项概念及结构体介绍 1.1列表项简介 列表相当于链表&#xff0c;列表项相当于节点&#xff0c;FreeRTOS 中的列表是一个双向环形链表 1.2 列表、列表项、迷你列表项结构体 1&#xff09;列表结构体 typedef struct xLIST { listFIRST_LIST_INTEGRITY_CHECK_VAL…...

07|输出解析:用OutputParser生成鲜花推荐列表

07&#xff5c;输出解析&#xff1a;用OutputParser生成鲜花推荐列表 模型 I/O Pipeline 下面先来看看 LangChain 中的输出解析器究竟是什么&#xff0c;有哪些种类。 LangChain 中的输出解析器 语言模型输出的是文本&#xff0c;这是给人类阅读的。但很多时候&#xff0c;你…...

cfa一级考生复习经验分享系列(十二)

背景&#xff1a;就职于央企金融机构&#xff0c;本科金融背景&#xff0c;一直在传统金融行业工作。工作比较忙&#xff0c;用了45天准备考试&#xff0c;几乎每天在6小时以上。 写在前面的话 先讲一下&#xff0c;整体一级考下来&#xff0c;我觉得知识点多&#xff0c;偏基础…...

【损失函数】SmoothL1Loss 平滑L1损失函数

1、介绍 torch.nn.SmoothL1Loss 是 PyTorch 中的一个损失函数&#xff0c;通常用于回归问题。它是 L1 损失和 L2 损失的结合&#xff0c;旨在减少对异常值的敏感性。 loss_function nn.SmoothL1Loss(reductionmean, beta1.0) 2、参数 size_average (已弃用): 以前用于确定是…...

Go语言中的HTTP重定向

大家好&#xff0c;我是你们可爱的编程小助手&#xff0c;今天我们要一起探讨如何使用Go语言实现HTTP重定向&#xff0c;让我们开始吧&#xff01; 大家都知道&#xff0c;网站开发中有时候需要将用户的请求从一个URL导向到另一个URL。比如说&#xff0c;你可能想将旧的URL结构…...

ORACLE P6 v23.12 最新虚拟机(VM)全套系统环境分享

引言 根据上周的计划&#xff0c;我简单制作了两套基于ORACLE Primavera P6 最新发布的23.12版本预构建了虚拟机环境&#xff0c;里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机&#xff0c;请先与Oracle Primavera销售代…...

鸿蒙开发ArkTS基础学习-开发准备工具配置

文章目录 前言1. 准备工作2.开发文档3.鸿蒙开发路径一.详情介绍二.DevEco Studio安装详解-开发环境搭建2.1配置开发环境欢迎各位读者阅读本文,今天我们将介绍鸿蒙(HarmonyOS)应用开发的入门步骤,特别是在准备工作和开发环境搭建方面的重要信息。本文将对鸿蒙官方网站的关键…...

WEB 3D技术 three.js 雾 基础使用讲解

本文 我们说一下 雾 在three.js中有一个 Fog类 它可以创建线性雾的一个效果 她就是模仿现实世界中 雾的一个效果 你看到远处物体会组件模糊 直到完全被雾掩盖 在 three.js 中 有两种雾的形式 一种是线性的 一种是指数的 个人觉得 线性的会看着自然一些 他是 从相机位置开始 雾…...

Python中的网络编程

IP地址 IPv4IPv6查看本机的IP地址 win ipconfiglinux ifconfig ping命令 ping www.baidu.com 查看是否能连通指定的网站ping 192.168.1.222 查看是否能连通指定的IP Port端口 0-65535 TCP/IP协议 传输数据之前要建立连接&#xff0c;通过三次握手建立&#xff1a; 客户端 --&g…...

uni-app js语法

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…...

【论文阅读笔记】Detecting Camouflaged Object in Frequency Domain

1.论文介绍 Detecting Camouflaged Object in Frequency Domain 基于频域的视频目标检测 2022年发表于CVPR [Paper] [Code] 2.摘要 隐藏目标检测&#xff08;COD&#xff09;旨在识别完美嵌入其环境中的目标&#xff0c;在医学&#xff0c;艺术和农业等领域有各种下游应用。…...

Mysql(5日志备份恢复)

一.日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data 先看下mysql的日志文件有无&#xff1a; 修改配置文件添加&#xff1a;错误日志&#xff0c;用来记录当MySQL启动、停止或运行时发生的错误信息&#xff0c;默认已开启 修改配置文件添加&#xff1a;通用查…...

MR实战:实现数据去重

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据文件1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、Map阶段实现&#xff08;1&#xff09;创建Maven项目&#xff08;2&#xff09;添加相关依赖…...

JVM 常用知识和面试题

1. 什么是JVM内存结构&#xff1f; jvm将虚拟机分为5大区域&#xff0c;程序计数器、虚拟机栈、本地方法栈、java堆、方法区&#xff1b; 程序计数器&#xff1a;线程私有的&#xff0c;是一块很小的内存空间&#xff0c;作为当前线程的行号指示器&#xff0c;用于记录当前虚拟…...

【教3妹学编程-算法题】一年中的第几天

3妹&#xff1a;“太阳当空照&#xff0c;花儿对我笑&#xff0c;小鸟说早早早&#xff0c;你为什么背上炸药包” 2哥 :3妹&#xff0c;什么事呀这么开森。 3妹&#xff1a;2哥你看今天的天气多好啊&#xff0c;经过了一周多的寒潮&#xff0c;天气总算暖和些了。 2哥&#xff…...

ramdump 中的memory统计

0. 前言 ramdump是指某个时刻系统或者子系统发生crash等异常&#xff0c;系统将内存中的数据通过一定的方式保存下来&#xff0c;相当于一个系统内存快照&#xff0c;用以开发者离线分析系统异常问题。 ramdump 工具中有很多内存统计的脚本&#xff0c;本文逐一剖析内存相关的…...

Element-Ui树形数据懒加载,删除到最后一个空数组不刷新问题

使用elemenui树形删除数据的时候刷新页面&#xff0c;我在网上找了好多方法&#xff0c;要么没用&#xff0c;要么都是部分代码&#xff0c;自己又看不懂&#xff0c;不得不硬着头皮看源码&#xff0c;发现了有个方法可以刷新。 使用elemenui树形删除数据的时候刷新页面。源码里…...

基于NASM搭建一个能编译汇编语言的汇编软件工具环境(利用NotePad++)

文章目录 一、创建汇编语言源程序二、Notepad的下载、安装、使用三、下载和安装编译器NASM3.1 下载NASM编译器3.2 安装并配置环境变量 四、编译汇编语言源程序&#xff08;使用命令&#xff09;五、下载和使用配套源码及工具六、将编译功能集成到Notepad 一、创建汇编语言源程序…...

使用setoolkit制作钓鱼网站并结合dvwa靶场储存型XSS漏洞利用

setoolkit是一款kali自带的工具 使用命令启动 setoolkit 1) Social-Engineering Attacks 1&#xff09; 社会工程攻击 2) Penetration Testing (Fast-Track) 2&#xff09; 渗透测试&#xff08;快速通道&#xff09; 3) Third Party Module…...

计算机组成原理-总线概述

文章目录 总线简图总线的物理实现总览总线定义总线的特性总线的分类按数据格式分类串行总线并行总线 按总线功能分类注意系统总线的进一步分类 总线的结构单总线的机构双总线的结构三总线的结构四总线的结构 小结 总线简图 总线的物理实现 如果该为数据总线&#xff0c;那么当…...

三角函数两角和差公式推导

一.几何推理 1.两角和公式 做一斜边为1的直角△ABC,任意旋转非 k Π , k N kΠ,kN kΠ,kN,补充如图,令 ∠ A B C ∠ α &#xff0c; ∠ C B F ∠ β ∠ABC∠α&#xff0c;∠CBF∠β ∠ABC∠α&#xff0c;∠CBF∠β ∴ ∠ D B F ∠ D B A ∠ α ∠ β 90 , ∠ D A …...

HarmonyOS page生命周期函数讲解

下面 我们又要看一个比较重要的点了 页面生命周期 页面组件有三个生命周期 onPageShow 页面显示时触发 onPageHide 页面隐藏时触发 onBackPress 页面返回时触发 这里 我们准备两个组件 首先是 index.ets 参考代码如下 import router from ohos.router Entry Component struc…...

3D视觉-结构光测量-线结构光测量

概述 线结构光测量中&#xff0c;由激光器射出的激光光束透过柱面透镜扩束&#xff0c;再经过准直&#xff0c;产生一束片状光。这片光束像刀刃一样横切在待测物体表面&#xff0c;因此线结构光法又被成为光切法。线结构光测量常采用二维面阵 CCD 作为接受器件&#xff0c;因此…...

ssm基于web的马病管理系统设计与实现+jsp论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;马病信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广大…...

SaaS版Java基层健康卫生云HIS信息管理平台源码(springboot)

云his系统源码&#xff0c;系统采用主流成熟技术开发&#xff0c;B/S架构&#xff0c;软件结构简洁、代码规范易阅读&#xff0c;SaaS应用&#xff0c;全浏览器访问&#xff0c;前后端分离&#xff0c;多服务协同&#xff0c;服务可拆分&#xff0c;功能易扩展。多集团统一登录…...

redis,memcached,nginx网络组件,网络编程——reactor的应用

目录 目标网络编程关注的问题连接的建立连接的断开消息的到达消息发送完毕 网络 IO 职责检测 IO检测 io剖析 操作 IO 阻塞IO 和 非阻塞IOIO 多路复用epoll结构以及接口 reactor编程连接建立连接断开数据到达数据发送完毕 reactor 应用&#xff1a;后续补充源码解析单 reacrtor多…...

【机电、机器人方向会议征稿|不限专业|见刊快】2024年机械、 图像与机器人国际会议(IACMIR 2024)

【机电、机器人方向会议征稿|不限专业|见刊快】2024年机械、 图像与机器人国际会议&#xff08;IACMIR 2024&#xff09; 2024 International Academic Conference on Machinery, Images, and Robotics 会议将聚焦“机械、成像和机器人”相关的最新研究领域&#xff0c;为国内…...

uniapp学习之路

uniapp 学习之路 1. 下载HBuilderX2. 下载uView初始框架3. 开始学习1.更改页面背景色&#xff0c;渐变色 1. 下载HBuilderX https://www.dcloud.io/hbuilderx.html?ivk_sa1024320u2. 下载uView初始框架 https://ext.dcloud.net.cn/plugin?id15933. 开始学习 1.更改页面背景…...

移动开发新的风口?Harmony4.0鸿蒙应用开发基础+实践案例

前段时间鸿蒙4.0引发了很多讨论&#xff0c;不少业内人士认为&#xff0c;鸿蒙将与iOS、安卓鼎足而三了。 事实上&#xff0c;从如今手机操作系统竞赛中不难看出&#xff0c;安卓与iOS的形态、功能逐渐趋同化&#xff0c;两大系统互相取长补短&#xff0c;综合性能等差距越来越…...

QT上位机开发(倒计时软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 倒计时软件是生活中经常遇到的一种场景。比如运动跑步&#xff0c;比如学校考试&#xff0c;比如论文答辩等等&#xff0c;只要有时间限制规定的地…...

2023 楚慧杯 --- Crypto wp

文章目录 初赛so large e 决赛JIGE 初赛 so large e 题目&#xff1a; from Crypto.Util.number import * from Crypto.PublicKey import RSA from flag import flag import randomm bytes_to_long(flag)p getPrime(512) q getPrime(512) n p*q e random.getrandbits(1…...

Python+OpenCV 零基础学习笔记(1-3):anaconda+vscode+jupyter环境配置

文章目录 前言相关链接环境配置&#xff1a;AnacondaPython配置OpenCVOpencv-contrib:Opencv扩展 Notebook:python代码笔记vscode配置配置AnacondaJupyter文件导出 前言 作为一个C# 上位机&#xff0c;我认为上位机的终点就是机器视觉运动控制。最近学了会Halcon发现机器视觉还…...

Spring Cloud Gateway 常见过滤器的基本使用

目录 1. 过滤器的作用 2. Spring Cloud Gateway 过滤器的类型 2.1 内置过滤器 2.1.1 AddResponseHeader 2.1.2 AddRequestHeader 2.1.3 PrefixPath 2.1.4 RequestRateLimiter 2.1.5 Retry 2.2 自定义过滤器 1. 过滤器的作用 过滤器通常用于拦截、处理或修改数据流和事…...