JVM优化之逃逸分析及锁消除

逃逸分析——我们在上一篇文章中所介绍的由编译器完成的一项的分析技术——使得删除锁的优化成为了可能。如果它能确认某个加锁的对象不会逃逸出局部作用域,就可以进行锁删除。这意味着这个对象同时只可能被一个线程访问,因此也就没有必要防止其它线程对它进行访问了。这样的话这个锁就是可以删除的。这个便叫做锁消除,本文是JVM实现机制的系列文章,这也正是今天要讲的主题。

阅读全文

(译文)InnoDB中的AUTO_INCREMENT处理

(译者注)网站和app并发性能取决于访问链路的每个环节,包括前端、流量路由、后台业务逻辑代码、中间件和数据库等。大部分环节都可以通过横向扩展来提高并发性能,数据库作为链路的末端要保持数据一致性等特点不像其他环节容易横向扩展,所以数据库性能尤为重要,特别是插入性能。
数据库设计通常会用一列与业务无关的自增长id作为主键(互联网业务数据库设计一般不会完全遵循数据库范式,如果有其他列值是随时间递增,也可以用该列做主键),提高写入效率和方便数据复制。而自增长id生成模式影响着数据插入性能。

阅读全文

JVM优化之逃逸分析与分配消除

在Java Magazine的前几期文章中,我们介绍了just-in- time (JIT) 编译技术的一些理论基础,以及如何使用Java Microbenching Harness(JMH)和开源工具JITWatch来进行可视化分析,以便搞清楚HotSpot VM的内部机制。在这期文章中,我们将要深入介绍一下逃逸分析(escape analysis)技术,这是JVM最有意思的优化手段之一。逃逸分析是JVM的一项自动分析变量作用域的技术,它可以用来实现某些特殊的优化,后续我们也会分析下这些优化。在开始之前,你只需要掌握一些HotSpot JVM的基本工作原理就可以了。

阅读全文

Reactive(响应式)编程-Reactor

Reactor 是Reactive Programming规范的一个具体实现(rxjava也是规范的一个实现),

阅读全文

(译文)Java中使用var声明局部变量指南

原文链接:Style Guidelines for Local Variable Type Inference in Java
Stuart W.Marks
2018-03-22

简介

Java SE 10引入了局部变量的类型推断。早先,所有的局部变量声明都要在左侧声明明确类型。 使用类型推断,一些显式类型可以替换为具有初始化值的局部变量保留类型var,这种作为局部变量类型 的var类型,是从初始化值的类型中推断出来的。

阅读全文

我们为什么要用Redis

最近阅读了《 Redis 开发与运维》,非常不错。这里对书中的知识整理一下,方便自己回顾 Redis 的整个体系,来对相关知识点查漏补缺。

阅读全文

领域驱动设计-什么是领域驱动设计和怎么使用它

原文链接

进一步扩展前面我们讨论的面向对象分析和设计(OOAD),这篇文章讨论领域驱动设计(DDD),DDD是建立在面向对象分析设计上开发软件的一种方法。 通过这篇文章我们解释什么是领域驱动设计,在现代开发周期中如何实现,使用DDD的优点和缺点。

阅读全文

Java并发-不懂原理多吃亏

一、前言

并发编程相比 Java 中其他知识点学习门槛较高,从而导致很多人望而却步。但无论是职场面试,还是高并发/高流量的系统的实现,却都离不开并发编程,于是能够真正掌握并发编程的人成为了市场迫切需求的人才。

阅读全文

记一次时隔两年后的JavaWeb项目重构总结


两年前的2016年,我还没有大学毕业,也才大三下学期,也还有自己的team,一起学习,一起成长,一起技术研究与试炼。不缅怀……当时和自己的team一起开发了“科技计划项目电子辅助验收及评估平台”,然而因为team刚成立几个月,其次,项目也比较赶,在时间紧迫的情况下,只能个人保证自己模块不出问题,然后最后再由作为项目负责人的我来审核并集体进行测试。

