记一次dubbofilter的踩坑 public @interface Activate { String[] group() default {}; String[] value() default {}; String[] before() default {}; String[] after() default {}; int order() default 0;}Activate 注解中的order 为 执行的加载顺序,但不知到是越小越先执行,还是越到越先执行。我的需求是,在.
dubbo Filter的 大坑 dubbo filter 用的不少,但是在注解中有个group 参数@Activate(group = Constants.PROVIDER, order = Integer.MIN_VALUE) 或是@Activate(group = Constants.CONSUMER, order = Integer.MIN_VALUE) 一直没明白作用。一直到今天晚上 cv 代码的时候,发现过滤器不生效了。才仔细研究这两个的区别Constants.PROVIDER 是作为服务端,当有人调..
一次并发的update引发的血案 ----rocketMQ 多实例消费导致的错误。 事故现场: 系统引入了rocketMQ,用来对某些订单进行状态的更新操作。部署的时候2台消费实例。在测试环境中只考虑了用乐观锁来控制并发,但在生产中,乐观锁并无法保证数据的正确性。 具体的消费情况参考上图。假定消息A和消息B 都是为了更新表中的同一行数据,更新逻辑是,拿到消息A 进行更新,拿到消息B 在更新一次。最终得到的结果为,消息B。生产环境中,消息A\B 有...
java8 内存模型 学习(一) 一、内存模型1、虚拟机栈每个线程都有个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法都会创建一个栈帧,栈帧中存放了局部变量(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的返回,会抛出stackoverflowerror的错误。不过这个深度范围不是一个恒定的值。虚拟机还有另一种错误,那就是当申请不到空间...
身为程序员,你是怎么跟非程序员解释编程的? 作者:DJ Hitori链接:https://www.zhihu.com/question/22508677/answer/141334678来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*已与原作者取得转载授权普通人:我今天要买一斤苹果。这篇回答并不是讲述在生活中程序员如何买苹果,而是以买苹果为例说明程序员如何解决问
利用dubbo的Filter记录入参、出参及规范返回参数 需求场景: 基于服务治理的原则,公司重构了很多项目,其中使用了dubbo作为服务框架。作为底层的服务存在,由上层的业务系统进行服务的编排。一是为了系统之间的解耦,同时系统之间也能更好的交互。其他依赖:springboot,JDK8目前的需求是,上层业务系统在调用底层的服务的时候,底层系统需要记录全部的入参、出参和处理耗时。第二是统一返回格式,不向上抛出异常。最开始打算使用Sprin
使用多线程进行大文件的处理 场景:有一批数据由于种种原因需要重新处理。总量大概在180W左右。由于数据库的限制,不太好直接直接查库处理,已经由DBA 直接导出了。全都是流水号。具体实现为拿流水号去接口中查询数据,把符合条件的流水号通过接口同步到其他系统里面。最开始的做法很简单,通过读取文件流一行一行的获取流水号,通过流水号再进行其他的处理。由于是单线程程序,加上接口的响应慢,处理的数据特别慢。一晚上才跑了20
checkStyle、findbugs、PMD各自特点 这三个工具检查的侧重点各有不同: 工具目的主要检查内容FindBugs基于Bug Patterns概念,查找java bytecode中的潜在bug。在目前版本中,它不检查java源文件。主要检查bytecode中的bug patterns,也允许用户自定义特定的bug patter
ZooKeeper伪分布式集群安装及使用 ZooKeeper伪分布式集群安装及使用让Hadoop跑在云端系列文章,介绍了如何整合虚拟化和Hadoop,让Hadoop集群跑在VPS虚拟主机上,通过云向用户提供存储和计算的服务。现在硬件越来越便宜,一台非品牌服务器,2颗24核CPU,配48G内存,2T的硬盘,已经降到2万块人民币以下了。这种配置如果简单地放几个web应用,显然是奢侈的浪费。就算是用来实现单节点的hadoop,对计算
spring AspectJ的Execution表达式-备忘笔记(转) Aspectj切入点语法定义在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点"例如定义切入点表达式 execution (* com.sample.service.impl..*.*(..))execution()是最常用的切点函数,其语法如下所示: 整个表达式可以分为五个部分:
spring-junit多线程测试 使用junit进行单元测试的时候,并不能对多线程的操作进行测试。一般情况下是使用main方法来进行测试。但如果项目需要加载大量的配置的情况下,测试类写起来很复杂,需要去写加载各种配置文件的代码。不过可以使用第三方提供的依赖来进行 单元测试,通junit测试一样,只要使用@Test注解即可。测试代码package merchantPlatform.serv
springboot配置多个redis连接 一、springboot nosql 简介Spring Data提供其他项目,用来帮你使用各种各样的NoSQL技术,包括MongoDB, Neo4J, Elasticsearch, Solr, Redis,Gemfire, Couchbase和Cassandra。Spring Boot为Redis, MongoDB, Elasticsearch, Solr和Gemfire提供自动配置。你可
springboot下配置多数据源 一、springboot 简介SpringBoot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run"。 我们为Spring平台及第三方库提 供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用需要很少的Spring配置。你可以使用SpringBoot创建Java应用,并使用 java -jar 启动它或采用传统的war部署
spring Ioc 容器深入理解<一> IoC 概述 IOC是spring的内核,Aop、声明式事务都能功能都依赖于此功能,它涉及代码解耦,设计模式,代码优化的问题的考量。ioc的初步理解 ioc的概念重要但比较晦涩难懂,如下通过一个小例子来说明这个概念: 示例场景:电影: 无间道-》角色:刘建明-》演员:刘德华 刘德华饰演的刘建明和梁朝
spring配置文件的整合 多个配置文件spring-common.xml 位于 common文件下下spring-conncetion.xml位于connection文件夹下spring-moudule.xml位于module文件下传统加载方式ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{
spring Bean的作用域 springBean中所说的作用域,在配置文件中即是“scope”。在面向对象程序设计中一般指对象或变量之间的可见返回。而在spring容器中指其创建bean对象相对于其他bean对象的请求可见返回。在spring容器当中,一共提供了5中作用域类型,在配置文件中,通过属性scope来设置bean的作用域返回,针对不同作用域,1、singleton:一个bean的作用域为scope的
spring Bean的实例化 Spring ioc容器如何实例化Bean,传统应用程序可以通过new和放射方式进行实例化bean,而spring ioc容器则需要根据bean定义的配置元数据使用反射机制来创建Bean,在spring IOC容器中主要有以下几种创建bean实例化方式;1、使用构造器实例化bean 这是最简单的方式,spring ioc容器既能使用默认构造器,也能使用有参的构造器,两种方式来