自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (18)
  • 问答 (1)
  • 收藏
  • 关注

原创 博客目录

算法监督学习线性回归局部加权线性回归逻辑回归线性判别分析感知机k近邻支持向量机神经网络朴素贝叶斯决策树非监督学习半监督学习增强学习推荐系统推荐系统笔记Michael Nielsen《神经网络与深度学习》第1章 使用神经网络识别手写数字第2章...

2018-02-28 00:41:42 463

原创 读论文

文本分类相关:《Convolutional Neural Networks for Sentence Classification》,CNN文本分类经典论文《A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification》,C...

2018-05-13 00:10:41 581

原创 遗传编程python工具包

deap和gplearndeap document:http://deap.readthedocs.io/en/master/index.html gplearn document:http://gplearn.readthedocs.io/en/latest/index.html推荐deap

2018-04-15 22:10:41 3172

原创 关于遗传算法

摘自:https://www.zhihu.com/question/23293449什么是遗传算法呢? 简单地说,遗传算法是一种解决问题的方法。它模拟大自然中种群在选择压力下的演化,从而得到问题的一个近似解。 实际上,在生活和生产中,很多时候并不需要得到一个完美的答案;而很多问题如果要得到完美的答案的话,需要很大量的计算。所以,因为遗传算法能在相对较短的时间内给出一个足够好能凑合的答案。 ...

2018-04-14 14:43:29 707

原创 关于dropout

理解dropout:dropout强迫一个神经单元,和随机挑选出来的其他神经单元共同工作,达到好的效果。dropout消除减弱了神经元节点间的联合适应性,增强了泛化能力。对于一个有N个节点的神经网络,有了dropout后,就可以看做是2n2n2^n个模型的集合了,但此时要训练的参数数目却是不变的,这就解脱了费时的问题。dropout其实都相当于增加了样本。经过交叉验证,隐含节点d...

2018-03-11 22:07:34 490

原创 关于Softmax求导

这篇文章讲的笔记透彻,先记下来。 https://www.jianshu.com/p/ffa51250ba2e

2017-12-31 16:52:55 666

原创 关于Batch Normalization

关于Batch Normalization,个人看到的目前最好的两篇博客:http://blog.csdn.net/hjimce/article/details/50866313https://kratzert.github.io/2016/02/12/understanding-the-gradient-flow-through-the-batch-normalization-layer.ht

2017-12-25 22:25:16 393

原创 cs231n笔记之我的笔记4

卷积神经网络与常规神经网络不同,卷积神经网络的各层中的神经元是3维排列的:宽度、高度和深度。平均汇聚历史上比较常用,但是现在已经很少使用了。因为实践证明,最大汇聚的效果比平均汇聚要好。很多人不喜欢汇聚操作,认为可以不使用它。比如在Striving for Simplicity: The All Convolutional Net一文中,提出使用一种只有重复的卷积层组成的结构,抛弃汇聚层。通过在卷积层

2017-12-01 00:05:45 258

原创 cs231n笔记之我的笔记3

神经网络笔记非线性函数在计算上是至关重要的,如果略去这一步,那么两个矩阵将会合二为一,对于分类的评分计算将重新变成关于输入的线性函数。 在SVM/Softmax的例子中,正则化损失从生物学角度可以看做逐渐遗忘,因为它的效果是让所有突触权重w在参数更新过程中逐渐向着0变化。常用激活函数SigmoidSigmoid函数饱和使梯度消失。在反向传播的时候,这个(局部)梯度将会与整个损失函数关于该门单元输出

2017-11-26 20:48:40 1183

原创 cs231n笔记之我的笔记2

最优化笔记最优化是寻找能使得损失函数值最小化的参数W的过程。策略1:随机搜索既然确认参数集W的好坏蛮简单的,那第一个想到的(差劲)方法,就是可以随机尝试很多不同的权重,然后看其中哪个最好。如果问题转化为:对一个权重矩阵集W取优,使其损失值稍微减少。那么问题的难度就大大降低了。换句话说,我们的方法从一个随机的W开始,然后对其迭代取优,每次都让它的损失值变得更小一点。策略2:随机本地搜索每走一步都尝试几

