asp.net core learn
.NET Core WebApi
RESTful规范
接口版本控制
- Support multiple versions of ASP.NET Core Web API
- ASP.NET Core API 版本控制
- 配置使用流程
- 使用方法
- Startup类ConfigureServices方法中加入services.AddApiVersioning()
- Startup类Configure方法中加入app.UseApiVersioning()
- 控制器或接口上面应用添加ApiVersion("1.0")特性。
- 访问形式
- 通过查询字符串方式实现访问,具体格式:
api/values?api-version=1.0 - 通过重写接口路由方式实现访问,路由修改为:[Route("api/v{version:apiVersion}/[controller]")];具体格式:
api/v1/values - 通过Header指定字段实现访问。
- 通过查询字符串方式实现访问,具体格式:
- 使用方法
Swagger
跨域策略
依赖注入
数据库
事务特性
- 持久性:事务一旦被提交,那么数据一定会被写入到数据库中并持久储存起来。
- 原子性:每个事务可能由多个操作构成,但把事务本身看作操作的最小单位,一个事务中的操作不可能同时存在成功和失败两种状态,要么全部成功,否则恢复到事务执行之前状态。
- Active 事务的初始状态,表示正在执行。
- Partially Commited 部分执行,或者说在最后一条语句执行后。
- Failed 发现操作异常,事务无法继续执行后。
- Commited 成功执行整个事务。
- Aborted 事务被回滚,数据库恢复到执行前状态后。
- 一致性:事务执行前后数据都满足数据完整性约束,完整性约束可能包括主键约束、外键约束、用户自定义约束。事务内部操作执行过程中可能不满足完整性约束,但一致性强调事务执行前后是否满足,忽略中间过程。
- 隔离性:一个事务所做的修改对其他事务不可见。
事务隔离级别
- 读未提交
READ UNCOMMITTED事务中数据更改未提交也对其他事务可见。- 脏读
- 不可重复读
- 幻读
- 更新丢失
- 读已提交
READ COMMITTED事务中数据更改已提交对其他事务可见。- 不可重复读
- 幻读
- 更新丢失
- 可重复读
REPEATABLE READ事务中数据更改已提交对正在执行的事务不可见。- 幻读
- 更新丢失
- 串行化
SERIALIZABLE强制所有事务串行执行。
读已提交与可重复读区别:正在执行的事务是否可见其他事务提交的数据更改,读已提交可见,可重复读不可见。
SqlServer默认事务隔离级别为读已提交;MySql默认事务隔离级别为可重复读。
隔离特性导致问题
- 脏读:当前事务中读取到其他事务已修改未提交的数据,违反隔离性。
- 不可重复读:当前事务中读取到其他事务已修改已提交的数据,违反一致性。
- 幻读:因数据插入导致一个事务中读取查询获取结果不一致现象。
- MVCC
- Next-Key Lock
- 更新丢失:并发事务对同一条记录进行更新,出现后一次修改覆盖前一次修改情况。
- MVCC
- Record Lock
锁机制
两段锁协议(2PL)
- 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。
- 在释放一个封锁之后,事务不再申请和获得其它任何封锁。
悲观锁机制
先取锁再访问
- 共享锁(Share Locks,S锁):一个线程给数据加上共享锁后,其他线程只能读取数据,不能修改。
- 排它锁(eXclusive Locks,X锁):一个线程给数据加上排它锁后,其他线程不能读取也不能修改。
- 意向锁 (Intent Locks):在指定资源上获取锁时,先在上一层次结构上获取意向锁。主要作用是:当需要获取表锁或者页锁时,只需要判断是否存在表意向锁或者页意向锁就可以快速。
兼容性规则为:共享锁和共享锁兼容,排它锁和其他的锁都排斥。
乐观锁机制
- 假设多并发的事务不会互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。
- 在提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事务又修改了该数据。如果其他事务有更新的话,正在提交的事务会进行回滚。
索引
索引分类
- 存储结构区分
- 聚集索引
- 非聚集索引
- 数据唯一性区分
- 唯一索引
- 主键索引
编码格式及类型
char、varchar、text、nchar、nvarchar、ntext的区别?
char(n):定长;索引效率高;n 必须是一个介于 1 和 8,000 之间的数值,存储大小为 n 个字节。varchar(n): 变长;索引效率低于char(n),灵活;n 必须是一个介于 1 和 8,000 之间的数值,存储大小为输入数据的字节的实际长度。varchar类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。text(n):变长;非Unicode数据;不用指定长度。最大长度为2^31-1(2,147,483,647)个字符。nchar(n):定长;处理unicode数据类型;n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。nvarchar(n):变长;处理unicode数据类型;n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。ntext(n):变长;处理unicode数据类型;不用指定长度。
一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。
asp.net core learn的更多相关文章
- [转]An introduction to OAuth 2.0 using Facebook in ASP.NET Core
本文转自:http://andrewlock.net/an-introduction-to-oauth-2-using-facebook-in-asp-net-core/ This is the ne ...
- Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 读取关系数据
Reading related data¶ 9 of 9 people found this helpful The Contoso University sample web application ...
- ASP.NET Core身份识别
Introduction to Identity 66 of 93 people found this helpful By Pranav Rastogi, Rick Anderson, Tom Dy ...
- Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 创建复杂数据模型
Creating a complex data model 创建复杂数据模型 8 of 9 people found this helpful The Contoso University sampl ...
- Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 排序、筛选、分页以及分组
Sorting, filtering, paging, and grouping 7 of 8 people found this helpful By Tom Dykstra The Contoso ...
- Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 增、查、改、删操作
Create, Read, Update, and Delete operations¶ 5 of 5 people found this helpful By Tom Dykstra The Con ...
- Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程
原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web applica ...
- [转]Publishing and Running ASP.NET Core Applications with IIS
本文转自:https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications- ...
- 【翻译】使用Visual Studio创建Asp.Net Core MVC (一)
This tutorial will teach you the basics of building an ASP.NET Core MVC web app using Visual Studio ...
随机推荐
- 《Ansible自动化运维:技术与佳实践》第一章读书笔记
Ansible 架构及特点 第一章主要讲的是 Ansible 架构及特点,主要包含以下内容: Ansible 软件 Ansible 架构模式 Ansible 特性 Ansible 软件 Ansible ...
- 【LeetCode】79-单词搜索
题目描述 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中 "相邻" 单元格是那些水平相邻或垂直相邻的单元格.同一 ...
- 使用maven的profile构建不同环境配置
基本概念说明(resources.filter和profile): 1.profiles定义了各个环境的变量id 2.filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profil ...
- Matlab2016b破解安装教程——超详细
一.MATLAB是什么 MATLAB :是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simuli ...
- 小白专场-多项式乘法与加法运算-python语言实现
目录 题意理解 解题思路 多项式加法 多项式乘法 完整代码 题意理解 题目: 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一 ...
- Winform中对ZedGraph的曲线标签进行设置,比如去掉标签边框
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- 简单的Socket通信(简单的在线聊天)---winform
注:本博客适合刚开始学习winform程序的初学者,大牛请绕道(跪求大牛指导文中不足) .....10w字废话自动省略,直接开始正题. 首先从最基本的建立winform开始(本项目用的Vs2017) ...
- 一个基于vue的时钟
前两天写了一个基于vue的小钟表,给大家分享一下. 其中时针和分针使用的是图片,结合transform制作:表盘刻度是通过transform和transformOrigin配合画的:外面的弧形框框,啊 ...
- Phpstudy被暴存在隐藏后门-检查方法
Phpstudy被暴存在隐藏后门-检查方法 一.事件背景 Phpstudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apache.PHP.MySQL.phpMyAdmin.ZendOp ...
- 进击的.NET 在云原生时代的蜕变
你一定看过这篇文章 <进击的 Java ,云原生时代的蜕变>, 本篇文章的灵感来自于这篇文章.明天就将正式发布.NET Core 3.0, 所以写下这篇文章让大家全面认识.NET Cor ...