基于Spring Cloud的电商系统设计与实现——用户与商品模块的研究(上)

操作系统:Windows

Java开发包:JDK1.8

项目管理工具:Maven3.6.0

项目开发工具:IntelliJIDEA

数据库:MySQL

Spring Cloud版本:Finchley.SR2

Spring Boot版本:2.0.6.RELEASE

目录

  • 用户模块—user-service
  • 商品模块—goods-service
  • 数据库设计
  • EurekaServer与公共工程的搭建
  • 搭建Eureka Server
    • 步骤1:创建项目,引入依赖
    • 步骤2:添加Eureka的相关配置
    • 步骤3:定义Security安全控制
    • 步骤4:在项目启动类添加注解
    • 步骤5:测试运行
  • 搭建公共工程
    • 步骤1:创建公共工程模块
    • 步骤2:创建与数据库中各张表对应的实体类
    • 步骤3:将Module项目打成jar包到Maven仓库
  • 用户模块实现
    • 步骤2:在全局配置文件application.yml中添加Eureka、MySQL以及MyBatis的相关配置
    • 步骤3:在项目启动类添加@EnableEurekaClient注解
  • 搭建user-consumer
    • 步骤1:创建项目,引入依赖
    • 步骤2:在全局配置文件application.yml中添加Eureka和Thymeleaf的相关配置信息
  • 用户登录功能
    • 步骤1:在工程user-provider中定义用户登录接口
    • 步骤2:在工程user-consumer中调用user-provider中的接口实现用户登录功能
    • 步骤3:启动测试登录功能
  • 用户注册功能
    • 步骤1:在工程user-provider中定义用户注册接口
    • 步骤2:在工程user-consumer中调用user-provider中的接口实现用户注册功能

此电商系统包含了用户与商品两个模块的部分功能,用户模块包括用户注册、用户登录;商品模块包括商品展示、商品详情、购物车以及订单。
在这里插入图片描述

开发项目之前,有必要根据项目业务进行分析,设计一套合理的架构。

本系统采用的是Spring Cloud微服务架构,根据业务功能将系统划分为5个服务,这5个服务构成了一套完整的微服务系统。其中,2个服务是基础服务,提供了一套服务治理的功能,它们分别是Eureka Server和网关服务;2个服务是资源服务,分别是用户服务和商品服务,对外暴露API接口,除此之外,还有一个common的工程,为资源服务提供基本的工具类。
在这里插入图片描述

浏览器访问服务端时,首先会经过网关,网关会根据请求路由到不同的服务,并且每个服务都会从不同的MySQL数据库获取数据。

用户模块—user-service

在这里插入图片描述

商品模块—goods-service

在这里插入图片描述

数据库设计

1.用户模块
在这里插入图片描述

/*创建数据库webuser*/CREATE DATABASE webuser;/*8.0以下版本MySQL执行以下SQL修改字符编码*/alter database webuser character set utf8;set names gbk;/*使用数据库webuser*/USE webuser;/*创建表user*/CREATE TABLE user (uaccount int(11) AUTO_INCREMENT PRIMARY KEY,upassword varchar(255) NOT NULL ,uname varchar(255) NOT NULL,usex varchar(50) ) ;/*向user表插入数据 */insert  into user(uaccount,upassword,uname,usex) values (10018,'123','rose','女'),(10019,'123','jake','男'),(10020,'123','张三','男'),(10021,'1','李四','男'),(10022,'1','李明','男'),(10023,'2','whhh','男'),(10024,'1','王五','女'),(10025,'1','hh','女');

2.商品模块
在这里插入图片描述