2017-11-25 23:36:17 304

原创 cs231n笔记之我的笔记1

CS231n课程资源主要由授课视频与PPT,授课知识详解笔记和课程作业三部分组成。图像分类笔记图像分类的困难:视角变化(Viewpoint variation):同一个物体,摄像机可以从多个角度来展现。大小变化(Scale variation):物体可视的大小通常是会变化的(不仅是在图片中,在真实世界中大小也是变化的)。形变(Deformation):很多东西的形状并非一成不变,会有很大变化。

2017-11-25 17:45:39 363

原创 李理:极客头条深度学习系列文章笔记

目前人工智能应该更多的提高现有产品。 Image Caption Generation任务是给定一张图片,需要让计算机用一句话来描述这张图片。Caption Generation相对于之前的task来说需要更加深入“理解”图片中物体之间的关系,甚至包括一些抽象的概念。它把一幅信息量极大的图片压缩成短短一句话。

2017-11-24 00:47:22 1419

原创 Quora Question Pairs

官方比赛链接:https://www.kaggle.com/c/quora-question-pairshere is some tips:pandas读取数据的问题dataframe=pd.read_csv('csvfile')question1=list(dataframe['question1'])question1中某些数据会被转换为float格式,需要转为str格式。加上下面这句:que

2017-11-15 03:07:46 2297

原创 日文分词工具Mecab用于中文分词

参考文章:Mecab安装过程中的一些坑用MeCab打造一套实用的中文分词系统用MeCab打造一套实用的中文分词系统(二)用MeCab打造一套实用的中文分词系统(三):MeCab-Chinese日文分词器 Mecab 文档

2017-10-29 21:59:31 3668

原创 关于分词

分词原理首先建立分词词典,然后遍历的句子中所有相邻的两个字、三个字、四个、字甚至五个六个字,看词典中是否存在相应的词,如果存在,便作为一个词。假如该句这样分完词后没有产生分词冲突的情况,那么则认为分词结束;如果冲突,则要选择概率最大的分词方案。大部分情况下,分词过程中产生冲突的句子非常多,那么该选择哪种分词的方案呢? 利用语料库建立的统计概率,对于一个句子,我们就可以通过计算各种分词方法对应的联合

2017-10-29 02:40:27 1152

原创 关于条件随机场

条件随机场条件随机场的三种实现:CRF++CRFsuiteCRFsgdCRF++安装过程中的几个坑:使用CRF++53,CRF++54好像有点儿问题;安装时需要有gcc,g++;make时,报错“‘size_t’ has not been declared ”,需要在node.cpp文件及其他使用‘size_t’的文件中加入 #include “stdlib.h” 。原因大致是ub

2017-10-21 01:48:16 1033

原创 关于新词发现

本笔记摘自:http://www.matrix67.com/blog/archives/5044概述挖掘新词的传统方法是,先对文本进行分词,然后猜测未能成功匹配的剩余片段就是新词。这似乎陷入了一个怪圈:分词的准确性本身就依赖于词库的完整性,如果词库中根本没有新词,我们又怎么能信任分词结果呢? 一种大胆的想法是,首先不依赖于任何已有的词库,仅仅根据词的共同特征,将一段大规模语料中可能成词的文本片段全

2017-10-16 19:50:01 1037

原创 数学之美笔记3

第16章 信息指纹及其应用信息指纹爬虫中记录下载过的网页链接可以使用一个函数,将网址映射到固定长度的二进制中(信息指纹)。 产生信息指纹的关键算法:伪随机数产生器算法,就是将一个数的平方掐头去尾,取中间几位数。如1001(相当于十进制的9),平方是01010001(相当于十进制的81),掐头去尾,剩下中间4位0100。当然这种方法产生的指纹很可能相同,所以现在常用梅森旋转算法。信息指纹的用途集合

2017-09-28 01:51:30 531

原创 数学之美笔记2

第7章 贾里尼克和现代语言处理小学生和中学生其实没有必要花那么多时间读书,而他们的社会经验、生活能力以及在那时树立的志向都将帮助他们的一生。中学阶段花很多时间比同伴多读的课程,上大学以后用很短的时间就能读完,因为大学阶段,人的理解能力要强的多。学习是持续一辈子的过程。书本的内容可以早学,也可以晚学,但是错过了成长阶段却是无法补回来的。一个人想要在自己的领域做到世界一流,他的周围必须有非常多

