代码原则
1.职责单一原则,封闭开发原则
2.枚举类型最好不要用 数字表示
3.代码要可配置,可扩展
初级
1.抽象类,接口的区别
抽象类需要被继承,不能实例化,子类必须实现其抽象方法,抽象方法没有方法体,是为了子类不要忘记写某个方法而出现的
接口看成是抽象类的补充(子类实现基类中的所有方法,还可以选择性的实现某些功能)
override :抽象方法,子类要必须重写。虚方法,子类可以不必重写虚方法
2.序列化
序列化通俗的讲就是将一个对象转换成一个字节流的过程,这样就可以轻松的保存在磁盘文件或数据库中。反序列化就是序列化的逆过程,就是将一个字节流换回原来
的对象的过程。
总结:
a,如果是json格式,NewtonSoft.Json最通用(可以处理循环引用),虽然它不是速度最快的。
b,如果是xml格式,就使用.net自带的XmlSerializer。将对象序列化成XML文件
c,如果是二进制格式,就使用.net自带的BinaryFormatter,虽然Protobuf速度很快,但是要加序号很麻烦。
3.XML操作
4.委托和事件的关系
委托是一种类型(可以看出是方法的模板),事件可以看成是委托的一种特殊的实例化;
事件只能在其定义类的内部调用,在外部提供接口供用户绑定方法。而委托可以在外部被实例化,调用。这就是事件与委托对象的唯一区别
委托主要是用来解耦(程序开发要秉承着可扩展思想),无委托无异步。
5.文件操作(Excel)
6.泛型
7. 事务
存储过程和代码中都可以使用事务,要么全部执行成功,要么全都回滚
8. 数据库的操作
ADO.Net 要求会手写
9.Lambla 表达式和linq 表达式
中级
MVC,EF
SQL防注入
反射
多线程(并发),死锁
定时任务(window 提供的定时任务,数据库job,代码控制,适用于定时job || 实时job用服务)
上传图片(web api上传图片和web form 上传图片)
web api身份鉴权-token (JWT)
登录成功后,后台给前端返回一个token值,前端请求接口时候必须要在 头部参数中加这个token值
每次后台收到请求,webapi 的过滤器就过滤一下请求是否合法
登录防止篡改。
http://www.itboth.com/d/V322aq/md5-c
服务
设计模式
工厂模式
IOC(unity,autoFac,推荐使用autoFac)
依赖注入和控制反转其实是一个概念,应用场景是在领域模型(DDD)中使用较多
设计模式,了解
三层架构--适合小型项目
缩减版的DDD模式--现在主流的设计模式
ORM框架
1.EF 框架:
数据库先行--比较适合很小的项目
代码先行--主流使用,建议不要使用EF提供的命令,容易造成数据库数据的丢失
不能使用vs自带的迁移工具原因:https://www.cnblogs.com/ants/p/4037312.html
常用的性能优化功能
缓存,(使用内存,或者Redis缓存、MongoDB数据库,推荐学习redis)
ps: redis或者 mongodb 适用于简单的sql场景,mongodb查询功能更加强大些
应用场景:高并发
索引---重点
数据库磁盘分区
帮助类/包
log --日志类(复杂的日志记载,推荐使用 log.net)
JSON.NET --实现json的序列化和反序列化,推荐使用NewtonSoft
System.Web.HttpUtility --用于提供URL字符串编码和解码
swagger 包--webapi 说明文档