Java项目——瑞吉外卖笔记

hello,你好鸭,我是Ethan,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!💪💪💪
目前博客主要更新Java系列、数据库、项目案例、计算机基础等知识点。感谢你的阅读和关注,在记录的同时希望我的博客能帮助到更多人。✔️✔️✔️
人生之败,非傲即惰,二者必居其一,勤则百弊皆除。你所坚持最终会回报你!加油呀!🏃🏃🏃

文章目录

  • 写在前面——
  • Day01业务开发
    • 一、项目总体介绍与展示
    • 二、软件开发整体介绍
      • (一)软件开发流程
      • (二)角色分工
      • (三)软件环境
    • 三、瑞吉外卖项目介绍
      • (一)项目介绍
      • (二)产品原型展示
      • (三)技术选型功能架构
        • 1.技术选型——
        • 2.功能架构——
      • (四)角色
    • 四、开发环境搭建
      • (一)数据库环境搭建
      • (二)maven项目搭建
        • 1.项目搭建完成后的注意事项,好习惯
        • 2.在idea中连接数据库时连接不上解决方案:
        • 3.Log监控日志监控系统
        • 4.添加静态访问资源
    • 五、后台登录功能开发
      • (一)需求分析
        • 1.点击登录按钮之后发生的事情——
        • 2.浏览器F12进入追踪服务
        • 3.整体流程梳理如下——>
        • 4.code、data、meg信息
      • (二)代码开发
        • 1.创建实体类Employee,和employee表进行映射
        • 2.编写controller层
        • 3.导入通用返回结果类
        • 4.controller具体实现
        • 5.加密算法与登录全流程
    • 六、后台退出功能开发
      • (一)需求分析
      • (二)代码开发
      • (三)功能测试
      • (四)分析后台系统首页构成和效果展示方式
  • Day02员工管理业务开发
    • 一、完善登录功能
      • (一)问题分析——
      • (二)代码实现
        • 1.创建自定义过滤器LoginCheckFilter
        • 2.在启动类上加入注解@Servletcomponentscan
        • 3.完善过滤器的处理逻辑
      • (三)功能测试
    • 二、新增员工
      • (一)需求分析
      • (二)数据模型
      • (三)代码开发
      • (四)功能测试
        • 1.整体代码
        • 2.完善补充:账号唯一性判断
        • 3.报错细化
        • 4.本节总结
    • 三、员工信息分页查询
      • (一)需求分析
      • (二)代码开发
        • 1.前端页面发送ajax请求,将分页查询参数 提交到服务端
        • 2、服务端Controller接收页面提交的数据并调用Service查询数据
          • 1.配置MP的分页查询插件
          • 2.测试能否正常封装
        • 3.编写queryWrapper查询
      • (三)功能测试
        • 1.分页查询
    • 四、启用/禁用员工账号显示不同
      • (一)需求分析
        • 管理员——
        • 普通员工——
      • (二)代码开发
      • (三)功能测试
      • (四)代码修复
        • 1.问题描述
        • 2.具体修复步骤
          • 1.自定义的全局转化器
          • 2.在MVC配置文件中追加上面的自定义的全局转化器
    • 五、编辑员工信息
      • (一)需求分析
      • (二)代码开发
      • (三)功能测试
  • Day03分类管理业务开发
    • 一、公共字段自动填充
      • (一)需求分析
      • (二)代码开发
      • (三)功能测试
      • (四)功能完善
        • (1)目前问题——createTime和UpdateTime是固定值,应该设置为动态值
        • (2)解决方案——threadlocal类解决
        • (3)threadlocal知识补充
        • (4)什么是Threadlocal——Thread的局部变量
        • (5)代码流程
    • 二、新增分类
      • (一)需求分析
      • (二)代码开发
        • 1.框架开发——
        • 2.具体开发——
      • (三)功能测试
    • 三、分类信息分页查询
      • (一)需求分析
      • (二)代码开发
      • (三)功能测试
      • (四)功能完善
    • 四、删除分类
      • (一)需求分析
      • (二)代码开发
    • 网站URL路径中“#”“?”“&”号的作用是什么
      • (三)功能测试
      • (四)功能完善
    • 五、修改分类
      • (一)需求分析
      • (二)代码开发
      • (三)功能测试
      • (四)功能完善
  • Day04菜品管理业务开发
    • 一、文件上传下载
      • 文件上传功能讲解
        • 客户端——
        • 服务端——
      • (一)需求分析
      • (二)代码开发
      • 1.文件上传
        • (1)先在配置文件里面指定保存位置
        • (2)代码编写
      • 2.文件下载
      • (三)功能测试
      • (四)功能完善
  • !!!编程小技巧——
        • (1)快速将光标移动至行尾、行头
        • (2)Alt+数字
    • 二、新增菜品
      • (一)需求分析
      • (二)代码开发
        • 1.框架开发——5层结构
        • 2.代码开发——
          • 1.下拉框开发
          • 2.文件上传下载开发。复用前面的(上传下载)接口
      • (三)功能测试
      • (四)功能完善
    • 三、菜品信息分页查询
    • 四、修改菜品
  • Day05手机验证码登录
    • 一、短信发送
      • (一)短信服务介绍
      • (二)[阿里云短信服务](https://help.aliyun.com/zh/sms/getting-started/get-started-with-sms)
      • (三)代码开发
    • 二、手机验证码登录
      • (一)需求分析
      • (二)数据模型
      • (三)代码开发
        • 1.过滤器修改
          • (1)添加静态路径
          • (2)添加判断用户是否登录模块
        • 2.发送验证码
        • 3.验证过程
      • (四)功能测试
  • !!!编程小技巧
        • (1)快速展开所有代码包
        • (2)替换
  • Day06菜品展示、购物车、下单
    • 一、导入用户地址簿
      • (一)需求分析
      • (二)代码开发
      • (三)导入功能代码
      • (四)功能完善
    • 模版
      • (一)需求分析
      • (二)代码开发
      • (三)功能测试
      • (四)功能完善

写在前面——

需要掌握:

Java基础知识
Java Web
MySQL
Spring Boot
SSM (Spring、Spring MVC、MyBatis)
Maven

学完后会掌握——

了解企业项目开发的完整流程,增长开发经验

了解需求分析的过程,提高分析和设计能力对所学技术进行灵活应用,提高编码能力

解决各种异常情况,提高代码调试能力

Day01业务开发

一、项目总体介绍与展示

1.移动端与管理后台展示
在这里插入图片描述
2.项目上线后
在这里插入图片描述

3.管理后台登录
在这里插入图片描述

4.管理后台详细页面
在这里插入图片描述

二、软件开发整体介绍

(一)软件开发流程

在这里插入图片描述

(二)角色分工

在这里插入图片描述

(三)软件环境

在这里插入图片描述

三、瑞吉外卖项目介绍

(一)项目介绍

在这里插入图片描述
两端应用
在这里插入图片描述

(二)产品原型展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(三)技术选型功能架构

1.技术选型——

2.功能架构——

在这里插入图片描述

(四)角色

在这里插入图片描述

四、开发环境搭建

(一)数据库环境搭建

在这里插入图片描述

(二)maven项目搭建

1.项目搭建完成后的注意事项,好习惯

在这里插入图片描述

2.在idea中连接数据库时连接不上解决方案:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.Log监控日志监控系统

在这里插入图片描述
在这里插入图片描述

4.添加静态访问资源

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

注意项目结构 ——配置类要在启动类同包或者子包下(包就是文件夹)

五、后台登录功能开发

(一)需求分析

1.点击登录按钮之后发生的事情——

在这里插入图片描述

2.浏览器F12进入追踪服务

在这里插入图片描述

在这里插入图片描述
注意这里的登录使用的是数据库中的员工表

3.整体流程梳理如下——>

在这里插入图片描述

为什么点击了登录按钮会转发请求到后端路径/employee/login?
在这里插入图片描述
在这里插入图片描述

4.code、data、meg信息

在这里插入图片描述

(二)代码开发

1.创建实体类Employee,和employee表进行映射

1.MP的智能命名映射
在这里插入图片描述

2.编写controller层

使用final+@RequiredArgsconstructor注入
在这里插入图片描述

3.导入通用返回结果类

通用返回结果,服务端响应的数据最终都会封装成此对象
在这里插入图片描述
在这里插入图片描述

黑马点评的结果集类对比
在这里插入图片描述
在这里插入图片描述

4.controller具体实现

在这里插入图片描述

5.加密算法与登录全流程

在这里插入图片描述

在这里插入图片描述

查看缓存在浏览器里面的信息——
在这里插入图片描述

六、后台退出功能开发

(一)需求分析

在这里插入图片描述
在这里插入图片描述

(二)代码开发

根据点击前端的按钮发出的信息开发后端代码
在这里插入图片描述

在这里插入图片描述

(三)功能测试

在这里插入图片描述

(四)分析后台系统首页构成和效果展示方式

在这里插入图片描述

在这里插入图片描述

Day02员工管理业务开发

本章内容介绍

新增员工
员工信息分页查询
启用/禁用员工账号
编辑员工信息
在这里插入图片描述
在这里插入图片描述

一、完善登录功能

(一)问题分析——

前面我们已经完成了后台系统的员工登录功能开发,但是还存在一个问题:用户如果不登录,直接访问系统首页面,照样可以正常访问
这种设计并不合理,我们希望看到的效果应该是,只有登录成功后才可以访问系统中的页面,如果没有登录则跳转到登录页面.----
那么,具体应该怎么实现呢?

答案就是使用过滤器或者拦截器在过滤器或者拦截器中判断用户是否已经完成登录,如果没有登录则跳转到登录页面
在这里插入图片描述

(二)代码实现

在这里插入图片描述

1.创建自定义过滤器LoginCheckFilter

过滤器的作用与必要性
在这里插入图片描述
请求的顺序及层次
在这里插入图片描述

在这里插入图片描述

2.在启动类上加入注解@Servletcomponentscan

在这里插入图片描述
在这里插入图片描述

3.完善过滤器的处理逻辑

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

前端根据后端的信息判断是否展示数据
在这里插入图片描述
在这里插入图片描述

(三)功能测试

在这里插入图片描述
在这里插入图片描述

二、新增员工

(一)需求分析

在这里插入图片描述

(二)数据模型

在这里插入图片描述

(三)代码开发

在这里插入图片描述
在这里插入图片描述

前台的表单未传入实体类中的的数据,需要后台手动设置
在这里插入图片描述

总体代码:
在这里插入图片描述

(四)功能测试

1.整体代码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.完善补充:账号唯一性判断

在这里插入图片描述
在这里插入图片描述

在此添加相同账号后
在这里插入图片描述

在这里插入图片描述

3.报错细化

在这里插入图片描述
在这里插入图片描述

4.本节总结

在这里插入图片描述

三、员工信息分页查询

(一)需求分析

在这里插入图片描述

(二)代码开发

1.前端页面发送ajax请求,将分页查询参数 提交到服务端

在这里插入图片描述
在这里插入图片描述
细化分析效果——
在这里插入图片描述
在这里插入图片描述

JS文件
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、服务端Controller接收页面提交的数据并调用Service查询数据
1.配置MP的分页查询插件

注意@bean将mp加入Spring管理。MP大大简化了分页查询代码量
分页查询

2.测试能否正常封装

在这里插入图片描述

3.编写queryWrapper查询

在这里插入图片描述

(三)功能测试

在这里插入图片描述
在这里插入图片描述

1.分页查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、启用/禁用员工账号显示不同

(一)需求分析

管理员——

在这里插入图片描述

普通员工——

在这里插入图片描述

前端页面禁用启用按钮实现分析
在这里插入图片描述

在这里插入图片描述

(二)代码开发

后端流程梳理
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(三)功能测试

运行时发现错误
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(四)代码修复

1.问题描述

在这里插入图片描述

2.具体修复步骤

在这里插入图片描述

1.自定义的全局转化器

在这里插入图片描述

2.在MVC配置文件中追加上面的自定义的全局转化器

在这里插入图片描述

重新启动后,一切都可以了——

在这里插入图片描述

五、编辑员工信息

(一)需求分析

在这里插入图片描述

(二)代码开发

在这里插入图片描述

在这里插入图片描述

上面的getByID方法是将数据库里面的数据填充到编辑栏里面,如下——
在这里插入图片描述

在这里插入图片描述

注意上面图片中的注意

(三)功能测试

Day03分类管理业务开发

本章内容

公共字段自动填充
新增分类
分类信息分页查询
删除分类
修改分类
在这里插入图片描述

一、公共字段自动填充

(一)需求分析

在这里插入图片描述
在这里插入图片描述

(二)代码开发

在这里插入图片描述
在这里插入图片描述

@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("公共字段自动填充[insert]++++++");
        log.info(metaObject.toString());
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime", LocalDateTime.now());
        metaObject.setValue("createUser", new Long(1));
        metaObject.setValue("updateUser", new Long(1));
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("公共字段自动填充[update]++++++");
        log.info(metaObject.toString());
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime", LocalDateTime.now());
        metaObject.setValue("createUser", new Long(1));
        metaObject.setValue("updateUser", new Long(1));

    }
}

