- 博客(72)
- 资源 (4)
- 问答 (9)
- 收藏
- 关注
原创 记一次dubbofilter的踩坑
public @interface Activate { String[] group() default {}; String[] value() default {}; String[] before() default {}; String[] after() default {}; int order() default 0;}Activate 注解中的order 为 执行的加载顺序,但不知到是越小越先执行,还是越到越先执行。我的需求是,在.
2021-05-07 18:07:25
651
原创 dubbo Filter的 大坑
dubbo filter 用的不少,但是在注解中有个group 参数@Activate(group = Constants.PROVIDER, order = Integer.MIN_VALUE) 或是@Activate(group = Constants.CONSUMER, order = Integer.MIN_VALUE) 一直没明白作用。一直到今天晚上 cv 代码的时候,发现过滤器不生效了。才仔细研究这两个的区别Constants.PROVIDER 是作为服务端,当有人调..
2021-05-06 20:20:33
1249
原创 一次并发的update引发的血案 ----rocketMQ 多实例消费导致的错误。
事故现场: 系统引入了rocketMQ,用来对某些订单进行状态的更新操作。部署的时候2台消费实例。在测试环境中只考虑了用乐观锁来控制并发,但在生产中,乐观锁并无法保证数据的正确性。 具体的消费情况参考上图。假定消息A和消息B 都是为了更新表中的同一行数据,更新逻辑是,拿到消息A 进行更新,拿到消息B 在更新一次。最终得到的结果为,消息B。生产环境中,消息A\B 有...
2018-10-07 23:22:03
1438
原创 java8 内存模型 学习(一)
一、内存模型1、虚拟机栈每个线程都有个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法都会创建一个栈帧,栈帧中存放了局部变量(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的返回,会抛出stackoverflowerror的错误。不过这个深度范围不是一个恒定的值。虚拟机还有另一种错误,那就是当申请不到空间...
2018-03-12 22:56:42
1056
转载 身为程序员,你是怎么跟非程序员解释编程的?
作者:DJ Hitori链接:https://www.zhihu.com/question/22508677/answer/141334678来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*已与原作者取得转载授权普通人:我今天要买一斤苹果。这篇回答并不是讲述在生活中程序员如何买苹果,而是以买苹果为例说明程序员如何解决问
2018-01-17 10:35:17
740
原创 利用dubbo的Filter记录入参、出参及规范返回参数
需求场景: 基于服务治理的原则,公司重构了很多项目,其中使用了dubbo作为服务框架。作为底层的服务存在,由上层的业务系统进行服务的编排。一是为了系统之间的解耦,同时系统之间也能更好的交互。其他依赖:springboot,JDK8目前的需求是,上层业务系统在调用底层的服务的时候,底层系统需要记录全部的入参、出参和处理耗时。第二是统一返回格式,不向上抛出异常。最开始打算使用Sprin
2017-11-30 10:30:33
14307
1
原创 使用多线程进行大文件的处理
场景:有一批数据由于种种原因需要重新处理。总量大概在180W左右。由于数据库的限制,不太好直接直接查库处理,已经由DBA 直接导出了。全都是流水号。具体实现为拿流水号去接口中查询数据,把符合条件的流水号通过接口同步到其他系统里面。最开始的做法很简单,通过读取文件流一行一行的获取流水号,通过流水号再进行其他的处理。由于是单线程程序,加上接口的响应慢,处理的数据特别慢。一晚上才跑了20
2017-11-20 20:43:11
2562
原创 checkStyle、findbugs、PMD各自特点
这三个工具检查的侧重点各有不同: 工具目的主要检查内容FindBugs基于Bug Patterns概念,查找java bytecode中的潜在bug。在目前版本中,它不检查java源文件。主要检查bytecode中的bug patterns,也允许用户自定义特定的bug patter
2017-10-17 21:42:11
3030
转载 ZooKeeper伪分布式集群安装及使用
ZooKeeper伪分布式集群安装及使用让Hadoop跑在云端系列文章,介绍了如何整合虚拟化和Hadoop,让Hadoop集群跑在VPS虚拟主机上,通过云向用户提供存储和计算的服务。现在硬件越来越便宜,一台非品牌服务器,2颗24核CPU,配48G内存,2T的硬盘,已经降到2万块人民币以下了。这种配置如果简单地放几个web应用,显然是奢侈的浪费。就算是用来实现单节点的hadoop,对计算
2017-05-11 20:52:31
466
转载 spring AspectJ的Execution表达式-备忘笔记(转)
Aspectj切入点语法定义在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点"例如定义切入点表达式 execution (* com.sample.service.impl..*.*(..))execution()是最常用的切点函数,其语法如下所示: 整个表达式可以分为五个部分:
2017-02-27 14:26:08
511
原创 spring-junit多线程测试
使用junit进行单元测试的时候,并不能对多线程的操作进行测试。一般情况下是使用main方法来进行测试。但如果项目需要加载大量的配置的情况下,测试类写起来很复杂,需要去写加载各种配置文件的代码。不过可以使用第三方提供的依赖来进行 单元测试,通junit测试一样,只要使用@Test注解即可。测试代码package merchantPlatform.serv
2016-09-21 21:31:34
5285
原创 springboot配置多个redis连接
一、springboot nosql 简介Spring Data提供其他项目,用来帮你使用各种各样的NoSQL技术,包括MongoDB, Neo4J, Elasticsearch, Solr, Redis,Gemfire, Couchbase和Cassandra。Spring Boot为Redis, MongoDB, Elasticsearch, Solr和Gemfire提供自动配置。你可
2016-09-21 21:09:48
29347
原创 springboot下配置多数据源
一、springboot 简介SpringBoot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run"。 我们为Spring平台及第三方库提 供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用需要很少的Spring配置。你可以使用SpringBoot创建Java应用,并使用 java -jar 启动它或采用传统的war部署
2016-09-21 20:46:33
11649
1
原创 spring Ioc 容器深入理解<一>
IoC 概述 IOC是spring的内核,Aop、声明式事务都能功能都依赖于此功能,它涉及代码解耦,设计模式,代码优化的问题的考量。ioc的初步理解 ioc的概念重要但比较晦涩难懂,如下通过一个小例子来说明这个概念: 示例场景:电影: 无间道-》角色:刘建明-》演员:刘德华 刘德华饰演的刘建明和梁朝
2016-09-08 23:14:10
1575
原创 spring配置文件的整合
多个配置文件spring-common.xml 位于 common文件下下spring-conncetion.xml位于connection文件夹下spring-moudule.xml位于module文件下传统加载方式ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{
2016-09-08 21:52:26
520
原创 spring Bean的作用域
springBean中所说的作用域,在配置文件中即是“scope”。在面向对象程序设计中一般指对象或变量之间的可见返回。而在spring容器中指其创建bean对象相对于其他bean对象的请求可见返回。在spring容器当中,一共提供了5中作用域类型,在配置文件中,通过属性scope来设置bean的作用域返回,针对不同作用域,1、singleton:一个bean的作用域为scope的
2016-09-07 22:21:06
2877
原创 spring Bean的实例化
Spring ioc容器如何实例化Bean,传统应用程序可以通过new和放射方式进行实例化bean,而spring ioc容器则需要根据bean定义的配置元数据使用反射机制来创建Bean,在spring IOC容器中主要有以下几种创建bean实例化方式;1、使用构造器实例化bean 这是最简单的方式,spring ioc容器既能使用默认构造器,也能使用有参的构造器,两种方式来
2016-09-07 22:05:24
932
原创 spring Bean的命名
每个Bean可以有一个或多个Id,我们把第一个id成为标识符,其余id叫做别名,这些id在ioc容器中必须唯一,bean id的命名约定如下。 bean id的命名方式:配置全限定类名,唯一示例:定一个helloworld接口package com.zto;public interface HelloWorld { public void sa
2016-09-07 12:36:48
776
原创 spring 配置文件浅析
spring 配置文件是spring对bean进行生产以及关系注入的图纸,是spring的基础,如果没有配置文件,spring容器无从谈起spring的配置文件概述 spring的配置文件是用于指导spring工厂进行Bean的生产、依赖关系注入以及Bean实例分发的图纸,它是一个或多个标准的XML文档,其中application.xml是spring的默认配置文件,
2016-09-07 12:22:45
727
原创 Spring开发包介绍
在建立spring工程的时候,需要引入spring的开发包,否则无法建立spring的开发和运行环境, 以下简单介绍一下spring的核心开发包的基本用途: spring-core: 这个jar文件包含spring的基本核心工具类,spring其他组件都需要使用到这个包里的类,是其他组件的基本核心。当然和可以在自己的应用系统中使用这些工具类 spring-bea
2016-09-05 20:39:54
584
原创 Spring入门示例
spring开发环境的搭建 spring是运行在JAVA环境下的开发框架,因此在开发前需要准备一下相关软件: ·JDK7或以上版本 ·eclipse4或以上的版本 · spring framwork 相关软件包3 或3以上的版本安装 完成eclipse下载
2016-09-01 23:16:19
396
原创 Spring之AOP
一、什么是AOP ·aop的基本概念 面向切面的编程,是一种比较新颖的设计思想,也是Spring框架中一个非常重要的功能,AOP将应用系统分为两个部分,核心业务逻辑以及横向通用逻辑,也就是所谓的方面,例如所有大中型用,都要涉及到的持久化管理,事务管理,安全管理,日志管理已经调试管理等等,在spring当中,提供了面向切面编程的方法支持,允许通过分离应用业务逻辑与系统级的服务进行
2016-08-24 23:41:22
641
原创 Spring之IOC
IOC (inversion of control ,控制反转)是spring的核心,贯串始终。所谓IOC,对于spring框架来说,就是有spring来负责对象的生命周期和对象间的关系:传统的开发模式:对象之间相互依赖。类似于找女朋友,哪里有长得漂亮,身材又好的女孩子,打听她们的兴趣爱好,手机号码,QQ号码,想尽一切办法去认识她,投其所好,这个过程是复杂和深奥的。我们必须自己设计和面对每个环节,
2016-08-24 23:39:16
479
原创 Spring 的概况
一、基本概念: spring是一个轻量级控制反转和面向切面的容器框架,它主要是为了解决企业应用开发的复杂性诞生的。1、目的:解决企业应用开发的复杂性,20032、功能: 使用基本的JAVABean代替 EJB 并且提供了更多的企业级应用功能,代替EJB3、范围: 任何java应用 Spring的用途,不仅仅是服务器端的开发,从简单性,可测试性,松耦合性
2016-08-23 22:51:36
547
原创 rocketMQ 消息查询(id,key) 运维命令以及java API的用法
MQ相关介绍:http://blog.youkuaiyun.com/luckyzhoustar/article/details/51286554RocketMq是一个纯Java、分布式、队列模型的的开源的消息中间件,但是目前相关的资料较少,所以出现了问题很难找到解决方案。1、MQ 消息生产:http://blog.youkuaiyun.com/luckyzhoustar/article/detai
2016-08-18 22:15:05
22950
转载 Java初始化顺序
1 无继承情况下的Java初始化顺序:class Sample{ Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用");
2016-06-06 10:01:47
397
转载 spring加载bean实例化顺序
问题来源:有一个bean为 A,一个bean为B。想要A在容器实例化的时候的一个属性name赋值为B的一个方法funB的返回值。如果只是在A里单纯的写着:private B b;private String name = b.funb();会报错说nullpointException,因为这个时候b还没被set进来,所以为null。解决办法为如下代码,同
2016-06-03 16:35:04
4874
原创 Java编程基础知识复习:变量与数据类型<数据类型初阶>
1、java定义基本数据类型、引用数据类型和自定义类型。2、栈空间 1、栈空间存取数据的效率高。 2、栈中的数据按 先进先出 的方式管理 3、栈空间存储空间较小,不能存放大量数据2、堆空间 1、堆空间村居数据效率较低2、数据方法的位置随机分配3、堆空间存储数据的空间大,能存放大容量的数据。(字
2016-04-27 20:58:22
376
原创 计算机系统的数位与进制
计算机系统的数制1、数制是用一组固定的符号和统一的规则来表示数值的方法。2、计算机底层使用的是数制是二进制。3、用java编程使用的是十进制。java底层仍使用二进制。4、计算机常用的数值还八进制和十六进制。十进制的进本数字是 0-9,逢十进位10称做 基数, 10^n(10的n次幂)被称做 权实例 23678= 2*10000+2*1000+6*100+7*1
2016-04-27 20:46:21
1778
原创 centos7 防火墙 错误 (坑)
centos7中 防火墙以及端口号的 启动。1、centos7中 取消了iptables ,只能使用firewall。2、安装tomcat 后,并启动tomcat,发现访问不通,检查tomcat配置文件,端口号没错是8080,确认端口号是否启用,telnet 182.169.*.*(虚拟机ip) 8080, 无法使用,使用firewall-cmd --query-port=808
2016-03-30 19:17:25
9792
3
原创 centos7上配置nexus(坑)
最近在尝试自己搭建一个maven私服。准备坑在自己的电脑上装了个虚拟机(VMware-workstation-full-10.zip)系统版本(CentOS-7-x86_64-Everything-1511.iso)先装jdk(jdk-7u79-linux-x64.tar.gz)准备nexus(nexus-2.12.1-01-bundle.tar.gz)所有的安装包都准备好。准
2016-03-24 22:23:37
2448
原创 redis练习手册<十三>Redis发布订阅
Redis 的 pub sub实现了邮件系统,发送者(在 Redis 术语中被称为发布者)发送的邮件,而接收器(用户)接收它们。由该消息传送的链路被称为信道。Redis客户端可以订阅任何数目的通道。Redis的Pub/Sub系统可以构建实时的消息系统,比如很多用Pub/Sub构建的实时聊天系统的例子。常用命令:Related commandsPS
2016-02-15 15:13:51
503
转载 redis练习手册<十二>zset主要操作函数小结
http://blog.youkuaiyun.com/love__coder/article/details/8676223redis支持有序集合,即sorted set。sorted set在set的基础上,增加了排序属性,是set的升级版。这里简要谈谈sorted set的常用函数:1)inserta) zadd语法:zadd key score
2016-02-15 10:41:02
1726
转载 redis练习手册<十一>set主要操作函数小结
redis set 是string类型对象的无序集合,set不管存储多少对象,对存储对象的add,remove和test操作的时间复杂度是O(1)。set最多能包含 232 - 1 个member。1、增加语法:sadd key member[member...] 解释:对特定key的set增加一个或多个值,返回是增加元素的个数。注意:对同一个member
2016-02-14 17:08:01
603
转载 redis练习手册<十>hash主要操作函数小结
hash是一些列key value(field value)的映射表。常常用其存储一些对象实例。相对于把一个对象的各个字段存储为string,存储为hash会占用更少的内存。为什么会更省内存呢?需要搞清楚两个配置(hash-max-zipmap-entries和hash-max-zipmap-value)的含义,配置的详细介绍,我打算放在最后的配置优化环节讲。1)新增a)hse
2016-02-14 15:59:22
473
转载 redis练习手册<九>List主要操作函数小结
在总结list之前,先要弄明白几个跟list相关的概念:列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出。表头元素:列表最左端第一个元素。表尾元素:列表最右端的最后一个元素。不包含任何元素的列表成为空列表。1)新增a)lpush语法:lpush key value[value]解释:把一个或多个元素插入表头。
2016-02-14 13:53:47
524
转载 redis练习手册<八>string主要操作函数小结
1、新增a)set语法:set key value解释:把值value赋给key,如果key不存在,新增;否则,更新[plain] view plaincopy[root@xsf001 ~]# redis-cli redis 127.0.0.1:6379> set user.1.name zhangsan #设置user.1.name 为zhangs
2016-02-13 16:00:24
517
N++文本编辑器
2015-05-06
redis.conf 配置文件 中 daemonize 守护线程
2016-01-29
该如何理解SOA(面向服务的体系结构)
2015-12-01
java double 科学计数法 的转换
2015-11-26
Httpclient4.3 设置请求超时的问题呢
2015-09-18
redis储存数据的地方?
2015-09-05
关于读写分离、数据同步的问题
2015-09-04
linux redis-cli 根据端口号进入交互页面
2015-08-27
关于jqGrid 表单重新加载的问题
2015-01-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人