摘要:
访问世纪流年BLOG站时看到的一段文字,对设计模式的解释很风趣,能够让人很快的了解其含义,学到了不少东西,以下是文章的内容:创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、BUILDER—MM最爱听的就是“我爱你”这句话了,见 阅读全文
posted @ 2013-02-13 21:42
Tony.J
阅读(241)
评论(0)
推荐(0)
摘要:
参考了这篇博客的内容和思路:http://www.cnblogs.com/nokiaguy/archive/2013/01/29/2881476.html有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。算法实现的基本思路三种情况:全负数 全正数 正负皆有1:取最右 时间复杂度为o(1)2:取最左 时间复杂度为o(1)3:二分查找0, 找到为最小,否则最后查找区间,左右取绝对值最小,时间复杂度为o(log 阅读全文
posted @ 2013-02-13 21:36
Tony.J
阅读(272)
评论(0)
推荐(0)
摘要:
.NET中的枚举我们一般有两种用法,一是表示唯一的元素序列,例如一周里的各天;还有就是用来表示多种复合的状态。这个时候一般需要为枚举加上[Flags]特性标记为位域,例如:[Flags] enum Styles{ ShowBorder =1, //是否显示边框ShowCaptio... 阅读全文
posted @ 2013-02-13 21:31
Tony.J
阅读(367)
评论(0)
推荐(0)
摘要:
如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上 车。而线程与Mute... 阅读全文
posted @ 2013-02-13 21:30
Tony.J
阅读(180)
评论(0)
推荐(0)
摘要:
Timer类:设置一个定时器,定时执行用户指定的函数。定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。初始化一个Timer对象:Timer timer = new Timer(timerDelegate, s,1000, 1000);// 第一个参数:指定了TimerCallback ... 阅读全文
posted @ 2013-02-13 21:29
Tony.J
阅读(203)
评论(0)
推荐(0)
摘要:
在多线程的程序中,经常会出现两种情况:一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应这一般使用ThreadPool(线程池)来解决;另一种情况:线程平时都处于休眠状态,只是周期性地被唤醒这一般使用Timer(定时器)来解决;ThreadPool类提供一个... 阅读全文
posted @ 2013-02-13 21:28
Tony.J
阅读(189)
评论(0)
推荐(0)
摘要:
前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥... 阅读全文
posted @ 2013-02-13 21:25
Tony.J
阅读(199)
评论(0)
推荐(0)
摘要:
下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可。(线程入口使程序知道该让这个线程干什么事)在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.St... 阅读全文
posted @ 2013-02-13 21:22
Tony.J
阅读(137)
评论(0)
推荐(0)
摘要:
什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。 而一个进程又是由多个线程所组成的。什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。什么是多线程?多线程... 阅读全文
posted @ 2013-02-13 21:21
Tony.J
阅读(147)
评论(0)
推荐(0)
摘要:
首先,我觉得,一个概念,如果不理解也不影响使用的话,那么,就没必要去理解 它、去学习它。闭包就是这样一个概念,你不理解它也能很好的用它。俺这两年写as3程序,是天天在和它打交道,甚至有过一个function套一个,一个 方法中套了20多个function的极端例子,但从未深究过它是怎么实现的,它就像... 阅读全文
posted @ 2013-02-13 20:14
Tony.J
阅读(250)
评论(0)
推荐(0)
摘要:
假设一个xml文件内容如下: 张三 18 李四 20 创建xml代码如下:private void button1_Click(object sender, EventArgs e) { XmlDocu... 阅读全文
posted @ 2013-02-13 20:09
Tony.J
阅读(412)
评论(0)
推荐(0)
摘要:
昨天是演示了下简单的委托应用,还有一些比较比较稍微复杂一点委托应用或者委托协变~所谓委托协变,对于那些有着继承关系的类,为了避免在建立一个子类的 委托类型用来只想返回该子类的方法,我们可以使用委托协变~ 协变允许方法具有的派生返回类型比委托中定义的更多。逆变允许方法具有的派生参数类型比委托类型中的更... 阅读全文
posted @ 2013-02-13 20:05
Tony.J
阅读(143)
评论(0)
推荐(0)
摘要:
时间越长越感觉自己学习的只是还是太少啊~,最近看了Head First这本书(好书啊有木有),这本书里面有个装饰者模式,用到了委托...突然想起来~以前一直用过,但是具体为什么用也没仔细想过,以前看了很多 网上的学习资料说委托,MSDN上的专业资料可能写的很全但有的人会感觉太抽象。 所谓委托:... 阅读全文
posted @ 2013-02-13 20:02
Tony.J
阅读(154)
评论(0)
推荐(0)
摘要:
界面:源码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.... 阅读全文
posted @ 2013-02-13 18:26
Tony.J
阅读(381)
评论(0)
推荐(0)
摘要:
在开发基于三层架构的项目初期,都会按照数据库的表结构定义一堆的实体类,但是一个表里有那么多的字段,一个库又有那么多个表,建这些实体类的工作量不少,作为一个懒人,肯定想些法子解决这么麻烦的问题。写一个实体生成器。 为了生成器能兼容各仲类型的数据库,我把生成器的架构定义成如下形式 还是说明一下吧!在... 阅读全文
posted @ 2013-02-13 17:07
Tony.J
阅读(902)
评论(0)
推荐(0)
摘要:
一:什么是异常以及为什么要用异常在异常机制出现之前,应用程序普遍采用返回错误代码的方式来通知调用者发生了异常。本节将首先阐述为什么要用抛出异常的方式来代替返回错误代码的方式。对于一个成员方法而言,它要么执行成功,要么执行失败。成员方法执行成功的情况很好理解,但是如果执行失败了却并没有那么简单,因为我... 阅读全文
posted @ 2013-02-13 17:02
Tony.J
阅读(215)
评论(0)
推荐(0)
摘要:
到此为止,打老鼠游戏还不能保存每次游戏的成绩,我们今天完成的任务就是要存储成绩到SQLSERVER的数据库中。一:数据库设计在上节课中,我们已经知道了如何创建数据库,所有,先创建数据库“MouseGame”,然后,按如下的数据格式建立一个数据表(表名:GameRecord):二:数据库读写数据库的读... 阅读全文
posted @ 2013-02-13 17:01
Tony.J
阅读(213)
评论(0)
推荐(0)
摘要:
仿佛到了更进一步的时候了,每一个程序员迟早都会遇到数据存储的问题。我们拿什么来存储程序产生的数据?举例来说,用什么来存储我们的打老鼠游戏每次的成绩呢?选择如下:1:内存中。缺点,退出游戏,数据就没了;2:文件中。好办法!缺点,自己解析文本,把文本变成我们程序中的数据,这个解析的过程叫做协议。协议这个... 阅读全文
posted @ 2013-02-13 17:00
Tony.J
阅读(339)
评论(0)
推荐(0)
摘要:
没有规矩,不成方圆。在代码的世界中,尤其这样。作为程序员,我们不想让我们的代码写出去之后被人耻笑:看,连个换行都换的这么不专业。作为开发主 管,我们则不想我们的组员写出来的代码各类风格都有,五颜六色的,极其丑陋。写出规范的代码,首先需要训练,其次,也有一定的手段或者工具来进行辅助。本 小节,我们就要... 阅读全文
posted @ 2013-02-13 16:55
Tony.J
阅读(347)
评论(0)
推荐(0)
摘要:
有了上面两节的知识,尤其是第六节《.NET C# 在线培训之零基础入门 06:面向对象入门》,现在我们回过头看我们的打老鼠游戏,我们是不是会发现:这个程序也太不面向对象了。我们所有的代码逻辑都分布在Code-Hide中(UI的后台代码,称之为Code-Hide)。并且,UI的后台代码又负责显示,又负... 阅读全文
posted @ 2013-02-13 16:54
Tony.J
阅读(246)
评论(0)
推荐(0)
摘要:
在本课程的第一节“.NET 零基础入门 01:开篇及C#程序、解决方案的结构”中,我们说明为了要选择C#作为你成为程序员的第一门语言:• 首先,C#是一门非常优秀的面向对象编程的语言;凡是对编码感兴趣的同学一定听说过“面向对象编程”这个概念,C#就是为此诞生的,它天然是面向对象的。所以,既然“面向对... 阅读全文
posted @ 2013-02-13 16:53
Tony.J
阅读(297)
评论(0)
推荐(0)
摘要:
本小节,我们需要停一停我们的小游戏开发,虽然它现在还不完美,还很简单,甚至还有BUG。但是,为了更好的理解C#,现在到了该深入了解一些基础知识的时候了。当然,实际上,本小节内容对于零基础入门的初学者来说,还是有点难了。委托与事件,如果只是泛泛的说一下,可能就是一两句话。但是,我们的课程要遵 循一个原... 阅读全文
posted @ 2013-02-13 16:52
Tony.J
阅读(225)
评论(0)
推荐(0)
摘要:
一:为界面加入“开始”、“暂停”、“停止”按钮以及设定难度等级备注:本文是课程《.NET 零基础入门》的免费部分,详细请参见TMJ .NET在线培训。经过上节课程我们的交互的过程,我们的程序增加了用户友好度,同时也可以记录更为详尽的成绩了。但是我们仍然发现有很多地方需要值得改进(或许你还 发现了BU... 阅读全文
posted @ 2013-02-13 16:50
Tony.J
阅读(240)
评论(0)
推荐(0)
摘要:
一 实现打老鼠备注:本文是课程《.NET 零基础入门》的免费部分,详细请参见TMJ .NET在线培训。打开电脑后,我们需要找到我们创建的打老鼠游戏,我要求你不要从电脑的本地打开解决方案,而是从我们的源码服务器上打开它。好的,我们的地址是:https://luminji.visualstudio.co... 阅读全文
posted @ 2013-02-13 16:31
Tony.J
阅读(463)
评论(0)
推荐(0)
摘要:
从本节课开始,我们就需要做任务了,而我就要开始给你Review任务了,所以,使用一个源码管理软件是必须的了。备注:本文是课程《.NET 零基础入门》的免费部分,详细请参见TMJ .NET在线培训。TFS的全称是:Team Foundation Service。它其中最基本的功能就是:源码控制管理器。... 阅读全文
posted @ 2013-02-13 16:29
Tony.J
阅读(561)
评论(0)
推荐(0)
摘要:
一. 本课程所面向的对象从今天起,我们开始《零基础c#入门》学习。本课程是一门收费课程,请参见TMJ .NET在线培训。《零基础c#入门》是给那些非常想成为程序员,但是基础又比较差的同学准备的,差到什么程度?差到可以从来没有写过一行程序,当然,我们也相信,本系列学习对于大学本科学的计算机,但是又初入... 阅读全文
posted @ 2013-02-13 16:28
Tony.J
阅读(870)
评论(0)
推荐(0)
摘要:
在Web的应用方面有js的插件实现自动完成(或叫智能提示)功能,但在WinForm窗体应用方面就没那么好了。TextBox控件本身是提供了一个自动提示功能,只要用上这三个属性:AutoCompleteCustomSource:AutoCompleteSource 属性设置为CustomSource ... 阅读全文
posted @ 2013-02-13 16:24
Tony.J
阅读(805)
评论(1)
推荐(0)
摘要:
实现了ActiveX控件之后,在网页上的使用方式一般为:<object id="grid" classid="clsid:9661B223-6188-4849-B292-C7D9D8173E49" width="100%" height="100%"></object>注意不是:<object id="grid" classid="clsid:9771B223-6188-4849-B292-C7D9D8173E49" width="10 阅读全文
posted @ 2013-02-13 16:21
Tony.J
阅读(261)
评论(0)
推荐(0)
摘要:
一、前言1、了解HTTP(hypertext transport protocol)超文本传输协议它是一种分布式,协作式,超媒体系统应用之间的通信协议。是万维网(world wide web)交换信息的基础。它以HTML文档从web服务器传到web浏览器的方式进行的,如下图解:HTTP工作在TCP/... 阅读全文
posted @ 2013-02-13 16:12
Tony.J
阅读(233)
评论(0)
推荐(0)
摘要:
前言Request对象主要用于获取来自客户端的数据,如用户填入表单的数据、保存在客户端的Cookie等。------------------------------------------------------------------------------------------------------------- 超级分隔 --------------------------------------------------------------------------------------------------------目录:1、Request对象概述 主要属性 主要方法2.. 阅读全文
posted @ 2013-02-13 16:04
Tony.J
阅读(243)
评论(0)
推荐(0)
摘要:
一、了解Cookies对象Cookies是由Web服务器管理的存放在客户计算机中的一个数据集合。这些数据是客户端、服务器端相关的。也就是说客户浏览器每登录一个网站, 在Cookies中就会保存客户浏览器与该网站的相关信息。即使客户用同一个浏览器登陆了多个网站,在Cookies中依然会保存浏览器与多个网站的相关 信息,但Cookies中这些信息的管理是有序的,当客户浏览器再次登录某网站时,只有Cookies中相对应的信息会发生作用。Cookies是Web应用程序设计的一项很重要的技术,当Web服务器想知道某个用户的相关资料或几个ASP.NET文件之间传送的数据时就可以使用Cookies。很多网站 阅读全文
posted @ 2013-02-13 16:00
Tony.J
阅读(493)
评论(0)
推荐(0)
摘要:
目录索引1.Session对象的概述 2.Session对象的属性 3.Session对象的集合 4.Session对象的事件 5.Session对象的方法 6.Session实例一、Session对象的概述1.Session对象的基本概念Session英文意思是:“会话、开会”,这是很基础的了解啦。使用Session对象可以存储不同用户个人会话所需的信息。当用户在Web应用程序的程序之间跳转时,存储在Session的变量不会被清除,而始终存在,只要客户浏览器接入一个Web服务器,在服务器中就会创建一个具有该用户专用ID号的Session对象,在其中可以存放上线... 阅读全文
posted @ 2013-02-13 15:48
Tony.J
阅读(533)
评论(0)
推荐(0)
摘要:
一、文本栏 1、文本栏格式:<input type=”text” name=”栏位名称” value= ”栏位内定值” size=”栏位显示宽度” maxlength=”栏位数据输入最大长度” readonly=”readonly”> 2、密码栏格式:<input type=”password” name=”栏位名称” value=”栏位内定值” size=”栏位显示宽度” maxlength=”栏位数据输入最大长度” readonly=”readonly”> 3、隐藏性栏位:<input type=”hidden” name=”栏位名称” value= ”栏位值 阅读全文
posted @ 2013-02-13 15:43
Tony.J
阅读(146)
评论(0)
推荐(0)
摘要:
一、背景图像的设置 格式:<body background=”URL”>二、图像在网页中的应用 格式:<img src="URL"> 功能:将图片插入到网页中去 <img>下的属性 属性名称 属性值说明src URL 图片的路径 图片的注解 属性名称 属性值说明alt字符串 给图片做注解 图象大小的设置 属性名称 属性值说明 width 图片的宽度height 图片的高度 图象边框的设置 属性名称属性值说明 border图片边框线的粗细 文字图象的排列 属性名称属性值说明 align left图象靠左,文字靠右right 图片靠右,文字靠 阅读全文
posted @ 2013-02-13 15:42
Tony.J
阅读(157)
评论(0)
推荐(0)
摘要:
一、表格的格式<table><tr><th></th></tr><tr><td></td></tr></table>二、和表格有关的属性值 属性名称 属性值说明 border 设置表格的边线的粗细cellspacing表格框线宽度 cellpadding 数据与框线的距离 width 表示表格宽度 height 表示表格高度 align left 表格中数据左对齐(默认) center 表格中数据居中对齐 right 表格中数据右对齐 bgcolor 表格的背景颜色 back 阅读全文
posted @ 2013-02-13 15:40
Tony.J
阅读(227)
评论(0)
推荐(0)
摘要:
排列清单控制标记1、无序号清单<ul>与<li><li>的属性 属性名称 属性值说明 type disc 实心圆(默认值) circle 空心圆 square 实心方块<html><head><title>无序号清单列表</title></head><body><ul><li type="disc">第一条新闻</li><li>第二条新闻</li><li type="circle"& 阅读全文
posted @ 2013-02-13 15:39
Tony.J
阅读(153)
评论(0)
推荐(0)
摘要:
今天开始学习XHTML,虽然以前也制作过网页,但我还是想重温一下。因此借这一空闲的时间重新学习并整理一下HTML的基本知识:一、HTML的基本结构<HTML>----- HTML开始 <HEAD> ----- 头文件开始 <TITLE> </TITLE> -----网页标题 </HEAD> ----- 头文件结束 <BODY> …… ----- 网页显示区域 </BODY></HTML> ----- HTML结束二、常用的HTML标记1、换行 <br>2、段落 <p> < 阅读全文
posted @ 2013-02-13 15:37
Tony.J
阅读(165)
评论(0)
推荐(0)
摘要:
EasyFast开源框架下载链接:DownloadEasyFast框架是一个快速开发框架,包含轻量级ORM模块、非DAL层事务解决方案(更轻松的用现有方法实现事务)、参数化查询解决方案、Web层MVC解决方案。EasyFast说明文档一、查询组件说明:1、简介EasyFast内置了非常灵活的查询方法,即可以拼字符串查询(速度快,安全性差),也可以参数化查询(速度较慢,安全性高)。查询条件可以用于CURD等任何操作,作为where方法的参数传入即可。2、用法:2.1、 拼字符串的方式较简单。相当于直接写where条件的sql语句。//一个典型的查询例子string where = "u 阅读全文
posted @ 2013-02-13 14:57
Tony.J
阅读(388)
评论(0)
推荐(1)
摘要:
上一篇写了将规则的Excel导入到数据库中,这篇写一下将不规则的Excel导入到数据库中。首先看一下Excel的结构:这个Excel的结构明显要复杂的多。读取复杂的Excel结构,往往还要考虑在数据库中的存储结构,接下来从设计对应Excel结构的数据库开始。复杂结构的Excel就是存在的一对多的现象,类似于树状图,上图就可以抽象成树状图:有了抽象成的树状图就可以对应设计数据库存储,以方便日后根据数据库的数据生成相同结构的Excel表格。数据库中的树状关系是通过主外键连接来实现的,根据这个结构,我们需要创建四个表,分别存储parent,child,definite和click的数据,并建立主外键 阅读全文
posted @ 2013-02-13 14:21
Tony.J
阅读(858)
评论(0)
推荐(1)
摘要:
在做项目中,可能会遇到这样的需求,根据数据库里的数据生成相应格式Excel表格。生成的Excel表格不是常规的表格,而是存在合并,宽度不一,长短不一这种需求的。类似于下面的图表:这张图表中存在合并单元格和单元格大小不一的情况,现在通过解析XML生成类似的单元格,解析XML是逻辑分析的过程,根据不同的Excel表格找到不同的规律来解析,主要是调整生成的Excel表格和模板的一致性。解析XML不是难点,难点是生成一样的Excel,当时我遇到了很多困难,这里主要说的也是操作XML而非解析。每个单元格的样式,就是单元格的背景色,边界的颜色,内容是不是水平居中,竖直居中,是由Style控制的Alignm 阅读全文
posted @ 2013-02-13 14:20
Tony.J
阅读(959)
评论(0)
推荐(0)
摘要:
在上一篇博客中写了如何对txt文件进行全文搜索,也阐述了我对lucene.net全文搜索的理解,核心就是提取出各个格式文档的文本内容。这一篇中将写如何获取word、ppt、excel、pdf格式文档的内容。对于lucene.net全文搜索的框架和代码不再赘述,需要请看基于ASP.NET的lucene.net全文搜索(一)还是按照由简到难的顺序来进行。1.首先是读取word文档内容。读取word文档内容,首先要在工程中添加引用Microsoft.Vbe.Interop.dllMicrosoft.Office.Interop.Word.dll其次在代码中添加命名空间using Microsoft. 阅读全文
posted @ 2013-02-13 14:18
Tony.J
阅读(279)
评论(0)
推荐(0)
摘要:
在做项目的时候,需求添加全文搜索,选择了lucene.net方向,调研了一下,基本实现了需求,现在将它分享给大家。理解不深请多多包涵。在完成需求的时候,查看的大量的资料,本文不介绍详细的lucene.net工程建立,只介绍如何对文档进行全文搜索。对于如何建立lucene.net的工程请大家访问lucene.net开发。使用lucene.net搜索分为两个部分,首先是创建索引,创建文本内容的索引,其次是根据创建的索引进行搜索。那么如何对文档进行索引呢,主要是对文档的内容进行索引,关键是提取出文档的内容,按照常规实现,由简到难,提取txt格式的文本相对比较简单,如果实现了提取txt文本,接下来就容 阅读全文
posted @ 2013-02-13 14:17
Tony.J
阅读(282)
评论(0)
推荐(0)
摘要:
1、首先建立一个Default.aspx的主页面,再建立一个站点地图:Web.sitemap2、Default.aspx的主页面的设计<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Menu控件1.Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h 阅读全文
posted @ 2013-02-13 13:53
Tony.J
阅读(258)
评论(0)
推荐(0)
摘要:
博客通常指在web上发布文章,很容易联想到一个穿着睡衣的人在电脑前撰文,记录他每日发生的事情或想法。科技博客不是这样,他用于分享你技术专业内的新收获。重在分享、交流。我们熟悉的科技博客有 美国科技类博客TechCrunch、JoelOnSoftware。作为软件开发者或这软件企业主,我们会编写软件开发过程中的相关主题或软件市场话题。虽然科技博客没有赏心悦目的风景图片或人物照片,但内容会吸引同行业的你。为何要写科技博客?可以传播思想,增进同行交流。开始一个想法,发布出来,交流中获取增进理解,不失为一个很好的做法。比如这篇笔记,就是阅读后的分享,同时通过码字、评论得到更深的理解。更多的帮助,还有, 阅读全文
posted @ 2013-02-13 12:55
Tony.J
阅读(284)
评论(0)
推荐(0)
摘要:
引言根据著名的素数定理:可以相应地推导出第N个素数的渐近公式,如下所示:前一个公式是维基百科上的,后一个公式是《具体数学:计算机科学基础(英文版第2版)》上的,出现在第593页习题9.21答案中。这两个公式大体上相同,只有微小的差异:误差估计项不同,后者的误差估计项要好于前者。最后一项系数不同,前者为 5.5,后者为 5,相差 0.5。那么,到底哪个公式好用呢?测试程序让我们写个 C# 程序来测试一下吧: 1 using System; 2 3 static class PrimeNth 4 { 5 static long[] primes = 6 { 7 2, 29, 54... 阅读全文
posted @ 2013-02-13 12:46
Tony.J
阅读(729)
评论(0)
推荐(0)

浙公网安备 33010602011771号