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

基于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在这里插入图片描述

相关文章:

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

操作系统&#xff1a;Windows Java开发包&#xff1a;JDK1.8 项目管理工具&#xff1a;Maven3.6.0 项目开发工具&#xff1a;IntelliJIDEA 数据库&#xff1a;MySQL Spring Cloud版本&#xff1a;Finchley.SR2 Spring Boot版本&#xff1a;2.0.6.RELEASE 目录 用户模块—user-…...

Spring Boot + Vue 前后端分离项目总结:解决 CORS 和 404 问题

Spring Boot Vue 前后端分离项目总结&#xff1a;解决 CORS 和 404 问题 在进行前后端分离的项目开发中&#xff0c;我们遇到了几个关键问题&#xff1a;跨域问题 (CORS) 和 404 路由匹配错误。以下是这些问题的详细分析和最终的解决方案。 问题描述 跨域请求被阻止 (CORS) 当…...

JVM篇(学习预热 - JVM正式展开 - (实战课程学习总结))(持续更新迭代)

目录 感觉也看了这么多&#xff0c;说一些乱七八糟的内容&#xff0c;完全没有实质的收获&#xff0c;那么现在让我们正式来预热下JVM 吧&#xff1f; 一、程序的执行方式 二、为什么使用 JVM 三、字节码和机器码的区别 四、JDK、JRE与JVM的关系 五、OracleJDK和OpenJDK …...

WebGL编程指南 - 入门续

相关内容&#xff1a;在attribute变量传递参数的基础上&#xff0c;通过JavaScript获取鼠标事件的坐标&#xff0c;再经过坐标转换传递给attribute变量&#xff1b;Web颜色缓冲区每次绘制之后都会重置相关函数&#xff1a;JavaScript鼠标事件onmousedown/onmouseup/onclick htm…...

EPS导出DWG存在地物缺失或者没有编码属性的情况

问题描述 使用eps导出dwg时&#xff0c;打开dwg会发现部分地物缺失或者没有编码属性。 这里就是一片空白&#xff1a; 解决办法 1 查看eps的图层信息&#xff0c;发现图层没有对应上&#xff0c;故此地物编码也是没有的。 2 可以右键全选本编码对象&#xff0c;实现批量快…...

跨境业务收款难?Zoho Books来帮忙

外贸跨境企业应收账款管理繁琐&#xff0c;ZohoBooks财务管理软件提供自动化解决方案&#xff0c;简化开票、跟进、收款和账户更新流程&#xff0c;提升效率和准确性&#xff0c;助力企业优化现金流和财务健康。 什么是应收账款&#xff1f; 应收账款指的是企业在提供商品或服…...

深入解析 Harris 角点检测算法:从孔径问题到响应函数的完整推导

在图像处理中&#xff0c;角点是非常重要的特征。为了快速、准确地检测角点&#xff0c;Harris 提出了 Harris 角点检测算法&#xff0c;它基于局部窗口内图像梯度的变化来判断角点。本文将从最基础的孔径问题&#xff08;Aperture Problem&#xff09;入手&#xff0c;通过泰勒…...

抖音视频制作怎么暂停画面,抖音视频怎么让它有暂停的效果

千万别滥用视频特效&#xff0c;不然它能毁掉你的抖音作品。在创作过程中&#xff0c;应尽量使用类似暂停画面、隐形字幕这样的视觉特效&#xff0c;可以显著提高作品的视觉体验。增强视频表现力的同时&#xff0c;也不会让画面看起来过于夸张。有关抖音视频制作怎么暂停画面的…...

Android GPIO方式解码红外数据

1 红外遥控协议 1.1 基本概念 1&#xff09;NEC协议&#xff0c;采用PWM方式调制。38KHz载波&#xff0c;一般是由引导码地址码地址反码数据数据反码构成。 遥控接收头端收到的信号为&#xff1a;逻辑1是560us低1680us高&#xff0c;逻辑0是560us低560us高。 地址&#xff1a;u…...

