Java
文章平均质量分 84
Java升级之路
野生程序员
生活体验家
扎根一线
记录和分享各种技术干货,进步的路上一起努力
公众号「Java升级之路」原创作者
展开
-
Java中利用 stream 实现 mysql 的 groupBy sum Case when 语法
本文通过一次实际项目案例,记录了使用 stream的多字段groupBy 来实现类似 mysql 中 sum、case when groupBy分组等语法。如果有什么疑问或者建议,欢迎评论区留下你的独到见解~原创 2022-12-08 17:28:28 · 2784 阅读 · 0 评论 -
文件上传,你还存储在应用服务器?
嗨,大家好,我是希留,一个被迫致力于全栈开发的老菜鸟。一般项目开发中都会有文件、图片、视频等文件上传并能够访问的场景。要实现这样的场景,要么把文件存储在应用服务器上,要么搭建文件服务来存储。但是这两种方式也有不少的缺点,增加运维的成本。因此,追求用户体验的项目可能会考虑使用第三方的云服务来实现存储,目前市场上主流的厂商有:七牛云、阿里云OSS、腾讯云COS等,具体采用哪种存储方案还需结合项目的规模、成本等因素,综合考量。因为我的是腾讯云的服务器,所以就直接开通了腾讯云的COS对象存储。原创 2022-11-02 11:40:28 · 335 阅读 · 0 评论 -
登录校验之滑块验证码完整实现(vue + springboot)
嗨,大家好,我是希留。验证码一直是各类网站登录和注册的一种校验方式,是用来防止有人恶意使用脚本批量进行操作从而设置的一种安全保护方式。随着近几年技术的发展,人们对于系统安全性和用户体验的要求越来越高,大多数网站系统都逐渐采用行为验证码来代替传统的图片验证码。今天这篇文章就来记录一下,我是如何实现从前端、到后端校验的整个流程的。原创 2022-09-08 09:35:15 · 17126 阅读 · 53 评论 -
小型项目如何使用异步任务管理器实现不同业务间的解耦
大家好,我是希留。在有些业务场景中,系统对于响应时间有一定的要求,而一个方法里面同步执行的业务逻辑太多势必会影响响应速度,带来不好的用户体验。比如登录时记录登录用户的访问记录、注册时发送邮件、短信通知等等场景,不需要等待处理结果之后再进行下一步操作,这时候就可以使用异步线程进行处理,这样主线程不会因为这些耗时的操作而阻塞,保证主线程的流程可以正常进行。异步任务可以通过多线程也可以通过消息队列来实现,目的都是为了实现不同业务之间的解耦,提高业务系统的响应速度。...原创 2022-08-01 16:44:39 · 379 阅读 · 0 评论 -
SpringBoot项目如何优雅的实现操作日志记录
在实际开发当中,对于某些关键业务,我们通常需要记录该操作的内容,一个操作调一次记录方法,每次还得去收集参数等等,会造成大量代码重复。我们希望代码中只有业务相关的操作,在项目中使用注解来完成此项功能。通常就是使用Spring中的AOP特性来实现的,那么在SpringBoot项目当中应该如何来实现呢?...原创 2022-07-29 15:14:40 · 3529 阅读 · 0 评论 -
消息队列RocketMQ入门实践-消息重试策略(六)
系列文章目录消息队列RocketMQ入门实践(一)消息队列RocketMQ入门实践(二)消息队列RocketMQ入门实践–关键特性(三)消息队列RocketMQ入门实践–关键特性(四)消息队列RocketMQ入门实践–消息存储(五)文章目录系列文章目录前言一、producer端重试二、consumer端重试1.exception2.timeout三、重复消息的解决方案总结前言在消息的发送和消费过程中,都有可能出现错误,如网络异常等,出现了错误就需要进行错误重试,这种消息的重试需要分2种,原创 2022-05-07 16:59:47 · 575 阅读 · 0 评论 -
消息队列RocketMQ入门实践--消息存储(五)
系列文章目录消息队列RocketMQ入门实践(一)消息队列RocketMQ入门实践(二)消息队列RocketMQ入门实践–关键特性(三)消息队列RocketMQ入门实践–关键特性(四)文章目录系列文章目录前言一、消息存储整体架构二、刷盘策略1.同步刷盘2.异步刷盘三、刷盘原理2.读入数据总结前言嗨,大家好,我是希留。消息存储是RocketMQ中最为复杂和最为重要的一部分,本文将从消息存储整体架构以及刷盘策略来聊一聊RocketMQ是如何进行消息存储的。一、消息存储整体架构引用官方的原创 2022-04-24 18:10:21 · 884 阅读 · 0 评论 -
消息队列RocketMQ入门实践--关键特性(四)
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言嗨,大家好,我是希留。上篇文章介绍了RocketMQ的关键特性之顺序消息、事务消息。这两个特性算是producer生产者端的特性。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么原创 2022-04-21 22:46:21 · 384 阅读 · 0 评论 -
消息队列RocketMQ入门实践--关键特性(三)
系列文章目录消息队列RocketMQ入门实践(一)消息队列RocketMQ入门实践(二)文章目录系列文章目录前言一、顺序消息1.1 顺序消息的原理1.2 代码示例1.3 顺序消息缺陷二、事务消息2.1 回顾什么是事务2.2 分布式事务2.3 实现原理2.4 执行流程2.读入数据总结前言嗨,大家好,我是希留。经过前面两篇文章的学习,相信大家对RocketMQ已经有了一个基本的了解了,这篇文章就来说一说RocketMQ的几个关键特性,废话不多说,咱开始吧。一、顺序消息在有的业务中,cons原创 2022-03-23 16:32:35 · 2607 阅读 · 2 评论 -
stream去重相同属性对象
stream去重原创 2022-03-08 10:34:33 · 4271 阅读 · 1 评论 -
消息队列RocketMQ入门实践(一)
文章目录前言1、RocketMQ介绍1.1 RocketMQ简介1.2 RocketMQ的历史发展1.3 RocketMQ的核心概念说明ProducerConsumerNameServerBroker1.4 RocketMQ的消息领域模型MessageTopicTagGroupQueueMessage QueueOffset2、部署安装2.1 安装包方式安装2.2 docker方式安装2.2.1 拉取镜像2.2.2 创建nameserver容器2.2.3 创建broker容器2.2.4 启动容器2.2.5.原创 2022-03-01 09:45:35 · 3444 阅读 · 0 评论 -
Spring注解中@Configuration、@Component、@Bean傻傻分不清
文章目录前言一、将一个类声明为 Spring 的 bean 的注解有哪些?二、@Component 和 @Configuration 注解的区别是什么?三、@Autowire 和 @Resource 注解的区别是什么?四、@Qualifier 和 @Primary 注解的区别是什么?总结前言嗨,大家好,我是希留。近日,公司里一位实习的同事在看项目代码时发现有的类使用的是@Configuration注解,有的类使用的是@Component注解,有的地方使用的是@Bean注解,有的又是使用的@Auto.原创 2022-02-23 14:42:24 · 3332 阅读 · 2 评论 -
还在一言不合就if else或是switch?试试策略模式吧
文章目录前言一、策略模式的定义?二、使用案例1.业务背景2.使用策略模式2.1 定义一个策略接口2.2 定义各种策略2.3 使用策略3.使用对比三、策略模式的优缺点总结前言在业务开发过程中,免不了使用if、else、switch来处理不同的业务逻辑。而一但业务比较复杂,代码里面就充斥了大量的逻辑分支判断,导致代码臃肿不堪,及不好维护。所以,今天这篇文章我们就来聊一聊,如何使用策略模式,让你的代码变得更加的优雅。一、策略模式的定义?定义一系列算法,封装每个算法,并使他们可以互换,不同的策略可以.原创 2021-09-23 09:18:03 · 179 阅读 · 0 评论 -
整合SpringSecurity和JWT实现登录认证和授权遇到的问题
1、Postman工具如何添加token请求头?解决方式:在Headers里面添加请求参数,主要要把前面的√选上2、若knife4j 在线文档调试没有请求头部设置?解决方式:在 文档管理-》个性化设置 开启动态请求参数,刷新即可3、Spring security 配置的AccessDeniedHandler无效?问题说明:当验证权限失败时抛出AccessDeniedException异常 不允许访问,而我明明配置了SimpleAccessDeniedHandler 来处理异常并返回提示信息。原创 2021-09-07 17:38:56 · 616 阅读 · 0 评论 -
整合SpringSecurity和JWT实现登录认证和授权
文章目录前言一、SpringSecurity是什么?二、JWT是什么?1. JWT的组成2. JWT实现认证和授权的原理三、整合步骤1. 引入相关依赖2. yml配置中加入jwt配置信息3. 添加JWT token的工具类4. 添加SpringSecurity的配置类5. 添加自定义结果处理类5.1 添加CustomAccessDeniedHandler5.2 添加CustomAuthenticationEntryPoint6. 添加JwtUser类7. 添加过滤器JwtAuthenticationTok原创 2021-09-07 17:37:49 · 4196 阅读 · 2 评论 -
配置Mybatis-plus分页插件,返回统一结果集
文章目录前言一、MyBatisPlusConfig中配置分页插件1. 分页实现的原理二、统一结果集1. 创建返回码定义类2. 创建结果集类三、编写分页接口1. 先编写查询类2. service层3. controller层4. 接口测试总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、MyBatisPlusConfig中配.原创 2021-09-02 14:19:04 · 1501 阅读 · 0 评论 -
整合Swagger生成api接口文档
文章目录前言一、Swagger介绍二、配置Swagger1. 添加依赖2. 创建Swagger2配置文件3. 重启服务查看接口4. 使用Knife4j4.1 添加依赖4.2 修改配置类4.3 重启服务查看接口5. 定义接口说明和参数说明总结前言前后端分离开发模式中,api文档是最好的沟通方式。今天就来说一说如何整合Swagger生成一套漂亮、美观、实用的接口文档。源码传送门:https://gitee.com/huoqstudy/xiliu-admin.git一、Swagger介绍原创 2021-09-01 17:54:35 · 3153 阅读 · 0 评论 -
Mybatis-plus配置自动填充和逻辑删除
文章目录前言一、配置自动填充和逻辑删除1. 实体类增加注解2. 创建元对象处理器接口3. 测试二、配置热部署1. 引入依赖2. 编译文件/项目总结前言数据库表设计的时候,一般都会设计一些所以表都需要的常见字段,例如:创建时间、修改时间、逻辑删除等字段。如果生成数据的时候需要每个实体都去set相关值,就太繁琐了。而Mybatis-plus正好提供了这种自动填充数据的功能。今天这篇文章就来讲一讲如何配置自动填充的相关功能!一、配置自动填充和逻辑删除1. 实体类增加注解查看自动生成的代原创 2021-09-01 15:38:59 · 1038 阅读 · 1 评论 -
【SpringBoot学习系列】一、初识SpringBoot
文章目录前言一、SpringBoot简介二、SpringBoot特性三、SpringBoot项目创建1.环境准备2.创建方式一:使用Spring Initializr 的 Web页面创建项目3.创建方式二:使用开发工具直接创建项目四、SpringBoot项目目录结构五、SpringBoot项目启动1.启动类启动2.Maven 插件启动3.java -jar 命令启动六.访问项目七.彩蛋总结前言作为Java开发,时下最流行的技术就是SpringBoot了,它以及其简便的方式,让你能够快速的进行应用开发原创 2021-08-06 09:41:39 · 373 阅读 · 1 评论 -
吐血整理的Java中的POJO名词解释,确定不看下吗?
文章目录前言一、VO是什么?二、DTO是什么?1.VO和DTO的区别2.VO和DTO的应用三、BO是什么?1.BO和DTO的区别四、PO是什么?五、DO是什么?六、DAO是什么?七、POJO是什么?总结前言Java是一门面向对象的语言,里面有众多的名词对象,比如分层领域模型里面的PO,VO,DAO…,这些名词都是什么意思呢?今天,咱们就来聊一聊。解释各种名词之前,先放一张图,看完图估计就已经有了一个直观的感受了。用户发出请求(可能是填写表单),表单的数据在展示层被匹配为VO。展示层把VO转换原创 2021-07-31 16:32:16 · 613 阅读 · 0 评论 -
Java8新特性Stream的常见用法
目录Stream简介Stream的使用创建流Stream简介Stream流是java 8 中新引入的特性,用来处理集合中的数据,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。Stream不是数据结构,也不保存数据,它是有关算法和计算的,更像一个高级版本的迭代器Iterator。原始版本的 Iterator,只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,只要给出需要对其包含的元素执行什么操作,比如原创 2021-07-29 09:38:31 · 605 阅读 · 0 评论 -
idea合并分支代码怎么操作呢?
前言如果团队是使用git作为代码版本管理工具,那么在开发过程中免不了会有主干和分支分开开发的情况,这就会涉及到代码合并的问题。需要把master合并到dev,或者dev合并到master,本篇文章就来聊一聊通过idea工具如何合并git上的不同分支。一、场景1.如何把master代码合并到dev分支上?首先,切换本地当前分支为master,如果已经是在master上就不用切换。更新最新的master上的代码,确保代码是最新的。然后再切换会dev分支上,在Local Branches中选.原创 2021-07-12 15:51:03 · 8921 阅读 · 1 评论 -
Java面试库【持续更新中】
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例原创 2021-05-28 11:18:19 · 213 阅读 · 3 评论 -
SpringBoot整合WebSocket,实现即时通讯
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-05-27 23:36:31 · 1586 阅读 · 6 评论 -
超详细的基于springBoot实现邮件发送功能
文章目录前言一、实现效果图二、常用的邮件协议简介三、获取邮箱授权码四、代码实现1.引入依赖2.编码3.配置yml总结前言在项目的开发工程中,经常有需要发送邮件的功能场景,比如,通过邮件注册、认证、找回密码、系统报警通知、报表信息等。那遇到这种功能的时候应该怎么去做呢?本篇文章带大家通过SpringBoot快速实现一个发送邮件的功能。一、实现效果图无图无真相,话不多说,先上效果图。项目源码:SpringBoot实现邮件发送功能二、常用的邮件协议简介 SMTP协议SMTP(Sim原创 2021-04-30 15:53:43 · 965 阅读 · 1 评论