Day01-Java项目学习

news/2025/3/20 22:50:47/文章来源:https://www.cnblogs.com/user-cham/p/18783796

Day01 后端环境搭建

lombok插件

通过lombok插件。

  • @Data
    可以使用@Data、@Getter、@Setter等注解的形式,来对一个Java Bean(具有Getter,Setter方法的对象)实现快速的初始化。
  • @Slf4j
    可以以注解的形式,自动化日志变量,通过添加@Slf4j(simple logging Facade for Java)生成log日志变量,通过log变量打印日志信息。使用@Slf4j依赖logback插件(Slf4j的实现)。lombok只是提供注解的形式自动化创建日志变量。
  • @Builder
    为目标类生成构建器相关的一些api。

POJO

POJO:(Plain Old Java Object)持久化对象,目前理解为java Bean。
在POJO的基础上,将对象分为以下几类(都是Java Bean),并放在POJO包中。

  • Entity:实体,和数据库中的表对应
  • DTO:数据传输对象,用于程序中各层之间传递数据
  • VO:视图对象,为前端展示数据提供的对象

git版本控制

  • .gitignore 文件将项目无关文件,加入忽略列表中
  • idea的git管理使用
  • git的相关设置

git config user.name等信息

  • git本地config设置中的user,email的信息,是本地git提交记录的身份标识,每次提交都会附加这些信息(和Github账户无关),用来标识代码作者。

Git克隆或是Push等操作时,需要进行关联的Github账户认证,可以用如下的一些方式完成认证:

  • 通过credential.helper缓存或保存远程仓库的认证信息。
  • HTTPS协议认证
  • SSH协议认证(ssh多账户配置)

数据库

执行sql脚本文件,生成数据库。

前后端联调测试

  • Step Over: 单步调试,逐行执行代码
  • Step into: 步入,当前行有方法,进入方法体内部
  • Step Out:执行完子函数余下部分,返回到上一层函数
  • run to cursor:一直执行,知道光标处停止;用于循环内部时,点击一次执行一个循环
  • Resume :一直执行到下一个调式断点

Idea中ctrl + alt +鼠标左键跳转对应具体实现类

JWT(java web token令牌)

使用JwtUtil包,生成toke,用于用户身份认证。
JwtUtil.createJWT(key,有效时间,存有用户数据的键值对)

SpringBoot

  • 使用SpringBoot中的@COnfigurationProperties来配置属性类,将配置文件中的属性绑定Spring的Bean上。
    SpringBoot默认使用全局的配置文件:application.propreties/application.yml。一般在resources目录下。
    SpringBoot配置文件

  • 全局异常处理

  • 对象实例化:使用@Builder注解,然后类.builder().属性(赋值).build()生成;

  • 对象属性拷贝BeanUtil包:BeanUtils.coypProperties(srcObj,tgtObj)

  • 拦截器类

nginx反向代理

将前端发送的动态请求转发到后端服务器。

  • 缓存:提高访问速度,通过缓存机制,缓存访问后端的数据,再次访问同样的数据时,使用缓存提高速度
  • 负载均衡:将大量请求按一定策略均衡分配给集群中的服务器。集群
  • 保证后端服务安全:起到网关作用

反向代理基本配置

server{listen 80;#80端口监听请求server_name localhost;# 服务器名location /api/{proxy_pass http://localhost:8080/admin/;#反向代理}
}

负载均衡配置

upstream webservers{ #配置后端服务器ip地址portserver 192.168.100.128:8080;server 192.168.100.129:8080;
}server{listen 80;server_name localhost;location /api/{proxy_pass http://webservers/admin/;#负载均衡}
}

负载均衡策略

  • 轮询:默认方式
  • weight:权重方式,默认为1,权重越高,分配客户端请求越多
  • ip_hash:依据ip分配,用户固定访问一个后端服务
  • least_conn:依据最少连接方式,把请求优先分配给连接数少的后端服务
  • url_hash:依据url分配方式,相同url被分配到同一个后端服务
  • fair:响应时间方式,响应时间越短的服务会被优先分配

密码加密

密码明文存储不安全,使用加密方式进行明文进行加密。
使用md5加密。(不可逆,只能加密,不能解密,密码检查,对提交的明文密码加密后和数据库已加密的密码比对来判断密码是否正确)。

使用DigestUtil包的加密工具进行加密。
DigestUtils.md5DigestAsHex(pwd.getBytes())

导入接口文档

使用apifox导入接口文档(yapi json格式)

Swagger使用

接口测试的方式

  • postman测试后端编写的接口。
  • 使用swagger

swagger介绍

使用swagger只需要按照其规范定义接口以及接口相关信息,就哭做到生成接口文档,以及在线接口调试页面。
使用Knife4j(为Java MVC框架继承Swagger生成Api文档的增强解决方案)依赖。
使用

  • 在maven的pom.xml中导入坐标信息
  • 配置类中加入knife4j相关配置。(WebMvcConfiguration中docket方法?在里面指定生成接口需要扫描的包等信息)
  • 设置静态资源映射,否则接口文档页面无法访问(也是WebMvcConfiguration类中)

Yapi设计阶段工具,用于管理维护接口。
Swagger开发阶段使用的框架,用于后端接口测试。

Swagger注解

  • @Api:类上,标识对类说明Controller
  • @ApiModel:类上,用于Entity,DTO,VO说明
  • @APiModelProperty:属性,描述属性信息
  • @ApiOperation:方法,例如Controller的方法,说明方法用途作用

Swagger token

用于使用SpringBoot拦截器,对请求进行拦截,请求头携带正确有效的token才能进行api接口访问。
因此为了完成接口测试,在swagger的接口文档中页面下的文档管理/全局参数设置下进行token设置。

ThreadLocal

为了完成创建新员工时,得到创建者员工的id信息,可以在jwt认证机制的过程中获取。
image
用户发起的每次请求,对应一个单独的线程,每次请求,都是不同线程。

  • ThreadLocal是线程Thread的局部变量。为每个线程提供单独一份的存储空间(正常线程共享空间),具有线程隔离效果,只有线程自身内才能获取对应的值,线程外访问不了。
    通过ThreadLocal可以实现在创建新员工时,获得创建者员工的id信息。
  • 拦截器拦截请求,获取请求token信息,解析token获取请求者(创建者员工)id信息,存入ThreadLocal
  • 通过拦截器后,请求访问对应/save接口方法,在接口方法里获取ThreadLocal的创建者员工id,设置持久化。

ThreadLocal常用方法

public void set(T value)设置当前线程的线程局部变量值
public T get() 返回当前线程所对应的线程局部变量值
public void remove() 移除当前线程的线程局部变量

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20241105 实验一 《Python程序设计》

课程:《Python程序设计》 班级: 2411 姓名: 王梓墨 学号:20241105 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 一.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试分析) 3.编写程序,练习变量和类型、字…

