3.29

本文详细介绍了一个在线商店的数据库设计,包括用户、商品、分类、订单等关键表的结构及关系,展示了如何通过SQL语句进行数据初始化,并提供了基本的数据查询示例。
练习

DROP DATABASE SHOP;
CREATE DATABASE SHOP CHARACTER SET UTF8;


#创建用户表
CREATE TABLE `USER`(
	USERID INT PRIMARY KEY AUTO_INCREMENT,
	USERNAME VARCHAR(20) NOT NULL,
	`PASSWORD` VARCHAR(18) NOT NULL,
	ADDRESS VARCHAR(100),
	PHONE VARCHAR(11)
);

#创建分类表
 CREATE TABLE CATEGORY (
	CID VARCHAR(32) PRIMARY KEY, 
	CNAME VARCHAR(100) NOT NULL #分类名称
);

#商品表
CREATE TABLE PRODUCTS(
	PID VARCHAR(32) PRIMARY KEY,
	`NAME` VARCHAR(40),
	PRICE DOUBLE(7,2),
	CATEGORY_ID VARCHAR(32),
	CONSTRAINT FOREIGN KEY(CATEGORY_ID) REFERENCES CATEGORY(CID)
);

#订单表
CREATE TABLE ORDERS(
	OID VARCHAR(32) PRIMARY KEY,
	TOTALPRICE DOUBLE(12,2),
	USERID INT,
	CONSTRAINT FOREIGN KEY(USERID) REFERENCES `USER`(USERID)#外键
);

#订单详表
CREATE TABLE ORDERITEM(
	OID VARCHAR(32),#订单id
	PID VARCHAR(32),#商品id
	NUM INT,#购买商品数量
	PRIMARY KEY(OID,PID),
	CONSTRAINT FOREIGN KEY(OID) REFERENCES ORDERS(OID),
	CONSTRAINT FOREIGN KEY(PID) REFERENCES PRODUCTS(PID)
);

#初始化数据

#用户表添加数据
INSERT INTO `USER`(USERNAME,PASSWORD,ADDRESS,PHONE) VALUES('张三','123','北京昌平沙河','13812345678');
INSERT INTO `USER`(USERNAME,PASSWORD,ADDRESS,PHONE) VALUES('王五','5678','北京海淀','13812345141');
INSERT INTO `USER`(USERNAME,PASSWORD,ADDRESS,PHONE) VALUES('赵六','123','北京朝阳','13812340987');
INSERT INTO `USER`(USERNAME,PASSWORD,ADDRESS,PHONE) VALUES('田七','123','北京大兴','13812345687');

#给商品表初始化数据
INSERT INTO products(pid,NAME,price,category_id) VALUES('p001','联想',5000,'c001');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p002','海尔',3000,'c001');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p003','雷神',5000,'c001');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p004','JACK JONES',800,'c002');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p005','真维斯',200,'c002');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p006','花花公子',440,'c002');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p007','劲霸',2000,'c002');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p008','香奈儿',800,'c003');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p009','相宜本草',200,'c003');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p010','梅明子',200,NULL);


#给分类表初始化数据
INSERT INTO category VALUES('c001','电器');
INSERT INTO category VALUES('c002','服饰');
INSERT INTO category VALUES('c003','化妆品');
INSERT INTO category VALUES('c004','书籍');

#添加订单
INSERT INTO orders VALUES('o6100',18000.50,1);
INSERT INTO orders VALUES('o6101',7200.35,1);
INSERT INTO orders VALUES('o6102',600.00,2);
INSERT INTO orders VALUES('o6103',1300.26,4);

#订单详情表
INSERT INTO orderitem VALUES('o6100','p001',1),('o6100','p002',1),('o6101','p003',1);

#1.1
SELECT *
FROM ORDERS;
#1.2
SELECT B.`USERID`,A.`OID`,A.`PID`,A.`NUM`
FROM ORDERITEM AS A
INNER JOIN ORDERS AS B
ON A.`OID` = B.`OID`
WHERE USERID = 1;
#2.1
SELECT *
FROM ORDERS 
WHERE USERID = (SELECT USERID FROM USER WHERE USERNAME = '张三');
#2.2
SELECT *
FROM USER
WHERE USERID 
IN 
(SELECT USERID FROM ORDERS WHERE TOTALPRICE > 800);
#3.1
SELECT *
FROM ORDERS
LIMIT 0,5;
package t1;

