随笔分类 - .Net Core
摘要:浅析DispatchProxy动态代理AOP(代码源码) 最近学习了一段时间Java,了解到Java实现动态代理AOP主要分为两种方式JDK、CGLIB,我之前使用NET实现AOP切面编程,会用Filter拦截器、Attribute特性、中间件、继承父类重写父类方法。 经过查找资料接触到了(牛逼不分
阅读全文
摘要:使用ABP SignalR重构消息服务(二) 上篇使用ABP SignalR重构消息服务(一)主要讲的是SignalR的基础知识和前端如何使用SignalR,这段时间也是落实方案设计。这篇我主要讲解SignalR源码(最近我手头工作比较忙@蟹老板)。 SignalR源码分析(原地址,原地址已经停止维
阅读全文
摘要:使用ABP SignalR重构消息服务 最近协助蟹老板升级新框架,维护基础设施服务,目前已经稳了。 早上蟹老板看到我进入公司,马上就叫停我,说我为什么左脚先进公司,你这样会让我很难做耶,这样把我给你一次机会把现在的消息服务重构了,我就放过你这一次。(当时我都没有反应过来,蟹老板就准备和我讲需求了,我
阅读全文
摘要:ABP 使用ElasticSearch、Kibana、Docker 进行日志收集 后续会根据公司使用的技术,进行技术整理分享,都是干货哦别忘了关注我!!! 最近领导想要我把项目日志进行一个统一收集,因为现在环境有什么报错信息都是看Logs文件夹的日志数据,如果只有一个项目那到无所谓,但是我们现在的服
阅读全文
摘要:Abp 业务异常源码解读 最近一直在读代码整洁之道,我在读到第三章函数的3.9 使用异常替代返回错误码,其实在我的开发经历中都是使用返回错误码给到前端,之前在阅读ABP官网文档中就有看到过使用异常替代异常的做法,当时自己还是比较抵触,在读完本章之后我们就马上阅读了Abp的异常处理源码。 ABP 提供
阅读全文
摘要:Abp 审计模块源码解读 Abp 框架为我们自带了审计日志功能,审计日志可以方便地查看每次请求接口所耗的时间,能够帮助我们快速定位到某些性能有问题的接口。除此之外,审计日志信息还包含有每次调用接口时客户端请求的参数信息,客户端的 IP 与客户端使用的浏览器。有了这些数据之后,我们就可以很方便地复现接
阅读全文
摘要:全局获取HttpContext 在我们平常开发中会有这样的需求,我们的Service业务层需要获取请求上下文中的用户信息,一般我们从控制器参数传递过来。如果你觉得这样就可以了,请您关闭文章。 场景 但是我们也会遇到控制器传递困难的场景,我自己最近使用单库实现多租户的PAAS平台,发现EF Core上
阅读全文
摘要:Redis高可用调试 背景:因为要让redis高可用,我们使用了redis双机热备(一台主机一台备机) 架构:虚拟IP=>nginx=>redis(双机) 测试 当我们使用nginx的双机热备模式,主节点挂掉之后,所有的请求会转发到从节点,这个时候我们的主节点故障恢复了,所有新的请求都会跑到主节点上
阅读全文
摘要:.Net Core 使用EF Core codefirst模式 什么是codefirst模式 EF Core有两种数据库设计模式,DBfirst 数据库优先、Codefirst 代码优先。 1、我们一般设计是先添加数据库表信息,然后将数据库的信息更新到项目实体中。这种做法就是我们的DBfirst模式
阅读全文
摘要:BackgroundService 源码分析 因为换了工作也有两个多月没有写博客啦,因为跟着红超哥(大佬)一直在学习和做项目(反正就是在潜心修炼,大佬每天也是在我十万个为什么中度过的。) 最近在做一个接收服务端信息的项目,使用TCP建立连接,双方进行信息通信。后面我会陆陆续续的把自己学习的东西进行一
阅读全文
摘要:1、介绍supervisor Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,super
阅读全文
摘要:一、前言 .Net Core缓存源码 1、上篇.NET Core ResponseCache【缓存篇(一)】中我们提到了使用客户端缓存、和服务端缓存。本文我们介绍MemoryCache缓存组件,说到服务端缓存我们一般都会想到MemoryCache、Redis等等优秀的缓存组件,各自有各自使用的场景。
阅读全文
摘要:一、前言 源码 1、最近一直在看项目性能优化方式,俗话说的好项目优化第一步那当然是添加缓存,我们的项目之所以卡的和鬼一样,要么就是你的代码循环查询数据库(这个之前在我们的项目中经常出现,现在慢慢在修正)或者代码做了很多不该做的事情。这个时候就可以引入我们的缓存了。(只要你的代码不是写的特别差,比如之
阅读全文
摘要:一、什么是泛型 源码 1.泛型类和泛型方法兼复用性、类型安全和高效率于一身,是与之对应的非泛型的类和方法所不及。泛型广泛用于容器(collections)和对容器操作的方法中。.NET框架2.0的类库提供一个新的命名空间System.Collections.Generic,其中包含了一些新的基于泛型
阅读全文
摘要:一、Task(任务)和ThreadPool(线程池)不同 源码 1、线程(Thread)是创建并发工具的底层类,但是在前几篇文章中我们介绍了Thread的特点,和实例。可以很明显发现局限性(返回值不好获取(必须在一个作用域中)),当我们线程执行完之后不能很好的进行下一次任务的执行,需要多次销毁和创建
阅读全文
摘要:一、什么是ThreadPool 线程池(源码) 1.线程池顾名思义,有我们的系统创建一个容器装载着我们的线程,由CLR控制的所有AppDomain共享。线程池可用于执行任务、发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。所以使用线程池不需要自己创建线程,而是通过线程池来创建和执行和管
阅读全文
摘要:在上篇文章中我们已经知道了多线程是什么了,那么它到底可以干嘛呢?这里特别声明一个前面的委托没看的同学可以到上上上篇博文查看,因为多线程要经常使用到委托。源码 一、异步、同步 1.同步(在计算的理解总是要你措不及防,同步当线程做完一件事情之后,才会执行后续动作),同步方法慢,只有一个线程执行,异步方法
阅读全文
摘要:1、初识那个它(多线程) 1:可以看到我的电脑有234个进程正在运行、有2749个线程正在运行,这个时候你们是不是和我一样有很多问号呢? 2、什么是进程 1:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用的内存和系统资源,而一个进程又是由多个线程所组成的。 3、什么是线程 1
阅读全文
摘要:一、初识Expression 源码 1、在上一篇我们讲到了委托(忘记了可以在看看,点赞在看养成习惯),今天要讲的Expression也和委托有一点点关系吧(没有直接关系,只是想要大家看看我其他的文章),Expression是.NET准备为Linq to Sql准备的,它的命名空间是System.Li
阅读全文
摘要:一、什么是委托 源码下载 1.委托是面向对象的、类型安全的,是引用类型。使用delegate关键字进行定义。委托的本质就是一个类,继承自System.MulticastDelegate,而它又派生自System.Delegate。里面内置了几个方法 ,可以在类的外面声明委托,也可以在类的内部声明委托
阅读全文
