文档章节

DotNet进阶系列

o
 osc_8gtzj75i
发布于 2018/06/15 11:41
字数 1507
阅读 35
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

一. 回顾历史

   回顾个人发展历程,自2012年初次接触开发至今(2018年)已经有六个年头,这期间陆陆续续学习并掌握了不少技术,C#语言、ORM框架、多线程技术、设计模式、前端技术、MVC、MVVM框架思想等等,每种技术随着多次使用,随着不断的反思,逐渐经历 “了解→理解→掌握→精通 ”这么一个过程,从最初的只能实现功能到如今的“每一步都考虑性能优化问题”,在近两年内,开始写博客,最初只是一时兴起,想让百度上能搜索出我的文章,但现在已经形成一个习惯,在没有特殊事情耽搁的情况下,坚持一周两篇博客,到目前为止,有效文章数已经达到140多篇,当然后面还会陆续写下去。

  作为理科生出身的我,没有华丽的辞藻 ,没有煽情篇章,话不多说,回顾完个人开发历程,下面看一下C#和.Net的发展历程,再次补充一点,.Net不是一门开发语言,而C#才是基于.Net运行环境下的一种高级开发语言。

  

  从上面的表格可以看出来,C#这么语言至今已经接近20年历史了,从2002年诞生的那一刻起,不断更新,不断改进,功能越来越强大,越来越方便程序们的开发,当然.NET类库、CLR、以及开发神器Visual Studio也在不端更新。(VS 2017 宇宙第一开发神器 这个应该毫无争议吧

  之前曾说过,C#仅仅是.Net下的一门开发语言而已,.Net生态远远不止如此。

  

  我们以前提到.Net,指的都是.Net FrameWork,经常被java程序员嘲笑,.Net不能跨平台,但现在不会来,他们可以闭嘴了,.Net Core就是为跨平台而生,下面简单总结一下.Net生态。

  (1) 语言有:C# 、F#、VB

  (2) C/S程序开发技术有:WinForm、WPF

  (3) B/S程序开发技术有:ASP.Net WebForm 、ASP.Net MVC、Core MVC

  (4) 通讯技术有:WebAPI、WCF、SignalR

  (5) 日志框架有:Log4Net

  (6) 数据库访问技术有:ADO.NET 、EF

  这里不再继续列举了,也没有必要再列举了,因为对于新时代合格的工程师而言,没有人限制你只能掌握一种技术,任何一个大型的信息系统,都是有多种技术组合而来,在现在一个大一统的时代,连.Net的生身父母“微软”都开源了,难道小小的你还能故步自封吗?

二. 扫盲C#运行原理

   C#作为一门高级语言,机器是不认识的,那么它是怎么编译成让机器码让机器识别呢,一张图胜似千言万语,请看下图。

  概念补充:

    CTS:C#、F#、VB都必须遵守的通用类型

    CLS:通用语言规范(CLS是CTS的一个子集)

    BCL:基础类库

  总结:C#是一种面向对象的高级编程语言,符合CLR中的CLS(通用语言规范)

  .Net Framework包含三部分:

    1 CLR(windows), .net core的clr支持(windows、linux、macos)

    2 开发工具包

    3 BCL(基础类库)

 

