
Java
文章平均质量分 67
java常见问题及常用方法的工作记录
什么都干的派森
满招损 谦受益
展开
-
java生成、解析JWT【java-jwt】
JWT是token的一种,一个JWT字符串包含三个部分头部信息,一般不需要声明,默认为 HS256 签名算法和 JWT 令牌类型2.Payload包含一些默认字段,还可以自定义一些私有字段,但是不要放敏感信息3.Signature数据签名,对上面两部分进行数据签名,Header部分和Payload部分先进行base64Url编码,然后用英文句号拼接并加上一个自定义的secret字符串盐值进行HS256对称加密【也可以用其它算法或非对称加密】4.组合最后将 Header、Payload、Signa原创 2022-06-06 12:04:34 · 3735 阅读 · 7 评论 -
SpringBoot HandlerInterceptor拦截器使用方法
文章目录一、拦截器工作流程二、实现方法1.一、拦截器工作流程HandlerInterceptor包含三个方法,分别是preHandlepostHandleafterCompletion拦截顺序如下:#mermaid-svg-72ftLDCmHZBiH4EW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-72ftLDCmHZBiH4EW .error-i原创 2022-06-04 16:59:09 · 1183 阅读 · 3 评论 -
SpringBoot整合MybatisPlus
一、引入依赖二、application文件三、建表四、bean五、mapper六、测试三、建表五、mapper六、测试原创 2022-06-02 11:07:52 · 303 阅读 · 3 评论 -
SpringBoot+JWT实现注册、登录、状态续签【登录保持】
文章目录一、实现流程简述1.注册2.登录一、实现流程简述1.注册2.登录Created with Raphaël 2.3.0开始Vue:post 传入 User(username, password)Java:password 非对称加密 RSA(password)查询数据库中是否有此用户 User(username, RSA(password))Java:根据 username 生成 token TOKEN(username)Java:用户权限 TOKEN(username) 存入 redis原创 2022-06-01 16:02:37 · 3009 阅读 · 9 评论 -
SpringBoot请求参数相关注解说明【@PathVariable、@RequestHeader、@RequestParam、@CookieValue、@RequestBody】
文章目录一、@PathVariable二、@RequestHeader三、@RequestParam三、@CookieValue四、@RequestBody一、@PathVariable1.作用映射 url 路径中的变量2.使用方法@RestControllerpublic class BookController { @GetMapping("/book/{id}") public Integer getBook(@PathVariable("id") Integer id原创 2022-05-25 13:13:12 · 512 阅读 · 8 评论 -
SpringBoot静态资源路径管理
文章目录一、默认静态资源路径二、增加静态资源路径前缀一、默认静态资源路径类路径下:staticpublicresources这几个目录为默认静态资源访问的目录二、增加静态资源路径前缀动态资源和静态资源路径重复时会优先访问动态资源,为了避免路径重复,可以为静态资源路径增加前缀1.目录结构2.配置文件spring: mvc: static-path-pattern: /static_path/**3.访问结果...原创 2022-05-25 12:00:01 · 661 阅读 · 5 评论 -
SpringBoot中@Configuration注解的作用及使用方法
文章目录一、作用二、使用方法1.引入依赖2.创建bean3.创建配置类4.创建测试类三、注意事项一、作用@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。二、使用方法1.引入依赖<!--基础依赖-->原创 2022-05-23 21:23:58 · 6611 阅读 · 7 评论 -
SpringBoot+RabbitMQ实现发布订阅模式消息队列
文章目录一、适用场景二、前提条件三、实现方法1.依赖包2.application配置文件3.创建一个接收消息的对象4.创建三个消息队列绑定到一个发布订阅交换机上5.创建三个队列的消费者6.controller中创建一个生产者四、测试结果一、适用场景高并发场景下,多个耗时业务顺序执行会浪费大量时间,多线程又会导致过高的cpu占用,较好的方式是采用消息队列。二、前提条件需要先部署一个RabbitMQ,可以参考这个教程https://blog.youkuaiyun.com/weixin_43721000/art原创 2022-05-08 17:53:12 · 1859 阅读 · 1 评论 -
Docker部署RabbitMQ
文章目录一、前置需求1.liunx环境2.安装Docker二、部署方法1.拉取镜像2.启动容器3.进入容器启动管理界面三、访问测试一、前置需求1.liunx环境本人用的 Centos72.安装Docker参考这篇文章https://blog.youkuaiyun.com/weixin_43721000/article/details/124237932二、部署方法1.拉取镜像docker pull rabbitmq2.启动容器docker run -d --name my-rabbitmq原创 2022-05-05 17:17:47 · 370 阅读 · 0 评论 -
Mybatis-Plus读写Mysql的Json字段
文章目录前置条件一、新建mysql表增加json字段二、pojo类三、测试类前置条件确保mysql的版本是5.7+一、新建mysql表增加json字段二、pojo类package com.cxstar.domain;import com.alibaba.fastjson.JSONObject;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.Tab原创 2022-04-25 10:36:29 · 2114 阅读 · 6 评论 -
SpringCloud在Feign中使用Hystrix熔断器
文章目录前言一、前置条件一、使用方法1.引依赖2.application文件新增配置3.编写Fallback处理类二、测试三、补充ps:阅读此文章前,你必须具备实现一个基于Feign的可编程式接口的能力Feign 的具体应用可以查看这篇文章https://blog.youkuaiyun.com/weixin_43721000/article/details/124214887前言Hystrix可以防止微服务链式调用时的雪崩#mermaid-svg-9og5Kar2OYkZDUgM {font-famil原创 2022-04-17 14:41:51 · 1462 阅读 · 8 评论 -
SpringCloud基于Feign的可编程式接口调用
文章目录前言一、基本使用1.引依赖2.加注解3.声明接口4.调用二、进阶1.日志配置2.性能优化前言Feign 可以替代 RestTemplate 完成可编程式接口调用,并且内部集成 Ribbon 实现了负载均衡一、基本使用1.引依赖pom文件增加 openfeign 依赖<!-- feign --><dependency> <groupId>org.springframework.cloud</groupId> <a原创 2022-04-16 17:33:40 · 1686 阅读 · 5 评论 -
Rancher+Docker+SpringBoot实现微服务部署、扩容、环境监控
文章目录前言一、前置需求1.linux虚拟机或系统2.创建好docker环境3.写一个简单的微服务并创建为docker镜像二、安装Rancher1.拉取rancher镜像2.启动rancher容器3.访问rancher三、配置rancher1.把语言改为中文2.创建rancher环境3.添加一个主机4.为主机添加应用5.为应用添加服务四、扩容五、状态监控1.查看 cpu、内存、网络、存储 状态2.查看日志六、访问控制七、补充前言Rancher 是一套容器管理平台,可以在生产环境中快捷的部署和管理容器,原创 2022-04-15 17:55:29 · 3082 阅读 · 5 评论 -
Docker部署微服务时Springcloud网关报错 java.net.UnknownHostException: xxx: Name or service not known
文章目录一、问题二、原因三、解决办法一、问题eureka、gateway 和 微服务应用 部署好后用网关访问应用时报错java.net.UnknownHostException: 235e07e2ae51: Name or service not known二、原因开发环境下的微服务都是在本地,默认情况下,eureka 使用 hostname 进行服务注册和信息显示,而部署到 docker 之后,每个微服务的环境都是独立的,docker 容器会用自己的容器id去注册 eureka,所以上面原创 2022-04-10 17:46:31 · 2943 阅读 · 4 评论 -
java子线程并发处理多个业务后同步到主线程统一返回
文章目录一、业务场景1.需求2.分析二、实现方法1.统一业务返回格式2.创建数据缓冲区3.创建业务4.创建计时器5.创建执行类6.创建入口函数三、执行结果一、业务场景1.需求并发多个不同的业务,将所有业务的执行结果汇总返回,每个业务的需求时间不定,汇总返回耗时不能超过5秒(超时未返回结果的业务放弃)2.分析Thread 和 Runnable 不能返回结果,Callable 虽然可以返回子线程的结果,但是一旦调用get后就变成顺序执行而不是并发,Spring的MQ是异步并发的但是好像不能汇总结果,原创 2022-04-05 21:41:33 · 2751 阅读 · 3 评论 -
SpringCloud GateWay网关的路由转发和跨域请求配置
文章目录一、实现方法1.模块结构2.pom文件引入网关依赖和注册中心依赖3.创建启动类4.创建application配置文件二、测试结果一、实现方法1.模块结构2.pom文件引入网关依赖和注册中心依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSche原创 2022-03-26 11:35:46 · 2833 阅读 · 3 评论 -
springboot 注解方式批量插入数据
文章目录一.使用场景二.实现方法1.mysql表结构2.domain3.mapper4.测试类5.测试结果3.插入效率对比1.批量插入2.一条一条插入一.使用场景一次请求需要往数据库插入多条数据时,可以节省大量时间,mysql操作在连接和断开时的开销超过本次操作总开销的40%。二.实现方法1.mysql表结构2.domainpackage com.cxstar.order.domain;import java.util.Date;@lombok.Datapublic class D原创 2022-03-26 11:01:30 · 7647 阅读 · 7 评论 -
springboot整合druid
文章目录一、添加druid依赖二、application文件加入druid配置一、添加druid依赖访问maven仓库复制依赖坐标https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter&原创 2022-03-24 11:01:44 · 615 阅读 · 6 评论 -
springboot部署时指定端口
文章目录1.问题描述2.解决方法3.测试结果1.问题描述部署时有时出现端口冲突,为了避免反复修改配置文件中的端口,可以在部署命令中增加临时属性2.解决方法使用jar命令启动springboot工程时可以使用临时属性替换配置文件中的属性# java -jar 工程名.jar --属性名=值 --属性名=值 ... java -jar springbootproject.jar --server.port=8080 # 指定5000端口部署ps:其他springboot属性也可以在部署时原创 2022-02-24 14:59:57 · 898 阅读 · 7 评论 -
Java关于ArrayList的使用方法及ArrayList与数组Array的区别和互转方法
文章目录1.ArrayList与Array的区别2.应用场景3.声明并使用ArrayList(1)单一数据类型(2)多种数据类型4.ArrayList与Array互转(1)ArrayList转数组(2)数组转ArrayList1.ArrayList与Array的区别Array:1.效率高 O(1)2.占用空间小3.长度固定(只能修改,不能增删)4.只能存放单一数据类型ArrayList:1.执行修改的时候效率和Array一样 O(1),执行增删的时候为 O(n),需要进行新旧数组的拷贝操作原创 2022-02-18 16:44:05 · 969 阅读 · 5 评论 -
SpringBoot整合lombok,快速开发实体类
文章目录1.pom.xml配置文件加入lombok坐标2.新建实体类加入@Data注解3.查看结果1.pom.xml配置文件加入lombok坐标<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency>加入后刷新maven插件ps:lombok版本不需要配置,SpringBoot原创 2022-02-15 16:30:55 · 409 阅读 · 7 评论 -
SpringBoot整合MyBatis
文章目录1.新建项目2.创建一个mysql库3.编辑application.yml配置文件4.新增dao和domain5.测试结果1.新建项目勾上这三项ps:如果不建站的话spring Web可以不选2.创建一个mysql库新建一个数据库用来测试:数据库名:ssm_db端口:3306username:rootpassword:123456新建一个表:表名:book两个字段:id,title3.编辑application.yml配置文件加入如下内容# 数据库相关配原创 2022-02-14 18:51:14 · 534 阅读 · 12 评论 -
IDEA创建Maven的SpringBoot工程
文章目录1.IDAE配置Maven2.新建SpringBoot工程1.IDAE配置MavenIDAE配置Maven的方法可以考这篇文章:https://blog.youkuaiyun.com/weixin_43721000/article/details/1228264092.新建SpringBoot工程1.File→New→Project2.选择Spring Initializr 编辑下项目名和组织,点击next3.选择Spring Web,点击finish4.新建一个controller原创 2022-02-11 12:10:13 · 458 阅读 · 6 评论 -
IDEA创建Maven的web工程
文章目录1.IDAE配置Maven2.新建web工程项目3.修改为标准工程结构3.测试结果1.IDAE配置MavenIDAE配置Maven的方法可以考这篇文章:https://blog.youkuaiyun.com/weixin_43721000/article/details/1228264092.新建web工程项目file→New→projectMaven→cocoon-22-archetype-webapp→next配置一下工程名注意下maven的配置是否正确3.修改为标准工程结构此时原创 2022-02-09 11:30:24 · 843 阅读 · 4 评论 -
IDEA配置maven
文章目录1.安装JDK2.安装Maven3.在IDEA中配置JDK4.在IDEA中配置Maven5.创建一个Maven工程测试结果1.安装JDK可以参考我的这篇文章:https://blog.youkuaiyun.com/weixin_43721000/article/details/1228178662.安装Maven可以参考我的这篇文章:https://blog.youkuaiyun.com/weixin_43721000/article/details/1228191363.在IDEA中配置JDK选择fi原创 2022-02-08 17:58:21 · 501 阅读 · 3 评论 -
Maven下载安装
文章目录1.下载安装2.配置环境变量3.测试安装结果4.配置本地仓库5.配置中央仓库6.测试仓库配置是否正确1.下载安装进入官网:https://maven.apache.org/点击 Download ,往下拖选择这个 bin.zip 结尾的:下载好之后解压到任意路径即可,尽量别放系统盘可以放在这种位置:D:\Program Files\maven2.配置环境变量和配置JDK差不多,只是JAVA_HOME变成了MAVEN_HOME添加一个MAVEN_HOME变量,值为你的maven原创 2022-02-08 15:17:06 · 603 阅读 · 6 评论 -
JDK下载安装
文章目录1.选择对应版本2.选择对应安装文件3.登录账号4.安装5.配置环境变量6.测试安装结果Java官网的JDK下载页面可能会发生变化,这是最新的下载页面链接:https://www.oracle.com/java/technologies/downloads/archive/1.选择对应版本(包含所有JDK的历史版本)2.选择对应安装文件(我这里是windows开发环境所以我下载这个)3.登录账号点击下载之后会转跳登录页面没有就注册一个,因为账号密码格式要求严格,所以经常出原创 2022-02-08 09:51:21 · 673 阅读 · 5 评论