随笔分类 - [20]DesignAnalysis设计分析
-
表格批量编辑与Undo/Redo功能实现
摘要:利用EAP.Entity提供的可以Undo/Redo的列表绑定数据到DataGridView,让表格批量编辑更方便更高效。1. 还是利用AccountGroup表的结构,然后得到实体AccountGroupModel:1 [System.Serializable()] 2 public class AccountGroupModels : System.Collections.Generic.List<AccountGroupModel> 3 { 4 5 public AccountGroupModels() 6 { 7 ... 阅读全文
-
搭建一个高并发低时延系统
摘要:首先声明一点:这里的“高并发”是相对的,相对于硬件而言,而不是绝对的高并发。后者需要分布式来实现,这里不做讨论。本文关注的是单机的高并发。最近在做一个语音通信系统,要求在线用户2W,并发1K路通话。硬件是两台服务器,酷睿多核,4G内存,千兆网卡(我用过的最好的硬件,负担这些应该问题不大)。系统的另一个指标是呼叫时延和语音时延。这是这个系统的关键。最终我们的系统拿到用户现场测试的时候,效果可能有点太好,对方测试不大相信。其实降低时延只要几个地方把握好了,应该问题不大的。这里总结一下。1、整体结构:整体上采用控制与承载相分离的结构。控制部分负责流程的控制部分,包括流程的建立,处理,语音资源的管理等 阅读全文
-
MessagePack
摘要:随着移动互联网的发展,网络编程也就越来越多的被用到,如果是消息传输的话,我想大家大部分会采用JSON的格式传输,也可能采用其它的格式,但是,在这我向大家推荐一种格式MessagePack,http://msgpack.org/这是它的官网,其实说白了就是通过第三方根据一定的格式来压缩数据,然后到server再按照它的那种格式解压缩。其实我个人感觉挺简单的(官网上的例子已经很清楚了),但是,在使用的时候会遇到一些想不到的问题。 首先,我还是简单的给大家介绍一下怎么使用吧! 开始前的准备,需要导入MessagePack的类库,但是仅仅导入msgpack-*.jar是不够的,你还需要导入ja... 阅读全文
-
SailingEase WinForm 框架
摘要:SailingEase WinForm 应用程序开发框架是针对微软 .NET 平台下 Windows 应用程序的开发所精心设计实现的源代码级开发平台。SailingEase WinForm 框架并非一个简单的 WinForm 控件包,而是一个能够贯穿整个项目周期的,完全的插件式 Winform 应用程序开发平台,所有源代码完整提供,并包括相当清晰的注释说明。 主要包括以下内容: 插件式开发平台 丰富的控件 丰富的组件 参考: SailingEase WinForm 开发框架:http://www.cnblogs.com/shengc/archive/2012/05/10/24... 阅读全文
-
Session hijacking(会话劫持)
摘要:原理会话劫持是指通过非常规手段,来得到合法用户在客户端和服务器段进行交互的特征值(一般为sessionid),然后伪造请求,去访问授权用户的数据。获取特征值的非常规有段主要有如下几种:首先是猜测的方式,如果我们的sessionid的生成是有规律的,那么使用猜测的方式就可以到达非法获取的目的,如图所示:其次是session fixation攻击。session fixation攻击是指用户通过XSS、网络嗅探、本地木马来得到特征值,这些交互的特征值一般来说放置在浏览器的Cookie中(当然,我们也知道sessionid也可以通过URL来传递,这样的话,获取就简单多了)。然后诱使用户去完成一次登录 阅读全文
-
开发企业应用系统需要掌握的知识技能
摘要:1. 概述本篇文章主要是对开发方面及项目管理方面的知识技能内容进行规划及调侃,这是一篇自我调侃的建议。在这篇文章中我把掌握知识技能的程度分为了解、熟悉、精通。l 了解:是指知道这个事物并且会使用这个事物。l 熟悉:是指对这个事物的使用和应用非常了解,出现问题能快速解决问题。l 精通:是指对这个事物的原理已经掌握,并知道这个事物的来龙去脉。开发一个优秀的企业应用系统需要掌握哪些知识技能?我或我的团队现在处在什么程度?在这里我先抛砖引玉,把开发优秀的企业应用系统的能力分为初级、普通、高级三种等级。l 初级:是指开发的企业应用系统满足客户的功能性需求,达到能用的阶段。l 普通:是指开发的企业应用系统 阅读全文
-
ERP产品框架
摘要:对于做java web开的多数程序员会选择SSH、Spring Mvc 、SSI之类的框架!这些框架的优点我想大家都很清楚,在这里我就不多说了!当你遇到下面的需求的,而且要达到快速开发的时候,你会发现用这些框架组合好像不太现实!而且会成为一种累赘. 本人以前做是做C++、.net 的开发,2011年8月 转入java项目组,负责一个产品开发,主要任务是负责这个产品的程序框架!目前这个框架基本上以成型,在这里我主要想和大家分享一下java开发、框架设计、以及产品设计之路的经验,不足之处希望大侠指点一下,在用做这个框架之前,我对java主要了解还只有J2SE、jsp,servlet,JDBC! 2 阅读全文
-
重构着讲解设计原则与模式——从DIP中“倒置”的含义说接口的正确使用
摘要:提纲开灯的例子暗流涌动Guru眼中的依赖DIP(依赖倒置原则)为什么要解耦合?接口的坏味道同一张类图的不同解释——真假DIP了解DIP有什么用?DIP用在什么地方?下回预告参考文献开灯的例子 选开灯做例子,是因为这个例子既常见又简单,而且潜在的需求多样。对于最简单的灯,从功能上讲,按下灯上的开关,灯就开了。 用代码实现这样一个有开关功能的灯,也是一件很容易的事情。public class Light{ public void TurnOn() { Console.WriteLine("Light Turn On"); } public void TurnOff() { Co 阅读全文
-
Flume日志收集
摘要:一、Flume介绍Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。设计目标:(1) 可靠性当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),B 阅读全文
-
ASP.NET MVC+Spring.net+Nhibernate+EasyUI+Jquery开发案例(2)
摘要:接着昨天的继续吧,我们的完美征程继续开始。昨天我们完成了MVC里面的Dao层的设计,在上面我们已经实现了操作数据库的代码,在这个项目中我实现了User_DepInfo表的增删改查和模糊查询,是基于EasyUI写的。第六步:实现Server的接口: NewKJ241.IBLL(1) 这个接口的作用和NewKJ241.IDao类库里面类的接口一模一样,目的是为了分层更加的明确,而且在后面还有一个类要继承自这个接口,在类库NewKJ241.IBLL下面新建一个类名,起名为:IUserDepInfoBLL,代码因为和上面那个接口的代码一模一样的,所以我就不写出来了。第七步:继承Server接口:New 阅读全文
-
逻辑服务器
摘要:针对现有.net 的socket tcp来说性能是非常不错的,以现有普通服务器的配置挂载几W以上的长连接每秒处理几W的请求应答从网络吞吐能力来说完全可以应付。不过实际应用并不可能这么简单,既然有所求就必然要处理一些逻辑上的工作。如果让一台普通服务每秒去处理几W的数据逻辑似乎有点不太现实现事情,所以就产生了这种架构的想法前置一台代理服务器,后面挂N台逻辑服务器。大概网络布局如下:从规划上用户的所有访问只需要针对代理服务器,并不用关心后面的具体工作;原理就是代理接受请求消息后把消息负载到不同的逻辑服务器处理,逻辑服务器处理完成后把结果发送给代理服务,由 代理服务再反还给具体的用户。这样即使面对更多 阅读全文
-
微软翻译api的使用介绍和注意事项
摘要:google翻译api已经收费了,而微软翻译api目前是免费的,支持几种不同的方式访问,如果感兴趣可以自己封装下协议处理。官方介绍:http://msdn.microsoft.com/en-us/library/hh454950.aspx。这里介绍一下java下的使用。Java下使用微软翻译api可以直接使用一个开源的sdk,http://code.google.com/p/microsoft-translator-java-api/。一、首先去http://code.google.com/p/microsoft-translator-java-api/,下载相关jar文件,这里有对微软翻译a 阅读全文
-
Instagram的技术探索
摘要:原文:http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances-dozens-of当我们与其他工程师偶遇和交流的时候,有一个问题经常被问及,“你们的技术架构(technology stack)是怎么样的”?我们觉得从较高的层次来描述Instagram的所有构成系统是一件有趣的事情;未来你可能期待更深入的描述这些系统。这就是我们的系统,仅仅1年时间,并且我们活了下来,其中有一部分我们一直在修改。一个小型团队的初创公司,可以在一年多一点时间发展到1400多 阅读全文
-
SOA面向服务架构简述
摘要:在上篇中我们简单谈了下架构设计中服务层的简单理解,在这里我们将继续服务层的架构,在本节我们将重点在于分布式服务。在分布式系统中表现层和业务逻辑层 并不处于同一物理部署,所以我们必须存在分布式服务,以契约方式发布于网络中,我们的关注点在于服务,面向服务编程,这种通过组合业务逻辑暴露可用服务的架构叫做面向服务架构(SOA)。 SOA强调一个松耦合,基于宏服务的架构,通过契约暴露给服务消费者可用的服务交互。SOA是以服务为组成构建,原则有:边界清晰: 服务层是消费者交互到系统业务的唯一入口,所有我们的服务必须能够被消费者所理解,以及最好处理Request/Response基于消息交换RPC调用,职责 阅读全文
-
django框架
摘要:django框架本篇主要讲解一些基本的操作:创建django工程数据库相关配置后台管理界面1. 创建django工程安装完django之后,在python安装目录下的Scripts目录中有个django-admin.py的脚本,可以用来新建django工程。django-admin.py startproject testSite1新建了一个名为testSite1的工程,非常简单。testSite1文件夹其实就是一个python模块。里面默认生成四个文件manage.py 控制工程的启动,数据库同步等等,相当于django-admin.py的精简版settings.py 保存工程的各种共通配置 阅读全文
-
Python Web 框架, 使用 Django 和 Python 开发 Web 站点
摘要:简介:本系列文章一共有两篇,本文是其中的第一篇。在这一篇文章中,我们将展示 Django 的用法,Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架。使用 Django,我们在几分钟之内就可以创建高品质、易维护、数据库驱动的应用程序。本文的标签:django,python,webDjango 项目是一个定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:用于创建模型的对象关系映射为最终用户设计的完美管理界面一流的 URL 设计设计者友好的模板语言缓存系统本文是有关 Pyt 阅读全文
-
架构设计中服务层的简单理解
摘要:在ddd设计中我们经常会提到服务层,服务层是什么?职责是什么?有什么好处?。 先看简单的层次图(注:这里并没有考虑其他多余的领域逻辑数据层存储,或者UOW这些细节) 我的理解是服务层是处于我的应用程序业务层和表现层之间的应用程序边界,边界可能是很薄的一层类设计或者是分布式服务网络跃点。它是一个与技术无关的名词。由表现层直接调用,契约,执行命令(修改状态(CUD))或者是查询返回dto(数据迁移对象)(cms,命令-查询分离)。他对业务逻辑层接口很清楚,组织业务逻辑 微服务形成宏服务,适配表现层。 这里谈到宏服务和微服务,宏服务有一些列粗粒度的服务组成。用户的一次操作usecase,比如电子商务 阅读全文
-
系统性能优化一例
摘要:上周接到一位从事电子产品生产的大学同学的QQ说他的一个ERP系统有问题,帮他看看,周末他过来详细的了解了一下情况:周一到周五使用的用户数是10-20个人,系统慢起来就是大家一起慢,人数少的时候不慢,另外一个揪心的问题就是大家同时使用的使用经常无故的退出,而且他还强调了他买的是一个强大的服务器了,系统运行了2年时间,数据量也不大。先描述下系统情况:操作系统:WindowsServer 2003.NET版本:.NET 2.0/ASP.NET 2.0数据库: SQL Server从前面描述的问题,初步可以判定:1、系统不稳定,估计是系统大量使用了Session ,Session丢失导致不稳定2、10 阅读全文
-
首页静态化和定时执行
摘要:1.首页静态我在前面已经提到过但是那种方式好像解决的不够彻底,而且每次加载首页会先生存index.aspx动态首页,然后重写该页面,这样带给服务器的负荷还是不小的。因此我决定用以下方法进行首页静态化:基本思路:首先要掌握这种静态化首页技术 其次是要做间隔每10分钟更新一次首页静态页面这样做的好处是既能做到及时更新又不会给服务器很大的负荷。一箭双雕多好呢。2.下来我们就说说静态化首页的技术:?//获取该页面的url:Request.Url.AbsoluteUristring url = Request.Url.AbsoluteUri.Substring(0,Request.Url.Absolut 阅读全文
-
REST in Practice
摘要:最近 O’Reilly 搞活动,我就半价买了一本《REST in Practice》(Kindle 版链接)。对于 O’Reilly 的书,我通常会对比 O’Reilly 打折后的价钱和 Kindle 版的价格,通常是那家更便宜就在那家买,但图表或代码比较多的我就会坚持买 O’Reilly 的版本,因为 PDF 能够最好地保存这些格式。回到 REST 的话题上。尽管这个概念 2000 年就被提出来了,2007 年成为了一个热词,随后越来越多的服务都宣称自己是 RESTful 的,但是到底真么做才是真正的 REST 我从来没有自习学习过。由于 2007 年的时候 Ruby on Rails 也十 阅读全文