随笔分类 - [20]DesignAnalysis设计分析
-
FACEBOOK的用户推荐和话题推荐算法
摘要:用户推荐和话题推荐是SNS的重要课题,效果的好坏是社交网站的区别指标之一,直接关系到用户体验,甚至是SNS的活力。国内的一些社交网站,比如新浪微博等,在功能上和UI上做的已经达到国际一流,然而,在推荐算法方面,仍有相当距离。推荐算法属于SNS的内功,对于SNS的用户体验的作用,和搜索算法对搜索网站的用户体验的作用相似。改进推荐算法,是社交网站的下一步方向之一。本文用图示法非常简单形象的描述了两种话题推荐法,两种用户推荐法,一种用户间相关度计算法。其中有些方法是非死不可用的,有些估计是新浪微博用的。插图1和插图2描述了非死不可的话题推荐的两个方法。基本上这是一种相关搜索法。在话题推荐方法2中,& 阅读全文
-
一步步实现cnblogs博客采集工具详细设计
摘要:欢迎继续关注开源项目CnblogsFan, 如果你是首次看到这个项目,点击此处查看有关该项目的详细介绍。 在完成对项目的概述设计后,就可以根据概述设计的内容对项目各个组成模块逐步细化,也就是我们所说的详细设计。详细设计在项目开发的整个步骤中是十分重要的一步,好的设计是项目成功的前提,详细设计直接决定着软件的质量以及软件在以后维护过程中的难易程度。更多关于详细设计的介绍请点击这里。 同概述设计中介绍的那样,由于项目的侧重点在对功能实现的分析上,所以这里的详细设计也是属于简略版,不涉及某个功能的具体算法,而在规范的详细设计当中,这些都是必要的,对于功能模块的具体算法将在下一步的编码过程中配合代.. 阅读全文
-
消息耦合还是接口耦合
摘要:最近公司准备开发一个新产品,需要重新设计一套新的框架,但是就这框架中各模块的通信方式,大家产生了争论,主要集中在各模块的交互方式是消息耦合还是接口耦合。需求大概这样,我们需要封装一套客户端SDK, 暴露一系列API给外部用,而这套SDK内部会有很多模块组成,这些模块之间相互会有交互。第一种设计是基于接口耦合,框架如下:这种接口方式的设计要点是:a. 各模块以类似COM组件的方式封装和暴露接口,也就是说模块会以接口的形式暴露接口,并且以Sink的方式通知外部事件。比如模块A的接口如下classIA{public:virtualvoidfun1()=0;virtualvoidfun2()=0;.v 阅读全文
-
验证码识别基础方法及源码
摘要:【算法】验证码识别基础方法及源码先说说写这个的背景 最近有朋友在搞一个东西,已经做的挺不错了,最后想再完美一点,于是乎就提议把这种验证码给K.O.了,于是乎就K.O.了这个验证码。达到单个图片识别时间小于200ms,500个样本人工统计正确率为95%。由于本人没有相关经验,是摸着石头过河。本着经验分享的精神,分享一下整个分析的思路。在各位大神面前献丑了。再看看部分识别结果 是不是看着很眼熟?处理第一步,去背景噪音和二值化 对于这一块,考虑了几种方法。 方法一,统计图片颜色分布,颜色占有率低的判定为背景噪音。由于背景噪音和前景色区分并不明显,尝试了很多种取景方法都不能很好去除背景噪音,最终放弃了 阅读全文
-
YbSoftwareFactory
摘要:YbSoftwareFactoryYbSoftwareFactory 代码生成插件二次开发【七】:YbRapidSolution for WinForm 插件生成项目总体架构介绍摘要: 本章将对其YbSoftwareFactory一键生成的 YbRapidSolution for WinForm 项目的总体架构进行解读和分享,中间将穿插对各个层次组件的特点进行简要分析和总结,最后将提供 N-Tier 部署的 Demo 下载。阅读全文posted @2012-10-09 08:49YbSoftwareFactory 阅读(163) |评论 (4)编辑YbSoftwareFactory 代码生成插 阅读全文
-
IoC模式
摘要:IoC模式1.依赖依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖。如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它。下面看一个简单的示例: /// <summary> /// 用户播放媒体文件 /// </summary> public class OperationMain { public void PlayMedia() { MediaFile _mtype = new MediaFile(); Playe... 阅读全文
-
开发流程与模式
摘要:经过前面六篇文章的讲解,基本的理论已经介绍完毕,这一篇进行实战练习,讨论如何从头开始开发一个完整的ASP.NET 页面,并进行数据读写,业务逻辑设定。1 设计数据库表 Table Design公司表存放系统中的公司实例,表示进行业务往来的实体,它的表结构如下脚本所示CREATE TABLE [dbo].[Company]( [CompID] [numeric](18, 0) IDENTITY(1,1) NOT NULL, [ParentCompID] [numeric](18, 0) NULL, [CompTypeID] [numeric](18, 0) NOT NULL, ... 阅读全文
-
简单的FTP文件安全识别方案
摘要:偶遇这么一个需求:A方需要利用FTP服务器给B方传一些电子文档,因为电子文档的内容涉及销售业绩,对准确性要求较高。所以,希望B方在接收这些文档的时候,可以依据一些类似电子指纹的东西对A方传过来的文档进行确认,主要确认的东西有两个:一是确定文档上传到FTP服务器以后没有人改过;二是确认这些文档就是从A处传来的,不是别的地方传过来的。因为B方还会接收到一些从别的销售点传回来的文档,如D、E等。这个需要求其实很简单,不知道怎么的,但接手处理这件事的朋友对这类问题没有什么经验,加上不知道如何从百度上搜索这类方案,很郁闷地来找我了。于是我给了一个简单的安全识别方案,这个方案运用的原理很简单,用不可逆的M 阅读全文
-
浅谈大型网站的算法和架构(二)
摘要:序 承接上文浅谈大型网站的算法和架构(一),我们继续聊我们的话题。 上文中很多人提到不扣题,这只是一部分资料,所以会感觉到不扣题,主要是题目太大了,而且内容太多了,我只能一部分一部分的写出来,望大家见谅。 我们老大也只讲到上,还有中和下呢! 上偏重于基础部分——就是算法部分。里面包括现今架构中的产品使用的算法,让我们了解产品本质的一些东西。需要到伸展树这一篇开始才能真正讲到相关架构产品。 中和下他还没开始呢!估计也够我研究一段时间了。大家就权当了解下算法吧!二叉树 上文中提到的两个结构(数组和链表)各有弊端。 1》数组在更新的时候比较消耗资源,需要挨个挪动后面的元素。 2》而... 阅读全文
-
售票系统领域知识(区间票、订票、预留票)
摘要:[铁道部信息化管理]需求分析(一)—— 售票系统领域知识(区间票、订票、预留票)12306的已知信息、数据及问题需求分析(一)—— 售票系统领域知识(区间票、订票、预留票)需求分析(二) —— 涉众、用户体验需求分析(三) —— 票仓票仓设计主要业务流分析核心业务逻辑架构设计缓存逻辑架构设计数据库逻辑设计物理架构设计并发冲突处理原则设计灾难备份与恢复常见的设计问题网络上有不少人曾经提出可以把“车票”预先生成并缓存起来。其实这里典型是出现了线下思维和经验对线上系统设计的阻碍作用。并且是由于对于铁路区间售票的情况了解不充分造成的误解。从传统经验上,如果某个车次是热门,那么为了加快出票速度(窗口买票 阅读全文
-
关于分布式系统的数据一致性问题
摘要:在我的博文里面关于分布式系统的数据一致性问题(二)里面主要介绍了数据分布的情况下保证一致性的情况,在第二篇文章里面,我这里提出了三个问题订单系统调用支付系统支付订单,支付成功,但是返回给订单系统数据超时,订单还是I(初始状态),但是此时会员帐户余额100,会员肯定会马上找京东骂京东,为啥不给老子发货,我都付钱了订单系统调用支付系统成功,状态也已经更新成功,但是通知仓库发货失败,这个时候订单是P(已支付)状态,此时会员帐户余额是100,但是仓库不会发货。会员也要骂京东。订单系统调用支付系统成功,状态也已经更新成功,然后通知仓库发货,仓库告诉订单系统,没有货了。这个时候数据状态和第二种情况一样。重 阅读全文
-
Ninject对Web Api的支持问题
摘要:问题描述:昨天将MVC从3升级到了4,主要是想利用其中的Web Api功能。创建了一个继承自ApiController的控制器,并且跟以前普通控制器一样,构造函数的参数采用Ninject进行依赖注入。之后调用其中某个方法,却发现提示这个控制器没有默认构造函数,经过搜索,发现Ninject目前不直接支持对ApiController的依赖注入,仅仅支持普通控制器(继承自Controller)。解决方法:google了一下,发现有很多文章介绍解决方法,都是如下思路:1.nuget安装Ninject.Web.WebApi包2.在global.asax中设定: GlobalConfiguration.C 阅读全文
-
ERP项目之 SOA通信模型
摘要:对于ERP中的SOA架构,做了一个简单的模型图来说明一下,前端采用MVP,通过SOA客户端Facade,调用SOA代理,SOA的服务层采用WCF 架构,通过权限认证和分布式缓存机制对不同的服务进行访问。对WCF服务支持的引擎模块有工作流,报表,邮件等。 WCF服务层通过ESB异步通信完成与物理模块的操作。我会在下面的blog中一个一个的说明。这里只是能这个初步的模型图做个说明 以便下一步分解。用于实现 SOA 可伸缩性的企业服务总线企业服务总线 (ESB) 是一个行业概念,其中使用了许多技术进行构建。ESB 是 Web 服务的基础结构,可协调组件之间的通信。简而言之,ESB 是让多个应用程序异 阅读全文
-
HBase的Block Cache实现机制分析
摘要:本文结合HBase 0.94.1版本源码,对HBase的Block Cache实现机制进行分析,总结学习其Cache设计的核心思想。1. 概述HBase上Regionserver的内存分为两个部分,一部分作为Memstore,主要用来写;另外一部分作为BlockCache,主要用于读。写请求会先写入Memstore,Regionserver会给每个region提供一个Memstore,当Memstore满64MB以后,会启动 flush刷新到磁盘。当Memstore的总大小超过限制时(heapsize * hbase.regionserver.global.memstore.upperLimi 阅读全文
-
实现简单的邮件收发器
摘要:引言:在我们的平常工作中,邮件的发送和接收应该是我们经常要使用到的功能的。因此知道电子邮件的应用程序的原理也是非常有必要的,在这一个专题中将介绍电子邮件应用程序的原理、电子邮件应用程序中涉及的协议和实现一个简答的电子邮件收发器程序。一、邮件应用程序基本知识1.1 电子邮件原理及相关协议 说到电子邮件的原理,其实和我们现实生活中寄邮件和寄包裹是一样的原理的。就让我们先回顾下现实生活中寄邮件的流程吧——首先,我们先写好信,信封上面写好收信人的地址,写信人的地址,然后把信放到寄信箱中,然后邮局的人会某个时候去这个信箱中的信取出来,然后邮局的人根据信封上写的收信人地址进行转发到当地的邮局,当地邮局然. 阅读全文
-
Build your own CAB(Composite Application Block) Part #2 – The Humble Dialog Box
摘要:自己动手写CAB(Composite Application Block) #1 —— 前言作者:Jeremy Miller 翻译:Yanwei昨天本人提出了一个不负责任的观点。这个观点是,如果你要写一个可维护的,复杂的WinForms界面,并不需要Composite Application Block(CAB)。我觉得,开发人员如果掌握了CAB的底层设计模式,并且挑选一个不错的IoC/DI工具,就可以开发一个满足需求的设计。我甚至感觉,这个开发人员,如果对CAB功能很熟悉,就能够很容易地开发出一个性能更好的设计。为了证明我的这个观点,并且满足很多人对这个主题的好奇心,我将把DevTech上关 阅读全文
-
关于分布式系统的数据一致性问题
摘要:最近写了一个关于 铁道部购票系统的若干文章铁道部新客票系统的设计(一)铁道部新客票系统的设计(二)铁道部新客票系统的设计(三)正好遇到一个博友,咨询了一个问题,这个问题正好可以作为分布式系统的数据一致性的简单例子,当然,这个只是比较简单的情况现在先抛出问题,假设有一个主数据中心在北京M,然后有成都A,上海B两个地方数据中心,现在的问题是,假设成都上海各自的数据中心有记录变更,需要先同步到主数据中心,主数据中心更新完成之后,在把最新的数据分发到上海,成都的地方数据中心A,地方数据中心更新数据,保持和主数据中心一致性(数据库结构完全一致)。数据更新的消息是通过一台中心的MQ进行转发。先把问题简单化 阅读全文
-
铁道部新客票系统设计(三)
摘要:最近只是一时兴起,觉得无聊,正好要到买票的时候,写了这个一系列文章,首先是对自己这些年来的工作经验的总结,其次是把分布式事务性系统的设计思想进行分析和整理,最后也就是和想集大家的智慧,讨论系统的设计。我不是铁道部的工程师,我只是一家互联网金融类公司的屌丝工程师,级别不高,能力也一般,就是喜欢技术而已。在第二篇文章里面,重点分析了余票库的整体设计,我看到有的评论说了几点,现在整理一下1 为什么要用悲观锁为什么要用锁,由于之前是做金融系统,对数据的一致性要求很高。铁道部的出票操作要保证数据一致性,所以必须在获取余票的情况下锁定余票记录,否则会导致并发问题,多出票。如果是站票还无所谓,如果是卧铺咋办 阅读全文
-
理解程序内存
摘要:内存对很多人来说感觉是个很熟悉的东西,因为我们在用VC调试程序时,很多时候都会察看内存中变量的值。但是,很多时候我们的思维也就因此局限在有源码的模块,当遇到一些跨模块或是没有源代码的Bug,我们还是无从下手。因此,很有必要我们要对整个程序内存有个比较全局性的认识,这样遇到任何问题,你都能从容面对。我这里以32位的程序为例,我们知道32位程序总共有4G内存空间,其中低2G是用户地址空间,高2G是内核地址空间,下面我们借助WinDbg工具来分析低2G用户地址空间的内存分布。因为所有程序的内存分布都大同小异,我这里用WinDbg分析任务管理器进程的内存分布。打开任务管理器,然后用WinDbg Att 阅读全文
-
MES 整体架构图 - V1.0.0
摘要:这是一个MES系统整体的架构图。内容不是很详细。其实细节还有很多需要考虑的。关于各个模块间是如何工作,具体实现哪些功能,各模块间是如何协调工作的,在后面的随笔会有详细的介绍。欢迎大家讨论。欢迎关注。BTW,当前我公司的MES架构基本上就是这样的。但实际运用的时候却复杂得多了。鉴于本人对整个MES系统的了解有限,所以现在只能画出这个架构图。随着对系统的了解程度的增加,我会更新这个图的。谢谢。其中的Route DB在公司称为VMDT Database,是用于管理产品根据设定的路由来生产,此数据量不是很大。考虑成本的因素,可以使用MS SQL Server。Traceability DB是用于保存产 阅读全文