Simple,think,good.

深入看dotNet精品视频教程的笔记记录【记载曾经未知,如今已知,不断将未知变成已知的岁月】

具体笔记内容,边看边记录!

  • 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);
                }

            }     

        }

 

 

 

 

 

 

 

posted @ 2012-09-24 17:39  天龙在飞哈  阅读(472)  评论(0编辑  收藏  举报

Simple,think,good. 支付鼓励