
JAVA
文章平均质量分 70
李昂的数字之旅
数字梦想之旅
展开
-
CompletableFuture.allOf().get()引起的线程池死锁
可以同步等待一组异步请求都返回结果后,再往下执行。voidCompletableFuture.get()会同步等待所有结果返回,并且不会超时。就因为没有设置超时时间,造成了死锁的发生。处理逻辑是:异步执行父任务父任务里包含多个子任务为了异步执行任务,所以放到线程池THREAD_POOL里。然后,任务里包含多个子任务,为了降低执行时间,把子任务做成了并发执行,使用了CompletableFuture.allOf(completableFutures).get()方法。原创 2024-08-20 18:35:45 · 985 阅读 · 0 评论 -
class结构之MethodParameters
u1代表1个字节,u2代表2个字节,一次类推。attribute_name_index是指向常量池里CONSTANT_Utf8_info类型的索引值,对应值是MethodParametersattribute_lenght代表属性值占用的长度parameters_count代表参数parameters的个数parameter.name_index是指向常量池里CONSTANT_Utf8_info类型的索引值,也就是参数名。原创 2024-06-05 09:33:40 · 493 阅读 · 0 评论 -
SpringBoot3.0后spring-starter新的写法
SpringBoot3.0很多过期的配置被移除,包括原来spring-starter的配置方式也发生了变化。原创 2023-02-27 16:43:54 · 1018 阅读 · 0 评论 -
业务规则治理之规则DSL
背景在业务部门,我们日常的工作模式是业务提供业务逻辑,我们通过”CRUD“将业务逻辑转成可执行的代码。业务逻辑出现分叉时,就加if-else来解决;当出现多个分支时,就用switch-case来解决;当出现成百上千的分支时,要怎么办?第一阶段版本一简单的办法是通过策略模式,将不同的业务规则归类成一批批策略,每个策略下包含一些规则。不同业务场景选择一个或多个策略执行。这种方式有很好的扩展性,没有增加额外组件所以也有很强的维护性。问题是规则结构没有约束(标准)、规则也无法动态修改。第二阶段当工程里原创 2022-05-18 16:43:22 · 1201 阅读 · 0 评论 -
spring的重试机制无效@Retryable@EnableRetry
spring-retry模块支持方法和类、接口、枚举级别的重试方式很简单,引入pom包<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>lastest</version></parent><dep原创 2017-12-12 12:11:24 · 21653 阅读 · 3 评论 -
consul使用小结
项目中用到consul作为服务注册/发现、配置下发、负载均衡,保证了服务的高可用,最近简单学习了下它的原理。 关于consul的安装就不细说了,启几个server组成集群,再启俩个agent。这里就有俩中方式注册服务: 1. 在启动agent的时候可以在consul的配置文件里直接注册服务 2. 也可以先不注册,之后服务通过http API向agent注册。我们选的是第二种方式,这样ag原创 2017-08-07 18:01:01 · 2244 阅读 · 0 评论 -
java方法是传值还是传引用问题
先下结论:传入基本类型是传值,传入对象是传引用网上看到有人说java是传值,论据如下 在java中只有一种传递方式,那就是值传递.可能比较让人迷惑的就是java中的对象传递时,对形参的改变依然会影响到该对象的内容。 下面这个例子来说明java中是值传递. public class Test { public static void main(String[] ar原创 2017-06-06 17:11:03 · 312 阅读 · 0 评论 -
SpringMVC预处理方法参数HandlerMethodArgumentResolver类
在springmvc框架开发中,想要在方法中自动注入一些参数,该怎么做呢? 正好有这么个需求,在json请求过来的时候,想在Controller方法里自动获取json并转换为指定的Bean。 那么就需要用到HandlerMethodArgumentResolver类,这个类可以解析方法中的参数,那么我们可以在解析参数的时候做一些定制化工作。 首先定义一个StringToJsonResolver原创 2017-05-10 17:24:44 · 2040 阅读 · 0 评论 -
高并发下的单例模式
原文地址:http://mp.weixin.qq.com/s/eL2UsxkzsiWWvTKlqZyc6w 正常的单例模式:class Singleton { private static Singleton instance; public static Singleton function getInstance() { if (instance == null) {原创 2017-04-27 11:53:38 · 462 阅读 · 0 评论 -
java爬虫框架webmagic-core-0.5.3源码分析
webmagic框架使用java语言,抽象出爬虫常用操作,封装了爬虫中使用频繁的库类,使整个爬取逻辑更加清晰有条理。关于webmagic的使用指南在官网描述的很清楚,简单介绍下项目结构。先看下官网的一个流程图介绍:这里展现了爬虫的4个组件,Scheduler、Downloader、PageProcessor、Pipeline,它们相互独立,协同合作。它们直接通过Reque原创 2016-10-12 14:27:18 · 1301 阅读 · 0 评论