随笔分类 -  JAVA高级

摘要:笔者最近遇到一个问题 我们根据自己业务需要 需要首次启动springboot项目时 把数据库数据同步至本地缓存(比如ehcache)但有一个要求 在缓存未载入成功 不允许有流量打入 一开始我们使用的是一个类实现ApplicationRunner 但发现 这个启动任务是需要等bean全部完成初始化 springmvc等完成初始化后才开始执行,这个时候 如果刚好遇到同步缓存进行中,就会出现缓存穿透的情况 而我们的应用又是希望完成同步完成之后 从缓存中获取数据 这个时候 笔者改成侦听ContextRefreshedEvent初始化完成事件 其实这个方案也已经能解决, 只是笔者项目里面 已经有一个地方用到了这个 刚好尴尬的地方是 这个地方 是发布dubbo的执行方法 而我其实是希望在发布dubbo接口之前完成初始化工作 因为dubbo接口也很有可能消费者会调用 这个还是会造成缓存穿透 所以我单独写了一个@Configuration 阅读全文
posted @ 2018-08-31 15:13 陶朱公Boy 阅读(9113) 评论(0) 推荐(0) 编辑
摘要:发布定义: 指一个对象可以在对象的作用域范围以外使用。 溢出定义: 当某个不应该发布的对象被发布时称为溢出。 阅读全文
posted @ 2018-08-30 10:19 陶朱公Boy 阅读(248) 评论(0) 推荐(0) 编辑
摘要:设计模式六大原则之单一原则的设计注意事项 阅读全文
posted @ 2018-08-29 14:38 陶朱公Boy 阅读(185) 评论(0) 推荐(0) 编辑
摘要:Spring Boot中初始化资源的几种方式 阅读全文
posted @ 2018-08-28 14:45 陶朱公Boy 阅读(2822) 评论(0) 推荐(0) 编辑
摘要:JAVA提供了一种内置锁的机制来支持原子性,同步代码块。同步代码块分两部分组成:1)一个是作为锁的对象引用2)由这个锁保护的代码块 注意点:以关键字sync...修饰的方法就是一种横跨整个方法体的同步代码块,其中该同步代码块的锁就是方法调用所在的对象。 阅读全文
posted @ 2018-08-22 14:32 陶朱公Boy 阅读(202) 评论(0) 推荐(0) 编辑
摘要:JDK中关于观察者模式主要了解俩个概念 Observer观察者 Observable事件源;当事件源发生某事件时,有两个事情需要注意 1.里面有一个isChange属性 当为false时不会发通知给观察者。所以一般先setChange为true,然后注册观察者,再调用notifyObservers方法 通知所有观察者中的update方法 阅读全文
posted @ 2018-07-31 18:26 陶朱公Boy 阅读(203) 评论(0) 推荐(0) 编辑
摘要:此篇文章主要介绍了事件驱动模式的概念及对应的实现,事件驱动模型其实只是一个概念 ,从具体实现的角度讲可以有详细的方案实现,比较常见的比如观察者模式,发布订阅模式,再详细的方案落地话比如我们熟悉的MQ产品,rocketMq rabbitMq都是基于发布订阅的落地 阅读全文
posted @ 2018-07-31 18:11 陶朱公Boy 阅读(221) 评论(0) 推荐(0) 编辑
摘要:通过阻塞队列实现生产者和消费者异步解耦。 它的确是一种实用的设计模式,常用于编写多线程或并发代码。下面是它的一些优点: 它简化的开发,你可以独立地或并发的编写消费者和生产者,它仅仅只需知道共享对象是谁 生产者不需要知道谁是消费者或者有多少消费者,对消费者来说也是一样 生产者和消费者可以以不同的速度执行 分离的消费者和生产者在功能上能写出更简洁、可读、易维护的代码 阅读全文
posted @ 2018-07-31 15:53 陶朱公Boy 阅读(857) 评论(0) 推荐(0) 编辑
摘要:CSRF(Cross-site request forgery)跨站请求伪造是一类常见编程漏洞。对于存在CSRF漏洞的应用/网站,攻击者可以事先构造好URL,只要受害者用户一访问,后台便在用户不知情情况下对数据库中用户参数进行相应修改 只要协议、域名、端口有任何一个不同,都被当作是不同的域,之间的请求就是跨域操作。 阅读全文
posted @ 2018-07-10 14:54 陶朱公Boy 阅读(359) 评论(0) 推荐(0) 编辑
摘要:lambda表达式之方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器 阅读全文
posted @ 2018-07-09 16:56 陶朱公Boy 阅读(313) 评论(0) 推荐(0) 编辑
摘要:jdk1.8新特性之lambda表达式 阅读全文
posted @ 2018-07-09 14:48 陶朱公Boy 阅读(220) 评论(0) 推荐(0) 编辑
摘要:什么是lambda;优势是什么;为什么JDK8花费了这么长时间弄出这个新特性 阅读全文
posted @ 2018-07-09 14:10 陶朱公Boy 阅读(150) 评论(0) 推荐(0) 编辑
摘要:CAP理论和BASE理论及数据库的ACID 阅读全文
posted @ 2018-06-26 14:43 陶朱公Boy 阅读(591) 评论(0) 推荐(0) 编辑
摘要:大家知道synchronized是可以实现互斥进程内语义,分布式场景不适合建议使用(redis,etcd(推荐因为是CP模型))下暂时不讨论,那么单一进程内 synchronized还是比较简单的实现互斥的语义 阅读全文
posted @ 2018-06-20 12:38 陶朱公Boy 阅读(267) 评论(0) 推荐(0) 编辑
摘要:领域模型,数据驱动DDD 阅读全文
posted @ 2018-03-02 11:52 陶朱公Boy 阅读(202) 评论(0) 推荐(0) 编辑
摘要:Blockingqueue,线程池 阅读全文
posted @ 2018-02-28 14:59 陶朱公Boy 阅读(207) 评论(0) 推荐(0) 编辑
摘要:在多线程环境中对于全局变量的使用,往往这个变量存在线程不安全性,通过将对象保存在ThreadLocal中,使得每个线程都拥有自己的对象,达到维持线程封闭性效果。 volatile变量上存在一种特殊的线程封闭。只要确保只有单个线程对共享的volatile变量执行写入操作,那么就可以完全的在这些共享volatile变量上执行“读取-修改-写入”操作。。。 生产环境中的案例: 登录 一般登录实现会选择在登录成功后 将user上下文对象封装在ThreadLocal对象内 ,其他线程需要用到登录的用户ID... 阅读全文
posted @ 2017-07-05 11:01 陶朱公Boy 阅读(199) 评论(0) 推荐(0) 编辑
摘要:Map context = Collections.singletonMap("key", "value"); 阅读全文
posted @ 2017-05-17 21:43 陶朱公Boy 阅读(151) 评论(0) 推荐(0) 编辑
摘要:/** * NIO非阻塞式编程<p> * 服务端和客户端各自维护一个管理通道的对象,我们称之为selector,该对象能检测一个或多个通道 (channel) 上的事件。 * 我们以服务端为例,如果服务端的selector上注册了读事件,某时刻客户端给服务端发送了一些数据,阻塞I/O这时会调用rea 阅读全文
posted @ 2017-05-17 14:53 陶朱公Boy 阅读(376) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示