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

第四阶段01-酷鲨商城项目准备

1. 关于csmall-product项目

这是“酷鲨商城”大项目中的“商品管理”项目,是一个后台管理项目(给管理员,或运营人员使用的项目,并不是普通用户使用的),并且,只会涉及与发布商品可能相关的功能开发,整个系统中需要的其它功能将由其它项目来实现!另外,此项目只是一个后端项目,采取了前后端分离的开发模式。

在本阶段,还会开发csmall-passport项目,这是“管理员管理”的后端项目,还有csmall-web-client项目,这是“前端项目”。

2. 创建csmall-product项目

在IntelliJ IDEA的创建项目向导界面中,左侧选择Spring Initializr,右侧参数选择:

  • **Server URL:**使用 https://start.spring.iohttps://start.springboot.io ,在这2个中选择任何一个可用的,如果暂时出现这2个均不可用,可以反复尝试,或稍后尝试
  • **Name:**使用csmall-product即可
  • Group:cn.tedu
  • Artifact:csmall-product
  • Package Name:cn.tedu.csmall.product
  • Java:8

3. 调整pom.xml

关于当前项目的父级项目的版本,推荐使用2.5.x系列的版本号,其中,x可以是014之间的任何数字。

完成后,在src/test/java下找到默认已经存在的包,包下有测试类,测试类中有个空的测试方法:

@Test
void contextLoads() {
}

执行此测试方法,应该是可以通过测试的!如果无法通过测试,应该是项目的依赖项或某些配置的错误导致的,需要及时调整。

4. 创建数据库

创建名为mall_pms的数据库:

CREATE DATABASE mall_pms;

提示:SQL语句并不区分大小写。
请添加图片描述

5. 配置Database面板

在IntelliJ IDEA的窗口右侧,可以展开Database面板,可以辅助处理数据库、数据表的相关操作,通常,在开发一个项目之前,强烈推荐配置此面板!

提示:如果在窗口右侧没有Database面板,可以点击View菜单 > Tool Windows子菜单,找到Database菜单项,点击它,即可展开右侧的Database面板。
请添加图片描述

**注意:**如果出现[42000][-1] (conn=214) invalid fetch size错误,应该删除当前配置,重新添加配置,并且,在MariaDBMySQL之间切换选择。

详细配置教程:http://doc.canglaoshi.org/doc/idea_database/index.html

6. 导入数据表

将老师提供的SQL复制到Database面板的console中,全部执行,即可创建当前库中的所有表,并插入了一些测试用的数据。
请添加图片描述

7. 功能的开发顺序

首先,要明确当前项目中涉及哪些数据:

  • pms_album:相册
    • 与“图片”是类似“文件夹”与“文件”的关系
  • pms_attribute:属性
  • pms_attribute_template:属性模板
    • 与“属性”是类似“文件夹”与“文件”的关系
  • pms_brand:品牌
  • pms_brand_category:品牌与类别的关联
  • pms_category:类别
  • pms_category_attribute_template:类别与属性模板的关联
  • pms_picture:图片
  • pms_sku:SKU
  • pms_sku_specification:SKU属性
  • pms_spu:SPU
  • pms_spu_detail:SPU详情

通常,应该先开发偏基础的数据,例如,品牌、类别等都是SPU的基础,所以,应该先开发品牌、类别这类数据的管理功能,再开发SPU、SKU这类数据的管理员。

对于多种并不直接相关的数据,应该先开发逻辑简单的数据,相对来说,类别可能更多“麻烦”一些,因为“类别”是一种“多层级”的数据,例如“家用电器”是“电视”的父级,其下还有“冰箱”、“空调”,而这些子级类别还可以有更子级的类别,例如“空调”就可以有“挂机空调”、“柜机空调”、“中央空调”等子级,所以,类别比品牌、相册这些数据的逻辑规则会更复杂一些,应该先开发品牌、相册等数据的管理功能。

对于各数据的功能开发,大致上应该采取增 > 查 > 删 > 改的开发顺序

每一个功能的开发,大致上应该采取Mapper > Service > Controller > 页面的开发顺序。

8. 添加Mybatis相关依赖项

pom.xml中添加依赖项:

