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

网站开发如何洽谈客户怎么制作seo搜索优化

网站开发如何洽谈客户,怎么制作seo搜索优化,广告牌制作报价单明细,大学生个人网页设计理念EJB Singleton Bean是EJB 3.1规范引入的#xff0c;通常用于存储缓存的数据。 这意味着#xff0c;我们尝试通过使用Singleton来提高应用程序的性能。 总的来说#xff0c;这很好。 特别是在并行调用不多的情况下。 但是#xff0c;如果我们忽略默认锁#xff0c;并且并行… EJB Singleton Bean是EJB 3.1规范引入的通常用于存储缓存的数据。 这意味着我们尝试通过使用Singleton来提高应用程序的性能。 总的来说这很好。 特别是在并行调用不多的情况下。 但是如果我们忽略默认锁并且并行调用的数量增加它就会改变。 合理的默认值 让我们从一些Java代码开始看看如何合理设置锁。 以下代码片段显示了一个简单的带有计数器和两个方法的EJB Singleton。 method1将计数器的当前值写入日志method2的计数从0到100。 Singleton Remote(SingletonRemote.class) public class DefaultLock implements SingletonRemote {Logger logger Logger.getLogger(DefaultLock.class.getName());private int counter 0;Overridepublic void method1() {this.logger.info(method1: counter);}Overridepublic void method2() throws Exception {this.logger.info(start method2);for (int i 0; i 100; i) {counter;logger.info( counter);}this.logger.info(end method2);} } 如您所见没有定义锁。 如果我们同时调用两个方法您希望在日志文件中看到什么 2014-06-24 21:18:51,948 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 5) method1: 0 2014-06-24 21:18:51,949 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 4) start method2 2014-06-24 21:18:51,949 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 4) 1 2014-06-24 21:18:51,949 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 4) 2 2014-06-24 21:18:51,950 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 4) 3... 2014-06-24 21:18:51,977 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 4) 99 2014-06-24 21:18:51,977 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 4) 100 2014-06-24 21:18:51,978 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 4) end method2 2014-06-24 21:18:51,978 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 6) method1: 100 2014-06-24 21:18:51,981 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 7) method1: 100 2014-06-24 21:18:51,985 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 8) method1: 100 2014-06-24 21:18:51,988 INFO [blog.thoughts.on.java.singleton.lock.DefaultLock] (EJB default - 9) method1: 100 好的这可能有点意外默认是整个Singleton上的容器管理的写锁定。 这是一个很好的默认设置以避免同时修改属性。 但是如果我们要执行只读操作那么这是一个糟糕的默认设置。 在这种情况下方法调用的序列化将导致高负载下较低的可伸缩性和较低的性能。 如何避免呢 这个问题的答案很明显我们需要注意并发管理。 和Java EE中一样有两种方法可以处理它。 我们可以自己做也可以要求容器做。 Bean托管并发 我不想过多地讨论Bean管理的并发性。 这是管理并发访问的最灵活的方法。 容器允许并发访问Singleton的所有方法并且您必须根据需要保护其状态。 这可以通过使用sync和volatile来完成。 但是要小心很多时候这并不像看起来那样容易。 容器管理并发 容器托管并发性更易于使用但不如Bean托管方法灵活。 但是根据我的经验对于一般用例来说已经足够了。 正如我们在日志中看到的那样容器管理的并发性是EJB Singleton的默认值。 容器为整个Singleton设置写锁定并序列化所有方法调用。 我们可以更改此行为并在方法和/或类级别上定义读写锁。 这可以通过使用 javax.ejb.Lockjavax.ejb.LockType注释Singleton类或方法来完成。 LockType枚举提供值WRITE和READ来定义互斥写锁定或读锁定。 以下代码片段显示了如何将method1和method2的Lock设置为LockType.READ 。 Singleton Remote(SingletonRemote.class) public class ReadLock implements SingletonRemote {Logger logger Logger.getLogger(ReadLock.class.getName());private int counter 0;OverrideLock(LockType.READ)public void method1() {this.logger.info(method1: counter);}OverrideLock(LockType.READ)public void method2() throws Exception {this.logger.info(start method2);for (int i 0; i 100; i) {counter;logger.info( counter);}this.logger.info(end method2);} } 如前所述我们可以通过使用LockLockType.READ注释类而不是同时使用这两种方法来实现相同的目的。 好的如果一切都按预期进行则应该并行访问这两种方法。 因此让我们看一下日志文件。 2014-06-24 21:47:13,290 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 10) method1: 0 2014-06-24 21:47:13,291 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) start method2 2014-06-24 21:47:13,291 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 1 2014-06-24 21:47:13,291 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 2 2014-06-24 21:47:13,291 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 3... 2014-06-24 21:47:13,306 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 68 2014-06-24 21:47:13,307 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 69 2014-06-24 21:47:13,308 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 3) method1: 69 2014-06-24 21:47:13,310 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 70 2014-06-24 21:47:13,310 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 71... 2014-06-24 21:47:13,311 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 76 2014-06-24 21:47:13,311 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 77 2014-06-24 21:47:13,312 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 2) method1: 77 2014-06-24 21:47:13,312 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 78 2014-06-24 21:47:13,312 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 79... 2014-06-24 21:47:13,313 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 83 2014-06-24 21:47:13,313 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 84 2014-06-24 21:47:13,314 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 5) method1: 84 2014-06-24 21:47:13,316 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 85 2014-06-24 21:47:13,316 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 86 2014-06-24 21:47:13,317 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 87 2014-06-24 21:47:13,318 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 88 2014-06-24 21:47:13,318 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 6) method1: 89 2014-06-24 21:47:13,318 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 89 2014-06-24 21:47:13,319 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 90... 2014-06-24 21:47:13,321 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 99 2014-06-24 21:47:13,321 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) 100 2014-06-24 21:47:13,321 INFO [blog.thoughts.on.java.singleton.lock.ReadLock] (EJB default - 1) end method2结论 在本文开头我们发现Java EE使用容器管理的写锁作为默认值。 这导致所有方法调用的序列化处理并降低了应用程序的可伸缩性和性能。 在实现EJB Singleton时我们需要牢记这一点。 我们看了两个用于控制并发管理的现有选项Bean管理的并发和容器管理的并发。 我们使用容器托管方法为单例的这两种方法定义了一个读锁。 这不像bean管理的方法那样灵活但是它更容易使用并且在大多数情况下足够了。 我们只需要提供一个注释容器将处理其余的注释。 翻译自: https://www.javacodegeeks.com/2014/06/java-ee-pitfalls-1-ignore-the-default-lock-of-a-singleton.html
http://www.sadfv.cn/news/336166/

