
java 后端高能时刻
文章平均质量分 75
收录 java 后端日常开发中的优秀设计、相关技术及经验总结。
红衣女妖仙
先知而后行 行必有所为
展开
-
apache poi excel 导入导出
水一篇 凑个数(啊 水文章好羞耻啊!请原谅我私密马赛!)apache poi excel 导入导出,支持多 sheet 页导出、单元格自动合并、自定义导出和导入等。全网最强,没有之一!(这一键提取也太智能了吧,真就提啊)原创 2024-06-17 15:29:15 · 520 阅读 · 0 评论 -
spring boot 自定义 starter
@EnableAutoConfiguration:通过该方法来加载项目中的 starter 依赖中配置的 bean,然后将这些 bean 加载到 spring 容器中,即自动装配。具体原理是:@EnableAutoConfiguration 注解存在于 @SpringBootApplication 注解,@EnableAutoConfiguration 注解中 import 了一个 AutoConfigurationImportSelector 加载器,该加载器回去项目所依赖的 jar 包下的 META-I原创 2022-12-01 16:18:17 · 851 阅读 · 0 评论 -
single sign on 与 cas
cookie与session与token、普通登录、单点登录、三种常见实现方式、cas-server、cas-client 注:oauth2 是保护服务端资源,即受 oauth2 保护的资源能不能被客户端访问;cas 是保护用户信息,即该用户有没有权限访问 cas 客户端的资源。oauth2 已经停止维护,被 spring authorization server 代替。原创 2022-11-27 16:44:28 · 696 阅读 · 4 评论 -
spring security 使用示例
用户名密码认证、短信验证码认证、踢人下线、 AuthorizationFilter 授权、FilterSecurityInterceptor url / expression 授权、登出、分布式配置。2、SecurityConfig 先添加一个 SecurityConfig 配置类,作为整个 spring security 的核心配置,后续的认证、授权等功能都将在整个配置类中完成。3、用户名密码认证 用户名密码认证主要是自定义实现 UserDetails、UserDetailsService、A原创 2022-08-19 23:05:05 · 2241 阅读 · 2 评论 -
spring integration sftp
spring integration sftpspring integration sftp 操作 sftpspring integrationspring integration 是 spring 家族中的一个企业系统整合框架。其集成了 spring 中的轻量级消息传递,并支持通过声明性适配器与外部系统集成。其主要目标是为企业集成提供一个简单的模型,同时保持关注点的分离。其特性包括:多企业集成模式的实现端点通道(点对点和发布/订阅)聚合器过滤器转换器控制总线…与外部系统集成原创 2021-11-26 23:43:40 · 1475 阅读 · 3 评论 -
mongo cursor 游标超时
mongo cursor 游标超时mongo cursor 游标超时问题场景描述使用 java 程序通过定时任务处理 mongo 中的数据时(mongo 集合中共有近一亿个文档,每次只处理其中的小二十万),出现了以下错误:org.springframework.data.mongodb.UncategorizedMongoDbException: Query failed with error code 43 and error message 'Cursor not found, cursor原创 2021-11-11 15:36:37 · 3770 阅读 · 0 评论 -
springboot + shiro 权限管理
springboot shiro 权限管理版本 :springboot 2.3.4-RELEASEshiro 1.6.0注: 此版本基于 ssm 与 shiro 下的权限管理_XGLLHZ的博客-优快云博客 文章(有些小问题,目前未修改),关联阅读便于理解。核心组件 :Subject 一般指用户SecurityManager 安全管理器,管理所有 subjectSessionManager 会话管理器,管理用户登录后的 sessionAuthentication原创 2021-07-28 16:38:16 · 346 阅读 · 0 评论 -
springboot + quartz 分布式定时任务
springboot quartz 分布式定时任务即使一手托帝城 背负天渊 我安澜也一样无敌于世间俞陀救我!!!quartz 简介及核心组件 :quartz 的调度策略是以数据库资源为中介的一种异步策略,各个节点的调度器都遵守基于数据库锁的操作规则从而保证了任务执行的唯一性具体体现在 quartz 中的 quartz_locks 表,quartz 采用了悲观锁的方式对 triggers 行行加锁,从而保证了任务同步的正确性。当某个节点的某个线程在任务执行时间点获取到该 triggers 的锁原创 2021-07-12 21:34:02 · 1057 阅读 · 1 评论 -
springboot 与线程池和定时任务
springboot 与线程池和定时任务前言 : 最近遇到的定时任务处理文件的需求比较多,所以简单记录下。版本 :jdk 1.8springboot 2.3.4定时任务 : springboot 中的定时任务目前有三种实现方式:基于注解 @Scheduled基于接口 SchedulingCongfigurer基于注解实现多线程定时任务基于注解 :// 基于注解是最简单的实现方式,可以通过 cron 表达式来设置其执行时间,也可通过 fixedRate 来设置其执行原创 2021-05-24 20:53:35 · 686 阅读 · 0 评论 -
springboot + mongodb 聚合查询
springboot mongodb 聚合查询 啊这,这次没有前言。版本 :springboot 2.3.4mongodb-driver 4.0.5maven 依赖 :<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId></depe原创 2021-04-30 17:04:22 · 2102 阅读 · 1 评论 -
springboot + mongodb 切换数据库
springboot mongodb 切换数据库 spring boot + mongodb 切换数据库,注意这里是切换数据库而非多数据源。适用场景是在业务场景中根据参数切换 mongo 数据库名。版本 :springboot 2.3.4mongodb-driver 4.0.5maven 依赖 :<dependency> <groupId>org.springframework.boot</groupId> <artifactId原创 2021-04-28 20:27:17 · 1628 阅读 · 1 评论 -
BlockingQueue 分批处理数据
BlockingQueue 分批处理数据BlockingQueue 简介 : BlockingQueue 是 jdk-1.5 中新增的并发包(concurrent)中的阻塞队列接口,主要用来实现高并发场景下的数据传输问题。其常见实现类主要有: ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue。队列定义时可设置队列长度,默认长度为 Integer.MAX_VALUE。// 其核心方法如下public interface Bl原创 2021-03-10 20:01:14 · 1055 阅读 · 0 评论 -
RateLimiter API 限流
RateLimiter API限流注:并没有做深入研究,只是简单记录 RateLimiter 的使用方法。RateLimiter 与 Semphore :RateLimiter 是 google 的 guava 工具包中提供的限流工具类,而 Semphore 是 jdk 中提供的信号量类。两者都可做限流。RateLimiter 是基于速率限流,常见算法有漏桶算法和令牌桶算法;Sempgore 是基于并发量限流(也就是数量),它是通过线程个数去限流的。RateLimiter 的原理是系统以一个恒原创 2021-02-24 20:34:12 · 792 阅读 · 0 评论 -
ssm 与 shiro 下的权限管理
ssm 与 shiro 下的权限管理环境: jdk : 1.8 spring : 5.2.10 mybatis : 3.5.4 shiro : 1.6.0关于权限管理: 关于权限管理,个人理解为分为两种,即数据级别和访问级别。实现方式一般是权限框架、加密等技术。 1. 数据级别: 即用户是否可以请求某个接口的数据(如 /admin/user/list)。这个可以用非对称加密来解决,即服务器生成公私钥对,将私钥保留,公钥发放给接口调用者,请求时携带并在服务器端验证是否合法。 2原创 2020-11-14 12:46:00 · 515 阅读 · 1 评论 -
多线程
多线程参考与这位大佬多线程与并发的关系:并发是程序的一种允运行状态,多线程是解决这种状态的一种手段方法。并发编程三要素(即并发编程常见的是三个问题):原子性: 原子性指的是一个或者多个操作要么执行成功,要么不执行可见性: 可见性指的是当多个线程共享一个变量时,当其中一个线程修改变量后,其它线程可立刻看到修改结果有序性: 有序性指的是程序执行的顺序按照代码的顺序执行原子性问题:经典例子: 银行转账问题。A 账户向 B 账户转账 1000 元。包括两个步骤,一 A 账户减去 1000 元,原创 2020-09-03 23:39:37 · 206 阅读 · 0 评论 -
spring 事务
spring 事务参考与这位同志定义:事务是程序中一系列严密的逻辑操作,可以看做完成某件事情的步骤,这些步骤必须全部成功完成才能完成事务,否则算是执行失败。比如玩英雄联盟,可以看做是上号、寻找游戏、选择英雄等一系列操作(你玩个锤子的游戏,滚去敲代码)。事务配置方式:spring 支持两种事务配置方式,即编程式事务管理和声明式事务管理。编程式事务管理: 编程式事务管理是侵入性事务管理,使用 TransactionTemplate 或 PlatformTransactionManager 来声明事原创 2020-09-02 22:09:04 · 191 阅读 · 0 评论 -
数据库事务
数据库事务事务的四个特性:原子性–原子性指的是一个事务中的所有操作要么全部成功执行,要么不执行。当其中一个操作发生异常时,事务回滚。一致性–一致性指的是当一个事务完成后,使数据从一个状态转换到另一个状态,但对于数据的完整性保持一致。隔离性–隔离性指的是当多个用户并发访问数据库时,数据库会给每个用户开启事务,以事务为单位访问,事务之间相互不影响。持久性–持久性指的是事务执行成功后,对数据的修改是持久的。并发事务所造成的问题:丢失更新:第一类丢失–两个事务同时更新一行数据时,当其中一个事原创 2020-09-02 14:10:04 · 183 阅读 · 0 评论 -
数据库优化(sql 优化)
数据库优化创建索引:创建索引可以给检索带来性能上的很大提升(当发现检索慢时首先想到的应该是建立索引)首先应该考虑在 where、order by 所涉及到的列上建立索引在经常需要检索的字段上建立索引,比如用户名、商品名等一个表的索引最好不要超过 6 个,索引固然可以提高检索效率,但同时也降低了 insert 和 update 的效率,因为 insert 或 update 时可能会重建索引对于建立了索引的表要尽可能的避免全表扫描,否则会使索引失效sql 优化:应尽量避免在 where 子原创 2020-08-23 17:37:46 · 190 阅读 · 0 评论 -
RabbitMQ、RocketMQ、Kafka、ActiveMQ
RabbitMQ、RocketMQ、Kafka、ActiveMQ注: 由于本猿键盘Q键坏了,时好时坏,所以下文中的 rabbitmq == rabbitm消息中间件:消息中间件指的是利用高效可靠的消息传递机制进行跨进程、与平台无关的数据交流,可以在分布式环境下扩展进程的通信目前主流的消息中间件有 ActiveMQ、Kafka、RabbitMQ、RocketMQ等MQ使用场景:mq使用场景很多,主要有三个: 解耦、异步、削峰解耦: 解耦主要指的是 A 系统需要与 B C D 系统实现数据交互(原创 2020-08-22 00:49:09 · 327 阅读 · 0 评论 -
MongDB 与 Redis 的区别
MongDB 与 Redis 的区别mongdb 与 redis 都是 Nosql 数据库,mongdb 适合做集群,redis 适合做缓存1、内存机制redis: 数据全部存储在内存中,定期备份到磁盘,当内存不足时可指定 LRU 算法删除mongdb: 数据存储在内存中,由 linux 系统的 mmap 实现,当内存不足时只将热点数据放入内存,其它数据放入磁盘2、数据结构redis: 支持丰富的数据结构,如string、hashes、list、set、sortedsetmongdb: 支持的原创 2020-08-20 17:24:22 · 826 阅读 · 0 评论 -
Redis简介
Redis参考与这位大佬定义:redis 是一个用 C/C++ 开发的开源、高性能键值对的 Nosql 内存数据库。可用作数据库、缓存、消息中间件等特点:性能优秀,数据在内存中读写速度非常快,支持并发 10wQPS单线程单进程,是线程安全的,采用 IO 多路复用机制支持多种数据类型: 字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)支持数据持久化,可将内存中数据存储到磁盘中,重启时加载主从复制、哨兵、高可用可用作分原创 2020-08-20 17:23:07 · 185 阅读 · 0 评论 -
spring 注入方式
spring 注入方式三种注入方式: 构造方法、基于注解、setter两种: xml配置申明注册(构造方法、setter)、注解申明注册(基于注解)前提:bean一个属性autowire(自动装配),autowire 的三个属性值: constructor byName byTypeconstructor: 通过构造方法进行自动注入,spring 匹配与构造方法参数一致的 bean 注入byName: 匹配与 set 方法后半截名称相同的 bean 进行注入byType: 查找所有 set 方原创 2020-08-20 17:21:53 · 566 阅读 · 0 评论 -
设计模式之代理模式
代理模式定义: 调用者使用代理类来调用目的接口的对象使用场景: 当调用者不想直接调用目的接口对象或者调用者调用目的接口对象存在困难时实现一(静态代理):创建代理类来实现优点: 任何实现目的接口的对象都可以通过代理类来访问,增加了代码的通用性缺点: 当目的接口发生更改时,代理类 也得随之改变;当代理对象非常多时就会显得代理对象特别臃肿目的接口:public interface Subject { void visit();}目的接口实现类(代理对象):public clas原创 2020-08-20 17:20:00 · 128 阅读 · 0 评论 -
设计模式之单例模式
单例模式定义: 确保应用中应用单例模式的类只能有一个实例实现:构造方法私有化,使其不能在外部通过使用 new 关键字来实例化对象在类产生唯一一个 private static 的实例化对象定义一个静态方法返回该对象具体实现一: 饿汉模式(线程安全) 在类加载时就创建对象优点: 实现简单,线程安全缺点: 在类加载时就实例化了对象,使此对象一直存在,当类被卸载时才会释放内存,故在一定情况下消耗内存public class TestOne {原创 2020-08-20 17:18:28 · 150 阅读 · 0 评论 -
SpringBoot + Websocket + Vue 构建聊天室
关于 WebSocket:1、WebSocket 是 html5 提供的通讯协议2、特点是建立在单个 tcp 连接上的全双工协议3、浏览器向服务器发起 WebSocket 连接请求,当成功获取到连接后,就可以实现浏览器和服务器之间的数据传输原创 2020-05-21 11:13:25 · 866 阅读 · 4 评论 -
springboot 中的 文件、短信、邮件、token 工具类
1、文件工具类 主要功能为文件上传,结合阿里云 OSS 对象存储。上传文件类型包括文档、音频、视频、图片等,可自定义文件夹,文件未加密。自动生成文件名,文件上传成功后返回原文件名、新文件名、文件大小、文件类型、文件链接等信息。 注:文件链接存在有效期,可自行设定。 添加依赖: <dependency> ...原创 2020-02-09 14:33:22 · 675 阅读 · 0 评论 -
spring boot 日志记录-注解式
2020年,悲伤!那天,我突然好想打球。前言 上篇文章主要是针对性的日志记录,这篇文章为切面式的日志记录。总体结构为通过自定义注解的方式,通过 aop 切点拦截来实现日志记录。 项目源码:https://github.com/XGLLHZ/springboot-frame.git正文 1、首先我们需要一个日志实体类。像主键、操...原创 2020-02-07 21:13:01 · 754 阅读 · 1 评论 -
spring boot 日志记录
前言: 关于项目生产中产生的日志有很多种处理方式,有些小伙伴习惯放在数据库中,有些小伙伴习惯放在日志文件中等等,笔者觉得日志应该分类处理,比如像 error 这种日志应该放在数据库中便于查看,而普通日志 info 这些应该在日志文件中记录(当然这只是笔者个人的处理方式而已 0_0)。环境: spring boot:2.2.1 jdk:1.8...原创 2019-12-23 22:28:03 · 491 阅读 · 1 评论 -
docker 集群 springboot 项目
前言关于集群的概念以及集群很分布式的关系或者区别,请各位自行百度,道理大家都懂,只要能理解、知道是怎么回事就行。注:杨千嬅-2019世界巡回演唱会-天津站:2019-12-29,天津体育馆(舒服哦!)准备1、准备两个 springboot 项目,端口自定义,笔者这里都是 80812、这两个 springboot 项目添加两个测试接口,接口都为 /test/hello,且接口返回...原创 2019-11-26 12:13:59 · 303 阅读 · 1 评论 -
spring boot 整合 redis
前言:给同学们推荐第二首歌 《你曾是少年》S.H.E首先,我们需要了解一下 redis 是什么,有什么用处,在哪里用redis:redis 是一种基于内存的非关系型的 key value 的数据库,也就是 NoSQL技术。在 NoSQL 中使用最广泛的是 redis 和 mongoDB,redis 支持每秒几十万的读写操作,性能远超数据库库,且还支持集群、分布式等,还支持一定的事务能力,保...原创 2019-11-08 11:54:43 · 217 阅读 · 1 评论 -
springboot 多模块项目配置
今天早上在优快云首页看到了杨秀璋老师的《我与优快云这十年》,感触很深,之后又去看了他之前的《向死而生,为爱而活》,好美!前言 之前实习时接触到的项目以及好多网上的开源项目都是 springboot 多模块项目,所以就想试着自己搭建一个,学习一波。看了很多关于 springboot 多模块项目的博文,感觉都不是自己想要的样子,我觉得着这种只按照逻辑层(dao、...原创 2019-10-22 12:34:50 · 386 阅读 · 1 评论 -
spring boot 整合 spring security
时隔多日,再次操刀,记录spring security学习之旅。在此之前,推荐几部小说:完美世界、遮天、圣墟、剑来。再推荐一首歌:少女的祈祷--杨千嬅前言:关于spring security的基本原理、特性、与shiro的优缺点各位同学自行百度(笔者属实太懒!)。还有,demo所用技术为 spring boot + spring security + mybatis-plus。de...原创 2019-09-20 15:36:24 · 540 阅读 · 6 评论 -
Java、JavaWeb、SpringBoot小知识
1、关于微服务: 微服务架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说 API应该是重点。微服务可以在“自己的程序”中运行,并通过“轻量级设备与 HTTP 型 API 进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个 API)区分开来。在服务公开...原创 2019-09-04 10:50:44 · 690 阅读 · 1 评论 -
IDEA安装maven并创建maven项目
开发工具:IDEA-2018Tomcat:8.5jdk:1.8maven:3.5.41、首先去官网下载maven下载地址:https://maven.apache.org/download.cgi2、配置环境bian变量:名称为MAVEN_HOME,值为安装路径3、在Path环境变量的变量值末尾添加%MAVEN_HOME%\bin4、在cmd输入mvn –ver...原创 2018-09-07 19:54:51 · 528 阅读 · 1 评论