/*创建数据库webgoods*/CREATE DATABASE webgoods;/*8.0以下版本MySQL执行以下SQL修改字符编码*/alter database webgoods character set utf8;set names gbk;/*使用数据库webgoods*/USE webgoods;/*创建数据表goods*/CREATE TABLE goods (gid int(11)  AUTO_INCREMENT PRIMARY KEY,gname varchar(255) ,gdetails varchar(255) ,gprice int(11)) ;/*向goods表插入数据*/insert  into goods(gid,gname,gdetails,gprice) values (1,'草莓','可口草莓',4),(2,'苹果','红富士苹果',2),(3,'橙子','金黄的大橙子',4),(4,'葡萄','吐鲁番葡萄',12),(5,'大虾','山东大虾',5),(6,'带鱼','好吃的带鱼',50),(7,'扇贝','大神快来快来',20),(8,'皮皮虾','啥的客户',10),(9,'脉动','不在状态,脉动一下',4),(10,'汽水','栓双',8),(11,'沙棘汁','好喝',3),(12,'和其正','dsa asd',5),(13,'菠菜','大',2),(14,'生菜','asdajlskdja',2),(15,'番茄','好吃',1),(16,'胡萝卜','asdkjlajkld',2);

EurekaServer与公共工程的搭建

使用SpringInitializr方式创建一个项目web-store:

后面其他项目均在父工程中创建模块Moudle的方式创建,结构如下:
在这里插入图片描述

搭建Eureka Server

搭建eureka-server作为服务中心,是每个Spring Cloud微服务的心脏,所有服务将会注册到Eureka Server中。

步骤:

1.创建项目,引入依赖

2.添加Eureka相关配置

3.定义Security安全控制

4.添加@EnableEurekaServer注解

5.测试运行

步骤1:创建项目,引入依赖

在父工程web-store中创建Moudle,使用Spring Initializr方式创建一个名称为eureka-server的Spring Boot模块,将Artifact命名为eureka-server,在pom.xml文件中添加Eureka Server和Security依赖。

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-security</artifactId><version>2.0.0.RELEASE</version></dependency>

注:记得修改SpringBoot版本号,添加SpringCloud版本号,要匹配。添加管理依赖。(后面每次新创建项目同)

步骤2:添加Eureka的相关配置

在全局配置文件application.yml中添加Eureka的相关配置信息,和Security的安全配置信息。
在这里插入图片描述

遇到这种情况
在这里插入图片描述
点击reload in ‘GBK’,ok
在这里插入图片描述

步骤3:定义Security安全控制

创建csrf包,csrf包下创建Security安全配置类WebSecurityConfig,该类定义了Security的安全控制。
在这里插入图片描述

步骤4:在项目启动类添加注解

@EnableEurekaServer注解

在项目启动类EurekaServerApplication上添加@EnableEurekaServer注解开启Eureka Server功能。
在这里插入图片描述

步骤5:测试运行

在这里插入图片描述

  1. yml的语法格式有误

这是最先考虑的问题,办法只有一个,就是校验yml语法,仔细检查看看,不多说了。

  1. application.yml文件格式问题

如果你的项目没有配置错误,配置文件名称也正常,还出现这个问题,那一定是你的yml文件编码的问题。

因为这个文件的编码格式是GBK,项目的编码格式是UTF-8,里面有注释,注释乱码,导致编译失败。

办法如下:

IDEA打开路径:File --> Settings --> File Encodings,然后将 /application.yml 的便面格式改成与项目一致,即:UTF-8;
保险起见,将“Project Encoding”也都改成UTF-8;
重启IDEA,然后启动项目,OK啦。
在这里插入图片描述
在这里插入图片描述
或者在 spring. freemarker.charset: utf-8
在这里插入图片描述

启动eureka-server项目,在浏览器中访问http://localhost:8001。首先会跳转到登录认证页面,输入application.yml中配置的用户名密码登录。
在这里插入图片描述

搭建公共工程

在用户模块中会有user-provider与user-consumer,我们需要在两个项目中都编写User实体类,会有很多重复性代码,这时,就需要把User实体类存放在公共项目中,并以Jar的形式打包到Maven仓库,方便提供者与消费者调用

