随笔分类 - [20]DesignAnalysis设计分析
-
表模块模式简介
摘要:表模块模式简介其实我觉得写博文也可以跟写小说一样,有连载,只要读得顺畅就好,我并不想通过几篇博文读下来,就让读者成为某个方面的专家。在每写一篇短短的博文,都曾参考过很多有价值的书籍和其他人的博文,所以不可能把所有的东西都写进来的。我最近在思考的时候,经常茶不思饭不想,不知道的人看来,以为我会是得了相思病的少年。上集回顾在上几篇业务层的设计都描述的是领域模型的模式,为了解释领域模型的使用,我居然提前写了一点数据访问层。领域模型适合业务逻辑比较复杂,业务规则繁多,因为这些复杂的元素都会被内聚在领域模型之中,而领域模型又可以被重用。这样一来就能避免许多业务逻辑的重复分布在各个地方,对维护带来说,这是 阅读全文
-
网络爬虫原理
摘要:网络爬虫原理继续接着上一篇写:使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)[搜片神器]昨天由于开源的时候没有注意运行环境,直接没有考虑下载BT种子文件时生成子文件夹,可能导致有的朋友运行没有结果,在此表示对支持开源的朋友道谦.另外也对源程序增加了一些说明,已经提交.开源地址:https://github.com/h31h31/H31DHTMgr程序下载:H31DHT下载先说下运行方法:1)有固定IP的朋友可以试试H31DHT.exe数据抓取程序,会获取一些数据,如果>2小时还没有数据返回,直接说明不是固定IP的返回数据很少;2)直接从http://torrage. 阅读全文
-
Ajax请求安全性讨论
摘要:Ajax请求安全性讨论今天我们来讨论一下ajax请求的安全性,我相信各位在系统开发过程中肯定会绞尽脑汁的想怎样可以尽量少的防止伪造ajax请求进行攻击,尤其是开发跟用户交互比较多的互联网系统。那么就请大家来分享讨论一下你在开发过程中怎样考虑ajax安全及防止ajax请求攻击的问题。我也是一个新手,就先抛砖引玉了,写的不对的地方欢迎批评指正。我先上两段网摘:Ajax安全防范的方法:判断request的来源地址。这样的方式不推荐,因为黑客可以更改http包头,从而绕过检测。采用验证码。也不推荐,请各位大大想一下用户的感受,刚输入用户名就让我输入注册码?这样Ajax意义何在?给一个IP在一个小时内, 阅读全文
-
Excel 开发概述
摘要:浅谈Excel开发:一 Excel 开发概述做Office相关的开发工作快一年多了,在这一年多里,在插件的开发中遇到了各种各样的问题和困难,还好同事们都很厉害,在和他们的交流讨论中学到了很多的知识。目前Office相关的开发资料是比较少的,最最开始的时候,我看的是一本英文资料,然后再就是MSDN上面去提问了。所以我想写一点东西,让大家也少走一些弯路。 这篇文章就简要介绍一下Office开发的一些相关的知识,使大家对这个有一个大体的了解。 首先来看一看Office 的开发方式。一 Office开发方式1 VBA (Visual Basic Application) VBA是一种Visual Ba 阅读全文
-
如何在ASP.NET大型应用系统的模块化开发实现多版本程序集并存支持[转载]
摘要:如何在ASP.NET大型应用系统的模块化开发实现多版本程序集并存支持这是我最近碰到的一个问题,有一家企业.NET程序员有80多人,产品线很多也很复杂。对于这样的产品,他们采用了模块化开发来实现复用与协作。不过,这样做需要解决一个问题,就是在一个产品中,不同模块由不同Team来开发,他们可能会引用同一个程序集的不同版本。这时候,你该怎么来解决呢?我先亮出基于iOpenWorks插件框架(你可以访问http://www.iopenworks.com/Products/SDKDownload来下载这个插件框架)解决方法,然后描述这个问题的上下文,最后可由读者们来提提你们的解决方案。在部门管理模块中, 阅读全文
-
类型的本质和函数式实现
摘要:类型的本质和函数式实现在上一篇文章《二叉树迭代器算法》中,我介绍了一种基于栈的二叉树迭代器实现。程序设计语言和Haskell大牛@九瓜在看过之后评论到:这里用了 stack 来做,有点偷懒,所以错失了一个抽象思考机会。如果我们能够理解二叉树到线性表的转换过程,完全可以把 Iterator 当作抽象的线性表来看,只要定义了关于 Iterator 的 empty, singleton, 还有 append 操作,实现二叉树的 Iterator 就变得非常直观。“错失了一个抽象思考机会”是什么意思呢?我理解九瓜的意思是基于栈的实现虽然是正确的,但它缺乏对于迭代器类型本质的理解,不具有通用性。如果能对 阅读全文
-
功能与接口定义
摘要:功能与接口定义数据访问层的设计我研究了很长时间,关于接口的定义,好几次都推翻重来。园子看到过很多easyui+MVC+EF的文章,在早期,我的设计也类似。但是后来为了增强它,想加点功能通用的功能进去,就耗费了非常多的时间。这是一个怎么样的DAL?也许你已经见过许多实用EF的架构了,它是一套基于领域模型架构中的DAL。大致结构如图中,DAL就是最下面的那一层。它的主要功能也体现在图中了:增删改服务、查询、事务管理、并发,另外事务中包括工作单元,查询中包括延迟加载。我们希望底层的数据库操作对其他层来说是透明的。例如BLL将感受不到ORM工具的存在,他也不需要知道我们操作的数据库是Oracle,还是 阅读全文
-
框架设计之ADO.NET Command的ExecuteScalar误用情景及底层解说
摘要:框架设计之ADO.NET Command的ExecuteScalar误用情景及底层解说最近下载了点资料,学了学Android,发现Android入门还算简单,从.NET过渡到Android,也就三七十一天的事。大伙有空也可以学学。。。好了,言归正文,那日,有网友发了一个他们公司的数据层框架的DLL,让我审视(Reflector查看如下):炸一看框架,支持的数据库种类繁多,看来写框架的人涉及面还挺广的。往里一看,比较悲催,有广度而无深度,另外数据库种类的dll需要提前引用,那是相当浩大的数据库工程:框架具体就不过多点评了,在不经意思间,本人看到有一个闪光点,觉的可以和大伙分享分享:1:检测某列是 阅读全文
-
31天重构学习笔记重新整理下载
摘要:31天重构学习笔记重新整理下载31天重构学习笔记重新整理下载2013-07-18 02:38 by 圣殿骑士,1000阅读,20评论,收藏,编辑前言 前两天写了一篇程序猿也爱学英语(上),有图有真相的文章,写作那篇文章只是自己一时兴起,或者说是自己的兴趣使然。文中的观点只是自己的学习心得和体会,属一家之言且鉴于本人不是学英语出身,所以也肯定有不正确的地方,也欢迎大家积极讨论并给我留言,再次感谢大家的热烈支持。关于大家询问下篇的发布问题,我想我会尽力在周末完成。 这几天由于刚发布完项目,所以有比较充裕的时间整理自己的知识库,发现三年多以前学习并记录了31天重构系列笔记,至今仍回味无穷,索性重新阅 阅读全文
-
事务的考虑
摘要:事务的考虑写博文不容易,坚持写更不容易,写得快更加不容易。如果要写,必定是自己肚子里有货;坚持写,是学习能力的体现;又要工作又要持续学习,不写得快怎么能行呢。原本想把我的数据访问层也一起公开的,但是有朋友劝我不要发布。他告诉我:网上发布的多数是贴贴Demo,框架只有在实战中才有存在价值,发布出来一般也没人有那个耐心去看,早就沉没在信息的海洋里了。但我还是想把业务层都写完了。事务管理应该放在哪一层做事务的开始与提交应该放在哪里呢?业务逻辑层还是数据访问层?我以为,数据访问层需要,业务逻辑层也需要。数据访问层的仓储(Repository)做细粒度的事务,业务逻辑层做相对较粗的事务。那么具体如何实现 阅读全文
-
业务逻辑层的设计
摘要:业务逻辑层的设计你或许也和我一样:一谈到业务逻辑层,脑海中定会呈现三个字母,那就是“BLL”,我曾经写过的第一个类就非常简单,里面几乎什么也没有,后来就发现它就是个坑,为了填补这个坑,来后一个项目我根本就没有打算要分这层给它了。直到有一天,辗转反侧睡不着,半夜起来敲代码,我终于领悟了这个BLL的真谛。我还是用以前的话,“软件设计本身已经够理性了,我们为什么不能用感性一点的文字?”,写者随意,看者轻松。声明:我会讲一些术语讲的比较白,但可能缺少严谨,但是有些词语不明白可能还是需要搜索一下了。哪些逻辑应该划分到数据访问层(DAL)有很长一段时间,我的业务逻辑代码遍布在整个项目代码的任何角落,也同时 阅读全文
-
APP类别之比较与分析
摘要:大数据应用:五大地区喜新厌旧游戏APP类别之比较与分析前阵子笔者开发了一套系统可以用来收集亚洲五大地区上架APP的每日排名信息,希望观察出五大地区在APP上的喜好和使用程度之间的相异性。所以,在下收集了上个礼拜(07/07~07/13)五大地区(台、港、中、韩、日)的每日APP游戏排行,并且设计了一套公式去计算各游戏类别的排行变动率。可能看公式大家不太能够理解,以下是一个简单的范例:这个数据要怎么解释?我们可以经由该数据看出,各地区的Game APP使用者喜新厌旧的程度.....。假设该类别的变动数值很大,代表着该类别每日的排行一直都处在"不稳定"的变动情况。这其实有很多种 阅读全文
-
搜索如此简单
摘要:ElasticSearch入门-搜索如此简单搜索引擎我也不是很熟悉,但是数据库还是比较了解。可以把搜索理解为数据库的like功能的替代品。因为like有以下几点不足:第一、like的效率不行,在使用like时,一般都用不到索引,除非使用前缀匹配,才能用得上索引。但普通的需求并非前缀匹配。第二、like的不能做到完全的模糊匹配。比如like '%化痰冲剂%'就不能把”化痰止咳冲剂“搜索出来。但是普通的用户,需求就是这样第三、like无法根据匹配度进行排序。数据库匹配某个关键字的记录可能有好几千,但是用户只能看100条,数据库往往返回用户一些不关心的记录。种种原因导致搜索引擎的横空 阅读全文
-
产品落地
摘要:产品落地最近有个技术牛人,从技术同学的视角看产品,整理一下与大家分享分享。一、项目常见问题1.客户价值不清晰,不能得到项目成员的认可2.项目范围不稳定,在项目的每个阶段都可能发生需求变更3.资源不足,UED,前端,开发,测试都可能是瓶颈4.依赖的外部配合不力,不可控5.技术方案不成熟,总在修改6.项目计划不能落地,不断延期7.项目团队氛围不好,士气低落,相互埋怨8.都想少做,系统模块间的中间地带没有人管,不清楚的地方没人拍板,分期被拖延到后期9.项目质量差,bug太多,上线客户体验差10.开发说功能做不了11.开发人员水平参差不齐,投入不一样12.开发不看PRD13.项目完成,发现不用了。14 阅读全文
-
EDNS
摘要:EDNS 随着业务的复杂化和多样化,RFC1035中定义的DNS消息格式和它支持的消息内容已经不足以满足一些DNS服务器的需求,于是,RFC2671中提出了一种扩展DNS机制EDNS(Extension Mechanisms for DNS),也叫做EDNS0。我将EDNS0中的一些关键内容总结在这篇文章中,以便日后翻阅,同时希望能够帮助到像我这样迷茫过的、探寻EDNS很久才知道其概貌的新人。 一,什么是EDNS? EDNS就是在遵循已有的DNS消息格式的基础上增加一些字段,来支持更多的DNS请求业务。 需要注意的是,像DNS服务器这样一个大型且广泛应用的系统软件,新增加扩展协议的时候一... 阅读全文
-
架构设计方案
摘要:架构设计方案架构设计方案一、全部基于服务View → 统一数据接口 → 缓存模块 →数据库二、统一数据接口考虑用WebServices1、 多种客户端调用统一数据接口读取数据2、 通过统一数据接口管理缓存3、 主要业务逻辑三、中间层----缓存模块1、 分布式缓存memcached四、数据库读写分离1、 两个主数据库(Write) → 多个从数据库(Read)2、 通过事务发布订阅机制同步主从数据库 3、 主数据库垂直拆分(网友添加、邮件订阅、VIP,企业展示)VIP管理有问题,主要是主从数据同步延迟的问题。如果VIP数据单独维护,拆分出主库,大的数据列表又有问题。VIP管理时,更新主DB.. 阅读全文
-
分享我们项目中基于EF事务机制的架构
摘要:分享我们项目中基于EF事务机制的架构写在前面:1. 本文中单元测试用到的数据库,在执行测试之前,会被清空,即使用空数据库。2. 本文中的单元测试都是正确通过的。要理解EF的事务机制,首先要理解这2个类:TransactionScope和DbContext。DbContext是我们的数据库,通常我们会建一个类MyProjectDbContext继承自DbContext,里面包含所有的数据库表。这个类相当于定义了一个完整的数据库。下面通过一些单元测试来看看这2个类是如何工作的。 1 [Test] 2 public void Can_Rollback_On_Errors_In_Different_C 阅读全文
-
使用 “离线事件” 处理 “长事务”
摘要:使用 “离线事件” 处理 “长事务”背景事件有两种使用方式:一、作为传统的监听者模式以达到程序结构的解耦;二、作为消息机制以达到时间和空间上的解耦,如发送到远程服务器、持久化到队列等待。今天介绍如何使用“离线事件”处理“长事务”,这就需要把事件当做消息对待。我理解的长事务是“执行时间长的任务,具体多少没有标准”,如果希望在一个数据库事务中完成这些长事务是不现实的,之前我的做法是换成存储过程以降低事务的执行时间,以后我会采用“离线事件”。离线事件:事件的一部分是同步执行,另外一部分会被异步的离线的在另外一台机器执行。简单示例下载地址:OfflineEventStudy。项目结构Common:类库 阅读全文
-
网页在线聊天
摘要:网页在线聊天已经很久很久没有发博客了,自从上次解决完实习招聘的事之后,就一直忙于学习上的事了,最近考完了最恶心的算法分析与设计,总算是有点时间来写写有关于技术,项目的事了。在这一个月左右的时间了,我做了两个很小的,相当于课程设计的大作业,两个都是B/S结构,一个是物品销售的系统,实现销售商和生产商在网页上操作数据,因为是软件质量保证和测试的大作业,所以我们还用了qunit和loadui进行了代码测试,这会在我另外一篇文章。另一个就是我要说的网页在线聊天的大作业,这里主要用到了websocket实现双向通信,百度地图API实现位置定位这两门技术,不难。 这里主要是和大家分享一下做这个大作业的.. 阅读全文
-
幸福框架:可扩展的、动态的、万能的 编号生成器
摘要:幸福框架:可扩展的、动态的、万能的 编号生成器背景之前写过三篇文章介绍如何实现这种编号生成器:http://www.cnblogs.com/happyframework/archive/2013/05/12/3073688.html。http://www.cnblogs.com/happyframework/archive/2013/05/13/3074410.html。http://www.cnblogs.com/happyframework/archive/2013/05/14/3077095.html。上周整理了一下,把代码合并到了http://happy.codeplex.com/,需 阅读全文