三. 基础进阶系列及章节详细介绍

   最近一直在考虑初学者学习.Net应该从哪学起,上面说的天花乱坠,有什么用呢? 如果连.Net最基础的知识都掌握不了,还谈什么开发呢?

  这里结合我自己的理解,整理出一条较为合适的路线,并对之前的博客重新排版重新改写,形成这个【DotNet进阶篇】系列,一方面方便自己日后复习,另一方面也为.Net社区尽一点绵薄之力。

  

   第一节:从面向对象思想(oo)开发、接口、抽象类以及二者比较 

   第二节:覆写(new)、重写(override)、和重载(overload)

   第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字

   第四节:IO、序列化和反序列化、加密解密技术

   第五节:泛型(泛型类、接口、方法、委托、泛型约束、泛型缓存、逆变和协变)

   第六节:反射(几种写法、好处和弊端、利用反射实现IOC)

   第七节:语法总结(1)(自动属性、out参数、对象初始化器、var和dynamic等)

   第八节:语法总结(2)(匿名类、匿名方法、扩展方法)

   第九节:委托和事件(1)(委托的发展历史、插件式编程、多播委托)

   第十节:委托和事件(2)(泛型委托、Func和Action、事件及与委托的比较)

   第十一节:特性(常见的特性标签、自定义特性、特性的使用案例)

   第十二节:Lambda、linq、SQL的相爱相杀(1)

   第十三节:Lambda、linq、SQL的相爱相杀(2)

   第十四节:Lambda、linq、SQL的相爱相杀(3)

   第十五节:Expression表达式目录树(与委托的区别、自行拼接、总结几类实例间的拷贝)

   第十六节:语法总结(3)(C#6.0和C#7.0新语法)

   第十七节:易混淆的概念(静态和非静态、拆箱和装箱、值传递和引用传递、深拷贝和浅拷贝)(持续更新)

   第十八节:跨域请求的处理方案

   第十九节:CLR核心机制(未完成)

   第二十节:正则表达式(未完成)

   第二十一节:ADO.NET的使用(未完成)

   第二十二节:XXXXXXXXXXXXXXXXXXXXXXXX

   第二十三节:XXXXXXXXXXXXXXXXXXXXXXXX

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 本人才疏学浅,用郭德纲的话说“我是一个小学生”,如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
高性能跨语言 RPC--Hprose

Hprose 是高性能远程对象服务引擎(High Performance Remote Object Service Engine)的缩写 —— 微服务首选引擎。 它是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件...

andot
2012/12/27
6.1W
28
phalapi-进阶篇8(PhalApi能带来什么和进阶篇总结)

phalapi-进阶篇8(PhalApi能带来什么和进阶篇总结) 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 到今天位置PhalApi已经开源一周年了,他从一个不起眼的小框架...

喵了_个咪
2015/12/19
619
6
JCF框架源码分析系列-ArrayList(二)

1、揭开ArrayList真面目 作者将在本文详细赘述日常开发中最常用集合类-ArrayList,本次JCF源码分析基于JDK1.7,主要从以下几个方向分析: UML类图关系 数据结构 接口介绍 常用、重要方法的实...

Ambitor
2015/11/30
384
0
phalapi-进阶篇5(数据库读写分离以及多库使用)

先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 读写分离是我们常用的一种解决方案,它可以解决大量读操作的时候数据库瓶颈的问题,我们在真正开发一个项目的过程...

喵了_个咪
2015/11/24
2.1K
4
iOS9系列专题6——iOS9其他适配注意点

iOS9适配注意点 一、后台定位类app适配点 在iOS8中,APP的定位服务apple就做了一些修改,需要用户申请相应的权限,并在info.plist文件中添加对应的键值。具体的做法在这篇博客中有详细的讲解...

珲少
2015/10/07
3.5K
3

没有更多内容

加载失败,请刷新页面

加载更多

深入分析ES存储原理

es写数据 es写数据的过程 1、客户端选择一个 node 发送请求过去,这个 node 就是 coordinating node(协调节点)。 2、coordinating node 对 document 进行路由,将请求转发给对应的 node(有...

tankXiao
8分钟前
0
0
【1121】shell(下)

【1121】shell(下) 5.39 函数 5.40 shell 数组 数组赋值 数组的删除 数组分片 数组替换 5.39 函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直...

飞翔的竹蜻蜓
9分钟前
0
0
在JavaScript中定义枚举的首选语法是什么? [关闭]

问题: What is the preferred syntax for defining enums in JavaScript? 在JavaScript中定义枚举的首选语法是什么? Something like: 就像是: my.namespace.ColorEnum = { RED : 0,......

技术盛宴
30分钟前
20
0
linux 手动挂载硬盘没有移到回收站解决方法

linux 手动挂载硬盘没有移到回收站解决方法 修改挂载硬盘的文件夹权限为当前用户即可

小熊宝宝
35分钟前
24
0
spring集成kafka

1、引入依赖jar包 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId></dependency> 2、配置kafka信息 spring: kafka: bootstra......

简到珍
38分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部