.Net Framework

C#基础提升系列——C#任务同步

▼魔方 西西 提交于 2020-11-13 05:29:51
C#任务同步 如果需要共享数据,就必须使用同步技术,确保一次只有一个线程访问和改变共享状态。如果不注意同步,就会出现争用条件和死锁。 不同步导致的线程问题 如果两个或多个线程访问相同的对象,并且对共享状态的访问没有同步,就会出现争用条件。为了解决这类问题,可以使用 lock 语句,对共享对象进行锁定,除了进行锁定之外,还可以将共享对象设置为线程安全的对象。 注意:只有引用类型才能使用 lock 进行锁定。 锁定并不是越多越好,过多的锁定会造成死锁,在死锁中,至少有两个线程被挂起,并等待对象解除锁定。由于两个线程都在等待对方,就出现了死锁,线程将无限等待下去。 lock语句和线程安全 C#为多个线程的同步提供了自己的关键字: lock 语句。 使用一个简单的示例来说明 lock 的使用,首先定义两个简单的类来模拟线程计算,这两个类不包含任何的锁操作: class SharedState { public int State { get ; set ; } } class Job { private SharedState _sharedState ; public Job ( SharedState sharedState ) { this . _sharedState = sharedState ; } //该方法不是最终解决方案,存在漏洞,请不要直接应用到实际代码中 public

跟我一起学.NetCore之EF Core 实战入门,一看就会

谁说我不能喝 提交于 2020-11-12 21:32:52
前言 还记得当初学习数据库操作时,用ADO.NET一步一步地进行数据操作及查询,对于查询到的数据还得对其进行解析,然后封装返回给应用层;遇到这种重复而繁琐的工作,总有一些大神或团队对其进行封装,从而出现了很多ORM框架,让小伙伴把更多精力放在业务处理上,同时更多的面向程序对象开发,对工作效率的提升有很大的帮助。 目前关于C#出现了很多ORM框架,比较流行的大概有FreeSql (国内)、SqlSugar (国内)、Dapper (国外)、EF/EF Core (国外)、linq2db (国外)等, 当然也有一些小伙伴对其进行性能比较,各有优势吧。从我个人及周围的小伙伴使用来看,EF/EF Core和Dapper使用率相对比较高。这里就先说说EF Core,后续逮住机会再和小伙伴一起分享其他; 正文 随着.NetCore的迅速推进,EF Core也紧跟其步伐。目前长期支持版本是EF Core3.1,而下一个 稳定版本 EF Core5.0将计划随.Net5一起发布,预计应该会在这个月(2020年11月),可见微软对EF Core是非常重视的; 对于之前用过EF的小伙伴,应该都知道,EF有三种开发模式:CodeFirst、ModelFirst、DbFirst,这三种根据业务需求及个人偏好用的相对比较多的是DbFirst和CodeFirst;现在EF

使用C#VB.NET将XPS转换为JPG或PNG图像

孤街浪徒 提交于 2020-11-12 14:54:25
XPS文件格式经常在文件处理应用程序中使用。您可以在基于.NET Framework的应用程序中使用C#或VB.NET以编程方式将XPS或OXPS转换为JPG或PNG图像。 让我们逐步介绍以下方案,以了解有关XPS转换的更多信息: 使用C#或VB.NET将XPS,OXPS转换为JPG图像 使用C#或VB.NET将XPS,OXPS转换为PNG图像 目前,.NET版Aspose.page升级到v20.10版,感兴趣的朋友可 点击下载 使用C#或VB.NET将XPS,OXPS转换为JPG图像 JPG文件之所以出名是因为它们在所有系统环境中均受支持。您可以使用C#或VB.NET以编程方式将XPS或OXPS文件转换为JPG图像。对于XPS或OXPS到JPG图像的转换,应遵循以下步骤: 加载输入XPS或OXPS文件 初始化JpegSaveOptions对象 指定要渲染的SmoothingMode,Resolution和PageNumbers 保存输出的JPG图像 以下代码显示了如何使用C#语言将XPS或OXPS转换为JPG图像: // Input file string inputFileName = dataDir + "input.xps"; //Output file string outputFileName = dataDir + "XPStoImage_out.jpeg"; //

跟我一起学.NetCore之EF Core 实战入门,一看就会

