.Net Framework

(一)学习了解OrchardCore笔记——开篇:基于asp.net core的OrchardCore

冷暖自知 提交于 2020-10-23 17:51:54
  想深入了解OrchadCore源码许久了,但是读源码的时候遇到很多问题而网上的参考资料太少了(几乎都是OrchadCms不带OrchardCore的),现在解决得差不多了,做下笔记方便自己查看,有错误之处也请大家帮忙指出,谢谢。   OrchardCore是一个基于asp.net core的cms(废话),其结构类似于asp.net core(为啥说类似我也不知道,asp.net core的源码我只看了一部分,似是而非吧)。因此,我将直接从asp.net core的角度来解析OrchardCore,从asp.net core的角度就是说关于asp.net core的靠自己理解,可以省略1万字。   废话结束,开始正题,源码直接github搜索OrchardCore就可以下载了,我直接用visual studio(我不用rider,首先我没钱买,其次我之前是弄.net framework不是java,我用的vs都是社区版)自带的git去clone半天(这小水管受不了后面直接码云找镜像仓库clone了)。   clone完了,第一个坑出现了,选择记得选择版本和分支,说多都是泪,OrchardCore支持的版本(从.net core 1.0到.net core 3.1都有)和自身的分支太多了,第一次接触没注意跳坑了导致各种出错(原因是我没有装对应的.net core版本,默认好像2

如何写一段死锁代码

落花浮王杯 提交于 2020-10-23 15:53:58
如何写一段死锁代码 Intro 上次介绍了如何写一段代码造成 StackOverflow ,今天来玩一下,看如何写一段代码造成死锁 什么是死锁 首先我们需要明确一下什么是死锁,造成死锁需要满足哪些条件,知道这些就可以轻松写出一段死锁代码了 死锁 是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于 死锁 状态或系统产生了 死锁 ,这些永远在互相等待的进程称为 死锁 进程(线程)。 ---- 百度百科 产生死锁的必要条件: 互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。 请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。 环路等待条件:在发生死锁时,必然存在一个进程--资源的环形链。 预防死锁方法: 资源一次性分配:一次性分配所有资源,这样就不会再有请求了:(破坏请求条件) 只要有一个资源得不到分配,也不给这个进程(线程)分配其他的资源:(破坏请保持条件) 可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源(破坏不可剥夺条件) 资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反

asp.net core之SignalR

时光怂恿深爱的人放手 提交于 2020-10-23 08:39:34
SignalR 是什么? ASP.NET Core SignalR 是一个开源的实时框架,它简化了向应用中添加实时 Web 功能的过程。 实时 Web 功能是服务器端能够即时的将数据推送到客户端,而无需让服务器等待客户端请求后才返回数据。 SignalR 主要适用于: 从服务器获取数据并高频更新的应用。比如股票,GPS应用等。 仪表板和监视应用。比如状态实时更新等。 需要通知的应用。比如即时聊天工具,以及社交网络里面的通知等。 协作应用。比如团体会议软件。 SignalR 支持下面几种底层传输技术: Web Socket 是不同于HTTP的另一种TCP协议。它是全双工的通信协议,浏览器和服务器之间可以相互通信。它会保持长连接状态只到被主动关闭。它支持文本和二进制的消息传输,也支持流媒体。其实正常的HTTP请求也是使用TCP Socket. Web Socket标准使用了握手机制把用于HTTP的Socket升级为使用WS协议的 WebSocket socket. 服务器发送事件 (Server Sent Events) 服务器可以在任何时间把数据发送到浏览器,而浏览器则会监听进来的信息,并使用一个叫做EventSource的对象用来处理传过来的信息。这个连接一直保持开放,直到服务器主动关闭它。它是单向通信,只能发生文本信息,而且很多浏览器都有最大并发连接数的限制。 长轮询(Long

项目微管理34

匆匆过客 提交于 2020-10-23 02:35:56
【项目微管理32-33已经重写到后面的章节,为了保持一致,直接使用项目微管理34节了,抱歉、抱歉!】 四代认为,不管是采用何种目标管理体系,制定目标都必须要满足一个基本的原则:SMART原则。 对SMART的解释有很多种,四代最倾向于下列的解释: SMART 原则一 S(Specific)—— 明确性 明确性指的是要用具体的语言清楚地说明要达成的行为。很多事情完成的似是而非的重要原因之一就因为目标定的模棱两可。 比如这个例子:“增强PC团队的服务意识”。这种对目标的描述就很不明确。 因为增强服务意识有许多具体做法,如:减少客户投诉,提升服务的质量,使用规范礼貌的用语,采用规范的服务流程,与客户及时沟通情况等。有这么多增强服务意识的做法,我们所说的“增强服务意识”到底指哪一块? 不明确就没有办法评判、衡量。 SMART 原则二 M(Measurable)—— 可衡量性 衡量性就是指目标应该有一组明确的数据,作为衡量是否达成目标的依据。如果制定的目标没有办法衡量,就无法判断这个目标是否实现了。 还是接上面那个目标“增强PC团队的服务意识”。这种对目标的描述就没有衡量性。当某一天你去考虑“离这个目标的实现还有多远”的时候,是无法回答的。 再看这样一个目标:“明年多挣点钱”。“多”是一个既不明确也不容易衡量的概念,到底指什么?是比今年多“1块”叫“多”,还是说多“1亿”叫“多”? 此外

GDB 调试 .NET 程序实录

三世轮回 提交于 2020-10-22 19:08:02
注:本文重要信息使用 *** 屏蔽关键字。 最近国庆前,项目碰到一个很麻烦的问题,这个问题让我们加班到凌晨三点。 大概背景: 客户给了一些 C语言 写的 SDK 库,这些库打包成 .so 文件,然后我们使用 C# 调用这些库,其中有一个函数是回调函数,参数是结构体,结构体的成员是函数,将 C# 的函数赋值给委托,然后存储到这个委托中。 C# 调用 C 语言的函数,然后 C 语言执行到一些步骤后, C 语言函数调用 C# 的函数。这个在 ARM64 的机器下,是正常的,例如树莓派,华为的鲲鹏服务器等。由于突然改成使用 X64 的机器部署项目,没有测试就直接打包了(Docker)。 没有测试的原因有两个: 一是,众所周知 .NET Core 是跨平台的,既然在 ARM64 下已经测试过,那么应该没问题; 二是,项目是华为 edge IoT 项目,必须走华为云注册边缘设备,然后通过云服务下发应用(Docker)到机器才能成功运行(有许多系统自动创建的环境变量和设备连接华为 IoT 的凭证)。在机器上直接启动,是无法正常完成整个流程的。 三是,事情来得太突然,没有时间测试。 事实上,就是这么幸福,出事的时候就是加班福报~~~ 大家记得,要部署上线、演示项目之前,一定要测试,测试再测试。 出现问题 应用在云上下发到设备后,启动一会儿就会挂了,然后修改 Docker 容器的启动脚本,进入容器后

技术人的持续学习成长之路

╄→гoц情女王★ 提交于 2020-10-22 17:53:43
近期有几位童鞋在公众号后台留言,希望我指点一下如何从码农进阶为大佬。我想说的是,我不是大佬,因此无法给你建议。但是,对于学习成长提高自己这方面,我想我应该还是有一点发言权。因此,我录制了一期骚年快享的视频《 技术人的持续学习成长之路 》,本文是该视频的文字稿,希望对你有帮助! 1、技术人成长之路是什么样的 理想中的样子 大多数技术人理想中的进阶路线都会像上图一样,从毕业之后的初级码农、中级码农、高级码农 再到 技术经理 甚至CIO/CTO。不过,正如这个圆圈一样,越往上进阶圈子越小,里面的人也就越少。我们大部分人还是在外层的三个圈子(初级、中级、高级码农)里边奋斗。 现实中的样子 现实中呢,可能随着年龄的增大,生活的压力也随之增大,时间管理的效率也随之降低,伴随而来的就是学习提高的欲望逐渐消灭。所以,可能身边的人大部分都有35岁的危机焦虑,因此可能会选择去送外卖、摆地摊之类的。 虽然大部分的时候都是程序员的自嘲打趣,但是现实就是这样,本质上还是处于信息爆炸时代的技术人们充满了焦虑,不时发出:“我太难了”! 2、你的焦虑,企业早就在经历 其实你的这些焦虑,大部分的企业早就开始在经历了。近年来,不确定性和不可预测性不断冲击各个行业的企业,企业的高层管理者们焦虑倍增。特别是在今年的疫情之下,大部分中小企业的高官们比你还难。但是,他们越来越发现在企业前方市场和企业内部支撑之间的一个冲突

学完这篇依赖注入,与面试官扯皮就没有问题了。

吃可爱长大的小学妹 提交于 2020-10-22 16:02:10
IOC: Inversion Of Control 控制反转 DI: Dependency Injection 依赖注入 1.控制反转 Inversion Of Control 的前世今生 1.1 IOC理论产生的背景 讨论控制反转之前,先看看软件系统提出 控制反转 的前世今生。 一个完整精密的软件系统,组件之间就像齿轮,协同工作,相互耦合。 一个零件不正常,整个系统就崩溃了。 系统对象之间耦合关系无法避免,在项目规模和复杂度变大的情况下,管理类之间的依赖关系将会很复杂。 对象之间耦合度很高的系统,架构师和开发人员对于系统的修改,必然会出现牵一发而动全身的情形。 对象之间耦合性依赖,单元测试很复杂。 1.2 IOC理论 软件专家为此提出 IOC理论 ,用来实现对象之间的解耦。 再来看看,控制反转(IOC)到底为什么要起这么个名字?我们来对比一下: 软件系统在没有引入IOC容器之前,对象A依赖于对象B,那么对象A在初始化或者运行到某一点的时候,自己必须主动去创建对象B或者使用已经创建的对象B。无论是创建还是使用对象B,控制权都在自己手上。 软件系统在引入IOC容器之后,这种情形就完全改变了,由于IOC容器的加入,对象A与对象B之间失去了直接联系,所以,当对象A运行到需要对象B的时候,IOC容器会主动创建一个对象B注入到对象A需要的地方。 通过前后对比,我们不难看出:

java,netcore和nodejs api性能测试

六月ゝ 毕业季﹏ 提交于 2020-10-22 11:48:16
一. 前言 作为有点经验的码农,现在退休在家带孩子。闲来无事,想对使用过的框架(如果写语言容易引战,php是世界上最好的语言)做一个性能测试。 二. 背景 由于毕业后刚开始接触的编程语言是C#, 从aspx时代至mvc3, mvc4, 后来又出来netcore,见证了C#的掘起和没落(至少国内大环境不理想)。 由于大厂的示范效应加上java开源免费(现在oracle也要授权了),生态极好,所以使用spring boot开始编程,说实在的(不要喷),我个人还是比较喜欢C#,因为语法糖太好用了, lambda,匿名函数匿名类,各类型之间的比较...。 由于nodejs的发明,使js变成前后端通吃的一门语言,异步单线程,事件驱动,适用于高并发的场景。 对于接触过的这些语言,我个人最喜欢js,因为弱类型,灵活。。。至于好或者不好,仁者见仁吧。平时一直在做码农也没时间去自己测试各种性能,现在正在赋闲,来测试一下我使用过的几个框架性能,也做一下比较。 三. 框架说明 1. java现在最流行的web框架应该就是spring的全家桶套餐了,关于数据连接,我个人喜欢使用orm, 所以使用springboot + jpa 2. netcore使用自己的mvc框架,数据库使用nhibernate, mvc+ nhibernate 3. nodej 使用egg + typeorm 四. 测试环境 1.

设置用户无需密码自动登录到 Windows 系统

久未见 提交于 2020-10-22 09:53:24
你一定要为你的 Windows 用户账户设置密码,一来会安全一些,而来可以远程登录使用;但有时出于一些特殊的目的,不希望在每次开机后都必须输入密码才能进入系统。于是你可以使用本文提供的方法在每次开机的时候免密码登录到 Windows 操作系统。 @ TOC 步骤 在 Windows 搜索框中输入 netplwiz ,然后回车打开命令; 去掉“要使用本计算机,用户必须输入用户名和密码”的勾勾; 点击“确定”或“应用”后,输入自动登录账号的用户名和密码。 注意,输入用户名和密码的时候,如果你使用了微软账号登录,那么需要输入你的微软账号,比如这样“ walterlv@outlook.com ”;而密码是你微软账号的密码,而不是 PIN 码。 Windows 10 截图 Windows 7 截图 我的博客会首发于 https://blog.walterlv.com/ ,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。 如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接: https://walterlv.blog.csdn.net/ ),不得用于商业目的

博客园主题——atum1.15升级发布啦

一个人想着一个人 提交于 2020-10-22 09:16:45
atum主题部署文档 自周三发布的博客园主题1.0版本赢得得广大博友的好评,但同时该主题也存在一些小瑕疵,这个版本主要是根据atum1.0版本以及各博友的建议做了一些升级改动,改动后重新打包发布atum1.1版本。博主在接下来的版本迭代中也会不断加入更多符合博友方便使用的各种新特性。好了,接下是atum1.1主题的部署详情。 介绍 一款由VUE打造的简约型博客主题,兼容各大主流浏览器,响应式设计,PC、平板、手机等均可正常浏览。 特性 响应式设计,兼容手机端浏览器。 提供多种配置信息,方便各类用户进行个人定制化。 部署文档十分详细且部署快捷。 主题整体偏向简约、无太多不必要的特效画面、偏向于阅读型博客。 请求局部HTML刷新,实现全站无刷新式加载。 该版本主要改进 相对于atum1.0需要的blogAcc、blogId等参数的必须配置,该版本采用自动配置特性,即做到了 所有属性无必须配置 ,做到了 按需配置 的特性。 中央面板新增滚动条辅助,改进了能够快速进入页底或页顶的阅读体验。 修改博客文章标题右侧眼睛图标为放大图标,点击可进行全屏沉浸式阅读文章,加强阅读体验。 调整分页显示,修改为分页页数在下,分页内容在上。 调整各处内容过长导致内容溢出或换行问题。 急速部署 前提:已经开通 js 权限,没开通的可以向博客园官方申请开通。 前提:对于随笔发布请不要设置EntryName属性。