- 博客(22)
- 收藏
- 关注
原创 SpringCloudStream集成Kafka
由于我们直接使用Spring Cloud Stream 集成Kafka,官方也已经有现成的starter。首先需要定义SubscribableChannel 接口方法使用Input注解。首先需要定义生产者MessageChannel,这里会用到Output注解。通过@StreamListener监听通道的消息。使用MessageChannel 发送消息。
2023-05-05 10:45:27
513
原创 GATEWAY网关上传excel文件失败
上传excel ,网关转发,No valid entries or contents found, this is not a valid OOXML (Office Open XML) file
2023-03-24 16:55:42
2208
原创 如何拿到另一个线程的执行结果
无论是工作还是面试中都会有人问起一个线程如何拿到另一个线程的执行结果或者主线程如何捕获其他线程抛出的异常。首先要知道的是正常情况下外部线程通过try catch是无法捕获其他线程抛出的异常的。这主要是因为线程和线程之间是独立的,他们有各自的栈空间,一个线程抛出的异常只在自己的栈空间中,不会被其他线程共享。接下来先验证一下上面的结论: public static void main(String[] args) throws Exception { ThreadPoolExecuto
2022-05-05 10:45:58
609
原创 springboot aop原理解析(五)
@EnableAspectJAutoProxy基于注解的方式实现AOP需要在配置类中添加注解@EnableAspectJAutoProxy,可以看到他通过import注入了AspectJAutoProxyRegistrar。AspectJAutoProxyRegistrar实现了ImportBeanDefinitionRegistrar,因此spring启动时候会调用其registerBeanDefinitions方法。下面看一下AspectJAutoProxyRegistrar的registerBe
2022-03-23 19:24:03
439
原创 springboot BeanFactoryPostProcesser之ConfigurationClassPostProcessor(四)
ConfigurationClassPostProcessor是BeanFactoryPostProcesser中最先被执行的后置处理器。下面是他的继承图,实现了BeanDefinitionRegistryPostProcessor和PriorityOrdered。上一篇讲到refresh方法会依次调用BeanDefinitionRegistryPostProcessor的postProcessBeanDefinitionRegistry和BeanFactoryPostProcesser的postPro
2022-03-19 18:58:01
500
原创 Springmvc源码解析(二)
根据handler找到对应的handlerAdapterHandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());遍历所有的handlerAdapter,找到对应的handler protected HandlerAdapter getHandlerAdapter(Object handler) throws ServletException { if (this.handlerAdapters != null) {
2021-06-06 16:18:13
110
原创 Springmvc源码解析(一)
前端请求全部由DispatchServlet 转交给HandlerMapping,并找到相应的handler,再根据handler找到HandlerAdapter。交给adapter处理请求。doGet方法内部调用了doService方法,doService方法内部又调用了doDispatch方法 protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
2021-06-05 18:35:50
122
原创 多线程分片处理任务2
实现多线程分片处理任务/** * @Author dingjy * @Description 多线程发片处理任务 * @Date 2021/3/9 **/public class ConcurrentArray { private final int MIN_TRANSFER_SIZE=16; private transient volatile int[] tab; private transient volatile int tabIndex; privat
2021-03-10 14:34:23
209
原创 自己实现Double.valueOf()
闲着没事,自己实现了一下Double.valueOf(),不能和官方比。会存在精度缺失问题。 /** * 字符串转double * @param source * @return */ public static double parseDoubleValue(String source){ if(source==null){...
2021-03-03 17:08:00
732
原创 两个线程并发打印26个小写字母
/** * @description: 两个线程交替打印26个小写字母 (97-122) * @see:com.rongda.mybatispersonal.test * @author:丁金阳 * @createTime:2020-05-15 11:06 */public class PrintChars{ //需要打印的字符 从a开始 char ch=97; public synchronized void print() throws InterruptedE.
2020-05-15 16:23:02
375
原创 多线程分片处理任务1
/** * @description:多线程实现对数组分片处理,互不影响 * @see:com.rongda.mybatispersonal.test * @author:丁金阳 * @createTime:2020-05-14 14:53 */public class 并发处理数组测试1 { //Node数组 volatile int[] table; //表示数组长度 volatile int transIndex; //数组元素下标 vola
2020-05-15 11:03:46
353
原创 jdk1.8 ThreadPoolExecutor解析
execute方法 public void execute(Runnable command) { if (command == null) throw new NullPointerException(); //ctl高三位表示线程池状态,低29位表示线程数量 int c = ...
2020-04-29 09:31:14
97
原创 jdk1.8 探讨FutureTask的两个问题
1.FutureTask任务多线程并发访问时为啥只会被执行一次? public void run() { //如果state==new 说明任务没有被执行或者正在被执行还没有执行到set(result)方法。 //此时通过CAS操作将runner设置为当前线程,这样如果线程正在执行(此时state仍然为 new)其他线程进来后CAS设置失败,直接return。这就是为...
2020-04-13 16:42:31
699
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人