分布式
文章平均质量分 75
asoklove
这个作者很懒,什么都没留下…
展开
-
SpringBoot WebFlux整合Spring Security进行权限认证
环境:Springboot2.5.8请先阅读:Reactor响应式编程(Flux、Mono)基本用法Spring WebFlux入门实例并整合数据库实现基本的增删改查Spring Boot Security防重登录及在线总数简介Spring Security的WebFlux支持依赖于WebFilter,对Spring WebFlux和Spring WebFlux.Fn的作用相同。WebMVC依赖于Filter。依赖管理<dependency> <gro原创 2022-01-14 09:16:00 · 2265 阅读 · 0 评论 -
Springboot接口参数是如何处理的你肯定不知道
SpringMVC接口参数处理原创 2021-11-22 09:11:36 · 521 阅读 · 0 评论 -
SpringMVC函数式接口Router Function你用过吗?
环境:Springboot2.4.12概述Spring Web MVC包括WebMvc.fn,这是一种轻量级函数式编程模型,其中函数用于路由和处理请求,参数及返回值设计为不可变。它是基于注释的编程模型的替代方案,但在其他方面还是运行在同一DispatcherServlet上。在WebMvc.fn中,HTTP请求由HandlerFunction处理:该函数接受ServerRequest并返回ServerResponse。请求和响应对象都有不可变,提供对HTTP请求和响应的JDK 8友好访问。Han原创 2021-11-15 09:11:58 · 4238 阅读 · 1 评论 -
Springboot定义Controller接口的这些方式你肯定不知道
环境:Springboot2.4.11概述当一个请求过来后Spring是如何进行处理的?下面简单的罗列下请个的过程中核心组件SpringMVC处理的流程:DispatcherServlet所有请求的入口 HandlerMapping将请求地址与处理程序关联 HandlerAdapter真正处理程序,如执行上一步中对应的处理程序 HandlerMethodArgumentResolver对参数进行解析,这里面还涉及到很多其它东西 HanlderMethodReturnValue...原创 2021-11-02 09:10:11 · 3967 阅读 · 0 评论 -
Springboot默认的错误页是如何工作及工作原理你肯定不知道?
环境:Springboot2.4.11环境配置接下来的演示都是基于如下接口进行。@RestController@RequestMapping("/exceptions")public class ExceptionsController { @GetMapping("/index") public Object index(int a) { if (a == 0) { throw new BusinessException() ; }原创 2021-10-23 17:09:08 · 946 阅读 · 0 评论 -
Springboot强大的类型转换功能你必须要掌握
环境:Springboot2.4.11Spring3引入了一个core.convert包,它提供了一个通用类型转换系统。系统定义一个SPI来实现类型转换逻辑,定义一个API来在运行时执行类型转换。在Spring容器中,你可以使用此系统作为PropertyEditor实现的替代方案,将外部化的bean属性值字符串转换为所需的属性类型。你还可以在应用程序中需要进行类型转换的任何位置使用公共API。Converter SPI实现类型转换逻辑的SPI是简单且强类型的,如以下接口定义所示:packa原创 2021-10-17 08:45:37 · 4091 阅读 · 0 评论 -
Springboot API接口统一输出消息格式保持原接口返回值不变
环境:Springboot2.4.11很多时候我们对接口的返回值都会做统一的处理,返回{code, message,data}等信息标识本次请求的处理结果,这统一的处理也都是在各自的Controller上做自行的处理。本篇内容告诉你如何通过ResponseBodyAdvice对象来实现对结果的统一处理,也就是说在Controller上我们不再对返回结果进行处理了,而是由统一的一个ControllerAdice Bean对象进行处理。这对我们的Controller接口来说可读性更强,也业务无关的东西一概不原创 2021-10-10 10:53:37 · 615 阅读 · 0 评论 -
Springboot强大的数据格式化功能你必须要知道
环境:Springboot2.4.11通常,当需要实现通用类型转换逻辑时,可以使用转换器SPI 例如,用于在java.util.Date和Long之间转换。当你在客户端环境(如web应用程序)中工作并且需要解析和打印本地化字段值时,可以使用格式化程序SPI。ConversionService为两个SPI提供统一的类型转换API。在Springboot环境下如何自定义数据类型的转换?Formatter SPIFormatter SPI 实现字段格式化逻辑非常简单,而且是强类型的。以下列表显示格原创 2021-09-30 13:53:52 · 1892 阅读 · 0 评论 -
Spring依赖注入@Autowried的这些功能你都知道吗?
环境:spring5.2.15@Autowried注解首先根据byType注入,如果有多个的情况会按照byName注入,如果没有符合的名称那么系统将会报错。结合@Qualifier限定注入的Bean。功能1As of Spring Framework 4.3, an@Autowiredannotation on such a constructor is no longer necessary if the target bean defines only one constructor ..原创 2021-07-23 14:00:34 · 518 阅读 · 0 评论 -
Spring知识点+ 技巧 + 源码
Spring / Spring MVC / SpringBoot / SpringCloud 应用技巧,扩展点,源码解读来啦公众:Springboot实战案例锦集原创 2021-07-19 09:18:43 · 88 阅读 · 0 评论 -
Springboot编程式事务使用方式详解
环境:springboot2.3.9.RELEASESpring提供两种编程式事务管理方法:使用TransactionTemplate 或 TransactionalOperator 直接创建TransactionManager的实现Spring官方推荐使用TransactionTemplate方式准备// 实体类@Entity@Table(name = "BC_USERS")@Datapublic class Users{ private String username ;原创 2021-07-13 09:03:37 · 1683 阅读 · 0 评论 -
SpringCloud SpringBoot 源码解读
Spring / Spring MVC / SpringBoot / SpringCloud 应用技巧,扩展点,源码解读来啦公众:Springboot实战案例锦集原创 2021-07-09 09:27:13 · 84 阅读 · 0 评论 -
Java分布式事务实现Atomikos
先了解X/Open DTP(Distributed Transaction Processing)模型X/Open DTP模型与XA规范X/Open,即现在的open group,是一个独立的组织,主要负责制定各种行业技术标准。官网地址:www。opengroup。org。X/Open组织主要由各大知名公司或者厂商进行支持,这些组织不光遵循X/Open组织定义的行业技术标准,也参与到标准的制定。下图展示了open group目前主要成员(官网截图):针对DTP,X/Open提供了以下参考原创 2021-07-06 08:55:41 · 521 阅读 · 0 评论 -
Spring Bean的作用域scope你知道多少?如何自定义作用域?
环境:spring5.3.31 Scope作用通过@Scope注解可以指定Bean的作用域,默认情况都是单例的(ConfigurableBeanFactory.SCOPE_SINGLETON=singleton)在创建bean实例时就是根据当前定义BeanDefinition中的Scope来做不同的创建,源码如下:protected <T> T doGetBean( String name, @Nullable Class<T> requi原创 2021-07-05 08:46:24 · 255 阅读 · 1 评论 -
Springboot整合百度开源分布式ID生成器UIDGenerator
环境:sprinboot2.3.12.RELEASE + uid-generator1.0.0简介UidGenerator是Java实现的, 基于Snowflake算法的唯一ID生成器。UidGenerator以组件形式工作在应用项目中, 支持自定义workerId位数和初始化策略, 从而适用于docker等虚拟化环境下实例自动重启、漂移等场景。 在实现上, UidGenerator通过借用未来时间来解决sequence天然存在的并发限制; 采用RingBuffer来缓存已生成的UID, 并行化UI原创 2021-07-02 07:19:00 · 1120 阅读 · 2 评论 -
Spring通过源码分析了解这3种Bean处理器的执行过程
环境:Spring5.3.3三种Bean处理器BeanFactoryPostProcessor BeanPostProcessor InstantiationAwareBeanPostProcessor1 BeanFactoryPostProcessor所有Bean在未初始化前执行,同时可以去修改常规Bean的相关定义信息,比如修改Bean的属性信息。准备类:public class CustomBeanFactoryPostProcessor implements BeanFa原创 2021-06-24 08:58:14 · 171 阅读 · 1 评论 -
Spring事务实现原理源码分析
Spring事务实现原理源码分析原创2021-06-14 09:21·FastCoder环境:spring5.3.3先阅读:《Spring IOC容器对Bean实例化的过程详解源码分析》目录:1、开启事务通过@EnableTransactionManagement注解开启事务功能@Configuration@EnableTransactionManagementpublic class AnnoConfig {} @Import(Transaction...原创 2021-06-22 09:01:30 · 164 阅读 · 0 评论 -
Java Cglib动态代理原理源码分析
环境:Java8Cglib代理使用System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "E://cglib"); Enhancer enhancer = new Enhancer() ;enhancer.setSuperclass(PersonDAOImpl.class) ;enhancer.setCallback(new MethodInterceptor() { @Override public Ob原创 2021-06-20 11:15:59 · 534 阅读 · 0 评论 -
Springboot中常见的@Import注解的三种使用方式详解
环境:springboot2.3.9.RELEASE三种方法说明 直接导入普通数组的方式 导入ImportSelector类方式 导入ImportBeanDefinitionRegistrar方式 被导入的类加入到Spring IOC容器中。直接导入普通数组的方式public class A { @Bean public B b() { return new B() ; }}@Import({A.class})@Configurati原创 2021-06-15 09:35:15 · 744 阅读 · 0 评论 -
Spring IOC容器对Bean实例化的过程详解源码分析
环境:Spring5.3.3Spring容器启动时,创建DefaultListableBeanFactory 工厂实例化AnnotationConfigApplicationContext对象public AnnotationConfigApplicationContext(String... basePackages) { this(); scan(basePackages); refresh();}1.1 实例化单例Bean进入refresh方法中的原创 2021-06-12 07:14:08 · 235 阅读 · 1 评论 -
SpringBoot整合MyBatis完全使用注解方式定义Mapper
环境:springboot2.3.11 + MyBatis3.5.6依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.mybatis.spring.原创 2021-06-09 08:50:19 · 787 阅读 · 0 评论 -
elasticsearch 多条件时间范围查询
{ "query": { "bool": { "must": [ { "match": { "name": "张" } }, { "range": { "settlement_time": { "gte": "2019-01-01 04:00:00", "lte": "2019-01-01 04:59:59", .原创 2021-06-07 19:22:09 · 3207 阅读 · 0 评论 -
异步编程还在用Future?快来学习下CompletableFuture超级详细
环境:Java8Future基本应用Future是从JDK1.5开始有的,目的是获取异步任务执行的结果,通常情况会结合ExecutorService及Callable一起使用。1、Future结合Callable使用单任务执行private static class Task implements Callable<String> { @Override public String call() throws Exception { TimeUnit.SE原创 2021-06-05 08:15:59 · 182 阅读 · 1 评论 -
Spring AOP动态代理失效的解决方法@Transactional为何会失效
环境:springboot2.3.10演示类JavaBeanpublic class User { private Integer id ; private String name ; public User(Integer id, String name) { this.id = id; this.name = name; }}DAO接口public interface UserDAO { User save(User user) ;原创 2021-06-04 08:50:31 · 1202 阅读 · 1 评论 -
Springboot基础使用@Conditional多条件注册Bean
环境:springboot2.3.10需求:有这么一个Bean它被注册的条件是需要满足多个条件下才能被注册。如下pack: datasource: enabled: true---pack: cache: enabled: true只有在这两个属性都为true时才注册Bean。方法1 @ConditionalOnExpression注解说明:@Retention(RetentionPolicy.RUNTIME)@Target({ ElementTyp原创 2021-06-01 11:23:00 · 1110 阅读 · 0 评论 -
Kafka(zookeeper)环境配置超级详细
Kafka(zookeeper)环境配置超级详细2020-12-30 10:00:00·FastCoder环境:CentOS Linux release 8.1.1911 (Core) + zookeeper-3.6.2+kafka_2.13-2.7.0(2.13是scala版本,2.7.0是kafka版本,kafa使用scala开发的)+ jdk8zk下载地址:kafka下载地址:一、环境准备将下载的3个软件(jdk,zk,kafka)放在/root/sf目录(..原创 2021-05-28 08:59:55 · 6371 阅读 · 0 评论 -
JVM常用参数说明
汇集下所有的参数,方便查阅,收藏下参数类型:标准参数 '-' 直接就是 一个横杠。 非标准参数 ‘-X’ 一个‘X’ -X 选项是非标准选项, 如有更改, 恕不另行通知。 非稳定参数 '-XX' 两个 ‘XX’ 官方解释:The -XX options are subject to change at any time.(意思是:随时可能更改)。标准参数像这类的就是标准参数,基本是各个版本都差不多,有些可能不同版本下新增的。非标准参这非标准的都有说明。...原创 2021-05-26 09:02:29 · 128 阅读 · 0 评论 -
Springboot整合openfeign使用详解
环境:springboot2.3.8.RELEASE+springcloudHoxton.SR8引入依赖:<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> &..原创 2021-05-23 11:42:16 · 2199 阅读 · 1 评论 -
Springboot面试题整理附答案
以下面试题都来源网络整理什么是 SpringBoot?spring Boot 是为 spring 服务的,是用来简化新 spring 应用的初始搭建以及开发过程的。Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。为什么要用SpringBoot?为了解决java开发中的问题,繁多的配置、低下的开发效率,复杂的部署流程,和第三方技术集成难度大的问题,产生了sprin原创 2021-05-21 08:57:58 · 1076 阅读 · 1 评论 -
Java线程池中的线程发生OOM会如何?
环境:JDK1.8线程池中如果发生OOM后会如何?线程池ThreadPoolExecutor当有线程发生了OOM,线程池会停止工作吗?public static void main(String[] args) { ThreadPoolExecutor pool = new ThreadPoolExecutor(3, 3, 60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(2)) ; pool.execute(()原创 2021-05-19 08:53:04 · 1463 阅读 · 1 评论 -
Springboot整合第三方OAuth2登录详解及避坑
环境:springboot2.3.10.RELEASE + OAuth2请先阅读《SpringBoot2 整合OAuth2实现统一认证》文章,本篇内容是调用之前写的一个OAuth2认证服务。相关依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></depe.原创 2021-05-18 10:30:22 · 10692 阅读 · 0 评论 -
使用rocketmq-console管理RocketMQ
环境:RocketMQ4.8.0 + rocketmq-console2.0.0简介rocketmq-console是RocketMQ项目的扩展插件,是一个图形化管理控制台,提供Broker集群状态查看,Topic管理,Producer、Consumer状态展示,消息查询等常用功能,这个功能在安装好RocketMQ后需要额外单独安装、运行。下载并安装通过如下地址下载修改相关配置进入src\main\resources修改application.properties文件,修改端口.原创 2021-05-13 09:02:10 · 4412 阅读 · 1 评论 -
elasticsearch中 refresh 和flush区别
转自:https://www.cnblogs.com/smile361/p/7483561.htmlelasticsearch中有两个比较重要的操作:refresh 和 flushrefresh操作当我们向ES发送请求的时候,我们发现es貌似可以在我们发请求的同时进行搜索。而这个实时建索引并可以被搜索的过程实际上是一次es 索引提交(commit)的过程,如果这个提交的过程直接将数据写入磁盘(fsync)必然会影响性能,所以es中设计了一种机制,即:先将index-buffer中文档(docum转载 2021-05-11 14:44:21 · 83 阅读 · 0 评论 -
ES如何优化查询的性能
转自:https://blog.csdn.net/qq_41864967/article/details/90454647es在数据量很大的情况下(数十亿级别)如何提高查询效率啊?问这个问题,是肯定的,说白了,就是看你有没有实际干过es,因为啥?es说白了其实性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下5秒~10秒,坑爹了。第一次搜索的时候,是5~10秒,后面反而就快了,可能就几百毫秒。(LRU)你就很懵,每个用户第一..转载 2021-05-11 13:25:57 · 2072 阅读 · 1 评论 -
Java并发编程之CompletionService
简介:CompletionService功能是以异步的方式一边生成新任务,一边处理完成的任务,使得任务的执行与处理进行分离。使用submit提交任务,使用task获取已经完成的任务先看个示例:此功能是获取每个任务的执行结果,这里通过future来实现public class FutureDemo { private static class CallableTask implements Callable<String> { private int time; pr原创 2021-05-10 09:07:36 · 799 阅读 · 0 评论 -
Oracle数据同步到Elasticsearch
环境:ElasticSearch7.8.0 + logstash7.8.0方案1 方案:db + logstash + elasticsearch优点:简单, 只需要简单配置即可。缺点:⑴ 有一定的延迟⑵ 数据量大或是定时时间比较短那么会对数据库造成一定的压力。 方案2 方案:实时双写。在业务系统中做业务保存或是更新操作时,同时向es中做保存或更新。优点:实时性好缺点:耦合性强,对业务系统性能有影响 方案3 方案:异步双写;在业务系统中利用MQ将数据发送到队列,另起一个消费系统专门用来处理消.原创 2021-05-07 09:08:19 · 4355 阅读 · 2 评论 -
Spring Retry重试框架的应用
环境:SpringBoot2.4.3 + Spring Retry + JPA + MySQL + JDK8相关依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>原创 2021-05-06 09:06:03 · 527 阅读 · 1 评论 -
Springboot综合案例锦集
扫码关注原创 2021-04-30 09:04:13 · 118 阅读 · 0 评论 -
ElasticSearch使用Java API调用相关服务
环境:springboot2.3.10 + elasticsearch7.8.0索引操作高级别的Rest客户端对象private static RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http"))) ;1、创建索引public static void createIndex(String index) thr.原创 2021-04-29 09:07:21 · 87 阅读 · 0 评论 -
Spring Cloud Gateway应用详解1之谓词
环境:springboot2.3.7 + spring cloud Hoxton.SR9Spring Cloud Gateway工作流程:客户端调用spring cloud gateway配置的请求。根据配置的映射确定请求与路由,将其发送到网关Web处理程序。此处理程序通过特定于请求的过滤器运行请求。过滤器被虚线分割的原因是,过滤器可以在代理请求发送之前和之后运行逻辑。执行所有“pre”过滤器逻辑。然后发出代理请求。在发出代理请求之后,运行“post”过滤器逻辑。一. 路由谓词Af.原创 2021-04-27 09:06:28 · 231 阅读 · 0 评论