我们已经在YouTube上发布了JPoint 2018报告的视频,特别是针对Habré上的Java集线器,我们根据会议的参观者从传统中精选了最好的报告。
像往常一样,顶部是“初级”报告,最后是评级最高的报告。 当然,这并不意味着一个报告要比另一个报告差很多:如果您更改计算方法,则位置很容易更改。 实际上,我们进行了更改,现在使用了“软仲裁”评分选项,同时考虑到了报告中存在的参与者人数。 这种方法有其缺点(例如,由于听众没有选择余地,参加主题演讲的人要多于定期报告),但总体上可以更好地了解发生的情况。
在最佳报告的剪辑和视频中,包括其演示文稿,简短说明的链接以及指向完整播放列表的链接。

完整播放清单
完整的播放列表以及下面讨论的所有视频均在此处提供 。
→ 下载幻灯片
容器革命席卷了所有人-Java世界并非没有它。 尽管如此,Java一直都有并且存在某些问题和功能,将在Sasha Goldstein的报告中进行讨论。
萨莎(Sasha)是性能核心的连续创造者。 去年,在JPoint上,他就将Berkeley数据包筛选器用于JVM进行了精彩的演讲(我极力建议您观看YouTube帖子),而详细了解容器化只是时间问题。 世界进入云层和码头,这又给我们带来了许多新问题。 您可能已经注意到,大多数低级调试和概要分析系统在将其应用到容器后,都被不同的功能和边框包围。 Sasha通过在GNU / Linux平台上使用现代工具(包括BCC和perf)来浏览主要场景(CPU利用率,IO响应性,对共享数据库的访问等)。
并非每个人都需要这种特异性。 这就是该报告仅排在第十位的原因之一-大约有200人参加了该报告(与Tolkachev和Borisov的1000多人相比),并且我们的评分计算算法对受众的规模非常敏感。
对于那些以某种方式与容器有关的人,必须查看此报告。 通过对无数实用程序及其使用方式的完整搜索,可以在独立搜索所有详细信息上节省大量时间。
我还想指出,就单位时间的实用信息量而言,Sasha的前十名报告几乎是最密集的。 您几乎可以从每张幻灯片中复制一些有用的东西。 为了不进行详细的转述,我将仅显示演示文稿的表面结构:
报告大纲- 容器如何布置?
- 控制组:CPU,内存,块I / O;
- 命名空间:pid名称空间,mount名称空间,网络名称空间;
- 出现的问题之间的区别:
- 在主机上;
- 在容器中;
- 解决方案的问题示例:
- 主机上的演示JVM工具;
- 资源信息工具:
- 监控边车;
- 码头工人统计;
- systemd-cgtop;
- htop + cgroup ID;
- nsenter或docker exec;
- 演示容器资源的监控;
- 分析CPU容器:
- 主机上的性能:-G,符号映射,PID映射,共享性能映射(perf-map-agent);
- 带有火焰图的演示; 哦
- 以非特权模式在容器中进行性能测试;
- 老实剖析器,异步剖析器,性能vs异步剖析器;
- 演示async-profiler;
- BCC是一种概要分析工具(它本身可以解决许多问题,但仅在Linux 4.9+上有效);
- 节流;
- 其他监视方法:
- cAdvisor,SysDig,New Relic,DataDog ...
9.每年一次,花园盛开:解析“一次” Apache Kafka的语义
→ 下载幻灯片
维克多·加莫夫(Victor Gamov)与其他演讲者相比有着完全不公平的优势。 这个人发行了近200期Debriefing播客,他是一堆报告,文本,帖子甚至是O'Reilly撰写的“ Enterprise Web Development”一书的作者。 Gamow的存在可以做得更好。 我相信他可以用同样的语气说出关于卡夫卡的事情,而不是讲窗台上天竺葵的生长,这仍然会令人着迷。
在这里,我们有一个特例:最初是关于“恰好一次”的语义的holivorny主题。 Kafka急于以超大规模使用所有内容,这需要处理传统的消息传递语义。 不要将手指放在嘴里,他们会按照正确的协议和消息格式在旅途中换鞋,并做了他们需要的一切。 在整个报告中,Victor讨论了它在内部的排列方式及其影响。
好消息和坏消息两个。 好:一切都在卡夫卡完成。 不好:一切都在Kafka中设置。 要忍受它,您需要了解它的工作原理以及用肮脏的手爬到哪里。
可以从维克多那里得到一些冰沙,但是后来他得到了一个绝望的铁杆,而这个计划是这样的:
报告大纲- 卡夫卡简介:
- 话题
- 隔断
- 日志和偏移
- 提示和领导者
- 客户:生产者和消费者
- 制片人
- 消费类
- 加工型号
- 处理语义
- 语义“恰好一次”
- 解决第一个弱点:幂等的生产者
- 解决第二个弱点:
- 昌迪·兰帕特快照
- 卡夫卡交易
- 两种类型的标记(COMMIT,ABORT)
- 许多分区上的原子记录(包括_Consumer_offsets)
- 修复第三个弱点:僵尸击剑
- 消费者阅读隔离
- 端到端的EOS
- Kafka连接源
- 卡夫卡溪流
- Kafka Connect水槽
8.使用Kafka Streams和Firehose API对抗俄罗斯黑客
→ 下载幻灯片
再次卡夫卡! 高莫! 是的,现在有了Baruch Sadogursky( jbaruch )。 尽管如此,这份报告并不是思慕雪,而是关于Bintray平台(巴鲁克是上帝)在Bintray平台上如何使用Apache Kafka(由Victor负责)和Firehose如何分析行为模式和处理大量数据的非常具体的实用文章。
如果以前关于卡夫卡内部的报告有245张幻灯片,那么该幻灯片只有17张。这是因为您需要观看! 这主要是主要演示和现场演示之间的生动对话。 不要徘徊,打开vidosik并看一下。
7. Java中的硬件事务存储
→ 下载幻灯片
Nikita Koval( ndkoval )是JetBrains的Kotlin团队研究员,也是IST Austria的博士学位学生(在演讲时他在Devexperts任职)。 他的报告与“俄罗斯黑客”形成鲜明对比,因为它不是一个轻松有趣的阅读材料,而是一个关于虚拟机内部错综复杂的故事。 如果看幻灯片 ,您可以找到150张纸,其中大多数是代码。
如果您在2018年初加入JBreak,您可能会发现Nikita的故事完全不同-使用现代多核架构和特殊算法的功能编写快速多线程哈希表。 同意,尼基塔有一种风格 。 我立即回想起希普列夫。
这次我们将讨论事务性内存,它已逐渐出现在现代处理器中,但仍不清楚如何将其用于JVM世界中的普通人。 当然,在JVM之外,一切都更加简单。 但是,想像一下您对常规的Spring Web开发人员说的话:“是的,只需编辑vmstructs,堆积您的内在函数,重建OpenJDK就可以了!” 他是这样的:“当然,我每天都会这样做!”。 Nikita只是非常清楚地讨论了使用方法,OpenJDK中已经进行了哪些优化以及如何直接从Java代码执行事务。
报告大纲- 简介:为什么需要多线程
- 算法构建方法
- 粗锁
- 薄锁
- 无阻塞同步
- 关于玩具银行的示例任务说明了所有三种类型。
- 多线程很复杂。 怎么办
- 完美世界中的交易。 只是写原子!
- 从哪里获得原子:
- 软件事务存储(STM)。 Scala STM,NOrec,协程。
- 硬件事务性内存(HTM)。 Haswell,电源8。
- 混合交易记忆
- 英特尔RTM示例
- XBEGIN,XEND,XABORT,XTEST
- 英特尔RTM + Java
- 锁定省略
- java.util.concurrent.RTMSupport
- 内在:解释器,C1,C2
- 图表上的粗粒度/无锁+ RTM支持
6.我们准确地描述了微秒和处理器指令
→ 下载幻灯片
Raiffeisenbank的Sergey Melnikov( RainM )为我们带来了第二份分析报告。 有趣的是,在研究低延迟Java代码之前,他在Intel担任C / C ++ / FORTRAN语言的编译器性能工程师。 该报告也有性能! :-)还介绍了处理器的硬件功能和Intel Processor Trace技术,使您可以进行精度分析的下一步并重建程序部分的执行。 此类报告很少(例如,您可以在Tracing Summit 2015上找到Andi Kleen报告 ),它们通常会产生很多问题,并且与Java无关。 在这里,我们不仅有一个拜访了两个世界(银行中的英特尔和Java)的人,而且知道如何清楚地解释复杂的话题。
报告大纲- 这是什么,为什么有必要
- 选择一个探查器
- 我们教导探查器组装详细的探查文件
- 如何运行性能
- 如何在配置文件中查找调用堆栈
- perf-map-agent,sysctl,dmesg ...
- 在perf中使用PMU / PEBS事件
- 英特尔处理器跟踪-它是什么以及如何分析Java
- 要求:软件包,硬件,操作系统
- 如何在Skylake-X(至强和i9)上运行
5. VMStructs:为什么应用程序需要了解JVM内部信息
→ 下载幻灯片
安德烈( apangin )是一个不断地收集最深刻和最有力的报告的人。 过去,Joker聚集了不到一千人-这是定期报告中的受众人数记录,而不是基调。 在这方面,他在虚拟机上有十多年的工作经验,并具有解释技术核心的能力,因此可以在实践中重复使用。
许多人不太了解为什么要在虚拟机上运行常规应用程序,数据库以及一切正常的情况下进入虚拟机。 该报告在“如何理解哪个查询将提取大量数据?”级别上有一个很好的论据。 如果尝试使用JMX指示代码,那么性能将开始发生奇怪的变化。 首先,您可以了解为什么会发生这种情况,其次,可以对此做些什么。 在我看来,这份报告的价值不在于使用一套工具(尽管那里有很多工具),而是展示了正确的OpenJDK开发人员的思维模式以及在困难情况下的行为方式。 讲出状态并解释特定内容的含义,例如TLAB,代码缓存,常量池等。
4.科特林的协程
→ 下载幻灯片
现在只有懒惰的人不了解Kotlin,而您(读者)曾经读过第四段-显然不是从懒惰的人那里读到的。 Roman( elizarov )以前是高性能交易软件的开发人员,现在他是Kotlin图书馆的负责人。 我们已经对Roma进行了有关协程的采访 ,可能值得在查看报告之前或之后重新阅读 。 自从Simula时代以来,协程是一个非常古老的概念,但是并不是所有主流语言都支持协程,因此它们不会很快出现在Java中。 但是在Kotlin中,它们已经是稳定版本。
该报告回答了有关协程的所有相关问题,即我们这个时代的所有相关问题:-)
报告大纲- 语言发展概况
- 异步回调编程
- 期货/承诺/收款
- 科特林的协程
- 常规循环,异常处理,高阶函数
- 自定义高阶函数
- 一切似乎都在阻塞代码中!
- 如何运作?
- 整合性
- 改造异步
- 回调和继续(来自Scheme的呼叫/抄送!)
- contlinx-协程核心
- 如何运行协程?
- 异步/等待
- 为什么Kotlin中没有关键字await?
- 并发很难。 您需要明确地执行此操作。
- Kotlin的异步方法
- Corutin概念:非常轻巧的螺纹
- 与Java互操作
- 同步协程-产生/产生
- 沟通顺序流程(CSP)
- 图书馆与语言
- 舌头的核心应该很小!
- 关键字:异步/等待,生成/产生
- 修饰符:暂停
- kotlinx协程:启动,异步,runBlocking,未来,延迟,作业,延迟,...
3.在巨人的肩膀上:科特林研究的语言
→ 下载幻灯片
一位语言的创造者关于Kotlin的报道-幸福还需要什么? 演示文稿的本质和结构与Elizarov的上一份报告完全不同。 小说讲述了具体的事情-协程设计的内容,方式和原因,以及如何使用它,而我需要这样做来提高Kotlin的编程技能。 在这里,安德烈(安德烈· 斯拉夫 ( Andrei )( 阿布斯拉夫 ))谈论可以改善人们普遍的博学生活并了解自己在世界上的地位的事物。 如果您亲眼目睹了所有这些语言-Java,C#,Scala,Groovy,Python,Gosu-这将更加有趣,因为有进行讨论的理由(会议访问者可能会借此机会并真正讨论他们对讨论区中事物的理解) ) 这是“七周之内七种语言”,但只有一小时。
顺便说一句,我们最近对安德烈(Andrey)进行了一次专访 ,但这不仅涉及科特林(Kotlin),而且涉及许多不同的事情。
2.高级福尔摩斯和初级沃森在软件开发世界中的冒险
→ 下载幻灯片
进行不止一位发言人的演讲非常困难。 通常看起来是这样的:一半的时间,其中一个人站在舞台上感到无聊,看起来很沉闷。 关于Baruch Sadogursky和Evgeny Borisov( EvgenyBorisov )的共同表演,您能说些什么-相反,它做得很出色,是一件艺术品。 明星们以正确的顺序聚集在一起,舞台上出现了两位经验丰富的顶级演讲者,他们进行配对报告的做法是为了讨论他们俩都感兴趣的话题。 我为什么要强调这一点-通常观众不知道这样的演示文稿是什么,所以他们认为一切都是理所当然的。
但是结果证明了投资的合理性。 自己判断一下,这是晚上的主题演讲,是最新的会议报告,在此会议中,人们已经精疲力竭了两天的锡,他们想睡觉,有人需要立即回家等等。 但是,肯定有600多人留在大厅里。
这不是参考报告,而是报告显示,必须对其进行监视。 在其中,福尔摩斯和沃森将揭示您在日常发展中遇到,遇到或将会遇到的几个难题。 不会有大量的垃圾收集器和字节码,但是会有工具,库和框架使普通开发人员的日常工作迷惑不解,导致宕机,截止日期的分析和旷日持久的萧条。 实际上,在此报告中,Sherlock和Watson可以保护您的额头免于被人踩在脸上的手掌和耙子弄伤。
因此,这里不会有简短的摘要-只需开始观看视频即可。
1.引导自己,春天来了
→ 下载幻灯片
Baruch + Gamow,Baruch + Borisov,谁是流行配对报告的作者中缺少的人? 没错,鲍里索夫+托尔卡切夫( tolkkv )。 另一个很酷的报告(不是主题演讲)聚集了创纪录的参与者-超过一千。 内容太多了,非常有趣,在会议计划中为其分配了两个位置-您必须相应地在YouTube上观看两个视频。
许多年前,Java程序员使用“ new”来创建服务。 他们做了很多手动操作,并将配置与业务逻辑混合在一起。 他们甚至使用复制粘贴技术。 编写了许多可怜的代码行,有时甚至行得通。
然后是春天。 他的情况发生了很大变化。我们从Spring魔术缸中获得了很多“魔术”,并且我们的代码变得更加清晰,简单和可维护。
于是出现了Spring Boot。 一方面,它解决了数千个先前存在的问题:版本冲突,配置任务,使用基础结构容器,设置环境的问题,当然还包括启动或部署应用程序,包括构建jar / war档案。 另一方面,Spring Boot为我们的魔术缸增加了更多的魔力。 结果,有两种情况:
- 一切都很好,尽管没人知道如何做。
- 没有任何工作,没人知道为什么。
该报告揭示了Spring Boot魔术的基本秘密。 您将了解典型Spring Boot应用程序的基本原理和约定。 西里尔(Cyril)和尤金(Eugene)的任务,使圆柱体上的所有魔力都变成一个更加透明的过程,您不仅可以在一切正常的情况下享受乐趣,还可以理解问题的实质并可以解决问题,而无需涉及救护车和其他可用的服务紧急电话。
结论
我花了几天的时间观看列表中的所有视频。 这并不容易,但是很明显这是值得的。 实际上,会议上的报告更多,从更大的角度来看,查看前十名报告是一个好的开始。 如果您还可以观看这些报告,请不要太懒惰,不要在Habré的评论中写下您的评论!
同时,已经可以购买下一个JPoint的票了。 它将于2019年4月5日至6日在WTC会议中心举行。 直到1月1日,仍有机会以低价购买门票!