All Posts (292) 292


C#数据结构之单链表LinkList

继续发数据结构系列~今天是单链表。类图:接口的代码不重复发了。在前一篇《C#数据结构之顺序表SqList》里有。节点类Node:public class Node {     private T _Data;     private Node _Next;     public T Data     {         get { return _Data; }         set { _Data = value; }     }          public Node Next     {         get { return _Next; }         set { _Next = value; }     }     public Node(T val, Node p)     {         _Data = val;...

C# LinkList 单链表 数据结构

C#数据结构之顺序表SqList

最近在公司On Bench比较蛋疼,正好手头有本《C#数据结构》,拿来复习一下数据结构。以前大学里都是用C语言写的,C#从来没试过,毕竟C#本身就带有很多数据结构的Class可以直接拿来用。出于实验性目的,我还是看着书用C#写了几个demo。书上有些错误我也一并修正了。接下来发的代码都是经过测试可以正常运行的~DAY1.顺序表最近博客系统有点BUG,代码中如果有三条杠注释就会排版混乱,所以抱歉这次不能带注释了。IListDs接口:public interface IListDs {     void Clear();     void Append(T item);     void Insert(T item, int i);     T Delete(int i);     T GetElement(int i);     int Locate(T value); }S...

C# SqList 数据结构 顺序表

ASP.NET中URL重写和Session冲突的问题

今天在改博客系统的一个Bug的时候,程序里用了Session,结果一跑就报错:只有在配置文件或 Page 指令中将 enableSessionState 设置为 true  时,才能使用会话状态。还请确保在应用程序配置的  \\ 节中包括  System.Web.SessionStateMod 或自定义会话状态模块。然而用VS自带的Web Server调试一点问题都没有。唯独在IIS下跑的时候老报错,错误语句就是那行用了Session的程序。唯一的区别就是VS下调试时,URL没有重写。于是我回到IIS上,用完整的URL试了下,果然木有问题。我所使用的是URLRewriter.dll,似乎是当年微软提供的,经过一番查找,似乎有很多人和我有同样的问题,不管他们用的是不是URLRewriter.dll。奇怪的是,并不是每个版本的IIS都会丢Session。我本机和网站服务器用的是IIS7,...

ASP.NET Session URL Rewrite

ASP.NET用控件连接Access2010数据库报错的解决方法

今天想把网站的数据库换成2010(.accdb)格式的,但不知道主机服务商是否支持。于是想做个页面先测试一下。为了图方便,我用Access2010建立好测试用的数据库后,在VS里用拖DataSource控件的方法建了一个测试页面。VS里一切正常,可以识别数据库的内容。但网页一运行就报错:OleDbException (0x80004005): 不可识别的数据库格式。但通过编程的方式来指定provider就行。 经过一番研究发现,Access 2007或2010已经不能用AccessDataSource控件来连接了。必须使用SqlDataSource,但有些地方要做些改动: 1. 拖个SqlDataSource进来,然后选择配置数据源: 2.点击[新建连接]后,选择你的accdb数据库,数据源应该会自动适配为OLE DB。 3.选择高级,将Provider属性修改为Micro...

accdb ASP.NET

数组删除重复元素,List<T>实现

这是个很老很无趣的话题,常见于C语言的作业题。其实严格意义上来说,用List泛型属于作弊了~,但过程非常简单,没有技术含量,主要是让大家看看C#的优雅。我们知道,以前在C语言中要删除数组里的重复元素非常麻烦,要有两个游标(这意味着至少2层for嵌套),还要关心元素移位的问题。现在,如果把数组这样可以看作集合的东西放到集合类型里,比如List泛型,事情就会容易的多:static void Main(string[] args) {     List strs = new List() { "a", "b", "c", "c", "d", "c", "a", "e", "f", "b", "g", "h" };     // 不能用foreach,因为迭代器是只读的     for (int i = 0; i 有图有真相:...

C# List<T> 泛型 Array 重复元素

C#仿魔兽世界密保卡OOP重构版

