夸克之书

  • 首页
  • 科普
  • 笔记
  • .NET/C#
  • 物联网
  • 算法
  • Linux
  • 树莓派
.NET/C#
C#编程技术
.NET/C#

C#几种深拷贝方法探究及性能比较

本篇文章中所用部分源码(反射、表达式树)来源于博客:https://www.cnblogs.com/lsgsanxiao/p/8205096.html 之前在有篇博客中学习了设计模式原型模式,在原型模式中就提到了对象的深拷贝。深拷贝指的是拷贝一个对象时,不仅仅把对象的引用进行复制,还把该对象引用的值也一起拷贝。与浅拷贝不同的就是,深拷贝后的拷贝对象就和源对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。 在查询资料之后,探究了以下几种C#对象深拷贝方式,同时简单对比了以下列出的几种深拷贝方式的速度(…

2021-03-16 0条评论 6597点热度 5人点赞 afirefish 阅读全文
.NET/C#

C# Json序列化时将长整型(long)属性序列化为Json字符串

在开发时遇到个问题,数据设计的时候,采用长整型作为数据库Id,但是js只能支持53位,超过后将会溢出,导致C#中64为长整型在js中变得不可靠。 目前想到的方法是在序列化的时候,将id强制序列化为string。如下所示: public class Person { [JsonConverter(typeof(IdToStringConverter))] public long ID { get; set; } public string Name { get; set; } } public class IdToS…

2020-11-07 0条评论 3855点热度 0人点赞 afirefish 阅读全文
.NET/C#

23种常见的设计模式(9):命令模式

