摘要:
利用Dump转储文件获取正式环境程序堆栈状态 服务异常找不到原因时,我们通常通过重新启动服务来尝试解决问题,但是在决定重启之前,请不要立刻重启Windows服务或站点 重启服务会让当前案发现场的内存证据丢失,即便是服务恢复正常了,也无法确认问题发生的原因,利用 转储文件,可以将正在运行中的服务或站点 阅读全文
摘要:
领域专用语言 领域驱动设计(Domain Driver Design)开发中,最令我震撼的是领域专用语言(Domain specific language),领域专用语言专注于描述当前领域内的业务细节,与具体技术实现细节解耦 在领域驱动设计中,具体的技术细节(数据库,消息队列,缓存),以框架的形式存 阅读全文
摘要:
vs2017开始支持跨平台远程调试coreclr的应用,通常用于调试linux与mac上运行的aspnetcore程序,而如果运行在docker中的应用 要使用跨平台远程调试功能,首先运行 应用的环境要可以ssh远程连接,如果应用运行运行在docker中,那么首先需要先安装 ,并启动 首先要构建一个 阅读全文
摘要:
软件自产生之后,功能从一开始的简单慢慢演变到复杂,参与到其中的开发人员也越来越多 其根本原因,就是需求的改变,在以前,对软件的需求很简单,通常只是固定的一两个功能,开发完成后基本不用维护 随着时间的发展,人们对软件的需求越来越复杂,变化越来越快 最终产生了各种难以维护的代码,稍微一个改动就会影响到很 阅读全文
摘要:
1. 编译器到底对await做了什么 await 一个异步操作的时候,实际上编译器会创建一个状态机,这个状态机包含了调用者的上下文变量,状态机使用 迭代器实现,状态机由clr调度,每次运行都会重新加入回队列,直到 完成或异常结束 2.Task有哪些实现方式 经常我们可以看到一些库中使用 来创建 ,改 阅读全文
摘要:
应用上线后可能出现一些问题,通过源码排查,日志分析都不能确定具体原因的情况下,可以使用dump转存文件分析,netcore对于linux系统dump提供了createdump工具,配合lldb sos插件进行clr级分析 启动一个dotnet容器,使用特权运行,createdump要访问其他进程内存 阅读全文
摘要:
数据库优化,sql与索引效果最明显,也是最简单的方法 而想要优化sql和索引,首先就需要知道sql的性能如何,是否有效命中索引,索引匹配行数,查询消耗时间 分析这些性能指标,借助sql分析工具是最常用的方法,使用SQLServer中的 ,能够看到sql每一个操作的消耗,预读行数 有时候,我们不确定哪 阅读全文
摘要:
在以往使用c#实现scoket服务器中,通常遇到一个问题就是内存占用高,GC次数频繁,导致处理能力直线下降 其主要原因是在处理socket请求时,大量的申请,复制内存,为了解决这个问题,NET Core 2.1引入了Span<T>,Memory<T>,MemoryPool<T>操作类型 其主要目的是 阅读全文
摘要:
Kestrel是aspnetcore中的web服务器之一,其本身有跨平台,轻量级,高性能的特点 在 ryzen 1600 12核cpu 测试环境中,瞬间每秒处理请求数能达到2w5以上,与netty不相上下,相当于同样环境下iis ASP.NET处理能力的3倍左右 为了了解Kestrel为什么如此强劲 阅读全文
摘要:
单表的情况下数据库自增id并没有什么问题,在一张表分布到多个数据库的情况下,使用表自增将会出现id重复的问题解决的办法有两个方向,一个是在应用层做处理,一个是数据库上去做处理 1.给每个数据库设置不同的开始id 数据库1 从 10000.. 开始数据库2 从 20000.. 开始这种办法不依赖于其他 阅读全文