自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(210)
  • 资源 (1)
  • 收藏
  • 关注

数据处理基于DataMicroservices实现

背景:谈到微服务化,肯定会想到容器,谈到java的微服务化,势必也想到spring cloud,但是谈到数据微服务化,可能或多或少大家不太理解。Data Microservices被提出来,是要解决现在数据时代下,需要解决如下几个痛点问题,不分先后次序:数据来源错综复杂,mq、rest、jdbc、log等数据的信息结构复杂多样化数据量很大,想象下爬虫、电商平台、新零售等容器...

2017-12-29 13:45:48 258

支持MapDB的Eventstore

背景:现在微服务大行其道,虽然微服务开山鼻祖是不建议在微服务下做分布式事务,领域驱动设计早已阐明,具有强一致性要求的一组业务概念,属于同一个聚合,不建议拆到不同服务中,从而尽可能避免分布式强事务一致性的处理。但是不可避免我们没有真的按照DDD领域驱动设计,那么微服务如何保持事务一致性呢?我们这里采用的EventStore的方式,有基于memory、jpa、jdbc等方式,我今天采用了Map...

2017-04-11 18:15:09 398

类文件结构解析

就很好奇反编译出来自己写的代码,这里主要使用了五个工具,idea intellij、010edit、jgui、bytecode viewer、eclipse。 HelloWorldpackage com.google;import java.util.ArrayList;import java.util.List;public class HelloWorl...

2017-03-30 15:39:46 314

使用Spring-Cloud搭建微服务架构

搭建一套微服务架构的,我个人觉得必须如下模块:config-serviceapi-gatewaycircuit-breakerregistrymonitor***-service第一步构建config-service,登录http://start.spring.io/,选择gradle、maven,基础信息,更重要是选择所需要依赖的 <dependen...

2017-02-16 14:00:22 549

电路熔断器(Circuit Breaker)自我思考

作者:美团点评技术团队链接:https://zhuanlan.zhihu.com/p/23711137来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。在我们的工程实践中,偶尔会遇到一些服务由于网络连接超时,系统有异常或load过高出现暂时不可用等情况,导致对这些服务的调用失败,可能需要一段时间才能修复,这种对请求的阻塞可能会占用宝贵的系统资源,如:内存,线程,数据库连...

2017-01-07 21:20:57 1010

DDD分布式架构设计的BASE一致性

问题背景:       在DDD的架构设计中最难以解决的就是一致性问题,所以我采纳是BASE的最终一致性的方式,至于最终一致性的概念,不在本博客中阐述,设计理念,不外乎就是弥补的方式。   可用性,无论是传统架构还是CQRS架构,都可以做到高可用,只要我们做到让我们的系统中每个节点都无单点即可。但是,相比之下,我觉得CQRS架构在可用性方面,我们可以有更多的回避余地和选择空间...

2016-08-09 16:32:27 487

原创 支持分布式的callback

项目背景:       之前在某次培训的分享中,谈到rxjava、vertx等开源框架,也了解到callback概念,在分享的中某位童鞋谈到分布式下callback如何处理,说实话在当时的环境能够通过几句话描述callback都比较困难,更何况描述分布式下的callback,所以本文我想通过基于jgroup的方式,更好阐述我的理解如何处理分布式下的callback。    ...

2016-08-03 13:10:08 220

基于DDD的微服务架构设计

DDD领域驱动设计(DDD:Domain-Driven Design)架构背景:    现有的架构设计实在受不了,业务的反反复复地变化,导致代码圈复杂度之深让人恐惧。之前的微服务架构经验让我更加彻底点,采用DDD领域驱动设计进行整个改变。    随着经过几个月的努力,确实慢慢地体会到ddd的架构设计的优势,聚合根设计能够协助我们整个服务改造,开发起来越来越迅速。 CQRS访...

2016-07-20 17:19:43 4607

从demo到支持高并发

前言:    Java语言作用很大,因有众多分门杂类的开源框架导致Javaer关注高并发细节问题偏少,常常被面试或者面试的时候,别人总是问你current的包,但是却很少人会询问你,“这段代码在高并发的情况下,会出现问题?我们应该如何改写呢?”所以本篇博客我想从最简单的demo,到支持高并发场景的,如果觉得过程中有问题问大家赐教。 案例:   经典多线程并发问题就是生产者消费者...

2016-02-25 18:16:26 328

Vert.x3支持JWT

知识背景:              那年还是菜鸟,开始暗恋Java,像其他的菜鸟一样开始慢慢接触面向对象,硕士之前接触都是c、c++,其实对于面向对象的理解停留在认知阶段,后来自嘲没有女朋友,我可以new一个出来,现在有暗恋开始明恋,到然后喜欢上python,不过自从接触vert.x3和RXJava、netty后,又再次燃烧起我的欲望,最近接收需要为app提供微服务,对于无状态的,没有s...

