如何从零开始学习C#
来源:互联网 发布:mac wifi不能上网 编辑:程序博客网 时间:2024/05/21 20:46
多造轮子,实际编码为主,理论学习为辅。
这个太抽象了,举个具体例子吧,够让你干上一年了。
比如,以做爬虫为例子。
可以分成下面几个阶段。
第一版:单页面读取
目标:写一个控制台程序,可以从网络上读取一个指定页面的HTML内容。并输出到控制台
作用:练习语法,理解类库阶段,比如属性HTTP相关的类的操作,String类的操作,控制台操作
第二版:.2层页面读取
目标:在前面的基础上,读取到一个页面之后,用正则操作分析出其中的URL地址,读取第二层页面
作用:可以学习正则,数组操作。
第三版:.N层页面读取
目标:在前面的基础上,读取N层网页。
作用:可以学习递归,异常处理(N层页面,总会遇到访问不到的无效链接的),以及循环读取控制的问题(重复访问首页:从首页出发爬行,子页面再次指向首页的问题)。
程序做到这里,基本上就是慢如乌龟了。然后就是考虑加速
第四版:.N层页面单线程读取
目标:在前面的基础上,把访问HTML部分代码放置到一个线程中,并和前面的结果保持一致
作用:可以学习代码重构(因为功能要保持前面一个版本完全一样,只是改成线程操作),线程相关的类库
第五版:.N层页面,多线程读取
目标:使用多线程来同步读取网页内容,并解析之后,放入到待解析队列中。
作用:学习多线程操作,线程同步概念,以及同步操作。
这时候运行速度飞快,但是内存消耗也飞快。于是会就会有第六版本
第六版.N层页面,多线程读取,存入数据库
目标:在前面的基础上,把读取的内容保存到数据库中
作用,数据库读写操作学习。
第七版:增加控制界面
目标:运行过程中有些参数,比如线程数,爬行深度这些参数需要一个界面来控制。还有一些运行数据,比如抓取数目,错误数目,队列长度等需要在界面上直观的显示出来。这都需要把控制台的程序,改成UI界面的。
作用:学习UI开发,以及线程和UI的交互。
基本上到了这里,如果按这个来操作,C#的学习结束了,完全过关。
当然在这个过程会遇到不少问题,多看帮助文档,多看书,多google,少百度。
这个太抽象了,举个具体例子吧,够让你干上一年了。
比如,以做爬虫为例子。
可以分成下面几个阶段。
第一版:单页面读取
目标:写一个控制台程序,可以从网络上读取一个指定页面的HTML内容。并输出到控制台
作用:练习语法,理解类库阶段,比如属性HTTP相关的类的操作,String类的操作,控制台操作
第二版:.2层页面读取
目标:在前面的基础上,读取到一个页面之后,用正则操作分析出其中的URL地址,读取第二层页面
作用:可以学习正则,数组操作。
第三版:.N层页面读取
目标:在前面的基础上,读取N层网页。
作用:可以学习递归,异常处理(N层页面,总会遇到访问不到的无效链接的),以及循环读取控制的问题(重复访问首页:从首页出发爬行,子页面再次指向首页的问题)。
程序做到这里,基本上就是慢如乌龟了。然后就是考虑加速
第四版:.N层页面单线程读取
目标:在前面的基础上,把访问HTML部分代码放置到一个线程中,并和前面的结果保持一致
作用:可以学习代码重构(因为功能要保持前面一个版本完全一样,只是改成线程操作),线程相关的类库
第五版:.N层页面,多线程读取
目标:使用多线程来同步读取网页内容,并解析之后,放入到待解析队列中。
作用:学习多线程操作,线程同步概念,以及同步操作。
这时候运行速度飞快,但是内存消耗也飞快。于是会就会有第六版本
第六版.N层页面,多线程读取,存入数据库
目标:在前面的基础上,把读取的内容保存到数据库中
作用,数据库读写操作学习。
第七版:增加控制界面
目标:运行过程中有些参数,比如线程数,爬行深度这些参数需要一个界面来控制。还有一些运行数据,比如抓取数目,错误数目,队列长度等需要在界面上直观的显示出来。这都需要把控制台的程序,改成UI界面的。
作用:学习UI开发,以及线程和UI的交互。
基本上到了这里,如果按这个来操作,C#的学习结束了,完全过关。
当然在这个过程会遇到不少问题,多看帮助文档,多看书,多google,少百度。
就酱!
原文:http://www.zhihu.com/question/26480901
0 0
- 如何从零开始学习C#
- 从零开始学习C#
- 如何从零开始学习JavaEE
- 如何从零开始学习JavaEE
- 如何从零开始学习JavaEE
- 如何从零开始学习Ruby
- 如何从零开始学习DIV+CSS
- 如何从零开始学习DIV+CSS
- 如何从零开始学习DIV+CSS
- 如何从零开始学习Java语言
- C#从零开始学习笔记《励志篇》
- 从零开始学习
- C# 如何学习
- 如何学习C#
- 如何学习C#
- 从零开始学习Gradle之二---如何使用Task
- 从零开始学习Gradle之二---如何使用Task
- 71. mybatis 如何获取插入的id【从零开始学习SpirngBoot】
- Ubtuntu 14.04 下通过 apt-get 安装 JDK 7.0
- 4.18
- 【练习】面向对象系列(001)——泳池
- action接收请求参数
- PreparedStatement和Statement区别
- 如何从零开始学习C#
- JS闭包学习笔记
- 学习mybatis 的一点心得
- 第六天面向对象
- leetcode : count and say
- freeshell探索日记-预装软件
- noexcept异常说明
- android常见面试题与我自己的回答 (二)
- 深入理解GC ——MinorGC\MajorGC\FullGC