<!-- Mybatis整合Spring Boot的依赖项 -->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version>
</dependency>
<!-- MySQL的依赖项 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>

由于Spring Boot存在自动配置,当添加了数据库编程相关的依赖项后,无论是启动项目,还是执行任何Spring Boot测试,都会尝试读取连接数据库的配置信息,如果还没有添加相关配置,会导致启动失败/测试失败,例如:
请添加图片描述

为了解决此问题,需要在配置文件中,添加连接数据库的相关配置。

9. 关于Spring Boot的配置文件

9.1. 关于application.properties

在Spring Boot项目中,在src/main/resources文件夹下存在application.properties文件,此文件是Spring Boot会自动读取的配置文件。

Spring Boot定义了许多特定用途的配置,在application.properties中,需要按照特定的属性名进行配置,则Spring Boot读取到了这些特定的配置后,会自动应用起来!

例如,添加连接数据库的配置:

spring.datasource.url=jdbc:mysql://localhost:3306/mall_pms?characterEncoding=utf-8&useUnicode=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

9.2. 关于Profile配置

以上在application.properties中添加的是连接数据库的配置信息,当前处于开发阶段,所以,各配置值都是开发时所使用的MySQL的相关配置,例如localhost3306、用户名、密码等,当开发完成后,可能会有专门的测试人员对此项目进行测试,测试时使用的MySQL肯定不会是当前开发使用的MySQL,则以上属性的值都需要修改,当测试通过后,项目正式上线,使用的MySQL又会不同,则各属性值需要再次修改……即使全部改完了,项目可能需要进入下一阶段的开发,以上各属性值又需要改回成开发时的配置值!在开发实践中,除了连接数据库的配置信息以外,其它配置也可能会根据项目的运行环境不同,而使用不同的配置值!

Spring框架提供了Profile配置的机制,允许同时存在好几套配置文件,这些配置文件默认是可以不激活的(默认是无效的),当需要使用哪套配置,就激活哪套配置文件即可,这样的配置文件称之为Profile配置。

Spring Boot框架很好的支持了Profile配置,其规则是:

  • application.properties是主配置文件,其中的所有配置都是默认加载的
  • application-自定义名称.properties作为文件名的全部是Profile配置,默认是不加载的,必须激活这些文件中的配置才会被加载
  • application.properties(主配置文件)中,使用spring.profiles.active属性,可以激活Profile配置,此属性的值就是Profile配置的文件名的自定义部分,如果有多个Profile配置需要激活,使用逗号分隔即可
  • 如果在application.properties(主配置文件)中,与在Profile配置中,存在完全相同的属性的配置,则以Profile配置为准
  • 例如:
    请添加图片描述

以上图为例,可以在application.properties中配置spring.profiles.active属性,当取值为dev时,application-dev.properties文件中的配置信息将被应用,当取值为test时,application-test.properties文件中的配置信息将被应用,以此类推。

在开发实践中,类似的配置文件可能较多,可以完全自行测试,例如,可以创建application-dev-jack.propertiesapplication-dev-tom.properties,就可以区分不同的开发人员,当然,激活时,取值仍是自定义名称的部分,例如:spring.profiles.active=dev-jack

9.3. 关于YAML配置

YAML是一种编写配置文件的语法,表现为以.yml作为扩展名的文件。

相比.properties文件,其语法的改变有:

  • 原属性名中有小数点的部分,改为使用冒号+换行后空2格
  • 原属性名与属性值使用等于号分隔,改为使用冒号+1个空格
  • 如果多个配置中,属性名有相同的部分,则不必配置相同的部分,保持对应的空格(缩进)即可

例如,原有的关于数据库连接的配置,使用YAML语法则改为:

spring:datasource:url: jdbc:mysql://localhost:3306/mall_pms?characterEncoding=utf-8&useUnicode=true&serverTimezone=Asia/Shanghaiusername: rootpassword: root

**注意:**YAML语法要求是严格的,必须按照以上语法规则,例如每次换行后需要添加2个空格,不可以使用TAB制表位取代,属性名与属性值之间,冒号的右侧必须有1个空格。

**注意:**不允许存在完全相同的多行配置(包括缩进),例如不可以同时存在2行spring:

