摘要:
下面代码(摘抄之别处,原创在哪不知)是采用TransparentProxy和RealProxy实现对象的动态代理。碍于其使用反射掉用方法,所以就小试着将反射改成Expression以提高执行的效率。第15行就是原来代码中反射掉用方法的关键代码。 其他的辅助类 将15行替换为如下Expressio 阅读全文
摘要:
短时间锁定的情况下,自旋锁(spinlock)更快。(因为自旋锁本质上不会让线程休眠,而是一直循环尝试对资源访问,直到可用。所以自旋锁线程被阻塞时,不进行线程上下文切换,而是空转等待。对于多核CPU而言,减少了切换线程上下文的开销,从而提高了性能。) 以下是简单实例(并行执行10000次,每次想li 阅读全文
摘要:
Lock是常用的同步锁,但是我们无法在Lock的内部实现异步调用,比如我们无法使用await. 以下面的代码为例,当你在lock内部使用await时,VS会报错提醒。 最简单的解决办法就是使用第三方的库Nito.AsyncEx。可以通过Nuget安装。 通过AsyncLock就可以在锁的内部实现异步 阅读全文
摘要:
ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序。 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module).其中13个依赖于Abp这个核心包。另外两个包(FluentMigration,Web.Resou 阅读全文
摘要:
关键代码第4,5行。 很简单的原理不解释:readonly + Lazy(.Net 4.0 + 的新特性) 测试结果: 阅读全文
摘要:
《C++ Primer 4th》读书笔记 相对于小的程序员团队所能开发的系统需求而言,大规模编程对程序设计语言的要求更高。大规模应用程序往往具有下列特殊要求: 1. 更严格的正常运转时间以及更健壮的错误检测和错误处理。错误处理经常必须跨越独立开发的多个子系统进行。 2. 能够用各种库(可能包含独立开 阅读全文
摘要:
《C++ Primer 4th》读书笔记所谓泛型编程就是以独立于任何特定类型的方式编写代码。泛型编程与面向对象编程一样,都依赖于某种形式的多态性。面向对象编程中的多态性在运行时应用于存在继承关系的类。我们能够编写使用这些类的代码,忽略基类与派生类之间类型上的差异。在泛型编程中,我们所编写的类和函数能... 阅读全文
摘要:
《C++ Primer 4th》读书笔记面向对象编程基于三个基本概念:数据抽象、继承和动态绑定。在 C++ 中,用类进行数据抽象,用类派生从一个类继承另一个:派生类继承基类的成员。动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。继承和动态绑定在两个方面简化了我们的程序:... 阅读全文
摘要:
《C++ Primer 4th》读书笔记重载操作符是具有特殊名称的函数:保留字 operator 后接需定义的操作符号。Sales_item operator+(const Sales_item&, const Sales_item&);声明了加号操作符,可用于将两个 Sales_item 对象“相... 阅读全文
摘要:
每种类型还定义了创建该类型的对象时会发生什么——构造函数定义了该类类型对象的初始化。类型还能控制复制、赋值或撤销该类型的对象时会发生什么——类通过特殊的成员函数:复制构造函数、赋值操作符和析构函数来控制这些行为。如果没有显式定义复制构造函数或赋值操作符,编译器(通常)会为我们定义。复制构造函数、赋值... 阅读全文