文章分类 - .NET
摘要:缩略图测试 原图: 缩略图: 以下这个缩略图函数生成后空白部分是用背景色填充的.using System;using System.Collections;using System.Configuration;using System.Data;using System.L...
阅读全文
摘要:一:UML与设计模式 软件构架 (1)IT行业的人才结构与软件构架师的定位 (2)软件构架师应掌握的知识体系 (3)软件架构设计的特点、层次、分类 (4)软件构架的主要理论、方向和趋势 (5)软件工厂,实现软件开发的产业化 软件生命周期进程模型 (1)RUP与XP (2)MSF ...
阅读全文
摘要:1,应用程序池就是可以看成装载计算机分配给动态网站的内存的容器。如果内存是水,那么应用程序池就是鱼缸,动态网站就是鱼缸中的金鱼。多个动态网站可以存在于同一个应用程序池里,即鱼缸中可以放多条金鱼。当然,如果金鱼多了,鱼缸中的空间有限,金鱼之间就会争抢空间,不是很坚固的鱼缸可能就会破裂,所有金鱼都...
阅读全文
摘要:1,客户端浏览器到服务器2,经过Http.sys(内存模块)3,iis中的w3svc服务(这个服务寄宿在svchost这个进程里面的)(要么返回静态页面,要么交给inetinfo.exe(映射关系表,看当前请求交给谁来处理,获得处理对象程序之后,返回给W3SVC服务))4,然后根据从映射表中的对应关...
阅读全文
摘要:Socket这个词是插拔线的意思.就好比过去的老式插线电话机在通话是需要插拔线,目的是用于通信.既然是用于通信,是谁和谁通信呢?是服务器和客户端.你拿起一架叫socket的电话机,我也拿起来一架叫socket的电话机.就能通信了么.是的,只是还需要一些必要的配置,就好比,你想打电话但是却不想拨号,那就算你老爸是李刚也肯定打不给你想要通信的对象. 那么在浏览器和服务器之间通信,这个"电话号码"是什么呢?就是ip和端口.(ipaddress和port).socket得独享一个Endpoint(结点) 独占一个端口.然后开启侦听,当有连接的时候,就可以调用Accept方法来接受,
阅读全文
摘要:1.自动属性 Auto-Implemented Properties2.隐式类型 var var变量不能作为全局变量使用,因为不能在编译时确定类型3.参数默认值 和 命名参数4.对象初始化器 与 集合初始化器 { }Person p = new Person(){ Name="aa",Age=18};//属性初始化器List list = new List(){new Person(){ Name="aa",Age=18},new Person(){ Name="bb",Age=18}};//集合初始化器5.匿名类 & 匿名方
阅读全文
摘要:1..net 和 C# 的关系.net 是一个平台,C#是种语言,C#语言可以通过。net平台来编写、部署、运行。net应用程序,C#通过。net平台开发。net应用程序2.。net平台的重要组成FCL - 框架类库,即微软事先定义好的类的集合CLR - 公共语言运行时,即创建、部署、运行。net的必备环境3.C#源代码的运行过程通过csc命令将C#源代码编译成exe文件,即程序集,由MSIL(微软中间语言)组成,双击运行,通过CLR公共语言运行时,由于CPU只认识二进制代码,所以JIT会将程序集的微软中间语言转换为本地平台的CPU指令(即二进制代码)并将指令发给CPU执行。(1)不是所有的e
阅读全文
摘要:1.类与对象的关系类是对一类事务的统称,是抽象的,不能拿来直接使用,比如汽车,没有具体指哪一辆汽车对象是一个具体存在的,看的见,摸得着的,可以拿来直接使用,比如我家的那辆刚刚买的新汽车,就是具体的对象对象是根据类这个模板创建出来的,类里面有哪些特性或者功能对象里面也有,多不得,少不得2.new 一个对象做了哪些事情?Person person = new Person();new是一个运算符(1)在内存中开辟一块合适大小的空间(2)在这个空间里创建对象(3)调用这个对象的构造函数(4)返回这个空间的引用地址3.访问修饰符类的访问修饰符只有public和internal,内部类的访问修饰符可以为
阅读全文
摘要:1.继承(1)创建子类对象的时候,在子类对象中会为子类对象的字段开辟空间,也会为父类的所有字段开辟空间,只不过父类私有的成员访问不到(2)子类从父类继承父类所有的非私有成员,但是父类的所有字段也会创建,只不过父类私有的成员访问不到(3)base关键字可以调用父类的非私有成员(4)子类的访问级别不能比父类高,原因是访问子类的同时也访问了父类,如果子类的访问级别不能比父类高,就矛盾了(5)创建子类的时候,会先调用子类的构造函数,然后调用父类的构造函数,然后执行父类的构造函数,最后再执行子类的构造函数(6)子类的构造函数后面默认加了一个:base()通过这个调用父类的无参构造函数,如果父类没有无参数
阅读全文
摘要:1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里面加(3)如果存储数据的数组满了,就会新建一个数组长度是原来的数组的两倍,这个数组被原来的数组的变量所引用比如自己实现简单的ArrayList Add方法public class MyArrayList { private object[] objArray=new object[2]; int index = 0; public void Add(...
阅读全文
摘要:什么是生产者消费者模式在 工作中,大家可能会碰到这样一种情况:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产 生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。在生产者与消费者之间在加个缓冲区,我们形象的称之为仓库,生产者负责往仓库了进商 品,而消费者负责从仓库里拿商品,这就构成了生产者消费者模式。结构图如下:生产者消费者模式的优点1、解耦假设生产者和消费者分别是两个类。如果让生产者直接调用消费者的某个方法,那 么生产者对于消费者就会产生依赖(也就是耦合)。将来如果消费者的代码发生变化, 可能会影响到生产者。而如果两
阅读全文
摘要:在网络编程中,我们经常会遇到阻塞、非阻塞、同步、异步这两组概念,许多人很容易混淆,现在就给大伙儿说说我对着两组概念的理解。先说说阻塞与非阻塞,这主要和程序等待消息时的状态有关1、阻塞程序会阻塞在某一个函数,而不往下执行,就如挂在那里一样,所有的其他业务也都不执行,为一直等到消息到来才往下执行。2、非阻塞程序不会阻塞在某一个函数,不等待消息到来,立即返回,往下执行。举个例子,TCP协议中的send,系统会为其分配一块发送缓存区,假设现在总的缓存 区的大小为1000.,而缓存区里已经有了500个数据,这时调用send,发送1000个字节数据,这时如果在阻塞模式下,send的会先最多的数据放入缓存,
阅读全文
摘要:1.多线程简单使用(1)进程是不执行代码的,执行代码的是线程,一个进程默认有一个线程(2)线程默认情况下都是前台线程,要所有的前台线程退出以后程序才会退出,进程里默认的线程我们叫做主线程或者叫做UI线程(3)线程什么时候结束?如果线程是前台线程,该线程执行的方法执行完以后线程就会自动退出(4)后台线程只要所有的前台线程结束,后台线程就会立即结束(5)多个线程访问同一资源,可能造成不同步的情况,这个叫做线程重入,可以使用lock加锁将执行的共同方法中的代码加上lock(6)thread.Abort();//强行停止线程Thread.Sleep(5000);//将当前线程暂停5秒Thread th
阅读全文
摘要:所谓白话即是将事物的原理用通俗易懂的语言表达出来,接下来我们就说一说我们平时用到的进程与线程在操作系统中是如何被管理以及调度的。 其实操作系统本质上的意义就是如何让我们更方便的来使用这些如 cpu、内存、网卡 等物理设施,给我们的生活带来便利或更优质的生活享受。如我们打开电脑后,启动操作系统,安装应用就可以在线看电视或者打游戏。或者对于我们技术人员来讲,在我们的开发过程中,假如我们要读取硬盘中的数据,我们直接调用read系统调用就可以,我们无需去关心磁头的移动与柱面扇区如何移动才能读出数据。或者我们分配内存,我们直接调用malloc系统调用就可以分配内存,我们也无需关心内存条到底还有多少...
阅读全文
摘要:在网站开发中,通常会使用Session来判断用户是否有登录和一些相关的信息.在.net的开发过程中,我发现其Session会时不时退出,没有任何规律可言.这对一些业务系统来说是不可接受的.比如编辑完成提交的时候,提示超时退出了,这可是个要命的问题. 解决的办法一般来说有二种 第一种,使用Cookies机制来保存用户信息 在Cookies中,可以设置cookies超时机制,一般是1个小时,利用这个超时机制来维护用户的状态.每当用户访问一次,就更新Cookies的过期时间.这样在一定的时间内就不会退出. 但要注意,有些浏览器,可能禁止了cookies,如果禁止了,应该提示用户....
阅读全文
摘要:开源项目托管:http://www.apache.org/http://www.googlecode.com/http://www.sf.net/http://www.github.com/http://www.java.net/http://www.codeplex.com/http://www.codeproject.com/http://www.sndacode.com/http://code.taobao.org/顶级开源项目:http://Unix.org/http://Linux.com/http://FreeBSD.org/http://Debian.org/http://Ubu
阅读全文
摘要:详细介绍在《系统缓存全解析一》中提及的动态缓存技术:系统缓存全解析二:动态缓存(1)-传统缓存 与 页面输出缓存一,传统缓存方式:比如将可重复利用的东西放到Application或是Session中去保存。Session["Style"] = val; Application["Count"] = ...
阅读全文
摘要:面向对象的编程鼓励编程者把功能分散到多个对象中,从而使得每个对象只有唯一的功能(SRP),对象足够的高内聚,这样的代码更容易理解,维护,修改和复用;同时,对象必须互相调用才能共同完成复杂的操作,但如果对象间相互调用太多,又会导致对象间高耦合,使得对一处代码的修改影响到多处看似不相关的代码(散弹效应),为实现高内聚,对象间应该做到少依赖;如果依赖,则依赖于必须的最小接口(ISP)。本文通过一个小例子,尝试分析下对象间调用时调用者和被调用者互相控制的几种方式。今天早上坐(哦,应该是站)地铁,边站边想对象间的调用方式,正好想到了北京地铁最近要提价了。于是想到一个根据上车站点和下车站点显示票价的例子。
阅读全文
摘要:下面以获取服务器上的图片路径为示例(注:服务器路径也就是虚拟路径)1、在aspx.cs页面中获取服务器上的图片路径Server.MapPath("~/i/zhuiImg/01.jpg");2、在一般程序文件中获取服务器上的图片路径(注:一般程序文件的后缀名为:.ashx)context.Server.MapPath("~/i/zhuiImg/02.jpg");
阅读全文
摘要:最近在做一个登录功能,纠结了好几天,一直在找一个能优雅的实现单点登录的功能。博客园有看到某人写了又臭又长的八股文式的文章,没看到有价值的东西。其实单点登录最终要解决的是多个不同域名间共享cookie的问题。但是要在不同域名间共享cookie是一件很困难的事情,要在某个域名下面种cookie就必须访问该域名。网上有很多方法,看到的有动态创建iframe实现,在iframe里面访问某个域名的页面种下cookie,该方法需要写一些js代码,写起来有点累,所以我最终选择了用页面跳转来实现,想不到效果比我预期的好很多,浏览器几乎看不出来有跳转的痕迹。详细介绍下流程:1. 项目有3个不同的域名,login
阅读全文