随笔分类 - [20]DesignAnalysis设计分析
-
.NET/ASP.NETMVC Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(一)
摘要:.NET/ASP.NETMVC Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(一)阅读目录:1.开篇介绍2.Model与View的使用关系(数据上下文DataContext与View呈现)3.Metadata元数据驱动设计(如何使用中间层元数据来驱动最终的行为)4.ASP.NETMVC ModelMetadata(ModelMetadata元数据如何支撑Model与View之间的组合关系)1】开篇介绍这篇文章让我们一起来学习一下有关Asp.netMvc中的Mode元数据的相关设计和围绕元数据的一些其他对象模型,他们是如何通过彼此协调来支撑起一个灵活的界面编程接口;其实提 阅读全文
-
前端监控系统草案(技术路线和用户行为分析相似)
摘要:系统架构:前端监控系统草案(技术路线和用户行为分析相似)年末了,公司在统计自己支付系统的订单成功率,最后发现有很多订单成功率问题是和用户页面操作相关,但是我们目前有些页面没有打点做用户行为数据的采集,因此很难分析出用户到底是是什么原因没有完成订单,对此我写了一个前端监控方案,下班时候和领导开会讨论这个方案,很晚才回家哦,会上还是被批了一番,认为这个和用户行为分析系统耦合,而且最关键的采集那些信息,怎么分析信息没有细化,公司有相似的技术方案,我的方案很难成型。领导说的没错,我这个方案是重复性劳动,没必要大动干戈,但是至少我提出这个方案表明公司用户行为分析系统对类似前端页面监控的方案可能支持不够, 阅读全文
-
OO设计
摘要:Todd.log - a place to keep my thoughts on programming评OO设计昨天在微博上看到InfoQ提供了一本新书《完美软件开发:方法与逻辑》的PDF迷你版,这本书的介绍吸引了我:这书是培养帅才的书。如果想成为一方悍将(比如:C++高手,Android高手),那这书是不太适合的;但如果想鸟瞰全局,运筹帷幄,带领团队攻城略地,那这书是很有参考价值的。我重点看了它的第7章“完美设计和编码之解构”,应该说这是一本好书,但是对我来说总体上没有什么新的收获,作者对软件设计的理解和我两三年前比较类似,而最近两年我对软件设计的理解发生了很大的变化。从书的内容看得出, 阅读全文
-
持续重构,其乐无穷。
摘要:精简自己20%的代码持续重构,其乐无穷。一:发现问题 先来说如何重构业务层的try{}catch{}finally{}代码块,我看过很多代码,异常处理这一块大致分为两种情况,一种是每个方法都大量的充斥着try{}catch{}finally{},这种方式的编程已经考虑到了异常处理,还有一种就是没有try{}catch{}finally{}的代码,因为根本就没有考虑代码的异常处理。每当我看到这样的代码,我都很忧伤。从程序的健壮性来看第一种还是要比第二种情况好,至少在编程意识中,随时想到了异常情况,有一种基本的编程思想。 比如:一个业务单据的多表插入,关联修改,虚拟删除等都是一些基本的操作,但.. 阅读全文
-
数据库操作组件
摘要:小菜模块化框架设计-简化数据库操作组件阅读目录开始背景设计原理辅助类和接口基类(Helper)具体操作类(子类)项目解决方案目录测试案例总结回到顶部背景前期在做一个装配线系统自动化扫描打标应用时,系统要求操作实时性比较强,所以没有用ORM之类的工具,可是开发组成员设计的数据库操作类显得有些复杂,调用代码量大,可扩展性低下,更不用说灵活性了,换个数据库类型,这个组件就废掉了。我自已尝试封装了个数据库操作帮助类,自认为还算简单。同时,考虑到将来可能涉及到其他项目不同数据库类型也有同样的需求,在设计方面也提供了扩展的接口,总之,尽量使之简单化,可扩展,可复用,增强灵活性。回到顶部设计原理原理很简单, 阅读全文
-
跨行清算系统的实现原理
摘要:跨行清算系统的实现原理最近看了很多银联方面的清算系统的设计原理,对于跨行清算系统有了很大的了解,写这篇文章的目的是在于从一个程序员的角度去思考一个跨行清算系统的架构是如何实现的以及整个过程中我们有哪些思想是可以借鉴的。由于金融里面涉及到太多的专业名词,包括借贷,备付金,头寸,调拨等等,这里不会涉及到这些,取而代之的是以大家可以理解的概念去解释。下面简单的介绍一下两种跨行清算系统的实现原理以及特点。一种跨清算系统是我们最熟悉的银联,还有一种是越来越流行的第三方支付系统,比较典型的是快钱。首先来拿生活中的一个非常常见的例子来说明跨行清算的整个过程,这里面不涉及交易费等其他概念。跨行取款流程张三是工 阅读全文
-
高并发非自增ID如何设计?
摘要:博友们一起来讨论下高并发非自增ID如何设计?底层是很重要的,我最近设计底层,通用底层。我想跟大家谈论下这个话题:如何在高并发环境下设计出一套好用的非自增ID的添加操作的解决方案?更新的操作我随机生成一个时间因子,新增的解决方案就希望大家可以一起讨论下。打个比方,一个表,一万条新增请求同时涌进来,表为空,也就是一万条同时获取到要赋值的id就是1,更新了第一条,剩下的怎么处理?在第二条处理过程中,又有一万条新增记录涌进来,又如何处理?如何保证性能,ID不重复,友好性?ID列设计为聚集索引主键,数据库不需怎么考虑,要考虑的是程序方面。(Disruptor并发编程框架,大家可以百度下Disruptor 阅读全文
-
Web Builder
摘要:Web Builderhttp://www.doc88.com/p-1748774598960.html初次接触Infopath,我就被它的强大的功能,灵活的表单制作方式,全面对Web Services的支持等特点深深的吸引了。曾经尝试用Infopath来完成一些MIS项目,Infopath却有一些我们难以逾越的障碍,使得无法方便的和项目紧密结合。主要是有以下几个方面使得Infopath不能和项目有效的结合:Infopath只能在Infopath本身的程序中填写表单(这个问题去年我曾经解决过,参考Infoview的实现方式)不能有效的和外部环境结合,比如ASPX页面中的变量,工作流引擎的信息。 阅读全文
-
系统日志和异常的处理①
摘要:系统日志和异常的处理①统需要越来越自动化,我们需要引入日志记录和异常捕获管理员的操作记录需要被记录,看出哪些模块是频繁操作,分析哪些是不必要的功能,哪些是需要被优化的。系统的异常需要被捕获,而不是将系统出错显示出来给用户就不了了知。我们需要异常日志不断改进系统。我们老说用户,我们还没有用户权限的表,所以我们在Home中先加入一个虚拟用户吧!首先我们创建一个用户类AccountModel放在App.Models下的Sys文件夹下using System;using System.Collections.Generic;using System.Linq;using System.Text;nam 阅读全文
-
测试——设计思维之获取反馈
摘要:测试——设计思维之获取反馈获取用户反馈为什么要测试?尽早的从用户,干系人,专家那边获得反馈,能够迭代改善通过测试能够知道我们的主意设想的强项和弱势早失败如何测试?让原型自己说话不要为自己的想法狡辩,原型是给用户,不是给我们自己的带着问题,我们的原型是用来测试获取反馈的,所以不要满嘴跑马车保持开放的心态,你可能在其中发现新的想法和见解对反馈持感恩之心,反馈是最好的学习方法保持灵活通过不同人来测试整理所有的反馈想想怎么要下个迭代中把这些反馈考虑进去注意点:如果没有理想的参与者,可以找一些代理用户介绍你的模型和设计背景让用户带着2-3个任务去使用你的模型我喜欢的,我希望的。一种获取反馈的架构:问用户 阅读全文
-
分布式系统设计(8)
摘要:分布式系统设计(8)再回忆一下我们前面介绍的几节:第一节介绍数据分布方式:http://www.cnblogs.com/jacksu-tencent/p/3405680.html第二节介绍副本控制协议:http://www.cnblogs.com/jacksu-tencent/p/3407712.html第三节介绍基于Lease的分布式cache系统:http://www.cnblogs.com/jacksu-tencent/p/3409646.html第四节介绍Lease机制本质以及判断节点状态:http://www.cnblogs.com/jacksu-tencent/p/3415529. 阅读全文
-
内存管理
摘要:内存管理 本系列博文是《现代操作系统(英文第三版)》(Modern Operating Systems,简称MOS)的阅读笔记,定位是正文精要部分的摘录理解和课后习题精解,因此不会事无巨细的全面摘抄,仅仅根据个人情况进行记录和推荐。由于是英文版,部分内容会使用英文原文。 课后习题的选择标准:尽量避免单纯的概念考察(如:What is spooling?)或者简单的数值计算,而是能够引起思考加深理解的题目。为了保证解答的正确性,每道题都会附上原书解答,而中文部分会适当加入自己的见解。原书答案下载地址(需注册) 注:本文部分内容需要读者对页式、段式、段页式内存管理有基本了解。概念回顾 交换... 阅读全文
-
分布式系统设计7
摘要:分布式系统设计(7)再回忆一下我们前面介绍的几节:第一节介绍数据分布方式:http://www.cnblogs.com/jacksu-tencent/p/3405680.html第二节介绍副本控制协议:http://www.cnblogs.com/jacksu-tencent/p/3407712.html第三节介绍基于Lease的分布式cache系统:http://www.cnblogs.com/jacksu-tencent/p/3409646.html第四节介绍Lease机制本质以及判断节点状态:http://www.cnblogs.com/jacksu-tencent/p/3415529. 阅读全文
-
设计思维之聚焦问题
摘要:定义——设计思维之聚焦问题通过前期的调研,移情客户,在定义这个阶段我们要给出一个问题的描述,为大家下一步模型做好准备。为什么我们要有定义的这个过程呢?简单的说我们不太可能为每个人都去设计一个产品,也不可能找到一个银弹一下子解决所有的问题。我们需要专注于一件事情。通过前面的理解和观察的发散后,我们重新聚焦,做出决策。我们可以通过以下的四步来综合得出我们的定义,我们的见解洞察。第一步:讲故事 Storytelling通过团队的理解和观察,经过客户访谈和拜访,我们要把访谈的内容尽可能原滋原味的复述给整个团队成员听。这样可以使大家处于同一“频道”上。第二步:分类 Clustering整个团队一起整理分 阅读全文
-
分布式系统设计(4)
摘要:分布式系统设计(4)先说一下前面三节介绍的内容,如果需要请参考,第一节介绍数据分布方式:http://www.cnblogs.com/jacksu-tencent/p/3405680.html第二节介绍副本控制协议:http://www.cnblogs.com/jacksu-tencent/p/3407712.html第三节介绍基于Lease的分布式cache系统:http://www.cnblogs.com/jacksu-tencent/p/3409646.html通过第三节的介绍,大家应该对Lease机制有一定的了解了,本节主要介绍Lease的本质,以及通过lease机制,如何来判断节点的 阅读全文
-
分布式系统设计2
摘要:分布式系统设计(2)3副本3.1概念副本(replica/copy)指在分布式系统中为数据或服务提供的冗余。对于数据副本指在不同的节点上持久化同一份数据,当出现某一个节点的存储的数据丢失时,可以从副本上读到数据。数据副本是分布式系统解决数据丢失异常的唯一手段。另一类副本是服务副本,指数个节点提供某种相同的服务,这种服务一般并不依赖于节点的本地存储,其所需数据一般来自其他节点。3.2基本副本协议3.2.1中心化副本控制协议中心化副本控制协议的基本思路是由一个中心节点协调副本数据的更新、维护副本之间的一致性。图2-7给出了中心化副本协议的通用架构。中心化副本控制协议的优点是协议相对较为简单,所有的 阅读全文
-
数据同步的几种实现
摘要:关于数据同步的几种实现Posted on2013-11-04 09:15星星之火116阅读(653) 评论(5)编辑收藏关于数据同步的几种实现概述关于数据同步主要有两个层面的同步,一是通过后台程序编码实现数据同步,二是直接作用于数据库,在数据库层面实现数据的同步。通过程序编码实现数据同步,其主要的实现思路很容易理解,即有就更新,无则新增,其他情况日志记录,就不做过多的介绍,这里主要讲述的是第二个层面的数据同步,即在数据库层面实现数据同步。数据库层面的数据库同步主要有三种方式:通过发布/订阅的方式实现同步,通过SQL JOB方式实现数据同步,通过Service Broker 消息队列的方式实现数 阅读全文
-
分布式系统设计1
摘要:分布式系统设计(1)1 设计分布式系统需要考虑的异常1.1 节点宕机1.2 网络异常消息丢失、消息乱序(可以通过增加序列号解决)以及数据错误1.3 分布式系统三态在单机,只要不宕机,一个函数执行要么成功、要么失败,但是分布式系统共下存在成功、失败和超时。下面解释一下超时的不确定性:某个节点 A 向另一个节点 B 发送一个消息,如果请求 RPC 的节点 A 在给定的时间内没有收到执行 RPC 的节点 B 返回的消息,则认为该操作“超时”。对于超时的请求,我们无法获知该请求是否被节点 B 成功执行了。这是因为,如果超时是由于节点 A 发向节点 B 的请求消息丢失造成的,则该操作肯定没有被节点 B 阅读全文
-
互联网后台服务的协议设计
摘要:互联网后台服务的协议设计互联网后台服务的协议设计1.基本概念服务(server):“服务”可以分软件和硬件两个类别,本文提到的“服务”都是指软件,是一种程序。称之为“服务”的程序一般具备2个特点:1) 程序启动后常驻内存,成为守护进程。2) 能与其他进程通信,接收请求,处理请求并做出回应。本文中的服务特指基于TCP/IP 协议通过socket进行通信的服务。为什么互联网业务需要“服务”这种类型的程序呢?主要有2个原因1) 有些功能可以通过一个独立的程序来完成,不用每个程序都写一套代码来实现这个功能,这样有利于程序的解耦和复用2) 有些功能单机、单进程无法完成,需要通过多台机器、多个程序的协作完 阅读全文
-
领域模型设计
摘要:软件设计过程经验谈 之 如何做好领域模型设计 经常听到领导教诲,开发的同事应该要往前走一步,去做产品?去做售前?这也是一种方式,只不过是一大步。个人觉得,在迈出这一大步之前,需要先走出一小步:从写好代码到做好设计。 下图是按照软件工程的通用做法,梳理出的标准设计指南,已经非常清晰地定义了软件设计的阶段和活动,产物规约,文档要求以及需要配合的培训。比较适合于人朋规模大、产品化程度高、外包服务模式。按照这个标准的设计指南,把每一阶段的事情做好,这是标准的开发方法论的实践指导。 有人会说,现在是移动互联网的时代,我们的产品开发要求短、频、快地上线,这种标准的设计方法已经不适合了,我觉的不完全正确。我 阅读全文