您是第 Web Page Tracking 位访客

水~墨~

昂首阔步,不留一点遗憾!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

控制反转 依赖注入,为了减少耦合隐藏。将特定的

 

 

 

 

model 加上remote特性,如何实现注册时候有效,但是登录时候不需要有效。绑定特定view,过滤掉特定view的的验证。

 

* vs调试网站数据库成功访问,但是iis中访问数据库提示

用户 'IIS APPPOOL\DefaultAppPool' 登录失败。

因为msslq安装时候验证权限选择的是localsystem,而此时访问的是 iis网络账户。

iis-》右击项目 设置-》进程孤立-》内置账户

image

 

*abstract  override 重写基类的虚拟方法 (abstract 和override配套使用,子类override重写抽象父类的抽象方法)

new public xx 隐藏基类方法,子类使用自己的(基类的方法必须已经定义了)

 

属性为abstract,类必须生命为abstract抽象类,抽象函数无实体例: public abstract  void getfield();子类如果不是抽象类则必须重写父类的抽象方法

virual,override配套使用

*using System.Text.RegularExpressions;

替换多个空格为一个空格,中间一个参数为正则

Code Snippet
  1. Regex.Replace("abc  sfd  sdf df esdf  sdf", " +", " ");

替换手机号为*

Regex.Replace(“13455555555”,@”^(\d{3}\d{4}\d{4})$”,”$1****$3”); 替换后为  134****5555

*单例模式

属性staitc private,构造函数private,一个getobject 用static声明并返回该类的类型

 

*virtual 虚拟,虚方法

用于子类重写override

 

*设置国家环境,对货币进行格式化using System.Globalization;

Code Snippet
  1. CultureInfo english=new CultureInfo("en-US");
  2.           decimal d = 99999999999999999m;
  3.           string s = string.Format(english, "my amout is {0:c}", d);

*页面6秒关闭,左击页面显示左,右击页面显示右边

Code Snippet
  1. <script type="text/javascript" >
  2.  
  3.     setTimeout('window.close()',  6*1000);
  4.     function show() {
  5.  
  6.         if (window.event.button == 1) {
  7.  
  8.             alert("");
  9.         }
  10.         else {
  11.  
  12.             alert("");
  13.  
  14.         }
  15.  
  16.  
  17.     }
  18.  
  19.     show();
  20. </script>

*hashtable ,hashmap   key都不能相同

map的key可以为空,没实现线程安全

 

*sql 根据登录表统计在线时间   datediff(ss,起始时间,结束时间),floor()四舍五入,cast(xx as nvrchar)

 sql:统计用户在线时间。
     有online 表,  username,operate,time
假设表中有数据:
lizi,login,2013/1/1 12:00:33
mike,login,2013/1/1 14:33:45
lizi,exit,2013/1/1 19:33:55
mike,exit,2012/1/1  23:33:44
 
要得到如下信息:  lizi,4:33:12(在线时间4小时,33分钟,12秒)
 
 
代码:
 
select a.[username],a.time as login_time,b.time as exit_time
,cast((floor(datediff(ss,a.time,b.time)/3600 ))as nvarchar)                  //获取小时数,     datediff(hh/mi/ss,starttime,endtime)
+':'+cast((floor(datediff(ss,a.time,b.time) )%3600/60)as nvarchar)    //减去整数小时后,获取分钟数
+':'+cast(floor( datediff(ss,a.time,b.time))%3600%60 as nvarchar)
as totaltime from
online as a , online as b where a.[username]=b.[username] and a.operate='login' and b.operate='exit'

 

 

 

 

 

* 数组大小排列, 通过list<int>  li=new list<int>();  li.sort();默认是从小到大排列

从大到小排序 li.sort(FromMaxToMin)(自定义函数);

 

 

 

 

 

class Program
    {
        static void Main(string[] args)
        {
            List<int> list = new List<int>();
            Random r = new Random();
            int[] array = new int[100];
            int temp = 0;
            while (list.Count < 100)
            {
                temp = r.Next(1, 10001);
                if (!list.Contains(temp))
                {
                    list.Add(temp);
                }
            }
            //list.Sort(); //默认
      //   Console.WriteLine(   Comparer<int>.Default.ToString());
            //System.Collections.Generic.GenericComparer`1[System.Int32]  
            list.Sort(FromMaxToMin);
            
            array = list.ToArray();
            foreach (int i in array)
            {
                Console.WriteLine(i.ToString());
            }
            Console.Read();
        }
        //从大到小排列
        public static int FromMaxToMin(int a,int b)
        {
            if (a > b) return -1;
            else if (a == b) return 0;
            else return 1;
        }
    }

 

*强命名程序集: 加密签名放到全集程序集缓存中.

标识唯一程序集,缓存中有了就方便下次直接使用

*net 读写数据库的类       ?????具体样本代码

DataSet  数据的集合        DataReader 数据只读器

DataAdapter 用于填充dataset 和 更新数据库一组指令和一个数据库连接。

DataCommand 执行sql命令

Code Snippet
  1. SqlConnection con = new SqlConnection(connectionString);
  2.             con.Open();
  3.  
  4.             SqlDataAdapter adapter = new SqlDataAdapter(sql, con);
  5.             DataSet ds = new DataSet();
  6.             adapter.Fill(ds);
  7.  
  8.  
  9.             return ds;

 

