基于SSM的二手交易管理系统的设计与实现 (含源码+sql+视频导入教程+文档)

👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频

1 、功能描述

  基于SSM的二手交易管理系统1拥有两种角色

  • 管理员:商品管理、订单管理、充值管理、用户管理等
  • 用户:发布商品、查看闲置、充值账户、查看所有订单、发布求购信息、修改个人信息、关注列表等

1.1 背景描述

  二手交易管理系统是一个基于SSM(Spring + SpringMVC + MyBatis)的Web应用程序,旨在提供一个方便、高效的平台,用于管理二手商品交易。该系统包括用户管理、商品管理、订单管理、支付管理等功能。

  系统采用Spring框架作为整体架构,通过SpringMVC模块进行请求处理和数据传递,使用MyBatis作为持久层框架,实现数据的持久化。系统还采用了MySQL数据库进行数据存储,并使用Tomcat服务器进行部署。

  用户管理模块负责管理用户信息,包括用户注册、登录、找回密码等功能。商品管理模块负责管理二手商品信息,包括商品的添加、修改、删除等功能。订单管理模块负责管理订单信息,包括订单的生成、支付、发货等功能。支付管理模块负责管理支付信息,包括支付方式的添加、修改、删除等功能。

  该系统具有友好的用户界面和灵活的功能设计,可满足不同用户的需求。通过该系统,用户可以更加方便地进行二手商品交易,提高交易的效率和安全性。

2、项目技术

后端框架:SSM(Spring、SpringMVC、Mybatis)

前端技术:Bootstrap、jsp、css、JavaScript、JQuery

2.1 SSM

  SSM(Spring+SpringMVC+MyBatis)是目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。其中,Spring就像是整个项目中的粘合剂,负责装配bean并管理其生命周期,实现控制反转(IoC)的功能。SpringMVC负责拦截用户请求,通过DispatcherServlet将请求匹配到相应的Controller并执行。而MyBatis则是对JDBC的封装,让数据库底层操作变得透明,通过配置文件关联到各实体类的Mapper文件,实现了SQL语句映射。

2.2 mysql

  MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。

3、开发环境

  • JAVA版本:JDK1.8
  • IDE类型:IDEA、Eclipse都可运行
  • tomcat版本:Tomcat 7-10版本均可
  • 数据库类型:MySql(5.x和8.x版本都可)
  • maven项目:否
  • 硬件环境:Windows 或者 Mac OS

4、功能截图+视频演示+文档目录

4.1 登录

登录

4.2 前端模块

首页

前端-商品详情

前端-分类查询

4.3 用户模块

用户-查看自己的闲置

用户-充值

用户-订单列表

用户-发布求购信息

用户-发布商品

用户-关注列表

用户-修改个个人信息

4.4 管理员模块

管理员-订单管理

管理员-钱包管理

管理员-商品管理

管理员-用户管理

4.4 文档目录

文档目录

5 、核心代码实现

