博客园 - 田志良
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=686789
2019-10-25T10:04:37Z
田志良
https://www.cnblogs.com/tianzhiliang/
feed.cnblogs.com
https://www.cnblogs.com/tianzhiliang/p/11739372.html
netty中Pipeline的ChannelHandler执行顺序案例详解 - 田志良
netty的Pipeline模型用的是责任链设计模式,本文通过六组实验验证InboundHandler和OutboundHandler的执行顺序,希望对大家有帮助。
2019-10-25T09:52:00Z
2019-10-25T09:52:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】netty的Pipeline模型用的是责任链设计模式,本文通过六组实验验证InboundHandler和OutboundHandler的执行顺序,希望对大家有帮助。 <a href="https://www.cnblogs.com/tianzhiliang/p/11739372.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2013/04/18/3027775.html
LoadRunner压力测试心得总结 - 田志良
一、虚拟用户迭代一次的时间对整个压力场景的影响。
二、File参数化的设置。
三、场景设置。
2013-04-18T01:25:00Z
2013-04-18T01:25:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】一、虚拟用户迭代一次的时间对整个压力场景的影响。
二、File参数化的设置。
三、场景设置。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2013/04/18/3027775.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2012/07/18/2597292.html
对象锁感悟 - 田志良
1、对于一个对象,读取对象元素无须加锁,增加、修改、删除、遍历须加锁。
2、如果对象a包含另外一个对象b,针对对象a的操作只要锁住对象a,针对对象b的操作只要锁住对象b。
3、如果对象a包含对象b,对象b包含对象c,对c的操作可以锁住c,可以锁住b,也可以锁住a,至于锁哪个,据具体的业务逻辑性能要求来定。
4、有时为了防止并发覆盖,可扩大锁范围。
2012-07-18T06:09:00Z
2012-07-18T06:09:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】1、对于一个对象,读取对象元素无须加锁,增加、修改、删除、遍历须加锁。
2、如果对象a包含另外一个对象b,针对对象a的操作只要锁住对象a,针对对象b的操作只要锁住对象b。
3、如果对象a包含对象b,对象b包含对象c,对c的操作可以锁住c,可以锁住b,也可以锁住a,至于锁哪个,据具体的业务逻辑性能要求来定。
4、有时为了防止并发覆盖,可扩大锁范围。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2012/07/18/2597292.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2012/07/18/2597267.html
MySQL性能测试 - 田志良
1、MySQL的操作速度(插入、修改、删除),受限于MySQL服务器的硬盘IO转速和网络IO速度。
2、MySQL数据库多用户多数据库连接并发执行插入/修改操作,每秒钟最大执行6500条记录。单用户单数据库连接,每秒钟最大执行950条记录。
2012-07-18T05:56:00Z
2012-07-18T05:56:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】1、MySQL的操作速度(插入、修改、删除),受限于MySQL服务器的硬盘IO转速和网络IO速度。
2、MySQL数据库多用户多数据库连接并发执行插入/修改操作,每秒钟最大执行6500条记录。单用户单数据库连接,每秒钟最大执行950条记录。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2012/07/18/2597267.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2012/06/29/2570275.html
反射调用性能比较(附源码) - 田志良
本文通过编写Demo,测试“传统反射”、“实例反射”、“快速反射”、“直接调用”的性能。
2012-06-29T09:33:00Z
2012-06-29T09:33:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】本文通过编写Demo,测试“传统反射”、“实例反射”、“快速反射”、“直接调用”的性能。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2012/06/29/2570275.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2012/05/23/2514861.html
Memcached 命令简介 - 田志良
本文简单介绍了Memcached常用的命令:add、set、replace、delete、get、gets、cas、append、prepend、flush_all。
2012-05-23T07:28:00Z
2012-05-23T07:28:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】本文简单介绍了Memcached常用的命令:add、set、replace、delete、get、gets、cas、append、prepend、flush_all。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2012/05/23/2514861.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2012/05/21/2511825.html
如何在Windows平台下安装Memcached - 田志良
1、解压到指定目录,如:C:\Memcached\memcached-win32-1.4.4-14。
2、用cmd打开命令窗口,转到解压的目录,输入 “memcached.exe -d install”。
3、打开控制面板,打开服务,可以看到memcached已经在上面可,如果没有启动,则手动启动一下。
4、使用telnet命令 验证缓存服务器是否可用。开始什么都不显示,回车后输入命令 stats 查看统计信息,如下图,说明服务器运作正常。
2012-05-21T08:35:00Z
2012-05-21T08:35:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】1、解压到指定目录,如:C:\Memcached\memcached-win32-1.4.4-14。
2、用cmd打开命令窗口,转到解压的目录,输入 “memcached.exe -d install”。
3、打开控制面板,打开服务,可以看到memcached已经在上面可,如果没有启动,则手动启动一下。
4、使用telnet命令 验证缓存服务器是否可用。开始什么都不显示,回车后输入命令 stats 查看统计信息,如下图,说明服务器运作正常。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2012/05/21/2511825.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2012/04/27/2473715.html
LoadRunner中lrs_set_recv_timeout和lrs_set_recv_timeout2的区别和联系 - 田志良
lrs_set_recv_timeout:执行lrs_receive命令后,等待服务器返回消息的超时时间,即:服务器的响应时间。
lrs_set_recv_timeout2:创建连接成功,接收到服务器返回的消息后,获取匹配消息的超时时间。lrs_receive接收到数据后,会和预期的数据长度进行比较,如果长度不匹配,它将重新从套接字上读取数据,直到超时为止。
2012-04-27T08:08:00Z
2012-04-27T08:08:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】lrs_set_recv_timeout:执行lrs_receive命令后,等待服务器返回消息的超时时间,即:服务器的响应时间。
lrs_set_recv_timeout2:创建连接成功,接收到服务器返回的消息后,获取匹配消息的超时时间。lrs_receive接收到数据后,会和预期的数据长度进行比较,如果长度不匹配,它将重新从套接字上读取数据,直到超时为止。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2012/04/27/2473715.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2012/04/26/2471539.html
LoadRunner中的异常处理 - 田志良
VuGen提供了错误处理函数lr_continue_on_error,用来在脚本中实时修改Vuser的出错设置。
2012-04-26T07:51:00Z
2012-04-26T07:51:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】VuGen提供了错误处理函数lr_continue_on_error,用来在脚本中实时修改Vuser的出错设置。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2012/04/26/2471539.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2012/04/26/2471150.html
loadrunner中的关联与参数化 - 田志良
关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。
2012-04-26T03:51:00Z
2012-04-26T03:51:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2012/04/26/2471150.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2012/03/20/2407940.html
loadrunner socket 函数介绍 - 田志良
录制会话之后,通过 VuGen 的内置编辑器可以查看录制的代码。您可以在脚本中滚动,查看应用程序生成的函数,并检查传输的数
据。在主窗口中查看脚本时,可以看到VuGen 录制活动的顺序。在典型的会话期间,将录制下列函数顺序:
lrs_startup 初始化 WinSock DLL
lrs_create_socket 初始化套接字
lrs_send 在数据报上或者向流套接字发送数据
lrs_receive 接收来自数据报或流套接字的数据
lrs_disable_socket 禁用套接字操作
lrs_close_socket 关闭打开的套接字
lrs_cleanup 终止 WinSock DLL 的使用
VuGen 在 Windows 上使用 Windows 套接字协议支持应用程序的录制和重播;而在UNIX 平台上仅支持重播
2012-03-20T06:48:00Z
2012-03-20T06:48:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】录制会话之后,通过 VuGen 的内置编辑器可以查看录制的代码。您可以在脚本中滚动,查看应用程序生成的函数,并检查传输的数
据。在主窗口中查看脚本时,可以看到VuGen 录制活动的顺序。在典型的会话期间,将录制下列函数顺序:
lrs_startup 初始化 WinSock DLL
lrs_create_socket 初始化套接字
lrs_send 在数据报上或者向流套接字发送数据
lrs_receive 接收来自数据报或流套接字的数据
lrs_disable_socket 禁用套接字操作
lrs_close_socket 关闭打开的套接字
lrs_cleanup 终止 WinSock DLL 的使用
VuGen 在 Windows 上使用 Windows 套接字协议支持应用程序的录制和重播;而在UNIX 平台上仅支持重播 <a href="https://www.cnblogs.com/tianzhiliang/archive/2012/03/20/2407940.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2012/01/04/2312080.html
性能测试工具LoadRunner中进程运行和线程运行区别 - 田志良
如果选择按照线程方式运行,在默认情况下,controller为每50个用户仅启动一个mmdrv进程,而每个用户都按线程方式来运行,这些线程用户将共享父进程的内存段,这就节省了大量内存空间,从而可以在一个负载生成器上运行更多的用户。
2012-01-04T07:19:00Z
2012-01-04T07:19:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】如果选择按照线程方式运行,在默认情况下,controller为每50个用户仅启动一个mmdrv进程,而每个用户都按线程方式来运行,这些线程用户将共享父进程的内存段,这就节省了大量内存空间,从而可以在一个负载生成器上运行更多的用户。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2012/01/04/2312080.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2012/01/04/2312077.html
LoadRunner参数化 - 田志良
Sequential:顺序地向Vuser分配数据。
Random:当测试开始运行时,“随机”方法为每个Vuser分配一个数据表中的随机值。
Unique:为每一个Vuser的参数分配一个唯一的顺序值。在这种情况下必须确保表中的数据对所有的Vuser
2012-01-04T07:18:00Z
2012-01-04T07:18:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】Sequential:顺序地向Vuser分配数据。
Random:当测试开始运行时,“随机”方法为每个Vuser分配一个数据表中的随机值。
Unique:为每一个Vuser的参数分配一个唯一的顺序值。在这种情况下必须确保表中的数据对所有的Vuser <a href="https://www.cnblogs.com/tianzhiliang/archive/2012/01/04/2312077.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2011/09/30/2196249.html
C#设计模式(外观模式) - 田志良
如果要观看电影,必须在客户端执行下面的操作:先打开投影仪,再打开功放机,再打开屏幕,再打开 DVD 播放机,再打开灯光,在经历了这么多操作后,才可以看一场电影。而在关闭电影的时候,也要先关闭投影仪,再关闭功放机,再关闭屏幕,再关闭 DVD 播放机,再关闭灯光。哦,这是太复杂了!!!在客户端居然有那么多操作,如果有一些用户不知道如何使用其中的一个工具,那他便看不了电影!
2011-09-30T03:06:00Z
2011-09-30T03:06:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】如果要观看电影,必须在客户端执行下面的操作:先打开投影仪,再打开功放机,再打开屏幕,再打开 DVD 播放机,再打开灯光,在经历了这么多操作后,才可以看一场电影。而在关闭电影的时候,也要先关闭投影仪,再关闭功放机,再关闭屏幕,再关闭 DVD 播放机,再关闭灯光。哦,这是太复杂了!!!在客户端居然有那么多操作,如果有一些用户不知道如何使用其中的一个工具,那他便看不了电影! <a href="https://www.cnblogs.com/tianzhiliang/archive/2011/09/30/2196249.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2011/09/29/2195664.html
C#设计模式(适配器模式) - 田志良
众所周知,在中国通用的电压时 220V,而美国电压则是 110V,如果有经常在美国和中国之间跑的 IT 人,而其笔记本都是随身携带的,那么它的笔记本的电压问题如何解决呢?(因为在美国和中国电压不同,所以一般的电器会不通用的)而适配器在这个问题上体现得淋漓尽致。现在的笔记本都有一个电源适配器,而正是这个电源适配器来解决上面提到的适配器问题,比如,一款索尼笔记本,其输入电流为交流100V~240V,而输出则是统一的直流 19.5V,在电源适配器的一端输入交流电流,然后通过电源适配器把电源变成需要的电压,也就是适配器的作用是使得一个东西适合另外一个东西。
2011-09-29T08:50:00Z
2011-09-29T08:50:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】众所周知,在中国通用的电压时 220V,而美国电压则是 110V,如果有经常在美国和中国之间跑的 IT 人,而其笔记本都是随身携带的,那么它的笔记本的电压问题如何解决呢?(因为在美国和中国电压不同,所以一般的电器会不通用的)而适配器在这个问题上体现得淋漓尽致。现在的笔记本都有一个电源适配器,而正是这个电源适配器来解决上面提到的适配器问题,比如,一款索尼笔记本,其输入电流为交流100V~240V,而输出则是统一的直流 19.5V,在电源适配器的一端输入交流电流,然后通过电源适配器把电源变成需要的电压,也就是适配器的作用是使得一个东西适合另外一个东西。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2011/09/29/2195664.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2011/08/09/2132532.html
WCF 快速入门 - 田志良
构建HelloWCF应用的第一步是创建服务契约。契约式是表示消息应用外形的主要方式。对于外形,是指服务暴露的操作,使用的消息schema和每个操作实现的消息交换模式(MEP)。总之,契约定义了我们消息应用生成和使用的东西。大多数契约是带有WCF API定义的属性标记的类型定义。
2011-08-09T08:56:00Z
2011-08-09T08:56:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】构建HelloWCF应用的第一步是创建服务契约。契约式是表示消息应用外形的主要方式。对于外形,是指服务暴露的操作,使用的消息schema和每个操作实现的消息交换模式(MEP)。总之,契约定义了我们消息应用生成和使用的东西。大多数契约是带有WCF API定义的属性标记的类型定义。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2011/08/09/2132532.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2011/07/28/2119719.html
WCF 消息拓扑和消息编排 - 田志良
消息拓扑描述的是在一个或多个发送者和接受者之间消息如何发送的。消息拓扑可以描述简单的应用-应用的连接关系,但是它同样可以描述复杂的应用-企业的连接。概括地说,这些可能存在的拓扑结构比面向组件的应用系统能够涉及到的情况会更加多、更加复杂。
2011-07-28T08:54:00Z
2011-07-28T08:54:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】消息拓扑描述的是在一个或多个发送者和接受者之间消息如何发送的。消息拓扑可以描述简单的应用-应用的连接关系,但是它同样可以描述复杂的应用-企业的连接。概括地说,这些可能存在的拓扑结构比面向组件的应用系统能够涉及到的情况会更加多、更加复杂。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2011/07/28/2119719.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2011/07/28/2119277.html
WCF 消息交换模式 - 田志良
我们描述消息交换最常用的细节粒度就是消息交换模式(MEP)。根据W3C草案(http://www.w3.org/2002/ws/cg/2/07/meps.html),一个MEP是“一个描述在消息参与者之间交换的消息的模板。”一个MEP被限制在一个发送者和接收者之间的逻辑连接上,整个行业也已经接收了这个事实。因为MEPS是个有点抽象的概念,近距离看一些现实世界的例子对于我们弄清MEPs这个概念有帮助。让我们来看看下面我和朋友关于足球票通话的例子:
2011-07-28T02:57:00Z
2011-07-28T02:57:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】我们描述消息交换最常用的细节粒度就是消息交换模式(MEP)。根据W3C草案(http://www.w3.org/2002/ws/cg/2/07/meps.html),一个MEP是“一个描述在消息参与者之间交换的消息的模板。”一个MEP被限制在一个发送者和接收者之间的逻辑连接上,整个行业也已经接收了这个事实。因为MEPS是个有点抽象的概念,近距离看一些现实世界的例子对于我们弄清MEPs这个概念有帮助。让我们来看看下面我和朋友关于足球票通话的例子: <a href="https://www.cnblogs.com/tianzhiliang/archive/2011/07/28/2119277.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2011/07/26/2117403.html
WCF 面向服务的意义 - 田志良
“为什么我们需要面向服务?”回答很简单:可伸缩性、维护性、互操作性和灵活性。过去,分布式组件技术像COM紧紧地把所有的组件绑定到一起。最低限度上,这些分布式技术必须分享公共类型系统,并且常常是一个运行时。有了这些依赖,升级和软件升级变得复杂、费时和费力的。面向服务的应用系统,恰恰相反,不需要相同类型的依赖,因此显示出更加适合企业精算需求的行为。
2011-07-26T08:50:00Z
2011-07-26T08:50:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】“为什么我们需要面向服务?”回答很简单:可伸缩性、维护性、互操作性和灵活性。过去,分布式组件技术像COM紧紧地把所有的组件绑定到一起。最低限度上,这些分布式技术必须分享公共类型系统,并且常常是一个运行时。有了这些依赖,升级和软件升级变得复杂、费时和费力的。面向服务的应用系统,恰恰相反,不需要相同类型的依赖,因此显示出更加适合企业精算需求的行为。 <a href="https://www.cnblogs.com/tianzhiliang/archive/2011/07/26/2117403.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tianzhiliang/archive/2011/07/26/2117349.html
WCF 面向服务的SOAP消息 - 田志良
显然地,面向服务系统开发首先应该是创建契约。为了例子简单,一个订单包含一个产品ID(product ID)、数量(quantity)和状态消息(status message)。有了这三个字段,一个订单可以使用下面的伪schema代码表示:
2011-07-26T08:21:00Z
2011-07-26T08:21:00Z
田志良
https://www.cnblogs.com/tianzhiliang/
【摘要】显然地,面向服务系统开发首先应该是创建契约。为了例子简单,一个订单包含一个产品ID(product ID)、数量(quantity)和状态消息(status message)。有了这三个字段,一个订单可以使用下面的伪schema代码表示: <a href="https://www.cnblogs.com/tianzhiliang/archive/2011/07/26/2117349.html" target="_blank">阅读全文</a>