【苍穹外卖 | 项目日记】第一天

这篇具有很好参考价值的文章主要介绍了【苍穹外卖 | 项目日记】第一天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

我打算用16天的时间写完黑马程序员的苍穹外卖项目,为了督促自己每天坚持写以及记录项目知识点,所以用这种项目日记的方式鞭策自己【苍穹外卖 | 项目日记】第一天,【苍穹外卖】,java,开发语言,原力计划

目录

前言:

今日完结任务:

今日收获:

1.阅读代码框架:

2.新增员工接口:

3.分页查询接口:

4.员工状态修改接口:

杂项知识点:

总结:


 

今日完结任务:

  • 阅读了整个项目框架代码
  • 实现了新增员工接口
  • 实现了分页查询员工接口
  • 实现了员工状态修改接口
  • 实现了编辑员工接口
  • 实现了根据id查询员工接口

今日收获:

1.阅读代码框架:

1.了解了YApi这项统一管理接口文档网站

【苍穹外卖 | 项目日记】第一天,【苍穹外卖】,java,开发语言,原力计划

2.学会使用了基于Swagger的Knife4j依赖来统一测试接口

【苍穹外卖 | 项目日记】第一天,【苍穹外卖】,java,开发语言,原力计划

3.熟练使用集成在IDEA中的git提交代码

 【苍穹外卖 | 项目日记】第一天,【苍穹外卖】,java,开发语言,原力计划

2.新增员工接口:

1.学习了 ThreadLocal 这一局部变量

ThreadLocal为每一线程提供了一个单独的存储空间,它具有线程隔离的作用,只有在同一个线程内才可以获取到他的值。

在多线程编程中,使用ThreadLocal可以解决线程安全问题。常见的应用场景是保持数据的一致性。例如,在一个线程池中运行的多个线程需要共享一个全局变量,但是每个线程需要对这个变量进行不同的更新操作,这时就可以使用ThreadLocal来为每个线程提供独立的变量副本,从而避免线程之间的干扰和竞争条件的产生。

使用ThreadLocal可以通过调用其静态方法ThreadLocal.set()和ThreadLocal.get()来设置和获取线程的局部变量。需要注意的是,由于每个线程都有自己的变量副本,所以在使用完毕后需要及时清理ThreadLocal中的数据,以免造成内存泄漏。

而本接口对ThreadLocal的应用场景是 实现empservice层中的方法对empController层中变量的调用。

当我们在新增员工的时候,需要表明是谁对新增员工进行了创建和修改,那么我们就需要拿到当前登录用户的Token,并对其解析,就可以得到这两个值

使用ThreadLocal进行存储

【苍穹外卖 | 项目日记】第一天,【苍穹外卖】,java,开发语言,原力计划

调用这个变量:

【苍穹外卖 | 项目日记】第一天,【苍穹外卖】,java,开发语言,原力计划

3.分页查询接口:

1.了解了PageHelper的用法

@Override
    public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
        //开始分页查询(基于pagehelper)
        PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());

        Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);

        long total = page.getTotal();
        List<Employee> result = page.getResult();

        return new PageResult(total, result);
    }

并且阅读了PageHelper的源码,了解到他的底层还是在建立线程变量,然后在SQL语句执行的时候进行拦截,然后替换变量,实现分页的功能。

【苍穹外卖 | 项目日记】第一天,【苍穹外卖】,java,开发语言,原力计划

2.了解了对于时间格式化的两种方式

        1. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

采用这个注解,但是缺点是他只能对一个属性起作用,也就是说有几个需要进行时间处理的变量,我们就要添加几个注解

        2.自定义消息转换器,可以对全局的变量有效,因为这是我们自己定义的配置类,会在全局生效

 @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        log.info("扩展消息转换器");
        //创建一个消息转换器对象
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        //需要为消息转换器指定对象转换器    对象转换器课可以将java对象序列化为Json对象
        converter.setObjectMapper(new JacksonObjectMapper());
        //将自定义的消息转换器加入到容器中
        converters.add(0, converter);

    }

4.员工状态修改接口:

1.了解了基于@builder注解的快速构造方法:

Category category = Category.builder()
                .id(id)
                .status(status)
                .updateTime(LocalDateTime.now())
                .updateUser(BaseContext.getCurrentId())
                .build();

杂项知识点:

1.什么是正向代理和反向代理:

简洁的说:正向代理就是隐藏客户端,而反向代理是隐藏服务器

正向代理是客户端发送请求后通过代理服务器访问目标服务器,代理服务器代表客户端发送请求并将响应返回给客户端。正向代理隐藏了客户端的真实身份和位置信息,为客户端提供代理访问互联网的功能。

反向代理是位于目标服务器和客户端之间的代理服务器,它代表服务器接收客户端的请求并将请求转发到真正的目标服务器上,并将得到的响应返回给客户端。反向代理隐藏了服务器的真实身份和位置信息,客户端只知道与反向代理进行通信,而不知道真正的服务器。