(三)功能测试

在这里插入图片描述

(四)功能完善

(1)目前问题——createTime和UpdateTime是固定值,应该设置为动态值

在这里插入图片描述

(2)解决方案——threadlocal类解决

在这里插入图片描述

(3)threadlocal知识补充

更多ThreadLocal的知识请点击这里
在这里插入图片描述

(4)什么是Threadlocal——Thread的局部变量

在这里插入图片描述

(5)代码流程

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、新增分类

(一)需求分析

在这里插入图片描述
加入category表,重点字段type
在这里插入图片描述

(二)代码开发

1.框架开发——

在这里插入图片描述
在这里插入图片描述
注意上面少了一个@Mapper注解
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

2.具体开发——

在这里插入图片描述

在这里插入图片描述

(三)功能测试

在这里插入图片描述

三、分类信息分页查询

(一)需求分析

在这里插入图片描述

(二)代码开发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(三)功能测试

在这里插入图片描述

(四)功能完善

四、删除分类

(一)需求分析

注意事项
在这里插入图片描述

(二)代码开发

在这里插入图片描述

在这里插入图片描述
有?&之类

网站URL路径中“#”“?”“&”号的作用是什么

?路径后面连接参数
&不同参数连接符

   @DeleteMapping()
    public R<String> deleteById( long ids)
    {
        log.info("根据ID删除菜品信息++++++++,ID为{}",ids);
        iCategoryService.removeById(ids);
        return R.success("删除菜品成功");
    }
}