5.1 配置代码

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"><!-- 加载数据库参数 --><context:property-placeholder location="classpath:conf/jdbc.properties"/><context:component-scan base-package="com.ldu.service.impl"/><bean id = "dataSource" class = "com.alibaba.druid.pool.DruidDataSource" destroy-method = "close"><!-- 数据库基本信息配置 --><property name = "url" value = "${druid.url}" /><property name = "username" value = "${druid.username}" /><property name = "password" value = "${druid.password}" /><property name = "driverClassName" value = "${druid.driverClassName}" /><property name = "filters" value = "${druid.filters}" /><!-- 最大并发连接数 --><property name = "maxActive" value = "${druid.maxActive}" /><!-- 初始化连接数量 --><property name = "initialSize" value = "${druid.initialSize}" /><!-- 配置获取连接等待超时的时间 --><property name = "maxWait" value = "${druid.maxWait}" /><!-- 最小空闲连接数 --><property name = "minIdle" value = "${druid.minIdle}" /><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name = "timeBetweenEvictionRunsMillis" value ="${druid.timeBetweenEvictionRunsMillis}" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --><property name = "minEvictableIdleTimeMillis" value ="${druid.minEvictableIdleTimeMillis}" /><property name = "validationQuery" value = "${druid.validationQuery}" /><property name = "testWhileIdle" value = "${druid.testWhileIdle}" /><property name = "testOnBorrow" value = "${druid.testOnBorrow}" /><property name = "testOnReturn" value = "${druid.testOnReturn}" /><property name = "maxOpenPreparedStatements" value ="${druid.maxOpenPreparedStatements}" /><!-- 打开 removeAbandoned 功能 --><property name = "removeAbandoned" value = "${druid.removeAbandoned}" /><!-- 1800 秒,也就是 30 分钟 --><property name = "removeAbandonedTimeout" value ="${druid.removeAbandonedTimeout}" /><!-- 关闭 abanded 连接时输出错误日志 --><property name = "logAbandoned" value = "${druid.logAbandoned}" /></bean><!-- 配置MyBatis的sqlSessionFactory --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="configLocation" value="classpath:conf/mybatis-config.xml"></property><property name="mapperLocations" value="classpath:mapper/*.xml"></property></bean><!-- Mapper接口所在包名,Spring会自动查找其下的Mapper  --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.ldu.dao"></property><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean><!-- 配置transactionManager事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!-- 配置事物通知属性 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><!-- 定义事物传播特性 --><tx:attributes><tx:method name="insert" propagation="REQUIRED"/><tx:method name="update*" propagation="REQUIRED" /><tx:method name="edit*" propagation="REQUIRED" /><tx:method name="save*" propagation="REQUIRED" /><tx:method name="add*" propagation="REQUIRED" /><tx:method name="new*" propagation="REQUIRED" /><tx:method name="set*" propagation="REQUIRED" /><tx:method name="remove*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="change*" propagation="REQUIRED" /><tx:method name="check*" propagation="REQUIRED" /><tx:method name="get*" propagation="REQUIRED" read-only="true" /><tx:method name="find*" propagation="REQUIRED" read-only="true" /><tx:method name="load*" propagation="REQUIRED" read-only="true" /><tx:method name="*" propagation="REQUIRED" read-only="true" /></tx:attributes></tx:advice><!-- 配置事物切面 --><aop:config><aop:pointcut expression="execution(* com.ldu.service.*.*(..))" id="serviceOperation"/><aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"/></aop:config>
</beans>

5.2 用户核心代码

package com.ldu.controller;import com.ldu.pojo.Focus;
import com.ldu.pojo.Goods;
import com.ldu.pojo.GoodsExtend;
import com.ldu.pojo.Image;
import com.ldu.pojo.Notice;
import com.ldu.pojo.NoticeExtend;
import com.ldu.pojo.Purse;
import com.ldu.pojo.User;
import com.ldu.service.FocusService;
import com.ldu.service.GoodsService;
import com.ldu.service.ImageService;
import com.ldu.service.NoticeService;
import com.ldu.service.PurseService;
import com.ldu.service.UserService;
import com.ldu.util.DateUtil;
import com.ldu.util.MD5;import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;@Controller
@RequestMapping(value = "/user")
public class UserController {@Resourceprivate UserService userService;@Resourceprivate GoodsService goodsService;@Resourceprivate ImageService imageService;@Resourceprivate FocusService focusService;@Resourceprivate PurseService purseService;@Resourceprivate NoticeService noticeService;/*** 用户注册* * @param user1* @return*/@RequestMapping(value = "/addUser")public String addUser(HttpServletRequest request, @ModelAttribute("user") User user1) {String url = request.getHeader("Referer");User user = userService.getUserByPhone(user1.getPhone());if (user == null) {// 检测该用户是否已经注册String t = DateUtil.getNowDate();// 对密码进行MD5加密String str = MD5.md5(user1.getPassword());user1.setCreateAt(t);// 创建开始时间user1.setPassword(str);user1.setGoodsNum(0);user1.setStatus((byte) 1);//初始正常状态user1.setPower(100);userService.addUser(user1);purseService.addPurse(user1.getId());// 注册的时候同时生成钱包}return "redirect:" + url;}/*** 注册验证账号* @param request* @return*/@RequestMapping(value = "/register",method = RequestMethod.POST)@ResponseBodypublic String register(HttpServletRequest request){String phone=request.getParameter("phone");User user = userService.getUserByPhone(phone);if(user==null) {return "{\"success\":true,\"flag\":false}";//用户存在,注册失败}else {return "{\"success\":true,\"flag\":true}";//用户不存在,可以注册}}/*** 登陆验证密码* @param request* @return*//*@RequestMapping(value = "/password",method = RequestMethod.POST)@ResponseBodypublic String password(HttpServletRequest request){String phone=request.getParameter("phone");String password=request.getParameter("password");if((phone==null||phone=="")&&(password==null||password=="")) {return "{\"success\":false,\"flag\":true}";}else {User user = userService.getUserByPhone(phone);if(user==null) {return "{\"success\":false,\"flag\":false}";//账号错误}String pwd = MD5.md5(password);if (pwd.equals(user.getPassword())) {return "{\"success\":true,\"flag\":false}";//密码正确}else {return "{\"success\":true,\"flag\":true}";//密码错误}}}*//*** 验证登录* @param request* @param user* @param modelMap* @return*/@RequestMapping(value = "/login")public ModelAndView loginValidate(HttpServletRequest request, HttpServletResponse response, User user,ModelMap modelMap) {User cur_user = userService.getUserByPhone(user.getPhone());String url = request.getHeader("Referer");if (cur_user != null) {String pwd = MD5.md5(user.getPassword());if (pwd.equals(cur_user.getPassword())) {if(cur_user.getStatus()==1) {request.getSession().setAttribute("cur_user", cur_user);return new ModelAndView("redirect:" + url);}}}return new ModelAndView("redirect:" + url);}/*** 更改用户名* * @param request* @param user* @param modelMap* @return*/@RequestMapping(value = "/changeName")public ModelAndView changeName(HttpServletRequest request, User user, ModelMap modelMap) {String url = request.getHeader("Referer");// 从session中获取出当前用户User cur_user = (User) request.getSession().getAttribute("cur_user");cur_user.setUsername(user.getUsername());// 更改当前用户的用户名userService.updateUserName(cur_user);// 执行修改操作request.getSession().setAttribute("cur_user", cur_user);// 修改session值return new ModelAndView("redirect:" + url);}/*** 完善或修改信息* * @param request* @param user* @param modelMap* @return*/@RequestMapping(value = "/updateInfo")public ModelAndView updateInfo(HttpServletRequest request, User user, ModelMap modelMap) {// 从session中获取出当前用户User cur_user = (User) request.getSession().getAttribute("cur_user");cur_user.setUsername(user.getUsername());cur_user.setQq(user.getQq());userService.updateUserName(cur_user);// 执行修改操作request.getSession().setAttribute("cur_user", cur_user);// 修改session值return new ModelAndView("redirect:/user/basic");}/*** 用户退出* * @param request* @return*/@RequestMapping(value = "/logout")public String logout(HttpServletRequest request) {request.getSession().setAttribute("cur_user", null);return "redirect:/goods/homeGoods";}/*** 个人中心* * @return*/@RequestMapping(value = "/home")public ModelAndView home(HttpServletRequest request) {ModelAndView mv = new ModelAndView();User cur_user = (User) request.getSession().getAttribute("cur_user");Integer userId = cur_user.getId();int size=5;Purse myPurse = purseService.getPurseByUserId(userId);List<User> users=userService.getUserOrderByDate(size);List<Notice> notice=noticeService.getNoticeList();mv.addObject("notice", notice);mv.addObject("myPurse", myPurse);mv.addObject("users", users);mv.setViewName("/user/home");return mv;}/*** 个人信息设置* * @return*/@RequestMapping(value = "/basic")public ModelAndView basic(HttpServletRequest request) {User cur_user = (User) request.getSession().getAttribute("cur_user");Integer userId = cur_user.getId();Purse myPurse = purseService.getPurseByUserId(userId);ModelAndView mv = new ModelAndView();mv.addObject("myPurse", myPurse);mv.setViewName("/user/basic");return mv;}/*** 我的闲置 查询出所有的用户商品以及商品对应的图片* * @return 返回的model为 goodsAndImage对象,该对象中包含goods 和 images,参考相应的类*/@RequestMapping(value = "/allGoods")public ModelAndView goods(HttpServletRequest request) {User cur_user = (User) request.getSession().getAttribute("cur_user");Integer userId = cur_user.getId();List<Goods> goodsList = goodsService.getGoodsByUserId(userId);List<GoodsExtend> goodsAndImage = new ArrayList<GoodsExtend>();for (int i = 0; i < goodsList.size(); i++) {// 将用户信息和image信息封装到GoodsExtend类中,传给前台GoodsExtend goodsExtend = new GoodsExtend();Goods goods = goodsList.get(i);List<Image> images = imageService.getImagesByGoodsPrimaryKey(goods.getId());goodsExtend.setGoods(goods);goodsExtend.setImages(images);goodsAndImage.add(i, goodsExtend);}Purse myPurse = purseService.getPurseByUserId(userId);ModelAndView mv = new ModelAndView();mv.addObject("goodsAndImage", goodsAndImage);mv.setViewName("/user/goods");mv.addObject("myPurse", myPurse);return mv;}/*** 我的关注 查询出所有的用户商品以及商品对应的图片* * @return 返回的model为 goodsAndImage对象,该对象中包含goods 和 images,参考相应的类*/@RequestMapping(value = "/allFocus")public ModelAndView focus(HttpServletRequest request) {User cur_user = (User) request.getSession().getAttribute("cur_user");Integer userId = cur_user.getId();List<Focus> focusList = focusService.getFocusByUserId(userId);List<GoodsExtend> goodsAndImage = new ArrayList<GoodsExtend>();for (int i = 0; i < focusList.size(); i++) {// 将用户信息和image信息封装到GoodsExtend类中,传给前台GoodsExtend goodsExtend = new GoodsExtend();Focus focus = focusList.get(i);Goods goods = goodsService.getGoodsByPrimaryKey(focus.getGoodsId());List<Image> images = imageService.getImagesByGoodsPrimaryKey(focus.getGoodsId());goodsExtend.setGoods(goods);goodsExtend.setImages(images);goodsAndImage.add(i, goodsExtend);}Purse myPurse = purseService.getPurseByUserId(userId);ModelAndView mv = new ModelAndView();mv.addObject("goodsAndImage", goodsAndImage);mv.addObject("myPurse", myPurse);mv.setViewName("/user/focus");return mv;}/*** 删除我的关注* @return*/@RequestMapping(value = "/deleteFocus/{id}")public String deleteFocus(HttpServletRequest request, @PathVariable("id") Integer goods_id) {User cur_user = (User) request.getSession().getAttribute("cur_user");Integer user_id = cur_user.getId();focusService.deleteFocusByUserIdAndGoodsId(goods_id, user_id);return "redirect:/user/allFocus";}/*** 添加我的关注* * @return*/@RequestMapping(value = "/addFocus/{id}")public String addFocus(HttpServletRequest request, @PathVariable("id") Integer goods_id) {User cur_user = (User) request.getSession().getAttribute("cur_user");Integer user_id = cur_user.getId();//首先获取用户所有的关注列表List<Focus> focus=focusService.getFocusByUserId(user_id);//若关注列表为空,则直接添加关注if(focus.isEmpty()) {focusService.addFocusByUserIdAndId(goods_id, user_id);return "redirect:/user/allFocus";}//遍历所有的关注列表for (Focus myfocus : focus) {int goodsId=myfocus.getGoodsId();//若该商品已经被关注,则直接返回if(goodsId == goods_id.intValue()) {return "redirect:/user/allFocus";}}focusService.addFocusByUserIdAndId(goods_id, user_id);return "redirect:/user/allFocus";}/*** 我的钱包* * @return 返回的model为 goodsAndImage对象*/@RequestMapping(value = "/myPurse")public ModelAndView getMoney(HttpServletRequest request) {User cur_user = (User) request.getSession().getAttribute("cur_user");Integer user_id = cur_user.getId();Purse purse = purseService.getPurseByUserId(user_id);ModelAndView mv = new ModelAndView();mv.addObject("myPurse", purse);mv.setViewName("/user/purse");return mv;}/*** 充值与提现 根据传过来的两个值进行判断是充值还是提现* * @return 返回的model为 goodsAndImage对象*/@RequestMapping(value = "/updatePurse")public String updatePurse(HttpServletRequest request, Purse purse) {User cur_user = (User) request.getSession().getAttribute("cur_user");Integer user_id = cur_user.getId();purse.setUserId(user_id);purse.setState(0);if (purse.getRecharge() != null) {purseService.updatePurse(purse);}if (purse.getWithdrawals() != null) {purseService.updatePurse(purse);}return "redirect:/user/myPurse";}@RequestMapping(value = "/insertSelective",method = RequestMethod.POST)@ResponseBodypublic String insertSelective(HttpServletRequest request){String context=request.getParameter("context");User cur_user = (User) request.getSession().getAttribute("cur_user");Notice notice=new Notice();notice.setContext(context);Date dt = new Date();     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");notice.setCreateAt(sdf.format(dt));notice.setStatus((byte) 0);notice.setUser(cur_user);if(context==null||context=="") {return "{\"success\":false,\"msg\":\"发布失败,请输入内容!\"}";}try {noticeService.insertSelective(notice);} catch (Exception e) {return "{\"success\":false,\"msg\":\"发布失败!\"}";}return "{\"success\":true,\"msg\":\"发布成功!\"}";}}

6 、功能视频演示

基于SSM的二手物品交易系统

7 、 获取方式

👇 大家点赞、收藏、关注、评论啦 👇🏻获取联系方式,后台回复关键词:二手👇🏻

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

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

相关文章

Redis Sentinel(哨兵)详解

目录 一&#xff1a;什么是Sentinel&#xff08;哨兵&#xff09; 二&#xff1a;Sentinel有什么用 1.监控 2.故障转移 3通知 4.配置提供 三&#xff1a;Sentinel如何检测master节点宕机 1.主观下线 2.客观下线 四&#xff1a;Sentinel是如何选举出新的master 1.s…

SpringBoot3整合ELK实现日志可视化

SpringBoot整合ELK实现日志可视化 一、环境准备 Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统 ELK中各个服务的作用 Elasticsearch:用于存储收集到的日志信息&#xff1b; Logstash:用于收集日志&#xff0c;SpringBoot应用整合了Logstash以后会把日志发…

golang面试

算法&#xff1a; 1.提取二进制位最右边的 r i & (~i 1) 2.树上两个节点最远距离&#xff0c;先考虑头结点参与不参与。 3.暴力递归改dp。 1.确定暴力递归方式。 2.改记忆化搜索 3.严格表方式&#xff1a; 分析可变参数变化范围&#xff0c;参数数量决定表维度、 …

【文心智能体】通过工作流使用知识库来实现信息查询输出,一键查看旅游相关信息,让出行多一份信心

欢迎来到《小5讲堂》 这是《文心智能体平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 创建灵感基本配置头像名称和简介人物设定角色与目标思考路…

Android10源码刷入Pixel2以及整合GMS

一、ASOP源码下载 具体可以参考我之前发布的文章 二、下载相关驱动包 这一步很关键,关系到编译后的镜像能否刷入后运行 下载链接:Nexus 和 Pixel 设备的驱动程序二进制文件 如下图所示,将两个驱动程序上传到Ubuntu服务器,并进行解压,得到两个脚本: 下载解压后会有两…

MySQL数据的增删改查(一)

目录 新增&#xff08;create&#xff09; 插入单条记录 插入多条记录 查询&#xff08;retrieve&#xff09; 查询所有列 查询特定列 查询字段为表达式 别名 去重 排序 按单列排序 按多列排序 使用表达式或别名排序 排序NULL值 条件查询 比较运算符 逻辑运算…

【阿一网络安全】如何让你的密码更安全?(三) - 散列函数

散列函数 散列函数&#xff08;Hash Function&#xff0c;又称散列算法、哈希函数&#xff09;&#xff0c;是一种从任何一种数据中创建小的数字指纹的方法。 散列值 散列函数&#xff0c;把任意长的消息明文&#xff0c;压缩成摘要&#xff0c;使得数据量变小&#xff0c;将…

k8s 容忍和污点

文章目录 Taint作用在节点上&#xff0c;能够使节点排斥一类特定的Pod&#xff0c;也就是不能“兼容”该节点的污点的Pod。对应的Toleration作用在Pod上&#xff0c;意为容忍&#xff0c;也就是可以兼容某类污点。 给节点增加一个Taint也很简单&#xff0c;直接使用kubectl ta…

【PostgreSQL】安装及使用(Navicat/Arcgis),连接(C#)

简介 PostgreSQL 是一个功能强大的开源对象关系数据库系统 下载地址 PostgreSQL: Downloads 由于我电脑上安装的是arcgispro3.1所以需要下载对应的postgresql版本 PostgreSQL 12 对应的 PostGIS 版本主要是 3.5.0 或更高版本。 安装 一般设置为postgresql 安装扩展插件 此…

Centos如何配置阿里云的yum仓库作为yum源?

背景 Centos在国内访问官方yum源慢&#xff0c;可以用国内的yum源&#xff0c;本文以阿里云yum源为例说明。 快速命令 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.a…

《深度学习》OpenCV轮廓检测 模版匹配 解析及实现

目录 一、模型匹配 1、什么是模型匹配 2、步骤 1&#xff09;提取模型的特征 2&#xff09;在图像中查找特征点 3&#xff09;进行特征匹配 4&#xff09;模型匹配 3、参数及用法 1、用法 2、参数 1&#xff09;image&#xff1a;待搜索对象 2&#xff09;templ&am…

【2025】基于python的网上商城比价系统、智能商城比价系统、电商比价系统、智能商城比价系统(源码+文档+解答)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

RTR_Chapter_4_中

四元数 四元数可以用于表示旋转和方向&#xff0c;它在很多地方都比欧拉角和矩阵表示更加优秀。任何三维方向都可以表示为一个绕特定轴的简单旋转&#xff0c;给定一个旋转轴和旋转角度&#xff0c;可以直接将其转换为一个四元数&#xff0c;或者是从一个四元数中提取出旋转轴和…

大数据与人工智能:脑科学与人工神经网络ANN

文章目录 大数据与人工智能&#xff1a;脑科学与人工神经网络ANN一、引言ANN简介研究背景与应用领域发展背景应用场景 二、ANN背后的人脑神经网络人脑神经网络的专业描述神经元的结构信号处理 思考和认知过程认知功能的实现 对机器学习算法的启示 三、ANN的研究进展初始阶段&am…

进程间通信-进程池

目录 理解​ 完整代码 完善代码 回收子进程&#xff1a;​ 不回收子进程&#xff1a; 子进程使用重定向优化 理解 #include <iostream> #include <unistd.h> #include <string> #include <vector> #include <sys/types.h>void work(int rfd) {…

Amazing!精准可控新视角视频生成+场景级3D生成!北大港中文腾讯等开源ViewCrafter

论文链接: https://arxiv.org/abs/2409.02048 GitHub链接&#xff1a;https://github.com/Drexubery/ViewCrafter 项目链接: https://drexubery.github.io/ViewCrafter/ Demo链接: https://huggingface.co/spaces/Doubiiu/ViewCrafter 亮点直击 本文提出了一种迭代视图合成策略…

java设计模式(持续更新中)

1 设计模式介绍 设计模式代表了代码的最佳实践&#xff0c;被有经验的开发人员使用。设计模式是很多被反复使用并知晓的&#xff0c;主要是对代码和经验的总结。使用设计模式是为了重用代码&#xff0c;并让代码更容易被人理解&#xff0c;保证代码的可靠性。对接口编程而不是…

双向dfs,多次dfs

前言&#xff1a;这个答案给我们提供了一种多次dfs的思路&#xff0c;记录queue的size&#xff0c;每次只取size个&#xff0c;就刚刚好只处理了上一次的‘ 题目地址 #include<bits/stdc.h> using namespace std;//定义队列节点 struct node {int x,y; }rear,front; //Q[…

JVM 调优篇2 jvm的内存结构以及堆栈参数设置与查看

一 jvm的内存模型 2.1 jvm内存模型概览 2.2 pc计数器 它是一块很小的内存空间&#xff0c;集合可以忽略不记&#xff0c;也是运行速度最快的存储区域。不会随着程序的运行需要更大的空间。 在jvm规范中&#xff0c;每个线程都有它自己的程序计数器&#xff0c;是线程私有的&…

二、栈和队列-算法总结

文章目录 二、栈和队列2.1 基本应用2.1.1 逆波兰表达式求值2.1.2 有效的括号 2.2 单调栈2.2.1 柱状图中最大的矩形 二、栈和队列 2.1 基本应用 2.1.1 逆波兰表达式求值 150. 逆波兰表达式求值 class Solution {/**思路分析&#xff1a;遇到数则压栈&#xff0c;遇到运算符…