摘要: C#提供了一个lock关键字,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。在C#中,C# lock关键字定义如下:lock(expression) statement_blockexpression代表你希望跟踪的对象,通常是对象引用。◆如果你想保护一个类的实例,一般地,你可以使用this;◆如果你想保护一个静态变量(如互斥代码段在一个静态方法内部),一般使用类名就可以了。而statement_block就是互斥段的代码,这段代码在一个时刻内只可能被一个线程执行。下面是一个使用C# lock关键字的典型例子,在 阅读全文
posted @ 2013-09-26 11:15 红宝石 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 一:这里介绍C#内部类能够使用外部类定义的类型和静态方法,但是不能直接使用外部类的实例方法,直接看来,外部类对于内部类的作用更像是一个命名空间。C#语言有很多值得学习的地方,这里我们主要介绍C#内部类,包括介绍instance方法和private方法等方面。C#内部类能够使用外部类定义的类型和静态方法,但是不能直接使用外部类的实例方法,直接看来,外部类对于内部类的作用更像是一个命名空间,在C#中,始终可以用(只要访问控制允许)Sys.Model.Key key = new Model.Key();来创建一个内部类的实例,这个实例与外部类的任何实例没有任何直接的关系。类似于Java中的静态内部类 阅读全文
posted @ 2013-09-26 11:12 红宝石 阅读(9201) 评论(0) 推荐(1) 编辑
摘要: 这次在工作之余用C#写了一个简单的贪吃蛇程序,一般的都是WinForm形式的,这次弄了个控制台版本的,因为C# Console全部都是输入输出流,要在CMD窗口做这种有前台UI界面的程序应该是不适合的,但是想起之前的DOS版本的系统,我觉得应该是可以做到了,所以就花了几个晚上弄了这么一个东西,先上个截图:界面比较简单,一个CMD窗口,其他的就是由字符构成的各种形状,做这种Console的贪吃蛇有以下几个需要注意的地方:1.理解Console这个东西,它是一个标准的I/O输入输出流;2.控制台有2个术语 :屏幕缓冲区和控制台窗口,我们一般获取的大小是控制台大小而不是缓冲区大小,这个可以看看MSD 阅读全文
posted @ 2013-09-26 10:36 红宝石 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 创建型结构型行为型类Factory MethodAdapter_ClassInterpreterTemplate Method 对象Abstract FactoryBuilderPrototypeSingleton Adapter_ObjectBridgeCompositeDecoratorFacadeFlyweightProxy Chain of ResponsibilityCommandIteratorMediatorMementoObserverStateStrategyVisitor 概览 名称Factory Method结构意图定义一个用于创建对象的接口,让子类决定实例化哪一个类。F 阅读全文
posted @ 2013-09-26 08:46 红宝石 阅读(154) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/jackystudio/article/details/11860007 阅读全文
posted @ 2013-09-25 15:44 红宝石 阅读(200) 评论(0) 推荐(0) 编辑
摘要: Console.Write 表示向控制台直接写入字符串,不进行换行,可继续接着前面的字符写入。Console.WriteLine 表示向控制台写入字符串后换行。Console.Read 表示从控制台读取字符串,不换行。Console.ReadLine 表示从控制台读取字符串后进行换行。Console.ReadKey 获取用户按下的下一个字符或功能键,按下的键显示在控制台窗口中。Console.Beep 通过控制台扬声器播放提示音。Console.Clear 清除控制台缓冲区和相应的控制台窗口的显示信息。输出到控制台输出到控制台就是把数据输出到控制台并显示出来。.Net框架提供了console类 阅读全文
posted @ 2013-09-25 14:04 红宝石 阅读(1419) 评论(0) 推荐(0) 编辑
摘要: public class RWPhotoXmlUtils { public static void WriteXml(string foldName,string fileName,Dictionary dict) { try { XElement root = new XElement("Root"); foreach (KeyValuePair obj in dict) { XElement photo = new XElement("Photo"); XElement riderId = new XElement("RiderId&quo 阅读全文
posted @ 2013-09-25 13:32 红宝石 阅读(491) 评论(0) 推荐(0) 编辑
摘要: 最近一段时间在研究java的多线程,在此记录下自己的学习成果,学习过程中参考了大量的博客,觉得挺好的,都自己做了实验验证了一下,确实挺有意思的,这里感谢他们的研究成果。从最基本的做起:1.继承Thread实现多线程Java代码/***实际上start()方法是创建一个新的线程,而run()只是调用一个单纯的run()方法*如果要在一个实例上产生多个线程就必须用到了另外一种实现方法:实现Runnable接口*因为不能tt.start()两次*@authorSa**/publicclassTestThreadextendsThread{privateintx=0;publicvoidrun(){f 阅读全文
posted @ 2013-09-25 10:22 红宝石 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 交换排序:1.冒泡排序Java代码publicstaticvoidbubble(intarr[]){for(inti=1;iarr[j+1]){swap(arr,j,j+1);}}}}2.快排Java代码publicstaticvoidquickSort(inta[],intleft,intright){inti;if(left=base){--right;}a[left]=a[right];while(left=0;i--){//从中间有叶子节点的数据开始keepHeap(data,i,n);}while(n>0){swap(data,0,n-1);//把第一个和本次建堆的最后一个交换 阅读全文
posted @ 2013-09-25 10:19 红宝石 阅读(354) 评论(0) 推荐(0) 编辑
摘要: MySQL:创建、修改和删除表 其实对很多人来说对于SQL语句已经忘了很多,或者说是不懂很多,因为有数据库图形操作软件,方便了大家,但是我们不能忘记最根本的东西,特别是一些细节上的东西,可能你用惯了Hibernate,不用写SQL语句,但是不是任何项目都要用到大框架的,如果不用,那你是不是就不会操作数据库了呢,所以我们最好还是熟悉一点好,对我们以后找工作和工作都有帮助。 在说创建、修改和删除表前,我们还是要进行一个操作的简单说明: 1.登陆数据库系统 在命令行中登陆MySQL数据库管理系统,输入一下内容:mysql -h localhost -u root -p 很多人都知道这个,但... 阅读全文
posted @ 2013-09-25 08:59 红宝石 阅读(227) 评论(0) 推荐(0) 编辑