(三)功能测试

在这里插入图片描述

(四)功能完善

在这里插入图片描述
super的深入使用


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、修改分类

(一)需求分析

(二)代码开发

(三)功能测试

(四)功能完善

Day04菜品管理业务开发

管理端——
在这里插入图片描述
客户端——
在这里插入图片描述

一、文件上传下载

文件上传功能讲解

客户端——

在这里插入图片描述

elementUI 现成的组件
在这里插入图片描述

服务端——

本质是对流进行操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(一)需求分析

(二)代码开发

1.文件上传

在这里插入图片描述
注意这里的file是临时文件.temp,过后就自动删除了,必须指定转存到指定目录永久保存才行

(1)先在配置文件里面指定保存位置

在这里插入图片描述

(2)代码编写

在这里插入图片描述

2.文件下载

原理——
浏览器发送请求到服务端,服务端再根据请求将资源以的形式写出,展示到浏览器页面

在这里插入图片描述
在这里插入图片描述

(三)功能测试

如下,文件下载成功回显至浏览器
在这里插入图片描述

(四)功能完善

!!!编程小技巧——

(1)快速将光标移动至行尾、行头

在这里插入图片描述

(2)Alt+数字

在这里插入图片描述

二、新增菜品

(一)需求分析

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(二)代码开发

