2012年2月29号摘要笔记
一、什么是px?
px就是pixel的缩写啦,pixel即像素,它不是自然界的长度单位。px是就是一张图片中最小的点,一张位图就是由这些点构成的。1024px就是1024像素,最简单的你可以在windows桌面属性里的“设置”看到,如果是1024×768,也就是说水平方向上有1024个点,垂直方向上有768个点。谁能说出一个“点”有多长多大么?可以画的很小,也可以很大。如果点很小,那画面就清晰,我们称它为“分辨率高”,反之,就是“分辨率低”。所以,像素的大小是会“变”的,也称为“相对长度”。
二、Web 窗体设计器生成的代码
#region Web 窗体设计器生成的代码
//这里是初始化时装载控件并执行父类OnInit()方法
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
//这句是为Submit(应该为按钮)添加Click事件
this.Submit.Click += new System.EventHandler(this.Submit_Click);
//这句是为页面Load事件添加事件this.PageLoad
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
三、警告"System.Configuration.ConfigurationSettings.AppSettings”已过时,解决办法
今天用VS2010开发一个WebPart时,里面写了一个连接数据库的语句。
其中字符串
string cnnStr = System.Configuration.ConfigurationSettings.AppSettings["cnn"];
得出以下的警告
“System.Configuration.ConfigurationSettings.AppSettings”已过时:“"This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings。
直接把ConfigurationSettings写成ConfigurationManager,但是提示没有ConfigurationManager语句。
于是,在VS右边的“解决方案”中点“引用”,在.net处引入System.configuration.
然后,在空间写上 Using System.Configuration;
最后,再把ConfigurationSettings写成ConfigurationManager。这样就OK了。
四、StringBuilder类与String类的区别
表示可变字符字符串。无法继承此类。
string类由于具有不可变性(即对一个string对象进行任何更改时,其实都是创建另外一个string类的对象),所以当需要频繁的对一个string类对象进行更改的时候,建议使用StringBuilder类,StringBuilder类的原理是首先在内存中开辟一定大小的内存空间,当对此StringBuilder类对象进行更改时,如果内存空间大小不够,会对此内存空间进行扩充,而不是重新创建一个对象,这样如果对一个字符串对象进行频繁操作的时候,不会造成过多的内存浪费,其实本质上并没有很大区别,都是用来存储和操作字符串的,唯一的区别就在于性能上。希望能帮到你。
五、Append()的用法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Append
{
public class P
{
//定义成员变量
private string firstName;
private string middleName;
private string lastName;
///<summary>
///构造函数P
///</summary>
public P(string fn,string mn,string ln)
{
firstName = fn;
middleName = mn;
lastName = ln;
}
///<summary>
///定义方法FullName
///</summary>
public void FullName()
{
StringBuilder fullName = new StringBuilder();
fullName.Append(firstName);
fullName.Append(" ");
if (middleName[0].ToString() != "")
{
fullName.Append(middleName.Substring(0,1));
fullName.Append(".");
fullName.Append(lastName);
Console.WriteLine(fullName);
Console.ReadKey();
}
}
}
class Program
{
static void Main(string[] args)
{
P me = new P("Bradely","Lee","Jones");
me.FullName();
}
}
}
效果是:Bradely L.Jones
六、反射工程模式
Petshop里的工厂中有
return (PetShop.IDAL.IAccount) Assembly.Load(path).CreateInstance(className);IAccount dal = PetShop.DALFactory.Account.Create();调用了 IAccount.CS
public class Account
{
public static PetShop.IDAL.IAccount Create()
{
string path = System.Configuration.ConfigurationSettings.AppSettings["WebDAL"];
string className = path + ".Account";
return (PetShop.IDAL.IAccount) Assembly.Load(path).CreateInstance(className);
}
}
Create()方法返回IAccount接口,System.Configuration.ConfigurationSettings.AppSettings["WebDAL"]则可以得到Web.config的<appsettings>节点中的关于系统中应该使用哪个数据访问层(SqlserverDAL还是OracleDAL)的信息。接下来className=path+”.Account”返回的应该是PetShop.SQLServerDAL.Account,然后再用Assembly.Load加载PetShop.SQLServerDAL.dll,同时创建PetShop.SQLServerDAL.Account的实例,并以接口(PetShop.IDAL.IAccount)类型返回。这样BLL调用IAccount接口时就会用PetShop.SQLServerDAL.Account类的实现代码。
这样根据系统当前Web.config文件的配置描述(这也应该是系统运行时实际的配置),BLL层只要像下面这样:
IAccount dal = PetShop.DALFactory.Account.Create();
AccountInfo account = dal.SignIn(userId, password);就可以直接调用接口方法通过下层DAL层操作数据库了(在此具体为用户账号相关操作),而BLL层并不用知道应该通过SqlserverDAL还是OracleDAL访问数据库,这由都DAL Factory决定,你用的是什么数据库以及底层细节,更不用BLL知道,这样做的好处是对于BLL层以及更上层的程序不会或很少机率会因为底层程序变动影响,因为BLL层中调用接口就行了,只要那个接口定义没变.
Petshorp这么做是为了实现商业逻辑层能跨数据库复用(反射工厂模式),利用ADO.net的框架很容易解决数据库访问的统一外观问题,但是具体每个业务查询的Sql语句仍然带有数据库特性。所以Petshorp有一个DAL(Data Access Layer)数据访问层专门写数据库查询语句并做具体和数据库特性有关的数据处理供商业逻辑层使用,既然商业逻辑层不关心这些Sql实现,当然要定义统一的接口IDAL。
你引用的这部分其实是利用工厂模式达到商业逻辑层封装好后不再重新编译就能针对不同数据库复用的效果,可以假想如果DAL不动态Load的话,Load谁都写在代码里,那肯定要重新编译。
七、未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。文件不存在。
Assembly.Load(path) 其中这个path是加载你项目web下bin目录的程序集,Web下添加引用SQLServerDAL
七、unix/tcp/ip/c/c++/lisp/algorithm/vim/emacs/tex才是王道。
浙公网安备 33010602011771号