2017-09-28 01:17:45 367

原创 数学之美笔记1

第3章 统计语言模型数学的精彩之处就在于简单的模型可以干大事。 数学的魅力就在于将复杂的问题简单化。什么是大数定律?大数定律是指在随机试验中,每次出现的结果不同,但是大量重复试验出现的结果的平均值却几乎总是接近于某个确定的值。 其原因是,在大量的观察试验中,个别的、偶然的因素影响而产生的差异将会相互抵消,从而使现象的必然规律性显示出来。例如,观察个别或少数家庭的婴儿出生情况,发现有的生男,有的生

2017-09-26 00:29:27 1702

原创 卷积神经网络——DenseNet

网络结构稠密连接:每层以之前层的输出为输入,对于有L层的传统网络,一共有L个连接,对于DenseNet,则有L(L+1)/2。论文主要参考了Highway Networks,Residual Networks (ResNets)以及GoogLeNet,通过加深网络结构,提升分类结果。加深网络结构首先需要解决的是梯度消失问题,解决方案是:尽量缩短前层和后层之间的连接。比如上图中,H4层可以直接用到原始

2017-09-15 00:30:34 1672

原创 卷积神经网络——ResNeXt

网络结构提出来 cardinality 的概念,在上图左右有相同的参数个数,其中左边是 ResNet 的一个区块,右边的 ResNeXt 中每个分支一模一样,分支的个数就是 cardinality。所谓 split-transform-merge 是指通过在大卷积核层两侧加入 1x1 的网络层,控制核个数,减少参数个数的方式。而 repeat layer 则是指重复相同的几层,前提条件是这几层的输出

2017-09-15 00:22:03 4920

原创 卷积神经网络——Wide ResNet

网络结构原始的ResNet如果(a)和(b)所示,(b)是使用了bottleneck的residual block,而(c)和(d)便是WRN这篇paper的作者提出的架构。他认为一味的增加深度并不是最有效的方法,residual block的宽度对网络性能的提升更有帮助。所以他考虑增加每一层的宽度。当网络层 depth 数较浅,或者宽度 k 较小时,网络还不需要加dropout,但是当层数增加,宽

2017-09-15 00:03:33 7326

原创 卷积神经网络——ResNet

