随笔分类 - .NET
摘要:本文将告诉你从“dotnet run”到“hello world”,如何使用 PerfView 来分析 .NET 运行时在启动期间所花费的时间。 代码示例 在这个示例中,我故意只关注.NET运行时在程序启动(start-up)过程中的操作,以确保运行的用户代码最少,因此只有以下的“Hello Wor
阅读全文
摘要:`ResourceManager .resources`资源文件的存取。 为了实现对独立二进制 资源文件的支持,我们自定义了 。 在本篇中将创建两个自定义的 ,以实现对独立 资源文件和自定义结构的XML资源文件的支持。 一、自定义ResXResourceManager实现对.Resx资源文件的支持
阅读全文
摘要:为了构建一个轻量级的资源管理框架以满足简单的本地化(Localization)的需求,我试图直接对现有的 编程模型进行扩展。虽然最终没能满足我们的需求,但是这两天也算对.NET如何进行资源的存取进行了深入的学习。在本篇文章中,我会通过自定义 让资源的存储形式不仅仅局限于 文件,你可以根据需要实现任意
阅读全文
摘要:## .NET 大数据量并发解决方案 大并发大数据量请求一般会分为几种情况: >1. 大量的用户同时对系统的`不同功能页面`进行`查找、更新操作` >2. 大量的用户同时对系统的`同一个页面,同一个表`的大数据量进行`查询操作` >3. 大量的用户同时对系统的`同一个页面,同一个表`进行`更新操作`
阅读全文
摘要:匿名函数 匿名函数(Anonymous Function)是表示“内联”方法定义的表达式。匿名函数本身及其内部没有值或者类型,但是可以转换为兼容的委托或者表达式树类型(了解详情)。匿名函数转换的计算取决于转换的目标类型:如果是委托类型,则转换计算为引用匿名函数所定义的方法的委托;如果是表达式树类型,
阅读全文
摘要:Unity 是一款知名的依赖注入容器( dependency injection container) ,其支持通过自定义扩展来扩充功能。 在Unity软件包内 默认包含了一个对象拦截(Interception)扩展定义。 本篇文章将介绍如何使用对象拦截(Interception)来分离横切关注点(
阅读全文
摘要:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException的异常一般来自于两种: 第一种情况: 解决办法:直接在项目引用中添加 Micorsoft.Csharp 第二种情况: 引起这种异常的错误是因为匿名类型不能跨程序集(assembly), 解决办法
阅读全文
摘要:FileResult is an abstract base class for all the others. FileContentResult - you use it when you have a byte array you would like to return as a file
阅读全文
摘要:上次我们说了多级缓存,本章详细介绍下内存缓存该如何设计。 一:分析设计 假设有个项目有一定并发量,要用到多级缓存,如下: 在实际设计一个内存缓存前,我们需要考虑的问题: 1:内存与Redis的数据置换,尽可能在内存中提高数据命中率,减少下一级的压力。 2:内存容量的限制,需要控制缓存数量。 3:热点
阅读全文
摘要:上次主要讨论缓存读写这块各种代码实现。本篇是就上次的问题接着来,继续看那些年我们各种缓存用法。 一:缓存预热 在第一次加载时,我们的缓存都为空,怎么进行预热。 单机Web情况下,一般我们使用RunTimeCache。相对于这种情况下: 1:我们可以在启动事件里面刷新 void Application
阅读全文
摘要:目录 一: 基本写法 二:缓存雪崩 1:全局锁,实例锁 2:字符串锁 三:缓存穿透 四:再谈缓存雪崩 五:总结 一:基本写法 为了方便演示,我们用Runtime.Cache做缓存容器,并定义个简单操作类。如下: 简单读取: 在项目中,有不少这样写法。这样写没有错,但在并发量上来后就会有问题。 二:缓
阅读全文
摘要:C#有没有方法可以直接都用已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法),而不需要重新编写代码? 答案是肯定,就是通过接下来要说的 DllImport 。 DllImport的namespace: using System.Runtime.InteropService
阅读全文
摘要:1: Ctrl + Enter (在光标指定位置的上面添加一行,并将光标移至新添加行的行首位置) Ctrl + Shift + Enter (在光标指定位置的下面添加一行,并将光标移至新添加行的行首位置)2:Ctrl + Shift + L (删除当前行)3:Ctrl + M + O (折叠所有的...
阅读全文