- 博客(67)
- 收藏
- 关注
原创 resilience4j限流工具的使用
有时我们不想让某个接口被访问得太过频繁,想对访问量进行控制,这时resilience4j就可以发挥作用了。官方文档:https://resilience4j.readme.io/v1.7.0/docs/getting-started。
2024-02-22 16:44:57
1410
原创 minio配置监听(对象操作日志)
本文档适用于minio2021.3.17版本有时我们需要查看minio中对象操作的日志,比如像监听minio某一个桶中的删除事件,就需要配置监听。minio支持将监听的结果输出到es、pg、amq等等,下面介绍一下将minio对象操作监听结果输出到es与pg。
2023-12-05 20:08:57
3001
原创 使用nginx代理s3服务(私有云存储)
公司网络安全原因,私有部署s3服务的机器无法被直接访问,所以需要加一层代理,通过访问代理去访问s3服务器,这里使用nginx进行代理。使用s3服务的方式是在代码中使用官方的java s3 sdk(本文对于其他语言的官方sdk也适用)。由于在配置过程中遇到了一些问题,如果不对s3协议的签名校验规则比较了解就难以解决此问题,故在此记录分享一下。
2023-11-24 15:46:25
3579
原创 rabbitmq在spring boot中的使用
spring boot自动配置了rabbitmq的连接工厂、template等等,使用起来非常方便。
2023-03-29 17:15:50
376
原创 StringBuilder导致的oom
StringBuilder在扩容过程中抛出了oom,但是考虑到我需要存的字符串并不是很大,只有几百KB,而StringBuilder最大扩容为数组下标最大值左右,应该不至于导致oom,百思不得其解,还好有大佬跟我碰到了非常相似的问题,简单来说就是实际的内存太小了,真的扩容不下了,由于实际服务器在运行许多组件,jvm中本来就保存了许多其他的类,导致内存真的不够用了。
2022-11-05 17:21:17
799
原创 看懂java的异常堆栈信息
1、打印出的时抛出异常时的方法栈信息(方法调用链),栈的最上面是异常抛出的根源方法,栈的最下面一定是main或者run方法2、很多情况下,会有caused by部分,这是栈的最上面的方法抛出异常的原因,也是方法堆栈信息(方法调用链),在这部分,栈的最下方往往会省略一些,这是为了更简洁,省略的部分是caused by部分的上一个堆栈部分的信息,caused by部分显示出来的最下面的方法是上一个堆栈部分的栈顶方法
2022-11-05 15:51:28
1768
原创 Java代码实现两个数据库之间的数据同步
需求背景:有A&B两个数据库,以A为主,B要同步A上的数据,同步涉及数据的增删改查,且要每天同步一次。条件限制是,只能调用中台提供的接口操作数据库,不能写SQL。
2022-07-25 18:25:34
9651
5
原创 SpringCloud Gateway + nacos 报错 Service Unavailable
问题描述:使用spring的gatway,将gateway搭建好并成功注册到nacos中,但通过gatway却无法路由到其他服务,每次都报错There was an unexpected error (type=Service Unavailable, status=503)。gatway服务的依赖: <dependencies> <!--导入网关的jar包--> <dependency> <grou
2022-04-17 14:59:11
5426
3
原创 Spring Boot 自动配置实现原理
引言在使用ssm框架的时候,每每想要用到依赖的功能,都需要导入相关jar包,并且写配置文件做相关的配置,当然也可以不写配置文件,用配置类来代替配置文件也可以。在使用springboot框架的时候,会发现只要引入相关依赖,然后直接使用就行了,往往没有自己做什么配置,或者想要更改一些配置属性,比如改端口号,只要在application.properties文件里做修改就可以了,而且所有的配置都在这里。这就是springboot的自动配置功能。那springboot到底做了什么神奇的事情,使得我们可以从“配置地
2021-08-29 22:26:16
501
5
原创 SpringMVC DispatcherServlet 运行的大致流程
引言在使用SpringMVC之前,我们写请求处理都是自己写Servlet(Servlet实现类),来实现对请求的响应处理,还要为每个Servlet写一对请求地址映射配置,比较麻烦。使用了SpringMVC,我们只需要利用SpringMVC提供好的API就可以方便的实现请求的处理,而且我们只需要写一个Servlet的配置就行了,这个Servlet就是DispatcherServlet。DispatcherServlet的作用我们发来的http请求都会被DispatcherServlet统一处理,Disp
2021-08-27 22:59:05
608
原创 Spring AOP
什么是AOPAOP(Aspect Oriented Programming),面向切面编程,是Spring的重要组成部分。AOP是一种思想,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。为什么要用AOP使用AOP,其实就是方便地实现了代理模式。使用代理模式可以使程序变得易于扩展,通过访问代理对象而不是目标对象,来实现对目标对象的扩展。不用AOP,也可以自己在项目中实现代理模式,不过没有这个必要,使用人家写好的,用人家的AP
2021-08-26 22:16:07
94
原创 Spring IoC
什么是IoCIoC(Inversion of Control),控制反转,是Spring框架的重要组成部分。IoC是一种概念,是一种设计原则。把对象创建和对象之间相互调用的过程交给Spring管理。为什么要用IoCIoC可以帮助程序的结构更加健壮,解耦合。其实使用Spring IoC,可以方便的实现工厂模式和单例模式。这两个设计模式对于程序的健壮性是十分重要的,运用设计模式,带来的好处非常多,可以写出扩展更方便、性能更高的程序。不使用IoC,为了写出健壮的程序,也可以自己来实现设计模式,但是一个项目就
2021-08-26 21:53:27
89
原创 替换word模板中的关键字
这里强烈推荐使用poi-tl项目地址:https://github.com/Sayi/poi-tl中文文档地址:http://deepoove.com/poi-tl/踩了几个小时的坑,遇到了poi-tl,三两下就把功能实现了,无敌级的方便。下面上手。1、导入依赖poi-tl依赖poi,且必须为4.1.2以上版本。 <dependency> <groupId>org.apache.poi</groupId>
2021-08-15 13:42:35
290
转载 spring项目解决静态url自动拼接;jsession的问题
转载自https://my.oschina.net/wangnian/blog/6480221.jsessionid是什么?Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid;在其它的容器也许就不叫jsessionid了2.那么有什么问题?首先这是一个保险措施 因为Session默认是需要Cookie支持的,但有些客户浏览器是关闭Cookie的,所以在这个时候就需要在URL中指定服务器上的session标识,也就是EDE802AB96CD1E0CA2AFB3
2021-07-07 20:26:20
1686
原创 MyBatisPlus的入门
官网:https://baomidou.com/Step1、建测试用的数据库这里就直接用官网上的,建表和造数据create database mybatis_plus_test;use mybatis_plus_test;CREATE TABLE user( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NUL
2021-07-04 15:30:06
86
2
原创 SpringBoot实现文件下载,多文件打包下载
1、单文件下载//文件下载测试 @GetMapping("/download") public void fileDownload(HttpServletResponse response){ //文件路径 String filePath = "D:\\文件下载测试\\实验6打印.docx"; //文件名 String fileName = "实验6.docx"; File file = new File(
2021-07-03 19:53:46
3841
原创 若依的入门
https://blog.youkuaiyun.com/weixin_44900753/article/details/113931244https://blog.youkuaiyun.com/weixin_44900753/article/details/113931244
2021-05-05 15:38:50
285
原创 使用Thumbnails来压缩上传的图片保存至服务器
前言项目部署之后,发现对图片资源的访问速度太慢,租的服务器带宽为1Mbps,用户上传的图片多为手机拍摄,一般大小在5MB左右,如果不压缩,那网站基本没人愿意使用的状态。于是寻找压缩图片的方法本片文章的操作借鉴自:https://my.oschina.net/u/4327542/blog/3373337https://blog.youkuaiyun.com/qq_25508039/article/details/82257436https://blog.youkuaiyun.com/hanerer1314/article/
2021-03-13 18:12:44
840
原创 centos安装mysql,启动mysql时,关于错误The server quit without updating PID file
参考:https://blog.youkuaiyun.com/ydyang1126/article/details/72473828https://cloud.tencent.com/developer/article/1409737由于在成功启动前我做了两个变化,所以无法确定到底是哪个使得成功启动。一、由于提示说The server quit without updating PID file(/usr/local/mysql/data/mysqld.pid),我又在my.cnf文件中写了:pid-file
2021-03-06 15:48:40
595
原创 SJUTFleaMarket项目部署
一、购买服务器我是在阿里云平台购买的,为了免去网站备案,买的位于香港的服务器(阿里云开发者扶持计划虽然很便宜,但目前没有境外服务器的可以选)二、购买域名买域名也是在阿里云上操作的三、配置环境1、java环境配置参考https://blog.youkuaiyun.com/Jekin_KE/article/details/87312623、https://juejin.cn/post/6844903927532486663下载jdk的时候,linux有很多版本可以选择,有arm64的,也有x64的,想要知道自
2021-03-05 18:28:52
182
1
原创 springboot+mybatis+thymeleaf+PageHelper实现分页显示
参考PageHelper文档:https://pagehelper.github.io/docs/howtouse/大佬文章:https://www.pianshen.com/article/6213345123/具体步骤1.1 导入依赖从maven仓库搜<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter
2021-02-24 21:54:38
424
原创 SJUTFleaMarket项目开发二:后台
一、建立项目,配置环境、测试idea创建项目,初始化时选择devtools、spring web、thymeleaf、mybatis framwork、mysql driver依赖,shiro依赖等其他依赖后来再手动导入各层的包建好,项目目录结构建好配置数据库连接信息等(下面为此项目初始时的配置)spring: thymeleaf: #关闭了缓存,打包部署的时候记得开回来 cache: false #配置连接数据库信息 datasource: driver-c
2021-02-24 11:41:03
219
原创 SJUTFleaMarket项目开发一:数据库
一、需求分析用户可凭借账号密码登录(注册时强制使用邮箱注册,注册成功后可设置用户名)用户可设置性别、出生日期、联系方式等基本信息,用户有唯一标识id一个用户可发布多条商品信息商品必须有商品名称、商品类别、商品价格和商品状态,可以有商品描述、商品图片等,商品有唯一标识id商品发布要记录发布时间信息二、画ER图三、ER图转化为实体模式用户user(用户id、用户名username、登录密码password、出生日期birthday、学校university、邮箱email、电话tele、
2021-02-23 13:27:18
222
原创 个人竞赛项目(SJUTFleaMarket)开发笔记
关于varchar与char的区别,以及varchar的最大长度和存储规则https://blog.youkuaiyun.com/xujingzhong0077/article/details/82991736mysql中int()里的数字不是能存储值的大小,而是在表中的数的最大显示宽度,可以配合UNSIGNED ZEROFILL实现不够宽度的自动补零。更详细:https://www.cnblogs.com/echo-something/archive/2012/08/26/mysql_int.htmlSongj.
2021-02-23 13:18:47
239
原创 springboot上传的照片无法访问
问题描述:上传一张图片后,检查目录发现文件已经成功上传到指定的目录下,但无法通过地址拿到,重启项目后可以拿到。后来发现在上传一张照片后,target目录下并没有立即生成上传的文件,所以访问不到。问题解决:查看了诸位大佬的文章后,用设置文件路径映射的方法完美解决了这个问题。处理上传的图片,设置保存到哪里时,用绝对路径来指出保存的位置,然后为这个绝对路径设置映射的路径,通过这个映射的路径就可以立刻拿到上传的图片了。解决问题的代码:@Configurationpublic class ResourceCo
2021-02-21 18:00:24
1351
4
原创 springboot实现文件上传
0、前言在实际操作过程中参考了以下大佬的文章:https://www.hangge.com/blog/cache/detail_2463.htmlhttps://developer.aliyun.com/article/763232http://www.ityouknow.com/springboot/2018/01/12/spring-boot-upload-file.html1、上手1.1 导入依赖springboot实现文件上传不需要导入特殊的依赖,只需要web依赖就行了(前端这里我用t
2021-02-21 17:42:15
452
原创 shiro整合thymeleaf实现根据访问者状态隐藏标签与shiro实现登出
一、shiro整合thymeleaf1、导入thymeleaf整合shiro的依赖<!--thymeleaf整合shiro--> <dependency> <groupId>com.github.theborakompanioni</groupId> <artifactId>thymeleaf-extras-shiro</artifactId>
2021-02-04 21:12:48
481
原创 shiro实现用户授权
shiro授权在自定义的realm类里面来实现public class UserRealm extends AuthorizingRealm { @Autowired UserMapper userMapper; //授权 @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { System.out
2021-02-04 20:56:39
325
原创 使用shiro实现登录拦截(请求拦截)和用户认证(登录)
上一篇已经将shiro和springboot整合起来了,这里就直接开始写功能了一、登录拦截(请求拦截)这个功能在shiro配置类里写,拦截哪些页面,什么情况下拦截,拦截后要不要跳转,都写在注释里@Configurationpublic class ShiroConfig { //ShiroFilterFactoryBean @Bean public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("secur
2021-02-04 15:28:20
3210
原创 shiro与springboot整合
1、导入依赖 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-web-starter</artifactId> <version>1.7.1</version> </dependency>2、注册shiro核心
2021-02-04 14:46:42
184
原创 Spring Security初接触
官网https://spring.io/projects/spring-security先占个位子,等整明白了再回来补充稍微接触了一下这个安全框架,总是实现不了某些功能,网上说可能是我用的springboot版本太高了(我一直用最新版),得往下降版本,将版本又有可能导致其他某些地方不兼容,太麻烦了,本来就是想稍微接触下,就直接学shiro了...
2021-02-04 14:30:53
68
原创 thymeleaf笔记
官方文档https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.htmlthymeleaf是个模板引擎,在springboot中用来取代jsp实现前端页面的开发与后台的信息传送。1、后台向thymeleaf前台传值后台向前台传值,只要在处理请求的方法里声明Model,然后把从service层拿来的数据放到model里就行了,看下例: @RequestMapping("/employee") public String toForm
2021-02-03 12:06:24
3635
1
原创 springboot整合mybatis
官方文档https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/#步骤如下:1、创建项目,导入依赖使用IDEA创建一个springboot项目,选择web、jdbc、mysqldriver模块,再导入mybatis依赖:<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId
2021-02-01 12:39:46
81
原创 多环境配置
在实际项目中,需要配置多套环境,开发环境、测试环境等等,通过配置文件来实现环境的切换。可以使用properties配置文件,也可以使用yaml配置文件。yaml比较优秀,这里介绍yamlyaml实现多环境十分简单,只需要一个yaml文件:server: port: 8080spring: profiles: active: dev #表示使用dev环境的配置--- #通过---来区分不同的环境server: port: 8081spring: profiles: dev
2021-01-30 15:04:23
101
原创 JSR303校验
JSR303校验会自动检查传过来的值是否为需要校验的值,通过@Validated注解开启,其具体使用方法见下面的例子:@ConfigurationPorperties(prefix = "person")@Component@Data@Validated //加入了这个注解就表示这个bean开启校验public class Person { @Email//这表示校验userName必须是Email格式的,不然报错 private String userName; p
2021-01-30 14:47:21
133
原创 springboot资静态资源访问自定义
官方文档(https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-spring-mvc-static-content)介绍了可以自配置的一些东西,下面我来尝试。1、修改静态资源访问路径(加前缀)首先,对于放在springboot默认静态资源文件夹下的静态资源(照片、视频、js、css啥的),可以通过当前项目根路径/ + 静态资源名访问到。默认的静态资源文件
2021-01-30 11:39:18
431
原创 yaml的使用与绑定bean的属性值
yaml是用来代替xml配置文件的,在springboot项目的resources目录中有一个application.preoperties配置文件,可以将此配置文件用application.yaml代替。yaml是一种标记语言简介YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。非常适合用来做以数据为中心的配置文件
2021-01-29 19:53:17
733
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人