代码改变世界

SQL SERVER 中如何使用锁

2011-09-09 11:53 by 熬夜的虫子, 747 阅读, 0 推荐, 收藏, 编辑
摘要:多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 并发控制的主要方法是封锁,锁就是在一段时间内禁止用户做某些操作以避免产生数据不一致 SQL Server支持的锁粒度可以分为为行、页、键、键范围、索引、表或数据库获取锁一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: -丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 -脏读 A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致 -不... 阅读全文

结合项目实例 回顾传统设计模式(一)策略模式

2011-09-09 10:21 by 熬夜的虫子, 1222 阅读, 1 推荐, 收藏, 编辑
摘要:虫子以前在一家电商公司 会员的模块在这里分类很明确 不同的会员所具有的权限和行为不同,大多程序员会使用标准的oo技术,设计一个会员超类SuperUser,并让各种商家会员继承此超类到这里无可厚非,但是在下面个过程中你可以就慢慢体会策略模式与你在代码里不停写逻辑判断所带来的区别有多大所有的会员都具有下列行为购物,评价,发布商品View Code publicabstractclassSuperUser{publicSuperUser(){}publicvoidshopping(){Console.WriteLine("shopping");}publicvoidComment 阅读全文

回头再学Asp.net系列--基础篇(一)

2011-09-08 15:03 by 熬夜的虫子, 456 阅读, 1 推荐, 收藏, 编辑
摘要:Web Page的生命周期与Postback参考 http://www.cnblogs.com/artech/archive/2007/04/06/702658.html了解ASP.NET Web Page的生命周期对于一个做WEB开发的工程师来说很有必要,尤其是用于编写自己的control的时候。ASP.NET Web Page的生命周期可以基本分为以下几个阶段:1. Page request 本页面被请求时发生在web page生命周期之前, 当有一个页面被请求时,ASP.NET引擎要判断一下这个页面是否需要经过编译或者直接通过此页面的缓冲版本直接发给请求者。2. Start 在这阶段,P 阅读全文

回头再学Asp.net系列--基础篇(序)

2011-09-08 12:03 by 熬夜的虫子, 561 阅读, 1 推荐, 收藏, 编辑
摘要:时光如梭,不知不觉间虫子作为码农已经3年光景了。见识了太多了大牛、大侠。站在巨人的肩膀上,容易好高骛远。虽然自己确实做了很多,摸了不少,曾经还自诩为优秀的架构师。可真的站在架构师这个角度的时候突然发现自己的脚下是悬空的。危险!虫子相信和他类似的人很多很多,包括所谓的架构师。不信,我随便问您2个问题,绝对是最基础的,您或许了解但您未必全面:1..NET BCL里有哪些是类(结构),为什么它们不是结构(类)?在自定义类型时,您如何选择是类还是结构?2.什么是.NET?什么是CLI?什么是CLR?IL是什么?JIT是什么,它​​是如何工作的?GC是什么,简述一下GC的工作方式?从现在开始虫子准备放下 阅读全文

关于领域驱动设计与面向数据库设计

2011-09-07 17:44 by 熬夜的虫子, 1888 阅读, 1 推荐, 收藏, 编辑
摘要:╮(╯▽╰)╭ 开发时间越长越觉得自己的知识储备不够 本篇文章只代表虫子个人观点 欢迎大牛们吐槽首先,虫子不会说哪一种更优秀,而是说对于新给的需求适合哪种设计。更贴切的一点,对于一个大型的系统应用应该兼容2种设计思想。分2个阶段,首先在需求确认阶段利用领域驱动建模,细化模块、角色、关系、行为以及资源等。建模不需要太彻底。然后、分块完毕后在概要设计阶段可以再切换设计思路,模块化的应用按照面向数据库的设计思想,这样在2个阶段都利用了2种设计思想的长度。最大程度的提高系统的价值。下面来介绍下2种设计1.先来扯扯领域驱动设计 借鉴下一些大牛的经验http://www.cnblogs.com/tsouk 阅读全文

一些老程序员不错的经验分享

2011-09-05 16:21 by 熬夜的虫子, 191 阅读, 0 推荐, 收藏, 编辑
摘要:http://www.cnblogs.com/yantao7589/archive/2011/08.html http://www.cnblogs.com/tsoukw/archive/2007/09/25/905618.html中文分词、术语向量、向量距离、自动聚类算法 消息驱动http://devcentral.f5.com/weblogs/dmacvittie/archive/2009/03/31/intro-to-load-balancing-for-developers-ndash-the-algorithms.aspxhttp://www.cnblogs.com/xiaoyao20 阅读全文

打造属于自己的设计模式

2011-09-05 12:05 by 熬夜的虫子, 1081 阅读, 3 推荐, 收藏, 编辑
摘要:设计模式 一般初级、中级、高级程序员都喜欢挂在嘴边的词。想必大家身边也有不少关于设计模式的书。设计模式是程序员的老前辈们根据自己的项目经验积累起来的解决方案集。所以,没必要把设计模式看成是硬性的东西,别人的经验参考一下即可,了解设计思路,为什么这种场景要用这种模式。也许是老一辈的程序员们确实比现在的程序员要强很多,毕竟现在网上很难找到自己摸索的设计模式了。虫子不才就先抛砖引玉了。简单介绍2个我项目中经常用到的模式1.机器人插件模式何所谓机器人插件,可以这样理解。你有一个机器人,但是需要这个机器人干什么并不确定。插入不同的卡片可以让机器人做出不同的行为。原理和aop类似,aop是站在系统级的角度 阅读全文

CDN技术学习

2011-09-05 11:05 by 熬夜的虫子, 418 阅读, 0 推荐, 收藏, 编辑
摘要:一、CDN介绍CDN(通常被称为内容分发网络Content distribution network,有时也被称作内容传递网络Content delivery network)作为一种提高网络内容,其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度,特别是提高流媒体内容传输的服务质量、节省骨干网络带宽的技术,在国内外得到越来越广泛的应用。CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量 阅读全文

分布式文件系统应用(下篇 实践)

2011-08-31 16:29 by 熬夜的虫子, 742 阅读, 2 推荐, 收藏, 编辑
摘要:题外话不多说 直接整起 先简单演示 单台storage+tracker先介绍下虫子的环境 windosXP主机(~~o(>_<)o ~~ 虫子也不想的) ubuntu虚拟机fastdfs安装目录在root用户下根目录启动tracker服务 /usr/local/bin/fdfs_trackerd /FastDFS/conf/tracker.conf启动storage服务/usr/local/bin/fdfs_storaged /FastDFS/conf/storage.conf添加监控 看是否启动成功测试上传根据服务端的通信协议设计.net客户端test:获得上传路径 获得上传路径 阅读全文

分布式文件系统应用(上篇 理论)

2011-07-10 13:17 by 熬夜的虫子, 725 阅读, 1 推荐, 收藏, 编辑
摘要:自从6月份出山以来 就一直琢磨着搞一套通用的服务化平台。在设计用户行为分析以及用户推广的时候,发现自己的构架里对海量文件的存储没有一个合理的方案。起初打算用windows2003中dfs系统开发一套新的文件系统,后来发现win下的dfs是个大坑,未遂。然后考虑到win平台与linux系统之间关于文件处理的优劣与稳定性,最终选择linux下fastdfs。下面先简单介绍下分布式文件系统然后结合我的实际case给大家图文演示,在这之前先感谢下fishman、咕咚、以及菲雪同学的大力支持。你们是最棒的!!Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。在内存中记录 阅读全文

动态方法与动态代理(下篇)

2011-07-10 12:11 by 熬夜的虫子, 520 阅读, 0 推荐, 收藏, 编辑
摘要:动态代理: 代理模式和装饰模式的区别: 装饰模式:在不改变接口的前提下,动态扩展对象的功能 代理模式:在不改变接口的前提下,控制对象的访问 代理类和被代理对象是has-a关系,一般没有is-a关系,除非代理类直接继承被代理类,重写被代理类的方法 动态代理是指通过动态代码技术在运行时生成具体类的代理,目的是在执行具体类的操作之前或之后运行特定的逻辑 动态代理既可以代理类也可以代理接口,代理类时,被代理的类不能为Sealed,并且其中属性和方法都必须为Virtual,而代理接口时则无约束条件•Demo:动态生成接口的代理View Code 1publicinterfaceICalculate2{3 阅读全文

经典linq模板语句(三)

2011-06-22 17:21 by 熬夜的虫子, 280 阅读, 0 推荐, 收藏, 编辑
摘要:Join操作适用场景:在我们表关系中有一对一关系,一对多关系,多对多关系等。对各个表之间的关系,就用这些实现对多个表的操作。说明:在Join操作中,分别为Join(Join查询), SelectMany(Select一对多选择)和GroupJoin(分组Join查询)。该扩展方法对两个序列中键匹配的元素进行inner join操作SelectMany说明:我们在写查询语句时,如果被翻译成SelectMany需要满足2个条件。1:查询语句中没有join和into,2:必须出现EntitySet。在我们表关系中有一对一关系,一对多关系,多对多关系等,下面分别介绍一下。 1.一对多关系(1 to M 阅读全文

经典linq模板语句(二)

2011-06-22 17:12 by 熬夜的虫子, 201 阅读, 0 推荐, 收藏, 编辑
摘要:Count/Sum/Min/Max/Avg操作符适用场景:统计数据吧,比如统计一些数据的个数,求和,最小值,最大值,平均数。Count说明:返回集合中的元素个数,返回INT类型;不延迟。生成SQL语句为:SELECT COUNT(*) FROM 1.简单形式:得到数据库中客户的数量:var q = db.Customers.Count();2.带条件形式:得到数据库中未断货产品的数量:var q = db.Products.Count(p => !p.Discontinued);LongCount说明:返回集合中的元素个数,返回LONG类型;不延迟。对于元素个数较多的集合可视情况可以选用 阅读全文

经典linq模板语句

2011-06-22 17:09 by 熬夜的虫子, 230 阅读, 0 推荐, 收藏, 编辑
摘要:1.简单形式:var q = from c in db.Customers where c.City == "London" select c;使用where筛选在伦敦的客户var q = from e in db.Employees where e.HireDate >= new DateTime(1994, 1, 1) select e; 筛选1994 年或之后雇用的雇员:2.关系条件形式:var q = from p in db.Products where p.UnitsInStock <= p.ReorderLevel && !p.Di 阅读全文

重构与设计解析(非原创)

2011-06-22 14:57 by 熬夜的虫子, 678 阅读, 1 推荐, 收藏, 编辑
摘要:现行系统中我们存在的问题:僵化性(Rigidity):设计难以改变。脆弱性(Fragility):设计易于遭到破坏。 牢固性(Immobility):设计难以重用。 粘滞性(Viscosity):难以做正确的事情。 不必要的复杂性(Needless Complexity):过分设计。 不必要的重复(Needless Repetition):过多的重复。 晦涩性(Opacity):混乱的表达。 具体来说:例如1、代码重复;2、过长的方法(太多的上下文信息,如大量临时变量,使代码不容易理解);3、过大类(往往是一个类承担了太多的职责所致);4、过长参数列(方法参数一般不要超过7个);5、发散式变化 阅读全文