一、程序功能:当上传图片大小超过8k或格式不符时禁止上传,上传通过之后,用datagrid显示上传的图片 二、建立数据库 在mssql的northwind数据库中新建一个users表,表设计如下:列名 数据类型 长度 是否可以为空 其它id int 4 否 主键,设标识为是,标识种子1,递增量1headimg varchar 50 否 三、窗体设计: 1、新建asp.net web应用程序,命名为datagrid3,保存路径为http://192.168.0.1/datagrid3(注:我机子上的网站的ip是192.168.0.1的主目录是d:web文件夹)然后点击确定。 2、在解决方案资源管理器窗口中,将webform1.aspx重命名为uppicture.aspx,然后从工具箱中向窗体添加一个label控件、一个button按钮.然后从一个html工具箱中向窗体添加一个file f...
dcl模式的推广 上面所介绍的dcl模式的实现都是基于一个最为简单的逻辑,也就是单实例逻辑。这一逻辑还可以进一步推广成为更为一般的循环逻辑。 比如工厂对象可以控制产品类实例的数目有一个上限,这个上限为1时,就成为单实例逻辑;大于1时,就成为多实例逻辑。 如果产品对象是有状态的,工厂对象虽然不控制产品类实例的数目,但是却根据产品对象的状态循环使用产品类实例,比如对应每一种状态的产品类实例最多只允许一个(或n个),等等。 问答题 第1题、使用mutex改写代码清单5。 第2题、使用monitor改写代码清单5。 第3题、使用synclock改写代码清单5。 第4题、使用monitor改写代码清单6。 第5题、使用synclock改写代码清单6。 第6题、使用monitor改写代码清单9。 第7题、使用synclock改写代码清单9。 问答题答案 第1题答案、mutex改写同步化代码清单5,结果...
关于dcl模式的讨论 第一次接触到这个技巧的读者必定会有很多问题,诸如第一次检查或者第二次检查可不可以省掉等等。回答是,按照多线程的原理和dcl模式的预想方案,它们是不可以省掉的。 首先,如果省略了第一次检查,那么工厂方法就变成下面这样:public shared function getinstance() as product thread.sleep(10) '位置1 '位置2 m.waitone() '位置3 if (instance is nothing) then '位置4 instance = new product() end if m.releasemutex() return instanceend function代码清单7、省略了第一重检查的线程安全的工厂方法 这就造成不论产品实例是否存在都会在位置2等待的情况,也就是等于没有优化前的线程安全的工厂方...
一个线程安全的版本 为了克服没有线程安全的缺点,下面给出一个线程安全的getinstance()方法:<methodimpl(methodimploptions.synchronized)> _public shared function getinstance() as product thread.sleep(10) if (instance is nothing) then instance = new product() end if return instanceend function代码清单5、这是一个线程安全的正确答案 显然,由于整个静态工厂方法都是同步化的,因此,不会有两个线程同时进入这个方法。因此,当线程a和b作为第一批调用者同时或几乎同时调用此方法时: 早到一点的线程a会率先进入此方法,同时线程b会在方法外部等待; 1. 对线程a来说,instance变量的值是...
本文介绍了称为双检锁(double-check locking简称dcl)模式的代码模式,它的工作原理及其在singleton(单例)模式及multiton(多例)模式中的应用,并且讨论了dcl模式在visual basic.net和c#语言中的实现。其中visual basic.net的源代码可以在文中看到,c#的源代码在附录中给出。 本文假设读者熟悉visual basic.net或c#的多线程概念、设计模式的基本概念,以及uml基本图标。 dcl模式(double-check locking pattern)有时又称作双检模式(double-check pattern),只有在多线程的环境中才有用。它是从c语言移植过来的。在c语言里,dcl模式常常用在多线程环境中类的迟实例化(late instantiation)里。 dcl模式通常与factory模式一同使用,用来循环使用产品对象...
二、 游戏规则的算法实现 二十一点游戏是玩家要取得比庄家更大的点数总和,但点数超过二十一点即为爆牌,并输掉注码。j、q、k算10点,a可算1点或11点,其余按牌面值计点数。“blackjack”是由一张a和j、q、k或10所组成。开始时每人发两张牌,一张明,一张暗,凡点数不足二十一点,可选择博牌。如果首两张牌是对子可选择分牌。 为简化起见,程序中只有两个玩家dealer和player,都发明牌,无下注过程,不记录输赢,不支持分牌和加倍等。二十一点游戏中,一张牌只要有四个属性说明:face牌面大小、suit牌面花色,count点数,faceup牌面是否向上。因此,这里我们不用 card 类而用card结构。structure cardpublic face as integerpublic suit as integerpublic count as integerpublic faceup...
扑克游戏林林总总,同一种游戏各地玩法亦不尽相同。编程爱好者多喜欢编写一些本地玩法的扑克游戏。那么,编写自己的扑克游戏该从何处入手呢? 扑克游戏编程关键有两点:一是扑克牌面的绘制;二是扑克游戏规则的算法实现。初学扑克游戏编程的爱好者可从一些简单的游戏、借用一些现有资源开始。本文拟借用windows自带的cards.dll和简单的21点游戏为例,介绍扑克游戏编程的初步方法。 一、 扑克牌面绘制 cards.dll支持windows自带的游戏,如solitaire(纸牌游戏)。如果我们知道如何使用cards.dll中的api函数,那么,我们就能像windows自带的游戏一样绘制扑克牌面。我们需要使用其中三个基本函数:cdtinit, cdtdrawext,和 cdtterm。并且需要两个变量:width和height用于初始化函数cdtinit进行初始化。下面给出这些接口函数的声明及参数说明。p...
关于vb6的爱好者.大家还是尽快放弃vb6吧,我从97年开始用,现在终于也到了.net了,中间的痛苦可想而知。尤其是服务器编程,.net会方便很多。客户端随着xp的推广跟windows update的升级,也快了,别到时候别没有准备。 我的学习方法: 看sdk的文档,了解诸多概念,然后看sdk c#的教程(已经习惯了) 准备工作: vs2003(有2002的,但是不用那个版本) dxsdk 9.0c 2004 dec(记住,是for vs2k3的,曾经有过vs2k2的,而且很多地方不通用) win2k(这个久不用说了吧) 主要步骤: 1、首先要添加引用.否则直接imports没办法找到 microsoft.directx.... 2、引用完了,为了方便再imports microsoft.directx.directsound 为了播放一个简单的声音文件进行如下操作: ·创建一个设备,关联...
七、 进度条进度显示 在update方法被调用前,在consoleprogressbar对象中什么也没有发生:public sub update(byval currentvalue as long) m_currentvalue = currentvalue m_currentbarlength = cint((m_currentvalue / m_maximumvalue) * m_length) refresh()end sub 这个update方法使用一个值作参数(在此是指当前刚刚复制的文件数)。我设置成员m_currentvalue,然后计算m_currentbarlength。计算的结果为进度条当前应该覆盖的列数。 最后,我调用refresh方法,它又调用updatepercentcomplete、updateprogressbar和updatemessagebar方法。 因为...
四、 引擎—copyfiles 这个copyfiles子程序负责完成这个应用程序中的绝大多数工作。它负责取得源目录下的一个文件列表,然后把它们复制到目的目录下。另外,它还创建了一个consoleprogressbar对象来管理进度条:private sub copyfiles(byval srcdir as string, byval destdir as string) const buffersourcetopline as integer = 8 const bufferdestinationtopline as integer = 7 dim rowindex as integer = 7 dim originalforegroundcolor as consolecolor = console.foregroundcolor console.cursorvisible = fal...
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器