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

网站遇到攻击时应该怎么做wordpress下载页源码

网站遇到攻击时应该怎么做,wordpress下载页源码,电脑优化,wordpress和shopex我在最近的一次网络研讨会中谈到了这个问题#xff0c;现在是时候以书面形式进行解释了。 线程安全是Java等语言/平台中类的重要品质#xff0c;我们经常在线程之间共享对象。 缺乏线程安全性导致的问题很难调试#xff0c;因为它们是零星的并且几乎不可能有意复制。 您如何… 我在最近的一次网络研讨会中谈到了这个问题现在是时候以书面形式进行解释了。 线程安全是Java等语言/平台中类的重要品质我们经常在线程之间共享对象。 缺乏线程安全性导致的问题很难调试因为它们是零星的并且几乎不可能有意复制。 您如何测试对象以确保它们是线程安全的 这就是我的做法。 女人的香气1992马丁·布雷斯特Martin Brest 我们说有一个简单的内存书架 class Books {final MapInteger, String map new ConcurrentHashMap();int add(String title) {final Integer next this.map.size() 1;this.map.put(next, title);return next;}String title(int id) {return this.map.get(id);} } 首先我们将一本书放在那里书架返回其ID。 然后我们可以通过ID读取该书的标题 Books books new Books(); String title Elegant Objects; int id books.add(title); assert books.title(id).equals(title); 该类似乎是线程安全的因为我们使用的是线程安全的ConcurrentHashMap而不是更原始的和非线程安全的HashMap 对吧 让我们尝试测试一下 class BooksTest {Testpublic void addsAndRetrieves() {Books books new Books();String title Elegant Objects;int id books.add(title);assert books.title(id).equals(title);} } 测试通过了但这只是一个单线程测试。 让我们尝试从几个并行线程中进行相同的操作我正在使用Hamcrest class BooksTest {Testpublic void addsAndRetrieves() {Books books new Books();int threads 10;ExecutorService service Executors.newFixedThreadPool(threads);CollectionFutureInteger futures new LinkedList();for (int t 0; t threads; t) {final String title String.format(Book #%d, t);futures.add(service.submit(() - books.add(title)));}SetInteger ids new HashSet();for (FutureInteger f : futures) {ids.add(f.get());}assertThat(ids.size(), equalTo(threads));} } 首先我通过Executors创建线程池。 然后我通过submit()提交10个Callable类型的对象。 他们每个人都会在书架上添加一本独特的新书。 所有这些将由池中的那十个线程中的某些线程以某种不可预测的顺序执行。 然后我通过Future类型的对象列表获取其执行者的结果。 最后我计算创建的唯一图书ID的数量。 如果数字为10则没有冲突。 我使用Set集合来确保ID列表仅包含唯一元素。 测试通过了我的笔记本电脑。 但是它不够坚固。 这里的问题是它并没有真正从多个并行线程测试这些工作Books 。 我们调用之间经过的时间submit()是足够大的完成的执行books.add() 这就是为什么实际上只有一个线程可以同时运行的原因。 我们可以通过修改一些代码来检查它 AtomicBoolean running new AtomicBoolean(); AtomicInteger overlaps new AtomicInteger(); CollectionFutureInteger futures new LinkedList(); for (int t 0; t threads; t) {final String title String.format(Book #%d, t);futures.add(service.submit(() - {if (running.get()) {overlaps.incrementAndGet();}running.set(true);int id books.add(title);running.set(false);return id;})); } assertThat(overlaps.get(), greaterThan(0)); 通过此代码我试图查看线程相互重叠的频率并并行执行某些操作。 这永远不会发生并且overlaps等于零。 因此我们的测试尚未真正完成任何测试。 它只是在书架上一一增加了十本书。 如果我将线程数量增加到1000它们有时会开始重叠。 但是即使它们数量很少我们也希望它们重叠。 为了解决这个问题我们需要使用CountDownLatch CountDownLatch latch new CountDownLatch(1); AtomicBoolean running new AtomicBoolean(); AtomicInteger overlaps new AtomicInteger(); CollectionFutureInteger futures new LinkedList(); for (int t 0; t threads; t) {final String title String.format(Book #%d, t);futures.add(service.submit(() - {latch.await();if (running.get()) {overlaps.incrementAndGet();}running.set(true);int id books.add(title);running.set(false);return id;})); } latch.countDown(); SetInteger ids new HashSet(); for (FutureInteger f : futures) {ids.add(f.get()); } assertThat(overlaps.get(), greaterThan(0)); 现在每个线程在接触书本之前都要等待latch给予的许可。 当我们通过submit()提交所有内容时它们将保持等待状态。 然后我们使用countDown()释放闩锁它们同时开始运行。 现在在我的笔记本电脑上即使threads为10 overlaps也等于3-5。 最后一个assertThat()现在崩溃了 我没有像以前那样得到10个图书ID。 它是7-9但绝不是10。显然该类不是线程安全的 但是在修复该类之前让我们简化测试。 让我们用RunInThreads从Cactoos 这确实是我们在前面已经做了完全一样的但引擎盖下 class BooksTest {Testpublic void addsAndRetrieves() {Books books new Books();MatcherAssert.assertThat(t - {String title String.format(Book #%d, t.getAndIncrement());int id books.add(title);return books.title(id).equals(title);},new RunsInThreads(new AtomicInteger(), 10));} } assertThat()的第一个参数是Func 功能接口的实例它接受AtomicInteger RunsInThreads的第一个参数并返回Boolean 。 使用与上述相同的基于闩锁的方法将在10个并行线程上执行此功能。 该RunInThreads似乎紧凑且方便我已经在一些项目中使用它。 顺便说一句为了使Books线程安全性我们只需要向其方法add()添加synchronized 。 或者也许您可​​以提出更好的解决方案 翻译自: https://www.javacodegeeks.com/2018/03/how-i-test-my-java-classes-for-thread-safety.html
http://www.yutouwan.com/news/120571/

