c#%s
2008-01-02 09:03:00 taokai 阅读数 454

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// MD5 的摘要说明
/// </summary>
public class MD5
{
 public MD5()
 {
  //
  // TODO: 在此处添加构造函数逻辑
  //
 }
    public static string get(string str, int code)
    {
        if (code == 16) //16位MD5加密(取32位加密的9~25字符)
        {
            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);
        }
        else//32位加密
        {
            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();
        }
    }
}
 

2011-05-14 10:50:00 weixin_34384915 阅读数 5

本文是上周写一个功能测试时,期望在测试结束时,利用Java的析构函数来关闭浏览器发现的问题,当然,这种方式是不建议采用的。因为我的背景是.NET开发,因此对Java的析构函数产生了误解。

作为一个C# Programer我们都知道,垃圾回收会帮我们回收托管资源,但那些非托管资源(比如文件句柄,数据库连接)垃圾回收是不会帮我们回收的,所以我们必须显式的回收这些资源。比如很多使用了非托管资源的类型都实现了Dispose方法,他们期望使用这些类型的开发人员能够显式的去调用这个方法来释放非托管资源,不过如果你没有显式调用那不就产生资源泄露了?别怕,还有最后的安全屏障:终结方法(不过终结方法会带来其他很多问题,这个在《CLR via C#》里有很详细的描述,本文关注点并不在此)。比如下面这段代码:

using System;
 
public class Wrapper
{
    public Wrapper()
    {
        Console.WriteLine("ctor");
    }
 
    ~Wrapper()
    {
        Console.WriteLine("finalize");
    }
}
 
public class Program
{
    private static Wrapper wrapper = null;
 
    public static void Main(String[] args)
    {
        wrapper = new Wrapper();
    }
}

上面的代码执行的结果会是:

ctor
finalize

C#的终结方法(析构函数,为了避免产生误解,微软后来改名了)在对象被垃圾回收或程序退出时会被调用。

再看看下面这段几乎一模一样的Java代码:

//Wrapper.java
public class Wrapper{
 
    public Wrapper(){
        System.out.println("ctor");
    }
    
    protected void finalize(){
        System.out.println("finalize");
    }
}
 
//Program.java
public class Program{
    private static Wrapper wrapper = null;
    
    public static void main(String[] args){
        wrapper = new Wrapper();
    }
}

输出的结果却是:

ctor

也就是析构函数并没有执行。

最后查文档得知,在JVM中如果该对象没有被垃圾回收则该对象的析构函数就不会调用。也就是说,如果你这个对象在JVM退出之前一直都没有被垃圾回收,那么默认情况下,你的析构函数是不会调用的,这也就带来了上面所说的结果。

也就是这一点让我这个.NET背景的程序员栽跟头了。

不过Java也提供了其他方式,让你确定在JVM退出时调用所有对象的析构函数,比如上面的代码只需要加一个System.runFinalizersOnExit(true),然后执行结果就和C#版本的一样了:

//Wrapper.java
public class Wrapper{
 
    public Wrapper(){
        System.out.println("ctor");
    }
    
    protected void finalize(){
        System.out.println("finalize");
    }
}
 
//Program.java
public class Program{
    private static Wrapper wrapper = null;
    
    public static void main(String[] args){
        
        wrapper = new Wrapper();
    }
}

不过System.runFinzalizersOnExit是一个已不建议采用的方法了。

2007-12-02 10:35:00 nnsword 阅读数 617

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// MD5 的摘要说明
/// </summary>
public class MD5
{
 public MD5()
 {
  //
  // TODO: 在此处添加构造函数逻辑
  //
 }
    public static string get(string str, int code)
    {
        if (code == 16) //16位MD5加密(取32位加密的9~25字符)
        {
            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);
        }
        else//32位加密
        {
            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();
        }
    }
}
 

2019-05-17 14:43:42 weixin_44540179 阅读数 131

架构一共有典型的两层架构,分别是桌面端和浏览器端(C/S和B/S)。
C/S(桌面端)结构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据。
Client/Server是建立在局域网的基础上的。(C/S)
Browser/Server是建立在广域网的基础上的。(B/S)
虽然这两个架构有一些相近,实际上则是区别则是大相庭径。因为C/S结构是桌面端,而B/S结构是浏览器端。
在这里插入图片描述
(C/S结构)

C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将 任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境 的优势。

C/S结构在技术上很成熟,它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。将任务分配到Client 和Server两端,降低了系统的通讯开销。
其优点是:

1.可以充分发挥客户端PC的处理能力
2.UI可以充分满足客户自身的个性化要求
3. 安全性能可以保证,C/S一般面向相对固定的用户群,程序注重流程,它可以对权限进行多层次校验,提供了更安全的存取模式,对信息安全的控制能力很强。
缺点是:

  1. 兼容性差
  2. 需要专门的客户端安装程序,分布功能弱
  3. 用户群固定和开发和维护的成本高,因为一次升级,则所有客户端的程序都要改变。

B/S(浏览器)结构,主要特点是分布性强、维护方便、开发简单且共享性强、总体拥有成本低。但数据安全性问题、对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低,难以实现传统模式下的特殊功能要求。需要通过浏览器与服务器进行交互。
在这里插入图片描述

B/S的主要特点是分布性强、维护方便、开发简单且共享性强、总体拥有成本低。但数据安全性问题没有C/S(桌面端)强,B/S(浏览器端)对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低,难以实现传统模式下的特殊功能要求。对大量的数据输入以及报表的应答等都需要通过浏览器与服务器进行交互,通信开销大,而且对于实现复杂的应用构造有较大的困难。
BS的优点:
  1.分布性强,客户端零维护。只要有网络、浏览器,可以随时随地进行查询浏览等业务处理。
  2.业务扩展简单方便,通过增加网页即可增加服务器功能。
  3.维护简单方便,只要改变网页,就能实现所有用户的同步更新。
  4.开发简单,共享性强。
缺点是:
1.个性化特点明显降低,无法实现具有个性化的功能要求
2.在跨浏览器上,BS架构不尽如人意
3.功能弱化

最后小结图片:
在这里插入图片描述

2008-08-07 01:12:00 topmvp 阅读数 262
C# is the key language for Microsoft's next generation of Windows services, the .NET platform. This new programming language is fast and modern and was designed to increase programmer productivity. C# enables programmers to quickly build a wide range of applications for the new Microsoft .NET platform. The .Net platform enables developers to build C# components to become Web services available across the Internet. Using C# language constructs, these components can be converted into Web services, allowing them to be invoked across the Internet. Gunnerson's book is designed as a comprehensive reference for professional programmers to help get them up to speed on C#. The author is a lead developer on Microsoft's C# development team, and has logged many developer hours writing and testing C# code. As such, he is uniquely poised to teach developers the effective use of this new language. A Microsoft insider, Gunnerson is also able to explain to readers how C# fits into Microsoft's new .NET
http://rapidshare.com/files/52650557/1893115860.zip

CAS C# C/S

阅读数 3357

B/S下C#的提示信息

阅读数 468

没有更多推荐了,返回首页