- 博客(38)
- 收藏
- 关注
转载 .net core web api 获取request body的纯文本
本文代码https://github.com/wuhaibo/readPlainTextDotNetCoreWepApi总有些时候我们希望获得Request body 的纯文本 那么怎么做呢?很简单。如下所示 public string GetJsonString([FromBody]string content) {...
2018-03-07 23:03:00
242
转载 Angularjs 基于karma和jasmine的单元测试
目录:1. 单元测试的配置2. 实例文件目录解释3. 测试controller 3.1测试controller中变量值是否正确 3.2模拟http请求返回值,测试$http服务相关4.从文件中读取json,来模拟 http请求返回数据5.测试返回promise的service已经有很多教程提到了angularjs项目的单元测试,但...
2016-03-30 22:25:00
163
转载 c# Use Properties Instead of Accessible Data Members
advantage of properties:1 properties can be used in data binding, public data member can not.2 data validation can be wrote inside setter method. easy to implement, also multithread feature....
2014-12-01 17:49:00
121
转载 c++ 计算程序运行时间
转载http://blog.csdn.net/trustbo/article/details/10582287以前经常听人提起如何计算程序运行时间,给出一系列函数,当时没有注意,随便选了clock()最简单的方式进行计算。等到真正需要检测程序性能提升了多少,才发现这里面有很多要注意的地方。最常用的的方式:#includetime_t start = clock()...
2014-11-27 17:50:00
102
转载 Visual Studio 常用快捷键
Fix code errors inline.Ctrl + . (period) keys回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键“Ctrl + -”; 2)前进到下一个光标位置:“Ctrl + Shift + - ”。复制/剪切/删除整行代码 1)如果你想复制一整行代码,只需将光标移至该行,再使用组合键“Ct...
2014-11-03 20:38:00
70
转载 Memento pattern
21.5再谈备忘录的封装备忘录是一个很特殊的对象,只有原发器对它拥有控制的权力,负责人只负责管理,而其他类无法访问到备忘录,因此我们需要对备忘录进行封装。 为了实现对备忘录对象的封装,需要对备忘录的调用进行控制,对于原发器而言,它可以调用备忘录的所有信息,允许原发器访问返回到先前状态所需的所有数据;对于负责人而言,只负责备忘录的保存并将备忘录传递给其他...
2014-09-24 16:16:00
86
转载 mediator pattern
20.4 中介者模式总结 中介者模式将一个网状的系统结构变成一个以中介者对象为中心的星形结构,在这个星型结构中,使用中介者对象与其他对象的一对多关系来取代原有对象之间的多对多关系。中介者模式在事件驱动类软件中应用较为广泛,特别是基于GUI(Graphical User Interface,图形用户界面)的应用软件,此外,在类与类之间存在错综复杂的关联关系的系统中,中介者...
2014-09-24 16:01:00
100
转载 chain pattern
16.4纯与不纯的职责链模式职责链模式可分为纯的职责链模式和不纯的职责链模式两种: (1)纯的职责链模式 一个纯的职责链模式要求一个具体处理者对象只能在两个行为中选择一个:要么承担全部责任,要么将责任推给下家,不允许出现某一个具体处理者对象在承担了一部分或全部责任后又将责任向下传递的情况。而且在纯的职责链模式中,要求一个请求必须...
2014-09-24 15:44:00
70
转载 bridge pattern
10.5桥接模式总结 桥接模式是设计Java虚拟机和实现JDBC等驱动程序的核心模式之一,应用较为广泛。在软件开发中如果一个类或一个系统有多个变化维度时,都可以尝试使用桥接模式对其进行设计。桥接模式为多维度变化的系统提供了一套完整的解决方案,并且降低了系统的复杂度。1.主要优点 桥接模式的主要优点如下: (1)分离抽象接口...
2014-09-24 14:56:00
65
转载 Prototype Pattern 原型模式
7.6 原型模式总结 原型模式作为一种快速创建大量相同或相似对象的方式,在软件开发中应用较为广泛,很多软件提供的复制(Ctrl + C)和粘贴(Ctrl + V)操作就是原型模式的典型应用,下面对该模式的使用效果和适用情况进行简单的总结。1.主要优点 原型模式的主要优点如下:(1)当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,...
2014-09-23 16:55:00
142
转载 proxy pattern 代理模式
常用的几种代理模式简要说明如下:(1)远程代理(Remote Proxy):为一个位于不同的地址空间的对象提供一个本地的代理对象,这个不同的地址空间可以是在同一台主机中,也可是在另一台主机中,远程代理又称为大使(Ambassador)。(2)虚拟代理(Virtual Proxy):如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象...
2014-09-23 15:57:00
95
转载 state pattern
6状态模式总结 状态模式将一个对象在不同状态下的不同行为封装在一个个状态类中,通过设置不同的状态对象可以让环境对象拥有不同的行为,而状态转换的细节对于客户端而言是透明的,方便了客户端的使用。在实际开发中,状态模式具有较高的使用频率,在工作流和游戏开发中状态模式都得到了广泛的应用,例如公文状态的转换、游戏中角色的升级等。 1.主要优点...
2014-09-22 20:53:00
135
转载 composite template 组合模式
1.主要优点 组合模式的主要优点如下: (1)组合模式可以清楚地定义分层次的复杂对象,表示对象的全部或部分层次,它让客户端忽略了层次的差异,方便对整个层次结构进行控制。 (2)客户端可以一致地使用一个组合结构或其中单个对象,不必关心处理的是单个对象还是整个组合结构,简化了客户端代码。 (3)在组合模式中增加新的容器构...
2014-09-22 15:33:00
162
转载 iterator pattern
6迭代器模式总结迭代器模式是一种使用频率非常高的设计模式,通过引入迭代器可以将数据的遍历功能从聚合对象中分离出来,聚合对象只负责存储数据,而遍历数据由迭代器来完成。由于很多编程语言的类库都已经实现了迭代器模式,因此在实际开发中,我们只需要直接使用Java、C#等语言已定义好的迭代器即可,迭代器已经成为我们操作聚合对象的基本工具之一。 1.主...
2014-09-19 18:42:00
84
转载 template method pattern
//DataViewer.cs using System; namespace TemplateMethodSample { abstract class DataViewer { //抽象方法:获取数据 public abstract void GetData(); ...
2014-09-19 18:40:00
111
转载 adapter pattern
对象适配器9.7 适配器模式总结 适配器模式将现有接口转化为客户类所期望的接口,实现了对现有类的复用,它是一种使用频率非常高的设计模式,在软件开发中得以广泛应用,在Spring等开源框架、驱动程序设计(如JDBC中的数据库驱动程序)中也使用了适配器模式。 1.主要优点 无论是对象适配器模式还是类适配器模式都具有如下优点:...
2014-09-18 20:45:00
103
转载 facade pattern
外观模式是一种使用频率非常高的设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,使子系统与客户端的耦合度降低,且客户端调用非常方便。外观模式并不给系统增加任何新功能,它仅仅是简化调用接口。在几乎所有的软件中都能够找到外观模式的应用,如绝大多数B/S系统都有一个首页或者导航页面,大部分C/S系统都提供了菜单或者工具栏,在这...
2014-09-18 20:37:00
69
转载 command pattern
1.主要优点 命令模式的主要优点如下: (1)降低系统的耦合度。由于请求者与接收者之间不存在直接引用,因此请求者与接收者之间实现完全解耦,相同的请求者可以对应不同的接收者,同样,相同的接收者也可以供不同的请求者使用,两者之间具有良好的独立性。 (2)新的命令可以很容易地加入到系统中。由于增加新的具体命令类不会影响到其他类,...
2014-09-18 16:01:00
65
转载 singleton pattern
1 normal modeclass Singleton{ private Singleton(){}; Singleton singleton; static Singleton getInstance() { if(singleton == null) singleton = new Singleton(); ...
2014-09-17 19:49:00
60
转载 simple factory, factory method, abstract factory
simple factorygood:1 devide implementation and initialization2 use config file can make system more flexible (reflection)bad:1 all initialization work in factory. when the logic is complex ...
2014-09-17 19:17:00
158
转载 decorate pattern 装饰模式
【装饰模式的优缺点】装饰模式的优点:1、比静态继承更灵活;2、避免在层次结构高层的类有太多的特征装饰模式的缺点:1、使用装饰模式会产生比使用继承关系更多的对象。并且这些对象看上去都很想像,从而使得查错变得困难。【装饰模式适用场景】1、在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。2、处理那些可以撤消的职责,即需要动态的给一个对象添加功能并且这些功能是可以动态的撤...
2014-09-16 19:40:00
74
转载 effective c++ 条款26 postpone variable definition as long as possible
因为构造和析构函数有开销,所以也许前面定义了,还没用函数就退出了。所以比较好的方法是用到了才定义。转载于:https://www.cnblogs.com/williamwood/p/3836914.html...
2014-07-11 03:01:00
78
转载 effective c++ 条款23 perfer nonmember nonfreind function to member function
主要的理由还是封装。nonmember nonfreind function 不能访问类private 成员变量。这个场景是有一个类提供了一些基本功能,比如class WebBrowser{ public: void clearCache(); void clearHistory(); void removeCookie...
2014-07-10 03:01:00
63
转载 effective c++ 条款18 make interface easy to use correctly and hard to use incorrectly
举一个容易犯错的例子class Date{private: int month; int day; int year;public:Date(int month,int day,int year){ this->month = month; ... }}//wrong exampleDate date(...
2014-07-09 03:41:00
121
转载 effective c++ 条款13 use object to manage resources.
请求的系统资源需要最终还回系统,为了避免遗忘返还这个动作,可以利用析构函数在object销毁时自动调用的特点来实现。简单说就是用object来管理资源。以内存资源为例class Investment {}; Investment* creatInvestment(){...} // factory function to produce investment ob...
2014-07-08 02:45:00
70
转载 effective c++ 条款12 copy all parts of an object
这经常发生在更改代码的时候,当有自己的copy 赋值函数或者copy 构造函数时,编译器就不会维护这两个函数。导致发生遗忘。可能出现的场景class Customer{ private: std::string name; public: Customer(const Customer& rhs):name(rhs.name){};...
2014-07-07 03:08:00
115
转载 effective c++ 条款11 Handle assignment to self in operator=
赋值给自己,听起来有些不可思议,但是却要引起重视,它很容易把自己隐藏起来。例如1 a[i]=a[j]; 如果 i, j的值一样?2 *px=*py; 如果px py指向同一个object3 rb and pd migh also be a same object.class Base{ ... };class Deri...
2014-07-07 02:40:00
91
转载 effective c++ 条款10 handle assignment to self operator =
非强制性,但是个好习惯当使用连锁赋值时很有用x=y=z=10;class Window{ public: Window& operator=(int size) { ... return *this; }}这个规则适用于 -,+, +=,-= etc转载于:https://www.c...
2014-07-05 03:42:00
74
转载 effective c++ 条款9 do not call virtual function in constructor or deconstructor
在构造函数中不要调用virtual函数,调用了也不会有预期的效果。举个例子class Transaction{ public: Transaction() { log(); } virtual void log() =0;}class BusinessTransaction: public Tra...
2014-07-05 01:02:00
75
转载 effective c++ 条款8 prevent exception from leaving destructor
1 析构函数绝对不要吐出异常。如果一个析构函数可能调用产生异常的函数,析构函数应该不传播该异常或结束程序2 如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么class应该提供一个普通函数执行该操作。3 产生两个以上的异常会导致程序关闭或者不确定行为转载于:https://www.cnblogs.com/williamwood/p/3817572.html...
2014-07-01 03:18:00
59
转载 effective c++ 条款7 declare virtual destructor for polymophyc base class
这似乎很明显。如果base class的destructor不是virtual,当其derived class作为基类使用,析构的时候derived class的数据成员将不会被销毁。举个例子 我们有个交通工具的类作为基类, 它的析构函数不是virtualclass transportTool{ public: ~transportTool();...
2014-07-01 03:12:00
54
转载 effective c++ 条款6 如果不想要就要告诉大家
这个条款应该和第五个放在一起编译器默认生成1 无参构造函数,2 析构函数3 拷贝构造函数4 赋值预算符当我们不需要,就要显示的告诉大家我们不需要。方法:自己声明这个函数为private,单不要定义它。原因:1 自己声明这个函数,编译器就不会为我们生成这个函数 2 声明成private,就不会被对象误调用,但是freind和成员函数...
2014-06-29 19:31:00
101
转载 effective c++ 条款5 c++ 默默实现的函数
当写一个空类c++ 会为我们自动提供四个函数1 默认构造函数2 默认析构函数3 拷贝构造函数4 默认赋值运算符转载于:https://www.cnblogs.com/williamwood/p/3811185.html...
2014-06-27 03:47:00
61
转载 effective c++ 条款4 make sure that objects are initialized before they are used
1 c++ 类的数据成员的初始化发生在构造函数前class InitialData{ public: int data1; int data2; InitialData(int a, int b) { data1 = a; //this is ...
2014-06-27 02:47:00
75
转载 effective c++ 条款3 use const whereever you can
1 const 传达的意思应该是这个变量是常量不能更改2 const 在 * 左边表示数据是const,在右边表示指针是const // char greeting[] = "hello"; char* p = greeting; //const *: const data //* const: const pointer ...
2014-06-25 03:32:00
42
转载 作为类的成员函数,重载运算符只能有一个参数
1 overload a operator of a class, you can only use one para., this pointer is automatically used. class Rational { public: //not correct since this ponit would be used au...
2014-06-25 03:17:00
550
转载 effective c++ prefer const,enum, inline to #defines
学习心得对于纯常量,最好以const对象或者enums替换#define#define FIRST 3 //not goodenum{ first=1, second=2} ;int num[first];对于macros,最好用inline代替#define CALL_MAX(a, b) f( (a)>...
2014-06-23 03:51:00
70
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人