- 博客(30)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 EFCore状态跟踪流程
按我的理解流程如下context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.TrackAll; 开启跟踪(默认就是开启的) context.Configuration.AutoDetectChangesEnabled = false/true; 开启是否自动计算修改 如果true每次Add,Update,Remove等都会进行一次DetectChanges,所以可以如下提高性能: context.Co..
2021-01-12 18:00:03 1052
原创 EFCore状态同步AutoDetectChangesEnabled
当批量添加修改数据时,EF同步到上下文这个阶段比较耗时。出现这个问题的原因是:每次调用Add、Update之前,EF都会调用DetectChanges。微软官方给出的介绍是:获取或设置一个值,该值指示是否通过 DbContext 和相关类的方法自动调用 DetectChanges() 方法。 默认值为 true。当查询数据时EF上下文便捕获了数据的快照,当调用DetectChanges方法时,会扫描上下中所有实体并将当前值和快照中的值进行比较,然后作出相关的行为。但是基于上述应意识到它..
2021-01-12 17:57:28 898 1
原创 EFCore官方推荐扩展
0.汇总https://docs.microsoft.com/zh-cn/ef/core/extensions/1.批量操作删除/更新https://github.com/borisdj/EFCore.BulkExtensions2.UnitOfWorkhttps://github.com/Arch/UnitOfWork/
2021-01-12 17:56:02 863
原创 EFCore迁移命令
DbFirst: Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.DesignMicrosoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.SqlServer.DesignMicrosoft.EntityFrameworkCore.Tools 生成:Scaffold-DbContext -Connection "Server=.;Database=
2021-01-12 16:38:46 618
转载 Repository和UnitOfWork的生命周期问题
DDD:Repository和UnitOfWork的生命周期问题UnitOfWorkUnitOfWork是一种有状态的、用例级别的对象。如果不采用ORM是不会使用UnitOfWork模式的,RepositoryRepository是一种特殊的领域服务,因此是无状态的、全局单例的。Repository和UnitOfWork之间的关系在一个用例中,一个UnitOfWork为多个Repository提供服务,也就是说Repository依赖UnitOfWork,但是无状态对象不能依赖有状态的
2020-09-26 11:15:43 272
原创 UseAuthentication和UseAuthorization
Authentication跟Authorization的区别这两个单词长的十分相似,而且还经常一起出现,很多时候容易搞混了Authentication(认证)明确是你谁,确认是不是合法用户。常用的认证方式有用户名密码认证。Authorization(授权)明确你是否有某个权限。当用户需要使用某个功能的时候,系统需要校验用户是否需要这个功能的权限。所以这两个单词是不同的概念,不同层次的东西。UseAuthorization在asp.net core 2.0中是没有的。在3.0之后微软
2020-09-25 15:46:54 7487
原创 Http的ETag和cache-control
cache-control在请求中使用Cache-Control 时,它可选的值有:在响应中使用Cache-Control 时,它可选的值有:ETag1.资源的指纹码2.当浏览器缓存到期后,重新请求服务器时会带上指纹码3.服务器处理完成此请求后会把响应数据和ETag对比4.如果一致,则返回304,但不返回数据,节省带宽5.如果不一致,则重新下发...
2020-09-19 16:49:39 204
原创 .net 性能优化工具汇总
性能探查器VSDebug调试器VS性能探查器dotTrace(Release运行)性能测试Benchmark组件(Release运行)
2020-09-17 14:46:46 191
原创 结构性设计模式-代理模式(Proxy)
原来有的业务实现上,需要对1.原有的代码 /// <summary> /// 业务接口 /// </summary> public interface ISubject { /// <summary> /// get /// </summary> /// <returns></returns> bool Ge.
2020-08-18 16:04:39 95
原创 结构性设计模式-适配器模式(AdapterPattern)
把一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)1.原有的代码 /// </summary> public interface IHelper { void Add<T>(); } public class SqlserverHelper : IHelper { public void Add<T>() { .
2020-08-18 15:39:54 152 1
转载 SQL Server执行计划的理解
SQL Server执行计划的理解 要理解执行计划,怎么也得先理解,那各种各样的名词吧。鉴于自己还不是很了解。本文打算作为只写懂的,不懂的懂了才写。 在开头要先说明,第一次看执行计划要注意,SQL Server的执行计划是从右向左看的。 名词解析: 扫描:逐行遍历数据。 先建立一张表,并给大家看看大概是什么样子的。 CREATE TABLE Person( Id int IDENTITY(1,1) NOT NULL, Name nvarcha
2020-07-18 11:03:07 177
原创 asp.net Core Mvc Cookie认证
1.定义授权方案public const string AuthScheme_Token = "Token";2.注册服务 //默认授权方案,如果未设置,再授权时 [Authorize(AuthenticationSchemes=AuthScheme_Token)]指定AuthenticationSchemes services.AddAuthentication(AuthScheme_Token) //添加Token的Cookie的认证方式 .AddCookie(AuthSc
2020-07-17 17:13:15 324
转载 数据库第一、二、三范式
范式(Normal Form)是范式是符合某一种级别的关系模式的集合。通俗一点就是对数据库中表的属性的约束条件。第一范式 1NF第一范式的条件:元组中的每一个分量都必须是不可分割的数据项。反例:应该修改为:第二范式 2NF第二范式的条件:在第一范式的基础上,所有的非主属性完全依赖于主键。完全依赖意味着不能依赖于主键的一部分属性。反例:对于该表,学号和课程号组合在一起是主键,但是姓名只由学号决定,违反了第二范式。类似还有课程名由课程号决定。所以应该拆分为:第三范式 3NF第三.
2020-07-17 14:29:59 272
转载 redis持久存储RDB和AOF的区别及优缺点
由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF持久化(原理是将Reids的操作日志以追加的方式写入文件)。那么这两种持久化方式有什么区别呢,改如何选择呢?网上看了大多数都是介绍这两种方式怎么配置,怎么使用,就是没有介绍二者的区
2020-07-16 17:39:03 1176
转载 Redis中的事务
1.redis本身没有回滚的功能2.redis的事务本身没有隔离性(既事务中修改中的数据,其他会话也能读取/修改)解决的办法就是利用redis的watch,监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断,无法执行既不需要回滚参考:http://doc.redisfans.com/transaction/index.html...
2020-07-16 11:29:22 214
转载 Asp.net Core Filter执行顺序
1.过滤器类型ASP.NET Core 有以下五种类型的过滤器,每个过滤器类型在过滤器管道中的不同阶段执行:1.Authorization Filter授权过滤器 在过滤器管道中第一个执行,通常用于验证当前请求的合法性,不合法后面的管道会直接跳过。它们只有一个Before方法,不像其它大多数过滤器支持前置阶段方法和后置阶段方法。注意,您不要在授权过滤器中抛出异常,因为没有任何代码来处理异常(异常过滤器不处理它们)。2.Resource Filter资源过滤器是第二个运行,在 Authorizat
2020-07-15 15:59:17 2853
转载 Redis发布订阅
Pub/Sub(发布/订阅)Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:...
2020-07-15 15:36:24 78
原创 Redis介绍及几种类型
秒杀困境要从我们的数据库中取到当前的要出售的商品的数量取到数量,然后给数量自减1我们的商品数量本来是100,然后被抢到订单101–110 ,超卖了redis 特点 - 高并发,高可扩,高性能 - 为什么可以解决高并发情况下的秒杀,而且在代码中没有看到任何的锁?它是一个单线程的服务。 - 多线程(cpu上下文切换)一定比单线程快? 错 - redis是单线程服务,那么redis服务里面是不是只有一个线程?错 单线程代表的时候处理命令或者指令的时候,后台只有一个处理指令
2020-07-15 15:07:08 134
原创 数据库Sql server 表分区
首先明确表分区和分库分表的概念。表分区:在不破坏原本表结构的基础上,对单个大表进行切割,分成不同文件,存储在不用文件或硬盘。 分库分表:这里涉及到垂直切分及水平切分(引用网上的文章:https://www.cnblogs.com/zr520/p/5449748.html)。 垂直切分:垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网...
2020-06-23 17:42:53 299
原创 androidProject_望远镜(极限放大)
我决定以后把我每一个项目的研究过程记录下来。8月份的一天。我发现androidAPP上很少有人尝试做望远镜,仅有的一些也放大有局限。那我何不尝试下呢。没错。要做第一个吃螃蟹的人。说动手就动手,研究了下Camera的API。原来camera有限制呀!放大范围只能在1~getMaxZoom()直接?不过这也是情理之中的事。俺还有办法。利用放大到极限在放大下图片不就得了吗?我太聪明了!我发现了个
2020-06-23 17:42:13 154
转载 Task.Result卡死问题
在如下代码中:public async Task<string> GetData(){ return await DoWork();}在UI线程中调用var data = GetData().Result;此时线程会卡死;两种解决办法:1,所有调用方法链中使用async、await方式调用。var data = await GetData().2, 去掉调用链中的async,await,直接返回Task类型。public Task<s
2020-06-23 17:34:49 3869
原创 AddMvcCore,AddControllers,AddControllersWithViews,AddRazorPages的区别
services.AddMvcCore()只註冊運行 Controller/Razor Pages 必要的核心服務,確保 Pipeline 程序可動作,其餘如像 Data Annotation Model Validation、身分驗證等服務要自己加掛,除有特殊客製需求,一般不太常用。services.AddControllers()包含 AddMvcCore() 所做的動作外,再加上:身分驗證服務 Swagger/Open API 等 API 文件動態產生功能 Data Annot.
2020-06-13 13:46:54 5422
原创 .net Core MVC实现伪静态
1.在ConfigureServices中试用AddMVC,不启用Endpoint services.AddMvc(ac => { ac.EnableEndpointRouting = false; });2.Configure中 app.UseMvc(routes => { routes.MapRoute("Home", "/Home
2020-06-13 11:14:01 685
原创 .net使用Redis,遇到的问题及解决
目前项目的热数据一直使用.net本身的cache类,但是随着业务增加,现在对ecs进行了负载均衡。负载均衡后cache的弊端开始暴露,因为cache本身依赖应用池,多个节点间维护各自的应用池,负载均衡后各个节点可能造成热数据不统一,并且应用池回收后cache自动被回收的问题。所以开始使用成Redis。1.官方下载Redishttps://github.com/MSOpenTech/re...
2018-10-08 09:21:01 2799
转载 网络直播被严查,机器如何帮助鉴别小黄图?
(图片来源:3lian.com)近日,文化部将19家不合规定的直播平台列入查处名单。作为新型的社交互动平台,网络直播与传统的视频网站不同,当用户上传内容后,传统的视频网站会进行审核,符合标准后才可上传成功,而网络直播都是实时播出的,如果有人在网上传播不良信息或者发布违规内容,即使被查处,也是播出之后的事情。虽然,大多数直播企业会选择人工审核的方式对直播内容进行实时监管,但
2016-04-23 07:16:49 840
原创 意创坊-移动富媒体平台
http://ino.sitelh.com"意创坊" 完全免费的在线制作移动端动画的平台,可以制作轻应用,动画简历,企业宣传,在线PPT,手机相册等等。。。2014.09.15 开始计划2014.10.5 第一个版本上线2015.01.06 设计器上线对于"意创坊"的开发也就算是结束了。
2015-01-08 19:11:21 872
原创 Android开发者已经度过了初级、中级,如何成为一个Android高手呢?
Android开发者已经度过了初级、中级,如何成为一个Android高手呢? 一、初级 1. 拥有娴熟的Java基础,理解设计模式,比如OOP语言的工厂模式要懂得。 2. 掌握Android UI控件、Android Java层API相关使用。 迈向中级,最好再次更新下Java技术,掌握Java concurrent库、nio库,精通xml、js...
2015-01-08 18:52:15 1405
原创 android_View回调函数
自定义View常处理的回调函数onFinishInflate()当View中所有的子控件均被映射成xml后触发onMeasure(int, int)确定所有子元素的大小onLayout(boolean, int, int, int, int)当View分配所有的子元素的大小和位置时触发onSizeChanged(int, int, int, int)
2013-08-28 11:48:20 4719
转载 C++中堆和栈的完全解析(转)
C++中堆和栈的完全解析内存分配方面:堆: 操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删 除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样代码中的delete语句才能正确的释放本内存空间。我们常说的内存泄露,最常见的就是堆泄露(还
2013-06-18 19:33:00 596
C# EF框架DBContext,using的问题
2015-11-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人