残差网络结构及理解输入为 x ,需要拟合的结果(输出)为 H(x) 。 那么我们把输出差分为 x+y ,也就是 H(x)=x+y,再令 y=F(x) ,意思是 y 也是由 x 拟合而来,那么最后的输出就变为 H(x)=x+F(x),x 本来就是输入,所以我们就只需要拟合 F(x) 就好了。其实也很明显,通过求偏导我们就能看到: ∂XL∂Xl=∂Xl+F(Xl,Wl,bl)∂Xl=1+∂F(XL,

2017-09-14 23:55:56 4238

原创 卷积神经网络——VGG

卷积核全部使用3×3卷积核,3×3可以表示每个单元周围相邻的所有单元。

2017-09-14 22:56:17 738

原创 卷积神经网络——Network In Network

Network In NetworkNetwork In Network改进了传统的CNN网络,采用了少量的参数就松松击败了Alexnet网络,Alexnet网络参数大小是230M,采用这篇paper的算法才29M,减小了将近10倍。MLP卷积层(文献创新点1)Mlpconv层可以看成是每个卷积的局部感受野中还包含了一个微型的多层网络。 说的简单一点呢,利用多层mlp的微型网络,对每个局部感受野的

2017-09-12 01:35:12 1248

原创 卷积神经网络——LeNet-5

一种典型的用来识别数字的卷积网络是LeNet-5。当年美国大多数银行就是用它来识别支票上面的手写数字的。能够达到这种商用的地步,它的准确性可想而知。LeNet-5输入图像为32*32。比Mnist数据库的字母还要大。这样做的原因是希望潜在的明显特征如笔画断电或角点能够出现在最高层特征监测子感受野的中心。卷积运算一个重要的特点就是,通过卷积运算,可以使原信号特征增强,并且降低噪音。 层名称 输

2017-09-11 23:16:05 1037

原创 keras中文文档笔记17——将Keras作为tensorflow的精简接口

将Keras作为tensorflow的精简接口在tensorflow中调用Keras层让我们以一个简单的例子开始:MNIST数字分类。我们将以Keras的全连接层堆叠构造一个TensorFlow的分类器,import tensorflow as tfsess = tf.Session()from keras import backend as KK.set_session(sess)然后,我们开

2017-08-20 22:47:59 9378

原创 keras中文文档笔记16——使用预训练的词向量

什么是词向量?“词向量”(词嵌入)是将一类将词的语义映射到向量空间中去的自然语言处理技术。即将一个词用特定的向量来表示,向量之间的距离(例如,任意两个向量之间的L2范式距离或更常用的余弦距离)一定程度上表征了词之间的语义关系。由这些向量形成的几何空间被称为一个嵌入空间。理想的情况下,在一个良好的嵌入空间里,从“厨房”向量到“晚餐”向量的“路径”向量会精确地捕捉这两个概念之间的语义关系。在这种情况下,

2017-08-20 22:42:29 5737

原创 keras中文文档笔记15——面向小数据集构建图像分类模型

对数据科学家而言,我们应该有能够榨取少量数据的全部价值的能力,而不是简单的伸手要更多的数据。针对小数据集的深度学习我经常听到的一种说法是,深度学习只有在你拥有海量数据时才有意义。虽然这种说法并不是完全不对,但却具有较强的误导性。当然,深度学习强调从数据中自动学习特征的能力,没有足够的训练样本,这几乎是不可能的。尤其是当输入的数据维度很高(如图片)时。然而,卷积神经网络作为深度学习的支柱,被设计为针对

2017-08-20 21:35:06 1023

原创 keras中文文档笔记14——花式自动编码器

什么是自动编码器(Autoencoder)?自动编码器是一种数据的压缩算法,其中数据的压缩和解压缩函数是:1)数据相关的,2)有损的,3)从样本中自动学习的。在大部分提到自动编码器的场合,压缩和解压缩的函数是通过神经网络实现的。1)自动编码器是数据相关的(data-specific 或 data-dependent),这意味着自动编码器只能压缩那些与训练数据类似的数据。自编码器与一般的压缩算法,如M

2017-08-20 20:55:34 2136

原创 keras中文文档笔记13——解释CNN的滤波器

使用的神经网络是VGG-16,数据集为ImageNet。第一层的滤波器主要完成方向、颜色的编码,这些颜色和方向与基本的纹理组合,逐渐生成复杂的形状。可以观察到,很多滤波器的内容其实是一样的,只不过旋转了一个随机的的角度(如90度)而已。这意味着我们可以通过使得卷积滤波器具有旋转不变性而显著减少滤波器的数目,这是一个有趣的研究方向。我们的网络认为是喜鹊的东西看起来完全不是喜鹊,往好了说,这个图里跟喜鹊

2017-08-20 20:00:22 1259

原创 keras中文文档笔记12——协助使用Keras

预训练模型Application应用Kera的应用模块Application提供了带有预训练权重的Keras模型,这些模型可以用来进行预测、特征提取和finetune模型的预训练权重将下载到~/.keras/models/并在载入模型时自动载入可用的模型应用于图像分类的模型,权重训练自ImageNet: Xception VGG16 VGG19 ResNet50 * InceptionV3所有的这些

2017-08-20 19:27:08 5691

原创 keras中文文档笔记11——网络配置

损失函数model.compile(loss='mean_squared_error', optimizer='sgd')可用的目标函数mean_squared_error或msemean_absolute_error或maemean_absolute_percentage_error或mapemean_squared_logarithmic_error或mslesquared_hinge

2017-08-19 11:52:20 2890

原创 keras中文文档笔记10——数据预处理

