- 博客(119)
- 收藏
- 关注
原创 java 四种引用类型
这就一个强引用类型。他的特点就是不会被GC回收,那怕jvm报出OOM异常.也不会被回收, 如果想要GC回收到这个强引用的话,需要在代码中将这个对象赋值为null,这样GC回收器进行垃圾回收时才会把这个强引用进行垃圾回收,例如。弱引用是用WeakReference进行描述.当gc回收器进行垃圾回收时,不管该引用有没有被使用,都会被直接回收。虚引用是PhantomReference进行描述的,当gc回收器进行垃圾回收时被回收,软引用是用SoftReference进行描述的,指的是有用但是非必要的对象,当。
2022-10-01 16:21:35 279 1
原创 springboot自定义配置文件 yml格式
第一步继承DefaultPropertySourceFactory 重写createPropertySource方法import org.springframework.boot.env.YamlPropertySourceLoader;import org.springframework.core.env.PropertySource;import org.springframework.core.io.support.DefaultPropertySourceFactory;import
2022-05-31 16:27:00 230
原创 boot日志文件分等级并自动滚动拆分
<?xml version="1.0" encoding="utf-8" ?><configuration> <contextName>nhg</contextName> <!-- 日志输出目录 根据自己实际情况改 --> <property name="log.path" value="logs"/> <!-- 控制台日志格式:彩色日志 --> <!-- magen
2022-04-02 13:55:06 236
原创 微信小程序获取手机号后台springboot开发
微信小程序获取手机号需要后台进行解密以java为例想要获取用户在小程序里面的手机号,需要用户先在小程序里面登录,因为微信小程序提供的登录接口(这个接口在微信开发文档里面有)里面返回值有一个code,前端拿到这个code后再进行访问微信的另外一个接口,传三个参数:刚获取的code和appId和appSecret(appId和appSecret在小程序管理后台可以看见)String params = "appid=" + appId + "&secret=" + appSecret + "&
2022-04-01 09:50:18 791
原创 对eureka注册中心做登录拦截
目标针对eureka server这样的方式只是针对新版的springcloud,就是版本好是年份的springcloud,之前以地铁站名命名的springcloud还是用以前的办法对eureka进行拦截实现1: 导入security依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security&
2022-03-25 11:23:42 262
原创 vue登录拦截
总体流程:1.在登录页面中的登录方法将账号密码发给后台进行校验,校验成功后将后台返回的token存到浏览器本地(存到哪里,自己根据自己的实际业务来, 我以存到sessionStorage为例)2.在路由中设置一下前置守卫拦截器,判断跳转路由时sessionStorage存储的token是否为空,为空则调到登录页面3.设置每次向后台请求时从sessionStorage存储的token带上传给后台,因为后台需要校验登录页面<template> <div> <.
2022-03-15 10:22:47 157
原创 springboot防止用户多次提交
概述使用场景:表单提交业务作用:防止用户在同一时刻点击造成垃圾数据的生成。=原理:根据url地址和上次地址链接是否相同,如果相同的话,在5秒(可以自定义)不会再次提交。步骤定义一个注解/** * 自定义注解防止表单重复提交 * */@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface RepeatSubmit { /** * 间隔时间
2022-03-10 17:27:41 129
原创 springboot项目使用war包进行部署
第一步将pom文件中的打包方式修改成 war<packaging>war</packaging>第二步将springboot依赖中自带的tomcat剔除 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId&
2022-02-25 14:29:37 84
原创 完整的logback-spring.xml
01、application-dev.yml配置myapp: logpath: G:/logs/springboot/02、application-prod.yml配置myapp: logpath: /logs/springboot/03、log-spring-xml<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="60 seconds" debug="false
2021-12-20 10:58:45 473
原创 自定义注解
自定义注解使用场景还是很多的,比如说是 在一定时间内限制接口请求次数 下面就来举个栗子业务需求限制一个接口或者多个接口在规定的时间内只能请求规定好的次数以内首先定义一个自定义注解import java.lang.annotation.*;@Documented // @Documented注解只是用来做标识,没什么实际作用,了解就好。@Target(ElementType.METHOD) // 说明该注解只能放在方法上面@Retention(RetentionPolicy.RU
2021-11-19 10:04:25 323
原创 springboot在linux上启动项目
准备材料项目的jar包linux上的tomcat地址(tomcat中的这个包下: webapps 放项目)打包的话可以用maven自带的打包工具进行打包查看自己的tomcat在linux上的安装路径命令: sudo find / -name tomcat 这个命令可以找到关于tomcat的文件夹,自己看看哪个文件夹符合将jar放好后下面开始运行起来永久运行jarnohup java -jar xxx.jar > xxx.log 2>&1 &运行命令
2021-11-17 15:39:38 481
原创 微信Native支付V3版本
微信Native支付V3版本微信支付在开发之前也是需要进行商户接入的接入文档链接: https://pay.weixin.qq.com/index.php/core/home/loginNative支付介绍商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式对应的链接: https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_7_3.shtml微信提供的文档听详细的,需要准备的东西也有介绍,简单分为以下几种:
2021-10-20 15:19:26 467
原创 支付宝扫码支付
扫码支付企业使用支付宝支付的话,需要先进行账户的接入支付接入支付文档链接: https://opendocs.alipay.com/open/0128wr接入支付文档视频: https://www.kuangstudy.com/course/play/1377518279077142529#ksd_1381861907484418050_1381862218542391297ps : 该视频来自于学相伴企业接入完成后可以得到以下参数:appId回调地址应用私钥:支付宝公钥以上参
2021-10-20 11:46:59 428
原创 项目war包部署到第三方Tomcat,访问路径必须加上项目名称的坑
项目打成war包后需要放在tomcat上进行启动,但是会出现,访问路径是必须要加上项目名称才可以访问可以按照以下方式进行修改1.将项目打好包后放在tomcat下的webapps文件夹下2,启动tomcat3.启动完毕后会发现访问的话必须要加上你这个项目的打成war包的名字才可以访问4.停止tomcat5,修改tomcat的server.xml文件6.在tomcat安装目录的conf目录下打开配置文件server.xml,笔者的路径是D:/ruanjian/apache-tomcat-8.5.3
2021-07-30 14:41:37 463
原创 springboot上传文件
直接上代码 @PostMapping("/uploadImage") @ApiOperation(value = "上传图片", notes = "上传图片") public R uploadImage(@RequestParam(value = "file") MultipartFile file,@RequestParam(value = "projectIconName") String projectIconName) { // 非空校验 if (f
2021-07-30 14:36:10 147
原创 vue项目初始化
vue项目初始化步骤1.安装 Vue 脚手架1.1.安装好node.js 1.2.配置好阿里云镜像1.3.npm install vue-cli -g 安装脚手架2.通过 Vue 脚手架创建项目2.1.使用 vue ui 命令打开创建vue项目可视化界面2.2.选择创建,选择好自己的项目目录2.3.输入项目名称2.4.根据自己情况选择是否初始化git仓库后下一步2.5.如果之前没有预设的话就寻找手动配置2.6.打开 Babel、Router、Linter/Formatter和使用配
2021-07-20 15:08:01 87
原创 打开或者swagger文档控制台出现For input string: ““的报错
出现原因是因为swagger文档上每个参数都会设定一个默认值,包装类型的默认值是"",所以会出现转换异常。解决方案方案一在@ApiModelProperty设定默认值方案二降低 springfox-swagger2 包中 swagger-annotations 和 swagger-models 的版本号 <dependency> <groupId>io.springfox</groupId> <
2021-06-28 13:41:05 541
原创 前后端分离无Cookie模式登录
无Cookie模式的下登录校验方式总体流程前端把账号密码给后端校验后端校验完毕后,正确的情况,后端生成token并返回(至于怎么生成token方式有很多,例如:jwt,uuid)前端接受token后,可以把token存在本地(方式很多:Cookie、LocalStorage、SessionStorage),本篇以存入Cookie为例前端每次想后端发请求的时候先从Cookie中取出token,然后放在请求头里面发送过去后端配置一个拦截器,拦截请求,从请求中获取token进行操作这篇文章是使用
2021-06-25 15:30:42 741 1
原创 vue前后端分离项目http请求携带cookie设置问题
问题描述前后端完全分离的项目,前端使用Vue + axios,使用CORS协议解决跨域访问数据限制的问题,但是发现客户端的Ajax请求不会自动带上服务器返回的Cookie:SESSIONID导致每一个Ajax请求在服务端看来都是一个新的请求,都会在服务端创建新的Session(在响应消息头中设置Set-Cookie:JSESSIONID=xxx)解决方法首先前端方面在main.js文件中加上axios.defaults.withCredentials=true;最后后端方面解决跨域问题
2021-06-23 13:46:16 1085 3
原创 使用邮箱发送邮件
使用邮箱发送邮件以QQ邮箱为例第一步开通qq邮箱的SMTP服务登录邮箱----->点击设置----->点击账户----->开启SMTP服务开通的时候,需要按照提示信息短信,短信发送完毕后会给你一个授权码,这个授权码是需要配置在配置文件中,保存好第二步引入依赖 <!--邮件--> <dependency> <groupId>org.springframework.boot</grou
2021-06-07 14:40:08 149 1
原创 关于注入RestTemplate
第一步:引入springboot依赖这个依赖如果是用springboot做web开发是必须要引入的 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>第二步:在其他类上注入RestTemplate
2021-06-04 15:56:26 543
原创 关于ip的相关操作
获取真实IP在开发时候获取的是当前局域网ip,当把项目部署到服务器上的时候获取的就是真实ip /** * 获取访问者真实IP地址 */ public String getIpAddr(HttpServletRequest request) { String ipAddress = request.getHeader("x-forwarded-for"); if (ipAddress == null || ipAddress.length(
2021-06-04 15:36:34 113
原创 lombok中的Slf4j日志记录
话不多说,直接上代码<?xml version="1.0" encoding="utf-8" ?><configuration> <!-- 一般写项目名 --> <contextName>blog</contextName> <!-- 日志输出目录 建议写相对路径,这样可以和项目在一块 --> <property name="log.path" value="./log"/> &
2021-06-04 15:27:12 171
原创 springboot+redis 监听key过期事件
监听redis中所有过期的key,并且返回失效的key第一步修改redis.config中的配置,开启监听key的过期事件默认是notify-keyspace-events ""修改为:notify-keyspace-events "Ex"第二部自定义监听器该监听器会在key过期时候触发package com.lemon.move.interceptor;import java.nio.charset.StandardCharsets;import org.slf4j.L
2021-05-31 17:05:51 134
原创 HttpClientUtil
package com.lemon.move.utils;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import lombok.extern.slf4j.Slf4j;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.htt
2021-05-27 18:25:43 46
原创 阿里云发送短信
创建一个配置类存储阿里云的一些配置############### 阿里云短信发送 需要修改 ####################################### 阿里云AK账号 临时使用 需要修改config.access_key_id=******************************# 阿里云AK密码 临时使用 需要修改config.secret=******************************# 短信签名 临时使用 需要修改config.sign_nam
2021-05-27 17:54:40 81
原创 Redis常用工具类
RedisConfigpackage com.lemon.move.config;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.SerializationFeature;import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;import com.fasterx
2021-05-27 17:41:48 70
原创 springboot整合定时任务
自动一: 导入依赖 <!--定时任务--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency>二: 启动类加注解:@EnableScheduling三: 写一个任务类
2021-05-27 17:34:23 41
原创 SpringBoot集成 Jwt 实现Token验证访问
一: 导入依赖 <!-- jwt --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.7.0</version> </dependency>二: 设置jwt配置类package com.lemon.mov
2021-05-27 17:16:30 78
原创 swagger
使用swagger接口文档一: 导入依赖 <!-- swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> &
2021-05-27 17:07:08 52
原创 Springboot中抽取公共的properties文件
将公共的配置抽取出来,写在配置类中,以便后期的维护首先创建一个Springboot项目在resources文件夹下创建一个config.properties(文件名随意)文件,在这个文件中配置要抽取的公共配置方式一写一个读取配置类package com.lemon.common;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org
2021-05-16 11:06:55 364 2
原创 Synchronized使用
简介实现线程同步,让多个线程排队依次获取某个资源,保证数据不会出错。思考synchronized 到底锁定是什么元素?修饰方法静态方法,锁的是类非静态方法,锁的是调用方法的对象修饰代码块.锁定的是传入的对象== 使用sleep()方法是为了更好的查看执行顺序 ==示例修饰非静态方法没有加synchronized关键字修饰的public class Test { public static void main(String[] args) { Te
2021-03-23 22:21:45 68
原创 SpringBoot OSS 整合
使用阿里云OOS对象存储服务首先在阿里云服务器上使用OOS对象存储服务创建对应的Bucket具体步骤不写了下面开始整合SpringBoot OSS创建工程 导入依赖<!-- OSS SDK 相关依赖 --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId
2021-03-11 21:55:08 168 1
原创 Spring Cloud Feign简单使用
Spring Cloud Feign 简单的demo准备三个服务分别为:一个父项目:ihrm三个子项目:ihrm_company (被调用)ihrm_eureka(注册中心)ihrm_system (调用)使用 ihrm_system 服务调取 ihrm_company中的接口首先父项目导入依赖<dependencyManagement> <dependencies> <dependency>
2021-03-11 12:45:24 67
原创 Spring Boot 正常启动后访问Controller提示404问题
描述想要项目二中的Controller层中的文件,项目一引用了项目二,但是项目一和项目的目录名不一致原因Spring Boot启动类只会扫描启动类当前包和以下的包方案::在启动上方添加@ComponentScan注解,此注解为指定扫描路径例如: ...
2021-03-09 21:36:05 208
原创 @MapperScan注解使用
使用MybatisPlus时候需要再Dao层接口上加上@mapper注解,这样可以让MybatisPlus在运行时会生成相应的接口实现类但是如果接口文件过多的话,这样的方式就太麻烦了,故此可以使用@MapperScan注解指定包扫描的位置@MapperScan指定要变成实现类的接口所在的包,然后包下面的所有接口在运行时都会生成相应的实现类这个注解也支持扫描多个包,例如:这个注解可以放在启动器上也可以写在MybatisPlus的配置类上.例如:...
2021-03-09 21:29:04 147
原创 Shiro安全框架
什么是ShrioApache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码加密和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。Shiro的功能验证用户来核实他们的身份对用户执行访问控制,如:判断用户是否被分配了一个确定的安全角色判断用户是否被允许做某事在任何环境下使用 Session API,即使没有 Web 或 EJB 容器。在身份验证,访问控制期间或在会话的生命周期,对事件作出反
2021-03-09 21:21:12 63
原创 JWT
什么是JWTJSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。在Java世界中通过JJWT实现JWT创建和验证。JWT的组成第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature).JWT如何应用目前就这两种适用、当然还可以将token添加到cookie中,但是不建议使用1. 在HTTP头中自定义属性并验证自定义属性的方法也
2021-03-09 12:21:21 265
原创 常见的认证机制
HTTP Basic AuthHTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。因此,在开发对外开放的RESTful API时,尽量避免采用HTTP Basic Auth这种方式风险比较大而且比较麻烦,不建议使用Cookie AuthCookie认证机制
2021-03-09 11:52:59 70
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人