相关文章:

  • 西安微商城网站建设淘宝网站做多久
  • 杭州做网站建设公司遂宁公司做网站
  • 网站开发语言啥意思企业网站买卖建设流程
  • 做新网站推广的活动说明网站建设与网站运营的区别
  • 广州网站建设 讯度网络花生壳 做网站
  • 资讯网站建设流程免费代理
  • logo设计网站国外如何在阿里巴巴上做网站
  • 在线免费网站模板苏州汇聚人电子科技有限公司
  • 做网站用html好还是vue好开办时 网站建设费 科目
  • 长沙岳麓区网站建设如何确认建设银行网站不是假的
  • 查网站备案黄冈网站优化公司哪家好
  • 个人网站建设方案书 学生注册网站好的平台
  • 上海建设企业网站企业所得税会计分录怎么做
  • 全国知名网站排名网站建设设计企业
  • 石家庄视频网站建设公司苏州seo全网营销
  • 门户网站栏目维护建设方案微信小程序引流推广软件
  • 牛搬家网企业网站排名汽车4s网站设计
  • 做的比较好的网站有哪些深圳广告网站设计制作
  • 网站策划书主题全球速卖通买家app
  • 什么是网络营销的主要职能之一seo查询价格
  • 山西太原做网站网站开发预算怎么算
  • 网站建设 保密公司网站备案有什么用
  • 深圳大型商城网站建设wordpress中文主
  • 大学加强网站建设与管理的通知西安做一个企业网站要多少钱
  • 2023最建议买10款手机wordpress系统优化
  • 一个网站需要什么商标注册网app
  • 开网店教程番禺seo培训
  • 本网站正在建设图片做家常菜的网站
  • 地域性旅游网站建设系统结构网站开发用的框架前端
  • 坑梓网站建设哪家好网站快速备案被退回的几种原因分析