首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C#设计模式——(创建型-单例设计模式)

    用volatitle标记的成员可以避免指令重排 public volatile static LazyManSingle lazy; //创建锁 private static...LazyManSingle l1=(LazyManSingle)conts[0].Invoke(null); //创建完成后,在私有的构造函数中,私有的标记位已经变为true //如通过反射来进行破坏...,通过反射来拿到私有字段,把值在创建第二个对象之前改成false FieldInfo fieldInfo=t.GetField("isOK",BindingFlags.NonPublic|BindingFlags.Static...} return lazy; }}可以通过反射拿到私有字段isOK //如通过反射来进行破坏,通过反射来拿到私有字段,把值在创建第二个对象之前改成false FieldInfo...fieldInfo=t.GetField("isOK",BindingFlags.NonPublic|BindingFlags.Static); fieldINfo.SetValue("isOK

    55340

    细说枚举

    并且在后期向枚举中添加新的枚举值时应将其添加到所有枚举值的后面,或者显示指定枚举值对应的数值,这样才能避免因添加新值导致枚举类型中的枚举值对应的数值改变。...1.枚举之间转换 首先我要说明的是在 C# 中不支持不同枚举数组之间的直接转换,所以如果想要实现不同枚举数组之间的转换我们可以利用 CLR 宽松的赋值兼容性这一特点来进行转换,需要转换的两个枚举必须具有相同的基础类型...Tip:字符串向枚举转换不可本地化,如果必须本地化,就必须是那些对上层用户不可见的消息。因此在实际开发中应该尽量避免枚举和字符串之间的转换。...(Country)Enum.ToObject(typeof(Country),2) 4.注意 字符串转换为枚举和数字转换为枚举都必须先进行判断所要转换的值是否包含在枚举中,判断的方法也很简单只需要调用...fieldInfo = country.GetType().GetField("CN"); object[] attribArray = fieldInfo.GetCustomAttributes

    2.3K10

    自动依据你的数据库生成SQL练习题及答案,宝藏软件鉴赏

    chatGPT出来的第一时间,我其实就特别关注,也去试了试相关的SQL功能,但是非常遗憾,chatGPT无法提供相关的功能。...接下来本人也聊聊我是想这些智能化一点的功能思路。...这个不能基于物理外键关系来实现,因为大多表都没有物理外键; 如何让SQL模板引擎生成的题有数据? 如何对比生成的答案和用户输入的答案? 如何识别数据库的逻辑ER结构?...String.format("group by 以后的查询结果无法使用别名,所以不要想着先单表 group by 计算出结果再从第二张表里添上课程信息,而应该先将两张表 join 在一起得到所有想要的属性再对这张总表进行统计计算...."); } } 如何对比生成的答案和用户输入的答案?

    74130

    dotnet 5 静态字段和属性的反射获取 没有想象中那么伤性能

    此时我第一个反应就是这部分逻辑的性能有锅,于是尝试了进行加上缓存来优化。...方法去获取字段或属性的 FieldInfo 或 PropertyInfo 对象,再通过这些对象去获取实际的值,甚至我都想要作出缓存,通过 Func 的方法返回静态属性或字段 但是实际测试发现了其实尝试省去...甚至通过 Func 的方法返回静态属性或字段的性能,其实都和没有提升,甚至还因为构建字典的 Key 而下降,我采用了两个方法进行性能优化,分别是缓存起来字段或属性的 FieldInfo...当然了上面的命名是有锅的,应该是获取器才对,而不是 creator 创建器 性能测试的代码如下 public static class Foo { public static...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

    1.3K10

    .Net中的反射(序章) - Part.1

    本文将分为下面几个部分介绍.Net中的反射: 序章,我将通过一个例子来引出反射,获得对反射的第一印象。 查看类型基本信息 反射特性(Attribute)。...我一直认为那些公理式的定义和概念只有在你充分懂得的时候才能较好的发挥作用。...在应用程序中,也不会给用户提供对这个表记录的增删改操作界面。 而在程序中调用这个表时,经常是这种情况:我们需要根据预订状态对订单列表进行筛选。...我们回想一下上面是如何使用数组来解决的,它存在一个缺陷:我们默认地将订单状态值与数组的索引一一对应地联系了起来。...由此看来,IEnumerable是实现可枚举集合的基础,在我翻译的一篇文章 C#中的枚举器 中,对这个主题做了详细的讨论。

    1.5K40

    ASP.NET MVC实现依赖注入

    AutoWired这个自定义注解的变量,从Bean容器中取出实例进行赋值,同时我们还需要在Global文件中的Start方法中,进行默认工厂进行替换 ControllerBuilder.Current.SetControllerFactory...FastControllerFactory()); 2.IOC容器的实现 c#中的自定义容器有很多开源成熟的框架,例如AutoFac等,这里我们是自己实现一个轻量级的版本 源码地址:FastIOC: 轻量级IOC容器 这里就重点说一下如何在...对象的核心方法,其实很简单,就是通过反射创建对象,其中需要注意的有两点 1)对于一个Bean初始化时需要扫描Bean中的所有变量,如果内部还有依赖注入的嵌套对象,需要使用递归,直到没有需要注入的Field 2)我这里使用的是单例模式...,因为在测试过程中可能存在在A类中对B进行依赖注入,在B类中对A进行依赖注入,常规创建过程,如果使用递归进行扫描,就会进入死循环,内存溢出,所以使用对象的单例,一旦创建就放入字典中,如果再次扫描到该对象需要注入...,则直接取出使用,就避免了循环引用 3.其他 对其他不在Controller中使用的类需要依赖注入,则需要直接从IOC的Bean容器取出使用 private AuthUtil @AuthUtil =

    50220

    lucene原理及源码解析--核心类

    对全文数据的搜索最原始的做法是顺序扫描。就是找一个开始从头到尾的匹配,匹配对了就记录一下,然后继续扫直到结束。Windows的搜索功能就是这么做的。...这个函数是一个Directory的工厂(工厂模式),其实打开类型的文件也是和环境进行了适配的,也可以理解为适配器模式。研究任何一种源码都离不开其设计模式的。 今天先介绍几个核心的类。...所以今天多打算多些几行代码,忘掉我那可爱的苹果,桂圆和小金桔。苹果总共就四个,是谁那么狠心忍心拿走一个啊[大哭][大哭]拿走我的橙子以为我数不出来吗,不知道我记性好啊,看一眼就知道几个了啊。...其中FilterDirectory的子类都是给Directory添加附加的功能:TrackingDirectoryWrapper是记录文件的写入或删除;NRTCachingDirectory是提供对RAMDirectory...下面是analysis包,这个是用来分词的,我在当初做项目的时候用的是IK分词器。因为歪果仁的分词器对中文的支持不太好,什么自带的标准分词器啥的都是一个个字就是一个分词了。

    1.5K20

    ASP.NET中绑定枚举类型

    这样做也行但如果我的枚举类型中的枚举值一旦改变,那么你就得满世界的去找然后再修改很麻烦。...这里我有反射动态的绑定枚举值就可以很方便的做修改了,代码如下: public enum Eume { 星期一, 星期二, 星期三, 星期四, 星期五 } 绑定方法: private void BinderDays...() { Type type = typeof(Eume); FieldInfo[] fields= type.GetFields(); int count = fields.Length; for (...(item); } } OK这样就可以了,不过可惜的是枚举值显示转换不支持string类型的,如果支持的话那就很爽了。...本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。

    1.2K10

    【深入浅出C#】章节 9: C#高级主题:反射和动态编程

    as运算符: as运算符用于尝试将一个对象强制转换为指定类型,如果转换成功则返回对象,否则返回null。这通常用于安全的类型转换。 object obj = "Hello, World!"...它们可以帮助你避免类型转换时的异常,并提供了更安全的方式来处理对象的类型信息。...例如,可以将反射方法转换为 Func 委托,并将其缓存,然后多次调用该委托。 避免不必要的反射: 仅在必要时使用反射。尽量使用编译时已知的类型和成员,以避免不必要的反射开销。...通过缓存反射信息,你可以避免重复地进行昂贵的反射操作,从而减少性能开销。以下是如何缓存反射信息的一般步骤: 选择合适的数据结构: 选择一个合适的数据结构来存储反射信息。...反射的性能优化: 缓存反射信息、使用泛型委托、避免不必要的反射操作等方法可以提高性能。 反射的安全性问题: 反射可以绕过访问权限,可能导致安全漏洞,因此需要谨慎使用,并对输入数据进行验证和过滤。

    1.5K32

    国产新一代 fastjson 2 你开始使用了吗?来看看源码解析吧!

    本篇将采用代码测试 + 源码阅读的方式对FastJson2的性能提升做一个较为全面的探索。...在适当的情况先,对jvm进行调优,是对应用程序的性能有影响的 我们需要知道,堆空间并非越大越好,空间越大代表着GC处理时间会越长,其表现为应用响应时间的增加。...,         fieldInfo.features,         fieldInfo.format,         fieldInfo.label,         method,         ...parseObject 方法 /**  * json转换java对象  *  * @param text  json字符串  * @param 需要转换的类  * @return Class  */ @...---- ---- 欢迎加入我的知识星球,一起探讨架构,交流源码。

    88520

    C#进阶-ASP.NET网站会话固定漏洞的解决

    本文将介绍 ASP.NET 中常见的会话固定漏洞、如何复现该漏洞、提供相应的解决方案以及修复后的测试方法。...通过在用户登录后及时更新 SessionID,可以有效避免因固定 SessionID 导致的账户劫持和敏感信息泄露风险。希望这篇博客能为开发者在实际项目中提供参考,提升应用程序的安全防护能力。...如果在用户登录后,服务器仍然沿用登录前的 SessionID,攻击者可以通过诱导用户在已知 SessionID 的环境下进行登录,进而实现敏感信息泄露、账户劫持等安全风险。...实现代码下面的代码展示了如何在登录成功后重置 SessionID 的具体实现:public static void ResetSessionID() { HttpContext Context =...这样一来,用户登录成功后原有的 SessionID 将被替换为新的 SessionID,避免了会话固定漏洞的风险。

    31689

    Swift 的 MemoryLayout 是如何工作的(1)

    所以,就先把 Swift 的 MemoryLayout 是如何工作的 部分拆出来单独写两篇文章。 希望读者阅读本文后,能够从 Swift 编译器 的视角了解 MemoryLayout 是如何工作的。...在实际场景中,Swift 编译器会按照以下方式进行对源码进行处理。我们后续会依次介绍每个阶段。 ? Parse/Sema Parse/Sema 阶段会通过源码构建 AST,并组装类型信息。...即使开发者传入的优化命令是 none,该类优化也会被强制执行。 我们下面要讲的 Mandatory inlining 就属于其中的一种。...这类函数被编译时,会在 Mandatory SIL passes 阶段被强制内联处理。...结语 通过对 SIL 和 内置类型 的分析,我们从 Swift 编译器 的视角了解 MemoryLayout 是如何工作的。

    1.3K51

    Swift 中的反射 Mirror

    如果里面包含类则还需要进行递归处理。...▐ 2.3 转 JSON 注:这里并没有真正的转换成json字符串,还是只转换成了字典,重要在思想,如果需要转换成json还需要很多优化,以及特殊字符串的考量。...其实提到反射我们想到最多的应该就是JSON了,这里我们利用Mirror的特性,将对象转换成字典,对基本类型和类做了相应的处理,体会一下转json的思路。...我们知道Swift是一门静态语言,那么在底层是如何实现的获取对应的属性值的呢?又或者说Swift的反射特性是如何实现的呢?下面我们通过对Mirror底层源码的探索来寻找答案。...在Description可以获取name也就是属性的名称 通过内存偏移获取到属性值 还可以通过numFields获取属性的个数 下面通过该流程图总结一下swift中的mirror对结构体进行反射的主要流程

    5.5K10
    领券