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

电脑路由器做网站服务器杭州住房和城乡建设部网站

电脑路由器做网站服务器,杭州住房和城乡建设部网站,社区类网站开发,stp营销战略自然界的基本规则#xff08;例如光速和通用信息论#xff09;对我们可以从传统系统体系结构中获得的最大性能设置了明显的限制。 了解您作为Java开发人员如何使用JVM技术和Java流将性能提高几个数量级。 例如#xff0c;如果应用程序服务器和数据库服务器相距100 m#… 自然界的基本规则例如光速和通用信息论对我们可以从传统系统体系结构中获得的最大性能设置了明显的限制。 了解您作为Java开发人员如何使用JVM技术和Java流将性能提高几个数量级。 例如如果应用程序服务器和数据库服务器相距100 m约330英尺则光速带来的往返延迟将略微超过600 ns。 更重要的是由于采用了TCP / IP协议尽管采用了黑带技巧例如自定义内核但10 GBit / s连接上的单个数据包往返延迟几乎无法优化到小于25 us 25,000 ns。构建繁忙的轮询和CPU关联性。 在本文中我将展示如何使用JVM内存技术直接从RAM创建Java Streams。 我们将使用名为Speedment的基于Stream的Java ORM它可以使用标准格式执行数据分析 java.util.stream.Stream对象以及如何在200 ns内创建和完成其中一些流的方法令人惊讶的是这仅是访问64位主内存的CPU延迟的两倍。 200 ns比远程数据库100 m的理论最小延迟快125倍以上该远程数据库的内部处理延迟为零并且单个TCP数据包可以传达查询和响应。 在实时方案中数据库的内部处理延迟永远不会为零并且查询和结果通常都以多个TCP包发送。 因此在许多情况下加速因子可能是1000倍甚至更多。 数据库 在下面的示例中我们将Sakila数据库内容中的数据用于MySQL。 Sakila是为电影租赁商店建模的示例数据库。 它具有名为FilmActorCategory等的表格可以在此处免费下载。 应该注意的是这是一个小型数据库但事实证明许多Speedment流操作的复杂度为O(1)或O(log(N()) 因此无论大小如何都确保相同的速度或较小的数据集。 步骤1建立专案 首先我们需要配置我们pom.xml -file使用最新Speedment依赖和Maven插件。 最快的方法是生成一个 使用可以在此处找到的Speedment Initializer的pom.xml -file。 首先选择数据库类型“ MySQL”并确保启用了“内存中加速”然后按“下载”您将获得一个完整的项目文件夹其中包含为您自动生成的Main.java文件。 接下来解压缩项目文件夹的zip文件打开命令行转到解压缩的文件夹 pom.xml文件所在的文件夹然后输入以下命令 mvn speedment:tool 接下来连接到数据库并开始 步骤2产生程式码 从数据库中加载模式数据后可以通过按“生成”按钮来生成完整的Java域模型。 步骤3编写应用程序代码 为了使用Speedment首先需要创建一个Speedment实例。 这可以通过使用在步骤2中与域模型一起自动生成的构建器来完成。 Main.java文件并替换其中的代码 此代码段的main()方法 Speedment app new SakilaApplicationBuilder()// Replace this with your own password.withPassword(sakila-password)// Enable in-JVM-memory acceleration// By just commenting away this line, we can disable acceleration.withBundle(InMemoryBundle.class).build();// Load data from database into a snapshot view if// we have installed In-JVM-Accelerationapp.get(DataStoreComponent.class).ifPresent(DataStoreComponent::load); 为了演示基本功能我们将首先编写一个仅打印所有电影的应用程序 // Obtains a FilmManager that allows us to // work with the film table FilmManager films app.getOrThrow(FilmManager.class);// Create a stream of films and print // each and every film films.stream().forEach(System.out::println); 上面的代码将产生以下输出为简洁起见以下简称 FilmImpl { filmId 1, title ACADEMY DINOSAUR, …, length 86, ... } FilmImpl { filmId 2, title ACE GOLDFINGER, ..., length 48, ...} FilmImpl { filmId 3, title ADAPTATION HOLES, ..., length 50, ...} ...步骤3使用筛选器 Speedment流支持所有流操作包括过滤器。 假设我们只想过滤那些长于60分钟的影片并计算发生的次数。 可以这样完成 films.stream().filter(Film.LENGTH.greaterThan(60)).count();System.out.format(There are %,d films longer than 60 minutes., count); 这将产生以下输出 There are 896 films longer than 60 minutes 可以将任意数量的过滤器应用于流并将谓词提供给 filter()方法可以使用 and() / or()运算符。 步骤4设定JMH 到目前为止我们还没有看到任何性能数据。 在本文中我们将使用JMH进行基准测试。 JMH是用于构建运行和分析以Java和其他针对JVM的其他语言编写的基准测试的Java工具。 我们将使用两种流类型来进行性能评估 这是一个相当简单的流程我们在其中对评级等于PG-13的电影进行计数称为“滤镜和计数” 在更复杂的流中我们按照LENGTH顺序对所有电影进行排序降序然后跳过前745部电影然后处理以下5部电影从而从这5部电影中提取租借时间最后计算出这些整数的统计值即最小值最大值和平均值。 此类型称为“复杂”。 以下代码摘录显示了我们将要运行的基准测试 private static final Predicate RATING_EQUALS_PG_13 Film.RATING.equal(Rating.PG13);private static final Comparator LENGTH_DESCENDING Film.LENGTH.reversed();Benchmark public long filterAndCount() {return films.stream().filter(RATING_EQUALS_PG_13).count(); }Benchmark public IntSummaryStatistics complex() {return films.stream().sorted(LENGTH_DESCENDING).skip(745).limit(5).mapToInt(Film.RENTAL_DURATION.asInt()).summaryStatistics(); } 以下设置用于单线程延迟测量 # JMH version: 1.21 # VM version: JDK 10, Java HotSpot(TM) 64-Bit Server VM, 1046 # VM invoker: /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/bin/java # VM options: -javaagent:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar63173:/Applications/IntelliJ IDEA CE.app/Contents/bin -Dfile.encodingUTF-8 # Warmup: 5 iterations, 10 s each # Measurement: 5 iterations, 10 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: com.example.Bench.complex使用SQL与MySQL数据库进行流传输 对我的笔记本电脑MacBook Pro2015年中2.2 GHz Intel Core i716 GB RAM上的标准MySQL数据库版本5.7.16运行这些查询将产生以下输出 SINGLE-THREADED LATENCY (Lower is better) Benchmark Mode Cnt Score Error Units Bench.complex avgt 5 0.003 ± 0.001 s/op Bench.filterAndCount avgt 5 0.001 ± 0.001 s/opMULTI-THREADED THROUGHPUT (Higher is better) Benchmark Mode Cnt Score Error Units Bench.complex thrpt 5 1714.980 ± 343.655 ops/s Bench.filterAndCount thrpt 5 3154.984 ± 318.881 ops/s使用MySQL数据库中的JVM内存加速功能进行流传输 启用JVM内存中加速并在笔记本电脑上再次运行相同的基准测试将产生以下结果 SINGLE-THREADED LATENCY (Lower is better) Benchmark Mode Cnt Score Error Units Bench.complex avgt 5 ≈ 10⁻⁶ s/op Bench.filterAndCount avgt 5 ≈ 10⁻⁷ s/opMULTI-THREADED THROUGHPUT (Higher is better) Benchmark Mode Cnt Score Error Units Bench.complex thrpt 5 4793915.881 ± 374680.158 ops/s Bench.filterAndCount thrpt 5 16958800.191 ± 1023015.568 ops/s 在一台旧笔记本电脑上每秒能够产生和消耗近1700万个视频流的能力真是令人惊讶。 具有许多CPU内核的现代服务器级计算机将很容易每秒能够产生和消耗超过2500万个流。 延迟的JMH时间分辨率不足以测量足够的准确性。 通过使用一个线程运行吞吐量测试并将结果取反平均“过滤器和计数”延迟估计为1 / 5,564,678 180 ns。 这种更准确的等待时间估算可提供大约5,000而非10,000的估算性能提升因子。 结论 启用JVM中的内存加速可以大大提高性能。 在上述基准测试中 单线程延迟减少了以下因素 复合体约3,000 筛选和计数〜5,000 多线程吞吐量增加了以下因素 综合楼2,700 筛选和计数5,300 作为说明这意味着具有一百万个子查询的复合JVM操作会将其聚合数据延迟从1小时减少到1秒。 笔记 为了提高SQL性能将流自动呈现给SQL查询。 呈现的“过滤并计数” SQL查询如下所示 SELECT COUNT(*) FROM (SELECT film_id,title,description,release_year, language_id,original_language_id,rental_duration,rental_rate, length,replacement_cost,rating,special_features,last_update FROMsakila.film WHERE (rating ? COLLATE utf8_bin) ) AS A , values:[PG-13] 评级列中定义了一个索引。 可以看出所有计数都是在数据库端完成的并且流没有将任何不必要的Film对象从数据库拉入JMH应用程序。 源代码 可以在此处查看基准测试的源代码。 摘要 在本文中您已经了解了如何使用Speedment Free显着减少数据分析Java应用程序中的延迟同时提高吞吐量。 加速因素是几个数量级。 翻译自: https://www.javacodegeeks.com/2018/09/ultra-low-latency-querying-with-java-streams-and-in-jvm-memory.html
http://www.sadfv.cn/news/201877/