步骤1:创建公共工程模块

在父工程web-store中使用Spring Initializr方式新建公共工程Moudle项目common,将Group命名为com.bushuo,将Artifact命名为common。

步骤2:创建与数据库中各张表对应的实体类

在公共工程common中创建entity包,并在该包中创建User实体类、Goods实体类。
在这里插入图片描述

在这里插入图片描述
点击右键,Generate
在这里插入图片描述
点击Getter and Setter,然后全部选中。就OK了
在这里插入图片描述
注:实体类中属性名与对应数据表中字段名要相同,且类型对应

步骤3:将Module项目打成jar包到Maven仓库

选择IEDA工具右侧的MAVEN→common→Lifecyle,双击Lifecyle中的install进行打包。打包完成后,会在工程common的target目录下生成刚刚打包的jar。

我出现了打包测试异常
在这里插入图片描述
在这里插入图片描述

 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skipTests>true</skipTests> <!-- 不会编译测试 --></configuration></plugin>

在去clean,然后install
在这里插入图片描述

用户模块实现

搭建user-provider
步骤1:创建项目,引入依赖

在父工程web-store中创建Moudle,使用Spring Initializr方式创建一个名称为user-provider的Spring Boot项目,将Artifact命名为user-provider,添加Web、Eureka Client、MyBatis、公共实体类common、MySQL依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bushuo</groupId><artifactId>user-provider</artifactId><version>0.0.1-SNAPSHOT</version><name>user-provider</name><description>Demo project for Spring Boot</description><url/><properties><java.version>1.8</java.version></properties><dependencies><!--web启动依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mybatis依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.1</version></dependency><!--eureka依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!--mysql依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.SR2</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

注:若MySQL驱动依赖报红,则加一行版本号重新下载:

5.x的MySQL选择:5.x.x

8.x的MySQL选择:8.x.x

步骤2:在全局配置文件application.yml中添加Eureka、MySQL以及MyBatis的相关配置

在这里插入图片描述
注:

8.0以下MySQL驱动名:com.mysql.jdbc.Driver

8.0以上MySQL驱动名:com.mysql.cj.jdbc.Driver

步骤3:在项目启动类添加@EnableEurekaClient注解

在项目启动类上添加@EnableEurekaClient注解开启Eureka Client功能。

搭建user-consumer

步骤1:创建项目,引入依赖

在父工程web-store中创建Moudle,使用Spring Initializr方式创建一个名称为user-consumer的Spring Boot项目,将Artifact命名为user-consumer,添加Web、Eureka Client、公共实体类common、Feign、Thymeleaf、Hystrix等依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bushuo</groupId><artifactId>user-consumer</artifactId><version>0.0.1-SNAPSHOT</version><name>user-consumer</name><description>Demo project for Spring Boot</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>1.8</java.version></properties><dependencies><!--feign依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>2.0.0.RELEASE</version></dependency><!--web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--eureka依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!--thymeleaf前端模板依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><version>2.0.0.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--hystrix熔断依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId><version>2.0.0.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.SR2</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

步骤2:在全局配置文件application.yml中添加Eureka和Thymeleaf的相关配置信息

在这里插入图片描述
步骤3:在项目启动类添加@EnableEurekaClient和@EnableFeignClients注解

在项目启动类上添加@EnableEurekaClient注解开启Eureka Client功能,添加@EnableFeignClients注解开启Feign功能。
在这里插入图片描述

用户登录功能

步骤:

1.在工程user-provider中定义用户登录接口

2.user-consumer调用user-provider中的接口实现用户登录功能
3. 启动测试用户登录功能

步骤1:在工程user-provider中定义用户登录接口

(1)在dao包的UserDao接口中,添加用户登录的方法
在这里插入图片描述

