当前位置: 首页 > news >正文

搭建公司网站费用服务器搭建网站跑不满宽带

搭建公司网站费用,服务器搭建网站跑不满宽带,网站和数字界面设计师,wordpress 导出评论学习代理的设计模式的时候#xff0c;经常碰到的一个经典场景就是想统计某个方法的执行时间。 1 静态代理模式的产生 需求1. 统计方法执行时间 统计方法执行时间#xff0c;在很多API/性能监控中都有这个需求。 下面以简单的计算器为例子#xff0c;计算加法耗时。代码如下…学习代理的设计模式的时候经常碰到的一个经典场景就是想统计某个方法的执行时间。 1 静态代理模式的产生 需求1. 统计方法执行时间 统计方法执行时间在很多API/性能监控中都有这个需求。 下面以简单的计算器为例子计算加法耗时。代码如下 public Long add(Integer a, Integer b) {long result 0;for(int i0; i100000000; i) {result i a b;}return result; } 方法很简单就是计算两数之和。这里为了方便统计耗时所以循环了很多次。 统计耗时那么实现起来也很简单 public Long add(Integer a, Integer b) {long start System.currentTimeMillis();long result 0;for(int i0; i100000000; i) {result i a b;}long end System.currentTimeMillis();System.out.println(cost time: (end - start) ms);return result;} 统计代码和业务代码杂糅在一起是否是感觉有点混乱有没有一种方法在不影响原有业务逻辑情况下实现统计耗时的功能 需求2.不影响原有业务逻辑实现方法的耗时统计 很快我们想到一种方法那就是定义一个父类专门做耗时统计业务代码通过抽象方法定义子类扩展具体的业务方法即可。 代码如下 public abstract class AbstractTime {public Long tickTock(Integer a, Integer b) {long start System.currentTimeMillis();long result calculate(a,b);long end System.currentTimeMillis();System.out.println(cost time: (end - start) ms);return result;}protected abstract Long add(Integer a, Integer b); } 计算加法的耗时统计如下   public class AddTime extends AbstractTime {Overridepublic Long add(Integer a, Integer b) {long result 0;for(int i0; i100000000; i) {result i a b;}return result;}public static void main(String[] args){AddTime addTime new AddTime();addTime.tickTock(1, 2);} } 很好实现无侵入式统计方法耗时完成既定目标。 那么问题又来了假如我们这个方法还需要继承另外一个类这个时候怎么办呢 需求3使用接口方式实现无侵入式统计方法耗时 我们先把需要实现的业务逻辑通过接口的方式封装起来定义一个接口。 public interface Calculator {Long add(Integer a, Integer b); }实现业务接口的方法类 public class AddCalculator implements Calculator {Overridepublic Long calculate(Integer a, Integer b) {long result 0;for(int i0; i100000000; i) {result i a b;}return result;} } 使用接口无侵入式实现方法耗时统计的方案就是设计模式里的经典方案代理模式。 这里使用代理模式实现的代理类如下 public class AddCalculatorProxy implements Calculator {private Calculator calculator;public AddCalculatorProxy(Calculator calculator) {this.calculator calculator;}Overridepublic Long calculate(Integer a, Integer b) {long start System.currentTimeMillis();// 具体的业务逻辑类Long result calculator.add(a, b);long end System.currentTimeMillis();System.out.println(cost time: (end - start) ms);return result;}public static void main(String[] args) {Calculator calculator new AddCalculator();Calculator proxy new AddCalculatorProxy(calculator);proxy.add(1, 2);} } 这就是静态代理模式的推演过程。 2. 静态代理模式是什么 静态代理模式是一种设计模式用于在不修改目标对象的前提下通过代理对象来控制对目标对象的访问。以下是关于静态代理模式的详细说明 2.1. 定义 静态代理模式中代理类和目标类实现相同的接口代理类持有目标类的实例并通过代理类间接调用目标类的方法。代理类可以在方法执行前后添加额外的逻辑。 2.2. 特点 接口目标类和代理类都实现了同一个接口。 代理类代理类持有一个目标类的引用并在其方法中调用目标类的方法。 扩展性可以在不修改目标类的情况下通过代理类添加额外的功能如日志记录、性能监控等。 2.3. 代码分析 根据上面的例子以下是对静态代理模式的实现分析 接口定义 public interface Calculator {Long add(Integer a, Integer b); }定义了一个 Calculator 接口包含一个 add 方法。 目标类 public class AddCalculator implements Calculator {Overridepublic Long calculate(Integer a, Integer b) {long result 0;for(int i0; i100000000; i) {result i a b;}return result;} }AddCalculator 是目标类实现了 Calculator 接口。 提供了具体的业务逻辑例如计算两个数的和并进行循环累加。 代理类 public class AddCalculatorProxy implements Calculator {private Calculator calculator;public AddCalculatorProxy(Calculator calculator) {this.calculator calculator;}Overridepublic Long calculate(Integer a, Integer b) {long start System.currentTimeMillis();// 调用目标类的业务逻辑Long result calculator.add(a, b);long end System.currentTimeMillis();System.out.println(cost time: (end - start) ms);return result;} }AddCalculatorProxy 是代理类也实现了 Calculator 接口。 持有一个 Calculator 类型的目标类实例。 在 calculate 方法中代理类在调用目标类的 add 方法前后添加了时间统计的逻辑。 测试代码 public static void main(String[] args) {Calculator calculator new AddCalculator();Calculator proxy new AddCalculatorProxy(calculator);proxy.add(1, 2); }创建目标类实例 AddCalculator。 使用代理类 AddCalculatorProxy 包装目标类实例。 调用代理类的 add 方法时会自动执行代理类中的额外逻辑如性能统计。 2.4. 优点 职责分离将核心业务逻辑与附加功能分离符合单一职责原则。 增强功能可以在不修改目标类的情况下通过代理类添加新的功能。 2.5. 缺点 代码膨胀每新增一个目标类就需要创建一个对应的代理类可能导致代码量增加。 灵活性不足代理类和目标类必须实现相同的接口缺乏动态性。 2.6. 总结 静态代理模式适用于需要在目标类的基础上扩展功能的场景。它通过代理类封装目标类的行为同时保持接口的一致性。例子代码很好地展示了静态代理模式的应用通过代理类实现了性能监控的功能。
http://www.pierceye.com/news/414742/