相关文章:

  • 性价比最高网站建设价格网站开发应用技术专业
  • 电商网站开发多少钱网站制作论文文献综述
  • 电子科技学校网站建设wordpress积分等级
  • 揭阳城乡建设局网站idc分销系统
  • c2c商城网站建设二次开发电子商务交易平台
  • 天津自动网站建设调试付第三期网站建设费的账务处理
  • 网站开发工程师 北大青鸟小程序定制开发外包风险
  • 网站建设基本流程价格网站设计制作的服务好不好
  • 祥云网站建设公司 概况网站部分乱码
  • 视频解析网站建设提供给他人做视频解析的网站源码
  • 网站开发产品描述网页制作教程视频下载
  • 商城类网站模板中国空间站vr全景
  • php网站广告管理系统烟台市未成年思想道德建设网站
  • 建站有哪些公司西安市住房和城乡建设局门户网站
  • 北京综合网站建设系列泉州cms建站系统
  • 肥西县建设局资询网站wordpress常用数组
  • 免费设计图网站page文件转换wordpress
  • 个人网站每年要多少钱深圳网站建设 网站设计
  • 网站开发 在html标记后出现乱码 查看源文件显示是问好建设英文网站的公司
  • 超低价的郑州网站建设网站开发费用计入什么科目
  • 做网站公司(深圳信科)网站系统开发流程
  • 这个是以前我自己做的一个网站互联网编程
  • 咨询类网站模板网站为什么改版
  • 学生处网站建设工作总结做排名出租网站
  • 电商网站建设价格低国产做网站
  • 酒店加盟什么网站建设oppo手机商城
  • 免费手机网页seo高级优化方法
  • 浙江做网站套餐重庆市建设工程信息网、
  • 网站内文章外链如何做做机械设备类网站用什么颜色好
  • 网站描述标签优化网页游戏魔域