1.框架开发——5层结构

在这里插入图片描述
entity层
在这里插入图片描述

Mapper层
在这里插入图片描述

Service接口层
在这里插入图片描述

Service实现层
在这里插入图片描述
Controller层
在这里插入图片描述

2.代码开发——

前端页面与服务端交互过程
在这里插入图片描述

1.下拉框开发

页面(backend/page/food/add.html)发送ajax请求,请求服务端获取菜品分类数据并展示到下拉框
在这里插入图片描述

点击上述按钮之后解析的代码

在这里插入图片描述

此处获取后端接口,参数可以是type或者Category
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.文件上传下载开发。复用前面的(上传下载)接口

在这里插入图片描述

(三)功能测试

(四)功能完善

三、菜品信息分页查询

四、修改菜品

Day05手机验证码登录

01短信发送
02手机验证码登录
在这里插入图片描述

一、短信发送

(一)短信服务介绍

目前市面上有很多第三方提供的短信服务,这些第三方短信服务会和各个运营商(移动、联通、电信)对接,我们只需要注册成为会员并且按照提供的开发文档进行调用就可以发送短信。需要说明的是,这些短信服务一般都是收费服务
常用短信服务:阿里云、华为云、腾讯云

(二)阿里云短信服务

在这里插入图片描述
签名即类似【XXX】
在这里插入图片描述
在这里插入图片描述