Code Snippet
  1. string queryString =
  2.         "SELECT OrderID, CustomerID FROM dbo.Orders;";
  3.  
  4.     using (SqlConnection connection =
  5.                new SqlConnection(connectionString))
  6.     {
  7.         SqlCommand command =
  8.             new SqlCommand(queryString, connection);
  9.         connection.Open();
  10.  
  11.         SqlDataReader reader = command.ExecuteReader();
  12.  
  13.         // Call Read before accessing data.
  14.         while (reader.Read())
  15.         {
  16.             Console.WriteLine(String.Format("{0}, {1}",
  17.                 reader[0], reader[1]));
  18.         }
  19.  
  20.         // Call Close when done reading.
  21.         reader.Close();

 

 

*ASP.NET身份验证

windows机制  ,原理:iis

form :账户

passport:密钥

非对称md5(无公钥),对称(由私钥能推出共钥)

*调用webservice的方法。 1. wsdl.exe命令行工具  2. add web reference 菜单选项

*net remoting

看作一种分布式处理方式,dcom的升级,改善了很多性能

提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用Remoting的原因。为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如果不采用进程间通信(RPC)机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进行通信,即穿越边界。

 

 

*class  struct区别

class:引用类型,可以作为基类型,可以实现接口继承基类,分配内存的堆上

struct:值类型,能实现接口不能继承基类,存储空间在内存的栈上。

 

*net remoting和webservice 应用中区别

webservice  利用http协议,穿透防火墙

remoting  除了http还可以用tcp/ip,二进制传送提高效率

 

*final,finally,finalize()

*异常捕捉  try 里有个return语句,finally里的语句在return之前执行

*iis 进程回收机制 会让session丢失(状态维护)

session_start   超时session_end

 

web.config 中的sessionstate 4个属性 off,inproc,stateserver,sqlserver

默认inproc,存在asp.net进程中,速度快,但是进程崩溃(重启或者失败)就会造成session丢失

stateserver 要指定ip端口,是一种windows服务,不依赖asp.net进程。存在stateserver的进程中。

sqlserver不依赖iis,方便集群

 

*xml 区分大小写,必须有结束或者加上个/字符(<over/>)

属性必有有引号,属性必须带有值

 

*const 常量区,常数不能改

static 静态存储区,变量

 

*托管

Console.WriteLine("反射-获取System.IO.BinaryReader 中的公共成员,不包括父类的成员");
            Assembly a = Assembly.LoadFile(@"C:\Users\ipod\Documents\Visual Studio 2010\Projects\反射\反射\反射\bin\Debug\common.dll"); //system就不用这个了
            
            Type MyType = a.GetType("common.helper");
            
            MemberInfo[] Memberinfoarray = MyType.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly);
            Console.WriteLine("反射-获取System.IO.BinaryReader公共成员数量:{0}",Memberinfoarray.Length);
            Console.WriteLine("反射程序集name",MyType.FullName);
            for (int i = 0; i < Memberinfoarray.Length; i++)
            {
                Console.WriteLine("member[{0}]:{1}",i+1, Memberinfoarray[i].Name+",");
            
            
            
            }
            Console.ReadLine();

 

*datagridview使用

获取0行0列的值   datagridview.row[0].cell[0].value

*create funciton  name(@name nvarchar)

returns int

as

begin

..

end

触发器  inserted i ,deleted  i   .after insert实现业务规则。 create  trigger  tri_name  as…   raiserror(‘error info’,’1’,’16’)  rollback transaction ,commit

 

 

asp.net sessionid 该标识符是随机生成的、由 24 个字符编码组成的编号,这些字符包括小写字符 a 到 z 和数字 0 到 5

asp.net 会话状态,如果设置为 inproc的话,session中的变量类型必须为基元net类型或者可序列化的类型,因为存储在外部数据存储区中

默认session存在cookie中,但是可以放到url中,只要将web.config中的sessionstate的属性 cookieless=true ,这要的坏处是如果重写url路由就不好识别。

(http://www.xx.com/(此处是sessionid)/sdfsf.com)

 

 

1.配置web.config  sessionstate 有4种,默认inproc,off,stateserver,sqlserver,自定义

 

inproc:存在进程中,进程关闭则session丢失

  • stateserver:本地asp.net服务 

设置为stateserver 默认为10秒开启成100秒,

<sessionState mode="StateServer" cookieName="mike-uid"   stateConnectionString="tcpip=127.0.0.1:42424"     stateNetworkTimeout="100" ></sessionState> 配置好后,必须手动开启本地服务中的ASP.NET状态服务;

  • sqlserver:数据库asp.net

存在名字ASPSTATE 数据库中,<sessionState mode="SQLServer" sqlCommandTimeout="30"  sqlConnectionString="Server=MIKPLE-PC\SQLEXPRESS;Integrated Security=true"></sessionState>

第一次需要生成此数据库,sql脚本文件位于 默认情况下,InstallSqlState.sql 位于 %windir%\Microsoft.NET\Framework\version 中。

 

 

 

 

 

 

自定义session的value

 

1)自定义sessionid类继承自SessionIDManager。 重写2个方法:CreateSessionID  和Validate

2)  使用自定义的session value。

配置web.config中的system.web节点下的 sessionstate  的sessionIDManagerType="MvcApplication1.session.sessionid"

 

效果图如下(将sessionid 自定义成guid了)

image

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
namespace MvcApplication1.session
{
    public class sessionid: SessionIDManager
    {
        public override string CreateSessionID(HttpContext context)
        {
            return Guid.NewGuid().ToString();
        }
        public override bool Validate(string id)
        {
            Guid g = new Guid(id);
            if (id == g.ToString())
            {
                return true;
            }
           
            return false;
        }
    }
}

 

???第一次访问url时候应该有个返回个sessionid,但是不设置mvc情况下就会不返回。像窝窝头第一次访问就返回55tuan-id

 

msdn 帮助太重要了

posted on 2014-03-30 22:38  水墨.MR.H  阅读(522)  评论(0编辑  收藏  举报
知识共享许可协议
本博客为水墨原创,基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的水墨(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。