相关文章:

  • 什么语言做网站快自驾游黄山风景区旅游攻略
  • 第一次开票网站建设怎么开安全通道入口
  • 怎样做网站反链网站推广员招聘
  • 做公益活动的网站微信官网免费下载
  • 南通市建设工程安全监督站网站贵州成品网站
  • 网络建站东北品牌vi设计内容
  • 菜鸟网站建设南京门户网站建设
  • 为什么要建设旅游网站用手机制作网站
  • 合肥高端网站asp网站后台管理教程
  • 精湛的网站建设网站的建立目的
  • 汇算清缴在哪个网站做手机网站怎么设计
  • 阿里云建设网站临沂网站建设兼职
  • 如何给wordpress添加一张网站背景云小店自助下单
  • 溧阳城乡建设厅网站无极app定制开发公司网站模板
  • 店铺推广和网站优化一起做京东网站建设需求分析报告
  • 网站建设银行转账wordpress最佳服务器配置
  • 阜阳网站制作公司找哪家百度seo优化是什么意思
  • 网站源码免费分享苏州正规做网站公司
  • 信阳网站建设费用大连招投标网官网
  • 苏州市市政建设集团公司网站野望王维
  • 上海科技网站建设wordpress视频显示控件
  • 仿织梦小说网站源码怎么做论坛的网站吗
  • 苏州网站seo优化快捷的赣州网站建设
  • 有哪些网站可以做网站游戏多语种网站建设公司
  • 宿迁网站建设多少钱百度建网站多少钱
  • 网站应用水印图片济南城市建设集团
  • 电子商务网站建设html啤酒免费代理0元铺货
  • 网站群管理wordpress cache插件
  • wordpress 做网课网站免费空间 wordpress
  • 游戏网站制作教程如何获取免费域名