相关文章:

  • 网站开发集成环境国内html5网站欣赏
  • iis7.5 没有默认网站北京seo的排名优化
  • 两学一做网站是多少钱营销型网站策划怎么做
  • 渭南做网站的自建房设计图
  • 移动网站建设价格线上推广专员是干嘛的
  • 做化妆刷的外贸网站企业网站托管备案
  • 湖南省建设干部学校 网站金融直播室网站建设
  • 贵州建设厅特殊工种考试网站photoshop平面设计教学视频
  • 怎么推广我的网站代理网站推荐
  • wordpress主题站模板做网站跟做APP哪个容易
  • 杭州网站建设公司推荐网站建设优化服务渠道
  • php是网站开发语言吗做网站前端需要编程基础吗
  • python 网站开发 前端企业信用信息系统官网
  • 公司网站设计有哪些使用技巧呢商城网站建设怎么收费
  • 东莞做网站平台安阳营销型网站建设
  • 如何查看网站开发语言百度排行榜风云榜
  • 泉州 网站建设公司首选广告设计公司名字有寓意有创意
  • 天津个人做网站慈利网站制作
  • 专门做推广的网站吗宿迁房价2023年最新房价
  • 0基础12天精通网站建设网站建设 全网推广
  • 东莞网站营销推广公司移动应用开发案例
  • 妇科医院网站建设怎么做网站建设培训心得体会
  • 网站建设 管理正能量网站入口地址
  • 做网站没有创意Wordpress国际收款
  • 网站推广关键词工具wap网站分享到微信
  • 哪个网站可以给图片做链接做网站的公司在哪
  • 搬瓦工可以长期做网站广告制作开票大类是什么
  • 高级网站开发工信部小企业门户网站建设
  • 网站建站知识秦皇岛汽车网站制作
  • 建站之星极速版app开发需求