自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记录成长的每一步

写出一片天.......

  • 博客(16)
  • 资源 (14)
  • 收藏
  • 关注

原创 设计模式(Design Pattern)----读书笔记之(一)

设计原则一内容:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。解释:换句话说,如果每次新的需求一来,都会使某方面的代码发生变化,那么你就可以确定,这部分的代码需要被抽出来,和其他稳定的代码有所区别。下面是这个原则的另一种思考方式:“把会变化的部分取出并封装起来,以便以后可以轻易地改动或扩充此部分,而不影响不需要变化的其他部分” 分开变化

2009-08-22 14:26:00 589

转载 sql注入攻防原理

随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 SQL注入是从正常的WWW端口访

2009-08-22 14:24:00 661

转载 C# - P2P与NAT技术之二

 论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码)。呵呵,在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理。首先先介绍一些基本概念:    NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Net

2009-08-22 14:09:00 503

转载 C# - P2P与NAT技术之一

前言:随着Internet技术的不断以指数级速度增长,珍贵的网络地址分配给专用网络终于被视作是一种对宝贵的虚拟房地产的浪费。因此出现了网络地址转换(NAT)标准,就是将某些IP地址留出来供专用网络重复使用。本文将详细告诉你如何正确应用网络地址转换NAT技术。  一、NAT技术的定义  NAT英文全称是Network Address Translation,称是网络地址转换,它是一个

2009-08-22 14:07:00 686

转载 C#线程系列讲座(5):同步技术之Monitor

在上一讲介绍了使用lock来实现线程之间的同步。实际上,这个lock是C#的一个障眼法,在C#编译器编译lock语句时,将其编译成了调用Monitor类。先看看下面的C#源代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->p

2009-08-14 13:04:00 506

转载 C#线程系列讲座(4):同步与死锁

