首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

领域驱动设计,让程序员心中有码(七)

多年来,笔者一直从事传统软件企业的软件开发和项目管理工作。笔者发现在众多的传统软件企业中,评判优秀开发者的标准往往是技能的熟练程度,基本上都是以梭代码的速度论英雄。有人评价说,这种开发可以称之为cv编程,即ctrl+c和ctrl+v编程为主。这种开发往往对开发者的技能要求并没有想象中的那么高,由于工时和合同的限制,不得不压缩开发时间,通过靠密集的劳动力资源、较高的工作强度来完成项目的开发。这种模式,通过简单的复用历史代码,可以更快的输出结果,对于中小型企业和一些外包企业来说,也意味着更快的项目完成速度、而越快做完项目,也意味着可以越快收回合同款,尽快开始下一个项目。

02

某酒管集团-单例模式对性能的影响及思考

摘要: 大概一年前开始在思考 构造函数中 依赖注入较多,这对系统性能及硬件资源消耗产生一些优化想法。一般较多公司的项目都使用Autofac 依赖注入(Scoped 作用域),但是发现过多的对象产生 会消耗 CPU , 内存 并给GC(垃圾回收)造成一定的压力。那么开始思考是否能够使用 单例 (Singleton)来解决这些问题呢?带着这些想法开始ReView整个项目的代码,排查是否存在 单例 会造成 线程安全 或 方法内修改全局变量的代码( 结果是乐观的.... )。于是开始了性能测试....论证.. 试运行... ,结果是超预期的(CPU 从 60%-降低到--》10%, 内存 从 33%-降低到--》20%, 接口平均响应时间 从 120毫秒--降低到--》50毫秒 . 1500/QPS (不含内部服务相互调用)) 和 @InCerry 沟通结果,说可以写个 案例 和大家分享分享... 于是乎 有了这一片文章。

02

C# Weak Reference

在C#中,弱引用(Weak Reference)是对一个对象的引用,它不会阻止系统垃圾回收器回收这个对象。当垃圾回收器运行时,如果一个对象只被弱引用指向,那么这个对象可以被回收以释放内存。如果应用程序的代码可以访问一个正由该程序使用的对象,垃圾回收器就不能回收该对象, 那么,就认为应用程序对该对象具有强引用。弱引用允许应用程序访问对象,同时也允许垃圾回收器收集相应的对象。如果不存在强引用,则弱引用的有限期只限于收集对象前的一个不确定的时间段。使用弱引用时,应用程序仍可对该对象进行强引用,这样做可防止该对象被收集。但始终存在这样的风险:垃圾回收器在重新建立强引用之前先处理该对象。

02

ASP.NET页面周期学习笔记之一

ASP.NET页面生命周期——理解:重中之重!!! 1.基本概念:所谓的页面生命周期,指的是一个ASP.NET页面类对象从初始化到销毁经过的步凑过程; 2.大致步凑: (1)初始化:PreInit,Init,InitComplete (2)加载数据和页面:LoadState,ProcessPostData,PreLoad,Load,ProcessPostData(第二次)... (3)触发事件:ChangedEvents PostBackEvent (4)保存状态并呈现页面:SaveState,SaveStateComplete,Render 3.步凑详解: ProcessRequestMain-> PreInit-PerfromPreInit()->预初始化:准备初始化页面控件,设置皮肤; Init-InitRecursive(null)->页面对象初始化; InitComplete(OnInitComplete-EventArgs.Empty)->页面对象初始化完成:加载ViewState,还原控件状态,登记用户触发的事件; if(this.IsPostBack) {    LoadState-LoadAllState():加载ViewState->ProcessPostData-ProcessPostData(this._requestValueCollection,true):还原控件状态 } ->PreLoad-OnPreLoad(EventArgs.Empty)->Load-LoadRecursive()-> if(this.IsPostBack) {    ProcessPostData Second Try-ProcessPostData(this._leftoverPostData,false)->Raise ChangedEvents-RaiseChangedEvents()->Raise PostBackEvent -RaisePostBackEvent(this._requestValueCollection);):触发控件事件 } ->SaveStateComplete-OnSaveStateComplete(EventArgs.Empty):保存页面和控件数据到ViewState-> Render->RenderControl(this.CreateHtmlTextWriter(this.Response.Output)):生成最终HTML代码

03

Docker 容器生命周期:创建、启动、暂停与停止

本博客通过标题《Docker 容器生命周期:创建、启动、暂停与停止》为主线,探讨了容器生命周期的各个关键阶段。文章从引言开始,解释了容器化技术的重要性,并深入介绍了容器的生命周期概述、创建容器、启动与运行容器、暂停与继续容器、停止与重启容器、删除容器等各个阶段的操作和注意事项。此外,还分享了最佳实践,涵盖了容器日志、资源限制、容器间通信、安全性等方面的内容。通过实例与案例分析,展示了如何通过合理的生命周期管理确保高可用性和可靠性的微服务应用。最终,结论强调了容器生命周期管理在现代软件开发中的重要性,并提醒读者不断关注技术发展趋势。

01

abp vnext2.0核心组件之模块加载组件源码解析

abp vnext是abp官方在abp的基础之上构建的微服务框架,说实话,看完核心组件源码的时候,很兴奋,整个框架将组件化的细想运用的很好,真的超级解耦.老版整个框架依赖Castle的问题,vnext对其进行了解耦,支持AutoFac或者使用.Net Core的默认容器.vnext依然沿用EF core为主,其余ORM为辅助的思想,当然EF core来实现DDD确实有优势,EventBus提供了分布式版本,并提供了RabbitMQ的实现版本,Aop拦截器依然采用Castle.Core.AsyncInterceptor.这一点Dora.Interception貌似可以解决,估计如果高度组件化,那么这也是一个扩展点.整个模块加载系统更加的完善,提供了跟多可选择的特性,工作单元也进行了小幅度的重构,代码更加的通俗易懂(在实现异步工作单元嵌套的设计就有体现)等等还有很多,当然不是本文的重点,vnext2.0是个值得使用的框架.下面开始回到正题.

03

MySQL(五)|《千万级大数据查询优化》第二篇:查询性能优化(1)

MySQL优化一般是需要索引优化、查询优化、库表结构优化三驾马车齐头并进。 本章节开始讲查询优化。 一、为什么查询速度会慢 可以把查询当作一个任务,它由一系列子任务组成,每个子任务都会消耗一定的时间。如果要优化查询,实际上是优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数,要么让子任务运行得更快。 MySQL在执行查询的时候有哪些子任务,这个是有一定的方法进行剖析的,具体方法下回单独拿一个章节来分析。 通常来说,查询的生命周期大致可以按照顺序来看:从客户端,到服务端,然后在服务器上进行解

09

ASP.NET Core应用基本编程模式[2]:依赖注入

基于IHostBuilder/IHost的服务承载系统建立在依赖注入框架之上,它在服务承载过程中依赖的服务(包括作为宿主的IHost对象)都由代表依赖注入容器的IServiceProvider对象提供。在定义承载服务时,也可以采用依赖注入方式来消费它所依赖的服务。作为依赖注入容器的IServiceProvider对象能否提供我们需要的服务实例,取决于相应的服务注册是否预先添加到依赖注入框架中。服务注册可以通过调用IHostBuilder接口或者IWebHostBuilder接口相应的方法来完成,前者在《服务承载系统》已经有详细介绍,下面介绍基于IWebHostBuilder接口的服务注册。[本文节选自《ASP.NET Core 3框架揭秘》第11章, 更多关于ASP.NET Core的文章请点这里]

04
领券