Fork me on GitHub

2012年9月21日

摘要: 对于用户定义表类型,它实际上并不能提高性能,会觉得它看起来高效的原因,是因为在程序中使用这个种类型的参数的时候,可以把 DataTable 做为参数直接传递给存储过程(看起来非常简洁) 但实际上去Trace其行为,会发现其实它相当于把 DataTable 的值包装成了 insert 语句,而不是真正的把数据做为块传给存储过程DBA这边的建议是:1.对于少量数据,我们建议拼成 xml ,存储过程里面做解析(附件有一个开发那边提供的测试,对于少量数据,不足1万条,xml解析的性能并不差)2.对于大量数据,我们建立使用SqlBulkInsert 来处理using System;using Syste 阅读全文
posted @ 2012-09-21 14:22 HackerVirus 阅读(171) 评论(0) 推荐(0)
摘要: 前言:这篇文章写作过程断断续续持续了两个月,终于写完了,最近事情有些多。这次技术会议的主办方虽然是阿里巴巴,但是还有很多其他的互联网企业,比如百度,新浪,腾讯,盛大,360,小米。会议共有两天,主要面向互联网技术,参与者也大多是互联网公司从业者。人还比较多,讨论也比较活跃。我主要参与的是aDev(应用架构和后端技术),这里简单总结一下:1、SOA的落地。记得Infoq上一篇文章曾说过:大意是,当一个技术大家不再热烈的讨论它的时候,说明他已经在工作中真正的发挥作用(当然也可能被淘汰),SOA应该是如此的。虽然各大网站对它的讨论热度不在,但是从这次技术会议中,随处可见SOA的身影。很多公司的交流都 阅读全文
posted @ 2012-09-21 09:17 HackerVirus 阅读(156) 评论(0) 推荐(0)
摘要: 最近只是一时兴起,觉得无聊,正好要到买票的时候,写了这个一系列文章,首先是对自己这些年来的工作经验的总结,其次是把分布式事务性系统的设计思想进行分析和整理,最后也就是和想集大家的智慧,讨论系统的设计。我不是铁道部的工程师,我只是一家互联网金融类公司的屌丝工程师,级别不高,能力也一般,就是喜欢技术而已。在第二篇文章里面,重点分析了余票库的整体设计,我看到有的评论说了几点,现在整理一下1 为什么要用悲观锁为什么要用锁,由于之前是做金融系统,对数据的一致性要求很高。铁道部的出票操作要保证数据一致性,所以必须在获取余票的情况下锁定余票记录,否则会导致并发问题,多出票。如果是站票还无所谓,如果是卧铺咋办 阅读全文
posted @ 2012-09-21 09:15 HackerVirus 阅读(194) 评论(0) 推荐(0)
摘要: 19号凌晨Apple发布了最新的iOS6、Xcode4.5正式版以及10.8.2升级包,昨天用公司的网络更新了一天一夜终于在早上升级完成。花了几分钟时间就把原来的App完美的升级,支持1136*640的分辨率。由于App原来就是支持iPhone/iPad的兼容模式,即Devices为Universal,所以升级过程非常的简单。1.Xcode4.5新版本更新内容首先介绍一下新的Xcode4.5的升级内容:我比较关注的有两个,一个是支持iOS6(这个是废话);另一个就是Xcode将兼容不同版本的操作系统,这点在VisutalStudio中早就实现了。4.5版本将不再按操作系统来发布不同版本。升级到 阅读全文
posted @ 2012-09-21 09:13 HackerVirus 阅读(137) 评论(0) 推荐(0)
摘要: .NET(C#): Task.Unwrap扩展方法和async Lambda目录Task.Unwrap基本使用Task.Factory.StartNew和Task.Run的Unwrap操作使用案例:LINQ中的async Lambda返回目录Task.Unwrap基本使用这个扩展方法定义在TaskExtensions类型中,命名空间在System.Threading.Tasks。Unwrap会把嵌套的Task<Task>或者Task<Task<T>>的结果提取出来。就像这样,不用Unwrap的话:staticvoidMain(string[] args){ 阅读全文
posted @ 2012-09-21 09:13 HackerVirus 阅读(3525) 评论(0) 推荐(1)

2012年9月20日

摘要: 内存对很多人来说感觉是个很熟悉的东西,因为我们在用VC调试程序时,很多时候都会察看内存中变量的值。但是,很多时候我们的思维也就因此局限在有源码的模块,当遇到一些跨模块或是没有源代码的Bug,我们还是无从下手。因此,很有必要我们要对整个程序内存有个比较全局性的认识,这样遇到任何问题,你都能从容面对。我这里以32位的程序为例,我们知道32位程序总共有4G内存空间,其中低2G是用户地址空间,高2G是内核地址空间,下面我们借助WinDbg工具来分析低2G用户地址空间的内存分布。因为所有程序的内存分布都大同小异,我这里用WinDbg分析任务管理器进程的内存分布。打开任务管理器,然后用WinDbg Att 阅读全文
posted @ 2012-09-20 20:52 HackerVirus 阅读(198) 评论(0) 推荐(0)
摘要: 从刚开始工作到现在,也有一年半了...期间读了不少与技术相关的书籍,但是之前总是一味的去看,很少动手,从去年的11月份开始学习wcf,手上的资料也不少,看得倒是很多,但是由于自己是个新人,要把这个通讯框架搞懂还真是有点困难,买了本<wcf技术内幕>,感觉这本书讲得很深撒...从开始学习到现在基本上是第三遍了,第一遍基本上算是走过场了,里面很多东西对于我这个菜鸟来说简直!@#$%......第二遍,结合目前正在做的项目,算是有点眉目了,现在是第三遍,觉得收获真是不少,所以打算边看边记录下来..下面进入正题. wcf最主要的目的是为了通讯,那么就为了实现简单的通讯,我建了两个简单的项目 阅读全文
posted @ 2012-09-20 20:48 HackerVirus 阅读(184) 评论(0) 推荐(0)
摘要: 在日常的编码当中,大家经常要遵照一些设计规范,如命名规则、代码格式规范等等。或者大家在看一些别人写的代码时,若代码格式不是很规范时,看起来是比较麻烦的。今天就给大家介绍一款名为AStyle的代码格式化工具,Astyle是一个开源代码格式化工具,可以使大家在日常开发中非常方便的调整大家的代吗格式。支持多种开发语言,支持多种格式化风格,本文主要简单介绍下怎样通过简单的几个步骤同Visual Studio的IDE进行集成,进行代码格式化。好了,入题:第一步。下载最新版本的Astyle.当前最新版本是Artistic Style 2.02.可以使用以下连接下载最新版本:http://sourcefor 阅读全文
posted @ 2012-09-20 20:43 HackerVirus 阅读(235) 评论(0) 推荐(0)
摘要: 实现托盘图标可以使用NotifyIcon控件。要求:当窗体最小化时,隐藏窗体并显示托盘图标。当双击托盘图标时,隐藏托盘图标并显示窗体。操作步骤:使用Visual Studio新建一个WinForm项目。拖进一个NotifyIcon控件,命名为TheNotifyIcon。在窗体的构造函数里加入以下代码:TheNotifyIcon.Text = "双击这里显示窗体";TheNotifyIcon.Icon = new Icon(@"D:\favicon.ico");这里D:\favicon.ico是D盘下放着的图标文件。也可以把图标加到资源里。然后添加TheN 阅读全文
posted @ 2012-09-20 20:36 HackerVirus 阅读(231) 评论(0) 推荐(0)
摘要: 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等。这些最基础的计算机动作被称为指令(instruction)。所谓的程序(program),就是这样一系列指令的所构成的集合。通过程序,我们可以让计算机完成复杂的操作。程序大多数时候被存储为可执行的文件。这样一个可执行文件就像是一个菜谱,计算机可以按照菜谱作出可口的饭菜。那么,程序和进程(process)的区别又是什么呢?进程是程序的一个具体实现。只有食谱没什么用,我们总要按照食谱的指点真 阅读全文
posted @ 2012-09-20 20:28 HackerVirus 阅读(151) 评论(0) 推荐(0)