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

做网站需要哪些费用制作网页步骤链接

做网站需要哪些费用,制作网页步骤链接,怎么制做网站,网站建设简运维 简历代理人 FlexyPool监视连接池使用情况#xff0c;因此需要拦截连接关闭方法调用。 为了简单起见#xff0c;第一个版本为此目的依赖动态代理#xff1a; private static class ConnectionInvocationHandler implements InvocationHandler {public static final String CLOS… 代理人 FlexyPool监视连接池使用情况因此需要拦截连接关闭方法调用。 为了简单起见第一个版本为此目的依赖动态代理 private static class ConnectionInvocationHandler implements InvocationHandler {public static final String CLOSE_METHOD_NAME close;private final Connection target;private final ConnectionCallback callback;public ConnectionInvocationHandler(Connection target, ConnectionCallback callback) {this.target target;this.callback callback;}Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {if (CLOSE_METHOD_NAME.equals(method.getName())) {callback.close();}return method.invoke(target, args);} } 代理调用的速度可能比装饰器慢装饰器使用直接调用来调用目标方法。 由于所有连接池仍然使用代理因此添加另一个代理层只会增加更多的呼叫时间开销因此现在FlexyPool也支持连接装饰器。 装饰工 ConnectionDecorator包装基础数据库连接将所有调用委派给实际的对象实例。 就像它的代理服务器代理一样只有close方法可以执行任何额外的逻辑 public class ConnectionDecorator implements Connection {private final Connection target;private final ConnectionCallback callback;public ConnectionDecorator(Connection target, ConnectionCallback callback) {this.target target;this.callback callback;}public Connection getTarget() {return target;}public ConnectionCallback getCallback() {return callback;}Overridepublic Statement createStatement() throws SQLException {return target.createStatement();}Overridepublic void close() throws SQLException {callback.close();target.close();}/*** More methods omitted for brevity sake*/public void setSchema(String schema) throws SQLException {ReflectionUtils.invoke(target,ReflectionUtils.getMethod(target, setSchema, String.class),schema);}public String getSchema() throws SQLException {return ReflectionUtils.invoke(target,ReflectionUtils.getMethod(target, getSchema));}public void abort(Executor executor) throws SQLException {ReflectionUtils.invoke(target,ReflectionUtils.getMethod(target, abort, Executor.class),executor);}public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException {ReflectionUtils.invoke(target,ReflectionUtils.getMethod(target, setNetworkTimeout, Executor.class, int.class),executor, milliseconds);}public int getNetworkTimeout() throws SQLException {return (Integer) ReflectionUtils.invoke(target,ReflectionUtils.getMethod(target, getNetworkTimeout));} } 您可能已经注意到某些方法使用Java Reflection而不是直接方法调用 abort getSchema setSchema getNetworkTimeout setNetworkTimeout 这些方法已添加到Java 1.7中使用Java 1.6编译项目时直接调用将失败。 因为Java 1.6是大多数FlexyPool模块的最低要求所以这些方法通过Java反射调用转发传入的方法调用。 省略这些方法不是可选的因为在1.7 JVM上 Connection装饰器将没有这些方法并且将引发类装入错误。 在至少使用Java 1.7的项目中FlexyPool还提供了Java7ConnectionDecorator public class Java7ConnectionDecorator extends ConnectionDecorator {public Java7ConnectionDecorator(Connection target, ConnectionCallback callback) {super(target, callback);}Overridepublic void setSchema(String schema) throws SQLException {getTarget().setSchema(schema);}Overridepublic String getSchema() throws SQLException {return getTarget().getSchema();}Overridepublic void abort(Executor executor) throws SQLException {getTarget().abort(executor);}Overridepublic void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException {getTarget().setNetworkTimeout(executor, milliseconds);}Overridepublic int getNetworkTimeout() throws SQLException {return getTarget().getNetworkTimeout();} } 此类不是核心库的一部分包含在单独的Java 1.7兼容模块中。 要使用它您需要添加以下Maven依赖项 dependencygroupIdcom.vladmihalcea.flexy-pool/groupIdartifactIdflexy-pool-core-java7/artifactIdversion${flexy-pool.version}/version /dependency服务发现机制 从一开始FlexyPool就为配置ConnectionProxyFactory实例提供了支持因此切换到装饰器不需要任何繁琐的代码重构。 在1.2.4发行版之前默认的连接提供程序是JdkConnectionProxyFactory 它使用动态代理。 从1.2.4开始FlexyPool使用连接装饰器作为默认的连接拦截机制。 实际的装饰器版本在运行时解析并且加载机制由以下组件构成 实际的连接装饰器工厂通过以下方法解决 public ConnectionDecoratorFactory resolve() {int loadingIndex Integer.MIN_VALUE;ConnectionDecoratorFactory connectionDecoratorFactory null;IteratorConnectionDecoratorFactoryService connectionDecoratorFactoryServiceIterator serviceLoader.iterator();while (connectionDecoratorFactoryServiceIterator.hasNext()) {try {ConnectionDecoratorFactoryService connectionDecoratorFactoryService connectionDecoratorFactoryServiceIterator.next();int currentLoadingIndex connectionDecoratorFactoryService.loadingIndex();if (currentLoadingIndex loadingIndex) {ConnectionDecoratorFactory currentConnectionDecoratorFactory connectionDecoratorFactoryService.load();if (currentConnectionDecoratorFactory ! null) {connectionDecoratorFactory currentConnectionDecoratorFactory;loadingIndex currentLoadingIndex;}}} catch (LinkageError e) {LOGGER.info(Couldnt load ConnectionDecoratorFactoryService on the current JVM, e);}}if (connectionDecoratorFactory ! null) {return connectionDecoratorFactory;}throw new IllegalStateException(No ConnectionDecoratorFactory could be loaded!); } 就像MetricsFactory一样 每个连接装饰器工厂都有一个关联的服务提供者 。 可以在运行时加载多个此类服务提供程序默认的Java 1.6连接修饰器服务或Java 1.7之一。 根据索引最新的Java版本优先和当前的JVM JDBC版本支持在Java 1.6运行时环境中无法解析Java 1.7连接装饰器进行选择。 结论 装饰器比代理器承担更多的配置开销但是如果您想减少最后的性能下降则值得考虑直接方法调用的优势。 翻译自: https://www.javacodegeeks.com/2015/08/how-does-flexypool-support-both-connection-proxies-and-decorators.html
http://www.pierceye.com/news/843803/