(三)代码开发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
短信验证码发送开发:

package com.itheima.reggie.utils;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;

/**
 * 短信发送工具类
 */
public class SMSUtils {

	/**
	 * 发送短信
	 * @param signName 签名
	 * @param templateCode 模板
	 * @param phoneNumbers 手机号
	 * @param param 参数
	 */
	public static void sendMessage(String signName, String templateCode,String phoneNumbers,String param){
		DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "");
		IAcsClient client = new DefaultAcsClient(profile);

		SendSmsRequest request = new SendSmsRequest();
		request.setSysRegionId("cn-hangzhou");
		request.setPhoneNumbers(phoneNumbers);
		request.setSignName(signName);
		request.setTemplateCode(templateCode);
		request.setTemplateParam("{\"code\":\""+param+"\"}");
		try {
			SendSmsResponse response = client.getAcsResponse(request);
			System.out.println("短信发送成功");
		}catch (ClientException e) {
			e.printStackTrace();
		}
	}

}

二、手机验证码登录

(一)需求分析

(二)数据模型

登录时自动完成注册。先验证是否在表里面,不在就自动注册。
在这里插入图片描述

(三)代码开发

1.前后端交互梳理
在这里插入图片描述

2.流程梳理
在这里插入图片描述
3.实际开发

1.过滤器修改
(1)添加静态路径

在这里插入图片描述

(2)添加判断用户是否登录模块

依照前面开发的后台人员登录判断
后台人员端
在这里插入图片描述
用户端
在这里插入图片描述

2.发送验证码
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {

    @Autowired
    private UserService userService;

    /**
   //    明确短信验证码登录的根本————最终是要前端和后端的验证码一致即可。
//    阿里短信发送只是中介,
//    为了方便并直入主题,这里直接在发送后到后端偷偷看一下填回即可
     */
    @PostMapping("/sendMsg")
    public R<String> sendMsg(@RequestBody User user, HttpServletRequest httpServletRequest){
        //获取手机号
        String phone = user.getPhone();

        if(StringUtils.isNotEmpty(phone)){
            //生成随机的4位验证码
            String code = ValidateCodeUtils.generateValidateCode(4).toString();
            log.info("code={}",code);

            //调用阿里云提供的短信服务API完成发送短信
            //SMSUtils.sendMessage("瑞吉外卖","",phone,code);

            //需要将生成的验证码保存到Session
            httpServletRequest.getSession().setAttribute(phone,code);

            return R.success("手机验证码短信发送成功");
        }

        return R.error("短信发送失败");
    }

在这里插入图片描述

3.验证过程

填写完验证码后,直接登录即可。
下面是验证过程

    /**
     * 移动端用户登录
     * @param map
     * @param session
     * @return
     */
    @PostMapping("/login")
    public R<User> login(@RequestBody Map map, HttpSession session){
        log.info(map.toString());

        //1.获取页面提交的手机号
        String phone = map.get("phone").toString();

        //2.获取页面提交的验证码
        String code = map.get("code").toString();

        //从Session中获取保存的验证码(一定是正确的)
        Object codeInSession = session.getAttribute(phone);

        //进行验证码的比对(页面提交的验证码和Session中保存的验证码比对)
        if(codeInSession != null && codeInSession.equals(code)){
            //如果能够比对成功,说明登录成功

            LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(User::getPhone,phone);

            User user = userService.getOne(queryWrapper);
            if(user == null){
                //判断当前手机号对应的用户是否为新用户(是否能在表中找到User),如果是新用户就自动完成注册
                user = new User();
                user.setPhone(phone);
                user.setStatus(1);
                userService.save(user);
            }
            session.setAttribute("user",user.getId());
            return R.success(user);
        }
        return R.error("登录失败");
    }
}

在这里插入图片描述

(四)功能测试