import com.mysql.jdbc.Driver;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class TestJDBC {
    public static void main(String[] args) throws Exception {

        Class.forName("com.mysql.jdbc.Driver");


        String url = "jdbc:mysql://localhost:3306/companydb?useUnicode=true&characterEncoding=utf8";
        String user = "root";
        String password = "1234";
        Connection connection = DriverManager.getConnection(url,user,password);


        Statement statement = connection.createStatement();


        String sql1 = "INSERT INTO t_countries(COUNTRY_ID,COUNTRY_NAME)VALUES('AL','阿尔巴尼亚');";
        String sql2 = "UPDATE t_employees SET FIRST_NAME='TOM', LAST_NAME = 'Jackson' WHERE EMPLOYEE_ID = '206';";
        String sql3 = "DELETE FROM t_employees WHERE EMPLOYEE_ID = '206'";

        int result = statement.executeUpdate(sql1);
        int result2 = statement.executeUpdate(sql2);
        int result3 = statement.executeUpdate(sql3);


        if(result > 0 && result2 > 0 && result3 > 0){
            System.out.println("新增成功!");
        }else{
            System.out.println("新增失败");
        }


        statement.close();
        connection.close();

    }
}
内容概要:本文详细介绍了一个基于Java和Vue的联邦学习隐私保护推荐系统的设计与实现。系统采用联邦学习架构,使用户数据在本地完成模型训练,仅上传加密后的模型参数或梯度,通过中心服务器进行联邦平均聚合,从而实现数据隐私保护与协同建模的双重目标。项目涵盖完整的系统架构设计,包括本地模型训练、中心参数聚合、安全通信、前后端解耦、推荐算法插件化等模块,并结合差分隐私与同态加密等技术强化安全性。同时,系统通过Vue前端实现用户行为采集与个性化推荐展示,Java后端支撑高并发服务与日志处理,形成“本地训练—参数上传—全局聚合—模型下发—个性化微调”的完整闭环。文中还提供了关键模块的代码示例,如特征提取、模型聚合、加密上传等,增强了项目的可实施性与工程参考价值。 适合人群:具备一定Java和Vue开发基础,熟悉Spring Boot、RESTful API、分布式系统或机器学习相关技术,从事推荐系统、隐私计算或全栈开发方向的研发人员。 使用场景及目标:①学习联邦学习在推荐系统中的工程落地方法;②掌握隐私保护机制(如加密传输、差分隐私)与模型聚合技术的集成;③构建高安全、可扩展的分布式推荐系统原型;④实现前后端协同的个性化推荐闭环系统。 阅读建议:建议结合代码示例深入理解联邦学习流程,重点关注本地训练与全局聚合的协同逻辑,同时可基于项目架构进行算法替换与功能扩展,适用于科研验证与工业级系统原型开发。
<think>嗯,用户想要查找Flutter 3.29版本的特性及更新日志。我需要先看看提供的引用内容。引用[1]提到的是Flutter 2.293.29的更新,但看起来可能有笔误,因为通常版本号不会跳跃这么大。引用[2]则讨论了组件库的更新、构建工具链调整、Web平台的变化以及官方包停止维护的情况。 首先,用户可能混淆了版本号,比如将2.29写成3.29,或者引用中的信息有误。根据引用[1],Flutter 3.29确实存在,包含Impeller、Cupertino和DevTools的更新。引用[2]提到了一些重大变更,比如移除Flutter Gradle插件,Web平台强制使用CanvasKit或WebAssembly,以及部分官方包停止维护。 接下来,需要整理这些信息,确保回答结构清晰。可能需要指出版本号的潜在混淆,并分点列出更新内容,如开发工具优化、性能提升、重大变更等。同时,用户可能需要注意事项,比如升级建议和替代方案。 还要注意用户可能关心升级后的兼容性问题,比如三方库的支持和稳定性问题,这些在引用[2]中都有提到。需要将这些内容自然地融入回答中,并添加引用标识。最后,生成相关问题,帮助用户深入理解。</think>### Flutter 3.29 版本特性及更新日志 根据提供的引用内容,Flutter 3.29 版本的主要更新集中在开发工具优化、性能提升和平台适配调整等方面。以下是关键特性梳理: --- #### 1. **开发工具优化与性能提升** - **Impeller 渲染引擎改进**:进一步优化图形渲染性能,减少动画和复杂 UI 的卡顿现象[^1]。 - **DevTools 增强**:调试工具支持更细粒度的性能分析,例如内存泄漏检测和渲染管线可视化[^1]。 - **Cupertino 组件更新**:完善 iOS 风格组件的交互细节,提升与原生体验的一致性。 #### 2. **构建工具链调整** - **移除 Flutter Gradle 插件**:自 3.19 版本弃用后,3.29 版本正式移除旧插件,需迁移至基于 Kotlin 的 Android Gradle Plugin (AGP) 公共 API[^2]。 - **Web 平台渲染模式变更**:正式弃用 HTML Renderer,强制使用 CanvasKit 或 WebAssembly 渲染,提升跨平台一致性。 #### 3. **官方 Package 维护计划** - **停止维护的包**:包括 `flutter_markdown`、`palette_generator` 等 6 个官方包将于 2025 年 4 月 30 日后停止支持,需转向社区维护的分叉版本[^2]。 #### 4. **其他注意事项** - **稳定性验证**:新版本可能未经过大规模验证,存在潜在兼容性问题,建议非必要情况下暂缓升级。 - **三方库依赖风险**:依赖的第三方库可能尚未适配最新版本,升级前需逐一确认兼容性[^2]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值