2015-12-28 20:48:32 303

MapDB的spring整合使用

MapDB是一个快速、易用的嵌入式Java数据库引擎,它提供了基于磁盘或者堆外(off-heap允许Java直接操作内存空间, 类似于C的malloc和free)存储的并发的Maps、Sets、Queues。业务场景:朋友公司需要根据坐标,在200m的地址库中寻找离该坐标最近的经纬度坐标,难点主要有以下两个:1.快速把坐标落点到二维的平面上区域,假设(-1,-1),应该落点到xy...

2015-12-15 23:26:24 457

基于Spring支持JMX

前言:      基于Vert写的组件,其中在使用过程中碰到若干瓶颈问题,如果每个组件都采用日志方式,查看资源使用情况略微低廉点,所以采用了JMX来进行管理工作。      提到JMX,就必须按照JMX的规范,写一大堆的MBean、MXBean、Agent等,想起来就挺麻烦的,这个时候想起来Spring支持JMX,发现虽然原理差不多使用MXBeanServer.register,但是就...

2015-11-08 00:43:13 266

Vertx与Spring配合完成DML操作

前言vertx相较于Tomcat不同之处引用oschina上关于vertx的文章,感觉他说得非常明白,不在这里过多讨论,这里我简单说明下如何在vertx和spring配合完成基础任务。 服务启动: public static void main( String[] args ) { ApplicationContext context = new Ann...

2015-10-29 14:26:58 660

基于Netty4网站架构

前言:       本人所在公司在业内比较知名的公司,但是其电商平台真的不敢恭维,都称不上架构,跟传统的软件公司差不多springMVC+Mybatis+redis挂载在nginx+tomcat下,不能说它有问题,就是在高并发、低IO消耗,且移动端使用频繁场景情况下,觉得需要进行改造,所以采用如下的方式:   说明:网关层:我们有部分是放在阿里云平台上,那么在运维层...

2015-10-28 10:44:57 264

Mybatis支持Protobuf

前言:       用netty搭建一套服务化,发现protobuf使用的场景较多,而且我们也想把bean类能够序列化后,放到redis或者数据库,可读性考虑我们想了几种方案xml、json,后来我突发奇想既然这样不如使用protobuf。 其实使用protobuf并不难,就是繁琐一点需要生成proto的文件,其它工作都由google来完成,而在mybatis或者数据层面中间处理过程...

2015-10-21 10:25:04 776

异常处理

首先提倡下Hibernate的验证器,功能强大且使用方面,Hibernate Validator提供包括国际化,传统的字符空,非法的输入等,而且给了很友善的message信息。public class BeanValidators { /** * 调用JSR303的validate方法, 验证失败时抛出ConstraintViolationException, 而不是返回con...

2015-10-08 16:12:54 161

依托于Spring重加载

这几天发现单位同事都在使用JRebel作为热部署工具,它集合多个容器,能够不在重启的情况下进行部署。我们在开发过程中,经常碰到改动xml等配置文件的时候,需要进行重新启动容器,重而带来开发进度缓慢。 我是一个传统的人,感觉WTP部署已经够强悍,但是看着90后小朋友玩这么酷炫的万一,让我由衷的觉得更加无聊的事情,不就是能够热部署,大不了写一个定时任务时不时的去加载xml文件,一直检测文件的...

2015-10-05 22:13:27 225

原创 绑定请求

public abstract class ThreadContext { /** * Private internal log instance. */ private static final Logger log = LoggerFactory.getLogger(ThreadContext.class); public st...

2015-10-03 10:01:17 122

Spring自定义拦截器配置

前言:公司生产环境频频被报性能瓶颈问题,为了找出问题的所在,现有的很多种方式能够解决,但是为了能够观测到具体的方法,我们想通过拦截那种耗时的方法,然后插入数据库,后台支撑系统能够实时的观察... 为了上述描述的结果,我们采用spring拦截器的方式,通过stopwatch的观察者模式,通过方法进入和方法退出来计算方法调用整个耗时情况 package spring.lifecy...

2015-09-27 10:02:49 180

AOP的切面思考

简单介绍下如何使用PointCut、Advisor @Component@Aspectpublic class LogAspect { private static final Logger log = LoggerFactory.getLogger(LogAspect.class); @Autowired TestService test...

2015-09-08 18:03:12 92

Antlr4的领域驱动语言实战

蛋疼的业务功能、蛋疼的流程、蛋疼的需求变更.....彻底地被折磨得不成人样,更加让我无法忍受的是,看着大家代码无数的圈复杂度,一层层地写if、else等逻辑处理语句,来进行控制业务功能的,但是被动的是,你就再怎么细心,也不可能覆盖到所有的测试用例。这里讲了一个领域的,是定义人类-》删除-》责骂-》剔除-》拥抱,编写g4文件grammar PersonableGrammar;p...

2015-09-06 23:01:18 259

异步调度设计

平常我们做应用功能的时候,经常会碰到A、B、C等多起事件取数据,进行组装后反馈结果集。 //用户信息userService.getProfile(userId);//用户信用信息accountService.getAccount(userId);//SNSsnsService.getSNS(userId);//send email\smsplatformSe...

2015-08-06 14:54:28 135

基于注解校验

基于注解的方式校验其实很多,但是在复杂模型方式方面,貌似未查询到,所以自己写了一个,主要是复杂的json串,将其生成Object,然后对于Object校验...注解申明不过于进行介绍,主要谈下配合反射进行递归校验过程,校验  这里以UrlParser校验,当然接口提供后可以有无数个比如money、date、身份证等,注解类@Target(ElementType.FIELD)...

2015-08-01 12:54:05 167

基于Antlr4编写DSL

Tiny最近新的模块DSL和UITemplate,都或多或少涉及到Antlr,特别在使用DSL的时候特别有感触,能否设计的像SQL那样的领域驱动型语言呢?我的对于DSL的理解:1.是用来解决复杂的业务模型而产生的,假设以计算机为例,采用代码的方式,可能就需要一大堆的判断,用来跟踪是否有有括号、是否有左括号没右括号、是否加减乘除优先制度等很多条件,那如果是业务模型像支付流程,比起计算机更加复杂...

2015-07-24 14:37:40 938

Anltr4的编写解释器

Tiny在上周上线TinyUiEnterprise的http://www.tinygroup.org/组件,经过反馈测试发现模板引擎的性能一直有问题,请查看jprofile 当然很多性能问题,我们正在完善中,诸如:非递归DFS、大对象生命周期、异步调用......但是放在我面前的却是把原先ClassLoader加载后,进行调用执行的方式变更为使用anltr的解释性语言去执行。通过一...

2015-07-09 13:23:19 336

基于K-Means算法,探索股票趋势的数据可视化

公司举办编程大赛,想到最近股票跌宕起伏,然后无心睡眠,所以跟我叔叔聊聊股市,叔叔操盘经常是选择A股票后,会购买B这只股票,但是A跟B之间单单从业务角度和股权分配都没有任何关系,至少从表面上是这么让人觉得。后来遵从他的劝解,我选择A\B两股,但是万万没想到的是跌得我想死,漫漫长夜,无心睡眠,起来骗点钱,看了些论文,着手把实现完成,主要使用到动态规划、排序和K-means算法结合下,进行归类那些不...

2015-07-05 21:44:27 1769

原创 红黑树

这篇文章http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html讲红黑树讲得非常好,直接拿过来放到ITEYE上,定义红黑树的主要是像是对2-3查找树进行编码,尤其是对2-3查找树中的3-nodes节点添加额外的信息。红黑树中将节点之间的链接分为两种不同类 型,红色链接,他用来链接两个2-nodes节点来表示一个3-no...

2015-06-18 14:42:30 67

基点排序

身份证号码都固定住,完全可以采纳基点排序的方式,归纳下基点排序复杂度,首先O(n+d),它没办法如同其他快排、冒泡等在不开辟额外空间的情况下进行自我排序,但是也没有归并排序等开辟如此大空间度。适应的应用场景比较具有局限性,恰巧在公司的一组固定长度的排序过程中,有很好的解决方式。主要用是通过bucket的概念,把数组迁移后,进行重排的过程,我的代码比较不够严谨,主要是能够帮我理清思路...

2015-06-17 15:15:45 184

原创 ITEM CF

 其中, S(u, K) 包含和用户 u 兴趣最接近的 K 个用户, N(i) 是对物品 i 有过行为的用户集合, w uv是用户 u 和用户 v 的兴趣相似度, r vi 代表用户 v 对物品 i 的兴趣,因为使用的是单一行为的隐反馈数据,所以所有的 r vi =1 。如下代码实现了上面的 UserCF 推荐算法:def Recommend(user, train, W):...

2015-02-10 16:42:52 108

原创 Slope One

Slope One 是一种很好理解的推荐算法,因为它的简单性而备受关注。网上有很多相关的博文介绍它的原理,但很少见到比较全面而且数学性比较强的介绍。我下面主要从数学的角度比较全面的介绍相关的三个算法。里面使用红色标记的文字是我自己的感想,欢迎大家的指正。 一些很好的参考文献算法提出的 paper:Slope One Predictors for Online Rating-Base...

2015-02-09 17:25:32 191

ubuntu server下python脚本迁移数据

因为是在Ubuntu下,所以安装python、pip、pymysql等都极其方便,sudo apt-get install pymysql,但是在安装cx_Oracle(连接oracle的模块)出现许多问题,查阅相关资料,发现这边文章能够帮我解决,希望大家少走点弯路。http://www.tbdazhe.com/archives/6021.安装python2.安装pip、pymys...

2015-01-14 11:35:25 149

动态规划DP在现代化物流的研究

硕士论文的研究主题就是动态规划在现代化物流中的研究方向,考虑该研究论文,实际是从现实环境中出发,本人所在的企业是O2O模式的IT企业,现有的Online基本已有很完善的解决方案,但是在Offline的物流方向却是比较让人纠结,在这里我提出几个关键性的问题,我相信在现实的以O2O模型为主导的企业也会遇到的。1.车载负重最大20t,如何优化能够尽可能的装多物品呢?2.在一个3000平的物流...

2014-10-25 20:40:18 110

log_lua记录行为日志

上篇讲到ngx_lua模块的安装,既然站在巨人的肩膀上,那么接下来就是把日志放入到文件中用的lua的脚本语言,IDE工具是mac  Sublime Text 3,以及windows Lua Editorlocal cjson = require "cjson"local logging = {}local function incr(dict, key, increm...

2014-09-22 14:33:50 3453

nginx安装 ngx_lua模块

 HttpLuaModule是淘宝开发的nginx的第三方模块,能将lua语言嵌入到nginx配置中这里我主要记录日志作用,用来记录关于用户在网站上行为的到log日志中,lua同样作为脚本语言发挥更大作用,诸如通过redis中的数据,直接返回json等格式数据相应给用户,我这里主要是存放入log中,然后做数据ETL处理,如果访问量非常大,进行离线情况下Map-reduce的分析处理。...

2014-09-21 17:11:48 219

原创 Python Crawler

__author__ = 'chenyang'#!/usr/bin/env python"""Web Crawler/SpiderThis module implements a web crawler. This is very _basic_ onlyand needs to be extended to do anything usefull with the...

2014-08-01 15:53:01 271

Apache扩展对于webservice指定机器请求

Mod_jk是apache module模块中鼎鼎大名的static int jk_handler(request_rec * r){ const char *worker_name; jk_server_conf_t *xconf; jk_request_conf_t *rconf; int rc, dmt = 1; int worke...

2014-06-09 11:21:34 113

Tomcat Valve使用

上一篇关于Listener理解成监听信息,那么Valve就是用来过滤信息用的,而最简单以及朴实无华的Valve非org.apache.catalina.valves.AccessLogValve莫属。AccessLogValve的类图设计 自定义的Valve首先查看下实现ValveBase接口的Valve 设计一个固定的ip和地址才能进来valve,如果按照传统方式有一...

2014-06-06 18:04:43 1466

Tomcat Listener使用

能拿Tomcat怎么办?Tomcat是非常有名的开源容器,因其开源我们可以对其做定制化的改变,而且Tomcat在其配置文件方面做了很多注释说明摘要,帮助我们更好的定制化我们所需的功能点。 New Tomcat Listener首先看下Tomcat整个比较有名的Listener,在我们的conf/server.xml文件中一目了然类图NEXT 自定义的Listener,本...

2014-06-04 14:26:12 1770

SpringFramework终极面试策略

在javacodegeeks上看到一篇关于spring面试的问题,推荐给大家http://www.javacodegeeks.com/2014/05/spring-interview-questions-and-answers.html,基本上已经覆盖整个spring框架面试时候提到的问题,比较全面。 文章总体比较简单,我就不在这里全部翻译,大概把几个不常面试的简单描述下spring...

2014-05-10 09:48:47 93

mybatis自定义解析插件

mybatis自带的解析已经蛮强大,至少我们能够用mybatis简单的语法来表达我们sql拼接时候的语义,比如$、#等诸如此类的符号意思,但是其实你并不喜欢再重新去理解一套它的语法,比如贵公司有自定义的一套组件,也许*代表的意思就是占位符,如果是这样的话,mybatis提供一套语法语义的解析的接口,只需要你注册进去,那么就按照你的想法进行解析。首先我们查看UML图,来查阅下现阶段的myba...

2014-04-21 16:40:25 172

cyWhoYi java

csdn上面下载下来的东西,自己拿来看看。

2010-06-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除