- 博客(35)
- 资源 (1)
- 收藏
- 关注
原创 OpenFeign返回参数统一处理
全价有效,FeignClientCustomDecoderConfig需要配置@Configuration 进行标记,局部有效则去掉。没有配置的默认使用SpringDecoder 进行解码。
2024-10-26 20:30:35
288
1
原创 简单工厂+策略模式在工作中的运用
1.好久没写博客了,竟然有人给我点赞和关注我。在这里结合最近工作做用的设计模式 分享一下简单工厂模式+策略模式在工作中的实际运用。场景可能如下:假设我们要写一个放款的接口,对接的资金方有华夏银行、晋中银行、南京银行等资金方。每个资金方放款的流程、实现的逻辑、上送的参数等可能不相同,但在我们业务的主体类放款逻辑是一样的,只是放款的实现不同而已。通常的做法是使用if(南京银行) 写南京银行的业务逻辑...
2019-04-25 00:10:10
1570
原创 CopyOnWriteArrayList实现原理
1.CopyOnWrite容器即写时复制的容器。当我们新添加一个元素到容器时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器...
2018-08-10 10:03:39
665
原创 ThreadLocal实现原理
1.ThreadLocal可称为线程局部变量or本地线程变量,该类的作用是为每个线程都创建一个变量副本, 每个线程都可以修改自己所拥有的变量副本, 而不会影响其他线程的副本. 其实这也是解决线程安全的问题的一种方法。2.变量副本是什么时候“复制”到threadlocal中的呢?这里“复制”两个字用的很不专业。准确的说,应该是,变量副本【每个线程中保存的那个map中的变量】是怎么声明和初始化的?...
2018-08-08 18:03:22
271
原创 springcould-eureka 注册中心
1.创建父工程<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/...
2018-07-30 11:57:21
482
原创 LinkedBlockingQueue实现原理
1.LinkedBlockingQueue实现原理:源码分析如下public class LinkedBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, java.io.Serializable { private static final long serial...
2018-07-03 09:05:35
2281
原创 ArrayBlockingQueue实现原理
1.ArrayBlockingQueue底层实现是通过数组来实现的,按照先进先出的原则,通过ReentrantLock lock 重入锁来锁住当前竞争资源,使用Condition notEmpty,Condition notFull来实现生产者-消费者模式(通知模式)。下面ArrayBlockingQueue添加和取出元素的源码可以看做生产者-消费者模式。public class ArrayBlo...
2018-07-02 09:55:31
1534
原创 InitializingBean,FactoryBean接口在spring源码中的使用代码片段
1.InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法, 凡是继承该接口的类,在初始化bean的时候会执行该方法. 该方法将在所有的属性被初始化后调用,但是会在init前调用。2.在spring-orm.jar中的SqlMapClientFactoryBean类就使用到InitializingBean接...
2018-06-29 10:18:10
589
转载 InitializingBean接口和BeanPostProcessor接口
1.可用来修改bean对象的BeanPostProcessor 点击打开链接2.InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法, 凡是继承该接口的类,在初始化bean的时候会执行该方法. 该方法将在所有的属性被初始化后调用,但是会在init前调用。...
2018-06-29 08:53:22
978
转载 spring 中 isolation 和 propagation 详解
1.spring 中 isolation 和 propagation 详解 点击打开链接
2018-06-28 15:42:29
886
转载 Activemq消息确认机制
1.消息的确认机制详解。点击打开链接2.消息签收模式和持久化模式。点击打开链接3.ActiveMQ的设置消息时长,事务,确认机制 ,持久化。点击打开链接
2018-06-28 10:05:49
2404
转载 ibatis 批量插入oracle 数据库
<insert id="insertintoragroupra" parameterClass="map"> insert all <iterate conjunction=" " property="ragrouppreinsert"> into t_user (ISSUER_CODE, ISSUER_NAME,CARD_NO_LEN) val
2018-06-22 18:33:38
982
原创 js金额四舍五入格式化
js代码: function number_format(number, decimals, dec_point, thousands_sep) { /* * 参数说明: * number:要格式化的数字 * decimals:保留几位小数 * dec_point:小数点符号 * th...
2018-05-29 10:50:08
1416
原创 使用线程池进行轮询重发机制
1.可以使用线程池来进行轮询重发机制,比如在消息推送,发送邮件,充值提现状的时候,可以使用线程池去轮询发送信息。比如:充值的时候浦发的他行卡充值,充值状态不是立即返回,需要人工的去查询回来,而充值的状态查询不是时时的将结果返回的。可能一分钟,五分钟,十五分钟其状态才是成功的。如果需求需要近可能快的将状态查询回来可以使用线程池去轮询将结果查询回来。在比如,发送极光推送/邮件,当消息推送失败的时候,如
2018-01-21 18:16:05
5636
原创 apache模板引擎结合spring框架的简单使用(org.apache.velocity)
1.org.apache.velocity模板引擎可以用在发送短信,极光推送,邮件等业务场景中。因为这些业务都有特殊的模板内容。比如app在用户生日时,会推送一条信息给用户,格式如下:尊敬的XXX客户,祝您生日快乐。可变的是用户的姓名,不变的是模板内容。像上诉的业务场景,可以使用该模板引擎。代码: 4.1.5.RELEASE
2018-01-20 11:18:41
9533
2
原创 启动一个异步线程去执行一个任务
1.业务场景: 浦发银行充值接口,他行卡充值不是实时将充值结果返回的,需要我们自己去手动去查。银行充值接口实现业务都是预计2小时到账,但如果需求修改发送充值接口后,立马去调用银行提供的状态查询接口,将状态查询回来时,需要启动一个异步线程将结果查询回来.代码编辑如下:<beans xmlns="http://www.springframework.org/schema/beans" xm
2018-01-19 21:54:48
11575
转载 join(),ReentrantLock结合Condition的await(),signal()的使用
1.join的使用点击打开链接2.Condition的使用点击打开链接
2017-12-04 21:29:47
475
原创 ZooKeeper学习之zookeeper的ACL(AUTH)
1.如果学想学习Zookeeper的watcher Api请点击这里:Watcher事件类型和ZK状态2.Zookeeper的ACL(AUTH)介绍:zookeeper的ACL(AUTH)ACL(Access Control List),Zookeeper作为一个分布式协调框架,其内部存储的都是一些关于分布式系统运行时状态的元数据,尤其是设计到一些分布式锁,Master选举和协调等应用
2017-09-13 01:23:22
7664
1
原创 Zookeeper学习之Watcher事件类型和ZK状态
zookeeper:Watcher、ZK状态,事件类型(一)zookeeper有watch事件,是一次性触发的,当watch监视的数据发生变化时,通知设置了该watch的client.即watcher.同样:其watcher是监听数据发送了某些变化,那就一定会有对应的事件类型和状态类型。 事件类型:(znode节点相关的) EventType:NodeCreated //节点创建 EventType:NodeDataChanged //节点的数据变更
2017-09-11 01:52:23
7620
原创 Zookeeper学习之源生API的使用(java与shell操作zookeeper)。
本文主要的内容有:zookeeper源生api的方法详解,使用shell、java代码对zookeeper进行操作。java代码操作zookeeper的目的主要是为了练习zookeeper-3.4.5.jar源生api的使用,练习的方法主要有,create,delete,setData,getData等方法。在使用java代码对zookeeper-3.4.5进行操作时,由于源生的api不支持删除根节点,所有自己新添了一些方法:比如递归的创建子节点、删除根节点等方法。
2017-09-10 15:01:58
1108
原创 Zookeeper学习之集群环境搭建
本文的内容主要是在192.168.110.135,192.168.110.136,192.168.110.137三台服务器,进行zookeeper集群环境搭建。1.相关运行环境。linux环境(CentOS-6.4-x86_64-bin-DVD1)、jdk-7u67-linux-x64.tar.gz、zookeeper-3.4.5.tar.gz。服务地址:192.168.110.135,192.168.110.136,192.168.110.137。2.使用root用户登录,先将/usr/local
2017-09-10 11:24:21
363
zookeepr学习相关软
2017-09-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人