概述

该专栏记录了我学习.NET (C#)的笔记

参考

目录

数据结构

线性表

线性表是由若干个数据元素/节点组成的有限序列

线性表 数组 链表
逻辑结构 连续 连续
内存空间 连续 非连续
内存占用
访问操作 O(1) O(n)
添加操作 O(n) O(1)
删除操作 O(n) O(1)

列表最显著的特征就是大小可变,作为一种更抽象的数据结构,列表可以用数组或链表实现。因此,在使用列表的时候,通常不需要考虑容量的限制问题。

但列表的缺点也很明显:如果是数组的实现,则会出现内存浪费的问题;如果是链表的实现,则在访问元素时会有一定的性能损耗。

现代的高级语言中,通常都会提供列表的实现,比如C#中的List<T>

  • 数组 即 System.Array
  • 链表 即 System.Collections.Generic.LinkedList
  • 列表 即 System.Collections.Generic.List
相关文档

栈和队列

栈是先入后出的,队列是先入先出的,仅此而已。

  • 即 System.Collections.Generic.Stack
  • 队列 即 System.Collections.Generic.Queue
相关文档

哈希表

哈希表(散列表)存储了许多键值对以实现极快的数据查询操作。

二叉树

  • 堆的实现和基本操作
  • 建堆

  • 图的概念
  • 最小生成树
  • 图的实现方法
  • 图的遍历

基础算法

查找

  • 顺序查找与哈希优化
  • 二分查找

排序

  • 选择、冒泡和插入排序
  • 快速排序
  • 桶排序

面向对象

基本概念

  • 封装
  • 继承
  • 多态

设计原则

  • SOLID
  • 依赖关系注入

设计模式

设计模式只是一种软件设计中的经验之谈,死记硬背是行不通也用不上的。

当遇到对应场景(如DI/IoC与单例模式)时,才会领会到它的好处。

创建型模式
  • 抽象工厂
  • 生成器
  • 工厂方法
  • 原型
  • 单例
结构型模式
  • 适配器
  • 桥接
  • 组合
  • 装饰
  • 外观
  • 享元
  • 代理
行为模式
  • 责任链
  • 命令
  • 迭代器
  • 中介者
  • 备忘录
  • 观察者
  • 状态
  • 策略
  • 模板方法
  • 访问者
依赖注入
  • 常见依赖注入库使用
  • 生命周期管理

高级 .NET

概念补充

  • 逆变与协变
  • 迭代器

类型

  • 有关 .NET 的六个重要概念 值类型,引用类型,装箱和拆箱等
  • ref, outparams 传参
  • 浅复制与深复制
  • 泛型的约束
  • 使用 Lazy 以延迟初始化
  • 扩展方法

垃圾回收

  • GC介绍,代(Generation)和机制
  • GC通知机制
  • GC配置与调优
  • using 关键字与对象释放
  • 常见的内存泄漏

字符串处理

  • StringBuilder
  • 字符串与字节数组的转换和应用
  • 字符串驻留池

LINQ

  • 简介
  • 类型处理
  • 筛选与投影
  • 去重、差集、交集与并集
  • 排序操作
  • 限定符
  • 数据分区和分组
  • 数据类型转换
  • 联接操作

多线程与异步

  • 异步简介与使用场景
  • 同步锁
  • Task 并行库
  • 并行 LINQ
  • 线程安全集合
  • CancellationToken
  • Background Worker

委托与事件

  • 委托介绍与基本使用
  • 匿名委托
  • 多播委托
  • 事件介绍与基础操作
  • 接口与事件

安全与加密

  • 在 .NET 中如何使用不同的加密方式
  • 证书管理与SSL/TLS

特性

  • 特性的用途
  • 常用内置特性
  • 自定义特性

反射

  • 反射概述与用途
  • 获取运行时类型信息
  • 动态加载并使用类型
  • 反射的性能问题

序列化

JSON
  • JSON 介绍
  • 序列化
  • 反序列化
  • 相关特性与自定义属性
  • JSON 安全性
  • JSON 与 AOT 支持
XML
  • XML 介绍
  • 序列化与反序列化

  • Stream
  • FileStream
  • MemoryStream
  • GZipStream

动态编程与可视化树

  • 表达式树
  • 编译时与运行时的动态行为

平台调用

  • 平台调用介绍
  • DllImport
  • LibraryImport
  • 本机库加载
  • 平台调用安全性

Unsafe 与 Span

  • 指针
  • fixed 关键字
  • Span
  • Memory
  • ArrayPool 与 MemoryPool