序列预处理填充序列pad_sequenceskeras.preprocessing.sequence.pad_sequences(sequences, maxlen=None, dtype='int32', padding='pre', truncating='pre', value=0.)将长为nb_samples的序列(标量序列)转化为形如(nb_samples,nb_timesteps

2017-08-19 11:18:35 3444

原创 keras中文文档笔记9——关于keras层

概述所有的Keras层对象都有如下方法:layer.get_weights():返回层的权重(numpy array)layer.set_weights(weights):从numpy array中将权重加载到该层中,要求numpy array的形状与layer.get_weights()的形状相同layer.get_config():返回当前层配置信息的字典,层也可以借由配置信息重构lay

2017-08-19 10:47:09 21505

原创 keras中文文档笔记8——函数式模型

函数式模型函数式模型称作Functional,但它的类名是Model,因此我们有时候也用Model来代表函数式模型。Keras函数式模型接口是用户定义多输出模型、非循环有向模型或具有共享层的模型等复杂模型的途径。一句话,只要你的模型不是类似VGG一样一条路走到黑的模型,或者你的模型需要多于一个的输出,那么你总应该选择函数式模型。函数式模型是最广泛的一类模型,序贯模型(Sequential)只是它的一

2017-08-19 01:52:42 1029 1

原创 keras中文文档笔记7——序贯模型

序贯模型构建模型序贯模型是多个网络层的线性堆叠,也就是“一条路走到黑”。可以通过向Sequential模型传递一个layer的list来构造该模型:from keras.models import Sequentialfrom keras.layers import Dense, Activationmodel = Sequential([Dense(32, units=784),Activa

2017-08-19 01:52:06 666

原创 keras中文文档笔记6——使用陷阱

TF卷积核与TH卷积核Keras提供了两套后端,Theano和Tensorflow,所以如果你想使用一个已有网络,或把一个用th/tf 训练的网络以另一种后端应用,在载入的时候你就应该特别小心了。卷积核与所使用的后端不匹配,不会报任何错误,因为它们的shape是完全一致的,没有方法能够检测出这种错误。在使用预训练模型时,一个建议是首先找一些测试样本,看看模型的表现是否与预计的一致。如需对卷积核进行转

2017-08-19 01:23:07 2377

原创 keras中文文档笔记5——快速开始

快速开始Keras的核心数据结构是“模型”,模型是一种组织网络层的方式。Keras中主要的模型是Sequential模型,Sequential是一系列网络层按顺序构成的栈。你也可以查看函数式模型来学习建立更复杂的模型。Sequential模型如下:from keras.models import Sequentialmodel = Sequential()将一些网络层通过.add()堆叠起来,就构

2017-08-19 01:15:37 494

C#多线程进度条示例源码下载

C#使用委托和事件写的,一个多线程进度条的Demo。

2016-09-18

AE的MapControl直接加载Oracle数据(C#)

C#写的,AE的MapControl可以直接加载Oracle数据(C#),最主要的是,不用安装sde,也不用安装Oracle客户端。

2016-09-01

shp导入导出Oracle(C#)

C#写的使用,包括的功能有: 1.OGR读取shp(本地或者Oracle)中的属性信息,包括获取Layer,Feautre,FeatureCount,GeometryType,FieldValue,WktCoordiante等等; 2.读取本地shp上传到Oracle(OGR的CopyLayer和SQL语句两种方法上传); 3.读取本地shp对Oracle中的数据进行更新; 4.从数据库中下载本地shp; 5.坐标转换,投影变换等其他功能。

2016-09-01

shp2sdo.exe

shp导入Oracle的小工具,方便实用。

2016-09-01

C#连接Oracle10g,11g所需的DLL(无需安装Oracle客户端,版本二)

解决“Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常这种错误。原因是由于服务器与客户端Oracle版本不一致。该dll包括了C#连接Oracle所需的DLL,不必再安装Oracle客户端,Win7 32位亲测可用,可连接Oracle11g、10g服务器。共两个版本(此为版本二),都可以使用。

2015-09-19

C#连接Oracle10g,11g所需的DLL(无需安装Oracle客户端,版本一)

解决“Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常这种错误。原因是由于服务器与客户端Oracle版本不一致。该dll包括了C#连接Oracle所需的DLL,不必再安装Oracle客户端,Win7 32位亲测可用,可连接Oracle11g、10g服务器。共两个版本(此为版本一),都可以使用。

2015-09-19

C#入门经典2010全部源码

C# 入门经典 2010 全部源码 Beginning Visual C# 2010 rar Chapter02 27 完整版 包括书中3 26全部的源码

2013-10-13

C# 2005 入门经典 全部源码

C# 入门经典 2005 源码 Beginning Visual C# 2005.rar Chapter02——30 完整版,包括书中2——30全部的源码、错误纠正和课后练习的源码答案。

2013-10-11

C# 入门经典 2012 源码

C# 入门经典 2012 源码 Beginning Visual C# 2012 Programming.rar Chapter03——26 完整版,包括书中3——26全部的源码。

2013-10-11

C#对XML的操作.rar

C#对Xml的基本操作 包括有:XML节点的创建,为节点添加属性(两种方法);不需要创建节点,添加属性或者文本节点等;读取XML文件(五种方法)。 以上代码在程序包中均已实现。 开发环境:VS2010,如果是2008的版本,建议直接复制粘贴代码还有XML文件。

2013-10-06

C#对Xml的操作

C#对Xml的基本操作 包括有:XML节点的创建,为节点添加属性(两种方法);不需要创建节点,添加属性或者文本节点等;读取XML文件(五种方法)。 以上代码在程序包中均已实现。 开发环境:VS2010,如果是2008的版本,建议直接复制粘贴代码还有XML文件。

2013-10-06

C#窗体进度条

C#写的窗体进度条。 点击开始按钮,进度条开始,没有百分比,进度条可以一直循环,如果进度走到结尾就重新开始进度条。 点击停止按钮,进度条停止进行。 两个Label,两个按钮,简单的进度条,可以插入到任意的程序中。

2013-10-04

3sdnMap.rar

《ArcGIS Engine+C#实例开发教程》 网址:http://www.gissky.net/Article/1554.htm 照着里边的步骤一步步做的,功能均已实现。 ArcEngine中基本的功能都包含在里边,很适合初学者入门学习。 的确是学习ArcEngine的好资源。 开发环境:VS2008,ArcEngine9.3

2013-10-03

ASP.NET上传FTP真的进度条,文件流形式上传

C#写的ASP.NET上传到FTP上,文件,文件夹都可以。 首先,选择本地文件或者文件夹,然后点击上传按钮以后,有一个压缩过程,该过程也有一个实时更新的进度条,并可以显示压缩所需的实时更新的剩余时间,压缩完成以后上传,上传也是有一个实时更新的进度条,显示剩余上传所需时间。上传完成以后显示压缩的时间、上传的时间和总共所需的时间。 根据文件流上传,根据文件流进度做的进度条,是真的实实在在的进度条。 代码都有详细的注释,例如: private string ftpUser = "Administrator"; //ftp用户名 private string ftpPassword = "123456"; //ftp密码 public TimeSpan t; //加载进度条总时间 private DateTime startTotalTimeFtp = System.DateTime.Now; private DateTime endTotalTimeFtp = System.DateTime.Now; //压缩用时(为传值做准备) //public TimeSpan zipTime; //定义开始时间、结束时间和之间的时间段,以此来估计完成所需剩余时间 DateTime startTime = System.DateTime.Now; DateTime endTime = System.DateTime.Now; TimeSpan TimeSp; //定义剩余时间 string surPlusTime = string.Empty; //判断是否小于1秒所用 int Ti = 0; //实例化类TimeSpanClass TimeSpanClass timeSpanClass = new TimeSpanClass(); 进度条可以实时动态更新,显示剩余时间,剩余时间也跟随进度条实时动态更新,上传完成显示上传时间。 再次声明,版权所有(花费本人好几个月的心血研究真实的进度条),保证进度条为真正按照文件流的进度所进行,如有问题,可与本人联系!

2013-09-12

我的第一个学生信息管理系统

菜鸟上路,做的第一个学生信息管理系统,里面包括所有的源代码,整个系统都有,第一次独立完成的系统。包括登陆,修改用户名密码,添加,查找,更新,删除学生信息,仅供学习参考!

2013-03-15

C#从入门到实践

C#从入门到实践,源码完整版,共27章,源码,郑耀东 清华大学出版社

2013-01-20

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除