﹥>﹥吖頭↗ 提交于 2020-11-12 13:58:23
前言 还记得当初学习数据库操作时,用ADO.NET一步一步地进行数据操作及查询,对于查询到的数据还得对其进行解析,然后封装返回给应用层;遇到这种重复而繁琐的工作,总有一些大神或团队对其进行封装,从而出现了很多ORM框架,让小伙伴把更多精力放在业务处理上,同时更多的面向程序对象开发,对工作效率的提升有很大的帮助。 目前关于C#出现了很多ORM框架,比较流行的大概有FreeSql (国内)、SqlSugar (国内)、Dapper (国外)、EF/EF Core (国外)、linq2db (国外)等, 当然也有一些小伙伴对其进行性能比较,各有优势吧。从我个人及周围的小伙伴使用来看,EF/EF Core和Dapper使用率相对比较高。这里就先说说EF Core,后续逮住机会再和小伙伴一起分享其他; 正文 随着.NetCore的迅速推进,EF Core也紧跟其步伐。目前长期支持版本是EF Core3.1,而下一个稳定版本EF Core5.0将计划随.Net5一起发布,预计应该会在这个月(2020年11月),可见微软对EF Core是非常重视的; 对于之前用过EF的小伙伴,应该都知道,EF有三种开发模式:CodeFirst、ModelFirst、DbFirst,这三种根据业务需求及个人偏好用的相对比较多的是DbFirst和CodeFirst;现在EF

Windows 10 安装 Sql Server 2014 反复提示需要安装 .NET Framework 3.5 SP1 的解决方案

孤人 提交于 2020-11-12 02:34:27
Windows 10 安装 Sql Server 2014 反复提示需要安装 .NET Framework 3.5 SP1 的解决方案 参考文章: (1)Windows 10 安装 Sql Server 2014 反复提示需要安装 .NET Framework 3.5 SP1 的解决方案 (2)https://www.cnblogs.com/VAllen/p/resolved-microsoft-sql-server-2014-setup-requires-microsoft-net-framework-3-5-sp1-to-be-installed.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/4437884/blog/4713391

基于阿里云日志服务快速打造简版业务监控看板

只愿长相守 提交于 2020-11-11 13:44:20
前言 最近老黄一直在弄双11相关的东西,所以博客和github都没怎么更新,这期间在公司也弄了不少东西。 下面就简单分享一下最近做的业务监控相关的内容吧。 先来说一下背景。 某业务在双11第一波大促的时候因为没有提供实时的业务看板,总结会的时候技术同事被相关领导和业务人员投诉,说是没办法清晰的了解到当时的情况,不能及时有效的调整对应的策略。 事后老黄了解到,那个业务是比较老的业务了,资源比较紧张,不敢去实时怼数据库(单点),怕数据库挂了,业务就全凉了。 为了避免尴尬的现状,不想再一次挨批,只能搞呀。 分析现状 3个应用,.NET Framework的项目,都是windows服务器,没有容器化。 离双11只有几天,不能改动太大,而且还要应对业务部门新的需求。 当时能想到的方案 业务埋点,接入prometheus,结合grafana 业务发MQ,消费数据到ES,前端做个面板 业务埋点,接入日志服务,结合仪盘表 大致分析 方案1,业务团队对prometheus几乎是0认知,了解相关概念都要花不少时间,pass 方案2,MQ目前用的是腾讯云的CMQ,被坑过2次了,也不能很好的hold住ES,pass 方案3,有按内部规范打日志,业务方只要在关键地方加一行对应的日志,然后交由logtail去采集,上传到日志服务 所以在这三种方案中,老黄还是选了 方案三 。

记一次 FastDFS上传文件时,Java端报 java.net.SocketException: Connection reset by peer: socket write error

你说的曾经没有我的故事 提交于 2020-11-11 13:29:39
淦,前端上传视频时报错,一直报 java.net.SocketException: Connection reset by peer: socket write error,排除了半天,看了看fastfds日志 [2020-11-11 10:52:18] ERROR - file: storage_nio.c, line: 371, client ip: 192.168.126.28, pkg length: -183248834550325426 < 0 [2020-11-11 10:56:19] ERROR - file: storage_service.c, line: 4529, no space to upload file, free space: 953 MB is too small, file bytes: 3755916, reserved space: 952 MB(10.00%) [2020-11-11 10:56:19] ERROR - file: storage_service.c, line: 8069, client ip: 192.168.126.28, unkown cmd: -40 日,原来是空间不够了,找了个删除脚本 #!/bin/bash #删除文件 #解释 找到/FastDFDS/FastDFS 目录下 30 天前修改的 名字任意 并删除

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