点击了发送验证码后,没有请求是为什么?

在这里插入图片描述

!!!编程小技巧

(1)快速展开所有代码包

你可以选中你要展开的项目或者包,按下键盘的→方向键,按住不放就会给你全部展开

(2)替换

全局:ctrl + shift + r: 在路径中替换,指的是在选定的目录下或者类包下,查找要被替换的字符。
当前文件内容:ctrl + r: 当前文件内容替换,指的是在当前打开的文件中替换匹配的字符,只操作一个文件。

Day06菜品展示、购物车、下单

在这里插入图片描述

一、导入用户地址簿

(一)需求分析

在这里插入图片描述

数据模型
在这里插入图片描述

(二)代码开发

(三)导入功能代码

(四)功能完善

模版

(一)需求分析

(二)代码开发

(三)功能测试

(四)功能完善

📣推荐阅读
Java面试总结:点击进入 Java面试专栏 关注走一波
Java基础知识:点击进入 Java基础总结 关注走一波
Java项目专栏:点击进入 Java项目专栏 关注走一波

📣非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤ 分享👥 留言💬thanks!!!
📚愿大家都能学有所得,功不唐捐!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用MQTT.fx接入新版ONENet(24.4.8)

新版ONENet使用MQTT.fx 模拟接入 目录 新版ONENet使用MQTT.fx 模拟接入开始前的准备创建产品设备获取关键参数 计算签名使用MQTT.fx连接服务器数据流准备与上传数据流准备数据发送与接收 开始前的准备 创建产品 设备下载Token签名工具生成签名 创建产品设备 根据以下内容填写…

算法四十天-删除排序链表中的重复元素

删除排序链表中的重复元素 题目要求 解题思路 一次遍历 由于给定的链表是排好序的&#xff0c;因此重复的元素在链表中的出现的位置是连续的&#xff0c;因此我们只需要对链表进行一次遍历&#xff0c;就可以删除重复的元素。 具体地&#xff0c;我们从指针cur指向链表的头节…

C++类与对象上(个人笔记)

类与对象 1.面向过程和面向对象初步认识2.类的定义3.类的访问限定符及封装3.1 访问限定符 4.封装5.类的实例化6.类对象6.1类对象的内存计算6.2内存对齐规则&#xff08;回顾&#xff09; 7.this指针7.1 this指针的特性 1.面向过程和面向对象初步认识 C语言是面向过程的&#x…

Java考题讲解一共5套,也可以在线刷题

【拯救者】Java刷题训练(二级专升本期末自考必备) &#x1f4d9;巩固基础 &#x1f4dc;知道考点 狠狠提分⬆️ (二级专升本期末自考必备) 大纲 一共5套题,每套可以先看视频,然后刷题. 末尾汇总了5套选择 填空 判断题, 优点: 可以查看解析和错题

L2-021 点赞狂魔

输出标签出现次数平均值最小的那个是指标签出现次数K。 模拟。 #include<bits/stdc.h> using namespace std; #define int long long const int n1e611; int a,b,c,ss; struct s {int x,z;string y; }q[n]; bool cmp(s a1,s a2) {if(a1.x!a2.x)return a1.x>a2.x;e…

C语言进阶课程学习记录-第26课 - 指针的本质分析

C语言进阶课程学习记录-第26课 - 指针的本质分析 *号实验-指针的大小实验-传址交换数值实验-const与指针小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课程PPT&#xff0c;仅用于个人学习记录 *号 实验-指针的大小 #include <stdio.h…

LeetCode 836. 矩形重叠