**提示:**在使用IntelliJ IDEA编辑.yml文件时,会自动将按下的TAB转换为2个空格。

**提示:**对于纯数字的属性值,如果此属性的值应该是字符串时,需要使用引号框住整个数字。

**提示:**在Spring Boot项目中,即使没有将属性名中的小数点换成YAML语法应该有的样子,也不会出错!

在Spring框架中,并不直接识别YAML语法的配置,在Spring Boot项目中,基础依赖项(spring-boot-starter)中已经包含解析YAML配置的工具包(snakeyaml),可以直接识别并解析YAML语法的配置文件。

在Spring Boot项目中,对.yml文件的支持,与对.properties文件的是完全相同的,即:你可以将所有.properties文件改成.yml文件,再调整配置文件内部的语法即可。

10. 检测连接数据库的配置是否正确

在项目中原本已经存在的测试类CsmallProductApplicationTests类中,添加以下代码,并执行测试:

@Autowired
DataSource dataSource; // 注意:导java.sql包中的接口@Test
void getConnection() throws Throwable {dataSource.getConnection(); // 调用getConnection()时会连接数据库,则可以判断配置的连接信息是否正确
}

当配置的spring.datasource.url的值的格式有误时,会出现错误:

Caused by: java.lang.IllegalArgumentException: URL must start with 'jdbc'

当配置的spring.datasource.url中的主机名部分有误时,会出现错误:

Caused by: java.net.UnknownHostException: localhast

当配置的spring.datasource.url中的端口号部分有误时,会出现错误:

Caused by: java.net.ConnectException: Connection refused: connect

当配置的spring.datasource.url中的serverTimezone参数值有误时,会出现错误:

Caused by: java.time.zone.ZoneRulesException: Unknown time-zone ID: Asia/ShangHai

当配置的spring.datasource.username的值有误时,会出现错误:

java.sql.SQLException: Access denied for user 'root123'@'localhost' (using password: YES)

当配置的spring.datasource.password的值有误时,会出现错误:

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)

**注意:**关于连接数据库的配置,各属性名是预定义的,如果属性名写错,相当于是没有配置此属性!

**注意:**配置的值,不要有多余的空格,这些空格也会被当作值的一部分!

11. 关于POJO类型的编写规范

在项目中,以定义属性为主,基本上不关心方法的类,都可以称之为POJO类,例如实体类、DTO类等。

