随笔分类 -  04.系统架构和开发

摘要:在项目中新建一个class文件,代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WeifenLuo.WinFormsUI.Docking{ public class DockContentEx : WeifenLuo.WinFormsUI.Docking.DockContent { ... 阅读全文
posted @ 2013-12-13 13:18 海上浪子 阅读(542) 评论(0) 推荐(0) 编辑
摘要:private void OpenForm() where T : Form, new(){ T frm = (T)new List(this.MdiChildren).Find(f => f is T) ?? new T() { MdiParent = this }; frm.Show(); frm.Focus();}View Code OpenForm();View Code 另外的一种写法: public partial class MDIForm : Form { private Child1Form mChild1Form = null; ... 阅读全文
posted @ 2013-12-12 11:30 海上浪子 阅读(193) 评论(0) 推荐(0) 编辑
摘要:今天遇到了一个问题,需要把原数据库的一些数据导入到新数据库中,其中包括700多条存储过程。开始通过sql语句查询出所有的存储过程,然后再创建,发现创建存储过程时不能同时创建多个。select sm.object_id, object_name(sm.object_id) as object_name, o.type, o.type_desc, sm.definition from sys.sql_modules sm inner join sys.objects o on sm.object_id = o.object_id where o.type = 'P' and o.. 阅读全文
posted @ 2013-12-11 16:18 海上浪子 阅读(270) 评论(0) 推荐(0) 编辑
摘要:大数据处理是一个头疼的问题,特别当达不到专业DBA的技术水准时,对一些数据库方面的问题感到无赖。所以还是有必要了解一些数据库方面的技巧,当 然,每个人都有自己的数据库方面的技巧,只是八仙过海,所用的武功不同而已。我把我最常用的几种方式总结来与大家分享,大家还有更多的数据库设计和优化的 技巧,尽量的追加到评论中,有时一篇完整的博客评论比主题更为精彩。方法1:采用表分区技术。 第一次听说表分区,是以前的一个oracle培训。oracle既然有表分区,就想到mssql是否有表的分区,当时我回家就google了一把,资料还是有的,在这我儿只是再作一次推广,让更多的人了解和运用这些技术。 表分区,就.. 阅读全文
posted @ 2013-12-11 15:26 海上浪子 阅读(411) 评论(2) 推荐(1) 编辑
摘要:下面进入正题吧,很多时候当单张数据表的数据量比较大的时候比如千万级别条记录、上亿级别记录,如果不做优化,那么查询的效率大家清楚。有经验的人会通过各种手段做优化,其中表分区就是其中一种手段。个人对表分区的口语化解释:把一张表分成几个区域例如:一张业务表,有一个字段是月份或者年份,那么可以按照月份/年份来分区,当客户要查询某个月份/年份的数据的时候就到那个月份/年份的分区去查询,不用整个表去查询,这样就提高了不小效率。还是就是可以把分区文件组放在不同的磁盘分区或者不同的硬盘去,减少磁盘I/O。以上这些都是表分区的特点。下面说一下概念吧~SQLSERVER数据库服务器中包含很多数据库对象,其中就包括 阅读全文
posted @ 2013-12-11 14:47 海上浪子 阅读(385) 评论(0) 推荐(0) 编辑
摘要:写sql语句分别按日,星期,月,季度,年统计销售额--按日select sum(consume),day([date]) from consume_record where year([date]) = '2006' group by day([date])--按周quarterselect sum(consume),datename(week,[date]) from consume_record where year([date]) = '2006' group by datename(week,[date])--按月select sum(consume), 阅读全文
posted @ 2013-12-11 14:35 海上浪子 阅读(267) 评论(0) 推荐(0) 编辑
摘要:简介 分区表是在SQL SERVER2005之后的版本引入的特性。这个特性允许把逻辑上的一个表在物理上分为很多部分。而对于SQL SERVER2005之前版本,所谓的分区表仅仅是分布式视图,也就是多个表做union操作. 分区表在逻辑上是一个表,而物理上是多个表.这意味着从用户的角度来看,分区表和普通表是一样的。这个概念可以简单如下图所示: 而对于SQL SERVER2005之前的版本,是没有分区这个概念的,所谓的分区仅仅是分布式视图: 本篇文章所讲述的分区表指的是SQL SERVER2005之后引入的分区表特性.为什么要对表进行分区 在回答标题的问题之前,需要说明的是,表分区这个特性只有.. 阅读全文
posted @ 2013-12-11 10:34 海上浪子 阅读(197) 评论(0) 推荐(0) 编辑
摘要:在上一节中我们介绍了环境搭建和配置介绍,并快速启动CC查看集成结果,在本节中我们将详细介绍CC构建操作及监视。 1. 启动CC服务器 通过执行其根目录下的cruisecontrol.bat文件来启动CC。控制台显示“BuildQueue - BuildQueue started”,则说明CC服务器已成功启动。在启动服务器之前,我们可以打开cruisecontrol.bat文件并修改倒数第三行相应功能的端口数值来指定服务器占用的系统端口,在本例中我们将默认8080端口。2. Report管理方式 在前一节中介绍CC有两个入口可以管理集成项目,其中CC较早之前提供了Report方式... 阅读全文
posted @ 2013-12-11 10:28 海上浪子 阅读(236) 评论(0) 推荐(0) 编辑
摘要:1. 环境搭建 1.1. 下载及目录介绍从官方站点http://cruisecontrol.sourceforge.net/download.html下载一份最新的 CC 压缩包,最新的版本号为2.8.4下载了cruisecontrol-bin-2.8.4.zip 直接解压到E盘下,文件结构如下图: apache-ant-1.7.0:CC中使用ANT工具 artifacts:CC编译生成发布包 etc:自带容器Jetty对应的配置文件 lib:自带容器Jetty所需要到的Jar包 logs:各项目生成日志存在文件夹 projects:存放各项目文件目录,进行程序的编译 webapps:CC自带 阅读全文
posted @ 2013-12-11 10:26 海上浪子 阅读(258) 评论(0) 推荐(0) 编辑
摘要:在前面的文章中, 介绍自己当时所在团队的处境(使用.NET开发),一个不到十个人的研发团队在保证正常开发进度同时需要并发支持四、五十个项目问题处理,经常为了程序版 本冲突、日常测试版本、发布版本提供等重复枯燥无味的手工劳动,导致团队成员身心俱疲。经历这样痛苦的一段时间,终于忍受不了,通过命令行实现了包括获 取、编译、发布过程的集成,大大减轻版本编译的时间,此时还能见到团队成员一边编译程序一边聊天轻松的笑脸,这就坚定了自己持续集成的做法,不过可笑是当 时自己对持续集成没有任何的概念,只是当时的状况逼自己走了集成之路。 这个工具在经历半年使用进行了一次升级,提供了更多的选项功能,参见升级版本介绍。 阅读全文
posted @ 2013-12-11 10:24 海上浪子 阅读(175) 评论(0) 推荐(0) 编辑
摘要:持续化集成工具CC.NET[引言:团队开发需要 进行集中的项目文件管理与有效的协调,我们采用源代码管理工具协助我们管理,卓有成效。限定重要文件的访问权限、使用悲观锁杜绝成员同时编辑同一份文件、 不允许长时间迁出文件等规则让我们在某一时间段内非常愉快。但是慢慢的,有人抱怨“我获取了源代码怎么编译错误?”。于是增加规定:迁入之前必须获取最 新,然后再一次编译,成功后方可迁入VSS。这种办法是很不错,但是工作繁琐了,尤其对大型项目,更加的苦不堪言。看来我们需要一个机器人帮我们,那就是持续集成。持续集成是一种实践,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。通俗一 阅读全文
posted @ 2013-12-11 10:22 海上浪子 阅读(280) 评论(0) 推荐(0) 编辑
摘要:在项目中新建一个class文件,代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WeifenLuo.WinFormsUI.Docking{ public class DockContentEx : WeifenLuo.WinFormsUI.Docking.DockContent { ... 阅读全文
posted @ 2013-12-11 10:09 海上浪子 阅读(437) 评论(0) 推荐(0) 编辑
摘要:1、当双击Tab时,原先是直接把当前Tab所表示的这个窗体,从主窗体的框架上分离现来,成为一个浮动的窗体。这不是我想要的,我把它改成了双击关闭。在DockPaneStripBase的WndProc方法里,对于左键双击消息重新作了处理(下面注释掉的一行是原先的写法,它下面那行是改的): [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)] protected override void WndProc(ref Message m) { if (m.Msg == ( 阅读全文
posted @ 2013-12-11 09:48 海上浪子 阅读(369) 评论(0) 推荐(0) 编辑
摘要:在企业数据库设计中,经常会遇到一个需求,就是希望把操作之前的数据保留下来,能够看到操作之前是什么数据,操作之后是什么数据。对于这种需求,我们可以使用保留历史数据或者使用版本来实现。为了能够保留历史数据,在版本设计时有以下方案:一、使用版本号版本号是一种常见的版本设计方案,就是在要进行历史数据保留的表上面增加一个版本号字段,该字段可以是DateTime类型,也可以是int类型,每进行数据操作时,都是创建一个新的版本,版本是只增不减的,所以只需要拿到最大一个版本号,就能得到最新的业务数据。版 本号除了能够用于留存历史数据外,还有一个功能就是避免并发编辑操作。比如我们有一个对象A,当前的版本是1,两 阅读全文
posted @ 2013-12-10 16:46 海上浪子 阅读(361) 评论(0) 推荐(0) 编辑
摘要:这种资料.向来可遇不可求啊WikiPedia 技术架构学习分享http://www.dbanotes.net/opensource/wikipedia_arch.htmlYouTube 的架构扩展http://www.dbanotes.net/opensource/youtube_web_arch.htmlInternet Archive 的海量存储浅析http://www.dbanotes.net/database/internet_archive_storage.htmlLinkedIn 架构笔记http://www.dbanotes.net/arch/linkedin.htmlTailr 阅读全文
posted @ 2013-12-09 17:32 海上浪子 阅读(384) 评论(0) 推荐(0) 编辑
摘要:Flickr(http://www.flickr.com/) 是国外一个领先的图片分享网站,现在应该在yahoo门下,感觉yahoo还是有很多好东西,奈何资本要抛弃他了。这个轮回其实挺有意思的,起先是做实业 被microsoft郁闷了,说软件是虚的值不能那么多钱,然后microsoft被yahoo郁闷了,说互联网是虚的不值那么多钱,然后是yahoo被 google郁闷了,yahoo比较厚道没说什么,不知道google将来要被谁郁闷了。成功建立在相同的失败上,反过来失败都是建立在相同的成功上也成 立,进入正题吧。原文地址是http://highscalability.com/flickr-arc 阅读全文
posted @ 2013-12-09 16:54 海上浪子 阅读(239) 评论(0) 推荐(0) 编辑
摘要:又一个多月没冒泡了,其实最近学了些东西,但是没有安排时间整理成博文,后续再奉上。最近还写了一个发邮件的组件以及性能测试请看 《NET开发邮件发送功能的全面教程(含邮件组件源码)》,还弄了个MSSQL参数化语法生成器,会在9月整理出来,有兴趣的园友可以关注下我的博客。分享原由,最近公司用到,并且在找最合适的方案,希望大家多参与讨论和提出新方案。我和我的小伙伴们也讨论了这个主题,我受益匪浅啊……博文示例:GUID生成Int64值后是否还具有唯一性测试Random生成高唯一性随机码今天分享的主题是:如何在高并发分布式系统中生成全局唯一Id。但这篇博文实际上是“半分享半讨论”的博文:1) 半分享是我将 阅读全文
posted @ 2013-12-09 09:43 海上浪子 阅读(810) 评论(0) 推荐(0) 编辑
摘要:随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。一、负载均衡技术 负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器。1、实现原理 实现数据库的负载均衡技术,首先要有一个可以控制连接数据库的控制端。在这里,它截断了数据库和程序的直接连接,由所有的程序 来访问这个中间层,然后再由中间层来访问数据库。这样,我们就 阅读全文
posted @ 2013-12-09 09:38 海上浪子 阅读(511) 评论(0) 推荐(1) 编辑
摘要:ehcache支持两种拓扑结构,一种是Distributed Caching,另一种是Replicated CachingDistributed Caching这和一般意义上的分布式缓存非常类似,这一类型的缓存是有client-server之分的,application通过client向server端请求缓存数据,在server端,数据是散列到多个节点上的。具体而准确的拓扑结构见下图(该图正是Terracotta Server Array的拓扑结构,ehcache的分布式实现是依赖Terracotta Server Array实现的):一方面:L1是客户端结点,基于Terracotta Ser 阅读全文
posted @ 2013-12-04 09:56 海上浪子 阅读(248) 评论(0) 推荐(0) 编辑
摘要:简介:EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。本文充分的介绍了 EhCache 缓存系统对集群环境的支持以及使用方法。EhCache 缓存系统简介EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。下图是 EhCache 在应用程序中的位置:图 1. EhCache 应用架构图EhCache 的主要特性有:快速;简单;多种缓存策略;缓存数据有两级:内存和磁盘,因此无需担心容量问题;缓存数据会在虚拟机重启的过程中写 阅读全文
posted @ 2013-12-04 08:47 海上浪子 阅读(328) 评论(0) 推荐(0) 编辑