摘要: 一、知识简介 最近在看字符串算法了,其中字典树、AC自动机和后缀树的应用是最广泛的了,下面将会重点介绍下这几个算法的应用。 字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value 映射,只不过 Trie 的 key 只能是 阅读全文
posted @ 2018-03-08 21:38 BarryW 阅读(229) 评论(0) 推荐(0) 编辑
摘要: TCP与UDP区别总结:1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付3、TCP面向字节流,实际上是TCP把数据看 阅读全文
posted @ 2018-03-08 21:14 BarryW 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 一、前言 项目中用到的SSO,使用开源框架cas做的。简单的了解了一下cas,并学习了一下 单点登录的原理,有兴趣的同学也可以学习一下,写个demo玩一玩。 二、工程结构 我模拟了 sso的客户端和sso的服务端, sso-core中主要是一些sso需要的过滤器和工具类,缓存和session共享的一 阅读全文
posted @ 2018-03-08 21:03 BarryW 阅读(729) 评论(0) 推荐(0) 编辑
摘要: MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求。下面我列出这些MQ之间的对比数据和资料。 第一部分:RabbitMQ,ActiveMq,ZeroMq比较 1、 TPS比较 一 ZeroMq 最好, 阅读全文
posted @ 2018-03-08 20:56 BarryW 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 英文原始出处: Bloom filter for Scala, the fastest for JVM 本文介绍的是用Scala实现的Bloom filter。 源代码在github上。依照性能测试结果,它是JVM上的最快的Bloom filter实现。零分配(Zero-allocation)和高度 阅读全文
posted @ 2018-03-08 17:03 BarryW 阅读(2438) 评论(0) 推荐(0) 编辑
摘要: Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,B 阅读全文
posted @ 2018-03-08 16:36 BarryW 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 数据量的问题是很多面试笔试中经常出现的问题,比如 google、淘宝、百度、 腾讯 这样的一些涉及到海量数据的公司经常会问到。 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直 阅读全文
posted @ 2018-03-08 16:04 BarryW 阅读(771) 评论(0) 推荐(0) 编辑
摘要: Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider 阅读全文
posted @ 2018-03-08 15:42 BarryW 阅读(20995) 评论(0) 推荐(2) 编辑
摘要: 项目码云GIT地址:https://gitee.com/xshuai/dubbo/ dubbo-admin-2.5.3下载地址:http://pan.baidu.com/s/1bozCMzP zookeeper下载地址:http://www-eu.apache.org/dist/zookeeper/ 阅读全文
posted @ 2018-03-08 14:11 BarryW 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 延时队列,第一他是个队列,所以具有对列功能第二就是延时,这就是延时对列,功能也就是将任务放在该延时对列中,只有到了延时时刻才能从该延时对列中获取任务否则获取不到…… 应用场景比较多,比如延时1分钟发短信,延时1分钟再次执行等,下面先看看延时队列demo之后再看延时队列在项目中的使用: 简单的延时队列 阅读全文
posted @ 2018-03-07 22:47 BarryW 阅读(41830) 评论(1) 推荐(4) 编辑
摘要: 在多节点的项目中,经常要涉及到某些方法加锁的控制。而这个时候,简单易用的synchronized已经不能满足多节点的部署结构。 之前在项目中,用的比较多的是数据库的更新锁:for udpate。但是这个有个缺点,就是对于本来就容易出现瓶颈的数据库,造成了更大的压力。同时,如果是锁表的语句,同时表数据 阅读全文
posted @ 2018-03-07 22:41 BarryW 阅读(538) 评论(0) 推荐(0) 编辑
摘要: 项目中有些业务方法希望在有缓存的时候直接从缓存获取,不再执行方法,来提高吞吐率。而且这种情况有很多。如果为每一个方法都写一段if else的代码,导致耦合非常大,不方便后期的修改。 思来想去,决定使用自动注解+Spring AOP来实现。 直接贴代码。 自定义注解类: 这个注解方便我们标志那个方法需 阅读全文
posted @ 2018-03-07 22:40 BarryW 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 之前在介绍Spring Redis进行存储的时候,都是通过RedisTemplate中的defaultSerializer,即JdkSerializationRedisSerializer。通过Jdk的序列化比较简单,但是有时候线上调试的时候通过控制台查看,完全看不出来存储了什么东西。而且在空间占用 阅读全文
posted @ 2018-03-07 22:39 BarryW 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 摘要: 主要针对Dao层的一些数据库查询的操作,数据实时性不强,直接加入缓存。当缓存中有的时候,就使用缓存中的数据。这样的方法,最终仅仅使用一个注解实现。对于之前的hibernate二级缓存使用,比较陌生。比如是否支持Redis或者可以自己开发支持。是否支持针对部分需要加入缓存的方法配置,而不是所有 阅读全文
posted @ 2018-03-07 22:36 BarryW 阅读(550) 评论(0) 推荐(0) 编辑
摘要: 对于Redis脚本使用过的同学都知道,这个主要是为了防止竞态条件而用的。因为脚本是顺序执行的。(不用担心效率问题)比如我在工作用,用来设置考试最高分。 如果还没有用过的话,先去看Redis脚本的介绍,发送脚本,缓存脚本,发送sha1执行脚本,以及基本的lua脚本的语法。 1. Redis脚本的使用场 阅读全文
posted @ 2018-03-07 22:35 BarryW 阅读(590) 评论(0) 推荐(0) 编辑
摘要: 目前我所知道的Redistemplate里面,我没有使用到的就是管道。这个可以进行批量的读写。类似于jdbc的batch。还有就是Redis的集群部署。但是由于我业务里没有这种需求,所以没有使用无法给大家进行讲解。 遇到的问题有: 1.序列化器。 由于我是配置了全局唯一一个RedisTemplate 阅读全文
posted @ 2018-03-07 22:35 BarryW 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 上一篇说了RedisTemplate对注解事务的支持,以及提供的序列化器。 事务需要开启enableTransactionSupport,然后使用@transactional注解,里面直接通过回调的connection,就不需要自己进行multi和exec的事务开启提交了。但是通过回调去获取conn 阅读全文
posted @ 2018-03-07 22:33 BarryW 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章我们讲解了RedisTemplate的基本使用,通过RedisCallback来获得connection,然后去操作Redis。网上的教程,大部分也都是这样的操作。 这个类似于HibernateTemplate里面提供的executeWithNativeSession方法,是Java中的一 阅读全文
posted @ 2018-03-07 22:32 BarryW 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 关于spring redis框架的使用,网上的例子很多很多。但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么优秀的一个框架。这里,我们就对比之前对spring orm中对hibernate的使用,来理解使用s 阅读全文
posted @ 2018-03-07 22:31 BarryW 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 最近在开发的时候,发现之前APP客户端的一部分页面用的是webview交互,这些页面请求很多,打开一套试卷,将会产生100+的请求量,导致系统性能下降。于是考虑在最靠近客户端的Nginx服务器上做Redis缓存。综合了下网上对于php缓存的资料,经过一番改动,终于搭建成功。由于网上的是针对php的, 阅读全文
posted @ 2018-03-07 22:26 BarryW 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 对于ActiveMQ消息的发送,原声的api操作繁琐,而且如果不进行二次封装,打开关闭会话以及各种创建操作也是够够的了。那么,Spring提供了一个很方便的去收发消息的框架,spring jms。整合Spring后,代码不仅变得非常优雅,而且易用性和扩展性更好。 废话不多说,直接开搞。 1. mav 阅读全文
posted @ 2018-03-07 22:19 BarryW 阅读(700) 评论(0) 推荐(0) 编辑
摘要: 最近的项目中用到了mq,之前自己一直在码农一样的照葫芦画瓢。最近几天研究了下,把自己所有看下来的文档和了解总结一下。 一. 认识JMS 1.概述 对于JMS,百度百科,是这样介绍的:JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件 阅读全文
posted @ 2018-03-07 22:14 BarryW 阅读(2137) 评论(0) 推荐(0) 编辑
摘要: 龙果支付系统是国内首款开源的互联网支付系统,其核心目标是汇聚所有主流支付渠道,打造一款轻量、便捷、易用,且集支付、资金对账、资金清结算于一体的支付系统,满足互联网业务系统的收款和业务资金管理需求。 主要特点: 1. 具备支付系统通用的支付、对账、清算、资金账户管理、支付订单管理等功能; 2. 目前已 阅读全文
posted @ 2018-03-07 19:53 BarryW 阅读(13282) 评论(0) 推荐(0) 编辑
摘要: 1. 商家开通支付 1.1 在用户信息页面添加用户,系统会自动生成对应的资金账户 1.2 添加支付产品 1.3 在支付产品列表添加支付方式,支付费率是支付系统用来计算商家手续费,单位:%,将支付产品上架 1.4 在用户支付配置页面添加支付配置信息,绑定已上架的支付产品 收款方式:如果是商家收款,则需 阅读全文
posted @ 2018-03-07 19:51 BarryW 阅读(2486) 评论(0) 推荐(0) 编辑
摘要: 前一段一直在研究支付宝的扫码支付,不得不说,支付宝的文档写的真是一个烂(起码在下刚开始看的时候是mengbi的)。文档上面的示例和demo里面的示例长的完全不一样。往往文档上面的例子很简单,而demo的代码写的很复杂,所以一开始就不知道该采用哪个代码,后来仔细看了一下demo的那些包里面的代码,发现 阅读全文
posted @ 2018-03-07 17:27 BarryW 阅读(2147) 评论(0) 推荐(0) 编辑
摘要: 一般来说,银行会提供两种支付途径:无跳转的快捷支付接口和带跳转的网银接口。前者在绑卡,支付的时候,不需要跳到银行页面上去处理,后者则需要在银行的网银页面上完成。显然前者对用户来说体验要好多了,用户流程不会被打断。快捷支付要求支付系统在本地保存用户的支付信息,如卡号,登记手机。系统要确保这些信息不被泄 阅读全文
posted @ 2018-03-07 15:17 BarryW 阅读(534) 评论(0) 推荐(0) 编辑
摘要: 支付网关前置 支付网关前置是对接业务系统,为其提供支付服务的模块。它是所有支付服务接口的集成前置,将不同支付渠道提供的接口通过统一的方式呈现给业务方。这样接入方就只需要对接支付网关,增加和调整支付渠道对业务方是透明的。 支付网关前置的设计对整个支付系统的稳定性、功能、性能以及其他非功能性需求有着直接 阅读全文
posted @ 2018-03-07 15:16 BarryW 阅读(989) 评论(0) 推荐(0) 编辑
摘要: 导读: 在支付系统中,支付网关和支付渠道的对接是最核心的功能。其中支付网关是对外提供服务的接口,所有需要渠道支持的资金操作都需要通过网关分发到对应的渠道模块上。一旦定型,后续就很少,也很难调整。而支付渠道模块是接收网关的请求... 在支付系统中,支付网关和支付渠道的对接是最核心的功能。其中支付网关是 阅读全文
posted @ 2018-03-07 15:15 BarryW 阅读(1116) 评论(0) 推荐(0) 编辑
摘要: 思路 OSGi每个模块都有自己独立的classpath。如何实现这一点呢?是因为OSGi采取了不同的类加载机制: OSGi为每个bundle提供一个类加载器,该加载器能够看到bundle Jar文件内部的类和资源; 为了让bundle能互相协作,可以基于依赖关系,从一个bundle类加载器委托到另一 阅读全文
posted @ 2018-03-07 14:34 BarryW 阅读(1054) 评论(0) 推荐(0) 编辑
摘要: 定义 OSGi(Open Service Gateway Initiative)技术是面向Java的动态模型系统。 这个框架实现了一个优雅、完整和动态地组价模型。应用程序(称为bundle)无序重新引导可以被远程安装、启动、升级和卸载。 OSGi服务平台提供在多种网络设备上无需重启的动态改变构造的功 阅读全文
posted @ 2018-03-07 14:29 BarryW 阅读(320) 评论(0) 推荐(0) 编辑
摘要: osgi最明显的缺陷 bundle尽管可以为隔离的服务建立独立生命周期管理的热部署方式,以及明确的服务导出和导入依赖能力,但是其最终基于jvm,无法对bundle对应的服务实现计算资源的隔离,一个服务的故障依然会导致整个jvm crush,这使得在一个运行时的osgi上部署模块级服务只获得了模块部署 阅读全文
posted @ 2018-03-07 14:25 BarryW 阅读(1511) 评论(1) 推荐(1) 编辑
摘要: 框架比较 TDDL Amoeba Cobar MyCat 点评 TDDL不同于其它几款产品,并非独立的中间件,只能算作中间层,是以Jar包方式提供给应用调用。属于JDBC Shard的思想,网上也有很多其它类似产品。 另外,网上有关于TDDL的图,如http://www.tuicool.com/ar 阅读全文
posted @ 2018-03-07 14:12 BarryW 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 第一部分: Servlet不是线程安全的。 要解释Servlet为什么不是线程安全的,需要了解Servlet容器(即Tomcat)使如何响应HTTP请求的。 当Tomcat接收到Client的HTTP请求时,Tomcat从线程池中取出一个线程,之后找到该请求对应的Servlet对象并进行初始化,之后 阅读全文
posted @ 2018-03-07 11:45 BarryW 阅读(669) 评论(0) 推荐(0) 编辑
摘要: 在分布式开发中,锁是线程控制的重要途径。Java为此也提供了2种锁机制,synchronized和lock。做为Java爱好者,自然少不了对比一下这2种机制,也能从中学到些分布式开发需要注意的地方。 我们先从最简单的入手,逐步分析这2种的区别。 一、synchronized和lock的用法区别 sy 阅读全文
posted @ 2018-03-06 22:39 BarryW 阅读(8522) 评论(0) 推荐(1) 编辑
摘要: 首先一个思维导图来看下Tomcat的类加载机制和JVM类加载机制的过程 类加载 在JVM中并不是一次性把所有的文件都加载到,而是一步一步的,按照需要来加载。 比如JVM启动时,会通过不同的类加载器加载不同的类。当用户在自己的代码中,需要某些额外的类时,再通过加载机制加载到JVM中,并且存放一段时间, 阅读全文
posted @ 2018-03-06 16:55 BarryW 阅读(804) 评论(0) 推荐(0) 编辑
摘要: Netty的主要组成模块: Channels Callbacks Futures Events 和 handlers 这些模块代表了不同类型的概念:资源,逻辑和通知。你的应用将会利用这些模块来获取网络和网络上的数据。 对每个组件,我们会给出一个基本的定义,并且在合适的情况下,用一个简单的代码实例说明 阅读全文
posted @ 2018-03-06 16:44 BarryW 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 了解人了解工作可以在公司,但了解人一定要在工作场合外,所以我要求每周五早上周会结束后,中午我们一起出去找好吃的,要求是尽量不重复。刚开始时我掏钱,后来是大家自愿AA,新人等转正之后才参与平摊,之前都是老人之间分摊。饭桌上才能什么都聊,爱好、家庭、业余生活,原本不熟悉的人,很快就拉近距离了。 了解事交 阅读全文
posted @ 2018-03-06 14:56 BarryW 阅读(290) 评论(0) 推荐(0) 编辑
摘要: hikari druid c3p0 dbcp jdbc 阅读全文
posted @ 2018-03-04 22:32 BarryW 阅读(2122) 评论(0) 推荐(0) 编辑
摘要: 我觉得事务的管理不应该属于Dubbo框架, Dubbo只需实现可被事务管理即可, 像JDBC和JMS都是可被事务管理的分布式资源, Dubbo只要实现相同的可被事务管理的行为,比如可以回滚, 其它事务的调度,都应该由专门的事务管理器实现。 在Java中,分布式事务主要的规范是JTA/XA, 其中:J 阅读全文
posted @ 2018-03-04 22:26 BarryW 阅读(18624) 评论(0) 推荐(0) 编辑
摘要: 分布式系统架构中,分布式事务问题是一个绕不过去的挑战。而微服务架构的流行,让分布式事问题日益突出! 下面我们以电商购物支付流程中,在各大参与者系统中可能会遇到分布式事务问题的场景进行详细的分析! 如上图所示,假设三大参与平台(电商平台、支付平台、银行)的系统都做了分布式系统架构拆分,按上数中的流程步 阅读全文
posted @ 2018-03-04 22:22 BarryW 阅读(13914) 评论(0) 推荐(0) 编辑