什么是命令模式?命令模式是将一个请求(命令)封装成一个对象,把不同的请求进行参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。可能理解起来有些困难,不过不用着急,我们一起通过下面这个例子来学习命令模式。 但本篇主要内容是了解命令模式的结构,命令模式的撤销和恢复功能暂且不表(比较复杂,可以参考数据库日志恢复)。 以抗日神剧中的一个营为例,一般来说一个营中分为多个连队,他们可能是同种性质的兵种也也能不是同种性质的兵种。(具体的划分我也不清楚,但是看日神剧里面确实是这么演的,咋们也不用去追究具体是不是这样…

2020-02-08 0条评论 2753点热度 0人点赞 afirefish 阅读全文
.NET/C#

23种常见的设计模式(8):中介者模式

大家都知道无论是在家里面还是公司中,无论是通过有线还是WIFI方式连接网络,共享文件都是通过交换机作为中间媒介进行数据交换的(普通家用路由器是将路由器和交换机整合到一起了的)。这个交换机就是不同设备之间数据交换的中介者。 现在我们来假设一个简单的场景,公司里面需要多个电脑连接在一起并互相共享文件。先来看看没有交换机的情况是怎么样的。 在没有交换机(中介者)的情况下,每台电脑都要连接到其它的电脑上面。假如说有N台电脑的话,工程量可想而知。我们用代码来实现以下。 首先是每台电脑都需要共享文件,和获取其它电脑文件的方法。…

2020-02-04 0条评论 2726点热度 1人点赞 管理员 阅读全文
.NET/C#

23种常见的设计模式(7):原型模式

原型模式是一种很简单也是很常见的一种模式,用一句来概括就是用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 举一个简单的例子,在考试后我们查看各个参考人员的试卷。一般来说,同一考场同一考次的试卷是一样的(别杠,举个例子啦)。那么怎么生成每个人的试卷呢?第一种是每个人new一个各自的试卷对象,如果试卷有千百万份呢,这时候new的性能就不太乐观了。所以有了更好的性能解决方案,首先创建一个人试卷对象,然后直接通过拷贝,在拷贝之后重新设置试卷的分数,姓名,答题答案不就行了吗? 既然是原型模式,肯定有一个或多…

2020-01-14 0条评论 2868点热度 0人点赞 afirefish 阅读全文
.NET/C#

23种常见的设计模式(6):代理(委托)模式

正如其名,代理模式就是为其他对象提供一种代理以控制对这个对象的访问。理解起来很简单,就是提供一个代理对象,让代理对象代理执行实际对象中的方法。说穿了,代理类就相当于我们生活中的中介。而本篇将分为两个小节,分别是静态代理和动态代理。通过这两个小节,循序渐进的学习代理模式。 一、静态代理 举个简单的例子。在打官司的过程中,我们是原告。我们要请个律师来代理我们进行辩护,而这个律师就是我们的代理人。 (代理律师:根据当事人的委托代表当事人进行法律活动的代理人。)PS:我个人也没打过官司,具体流程也不是很清楚,大概明白就行。…

2020-01-13 0条评论 4091点热度 0人点赞 afirefish 阅读全文
.NET/C#

23种常见的设计模式(5):建造者模式

还是咋们的电脑店,不过今天的客户有点不同寻常。还记得上次那个我们给装了9900K CPU的客户吗?没错,今天他又来了。但是今天他的需求有点不同寻常,他要装300套和之前配置一样的电脑,用来开一个巨豪华的网咖。对于我们来说当然高兴呀,而且这生意可不能黄了。但是单单靠我们几个人肯定不行呀,等装完300台电脑,黄花菜都凉了。 于是我们请了两个经验丰富的临时工来帮我们组装一下。那么问题就来了,临时工他们两个人的装配顺序不一样,每个人有每个人的工作习惯,但是肯定要按照客户的要求,按照之前配置来装电脑呀。于是我们就做出规定,对…

2020-01-04 0条评论 2548点热度 2人点赞 afirefish 阅读全文
.NET/C#

23种常见的设计模式(4):模板方法模式

首先我们要知道的是,模板方法模式是一种非常非常简单的模式。但是简单不代表不实用,模板方法模式也是一种应用非常非常广泛的模式。可能大家在编写程序的时候已经无数次的应用到了,但是却不知道它有一个非常高大上的名字:模板方法模式。 来看看模板方法模式的定义:定义一个操作中的算法框架,而将一些步骤延迟到子类当中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 举一个很简单的例子。某天我们不想996了,然后去开了一家电脑店,给客户组装电脑。但是组装的电脑配置肯定是根据价格来定的,不可能3000块的电脑我们给装…

2020-01-03 0条评论 2671点热度 0人点赞 afirefish 阅读全文
.NET/C#

23种常见的设计模式(3):抽象工厂模式

在上一篇(工厂方法模式)中我们发现了一个问题,就是一个工坊里面只能生产一个产品?现在问题就来了:突然客户要求,每种产品要分为两种型号,即型号1和型号2。 这时就需要我们对我们的工坊进行改造了,给我们的工坊添加两条生产线,让每个工坊可以同时生产不同型号的产品。 首先是我们的产品,我们要将我们的产品划分为两种不同的型号,分别是型号1和型号2。于是我们把每种产品抽象出来,以产品A为例: 然后分别再去实现产品A的两种不同型号。 产品B,产品C依次类推。 好了,现在我们生产的产品已经完成改造了。接下来是对我们的工坊进行进一步…

2020-01-01 0条评论 2844点热度 0人点赞 afirefish 阅读全文
.NET/C#

23种常见的设计模式(2):工厂方法模式

在进入正题之前,我们先一起来重温一下简单工厂模式。 什么是简单工厂模式?通俗一点来说就是就是专门定义一个类或者或一个方法根据不同参数来返回继承了同一个抽象类的具体实现类。是不是很像一个类工厂,所以就叫简单工厂模式了。 对于简单工厂模式,举个简单的例子。我们开了一家工厂,现在在生产三种产品,分别是ProductA、ProductB和ProductC。 现在我们先来定义我们的抽象工厂类: 现在我们来创建三种产品的对应的产品类: 好了,工厂有了,产品也有了。我们再来招聘一个产品经理吧,通过产品经理来控制产品的生产。 BO…

2019-12-30 0条评论 2622点热度 0人点赞 afirefish 阅读全文
.NET/C#

23种常见的设计模式(1):单例模式

首先一个问题,什么是单例模式?根据我的理解,单例模式重点突出一个“单”字,无论干什么都是在同一个类中进行的,一个类只能生成一个对象,所有的操作都通过这个对象来进行操作。 很显然,要控制一个类只能提供一个单一的对象供外部调用使用,就需要将构造行数私有化,让其他人(类)不能创建我这个类。同时,要对外提供服务,我就需要将这个已经由我创建好了的对象公布出去,让别的人(类)通过我公布的实例来对我进行访问。 以一个Log类作为例子,在项目开发的生命周期中,需要在无数的地方打印日志。不可能每次调用一下日志打印就要去创建一个日志打…

2019-12-29 0条评论 2379点热度 0人点赞 afirefish 阅读全文
.NET/C#

ASP.NET Core 3.1 WebApi Swagger与API版本控制的美妙结合

在编写API时,很多时候会用到API版本控制和API文档编写及测试调试。本文主要记录如何使用Microsoft.AspNetCore.Mvc.Versioning进行API版本控制以及Swagger API书写框架的使用。 一、JSON 配置 从asp.net core 3.0开始,默认使用微软新的 JSON组件(System.Text.Json),尽管据微软实验室测试性能高于Newtonsoft.Json ,但是推荐还是用 Newtonsoft.Json,比较成熟而且对很多比较特殊的情况都有处理,使用方式如下: …

2019-12-16 1条评论 6315点热度 1人点赞 afirefish 阅读全文
123
放松一下
https://www.quarkbook.com/wp-content/uploads/2021/05/凤凰传奇-海底(Live).flac
分类
  • .NET/C#
  • Linux
  • 树莓派
  • 物联网
  • 科普
  • 笔记
  • 算法
  • 默认
最新 热点 随机
最新 热点 随机
维持宇宙的四种“力量”——关于四大基本力 MinGW图形安装界面里面没有mingw32 make.exe解决办法 Windows Server 2022安装Intel I225-V/I226-V驱动 System.Text.Json与Newtonsoft.Json Json序列化与反序列化性能对比 R86S散热改造 Windows移除多余输入法'Unknown Locale (qaa-Latn)'
Windows Server 2022安装Intel I225-V/I226-V驱动MinGW图形安装界面里面没有mingw32 make.exe解决办法维持宇宙的四种“力量”——关于四大基本力
傲腾内存开启记(傲腾加速从盘) IIS 当前标识(***)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限。 引力能否作为永不枯竭的能量来源? MSBuild 构建选项,将项目文件复制到输出目录当中 Steam饥荒专用服务器搭建 ASP MVC设置Cookie
最近评论
afirefish 发布于 4 个月前(11月28日) 非常感谢,非常棒!
》随缘《 发布于 4 个月前(11月20日) 最新【一键处理】方法: https://github.com/MrXhh/VSTools/rele...
管理员 发布于 9 个月前(06月22日) emmmm....服务器好一点???
wking 发布于 10 个月前(05月23日) 请问贵博客是怎么优化的,网页响应速度非常快。我博客同样的WordPress和kratos主题,但点一...
去月球 发布于 1 年前(01月17日) 如果使用CSI的摄像头应该怎么修改命令呢
书签
  • 打赏
  • 毒鸡汤
  • 米店
  • 金鱼直播间
用户您好!请先登录!
登录 注册

COPYRIGHT © 2022 quarkbook.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备15036129号-9

登录
注册|忘记密码?