虽然线程可以在一定程度上提高程序运行的效率,但也会产生一些副作用。让我们先看看如下的代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->    class Increment    {        private int n

2009-08-14 13:01:00 414

转载 C#线程系列讲座(3):线程池和文件下载服务器

如果设计一个服务器程序,每当处理用户请求时,都开始一个线程,将会在一定程序上消耗服务器的资源。为此,一个最好的解决方法就是在服务器启动之前,事先创建一些线程对象,然后,当处理客户端请求时,就从这些建好的线程中获得线程对象,并处理请求。保存这些线程对象的结构就叫做线程池。    在C#中可以通过System.Threading.ThreadPool类来实现,在默认情况下,ThreadPool最大

2009-08-14 11:48:00 436

转载 C#线程系列讲座(2):Thread类的应用

一、             Thread类的基本用法通过System.Threading.Thread类可以开始新的线程,并在线程堆栈中运行静态或实例方法。可以通过Thread类的的构造方法传递一个无参数,并且不返回值(返回void)的委托(ThreadStart),这个委托的定义如下:[ComVisibleAttribute(true)]public delegate void T

2009-08-14 11:41:00 579

转载 C#线程系列讲座(1):BeginInvoke和EndInvoke方法

开发语言:C#3.0IDE:Visual Studio 2008本系列教程主要包括如下内容:1.  BeginInvoke和EndInvoke方法2.  Thread类3. 线程池4. 线程同步基础5. 死锁6. 线程同步的7种方法7. 如何在线程中访问GUI组件一、线程概述在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多

2009-08-14 11:39:00 370

转载 C#多线程学习(三) 生产者和消费者

前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。在C#中,关键字lock定义如下:

2009-08-14 11:35:00 396

转载 C#多线程学习(六) 互斥对象

如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上车。而线程与Mutex对象的关系也正是如此,线程使用Mutex.WaitOne()方法等待Mutex对象被释放,如果它

2009-08-14 11:32:00 367

转载 C#多线程学习(五) 多线程的自动管理(定时器)

Timer类:设置一个定时器,定时执行用户指定的函数。              定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。初始化一个Timer对象: Timer timer = new Timer(timerDelegate, s,1000, 1000); // 第一个参数:指定了TimerCallback 委托,表示要执行的方法;// 第二个参数:一个包含回调方法要使用

2009-08-14 11:31:00 515

转载 C#多线程学习(二) 如何操纵一个线程

 下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可。(线程入口使程序知道该让这个线程干什么事)在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数。 打开你

2009-08-14 11:30:00 385

原创 C#多线程学习(一) 多线程的相关概念

 什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。什么是多线程?多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许

2009-08-14 11:29:00 364

转载 C#多线程学习(四) 多线程的自动管理(线程池)

在多线程的程序中,经常会出现两种情况:一种情况:   应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应                  这一般使用ThreadPool(线程池)来解决;另一种情况:线程平时都处于休眠状态,只是周期性地被唤醒                  这一般使用Timer(定时器)来解决;ThreadPool类提供一个由系统维护的

2009-08-14 11:27:00 361

原创 Delphi 三层开发基本概念介绍

三层客户/服务器一:优点:灵活性和可扩展性。应用三层开发技术(分布式)的原因(参考书目: Delphi 5.x分布式多层应用系统篇)一:解决客户机/服务器结构的维护成本问题,改善客户机/服务器结构延展性问题。客户机/服务器结构支持的用户人数有一定限度(200人以下)。则种结构限制了Internet/Intranet及电子商务的发展。三层开发应用Databas

2009-08-05 14:37:00 1037 1

windows server 2012故障转移群集搭建指导手册

windows server 2012故障转移群集搭建指导手册

2013-12-30

设计模式六大原则与类的六种关系

个人整理的比较全面的 设计模式六大原则与类的六种关系

2012-11-06

C#多线程基础教程

C#多线程基础教程,很全面的基础知识。希望对各位有用。

2012-11-06

APP-V IIS Type部署

个人整理的关于微软应用程序虚拟化APP-V的部署文档。

2012-11-06

SerialPort demo

用C#实现SerialPort通讯实例。

2011-09-05

MapWidow DotSpatial C# Demo

自己用vs2010写的一个demo,可以实现以下功能: 加载清空地图、缩放拖动、新增点、编辑点、删除点、显示或隐藏点的属性Label、画线、画面、加载图片显示等等操作。

2011-08-31

MapWinGis说明文档及demo

 MapWinGIS是一个开源的ActiveX组件,功能上类似MapX,开发人员可以利用这个ActiveX组件在自己的系统中完成GIS的相关功能,例如地图,IMAGE,GRID的显示;在图层上标绘点,线,图形;计算长度,存取GIS数据等相关工作.   它的主要功能包括:   直接打开,编辑,保存Image,Grid,Shapfile,TIN,DBF格式的文件   在地图中对图形进行浏览,标注,设置颜色等信息。   在地图中进行空间数据查询   动态的在图层上标绘空间数据。   存取地图中的相关数据。   对不同的格式进行转换,例如从TIN到GIRD等。

2011-07-28

MapWinGis Delphi实现例子

 MapWinGIS是一个开源的ActiveX组件,功能上类似MapX,开发人员可以利用这个ActiveX组件在自己的系统中完成GIS的相关功能,例如地图,IMAGE,GRID的显示;在图层上标绘点,线,图形;计算长度,存取GIS数据等相关工作.   它的主要功能包括:   直接打开,编辑,保存Image,Grid,Shapfile,TIN,DBF格式的文件   在地图中对图形进行浏览,标注,设置颜色等信息。   在地图中进行空间数据查询   动态的在图层上标绘空间数据。   存取地图中的相关数据。   对不同的格式进行转换,例如从TIN到GIRD等。

2011-07-28

软件测试的方法与工具.pdf

软件测试的方法与工具,软件测试的方法与工具,软件测试的方法与工具,软件测试的方法与工具

2010-01-19

Borland官方Delphi7 Vcl类属继承图.pdf

Borland官方Delphi7 Vcl类属继承图 Borland官方Delphi7 Vcl类属继承图 Borland官方Delphi7 Vcl类属继承图

2009-08-22

Borland官方Delphi7 Clx类属继承图.pdf

Borland官方Delphi7 Clx类属继承图 Borland官方Delphi7 Clx类属继承图 Borland官方Delphi7 Clx类属继承图

2009-08-22

tlmpack(多国语言包),

tlmpack(多国语言包),

2007-05-28

FlatStyle

FlatStyle

2007-05-28

TntUnicode

TntUnicode

2007-05-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除