随笔分类 - .NET
摘要:说明:写作本文的出发点是最近和一个有3年开发经验的.NET开发人员聊天,他跟我说经常没有思路,在实际开发中我也见过一个具有4、5年开发经验的开发人员几乎没有灵活变通的能力,所以打算写一系列文章,在这个系列文章中我会主要讲解解题的思路,而不是讲述什么新技术新特性,借这个系列文章为初中级开发者了解遇到问题别人是如何思考和解决的。当然,如果你的思路比本文提到的更好,欢迎指出来,同时如果你对本系列文章有更好的建议或者有日常中的一些典型问题,请给我联系,我们共同探讨。目前我暂时能想到的有不重复随机数产生问题、字符串与数值转换的问题、特殊的数据库锁问题、访客来路追踪问题、在线用户统计问题、统计用户访问页面
阅读全文
摘要:在.net下进行网络编程其实也相对比较简单,因为在.net类库已经提供了大量封装好的类。在.net下网络编程比较底层的类是System.Net.Sockets.Socket类,这个类提供了丰富的方法和属性,并且还提供了异步数据传输支持。对Socket类做一个简单的介绍,它有如下常见方法:public SocketAccept ():为新建连接创建新的Socket。public voidBind (EndPoint localEP):使Socket 与一个本地终结点相关联。public voidClose():关闭 Socket连接并释放所有关联的资源。注意这个方法有冲载方法。public vo
阅读全文
摘要:在实际项目中我们经常需要绘制一些实时的数据图片,比如当前各公司的用水量、用电量还有播放声音视频时实时显示当前的声频等等,在我们最熟悉的任务管理器也有这么一个功能,用来表示当前CPU的使用频率,最近笔者刚刚给朋友完成了一个类似的功能图,用曲线图来实时表示一些实际数据,由于形象直观,很受客户欢迎。 不过由于某些原因,本人不能将实际项目中的代码拿出来给大家分享,只能模拟了一个简单的实现,代码没有过多优化,所以还存在很多可以优化的地方,希望有兴趣的朋友自己完善。为了操作和应付变化,所以将绘制曲线图的功能单独封装成一个类,里面的数据完全是模拟的,在横向坐标上每个像素间隔用一个点来控制(实际中可能会加大这
阅读全文
摘要:在开发中经常会遇到线程的例子,如果某个后台操作比较费时间,我们就可以启动一个线程去执行那个费时的操作,同时程序继续执行。在某些情况下可能会出现多个线程的同步协同的问题,下面的例子就展示了在两个线程之间如何协同工作。这个程序的思路是共同做一件事情(从一个ArrayList中删除元素),如果执行完成了,两个线程都停止执行。代码如下:using System;using System.Collections;using System.Collections.Generic;using System.Threading;/// <summary>/// 在开发中经常会遇到线程的例子,如果某
阅读全文
摘要:为了让程序尽快响应用户操作,在开发Windows应用程序时经常会使用到线程。对于耗时的操作如果不使用线程将会是UI界面长时间处于停滞状态,这种情况是用户非常不愿意看到的,在这种情况下我们希望使用线程来解决这个问题。 下面是一个使用多线程操作界面UI的代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.T
阅读全文
摘要:在面向对象编程中,经常会面对创建对象和销毁对象的情况,如果不正确处理的话,在短时间内创建大量对象然后执行简单处理之后又要销毁这些刚刚建立的对象,这是一个非常消耗性能的低效行为,所以很多面向对象语言中在内部使用对象池来处理这种情况,以提高性能,比如在ADO.NET内部就允许使用数据库连接池来提高性能,在JDBC中没有提供数据库连接池,一些开发人员为了提高效率就自己编写数据库连接池来提高性能,当然据我所知在Java中有些框架提供了数据库连接的池化处理。在多线程编程时也会遇到上面的情况,如果创建了过多的线程将会增加操作系统资源的占用,并且还要处理资源要求和潜在的占用冲突,并且使用了多线程之后将使代码
阅读全文
摘要:在《多线程编程》系列第一篇讲述了如何启动线程,这篇讲述线程之间存在竞争时如何确保同步并且不发生死锁。线程不同步引出的问题下面做一个假设,假设有100张票,由两个线程来实现一个售票程序,每次线程运行时首先检查是否还有票未售出,如果有就按照票号从小到大的顺序售出票号最小的票,程序的代码如下:using System;using System.Collections.Generic;using System.Text;using System.Threading;namespace StartThread{ public class ThreadLock { private...
阅读全文
摘要:位操作符是对数据按二进制位进行运算的操作符。位操作是其他很多语言都支持的操作,如C、C++和Java等,C#也不例外支持位操作。注意位操作支持的数据类型是基本数据类型,如byte、short、char、int、long等,C#支持的位操作有如下几种:· 按位与 & · 按位或 | · 按位取反 ~ · 左移 << · 右移 >> · 异或^在C#中位操作同C的位操作没有什么区别,位操作的速度相对较快,而且如果熟练的话,处理起来也相对方便,特别是在一些权限等相关的设置中,比如:用1、2、4、8、16、32
阅读全文
摘要:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; using System.Data; using System.Data.SqlClient; namespace JonseTest { public class SqlServerHelper { public static string ConnString = string.Empty; public stati...
阅读全文
摘要:【问题】:当点击列标题的时候,能够完成对该列排序,再次点击,按照该列反序排序。【解决方法】:使用 IComparer接口。例子:1.using System;using System.Collections.Generic;using System.Text;using System.Collections;using System.Windows.Forms;namespace sortListView{ class ListViewColumnSorter: IComparer { private int ColumnToSort;// 指定按照哪个列排序 priv...
阅读全文
摘要:昨天选课,虽然有一个排队系统。但是排队系统实在不怎么的啊。插队的有那么的多。有人做了插队工具下了一个看看,那是一个使用javascript实现的系统,整个只有一个页面。你可以在这里下载:/Files/lulu/xk.rar。它使用xmlHttpRequest向服务器发送请求。 js不太熟悉,发现HttpRequest功能差不多,用它试试啦。但是不知道提交数据怎么组织,革命尚未成功但是还是学到了点东西,就在这了写下来了: //Get请求方式 private string RequestGet(string Url) { string PageStr = string.Empty;//用于存放..
阅读全文
摘要:年底接近尾声,闲来无事,继续加强学习C#的一些基础知识,今天弄了一下Dictionary排序,顺便做个小Demo,以加深映像,为了更加真实些,稍微使逻辑复杂了一些,关键训练一下自己的思维逻辑:1.先看效果图:2.核心逻辑如下:Dictionary<int, string> list = new Dictionary<int, string>();//实例化一个字典Random rd = new Random();//为了更加真实,创建一个生成整数的随机数生成器int id = 0;List<int> idlist = new List<int>(
阅读全文
摘要:1.Get请求string strURL = "http://localhost/WinformSubmit.php?tel=11111&name=张三";System.Net.HttpWebRequest request;// 创建一个HTTP请求request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);//request.Method="get";System.Net.HttpWebResponse response;response = (System.Net.HttpWe
阅读全文
摘要:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Xml;namespacePuTianCheng{///<summary>///XmlHelper的摘要说明///</su
阅读全文
摘要:如果使用.Net Framework 3.5的话,事情就很简单了。呵呵。 如果不是的话,还是自己写排序吧。 using System; using System.Collections.Generic; using System.Text; using System.Linq; namespace DictionarySorting { class Program { static void Main(string[] args) { Dictionary<int, string> dic = new Dictionary<int, string>(); dic.Add
阅读全文
摘要:事件(event),这个词儿对于初学者来说,往往总是显得有些神秘,不易弄懂。而这些东西却往往又是编程中常用且非常重要的东西。大家都知道windows消息处理机制的重要,其实C#事件就是基于windows消息处理机制的,只是封装的更好,让开发者无须知道底层的消息处理机制,就可以开发出强大的基于事件的应用程序来。 先来看看事件编程有哪些好处。 在以往我们编写这类程序中,往往采用等待机制,为了等待某件事情的发生,需要不断地检测某些判断变量,而引入事件编程后,大大简化了这种过程: - 使用事件,可以很方便地确定程序执行顺序。 - 当事件驱动程序等待事件时,它不占用很多资源。事件驱动程序与过程式程序最大
阅读全文
摘要:在.NET Framework中,System.Convert类中提供了较为全面的各种类型、数值之间的转换功能。其中的两个方法可以轻松的实现各种进制的数值间的转换: Convert.ToInt32(string value, int fromBase)可以把不同进制数值的字符串转换为数字,其中fromBase参数为进制的格式,只能是2、8、10及16: 如Convert.ToInt32("0010",2)执行的结果为2; Convert.ToString(int value, int toBase): 可以把一个数字转换为不同进制数值的字符串格式,其中toBase参数为进制
阅读全文
摘要:.net中的委托,我个人认为很类似于C++ 中的函数指针。你定义一个代理,然后注册函数到这个代理中即可使用。通过下面的例子来讲解.net中委托的使用using System;using System.IO;using System.Windows.Forms;class Set{private Object[] items;//构造器。给对象数组进行初始化public Set(Int32 numItems){items = new Object[numItems];for(Int32 i = 0; i < numItems; i++){items[i] = i;}}//定义一个FeedB
阅读全文
摘要:socket是套接字的英文名称,主要是用于网络编程,在以前vb6时要想使用socket进行程序开发最麻烦的是要自己声明socket动态库中的相关函数,而这些函数的参数多不说,还是用c语言编写的,要让它门在vb中运行最头痛的就是要进行函数参数的转换。经常是为了测试一个参数的转换是否正确而花上大半天的功夫。 不过现在不同了有了.net的System.Net.Sockets 命名空间包含 Windows 套接字接口的托管实现。而System.Net 命名空间中的所有其他网络访问类都建立在该套接字实现之上,有就是说使用System.Net.Sockets和System.Net 命名空间中类可以完成通过
阅读全文
摘要:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Drawing.Drawing2D;using System.Text;using System.Windows.Forms;namespace WindowsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } //
阅读全文