(2)在resources下的mapper包中的UserMapper.xml文件中配置用户登录访问接口
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.bushuo.userprovider.Dao.UserDao"><select id="login" resultType="com.bushuo.common.entity.User"parameterType="java.lang.String">select * from user where uname=#{uname} and upassword=#{upassword}</select></mapper>

(3)在controller包中的UserController类中添加登录接口
在这里插入图片描述
user-consumer程序结构:

步骤2:在工程user-consumer中调用user-provider中的接口实现用户登录功能

先构造相同结构
在这里插入图片描述

(1)在UserService接口中编写Feign组件调用user-provider中接口的登录方法

在这里插入图片描述
(2)在UserServiceHystrix类中编写处理用户登录的熔断处理逻辑
在这里插入图片描述
(3)在UserController类中添加处理用户登录时跳转登录界面的请求/tologin
在这里插入图片描述
注:采用 @Controller 注解将该类标识为控制器层的组件。与 @RestController 不同,@Controller 的方法返回值为 String 类型时,默认会被视为视图名称。结合在 application.yml 文件中配置的前端页面路径,方法可以返回 templates 目录中的 login.html 页面进行渲染。

(4)在UserController类中添加处理用户登录的请求
在这里插入图片描述
(5)在resources下的templates目录中创建静态页面
login.html:

<html lang="en"><head><meta charset="UTF-8"><title>登录页面</title></head><body><h1 align="center">登录页面</h1><div style="width:100%;text-align:center"><form action="http://localhost:8003/admin/login" method="get"><p>用  户: <input type="text" id="userName" name="uname"  /></p><p>密  码: <input type="password" id="password" name="upassword" /></p><p><input type="submit" value="登录"><input type="reset" value="重置"></p></form>没有账号?<a href="http://localhost:8003/admin/toregister">去注册</a></div></body></html>

wecomle.html:
在这里插入图片描述

步骤3:启动测试登录功能

启动eureka-server、user-provider和user-consumer,使用浏览器访问localhost:8003/admin/tologin。
在这里插入图片描述

用户注册功能

步骤1:在工程user-provider中定义用户注册接口

(1)在dao包的UserDao接口中,添加用户注册的方法
在这里插入图片描述
(2)在resources下的mapper包中的UserMapper.xml文件中配置用户注册访问接口
在这里插入图片描述
(3)在controller包中的UserController类中添加注册接口
在这里插入图片描述

 @RequestMapping(value = "/register",method = RequestMethod.GET)public int register(@RequestParam(value ="upassword" )String upassword,@RequestParam(value ="uname" )String uname,@RequestParam(value ="usex" )String usex){return userDao.register( upassword,uname,usex );}

步骤2:在工程user-consumer中调用user-provider中的接口实现用户注册功能

(1)在UserService接口中编写Feign组件调用user-provider中接口的注册方法
在这里插入图片描述

(2)在UserServiceHystrix类中编写处理用户注册的熔断处理逻辑

在这里插入图片描述

(3)在UserController类中添加处理用户注册时跳转注册界面的请求/toregister

在这里插入图片描述

(4)在UserController类中添加处理用户注册的请求
在这里插入图片描述