基于SpringBoot+Vue的益农智慧服务平台【提供源码+答辩PPT+参考文档+项目部署】

一、项目技术架构&#xff1a; 本项目是一款SpringBoot益农平台的设计与实现。 该SpringBootVue的益农平台的设计与实现&#xff0c;后端采用SpringBoot架构&#xff0c;前端采用VueElementUI实现页面的快速开发&#xff0c;并使用关系型数据库MySQL存储系统运行数据。本系统分…...

基于springboot的在线考试与学习交流网页

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的&#xff0c;前后端分离。 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;…...

JS异步编程进阶(二):rxjs与Vue、React、Angular框架集成及跨框架状态管理实现原理

在现代前端开发中&#xff0c;异步操作已经成为不可或缺的一部分。无论是处理网络请求、响应用户输入&#xff0c;还是监听外部事件&#xff0c;异步编程模式始终占据重要位置。而RxJS作为功能强大的异步编程库&#xff0c;广泛应用于多个框架之中&#xff0c;如Vue、React、An…...

nginx web代理

目录 1.nginx的简单介绍 2.正向代理的应用场景 2.1做访问控制 2.2审计 2.3负载分散 2.4隐私保护和匿名性 3.反向代理的应用场景如下 3.1.负载均衡 2.缓存静态内容 3.压缩和优化内容 4.提供故障转移 5.安全性和匿名性 4.正向代理 4.1web端 4.2lb01代理服务器…...

人形机器人的关节控制

人形机器人的关节控制是机器人技术中的核心环节之一,它直接关系到机器人的运动灵活性、精确度和稳定性。 一、关节结构与设计 人形机器人的关节结构通常包括底座、内圈、外圈和滚珠等组件,这些组件共同构成了关节的旋转和支撑系统。关节的设计需要考虑到承载能力、稳定性以…...

python 爬虫 入门 二、数据解析(正则、bs4、xpath)

目录 一、待匹配数据获取 二、正则 三、bs4 &#xff08;一&#xff09;、访问属性 &#xff08;二&#xff09;、获取标签的值 &#xff08;三&#xff09;、查询方法 四、xpath 后续&#xff1a;登录和代理 上一节我们已经知道了如何向服务器发送请求以获得数据&#x…...

PTX 汇编代码语法

PTX&#xff08;Parallel Thread Execution&#xff09;汇编是 NVIDIA 为其 GPU 提供的一种并行指令集架构&#xff08;ISA&#xff09;&#xff0c;用于编写 GPU 设备代码。PTX 是一种中间表示&#xff08;IR&#xff09;&#xff0c;在 CUDA 代码编译时生成&#xff0c;之后会…...

【mysql】统计两个相邻任务/事件的间隔时间以及每个任务的平均用时

准备步骤1. 设置查询参数部分1.1 设置需要分析的起始时间1.2. 设置需要分析的时间的长度&#xff08;分析的结束时间&#xff09;1.3. 设置分析内容1.4. 设置需要分析的表和字段 2. 自动计算分析2.1 设置起始序号2.2. 筛选user_log表数据并生成带序号的临时表temp_ria2.3. 通过…...

RHCE——笔记

第一章——例行性工作 1&#xff1a;单一致性的例行性工作 仅处理执行一次就结束 at命令 /etc/at.allow —— 写在该文件的人可以使用at命令 /etc/at.deny —— 黑名单 两个文件都不存在&#xff0c;则只有root可以使用 #at工作调度对应的系统服务 [rootlocalhost ~]# p…...

Spring Boot在知识管理中的应用

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…...

OpenCV高级图形用户界面(14)交互式地选择一个或多个感兴趣区域函数selectROIs()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 允许用户在给定的图像上选择多个 ROI。 该函数创建一个窗口&#xff0c;并允许用户使用鼠标来选择多个 ROI。控制方式&#xff1a;使用空格键或…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...