自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 请转载网站删除本人的文章

请转载网站删除本人的文章有几个网站,未经本人同意,转载了本人的文章,请马上删除转载的文章,谢谢。本人保留采取进一步措施的权利。 道悦(顽石) 2021.5.18

2021-05-18 15:17:35 109

原创 rest api的一些深层感悟

   restful风格的api相当流行了,但很多开发人员对restful并没有深入理解,这几年面试了很多人,对rest的理解都很肤浅,好一点的也只知道统一资源接口。  相比远程过程调用(动词),rest的核心概念是资源(名词),大致可以对应领域驱动设计或领域模型中的领域实体,每个资源都有uri来标识。     rest 介绍或rest api设计最佳实践网上资料已经很多了,例...

2016-03-15 13:33:30 163

原创 读写分离情况下的读自己写一致性

问题分布式系统的一致性模型包括:强一致性、弱一致性、最终一致性,以及一些最终一致性的变种,如因果一致性、读自己写一致性等。有个项目,数据存放在主从同步的mysql数据库中,写操作统一落在主库上。由于主从数据库物理位置相距较远(分别在国内机房和国外机房),同步的网络延迟较大,所以有可能因为网络延迟的原因,在读写分离的情况下,读不到自己刚才所写的数据(读从库)。例如用户在国外机房的应用中写...

2016-03-14 23:43:15 1200 2

原创 Vert.x学习

    还在沉迷于node.js、play framework、akka?你out了!该试试vert.x了。vert.x是一个用于构建运行在jvm上的响应式应用的工具箱和分布式应用开发平台。目前最新版本是3.X,相比2.0版本已经成熟很多了。 vert.x的特性1.多语言:除了java语言外,还支持javascript、ruby、python、scala、groovy、clojur...

2015-11-11 00:52:20 581

原创 etcd事件监听

    etcd是CoreOS开发的一个高可用的键值存储系统,主要用于共享配置和服务发现。它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。etcd目前的最新版本是2.2.0。    和zookeeper的二进制接口不同,它提供了HTTP/JSON的rest api接口,所以对使用它的客户端来说是很友好的,几乎每种编程语言都有较成熟的http client开发包,基于...

2015-09-26 19:15:28 4240

原创 Golang中的协程

   协程(coroutine)是一种比线程更轻量级的并发执行单元,它的切换开销和内存栈的占用大小都比线程要小。只要内存足够,在一个线程中可有上万个或更多的协程。除了这些优点,对开发人员来说,在网络编程应用中,采用协程后的业务代码比那些采用异步或事件回调方式的代码更好维护。使用协程的业务逻辑代码表面看上去是同步执行的,编写这些代码时思维是连贯的,更符合人类的思维习惯;而采用异步和回调方式后,业...

2015-09-05 16:38:39 205

原创 DJI(大疆创新)http api服务网关

DJI(大疆创新)http服务网关系统是用于对http服务进行治理的系统,支撑微服务的落地和开放平台open api的接入。支持跨多机房的服务路由,通过该系统可以对调用方进行身份认证、服务授权&鉴权、服务流控、服务降级、调用度量数据统计分析、服务依赖视图等。整个系统架构如下图,分为三大部分:api网关、网关控制台、度量数据采集分析(这个未在图中体现)。 1.api服务网关...

2015-07-30 21:29:24 1582

原创 myibatis dao层update语句使用的generic po类

表数据更新语句类似:update 表名 set field1= value1,field2=value2 where 条件字段1=value3 and 条件字段2= value4; 在dao层,value1~value4一般是从一个vo值对象的属性中取值(不纠结于vo、po、bo、dto这些概念和区别,这里把dao层中的pojo也称为vo),这种方式存在的一个问题是:在这个vo对象中,...

2015-06-25 11:40:08 336

原创 http rest服务治理框架

     公司的几个核心应用采用restful风格的服务接口对外提供服务,这些应用均采用Java spring mvc来实现rest服务,调用这些服务的消费者应用使用的语言则有多种,主要有php、python、Ruby、Java、C++、C#。     随着服务接口数量和消费者应用的增多,需要有一个rest服务治理框架来进行支撑,该服务治理框架提供的功能主要有:    服务注册和发现...

2015-05-27 18:51:37 488

原创 c/c++字节序转换

字节序(byte order)关系到多字节整数(short/int16、int/int32,int64)和浮点数的各字节在内存中的存放顺序。字节序分为两种:小端字节序(little endian)和大端字节序(bigendian)。小端字节序:低字节存放在内存低地址,例如对两字节整数0x0100(十进制数256),低字节00放在低地址(假设地址为0x0041f880),高字节01放在高...

2015-05-27 13:44:19 474

原创 spark mapPartition方法与map方法的区别

    rdd的mapPartitions是map的一个变种,它们都可进行分区的并行处理。    两者的主要区别是调用的粒度不一样:map的输入变换函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区。    假设一个rdd有10个元素,分成3个分区。如果使用map方法,map中的输入函数会被调用10次;而使用mapPartitions方法的话,其输入函...

2015-02-06 10:38:36 772

