
后端
文章平均质量分 65
冰红茶不会渴
持续学习总结中......
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
记录一次LiteFlow使用实战及原理分析
LiteFlow,动态编排创建组件及流程原创 2023-09-13 17:23:52 · 8600 阅读 · 0 评论 -
ArrayList、LinkedList、Collections.singletonList、Arrays.asList与ImmutableList.of
List ArrayList LinkedList 快速构造原创 2023-09-01 09:04:53 · 1380 阅读 · 0 评论 -
@Autowired与@Resource原理知识点详解
@Autowired与@Resource原理知识点使用原创 2023-04-28 15:31:07 · 1907 阅读 · 0 评论 -
Spring Aop原理全面详解汇总
springaop详情知识点原创 2023-04-22 11:35:19 · 2682 阅读 · 2 评论 -
总结下Spring boot异步执行逻辑的几种方式
Future及FutureTask就不说了,直接说完美形态:CompletableFuture,JDK8中新增加了一个包含50个方法左右的类CompletableFuture,提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,提供了函数式编程的能力,可以通过回调的方式处理计算结果,并且提供了转换和组合CompletableFuture的方法。优势是:(不用记知道即可)可以在代码里面显式的创建线程,比如第一种方式,但是如果线程多的话会消耗系统资源,效率。低下并且还会降低系统稳定性。原创 2023-04-18 16:54:52 · 1936 阅读 · 0 评论 -
spring boot启动自动执行代码方式汇总(Java spring bean)
spring bean原创 2022-11-12 11:32:49 · 3681 阅读 · 0 评论 -
Java实现excel动态表头及动态sheet
Java 动态表头 多sheet原创 2022-06-11 10:37:14 · 6262 阅读 · 3 评论 -
记录大数据量写入Hive慢的解决过程
最近在做一个大数据类项目,用到了Hadoop Hive SparkStreaming kafka等技术,整体面很广,本片仅介绍在开发过程中遇到的大数据量写入遇到的写入特别慢的解决过程。说明: 我之前没接触过Hive相关,所以可能有些地方不是很准确,或者是还有其它解决方案,欢迎大家指出以备完善。场景: 现在有个场景:50W数据写入hive库,会使用哪种方案。我之前没接触过Hive相关知识,最开始的方法是将数据转换为SQL,使用jdbc直接insert到Hive里面。我做了个测试一晚上跑了不到30W,速度太原创 2022-05-17 11:17:30 · 5331 阅读 · 0 评论 -
vue使用socketIoClient连接socketIo服务端反复重连问题
最近在项目中使用到了socketIo,spring boot集成socketIo作为服务端,需要前端页面vue使用socketIoClient连接服务端并监听消息,结果在连接socketIo服务端的时候出现了反复连接的情况,当时这个问题卡住了一天时间,网上面关于这个的问题特别少,就问题描述及解决过程记录如下,以供参考。简单介绍spring boot后端集成socketIo步骤:添加依赖:<dependency> <groupId>com.corundumstudio.so原创 2021-01-28 14:23:34 · 13025 阅读 · 12 评论 -
fastJson map的value为NULL的丢失缺失问题
1.现象:fastJson的JSON.toJSONString中序列化map中的空字符串会出现空对象问题可以看到key为def的丢掉了。2.解决:然后就解决了。3.如果是json转object的话,使用:KafkaMessage message = JSON.parseObject(kafkaMessage, new TypeReference<KafkaMessage>(){});...原创 2022-03-31 15:36:42 · 2390 阅读 · 4 评论 -
Linux 环境搭建 jdk Redis Nginx Minio Oracle12C Docker等安装
之前在北京工作的时候,技术开发与运维的工作是分开的,有专门的DBA、搞网络的、做服务器的等,而现在回到老家这边工作,没有单独专门做运维的,开发运维都是开发来做,其实我所说的运维也就限于部署层面的运维,真正的运维工作是很复杂繁琐的。话不多说,操作系统Centos7,spring boot jar包单体应用部署(jdk1.8),MInio文件存储,Redis5.0,Nginx1.20、Oracle12C(Linux部署Oracle真的有些恶心,如果可以建议将Oracle数据库安装在Windows上面,本文介绍原创 2021-12-27 11:24:17 · 2506 阅读 · 2 评论 -
记录一次通过Navicat迁移MySQL到Oracle数据库过程中的问题
工作中遇到的很多问题,记录下来以后再次遇到不至于再耗费很多事件在百度上面,也可以大家一起分享,这也是我写下来的原因之一。虽然他人遇到的问题可能与我遇到的问题并不完全相同,但是有一部分相同并能解决这一部分问题就也足够了。最近项目都用到了ArcGIS,而ArcGIS只能使用Oracle数据库,数据库最开始选用的是MySQL,为了部署统一数据库,所以需要从MySQL迁移到Oracle上面,过程中遇到了一些问题,记录如下:1. Oracle数据库表空间 用户创建授权创建表空间:create tablespa原创 2021-12-16 11:17:17 · 3406 阅读 · 2 评论 -
阿里云实现人脸登录(人脸库 OSS)
我自认为不想做curd程序员,但是免不了的会对数据基本原子操作进行处理,项目开发过程中的增删改查少不了的,但是又不甘心于curd下去,所以想要在掌握现有知识的基础上,甚至逼迫自己去学习一些东西,去接触新的技术,足够的深度做不到,最起码广度要有所保证,每天进步一点点。开篇写的算是自己的程序员生涯的一丢丢想法,言归正传,本篇介绍通过阿里云实现人脸登录功能(百度云原理类似,不过百度云的人脸不是免费的了,so果断阿里云了)。说实话本篇的说明思路我自己感觉有点乱,只好边写便梳理。。前提:系统中已经开户成功,us原创 2021-11-26 17:33:26 · 2944 阅读 · 1 评论 -
windows上部署后台运行jar包
看标题是很简单的一个jar包部署,但是对我而说因为一直是在Centos上面部署应用,Windows用的很少,所以很多Windows操作不清楚,所以想本篇记录一下,做一下相关知识储备(这么简单,还储备呢…惭愧)windows部署jar包,并使其在后台运行,简便的方法有批处理,我之前看到批处理就不知道是咋回事儿了,百度了下,放到本篇:批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。批处理是一种简单的程序,可以用 if 和 goto原创 2021-11-26 14:56:20 · 9487 阅读 · 1 评论 -
@Async不生效原因
开发过程中使用了@Async注解,但是没有生效,查找定位了好久,现将该注解失效的场景罗列总结下,以后有类似问题可以从下面场景解决,不排除有其他场景会造成该注解失效,欢迎补充。@Async注解使用有几个限制:两个方法都在同一个类里面,只是一个方法调用另一个异步方法,不生效。解决方法:拆分两个方法,将异步方法单独放在一个类里面,然后再去调用就解决了。有接口方法的实现类里的注解不生效。例子:@Controller类:DemoController接口:DemoService接口的实现@Ser原创 2021-11-26 11:23:55 · 22432 阅读 · 9 评论 -
confluence修改数据源
我是通过docker安装的confluence,修改过程基本一致,不过docker安装要先进入容器内。一、找到confluence的安装目录,我的安装目录在 /opt/atlassian/;二、由于confluence把tomcat给改造了,所以confluence的应用并没有在workapps下,而是在confluence下面;我们的工程的配置文件在classes文件夹,于是我找到了/opt/atlassian/confluence/confluence/WEB-INF/classes这个目原创 2021-09-02 15:17:08 · 835 阅读 · 0 评论 -
Java Web中对过滤器、拦截器、AOP的理解
java web三大器:过滤器、拦截器、监听器 (spring框架)spring、springMVC与springBoot的关系详见:https://www.cnblogs.com/liyuanhong/articles/14634620.html一、启动顺序监听器—>过滤器—>拦截器案例理解:接到上级命令,要求对电话进去监听,过滤出恐怖分子,然后,拦截他们的恐怖袭击行动。配置位置:监听器、过滤器一般配置在web.xml中,拦截器一般配置在springmvc.xml配置文件中二、原创 2021-06-24 11:18:30 · 293 阅读 · 0 评论 -
spring data jpa manyTomany懒加载无效问题
近期做了个用户权限的通用功能模块,包括用户管理、角色管理、菜单管理、日志及字段管理、运维监控与基于Minio的附件上传管理功能,在处理角色与菜单的关联关系的时候用到了@ManyToMany。角色role实体:CascadeType.ALL级联操作,FetchType.LAZY懒加载。ROLE与MENU为多对多关系,关联中间表为sys_role_menu。为了验证懒加载是否生效,在debug模式下发现懒加载并没有生效。在正常模式下,返回到页面也是有menus的数据。于是开始各种查找定位问题,...原创 2021-06-23 17:03:15 · 1421 阅读 · 0 评论 -
springboot整合minio8实现文件存储服务(最新版)
近期在构建公司技术服务平台,在搭建完一些基础技术服务之后,考虑到项目过程中使用到很多文件存储功能,所以在平台上面提供统一的文件存储服务。一开始计划直接使用阿里云OSS服务(想法简单了),后来与CTO讨论后,决定使用MinIO来完成该服务。然后开始学习MinIO相关知识,各种查看中英文版文档,现在最新的中文文档版本还是MinIO7的,所以查看了官网的英文版文档:[https://docs.min.io/docs]梳理下过程,将基础功能整理如下:1. MinIO安装(docker单机)前提需要了解do原创 2021-03-31 16:01:37 · 6669 阅读 · 5 评论 -
全局异常add-mappings配置false请求swagger-ui页面后台报错问题
项目中处理全局异常,配置了throw-exception-if-no-handler-found:true及resources:add-mappings:false,用于处理404异常。add-mappings:false会导致swagger无法访问,需要配置swagger:这样swagger就可以访问。但是在访问swagger-ui.html的时候后台日志报错,doc.html无此信息,错误如下:经测试,add-mappings为false导致的改错误信息。这个还没解决,请大佬指正如何处理。原创 2021-01-07 10:06:04 · 1180 阅读 · 3 评论 -
spring boot admin监控管理的使用
近期通过spring boot集成了redis、rabbitMQ及websocket服务,并对外提供相应的技术服务,整合完成之后,需要对这几个服务进行spring boot应用运行健康状况监控。之前了解过spring boot admin,但是没有系统的学习使用过,借着本次实践,记录下spring boot admin的配置及使用过程。概述Spring Boot Admin是一个Web应用,用于管理和监视Spring Boot应用程序的运行状态。每个Spring Boot应用程序都被视为客户端并注册原创 2021-01-04 14:43:22 · 626 阅读 · 1 评论 -
springboot 2.3.0搭建spring boot admin启动报错
Spring Boot 有一个非常好用的监控和管理的源软件,这个软件就是 Spring Boot Admin。该软件能够将 Actuator 中的信息进行界面化的展示,也可以监控所有 Spring Boot 应用的健康状况,提供实时警报功能。所以计划使用spring boot admin对spring boot应用进行监控,在spring boot admin搭建启动的时候报错,找了好久都没有定位到问题,最后发现是版本问题导致的。错误如下:at de.codecentric.boot.admin.ser原创 2020-12-31 14:54:39 · 1906 阅读 · 1 评论 -
spring boot定义全局异常导致swagger无法访问
spring.resources.add-mappings=false 为静态资源设置默认处理。spring.mvc.throw-exception-if-no-handler-found=true,这样可以将自定义全局404异常方便Restful使用但是spring.resources.add-mappings=false会导致swagger也不能访问。处理办法:在实现WebMvcConfigurer这个接口的类中加入下面的方法实现:通过addResourceHandlers指定swagger原创 2020-12-30 09:19:35 · 706 阅读 · 0 评论 -
SpringBoot配置ThreadPoolExecutor多线程
我们常用ThreadPoolExecutor提供的线程池服务,SpringBoot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行,今天我们就来实战体验这个线程池服务。编写多线程配置类 @EnableAsync@Configurationpublic class ThreadExecutorConfig { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Bean原创 2020-12-28 15:05:30 · 2970 阅读 · 0 评论 -
springboot使用aop记录接口操作日志
国际管理,添加依赖我们先自定义一个注解,有关自定义注解的说明可自行百度。@Target({ ElementType.PARAMETER, ElementType.METHOD })@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Log { /** * 模块 */ String title() default ""; /** * 功能 */ .原创 2020-12-23 08:56:55 · 589 阅读 · 0 评论 -
spring boot拦截器内使用redisTemplate空指针
最近在做项目的过程中需要在拦截器中注入RedisTemplate对象,结果发现一只空指针。拦截器代码如下:@Configurationpublic class WebConfig implements WebMvcConfigurer { /** * 注册自定义拦截器 * @param registry */ @Override public void addInterceptors(InterceptorRegistry registry) {原创 2020-12-18 14:23:33 · 672 阅读 · 0 评论 -
Mybatis缓存:一级缓存、二级缓存
Mybatis 中有一级缓存和二级缓存,默认情况下一级缓存是开启的,而且是不能关闭的。一级缓存是指 SqlSession 级别的缓存,当在同一个 SqlSession 中进行相同的 SQL 语句查询时,第二次以后的查询不会从数据库查询,而是直接从缓存中获取,一级缓存最多缓存 1024 条 SQL。二级缓存是指可以跨 SqlSession 的缓存。是 mapper 级别的缓存,对于 mapper 级别的缓存不同的sqlsession 是可以共享的。一级缓存原理(SqlSession级别)第一次发出一个查询原创 2020-10-20 21:19:11 · 537 阅读 · 2 评论 -
shiro之ShiroFilterFactoryBean
Shiro提供了与Web集成的支持,其通过一个ShiroFilter入口来拦截需要安全控制的URL,然后进行相应的控制。本文主要介绍在spring-boot 中用ShiroFilterFactoryBean 来创建ShiroFilter:将上述方法添加到ShiroConfig中即可实现拦截URL。...原创 2020-09-29 16:05:10 · 976 阅读 · 0 评论 -
如何保证缓存与数据库的双写一致性
如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写。你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情况下多几倍的机器去支撑线上的一个请求转载 2020-09-29 10:14:28 · 132 阅读 · 0 评论