昨天下午我把《C#仿魔兽世界密保卡简单实现》 中的代码用面向对象的方法重构了一遍,引入了2个类:MatrixCard和Cell。MatrixCard描述的是密保卡,构造函数中会随机生成一个二 维矩阵,所以每次new一个MatrixCard对象,就已经生成了一张密保卡。Cell是单元格的意思,将行号、列号、列名做了封装。 MatrixCard类中保留了之前的大部分静态方法,以便灵活调用。由于本人水平有限,这次的设计并不是非常完美,并且也有一些遗憾。比如现在只能通过Cell[i]的方式来访问单元格,而不可以像Cell["A0"]这样写。有空的时候哥去研究一下重载索引器,争取把它实现。下面发代码:MatrixCard类:using System; using System.Collections.Generic; namespace GeekStudio.Common {...

C# OOP 密保卡 Refactor

C#仿魔兽世界密保卡简单实现

昨天拿C#写了个简单的密保卡程序(Console的,偷懒了一下 哈哈),实现了随机生成5x5矩阵卡、转换为字符串、从字符串读取矩阵卡以及简单验证的功能。不过我写的比较草率,代码结构不是很好,也没有体现OOP的思想,这几天有空会重构一下。先把代码发出来:public class MatrixCardManager      {          public static int[,] ReadMatrixCardFromString(string matrixStr)          {              int[,] arr1 = new int[5, 5];              int[] tempArr = new int[25];              int k = 0;              string[] tempArrStr = ma...

密保卡

用Web.Config保存设置导致网站不定时重启的问题

前几天写了篇ASP.NET读写Web.Config,之后我确实用了文中的方法,重写了我网站的配置模块。结果上线之后,却发现网站时不时地重启,非常诡异。研究之后,我发现只要是对Web.Config做修改,就会使IIS重启网站,它不是立即重启的,似乎和GC一样有个阀值。然而我的设置必须保存在Web.Config中,这可肿么办?经过一番Google,终于找到了解决方案,现在似乎已经修复网站重启的问题了。方法是,把Web.Config的appSettings节点里的配置信息写到另一个文件中,然后设置appSetting节点的configSource属性,指向那个config文件即可。具体写法如下(摘自原作者博客):Web.config中appSettings节有个属性:configSource,这个属性可以指定一个存储appSettings的外部文件路径(只支持相对路径),而这个外部文件的修改是不...

Web.Config

ASP.NET读写Web.Config

先说下,我写的很多技术类文章都是面向初学者的,为了便于他们理解,我会写的尽量详细,包括很多最基础的操作步骤,并且有些说法可能不太严谨,高手请勿追究。如果写的太专业,不仅没人看我的博客,我还会被喷装B。请高手们原谅。以前我做网站设置模块的时候,总喜欢把设置都写在一个xml文件里,然后用程序去读写这个xml文件。虽然.NET对XML的支持很好(现在有Linq To XML了),并且我也使用了一个XML工具类,但总体来说,自己手动读写一个xml文件,还是有点蛋疼的。一不小心就容易出错。今天我突然想到,我们曾经无数次在Web.Config里读取过连接字符串,那么为何不把网站的设置信息也保存在Web.Config中呢?只要使用System.Configuration下的ConfigurationManager类就可以操作Web.Config了,微软都给我们封装好了!为了验证这一点的可行性,我写了一个...

ASP.NET Web.Config

ASP.NET GridView超链接列取值

场景:开发一个简单的Web文件管理功能,第一列是指向文件的超链接,最后一列放一个删除按钮。现在要求按删除按钮后,删除对应的文件。思路:获取当前行的第一列的值,然后调用File.Delete()方法。按照以往的写法,我们会在GridView的SelectedIndexChanged事件中,先找到当前行:int i = GridView1.SelectedIndex;然后通过 GridView1.Rows[i].Cells[0].Text来访问当前行第一列的数据。但是,如果不幸遇到超链接列,这种写法取出的缺是空串。我研究了好久,最后发现,HyperLink Field在GridView中要当作Web Control来处理。所以必须先转换为HyperLink,然后才能访问其Text属性。写法如下:((HyperLink)GridView1.Rows[i].Cells[0].Controls[0]...

ASP.NET GridView 超链接