原创 hadoop hue开发调试环境搭建

    hue系统后台主要使用 python语言,我们需要对 hue进行定制化二次开发。开发机操作系统为ubuntu12.04,使用独立的开发机器,小组其他人可共用。也可在自己平时使用的windows机器上开ubuntu虚拟机(如果机器配置较高),下面是hue开发环境的搭建过程。     1.独立的开发机上不能使用图形环境,需要在自己的windows机器上安装Xming xwindow...

2015-01-07 00:55:04 894

原创 autoconfig使用

1.autoconfig介绍   在一个Java应用中(例如web应用或包含main方法的其他应用)通常有很多参数需要配置,例如数据库ip和端口、用户名等,这些参数有的在二方库jar包中,有的在应用自身的war包或jar包中。这些参数的取值通常随着运行环境的变化而变化,例如在开发环境、测试环境、部署环境中有不同的一组配置。同一个二方库中的参数,在依赖它的A应用和B应用中也可能需要有不同的参数值...

2014-08-27 23:50:42 1107

原创 openstack keystone外部认证

1.keystone集成需求介绍    公司要搭建基于openstack的私有云平台,提供IAAS。私有云用户是公司员工,考虑到公司已经有一套单点登录认证系统,需要openstack的keystone身份认证服务能集成该认证系统。    keystone提供openstack的认证授权服务,它实现了OpenStack的Identity API,除此之外它还负责提供目录服务(提供服务的u...

2014-03-30 23:59:41 387

原创 软件架构分解

 初稿在7月提交,12月中旬收到IBM的邮件通知说已经发表在IBM developerWorks中国网站。核心内容在3年前给少部分人ppt分享过,这次发表对内容进行了充实,补充了一些图片,以便更好理解。  庖丁解牛的故事绘声绘色地描述了庖丁高超娴熟的解牛技能。技进于道,庖丁在解牛的实践中,已经超越了解牛的技能层次,由技术升华到道或艺术的层次,悟到了解牛之道。任何行业中都有道,就看你能否悟道...

2013-12-19 14:12:12 257

原创 充血模型中的职责分配

     关于充血模型和贫血模型的讨论iteye上已经很多了,不是谁好谁坏的问题,都有适用的场景,业务复杂的当然可以使用充血模型,那些讨论几乎都是浪费口舌,也没说到点子上,讨论的话题应该是如何将业务逻辑合理分配到协作的多个对象上。这里只关注充血模型中的职责分配,因为在设计开发中很容易在这方面出现问题,在充血模型中,一种最极端最常见的情况是将过多的业务逻辑不分青红皂白都放在领域对象中(Domai...

2013-08-06 18:08:53 258

原创 开闭原则和设计模式

    在《敏捷软件开发--原则、模式与实践》书中给出了多个OO设计原则,例如单一职责、开闭原则、依赖倒置原则等。在这些原则中,绝大多数都很容易理解,最难理解的恐怕算开闭原则(对扩展开放,对修改关闭),主要原因是它太抽象,是一个比较本质的设计原则,超出了一个人的理解范围,如果能有一个实际的具体例子来说明就容易理解了。   其实在设计模式中,就有这样的一些模式很好的直接体现了开闭原则。 ...

2013-07-31 20:47:08 275

原创 面向业务接口的业务事件交付

      在轻量流程引擎接口设计中提到触发业务事件需要调用事件的deliver方法来触发并交付业务事件,流程引擎最终会调用业务服务组件的事件处理方法,例如对买家确认收货事件,会调用收货组件的确认收货方法。采用这种显式交付业务事件的方式,开发人员需要new一个对应的业务事件对象,然后调用该事件的deliver。这种方式不是很友好,在没有采用流程引擎之前,开发人员直接调用收货组件接口来进行确认收...

2013-06-27 12:04:35 207

轻量流程引擎接口设计

接上文,业务应用和流程引擎之间以及流程引擎和业务服务组件之间通过良好定义的接口进行交互。业务应用和流程引擎之间的接口称为北向接口,流程引擎和业务组件之间的接口称为南向接口,流程引擎的其他接口如管理接口在此忽略。 1.北向接口 北向接口主要是事件引擎提供的面向业务应用的接口(我们的事件引擎是一个简单的事件引擎,用来接收事件、派发和管理事件。业务复杂后可采用复杂事件处理CEP),主...

2011-12-14 22:51:59 389

原创 事件驱动的轻量级流程引擎

某电子商务交易系统流程较为复杂,具有将近20个流程节点,节点间流转路径较多。 系统在架构上没有拆分出流程层,处理流程流转的代码和底层的业务组件(如下单组件、发货组件)捆绑在一起,此外不同种类的流程代码也搅合在一起,导致难以灵活快速支撑流程变更,增加新的交易流程也很困难,急需进行改造以提高响应业务方变更流程的速度,提高开发人员的维护效率,降低维护中的偶发错误。 考察了目前较为...

2011-12-05 21:11:01 1262 1

单机最大tcp连接数

在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少? 如何标识一个TCP连接 在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系统用一个4四元组来唯一标识一个TCP连接:{local ip, local port,remote ip,remote port}。 cli...

2011-11-13 23:52:55 251

空空如也

空空如也

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

TA关注的人

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