我的未来我决定 提交于 2020-11-11 04:43:28
一、易于腐化的软件设计 犹记得刚刚参加工作时,是地图厂商四维图新集团旗下的一家子公司,主要从事规划测绘相关软件研发的公司。当时我的项目是为勘测设计院提供相对应的应用软件,对地理信息和规划相关的图纸信息,几乎已经专业水平。事实上,规划设计大概和软件设计类似,有规划的设计、或无规划的设计,造成的结果几乎是天壤之别。 我们或许很容易就能设想到一个毫无规划设计的城市,纵横交错的路网、杂乱无章式的建筑布局、各种凌乱的棚户区设计,恰好象征着软件设计的无序性,也恰好体现了软件企业在经费不足、组织缺乏管理、开发者能力不足、软件随时随地想改就改时的行业现状,只能说这样的软件是最能符合当时实际劳动生产力水平的产品。 如图一所示,巴西棚户区,层层叠叠、风格迥异、密密麻麻,如果作为一个外人贸然来到这样的地方,大概很容易迷失期间、更不用说充斥在棚户区的各类毒品和黑社会。杂乱无章的建筑和街区,就像代码中错综复杂的调用链;而借助贫民区搞事的黑社会就像是代码中的异味或者bug,表面上看起来如此平静、与世无争、但是你永远也不知道啥时候会来一冷枪。 不要以为离我们很远,我们其实轻易就能写出这样的软件工程项目。不一定是“大泥球”系统,也有可能只是一些看似简单的业务系统,但内部代码逻辑,可能会复杂到令人窒息的程度。也许那个时候有个别开发者也许会试图靠自己的能力来改变局面,但是往往也会碍于屎山太大,难以下咽。

深入了解http协议

丶灬走出姿态 提交于 2020-11-10 08:40:21
No.1 声明 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。 雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。 No.2 HTTP简介 Hypertext Transfer Protocol,超⽂本传输协议,和 HTML (Hypertext Markup Language 超⽂本标 记语⾔) ⼀起诞⽣,⽤于在⽹络上请求和传输 HTML 内容。 超⽂本,即「扩展型⽂本」,指的是 HTML 中可以有链向别的⽂本的链接(hyperlink)。 No.3 HTTP工作原理 用户输入地址后回车或点击链接 浏览器拼装 HTTP 报文并发送请求给服务器 服务器处理理请求后发送响应报文给浏览器 浏览器解析响应报文并使用渲染引擎显示到界面 No.4 HTTP请求报文 请求报文具体格式: 4.1 请求行信息 Request Method 请求方法 方法 作用 GET 请求获取由 Request-URI 所标识的资源 POST 请求服务器接收在请求中封装的实体,并将其作为由 Request-Line 中的 Request-URI 所标识的资源的一部分 HEAD 请求获取由

奉上简单的.Net后端开发模板

白昼怎懂夜的黑 提交于 2020-11-10 06:46:23
假定一个场景,开始做开发的你,领导走到你的面前说道:“小伙子,看了简历和最近的工作表现,很不错,现在交给一个任务,开发一个简单的CMS后端接口吧,前端有人配合你”,当时你内心读白:“CMS什么东西,还好我可以百度,但我要在哪个项目上开搞啊”,这时的领导又说道:“项目你自己建立,然后上传git就行了”,这时的你是否已经石化,本篇文章就为您提供一个快速建立后端开发的模板,作者自己总结出品,如有不妥,指正即可。 模板代码下载: https://github.com/cqhaibin/ApiTemplate.git 目标 由于搭建的只是后端开发模板,主需要满足基本要求即可。 框架结构简单 数据库支持:Mssql, Mysql 构架易于上手 支持良好的业务扩展 是一套基础开发模板 技术选型 开发语言:c# 运行时 .net Framework4.5 IoC:Autofac、Autofac.WebApi2 Dto:AutoMapper 序列化:Newtonsoft.Json Orm:FreeSql Api:Aspnet.WebApi 数据库:首先MSSQL、次先Mysql 缓存:基于List或Dictionary实现单机内存级缓存 架构分层 数据库访问层 Freesql实体定义,也就是我们常说的是数据库实体 提供dbContext上下文的方式访问 复杂的sql操作接口定义及实现,如:多表查询