具体笔记内容,边看边记录!
- 20110301
------------------笔记内容-------------------------------------
1. 转义字符 \ 转义符这些东西只用在写C#代码的时候。程序运行的时候没有转义符的事情。
2. 字符串默认是单行声明, 加上@可以声明多行字符串。
3. string name = @"E:\传智播客.Net精品就业班视频教程"; (@表示字符串中的\不当成转义符,就当成\这个普通的字符)。 @不是万能的,不能解决字符串中有双引号的问题,如果有双引号还是用转义符。
4.命名规则:第一个字符必须是字母或者下划线(_),C#中建议变量的开头用小写。专业的程序员一定要注意大小写的问题!(不是强制性的规定)
5.(*)运算符优先级:i1+i2*i3、(i1+i2)*i3。 不要变态,括号是王道。 不用记优先级,拿不准的地方用()就行。
Switch case 语句 //case后必须是一个固定的值,不能是表达式,不能是变量,不能是bool运算。
//case最后要有break。除非两个case合并。
While循环
断点停住的时候是代码准备执行了,还没执行。
break,continue的区别
for循环: for(code1;code2;code3)。 code1:循环的初始化代码,只在循环开始之前运行一次;code2,bool类型的表达式,每次循环完成前都判断一下是否为true,只有为true才会进行本次循环;code3在每次循环之后执行一次。
for中终止条件注意是<还是<=。只要想好了想要的最后一个数是什么即可。
枚举,enum QQStatus{online,offline,hidden} 枚举的用法,QQStatus status = QQStatus.online和用字符串比起来,用枚举的好处就是限定了变量的取值范围,程序处理起来更方便。
------------------------------------------------------------------------------------------
- 20110308【SQL】
------------------------------笔记内容------------------
1.学习\开发时是连接本机的数据库,上线运行时是数据库运行在单独的服务器。
2.主键就是一个表中每个数据行的唯一标识。不会有重复值的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键。 主键有两种选用策略:业务主键和逻辑主键。 因为很难保证业务主键不会重复(身份证号重复)、不会变化(帐号升位),因此推荐用逻辑主键。
3.数据量很大的情况,标识列用GUID
4.
-------------------------------------------------------------
- 20110315
------------------------------笔记内容-----------------------
接口相当于没有方法实现的抽象类 //“实现接口”、“继承类”
一个类可以实现多个接口。而一个类只能有一个父类。
接口中的成员不能有访问级别修饰(public、private)
一个抽象类中可以定义实现代码,但是接口不能定义实现代码(哪怕方法中只是一个空的括号,也是空实现)。
接口的多台特性、类型转换、is、as和类基本一样。
抽象类定义的是公共的实现和能力,接口只能定义公共的能力。
- 20110503【ASP.Net高级(苏坤)】
宠物商店(Pet Shop),微软展示.Net企业开发的范例。
三层架构(3-tier application)
优点
1、开发人员可以只关注整个结构中的其中一层;
2. 可以很容易的用新的实现来替换原有层次的实现;
3.有利于标准化;
4.利于各层逻辑的复用。
5.更加安全
缺点:
略
-----------------------------------------04数据访问层----------------------------------------------------------------
程序员自己写的方法,要对它负责,创建单元测试,自己先测试一把。(单元测试是保证项目质量的最基本的一个测试。
微软的Pet Shop 案例中的SqlHelper用的是静态方法。技术上跟着微软走,没错。
-----------------------------------------05业务逻辑和表现层------------------------------------------------------
不要用response.Write(),这样会破坏Dom结构,因为这会写到文档的最前面。
Page.ClientScript.RegisterClientScriptBlock(); //在<form>标签内的前部输出脚本。
Page.ClientScript.RegisterStartupScript(); //在<form>标签内的后部输出脚本。
调试,设置断点,按F11可以逐语句调试(这个相当好用)。
-----------------------------------------06动软代码生成器-外键的处理-----------------------------------------
DBUtility的目标框架不要选.Net 4.0, 如果选了,生成的很多方法会过期。[Obsolete]
【B/S结构下】 Private RoomType _roomtype; 可以通过属性的属性来访问typeName,给用户显示typeName (这样一改会有错误信息,需要较小的修改,因为三层是级联修改的)
- 20110506【图书网上商城(苏坤)】(注册登录)
-------------------------------------------------------02注册页面1-------------------------------------------------------
Postbackurl 这个是什么? 待查
-------------------------------------------------------02注册页面2-------------------------------------------------------
读Session和Cookie时,一定要先判断是否为null。 关闭浏览器后,Session就丢弃了。
把外键对应的Model都实例化,这样方便取到和调用。
如果一个提交按钮,既有服务端事件,又有客户端事件的话,会先执行客户端事件,然后再提交。
----------------------------------------------------04注册Session登录------------------------------------------
检测一个用户是否登录,有多种方式,其中一种方式是Session验证:如果用户登录成功:则写Session["currUser"] 把当前用户对象存入这个Session。所以在其他页面,我们就能通过判断Session["currUser"]是否存在,得到用户是否已经登录。如果Session["currUser"] ==null:未登录,否则是已登录。
页面导向前端代码,如:window.location='test.aspx';
页面导向后端代码,如Response.Redirect("test.aspx");
-------------------------------------------------05登录-用户控件-----------------------------------------------------
//字符串转byte[]
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(str);
使用用户控件的话,有个页面路径的问题需要考虑。 比如页面导向,建议用表示网站根目录的/,(比如,window.location='/default.aspx')。不建议用应用根目录的~/(若以后网站部署到虚拟目录的话,会出现问题和麻烦),如果非要用,可以写:
ResolveClientUrl("~/default.aspx");
母版页、用户控件、页面,这三者都有pageload事件,这些事件谁先执行,谁后执行。
Session保存在服务端
Cookie保存在客户端:
临时cookie:
持久cookie
写Cookie的方法:
第一种方法:
在用户表中加一个字段叫akey,当要写cookie时,生成一个guid(即不会重复,又让用户猜不到别人的akey),把这个guid写入用户的cookie中.
下次用户再来时,我们只检测有没有这个cookie,则证明以前记住我过.我们就把guid的值读出来,然后在数据库中找到是谁的.把用户读进实体类,然后赋给Session["currUser"]
第二种方法:
把用户名和密码写入cookie
用户密码:p
随机产生一个两位的字符:s
加密算法: result = s+md5(s+md5(p)
ftp serv-u,一款Ftp服务软件。
- 20110507【图书网上商城(苏坤)】
----------------------------------------------------01登录记住我---------------------------------------------------------
调试的时候,用即时窗口非常好用,方便。如图:
你写的类库可能被很多人在调用,所以不要轻易更改你写的类库的方法,若要改的话,记得重载修改前的方法。(这就是所谓的兼容)
如何清Cookie? 由于浏览器本地的Cookie不允许访问,所以方式为:
Response.Cookies["user"].Expires = DateTime.Now.AddDays(-1); // 新创建了一个Cookie,使这个新创建的Cookie的过期时间失效,把原先的同名Cookie覆盖掉了。
Request.Url.Tostring(); //当前请求的网址。
Request.QueryString["return"] //获取请求传过来的网址字符串。 (如果传过来有值,就导向传过来的值的网址。 如果没有值,就导向默认页面。)
----------------------------------------------------02退出登录---------------------------------------------------------
Response.Cookies["user"].Expires = DateTime.Now.AddDays(-1);
Response.Cookies["pwd"].Expires = DateTime.Now.AddDays(-1);
Session.Abandon();
Response.Redirect("/member/login.aspx"); //退出登录,可以导回一个不用登录的页面,如首页。
- 看20110531视频的笔记记录(Wp7、Silverlight)
思想上跟党走,技术上跟微软走,不会错的!
VisualStudio自带的WP7仿真器, 深入开发必须使用真机。
几个名词解释:Mango、NODO、刷机、变砖(只能砸人)、解锁、Rom、AppHub。
Wp7开发前途怎么样。后发制人。
14天机
----------------------------------------------------
1.shangwu1-智能手机平台介绍:
2.shangwu2-wp71:
3.shangwu3-wp7演示2: 游戏大作,重力加速度,愤怒的小鸟
4.shangwu4-wp7演示3:
5.shangwu5-WP7开发环境配置:
6.xiawu1-WP7开发概述1:
7.xiawu2-WP7开发之Task:
----------------------------------------------------
WP7开发一般使用C#编写.Net托管代码,因此必须熟悉C#语言和.Net Framework。
WP7界面使用Silverlight技术,WP7上的Silverlight和网页Silverlight几乎一模一样。 什么是Silverlight? 微软推出的一个RIA。
WP7中游戏开发使用XNA技术,XNA是DirectX的.Net托管版本。
WP7 的SDK主要涉及到手机特色的类库,比如发送短信、振动器、GPS、播放音乐。
Silverlight是WPF的一个子集,运行在浏览器端。 WP7是Windows Phone 7 的缩写, 界面用Silverlight画,后台代码仍然是利用.Net类库开发。
- 看20110601内视频的笔记记录 (Wp7、Silverlight)
1.VibrateController.Default得到振动器的实例, 网上有很多开发者,根据这个类开发了邪恶应用。
2.在使用XNA的时候需要定时调用FrameworkDispatcher.Update()进行调度,后面调用XNA的类的时候如果没有调用则可能会报错。
3.两个页面传数据的方式:1.QueryString (传的字符串小) 2.Session (有可能丢失,占服务器内存) 3.Cookie (不安全) 都有优缺点。
4.严谨的程序员在判断的最后,要补上一个抛出异常的else, else{throw new Exception();}
5.墓碑机制
6.独立存储是WP7为每个应用分配的一块独立的存储空间,不同应用的独立存储是独立的,应用写入的文件在应用退出以后仍然会保存。但是需要注意手机用户可能手动清理独立存储,因此不要把重要数据放到独立存储中。
- 看20110602内视频的笔记记录 (Wp7、Silverlight)
1. Out of Browser (浏览器外运行)
2.google的很多服务在中国用不了, google跟中国政府关系不好!
3.Silverlight中的WebClient是异步的,不会有界面卡死的问题,类似于AJAX中的XMLHttpRequest
4.WebClient的DownloadStringCompleted相当于AJAX的onreadystatechange
5.NavigationContext、
6.需求:上传商家图片。
随着用户的走动,显示用户周边的商家信息, 服务端返回Json格式数据。
登录页面把用户的用户名保存起来
显示用户当前的位置。
点击商家显示商家的信息:图片、拨打电话。
7. 图片可以用流的形式从客户端传送到服务端,然后用文件流保存到服务端的硬盘上。
8.Silverlight 给美工用的软件叫 Blend
9.对于Json的操作:
①、服务端将对象序列化为Json字符串:
T_ShopBLL bll = new T_ShopBLL();
var shops = bll.GetAll();//获得周边商家信息
JavaScriptSerializer jss = new JavaScriptSerializer();
string json = jss.Serialize(shops);
context.Response.Write(json);
②、客户端得到Json字符串,并将它反序列化为对象数组:
void gcw_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) { curLocation = e.Position.Location; //跟踪用户的位置 map.SetView(new Location(e.Position.Location.Latitude, e.Position.Location.Longitude), map.ZoomLevel); //todo:优化,避免频繁的网络请求 WebClient wcGetNear = new WebClient(); wcGetNear.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wcGetNear_DownloadStringCompleted); wcGetNear.DownloadStringAsync(new Uri("http://localhost:5457/GetNearbyShops.ashx")); } void wcGetNear_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { DataContractJsonSerializer dcj = new DataContractJsonSerializer(typeof(T_Shop[])); //把服务器返回的Json数据反序列化为T_Shop[] byte[] bytes = Encoding.UTF8.GetBytes(e.Result); using (MemoryStream stream = new MemoryStream(bytes)) { object obj = dcj.ReadObject(stream); T_Shop[] shops = (T_Shop[])obj; foreach (T_Shop shop in shops) { Pushpin pShop = new Pushpin(); pShop.Content = shop.Name; pShop.Location = new Location((double)shop.Latitude, (double)shop.Longtitude); map.Children.Add(pShop); } } }