那么究竟里面的设计有多烂呢?答案就是,有好有坏。在此就不太过多讨论这些了,有兴趣你可以直接去我的码云Git看一下这个项目的当时的版本。

阅读全文

警报:线上事故之CountDownLatch的威力

2019.2.22号凌晨3点半,是一个让人难以忘怀的、和瑞哥最后一次一起奋战的夜晚。

背景

我们有这样一个业务场景:用户提供各种数据源配置信息,然后基于数据源配置的模板,再者在模板基础上构建报表,而大数据计算平台则会根据这些信息生成数据计算任务,以实时、离线、混合的方式跑数,并将计算结果落到存储设备中。

阅读全文

JEP 286: 局部变量类型推断(JEP 286: Local-Variable Type Inference)

JEP 286: 局部变量类型推断

    Author	Brian Goetz
    Owner	Dan Smith
    Type	Feature
    Scope	SE
    Status	Closed / Delivered
    Release	10
    Component	tools
    Discussion	amber dash dev at openjdk dot java dot net
    Effort	M
    Duration	S
    Relates to	JEP 323: Local-Variable Syntax for Lambda Parameters
        JEP 301: Enhanced Enums
    Reviewed by	Alex Buckley, Mark Reinhold
    Endorsed by	Mark Reinhold
    Created	2016/03/08 15:37
    Updated	2018/10/12 01:28
    Issue	8151454

摘要

增强Java语言以使用初始化值将类型推断扩展为声明局部变量。

阅读全文

你真的懂得Java-OOP吗?


众所周知,Java是纯面向对象编程的一门语言,然而这就造成很多Java Programmer自以为自己随随便便写出来的代码就是面向对象编程的结晶。

我们以一个简单的案例来切入主题:“人吃饭”。

面向对象编程我们需要注意一下几点:

  • 要围绕对象来展开一系列的活动
  • 对象应该具备什么,不应该具备什么(也就是与生俱来与后天养成)
阅读全文

Apache Log4j 2 用户指南

Apache Log4j 2是Log4j 1.x的升级版本,相比前任它有着显著的提升。它不仅具备Logback所包含的改进,同时还修复了Logback框架的固有bug。

不定期对 Apache Log4j 2 v.2.11.2 User’s Guide 进行翻译,水平有限,欢迎指正。

阅读全文

《Apache Log4j 2 用户指南》简介

1.1 欢迎来到log4j 2!

1.1.1 简介

几乎每一个大型应用程序都包含自己的日志记录或跟踪API。根据这个规则,在1996年初,E.U. SEMPER项目决定编写自己的跟踪API。经过无数次的改进,多次转世和大量的工作,API已经进化成为log4j,一种流行的Java日志记录包。该软件包是在 Apache Software License 下发布的,这是一个由开源倡议认证的完全成熟的开源许可证。最新的log4j版本,包括完整的源代码、类文件和文档,可以在http://logging.apache.org/log4j/2.x/index.html上找到。

阅读全文

Spring Boot 2 快速教程:WebFlux 集成 Thymeleaf(五)

号外:为读者持续整理了几份最新教程,覆盖了 Spring Boot、Spring Cloud、微服务架构等PDF。
获取方式:关注右侧公众号”泥瓦匠BYSocket”,来领取吧!


摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

这是泥瓦匠的第105篇原创

文章工程:
* JDK 1.8
* Maven 3.5.2
* Spring Boot 2.1.3.RELEASE
* 工程名:springboot-webflux-4-thymeleaf
* 工程地址:见文末

前言

上一讲,我们用 MongoDB 来实现 WebFlux 对数据源的操作。那么有了数据需要渲染到前台给用户展示。这就是本文关心的 View 层。View 的表现形式有很多,比如 JSON 和 HTML。开发中常用模板语言很常见的有 Thymeleaf、Freemarker等。那

什么是模板语言?

阅读全文

return top