所有的POJO类都应该:

  • 【必须】所有属性应该是私有的(访问权限为private
  • 【必须】存在无参数构造方法
  • 【必须】所有属性都有规范名称的Setter & Getter
  • 【必须】类中存在规范的equals()hashCode()
    • 如果2个对象,类型相同,所有属性值都相同,则equals()对比结果应该是true,且hashCode()返回值应该相同
    • 如果2个对象,类型不同,或类型相同但有任何属性值不同,则equals()对比结果应该是false,且hashCode()返回值应该不同
    • 通常,使用开发工具自动生成的equals()hashCode()都是规范的
  • 【必须】类实现了Serializable接口
  • 【建议】类中存在基于所有属性的toString()

许多框架都会默认你的POJO类型是遵循了以上规范的,这些框架在实现某些效果时,会自动调用相关的方法,或将你创建的类型的对象转换成Serializable接口类型,所以,如果你的POJO类型没有遵循这些规范,可能导致某些框架的某些功能不可用,甚至出错!

另外,MySQL中的字段类型与Java中的数据类型的对应关系应该如下:

MySQL中的字段类型Java中的属性类型
tinyint / smallint / intInteger
bigintLong
varchar / char / text系列String
decimalBigDecimal
datetimeLocalDateTime

12. 关于Lombok框架

Lombok框架可以通过特定的注解,在编译期生成Setter、Getter、equals()hashCode()toString()、无参数构造方法、全参数构造方法等。

此框架的依赖项为:

<!-- Lombok的依赖项,主要用于简化POJO类的编写 -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version><scope>provided</scope>
</dependency>

关于使用Lombok时的相关常用注解:

  • @Data:添加在类上,可以在编译期生成全部参数对应的Setter、Getter、equals()hashCode()toString()、无参数构造方法
    • 使用此注解时,要求当前类的父类必须存在无参数构造方法
  • @Setter:添加在类中的属性上,可以生成此属性对应的Setter方法,或添加在类上,可以生成此类中所有属性对应的Setter方法
  • @Getter:用法与作用可参考@Setter注解,此注解的作用是生成Getter方法
  • @EqualsAndHashCode:添加在类上,可以生成基于此类中所有属性的equals()hashCode()方法
  • @ToString:添加在类上,可以生成基于此类中所有属性的toString方法
  • @NoArgsConstructor:添加在类上,可以生成无参数的构造方法
  • @AllArgsConstructor:添加在类上,可以生成全参数的构造方法
  • @Slf4j:参见后文

更多注解,可以自行查阅资料,或在IntelliJ IDEA中查看Lombok插件的详情。

**注意:**需要在IntelliJ IDEA中安装Lombok插件,否则,在编写代码时,不会有相关的提示,并且,即使直接写出代码,也会报错,但是,并不影响运行!安装教程:http://doc.canglaoshi.org/doc/idea_lombok/IDEA-5-PLUGINS-LOMBOK.html

**提示:**Lombok是一个有“侵入性”的框架,当一个团队中有成员使用了此框架,就需要安装Lombok插件,甚至整个团队都需要安装此插件,否则,编码、阅读代码的体验就会较差,所以,某些开发团队中是禁止使用的。

**注意:**需要在IntelliJ IDEA中安装Lombok插件,否则,在编写代码时,不会有相关的提示,并且,即使直接写出代码,也会报错,但是,并不影响运行!安装教程:http://doc.canglaoshi.org/doc/idea_lombok/IDEA-5-PLUGINS-LOMBOK.html

13. 编写实体类

在Spring Boot项目中,推荐将所有的类都创建在项目的根包(创建项目时就已经生成好了的包)之下。

在项目的根包下创建pojo.entity.Album类,在此类中声明与pms_album表对应的属性:

package cn.tedu.csmall.product.pojo.entity;import lombok.Data;import java.io.Serializable;
import java.time.LocalDateTime;/*** 相册数据的实体类** @author java@tedu.cn* @version 0.0.1*/
@Data
public class Album implements Serializable {/*** 数据id*/private Long id;/*** 相册名称*/private String name;/*** 相册简介*/private String description;/*** 排序序号*/private Integer sort;/*** 数据创建时间*/private LocalDateTime gmtCreate;/*** 数据最后修改时间*/private LocalDateTime gmtModified;}

相关文章:

第四阶段01-酷鲨商城项目准备

1. 关于csmall-product项目 这是“酷鲨商城”大项目中的“商品管理”项目&#xff0c;是一个后台管理项目&#xff08;给管理员&#xff0c;或运营人员使用的项目&#xff0c;并不是普通用户使用的&#xff09;&#xff0c;并且&#xff0c;只会涉及与发布商品可能相关的功能开…...

Uncaught ReferenceError: jQuery is not defined

今天在拉取项目部署到本地的时候遇到了一个问题特此记录一下 &#xff08;以后闭坑&#xff09; 我和同事同时拉取了一样的代码&#xff0c;结果同事的页面加载正常而我的页面像被狗啃了一样&#xff0c;知道是js的问题但是不知道问题出在哪里&#xff1f;后来还是同事帮我解决…...

面试阿里测开岗,被面试官针对,当场翻脸,把我的简历还给我,疑似被拉黑...

好家伙&#xff0c;金三银四一到&#xff0c;这奇葩事可真是多&#xff0c;前两天和粉丝聊天&#xff0c;他说前段时间面试阿里的测开岗&#xff0c;最后和面试官干起来了。 我问他为什么&#xff0c;他说没啥&#xff0c;就觉得面试官太装了&#xff0c;就爱问一些虚而不实的…...

2. 驱动开发--驱动开发环境搭建

文章目录前言一、Linux中配置编译环境1.1 linux下安装软件的方法1.2 交叉编译工具链的安装1.2.1 测试是否安装成功1.3 设置环境变量1.3.1 将工具链导出到环境变量1.4 为工具链创建arm-linux-xxx符号链接二、 搭建运行开发环境2.1 tftp网络方式加载内核和设备树文件2.2 nfs网络方…...

《数据库系统概论》学习笔记——第四章 数据库安全

教材为数据库系统概论第五版&#xff08;王珊&#xff09; 这一章简单记一下那几条sql的用法和两种存取控制和审计&#xff08;今年期末考了&#xff09;吧&#xff0c;不知道有啥好考的 数据库安全性 问题的提出 数据库的一大特点是数据可以共享数据共享必然带来数据库的安全…...

山洪径流过程模拟及洪水危险性评价

目录 1.洪水淹没危险性评价方法及技术讲解 2.GIS水文信息提取与分析(基于ArcGIS软件) 3.洪水淹没模拟水文分析&#xff1a;洪峰流量估算 4.洪水淹没模拟水力学分析&#xff1a;Hec-RAS实例操作 GIS水文分析&#xff08;ArcHydro、Spatial Anlysist等模块&#xff09;是流域…...

LeetCode HOT100 (23、32、33)

目录 23、合并K个升序链表 32、最长有效括号 33、搜索旋转排序数组 23、合并K个升序链表 思路&#xff1a;采用顺序合并的方法&#xff0c;用一个变量 ans 来维护以及合并的链表&#xff0c;第 i 次循i 个链表和 ans合并&#xff0c;答案保存到 ans中。 代码&#xff1a; …...

电力监控仪表主要分类

电力监控仪表是电工仪表行业的一个新兴、细分行业&#xff0c;类别属于安装式数字仪表&#xff0c;从模拟指针式仪表和电量变送器演变而来。随着计算机技术的发展&#xff0c;电力监控仪表已应用到电力系统的发、输、变、配、用的各个环节&#xff0c;实现对电网电参量的测量、…...

山野户外定位依赖GPS或者卫星电话就能完成么?

每当有驴友失联的新闻报道&#xff0c;很多的户外“老鸟”和“菜鸟”都在讲&#xff1a;为什么不带卫星电话&#xff0c;不带GPS……云云&#xff01;提一个小小的问题&#xff1a;如果你拿着卫星电话、GPS或者其他即时通信的其他设备&#xff0c;你就能准定位你所处的位置么&a…...

SAP 应收应付重组配置

应收应付重组是为了使资产负债表真实的反映资产及负债的真实情况&#xff0c;需要对应收、应付账款的余额时行实际调整。即将“应收账款”的贷方余额和“应付账款”的借方余额分别调整至“预收账款”与“预付账款”账户中。 应收应付重组SAP系统是按照公司代码、客户/供应商、…...

算法练习(八)计数质数(素数)

1、问题描述&#xff1a; 给定整数 n &#xff0c;返回 所有小于非负整数 n 的质数的数量 。 2、示例如下&#xff1a; 3、代码如下&#xff1a; 第一种&#xff1a;比较暴力的算法 class Solution {public int countPrimes(int n) {int count1;if(n<2) return 0;for(in…...

用反射模拟IOC模拟getBean

IOC就是spring的核心思想之一&#xff1a;控制反转。这里不再赘述&#xff0c;看我的文章即可了解&#xff1a;spring基础思想IOC其次就是java的反射&#xff0c;反射机制是spring的重要实现核心&#xff0c;今天我看spring的三级缓存解决循坏引用的问题时&#xff0c;发现一个…...

【Ap AutoSAR入门与实战开发02】-【Ap_s2s模块01】: s2s的背景

总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 1 s2s的背景?2 AUTOSAR 方法应支持车辆的无缝开发2.1 面向服务的ECU的解读2.2 面向信号的ECU的解读2.3 通过网关ECU实现转换1 s2s的背景? Cp AutoSAR基于传统的can,lin,flexray总线的通信,一般是面向信号设…...

C语言数据结构(3)----无头单向非循环链表

目录 1. 链表的概念及结构 2. 链表的分类 3. 无头单向非循环链表的实现(下面称为单链表) 3.1 SListNode* BuySListNode(SLTDateType x) 的实现 3.2 void SListPrint(SListNode* plist) 的实现 3.3 void SListPushBack(SListNode** pplist, SLTDateType x) 的实现 3.4 voi…...

Android 实现菜单拖拽排序

效果图简介本文主角是ItemTouchHelper。它是RecyclerView对于item交互处理的一个「辅助类」&#xff0c;主要用于拖拽以及滑动处理。以接口实现的方式&#xff0c;达到配置简单、逻辑解耦、职责分明的效果&#xff0c;并且支持所有的布局方式。功能拆解功能实现4.1、实现接口自…...

通过window.open打开新的页面并修改样式添加内容

const img new Image(); img.src res; //res是图片的路径地址 const newWin window.open(, _blank); newWin.document.write(img.outerHTML); // newWin.document.body.style.background #000; newWin.document.body.style.textAlign center; newWin.document.body.oncl…...

Java中 Synchronized 的用法

《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现&#xff0c;这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念synchronized. synchronized是Java中的关键字&#xff0c…...

Rust语言的基本介绍

rust缘起和目标 rust的英文是锈菌&#xff0c;是一种真菌&#xff0c;这种真菌的生命力非常顽强&#xff0c;其 在生命周期内可以产生多达5种孢子类型&#xff0c;这5种生命形态还可以相互转 化。“Rust”也有“铁锈”的意思&#xff0c;暗合“裸金属”之意&#xff0c;代表了R…...

新冠小阳人症状记录

原想挺过春节后再养&#xff0c;发现事与愿违。生理期期间抵抗力下降&#xff0c;所以在生理期第二天就有些症状了。可能是生理期前一天出去采购食物染上&#xff0c;也可能是合租夫妻染上。anyway&#xff0c;记录下自己的症状与相应有效的偏方&#xff1a; 第一天&#xff1a…...

SQL零基础入门学习(十四)

上篇&#xff1a;SQL零基础入门学习&#xff08;十三&#xff09; SQL NULL 值 NULL 值代表遗漏的未知数据。 默认地&#xff0c;表的列可以存放 NULL 值。 如果表中的某个列是可选的&#xff0c;那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该…...

Excel工作表不能移动或复制?看看是不是这两个原因

Excel工作表不能移动或复制&#xff1f;今天来看看如何解决。 大家都知道&#xff0c;Excel表格分为工作簿和工作表&#xff0c;工作簿就是整个Excel文件&#xff1b;工作簿里面&#xff0c;也就是Excel表可以有多个工作表。 而各个工作表之间是可以相互移动或复制的&#xf…...

利用递归实现括号匹配

案例引入以下则是各个字符串经过括号处理之后的结果&#xff1a;12((21))(12-->12(21)1232((((2121)212(21)-->32(2121)212(21)ABDF((SA)SA)SA(SA)SA(((-->ABDF((SA)SA)SA(SA)SA算法思路&#xff1a;这个问题的解决方法就是将字符按顺序逐一加入到新的string容器store…...

14.线程数量怎么制定?

什么是CPU 密集型任务和耗时 IO 型任务 &#xff1f; CPU 密集型任务 CPU 密集型任务&#xff0c;比如加密、解密、压缩、计算等一系列需要大量耗费 CPU 资源的任务。 耗时 IO 型任务 数据库、文件的读写&#xff0c;网络通信等任务&#xff0c;这种任务的特点是并不会特别消耗…...

C++中STL标准模板库学习记录

文章目录&#xff1a;1.vector1.1 遍历方式1.2 构造函数1.3 容量大小问题1.4 插入和删除1.5 存取值1.6 交换两个vectot的元素1.7 预定义存储空间2.string3. deque4. stack4.1 常用函数5. queue5.1 特点5.2 方法6. list6.1 优点6.2 缺点6.3 构造函数6.4 交换6.5 大小6.6 插入和删…...

《数据库系统概论》学习笔记——第六章 关系数据理论

教材为数据库系统概论第五版&#xff08;王珊&#xff09; 这一章重点在于各种范式的概念和将低级范式转为高级范式。一定要看多值依赖和4NF&#xff08;因为这个概念很绕又烦&#xff0c;但是期中期末都考了&#xff09;。最后计算题就是一定要会&#xff1a;算闭包&#xff0…...

Odoo | Webserivce | 5分钟学会【JSONRPC】接口开发

文章目录Odoo - JsonRPC1. Odoo内方法结构&#xff08;接收端&#xff09;2. POST接口请求结构&#xff08;发送端&#xff09;3. 实例测试Odoo - JsonRPC 1. Odoo内方法结构&#xff08;接收端&#xff09; # -*- coding: utf-8 -*- import odoo import logging import trac…...

搜广推 NeuralCF - 改进协同过滤+矩阵分解的思想

😄 NeuralCF:2017新加坡国立大学提出。【后文简称NCF】 😄 PNN:2016年上海交通大学提出。 文章目录 NeuralCF动机原理general NCFNCF终极版(GMF+MLP的结合)缺点优点ReferenceNeuralCF 动机 前面学了MF,可知MF在用户-物品评分矩阵的基础上做矩阵分解(用户矩阵Q和物品…...

dbever连接kerberos认证的hive

文章目录一、本地安装kerberos客户端二、本地kerberos客户端登录三、dbever连接hive一、本地安装kerberos客户端 下载地址&#xff1a;https://web.mit.edu/kerberos/dist/index.html 安装&#xff1a;下一步或者自定义安装即可 安装后会自动生成配置文件&#xff1a;C:\Pro…...

pom依赖产生的各种问题

文章目录问题一(org.apache.ibatis.session.Configuration)解决方法问题二(ERROR StatusLogger No log4j2)解决方法问题三(com.google.common.util.concurrent)解决方法问题四(start bean documentationPluginsBootstrapper)解决方法问题五(Unable to infer base url. )解决办法…...

RPC编程:RPC框架设计目标

一&#xff1a;前导知识 Http是超文本传输协议&#xff0c;跨平台性非常好。Http可以传输文本&#xff0c;更多的时候传输的是文本&#xff0c;我们也是可以传输二进制的&#xff0c;我们基于Http进行下载的时候&#xff0c;就是走的Http协议。 Tcp协议&#xff0c;处理的时候…...

可以做思维导图的网站/企业邮箱登录入口

Android源码目录下的build/envsetup.sh文件&#xff0c;描述编译的命令 - m: Makes from the top of the tree. - mm: Builds all of the modules in the current directory. - mmm: Builds all of the modules in the supplied directories. 要想使用这些命令&…...

南宁百姓网/佛山seo联系方式

导航制作的几个步骤: 1.首先对地面进行处理,既对其导航位置进行生成&#xff0c;步骤为: 首先点开Navigation属性界面: 2.将其中要进行烘焙的物体其设置为导航静态 3.然后对地形进行烘焙 点击Bake进行烘焙 4.然后给要进行运动的物体添加组件 然后就给物体进行了范围的导航的控制…...

免费个人logo设计/佛山快速排名seo

介绍 本文介绍由Eclipse推出的名为Che的WebIDE &#xff0c;只是一种“云”上的开放工具。Che目前是在Docker中运行的&#xff0c;命令如下&#xff1a; docker run -i -t -v /var/run/docker.sock:/var/run/docker.sock eclipse/che start 如果您的机器上还没有Docker的话…...

宁德网站建设/今天有哪些新闻

0 前言 本文参考 《控制系统仿真与计算机辅助设计 第2版》薛定宇 机械工业出版社《MATLAB for Control Engineers》Katsuhiko Ogata现代控制理论线性系统入门(一)状态方程描述下的动态系统《现代控制理论基础》— 2 什么是状态与状态空间 本文已假设读者具有自动控制原理的…...

商洛免费做网站/网站定制开发

一 算法简述 设置X为累加和表达式的正数和&#xff0c;设置Y为累加和表达式的负数和&#xff0c;则满足 X - Y 10 X Y 44(2 3 ... 9) 推导可得X 27&#xff0c;即只需从这8个连续数找到累加和为27的这些数&#xff0c;比如X可以是2 3 5 8 9或2 3 4 5 6 7等…...

wordpress 装修公司主题/优化网站关键词

2019年全网天猫京东苏宁等平台“618大促”还有两三个月&#xff0c;小编倾情呈上新鲜出炉的2019年“618大促”#红包攻略#!说到红包&#xff0c;它在营销引流上可以为企业拉取新用户、巩固老用户关系以及提升用户的活跃度等等。不少企业公众号正在借助这个电商宝SCRM互动平台的红…...