我们本次使用的Nginx服务器就具有反向代理的作用

【苍穹外卖 | 项目日记】第一天,【苍穹外卖】,java,开发语言,原力计划

反向代理使得前端的URL资源路径指向Nginx,而不是直接与后端沟通。

2.什么是负载均衡:

负载均衡(Load Balancing)是一种分配工作负载(即请求或数据)到多个计算资源的技术,目的是在不过载任何单个资源的情况下提高整体系统性能、增强可靠性和可扩展性。

其实就是多个服务器轮转接收客户端请求,减轻单台服务器压力。

【苍穹外卖 | 项目日记】第一天,【苍穹外卖】,java,开发语言,原力计划

后面的wegiht可以理解为优先让哪一个服务器接收客户端请求,因为我们这里只有一台服务器,就是我自己的电脑主机,所以无法完成负载均衡操作,因此第二个地址用了#注释。

3.pathparm,pathvariable,requestparm这三个的使用场景;

  1. Path Parameter(路径参数):
    Path Parameter 是通过路径的一部分来传递参数,通常用于 RESTful 风格的 API 中。例如,对于 /users/{id} 的路径,其中 {id} 就是一个 Path Parameter,用于表示用户的唯一标识符。使用 Path Parameter,可以根据不同的路径参数值来执行相应的操作。路径参数通过 @PathVariable 注解来绑定到方法的参数上。

  2. Path Variable(路径变量):
    Path Variable 是指将路径中的一部分作为变量来传递,类似于 Path Parameter。它也常用于 RESTful 风格的 API 中。在 Spring MVC 框架中,可以使用 @PathVariable 注解将路径变量绑定到方法的参数上。与 Path Parameter 不同的是,路径变量通常在路径的任意位置定义,而不是通过占位符的形式。

  3. Request Parameter(请求参数):
    Request Parameter 是通过 URL 的查询字符串(query string)来传递参数的,参数以键值对的形式出现。例如,/users?id=123 中的 id 就是一个 Request Parameter。使用 Request Parameter,可以直接在 URL 中提供参数,用于传递用户请求的信息。在 Spring MVC 中,可以使用 @RequestParam 注解将请求参数绑定到方法的参数上。Request Parameter 是最常见的传递参数的方式,常用于 GET 请求和表单提交。

4.什么是消息转换器和对象转换器:

        消息转换器是在客户端和服务器之间传递消息时用于实现数据格式的转换,将消息的原始格式转换为具有特定数据结构的对象或从对象转换为消息的原始格式。消息转换器常用于处理 HTTP 请求和响应的数据格式转换,例如将 JSON 转换为 Java 对象或将 Java 对象转换为 JSON。

常见的消息转换器包括处理 JSON、XML、Protobuf、Properties 等格式的转换。Spring MVC 中提供了多个内置的消息转换器,并且也支持自定义消息转换器。

对象转换器是将一个对象转换为另一个对象的组件,通常在业务逻辑中使用。对象转换器用于将一个类型的对象转换到另一个类型的对象,可以处理属性的映射、类型转换、数据格式转换等操作。对象转换器通常用于模型对象与视图对象之间的转换,或者是实体对象和DTO(Data Transfer Object)之间的转换。

在实际应用中,消息转换器和对象转换器往往会结合使用。例如,首先通过消息转换器将 HTTP 请求中的 JSON 数据转换为 Java 对象,然后再通过对象转换器将这个 Java 对象转换为业务需要的对象类型。

总结一下:

  • 消息转换器用于在客户端和服务器之间进行消息格式的转换,常用于处理 HTTP 请求和响应的数据格式转换。
  • 对象转换器用于将一个类型的对象转换为另一个类型的对象,通常在业务逻辑中使用,用于处理对象之间的转换。
  @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        log.info("扩展消息转换器");
        //创建一个消息转换器对象
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        //需要为消息转换器指定对象转换器    对象转换器课可以将java对象序列化为Json对象
        converter.setObjectMapper(new JacksonObjectMapper());
        //将自定义的消息转换器加入到容器中
        converters.add(0, converter);

    }
}

5.什么是序列化和反序列化:

序列化(Serialization)是将对象转换为字节流的过程,以便将其存储到文件、内存中传输或在网络上进行传输。序列化可以将对象的状态保存到永久存储或传输到其他计算机,以便在需要时能够重新创建对象。序列化过程将对象的属性和数据结构转换为字节序列,使其能够在不同的环境中传输和存储。

反序列化(Deserialization)是将字节流转换回对象的过程,即从序列化的字节流中恢复对象的过程。反序列化将字节流重建为对象,并将其状态和属性恢复到先前序列化的状态。

总结:

