原型模式详解(九)

一、定义    用原型实例指定创建对象的种类, 并且通过拷贝这些原型创建新的对象。原型模式是和单例模式一样很简单的一种设计模式。二、优点    1.性能优良    原型模式是在内存二进制流的拷贝, 要比直接new一个对象性能好很多, 特别是要在一个循环体内产生大量的对象时, 原型模式可以更好地体现其优点。    2.避免了反复的相同赋值操作    例如有一个 Mail 类,现在创建了一个实例对象 ...
分类: 其他 发布时间: 06-14 22:07 阅读次数: 3

中介者模式(十)

一、引子1.场景模拟    假设有一家商店。采购员负责采购商品,销售负责出售商品,商店的库存负责存储商品。他们彼此都存在一定的依赖关系,那么他们之间的关系大致可以如下图描述:2.场景扩大    我们知道迪米特法则认为“每个类只和朋友类交流”,然而这个朋友类并非越多越好,朋友类越多,耦合性越大,想要修改一个就得修改一片。这不是我们所期望的。    上面那个场景还很简单,假如我们再扩大一点,引入供应商...
分类: 其他 发布时间: 06-14 22:07 阅读次数: 3

判断一个数是不是质数(素数),3种方式介绍

一、概念介绍    大家中学都学过,就不过多介绍了,大致提两点:    1.质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。    2.0和1既不是质数也不是合数,最小的质数是2二、方法介绍1.最直观,但效率最低的写法public static boolean isPrime(int n){ if (n <= 3) { ...
分类: 其他 发布时间: 06-14 22:07 阅读次数: 4

命令模式(十一)

一、定义    将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求的日志,可以提供命令的撤销和恢复功能。    简单的说,命令模式是实现的 “行为请求者(Invoker)” 与 “行为实现者(Receiver)” 间的解耦,将请求封装成一个命令,调用者只需要执行相应的 “命令(Command)” 即可。二、类图和成员角色1. Receiver 接受者    该角...
分类: 其他 发布时间: 06-14 22:07 阅读次数: 3

智能指针 unique_ptr 详解

一、智能指针1.什么是智能指针    简单地说,C++智能指针是包含重载运算符的类,其行为像常规指针,但智能指针能够及时、妥善地销毁动态分配的数据,并实现了明确的对象生命周期,因此更有价值。2.常规指针存在的问题    C++在内存分配、释放和管理方面向程序猿提供了全面的灵活性。但是这种灵活性是把双刃剑,一方面它使C++成为一种功能强大的语言,另一方面它让程序猿能够制造与内存相关的问题,比如内存泄...
分类: 其他 发布时间: 06-14 22:07 阅读次数: 4

装饰者模式(十三)

一、定义    动态地给一个对象添加一些额外的职责。就增加功能来说, 装饰模式相比生成子类更为灵活。二、类图及各角色1. Component 抽象组件(公共接口/抽象类)    装饰者模式必须要有这样一个抽象的组件,被装饰者和装饰者都是这个抽象的具体实现。往往定义我们最核心、最原始、最基本的对象。public abstract class Component { //抽象的方法 p...
分类: 其他 发布时间: 06-14 22:07 阅读次数: 3

策略模式(十四)

一、定义    策略模式(Strategy pattern)也叫政策模式(Policy Pattern),其定义为:定义一组算法, 将每个算法都封装起来, 并且使它们之间可以互换。二、类图及角色1. Context 封装角色    类似于锦囊妙计的锦囊,它也叫做上下文角色, 起承上启下封装作用, 屏蔽高层模块对策略、 算法的直接访问,封装可能存在的变化。public class Context {...
分类: 其他 发布时间: 06-14 22:07 阅读次数: 4

C# 规约模式与表达式树(Specification And Express-Tree)

在EF(Entity Framework)中引入了查询规约 它是配合“仓储模式”查询使用的 实际上仓储模式是用于优化数据库压力的 在很多的时候由于开发人员的问题它所带来的益处比较微妙 那么为什么需要使用规约模式 它主要是用于把复杂查询的问题进行切割细化 随意的组合其查询部分 比如传统的SQL语句 则是一种典型的规约的书面形式 规约故名思意是一种约束性质的东西 但显然规约更多是与查询相关 我时常
分类: 其他 发布时间: 06-14 22:07 阅读次数: 4

bzoj3143 洛谷3232 HNOI2013 游走 期望dp+高斯消元

题目链接 首先,我们想要求总的期望,那么我们发现如果我们能求出每条边的期望,之后对所有边的期望排序,贪心地给期望经过次数多的边赋小的编号,给期望经过次数少的边赋小的编号即可。 那么我们需要考虑如何求所有边的期望经过次数。 我们发现,每条边的期望次数是dpxdegx+dpydegydpxdegx+dpydegy\frac{dp_x}{deg_x}+\frac{dp_y}{deg_y},其中xx...
分类: 其他 发布时间: 06-14 22:07 阅读次数: 3

.NET Expression 从零开始一(基本认知):hello world!

对于.NET/Expression编程国内的话并没有过多相关的文献 相对的大多数人对于表达式树的动态编程几乎闻所未闻 至于别人看不看我并不在意    //  Expression e = Expression.Lambda( Expression.Call(typeof(Console).GetMethod("WriteLine
分类: 其他 发布时间: 06-14 22:07 阅读次数: 3

.NET Expression 从零开始二:数组与对象索引器

本文介绍 如何编写表达式语句块 操作“数组与索引器”,比如如何获取或设置数组元素 由或者如何设置索引器元素 然后打印其输出值  OK...那么我们先看看如何从一个数组元素中获取其值,从本文开始将不会在编写Lambda express块 由编译器编译转换 只需要写表达式就够了, so... static void Main() { Para
分类: 其他 发布时间: 06-14 22:07 阅读次数: 4

模积和 洛谷2260 bzoj2956 整除分块、逆元

题意: 求∑i=1n∑j=1m(n mod i)∗(m mod j),i≠j∑i=1n∑j=1m(n mod i)∗(m mod j),i≠j\sum_{i=1}^n\sum_{j=1}^m(n\ mod\ i)*(m\ mod\ j),
分类: 其他 发布时间: 06-14 22:07 阅读次数: 4

.NET Expression 从零开始三:运算符

本文介绍表达式中允许的运算符表达式,如一元、二元、三元运算符等等 会简易的提供几个运算应用的代码小示例 下面列出各个运算符表达式 一元运算符 ! // Expression.Not(Expression.Constant(false)); ~ // Expression.Not(Expression.Constant(0)); ++i // ParameterExpression i
分类: 其他 发布时间: 06-14 22:07 阅读次数: 4

.NET Expression 从零开始四:结构化异常处理(SEH)

本文介绍在.NET Expression如何进行“结构化异常(SEH)”的处理,涵括对异常处理、抛出、清理等代码块的应用 与C#语法层面的try-catch-finally在表达式中的书写方式,那么如何捕获一个异常同时可以获取这个异常的错误信息呢?即需求“$exception”指针 对于调试而言这类的诉求是很必要的 毕竟你可以通过它捕获到的错误信息与堆栈跟踪 可以大致上确定到具体在哪一个位置发
分类: 其他 发布时间: 06-14 22:07 阅读次数: 3

矩阵树定理学习笔记+洛谷3317 bzoj3534 SDOI2014 重建 矩阵树定理+期望 +构造

题目链接 题意就是给你n个点,每两个点之间有一条边,这条边存在的概率是ppp,求生成树个数。 我觉得这真是道神题! 首先先介绍一下矩阵树定理,由于我不会,所以没有给任何证明,只给了结论,想知道证明请自行搜索。矩阵树定理可以求一个无向图的生成树个数(似乎有向的也可以求,但是我还不会)。它的做法是这样的:用邻接矩阵存边,aij(i≠j)aij(i≠j)a_{ij}(i\neq j)的值为点iii...
分类: 其他 发布时间: 06-14 22:07 阅读次数: 3

C# hijack NSQuery::LookupServiceNext(DNS解析)

为什么要这方面的研究?这是由于“PaperAirplane”的NSP(名称服务提供者) 开发过程受到一些挫折 主要是Ws32调用了MY-NSP解析 但它还需要调用其它的NSP解析 通过分析它是通过NSQuery::LookupServiceDispatch函数 循环派发调用多个NSP解析 然后组合这些数据 这就造成了MY-NSP解析的Fuck A记录不在最顶部 而且Ws32只会调用一次后就不在调用
分类: 其他 发布时间: 06-14 22:07 阅读次数: 3

PRX 通过LSP实现浏览器Socks5/Tcp代理(从发送数据上着手)

本文阐述针对市面上主流的浏览器 实现基于Socks5协议Tcp代理部分原理 它是浏览器翻墙的一种方法 这只是在LSP实现方式中一种类别 它具备很多不同方式 但在本文中不在累赘;此方法适应“Chrome、Firebox、IE、OperaWeb”浏览器 本文中给出的代码思路是利用C/C++实现的 并且不会提供完整可运行的代码 只会给出一些程式关键代码 具体实现需要各位有兴趣的boys 你可以自行利用
分类: 其他 发布时间: 06-14 22:07 阅读次数: 6

有向图(树形图)矩阵树定理 学习笔记+洛谷4455 bzoj5297 社交网络 +bzoj4894天赋

如果不知道矩阵树定理,请点击这里 有时我们做题会遇到一些看起来像是要用矩阵树,但是图却是有向图的题目。有人说,对于有向图来说,是没有生成树这个概念的,只有树形图的概念。顾名思义,树形图就是形状是树的有向图。对于这一类题目,分为两种情况,第一种是以iii号点为起点的树形图的个数,这种称为外向树;第二种是以iii号点为终点的树形图个数,这种称为内向树。 做题时一定认真读题,看明白要求的是哪一种树形...
分类: 其他 发布时间: 06-14 22:07 阅读次数: 4

PRX 设置IE浏览器代理

在Win32中提供了一种快速设置IE浏览器代理的方式 但这种方式可靠性不高 但一般日常使用基本不会出现故障 只有当IE浏览器代理注册表设置被保护 不可写或者出现了一些系统的故障时 才不用。 而知名的shadowsocks-csharp的代码中则使用了这种方式  那么它的原理相对简单,当代理程式修改了IE的代理设置后调用InternetSetOption告知系统需要 HTTP选项设置被改变;此时操
分类: 其他 发布时间: 06-14 22:07 阅读次数: 4

洛谷4208 bzoj1016 JSOI2008 最小生成树计数 矩阵树定理

题目链接 题意:给你nnn个点,mmm条无向边,求最小生成树个数。n≤100n≤100n\leq 100,m≤1000m≤1000m\leq 1000,其中每种权值的边不超过101010条。 由于有每种权值的边不超过101010条,所以有可以过的搜索算法,但是我觉得这道题作为练习题而不是比赛题的话,用搜索写实在是有点可惜。 下面我们来介绍这道题的做法。 首先,对于最小生成树,有以下性质: ...
分类: 其他 发布时间: 06-14 22:07 阅读次数: 3