(5)在resources下的templates目录中创建静态页面

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>注册页面</title></head><body><h1 align="center">注册页面</h1><div style="width:100%;text-align:center"><form action="http://localhost:8003/admin/register" method="get"><p>用  户: <input type="text" id="userName" name="uname"  /></p><p>密  码: <input type="password" id="password" name="upassword" /></p><p>确认密码: <input type="password" id="upassword" name="upassword" /></p><p>性   别: <input type="text" id="sex" name="usex" /></p><p><input type="submit" value="注册"><input type="reset" value="重置"></p></form>已有账号?<a href="http://localhost:8003/admin/toregister">去登录</a></div>
<script>document.querySelector('form').addEventListener('submit', function(event) {const password = document.getElementById('password').value;const confirmPassword = document.getElementById('confirmPassword').value;if (password !== confirmPassword) {alert('密码和确认密码不匹配!');event.preventDefault(); // 阻止表单提交}});
</script></body></html>

步骤3:启动测试登录功能

启动eureka-server、user-provider和user-consumer,使用浏览器访问注册页面:http://localhost:8003/admin/toregister在这里插入图片描述

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

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

相关文章

YOLO系列入门:1、YOLO V11环境搭建

YOLO了解 yolo检测原理 yolo是目标检测模型&#xff0c;目标检测包含物体分类、位置预测两个内容。目前yolo的开发公司官网为&#xff1a;https://docs.ultralytics.com/zh截止到目前2024年10月&#xff0c;最新的是yolo11。关于YOLO的介绍可以参考这篇文章&#xff1a;https…

[Javase]封装、继承、多态与异常处理

文章目录 一、前言二、封装1、封装的思想2、封装代码层面的体现 三、继承1、继承的概念和好处2、继承代码层面的体现 四、多态1、多态的概念2、多态的好处和三要素2、多态代码层面的体现 五、异常处理1、try-catch-finally结构详解2、throw\throws 一、前言 本文章适合有一定面…

10.15.2024刷华为OD C题型(二)

10.15.2024刷华为OD C题型&#xff08;二&#xff09; 密码输入检测智能成绩表 如果是目标院校150分能过&#xff0c;而且这道题是两百分的话我就阿弥陀佛了。 这类简单类型的字符串处理题目一看就有思路&#xff0c;起码能做&#xff0c;遇到那种稍微加点数学的&#xff0c;感…

【从零开始的LeetCode-算法】3099. 哈沙德数

如果一个整数能够被其各个数位上的数字之和整除&#xff0c;则称之为 哈沙德数&#xff08;Harshad number&#xff09;。给你一个整数 x 。如果 x 是 哈沙德数 &#xff0c;则返回 x 各个数位上的数字之和&#xff0c;否则&#xff0c;返回 -1 。 示例 1&#xff1a; 输入&am…

MySQL增删改进阶

目录 1.数据库约束 1.1约束类型 1.2 not null约束 1.3 unique&#xff1a;唯一约束 1.4 default&#xff1a;默认约束 1.5 primary key&#xff1a;主键约束 1.6 foreign key:外键约束 1.7 check约束&#xff08;了解&#xff09; 2.表的设计 3.新增&#xff08;进阶&…

刷题训练之多源 BFS

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握多源 BFS算法。 > 毒鸡汤&#xff1a;学习&#xff0c;学习&#xff0c;再学习 ! 学&#xff0c;然后知不足。 > 专栏选自&#xff1a;刷…

C++(stack和queue)

1. stack的介绍、使用和实现 1.1 stack的介绍 stl里的stack其实和数据结构内的stack和前面数据结构的栈不能说百分百一样&#xff0c;但也有百分之90是一样的&#xff0c;他们的特性都是LIFO&#xff08;last in first out&#xff09;先进后出的原则&#xff0c;前面有类似的…

VideoCLIP-XL:推进视频CLIP模型对长描述的理解

摘要 对比语言-图像预训练&#xff08;CLIP&#xff09;已被广泛研究并应用于众多领域。然而&#xff0c;预训练过程中对简短摘要文本的重视阻碍了CLIP理解长描述的能力。在视频方面&#xff0c;这个问题尤为严重&#xff0c;因为视频通常包含大量详细内容。在本文中&#xff…

如何看一个flutter项目的具体flutter版本

查看pubspec.lock文件 这个项目实际运行的就是 flutter 3.16.6 版本的

Leetcode 1489. 找到最小生成树里的关键边和伪关键边

1.题目基本信息 1.1.题目描述 给你一个 n 个点的带权无向连通图&#xff0c;节点编号为 0 到 n-1 &#xff0c;同时还有一个数组 edges &#xff0c;其中 edges[i] [fromi, toi, weighti] 表示在 fromi 和 toi 节点之间有一条带权无向边。最小生成树 (MST) 是给定图中边的一…

MFC扩展库BCGControlBar Pro v35.1新版亮点:改进网格控件性能

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v35.1已全新发布了&#xff0c;这个版本改进网格控件的性能、增强工具栏编辑器功能等。 …

【puppeteer】wvp-puppeteer制作 过程

目录 最后的结论 制作windows&ubuntu的docker 重启桌面上的docker 命令重启 通过 Docker Desktop 图形界面重启 制作centos docker 测试 参考文档 最后的结论 ubuntu && windows 使用 dualvenregistry:5000/wvp-puppeteer:1.0 centos7 使用&#xff1a;…

通过OpenCV实现 Lucas-Kanade 算法

目录 简介 Lucas-Kanade 光流算法 实现步骤 1. 导入所需库 2. 视频捕捉与初始化 3. 设置特征点参数 4. 创建掩模 5. 光流估计循环 6. 释放资源 结论 简介 在计算机视觉领域&#xff0c;光流估计是一种追踪物体运动的技术。它通过比较连续帧之间的像素强度变化来估计图…

第6篇:无线与移动网络

目录 引言 6.1 无线网络的基础概念 6.2 无线局域网&#xff08;WLAN&#xff09;与IEEE 802.11 6.3 蓝牙与无线个域网&#xff08;WPAN&#xff09; 6.4 无线城域网&#xff08;WMAN&#xff09;与WiMax 6.5 ZigBee与智能家居 6.6 移动蜂窝网络&#xff08;3G/4G/5G&…

【Linux】总线-设备-驱动模型

背景 前面&#xff0c;我们介绍了写驱动代码的一些常规步骤&#xff0c;并且也写了最基本的驱动代码&#xff0c;但是那些代码存在着问题&#xff0c;我们将硬件的信息都写进了驱动里了&#xff0c;如果我们在杂项设备驱动中控制led&#xff0c;那么会在硬件操作接口中包含硬件…

【SQL实验】数据库、表、模式的SQL语句操作

完整代码在文章末尾 1、数据库的建立、删除和修改操作 &#xff08;1&#xff09;使用SQL语句创建数据库EDUC&#xff0c;并进行如下设置&#xff1a; 数据库文件和日志文件的逻辑名称分别为&#xff1a;Student_data和Student_log&#xff1b;数据文件的物理文件名为‘C:\DA…

基于Java语言的培训平台+学习平台+在线学习培训系统+教育平台+教育学习系统+课程学习平台

简述 企业培训平台企业考试系统培训平台考试系统企业大学企业视频网站视频学习平台 介绍 企业培训平台支持企业培训考试全流程&#xff0c;在线学习、在线考试&#xff0c;成熟的企业培训考试解决方案&#xff0c;充分满足企业培训需求。 独立部署&#xff0c;仅内部员工登录…

【热门】智慧果园管理系统解决方案

随着科技的进步,原有农业种植方式已经不能满足社会发展的需要,必须对传统的农业进行技术更新和改造。经过多年的实践,人们总结出一种新的种植方法——温室农业,即“用人工设施控制环境因素,使作物获得最适宜的生长条件,从而延长生产季节,获得最佳的产出”。这种农业生产方式…

03.顺序表实现

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储&#xff0c;在数组上完成数据的增删改查。一般见到的顺序表都是在结构体中定义的数组&#xff0c;只是比普通数组多了增删改查等一些其他功能函数。 上节已经介绍了顺序表有…

【android studio】Gradle和Gradle插件版本关系/配置/常见ERR示例

参考链接&#xff1a; Android之Gradle和Gradle插件区别及联系 grdle 的安装与配置 、gradle和jdk版本对应关系 Android Gradle Plugin与Gradle版本、JDK版本对应关系 配置示例 常见err 主要原因 1.编译版本未设定 2.有多个module而且gradle 版本设置不一致 修改如下&#xf…