今天开始写项目,感觉收获很大,首先就是感觉爽,这是我写的第一个大型项目,这种代码之间联系,分层式的架构是我以前看网课跟练的那些碎片化的代码是完全不同的,我感觉很通畅。其次是感觉时间紧迫,因为我有太多的东西想学了,要抓紧赶进度

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

【苍穹外卖 | 项目日记】第一天,【苍穹外卖】,java,开发语言,原力计划文章来源地址https://www.toymoban.com/news/detail-715997.html

到了这里,关于【苍穹外卖 | 项目日记】第一天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java项目-苍穹外卖-Day10-SpirngTask及WebSocket

    本章实现的业务功能 超时未支付订单自动取消,配送中订单商家忘点完成自动再固定时间检查且修改成完成状态 来单提醒功能 催单提醒功能 一般的话周几和第几日是不能同时出现的 因为比如 4月15日 周四 可能4月15日不是周四 可能冲突的 所以周和日一般只能有一个 现在有

    2024年02月09日
    浏览(43)
  • 【java苍穹外卖项目实战三】nginx反向代理和负载均衡

    我们思考一个问题: 前端发送的请求,是如何请求到后端服务的? 前端请求地址:http://localhost/api/employee/login 后端接口地址:http://localhost:8080/admin/employee/login 很明显,两个地址不一致,那是如何请求到后端服务的呢? 1、nginx反向代理 nginx 反向代理 ,就是将前端发送的动态

    2024年02月21日
    浏览(49)
  • 最适合新手的SpringBoot+SSM项目《苍穹外卖》实战—(二)开发环境搭建

    黑马程序员最新Java项目实战《苍穹外卖》,最适合新手的SpringBoot+SSM的企业级Java项目实战。 前端工程基于 nginx 运行,因为《苍穹外卖》项目侧重于后端开发,所以黑马程序员给我们直接提供了前端的代码部分,我们只需要在本地搭建好前端环境,并运行起来,专注于后端开

    2024年02月10日
    浏览(41)
  • Java项目-苍穹外卖-Day11-Apache ECharts数据统计

    主要是以下四项的统计,以不同形式的图形进行展示 自己去网站上看一哈,我不太懂前端 com.sky.controller.admin.ReportController com.sky.service.impl.ReportServiceImpl.java orderMapper orderMapper.xml Reportcontroller ReportServiceImpl orderMapper.xml reportController ReportServiceImpl orderMapper.xml

    2024年02月09日
    浏览(46)
  • 《苍穹外卖》电商实战项目(java)知识点整理(P1~P65)【上】

    史上最完整的《苍穹外卖》项目实操笔记,跟视频的每一P对应,全系列10万字,涵盖详细步骤与问题的解决方案。如果你操作到某一步卡壳,参考这篇,相信会带给你极大启发。 《苍穹外卖》项目实操笔记【中】:P66~P122《苍穹外卖》项目实操笔记【中】 1. nginx反向代理好处

    2024年01月24日
    浏览(46)
  • 万物的算法日记|第一天

    笔者自述: 一直有一个声音也一直能听到身边的大佬经常说,要把算法学习搞好,一定要重视平时的算法学习,虽然每天也在学算法,但是感觉自己一直在假装努力表面功夫骗了自己,没有规划好自己的算法学习和总结,因为后半年也该找实习了,所以每日的算法题要进行恶

    2024年02月13日
    浏览(41)
  • mysql数据库学习日记第一天

    数据库(DB):存储数据的仓库 数据库管理系统(DBMS):数据库管理系统 SQL:操纵关系数据库的一种编程语言,定义一套关于操作关系数据库的一套标准 到MYSQL官网下载即可,点击这里 注意要记住安装时设置的密码,可以设置的简单一些便于启动比如12345 要配置mysql的环境

    2024年02月10日
    浏览(47)
  • 项目实战————苍穹外卖(DAY11)

    Apache ECharts 营业额统计 用户统计 订单统计 销量排名Top10 功能实现: 数据统计 数据统计效果图: 1.1 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 官网地址:Apache ECharts 常见效果展示: 1). 柱形图

    2024年01月20日
    浏览(49)
  • 苍穹外卖day02项目日志

    参考产品原型,设计表和接口。 1.1.1设计表 看员工管理的产品原型: 有员工姓名、账号、手机号、账号状态、最后操作时间等。 注意,操作一栏不是字段,其中的启用禁用才是。 再看添加员工的原型:  可以发现还有性别和身份证号。 不要忘了旁边: 还有密码。 总结出了

    2024年02月14日
    浏览(73)
  • 基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(四)

    1.1 需求分析与设计 1.1.1 产品原型 在员工管理列表页面点击 “编辑” 按钮,跳转到编辑页面,在编辑页面回显员工信息并进行修改,最后点击 “保存” 按钮完成编辑操作。 修改页面原型 : 注:点击修改时,数据应该正常回显到修改页面。 1.1.2 接口设计 根据上述原型图分

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包