`
futurep_p
  • 浏览: 65478 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
        秒杀,这个源于淘宝的名称,现在已经为大家所熟知,本质是用户对于稀缺资源的竞购,整个过程以秒级为单位的时间内瞬时完成。而在分布式环境下,这个简单的名词背后对技术的要求却是极高的,架构师需要从整体平衡角度出发,做好设计才能从容应对。        在对稀缺资源的竞购过程中,应充分考虑从打开页面、不断刷新、下单、支付、扣库存、发货这整个过程进行优化提升,包括静态资源的CDN缓存,AJAX异步数据加载,数据缓存,IP限流,库存控制优化等等。 大致的部署结构如下:   其他关于高并发的优化文章很多,这里不再赘述,本文着重介绍WeX云金融系统的库存控制的演化历程,大致经历了三个阶段 ...
WeX云金融(www.wexyun.com)系统源于微财富(www.weicaifu.com)平台建设,后逐步演进为开放式的金融SaaS平台,目的是让更多传统型、创业型金融企业跨越技术障碍,使得自身金融业务能力得以在互联网快速延伸,最终成为互联网金融强有力的一员,为金融改革贡献自己的一份力量。   微财富作为最早的互联网理财平台之一,定位为面向个人的一站式资产管理平台。业务上不断创新验证,引领了互联网票据理财市场,开创了酒店类、白酒类等消费金融的另类理财先例,同时还积极拓宽平台的金融产品品类,包括基金、保险、黄金、私募等。随着业务的不断发展,系统经历了从无到有,不断升级完善的过程,最终形 ...
     WeX云金融为合作企业提供互联网金融服务方案,以SaaS云技术解决方案为核心,提供系统搭建到服务运维、运营推广和品牌打造的互联网金融一站式产品服务。完成域名解析指向WeX云金融提供的指定域名即可拥有专属的互 ...
基于spring MVC体系下,本身提供了CharacterEncodingFilter支持,使得大部分情况可以通过此filter来完成字符集转码,但在一种情况下,即在http get方式提交的中文参数无法完成正确的转码,原因是request.setCharacterEncoding(charset)只能完成消息体的内容有作用,而对地址参数中的中文无法完成。 有两种方式可以完成 一、在tomcat的server.xml中配置connector上配置URIEncoding <Connector port="8080" protocol="HTTP/1. ...

经历永不悔

个人一向崇尚的一句话是,经历无论好坏,对个人都是财富,只不过在人生的不同阶段体现出来而已,这也是我我认为印度电影《贫民窟的百万富翁》所表达的思想 我也经常会反思自己的选择,因为不同的选择所带给个人的影响是不一样的 有时想,我当时不离开支付宝会是怎么样?现在会到什么样的层次? 但马上我又会说服自己,选择无悔! 总结自己的经历,收获颇多 可以在外部吵杂的环境中学会面对各种问题,积累丰富的实战经验; 可以在不规范中,调整心态,突出重围,对心和技能都是难能可贵的洗礼; 可以从更高的层次来看待问题,深入理解支付业务及系统的架构原理; 可以经历第三方支付业务及系统从无到有得全过程,精通相关 ...
时隔两年决定重拾博客,对自己经验及感悟做一下记录,并不想教导什么,只想一方面可以沉淀自己的经验,另一方面如果能帮助别人就再好不过了。 前段时间有一大型电商客户在检查目前已有支付系统不足时描述到,目前系统依赖混乱,职责错位,应用间还存在交叉访问数据库,单表数据量大,效率低下,测试资源竞争严重等。 针对这样的现状,只有从整体架构的角度来审视,回复观点如下 从网络硬件架构角度 动静分离,静态资源缓存;  内外网络分离,提高内部应用访问安全性  web应用、业务应用、核心应用、数据库网段分离,提高安全性、稳定性及可扩展性;
我刚进入金融行业时,就知道了IS08583报文协议,我想可能我还没进入这个行业都已经听过了,可知ISO8583的影响力有多大了。最初刚接触它时,确实对其中的一些细节概念不是很清晰,对有些地方比较迷惑。鉴于此,我想很多同 ...
前提:表字段包含:创建时间、最后修改时间。时间字段为timestamp类型。 要求:统计业务执行耗时,单位毫秒,分区间统计。 执行: select stat, count(*) from (select case when milli <= 10 then 'time<=10' when milli > 10 and milli <= 20 then '10<time<=20' ...
    现状:你是不是还在为自己的TestCase代码杂乱无章而苦恼,咎其根本还在于针对不同的用例,输入参数和mock信息的组装全部作为你的程序代码分布在各个单元测试程序中。   期望:因此为了让测试程序更加优雅的显示作为code的本质,我们需要把输入参数和mock内容与程序本身尽可能的达到松耦合的布局,即程序归程序,用例数据归用例数据。   如何:我们怎么来完成这样的一个分离动作呢,下面讲讲本人实现的基本思路。利用JUNIT4中的参数化测试为基础,通过解析文件来初始化参数信息,并对用例提供注销控制。   下面我们着重介绍下实现BaseTestCase.   @RunWith(Par ...
  进入好长一段时间的调整期,心情不好的时候很多,但要如何调整自己的心态就要看个人的EQ了,大道理谁都懂,如何能好好的应用到自己的身上并非易事。记得很早的时候看到过一句话,男人要学会强大自己,才能得到自己心爱的女孩。同理适用于工作上。强大自己是不会有错的,到时你可以摒弃你厌恶的一切。   so,多花点时间在学习上吧!
Factory(工厂模式):对象产生过程的闭合控制 客户端不需要关心对象的产生过程。工厂替你完成这些琐碎的事情。 需求往往是要根据不同类型生产特定的对象。如if(test == 1){return 1;} else {return 2}。通常可以结合singleton模式,并可以通过map分类完成。   Builder(建造模式):对象部件的产生过程的闭合控制 建造模式和工厂模式的使用场景不同,建造模式更关注结果对象的组成部分,而它的目的是将各个组成部分的构建过程对外隐蔽。 常用的例子是构建汽车的各个组成部分,但汽车这样的场景应用不会太多。 举个更常见的例子:任务包括两个部分:任务校验器和任 ...
  eclipse里常常会看到一片的感叹号,既然出现了感叹号就说明代码有不严谨的地方。本人是非常讨厌出现这样的提示的,或许有人会说,那你设置下eclipse,把警告全部去掉了。但这只是掩耳盗铃的做法,没有根本上解决问题。下面看看有哪些问题是经常出现的: 1、多余的import; 2、未引用的定义; 3、没有对可选对象的泛化; 4、实例对象引用静态变量(方法)。   好像列举出来最常出现的就这么4种,那为什么我们不能在写代码的时候规范下呢,让自己的代码更漂亮呢。其实代码风格也是可以看出一个人做事的风格,只有存在想着让自己做的事情尽量的完美,你才会有动力去改变你的代码风格,去完善每段代 ...
    利用数据库小表完成大批量数据的锁定目的,即批量任务锁。目的是为了保证操作特定任务的排他性,是一种相对乐观锁,因为它操作的不是处理数据本身,而是独立于这些数据之外,在另一张数据库表描述了操作数据的摘要,也就是关键字。     打个比方,比如现在桌上放着厚厚的20叠百元大钞(这些钱给我就爽了),现在有2个会计要对这些钞票清点,因为考虑到两个会计的点钞速度有区别,当又要达到相对相等的时间完成,他们先对20叠钞票分成20小份,并对每份做了一次1到20的编号。现在针对点钞这个动作我们就可以用到了批量任务锁,那么锁的关键字就是【动作】+【编号】,如点钞1,点钞2等。这里点钞1和点钞2是不存在排他性 ...
   当java需要调用.net的webservice服务时,我们希望通过显式的代码调用,而且也有相当好的maven插件可供使用,如axis的wsdl2code,下面就以此为例,对整个过程搞个step-by-step吧。  1、配置pom.xml,引入axis2-wsdl2code-maven-plugin。还有就是axis的相关包依赖,下面是插件配置: <build> ...... <plugins> <plugin> <groupId>org.apache.axis2</groupId> < ...
   实现缓存的方式有很多,而在spring框架下,通常我们可以通过它的单例模式简单达到缓存对象的目的。   这里着重介绍缓存信息如何达到在系统启动时初始化,并延伸出简单的使用缓存工具类,达到两者较好的结合效果。下 ...
Global site tag (gtag.js) - Google Analytics