解题思路 相关代码 class Solution {public boolean isRectangleOverlap(int[] rec1, int[] rec2) {int x1 rec1[0];int y1 rec1[1];int x2 rec1[2];int y2 rec1[3];int a1 rec2[0];int b1 rec2[1];int a2 rec2[2];int b2 rec2[3];return Math.min(y2,b2)>Math.max…

【QT学习】4.对话框学习,浮动窗口,模态对话框,非模态对话框,消息框,文件对话框

1.浮动窗口 代码&#xff1a; //制作核心控件&#xff1a;文本编辑框QTextEdit* pTextEditnew QTextEdit;//制作浮动控件connect(pMenu1,&QMenu::triggered,[](QAction* pAction){qDebug()<<pAction->text()<<endl;if(pAction->text()"浮动控件&quo…

一文介绍CNN/RNN/GAN/Transformer等架构 !!

文章目录 前言 1、卷积神经网络&#xff08;CNN&#xff09; 2、循环神经网络&#xff08;RNN&#xff09; 3、生成对抗网络&#xff08;GAN&#xff09; 4、Transformer 架构 5、Encoder-Decoder架构 前言 本文旨在介绍深度学习架构&#xff0c;包括卷积神经网络CNN、循环神经…

javaScript常见对象方法总结

1&#xff0c;object.assign() 用于合并对象的属性。它可以将一个或多个源对象的属性复制到目标对象中&#xff0c;实现属性的合并。 语法 Object.assign(target, ...sources); 1,target&#xff1a;目标对象&#xff0c;将属性复制到该对象中。 2,sources&#xff1a;一个…

2024大环境差、行业卷,程序员依然要靠这份大厂级24 W字java面试手册成功逆袭!

2024大环境差、行业卷&#xff0c;程序员该怎么办&#xff1f; 2024年金三银四程序员跳槽或者找工作并不理想&#xff0c;迟迟找不到工作&#xff0c;甚至大厂还进行几轮裁员&#xff0c;导致整个就业市场都不是太好&#xff01; 出现这种情况是因为中美贸易战&#xff0c;导…

HubSpot出海营销CRM的创新实践:引领行业变革

在全球化的浪潮下&#xff0c;越来越多的企业选择出海&#xff0c;寻求更广阔的市场和更多的机遇。然而&#xff0c;出海营销并非易事&#xff0c;其中涉及到的CRM&#xff08;客户关系管理&#xff09;更是挑战重重。在这个领域&#xff0c;HubSpot以其创新的实践&#xff0c;…

C/C++如何快速学习?少走3年弯路

于我而言&#xff0c;最开始学习就是 C&#xff0c;除了计算机专业&#xff0c;其他专业可能学习的第一门编程语言为 C 语言&#xff0c;还是谭浩强爷爷那本&#xff0c;当时想着有点 C 基础&#xff0c;无外乎就是 C 语言的升级版&#xff0c;于是开启了 C 的路程。 语言这个…

访问网站时你的电脑都做了什么

电脑在访问百度时 首先在本地hosts文件里面查看本地有无域名对应的IP地址&#xff0c;若有就直接返回。若无&#xff0c;则本地DNS服务器当DNS的客户&#xff0c;向其它根域服务器发送报文查询IP地址&#xff0c;简单来说就是帮助主机查找IP&#xff0c;所以递归查询就在客户端…

SpringBoot之集成Redis

SpringBoot之集成Redis 一、Redis集成简介二、集成步骤2.1 添加依赖2.2 添加配置2.3 项目中使用 三、工具类封装四、序列化 &#xff08;正常都需要自定义序列化&#xff09;五、分布式锁 一、Redis集成简介 Redis是我们Java开发中&#xff0c;使用频次非常高的一个nosql数据库…

【双指针】接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1]输出&#xff1a;6解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的…

逆向案例十七(1)——webpack加如果之前发送公钥如何定位参数,基于中国五矿

网址链接&#xff1a;中国五矿集团有限公司采购电子商务平台 定位到数据包&#xff0c;载荷中param是一个加密参数。 每一个数据包前都有一个public返回公钥。 点击查看返回的数据 如何定位参数加密位置&#xff1f; 复制公钥包url的后面&#xff0c;进行搜索 &#xff0c;查…

无需训练,这个新方法实现了生成图像尺寸、分辨率自由

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 近日&#xff0c;来自香港中文大学 - 商汤科技联合实验室等机构的研究者们提出了FouriScale&…

C语言单链表

1. 单链表的概念和结构 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 链表与顺序表都属于线性表&#xff0c;顺序表在物理存储结构上是线性的&#xff0c;但是链表在物理存储结构上…

react-静态组件,动态组件

react09- 组件 静态组件 动态组件 静态组件&#xff1a; 函数组件&#xff0c;在第一次渲染完成后&#xff0c;组件中的内容&#xff0c;不会根据组件内的某些操作再次进行更新&#xff0c;页面并不会跟着改变 过程&#xff1a; 第一次渲染时&#xff0c;执行函数方法&#x…