相关文章:

  • 校园网站的意义融资渠道
  • 做网站上海公司自己制作一个网站需要什么软件
  • 铜川做网站电话app开发程序
  • 自助建微网站备案后修改网站名称
  • 免费网站正能量网站如何后台管理
  • 网站开发的质量标准网站如何做自适应
  • 黄南州wap网站建设公司wordpress里面怎么加链接
  • 五分钟自己创建网站的方法免费试用网站空间
  • 安徽平台网站建设找哪家辽宁建设工程信息网审核
  • 余姚住房和建设局网站10元备案域名购买
  • 企业网站制作公司盈利做支付行业招代理一般上什么网站
  • 网站制作电话wordpress支持PHP吗
  • 天津网站推广宣传拓者设计吧室内设计
  • 建设 信用中国 网站淘宝购物
  • 义乌论坛网站建设怎样建设智能网站
  • 重庆做网站 外包公司建设校园网站的必要性
  • 做我女朋友好不好套路网站html5网页设计实训总结
  • 怎样给网站登录界面做后台seo研究中心官网
  • 养生类网站源码dreamwear网页制作
  • 北京装修平台网站网页设计公司企业文化
  • 上海临平路网站建设网站建设设计制作方案与价格
  • seo三人行网站免费电商网站建设
  • seo蒙牛伊利企业网站专业性诊断.win域名做网站怎么样
  • 微信、网站提成方案点做网站建设当中的技术解决方案
  • 云南省住房和城乡建设厅官方网站网站哪里可以查到做ddos
  • 爱情动做网站推荐个人养老保险金怎么交
  • 淘客怎么做自己的网站演示动画制作免费网站
  • 哪个网站可以搭建网页百度指数官网入口
  • 济南网站开发设计wordpress. 外贸seo
  • 深圳网站建设优化织梦 蝉知 wordpress