英语四级备考第二天

第二天 今天是开始英语备考的第二天,当迈出第二步的时候,就意味着正走在通过考试的路上。到时当你以425分毋庸置疑地通过考试时,过去的90天都不曾虚度。 单词 今天新学的单词加上昨天应复习的单词,在50~60个之间。阅读 今天的阅读还是用扇贝单词推荐的包含学习的单词的文章…

投资日记_道氏理论技术分析

主要用于我自己参考,我感觉我做事情的时候容易上头,忘掉很多事情。技术分析有很多方法,但是我个人相信并实践的还是以道氏理论为根本的方法。方法千千万万只有适合自己价值观,习惯,情绪,性格的方法才是好的方法。 趋势 趋势是技术分析的根本,要是连当前趋势都看不懂,最…

asp.net core webapi 完整Swagger配置

在当前项目下新建Utility文件夹,Utility文件夹下面在创建SwaggerExt文件夹,文档结果如下 CustomSwaggerExt.cs文件如下using Microsoft.Extensions.Options; using Microsoft.OpenApi.Models;namespace xxxxxxxxxx {/// <summary>/// 扩展Swagger/// </summary>pub…

ciscnccb半决赛

AWDP typo 一道2.31的堆题漏洞点位于edit功能,snprintf函数把用户输入作为format,导致了堆溢出以及格式化字符串漏洞fix 从程序的代码不难看出分配出来的堆,前面八个字节是堆的size,后面的空间才是数据域 这里原意是修改heap的size,但是用错了函数,我们修改最大读入的siz…

AI全天候智能助手,为您构建私人数据库

在数字化转型浪潮中,AI与大数据技术已成为企业提升效率、优化服务的核心引擎。思通数科凭借其自主研发的大数据智能系统,以AI为核心,打造了一站式解决方案,覆盖消费者服务、商家赋能与平台运营三大领域,助力用户与合作伙伴实现智能化升级。以下是该系统的核心功能与价值解…

安装 Prometheus监控主机服务

一、安装 Prometheus 下载 Prometheus 首先,访问 Prometheus 官网 获取最新版本的下载链接,然后使用 wget 下载:wget https://github.com/prometheus/prometheus/releases/download/v3.2.1/prometheus-3.2.1.linux-amd64.tar.gz解压并安装解压下载的文件:tar -xvzf prometh…

L1 通讲

好多,好多。L1 通讲 部分知识点速通 技术与产品开发的动机 ​ 这张图展示了两个长期趋势:技术和创新的发展速度逐渐变快; 它对我们的生活影响非常广泛,包括好的(如天花疫苗)和坏的(核弹?) 技术变得越来越强大。 例如,我们的祖先使用石制工具,但现在我们构建跨越全球…

Flink 实战之流式数据去重

流式数据是一种源源不断产生的数据,没有预定的开始与结束,至少理论上来说,它的数据输入永远不会结束。因此流式数据处理与传统的批处理技术不同,必须具备持续不断地对到达的数据进行处理的能力。因为流式数据源源不断地产生,对流式数据做去重就十分困难,因为一条数据重复…

vue3 + springboot 实现模糊查询与增加操作

实现表格查询: <!-- 表格 --><div class="card" style="margin-bottom: 5px"><el-table :data="data.tableData" stripe><el-table-column label="名称" prop="name" /><el-table-column lab…

网络基础与进阶

计算机网络入门与进阶 学习OSI网络模型相关概念(重点掌握) 学习TCP三次握手与四次挥手过程(重点掌握) 学习TCP的11种状态集转化(重点掌握) 学习DNS相关知识概念与原理 linux网关配置(添加网关 网段 以及网络主机路由) 修改网卡配置文件 用户访问www.baidu.com 整个过程…