java多线程获取返回值
共享变量将要保存/修改的值set到共享变量中,通过获取共享变量实现值在不同线程中的传递 如下在子线程中循环累加学生年龄,然后在主线程中获取累加后的结果 //共享变量 private static AtomicReference<Student> student = new AtomicReference<>(); private static volatile boolea
共享变量将要保存/修改的值set到共享变量中,通过获取共享变量实现值在不同线程中的传递 如下在子线程中循环累加学生年龄,然后在主线程中获取累加后的结果 //共享变量 private static AtomicReference<Student> student = new AtomicReference<>(); private static volatile boolea
创建一个线程池需要7个参数 corePoolSize 核心线程数量 maximumPoolSize 最大线程数量 keepAliveTime 当线程数大于核心时,这是多余空闲线程在终止之前等待新任务的最长时间 TimeUnit 等待时间keepAliveTime的单位 workQueue 任务队列类型为BlockingQueue ThreadFactory 创建线程的工厂 RejectedEx
spring cache是一个简单灵活的缓存框架 简单 : 基于注解,在需要缓存的方法上打上注解就可以缓存方法返回值 灵活 : 可自定义键值如何序列化,TTL等,更换缓存只需要注入相应的CacheManager就可以,同时spring已经提供了一些常用的缓存工具(RedisCacheManager,JCacheCacheManager,EhCacheCacheManager) CacheManag
概述 本文源码 https://github.com/nixuechao/rabbit-reliable-delivery 可直接运行并且有详细的注释和readMe RabbitMQ,保证消息不丢失的唯一方法是使用事务,使用事务会将吞吐量降低250倍,代价太大,所以引入了消费者确认模式机制: ConfirmCallback 异步,消息确认回调,告知放松成功或失败. ReturnCallback
本文基于spring-boot-starter-amqp依赖实现 RabbitMQ实现定时消息有两种方式 基于消息TTL与死信交换 基于插件 RabbitMQ Delayed Message Plugin 基于消息TTL与死信交换死信交换: 可以为队列设置一个死信exchange和routingKey,当队列上产生死信时,死信会被投递到设置好的exchange及对应的routingKey,说白
本文介绍三种常用操作,基于spring-boot-starter-amqp依赖 手动ack work模式(能者多劳) 消息格式转换 手动ack消息确认模式在amqp协议中消息确认有两种模式 自动确认模式(automatic acknowledgement model)当消息代理将消息发送给应用后立即删除 显式确认模式(explicit acknowledgement model)待应用发送
在springBoot项目中使用rabbitMQ是很方便的,spring提供了spring-boot-starter-amqp依赖,只需要简单的配置即可与spring无缝整合 本文不介绍rabbitMQ理论知识,主要介绍在spring中如何使用rabbirMQ 依赖与配置maven<dependencies> <dependency> <gro
场景演示假设有一个录入学生信息的功能,为了便于演示,要求不能有重名的学生,并且数据库对应字段没有做唯一限制. @GetMapping("/student/{name}") public Object reSubmitTest(@PathVariable String name){ List<Student> allB
说明 这是一个比较详尽的SpringSecurity整合JWT的例子 本文并没有使用spring oauth2,不要搞混 本文中的原理解释只是大概的介绍,在代码中有非常非常多的注释,配合本文食用更佳DEMO地址 https://github.com/nixuechao/security-jwt 运行demo什么也不需要配置,直接运行就行,提供了一个testController,运行期望如下 /*
项目地址: https://github.com/nixuechao/validate 改造需求在springBoot中验证参数时需要传入org.springframework.validation.Errors 对象,获取验证结果信息.在验证方法参数时还要在类上打@Validated注解个人觉得不太好的地方: 首先不太统一,一会在方法参数上打@Valid,一会在类上打@Validated 获