给祖传系统做了点 GC调优,暂停时间降低了 90%
公司某规则引擎系统,在每次发版启动会手动预热,预热完成当流量切进来之后会偶发的出现一次长达1-2秒的Young GC(流量并不大,并且LB下的每个节点都会出现该情况)。 在这次长暂停之后,每一次的年轻代GC暂停时间又都恢复在20-100ms以内。 2秒虽然看起来不算长吧,但规则引擎每次执行也才几毫秒,这谁能忍?而且这玩意一旦超时,出单可能也跟着超时失败!
浅析JAVA日志中的几则性能实践与原理解释
程序记录日志的过程,就是将需要记录的内容写入到磁盘文件中的过程。与生活的物流场景类似,好比是一车货物通过一套运输体系运送至目的地的过程,然而在这套物流体系中,我们往往不需要自己完成整套打包、上车、运输、卸货等全套流程,只需要将包打好之后交由专业的物流公司即可。对于我们今天所要描述的日志场景而言,日志内容是需要运送的货物,日志框架就是物流公司,而目的地就是磁盘上的文件(或其他日志收集服务器)。在 Java 的语言体系中,针对日志处理很早有了很好的日志框架 log4j、 logback以及 jul(Java Util Logging) 等,这些框架替我们隐藏了日志记录的技术细节,程序员只需要使用 Logger这一个工具类,即可高效的完成业务日志的记录,
数字化转型的组成要素,一篇讲明白!
本文将探讨数字化转型的组成要素。尽管技术创新是实现数字化转型的关键,但数字化转型组成要素不止技术,还包括组织的业务、数据和人员,如图1所示。
为了搞懂数字化转型,我连问 ChatGPT 42个问题,通透!
我对数字化转型有很多的疑问,这次向ChatGPT请教,连问42个问题,瞬间觉得通透了很多。 下面是我的问题和ChatGPT的回复,近3万字,估计已经可以汇编成一本名叫《数字化转型问题答疑集》的小册子了,共分为概念篇、方法篇、实践篇和数据篇,希望能带给你新的启示!
Serverless单体架构的崛起
在过去的几十年里,我们见证了应用架构以快速的速度演变。当我还是一个年轻的程序员时,开始编写一个简单的代码库,我们可以称之为单体应用。
把数据库放入Docker是一个好主意吗?
将数据库放入 Docker 容器的决定需要考虑多个因素,其中包括应用的规模、性能需求、环境一致性、团队的技术经验等。以下是对将数据库放入 Docker 的一些优势和潜在缺点的更详细阐述:
手把手教你写设计方案
那今天田螺哥跟大家讲讲设计方案如何写哈。我将基于一个送礼物的接口,为其实现幂等,来写一份模板方案设计。
JDK11升级JDK17最全实践干货来了
如果你仍在使用JDK8,那你是否曾经遇到过OutOfMemoryError的问题?你是否曾经为JVM的调优问题感到困扰?本篇文章将为你介绍一种能够提供百倍性能提升的垃圾回收器,也许能够解决你的问题。
2023软件架构和设计的趋势
2023年即将结束,值得回顾一下过去一年的软件架构和设计流行话题。在本文中,我们将讨论一些常见的软件架构和设计,这些架构和设计被广泛采纳。我们主要关注创新者和早期采用者部分。
去腾讯面试了,我自信满满!
摘除了项目拷打的部分,把比较经典的问题给大家做了个总结,面试范围主要是Java 基础+Java 并发+JVM+MySQL+Redis+操作系统+算法,整体上难度一般,可能是项目拷打的比较多,八股就随便问问了。
MongoDB mongoshake 迁移分片到复制集合
Mongoshake 是阿里云自研的开源工具,实现Mongodb 数据库之间的数据同步,数据灾备,数据多活,分库分表,版本升级无间断。
Java表达式引擎选型调研分析
我们项目组主要负责面向企业客户的业务系统,企业的需求往往是多样化且复杂的,对接不同企业时会有不同的定制化的业务模型和流程。我们在业务系统中使用表达式引擎,集中配置管理业务规则,并实现实时决策和计算,可以提高系统的灵活性和响应能力,从而更好地满足业务的需求。
4 种消息队列,如何选型?
这篇文章,主要讲述 Kafka、RabbitMQ、RocketMQ 和 ActiveMQ 这 4 种消息队列的异同,无论是面试,还是用于技术选型,都有非常强的参考价值。
24条Dockerfile及指令最佳实践
在镜像的构建过程中,Docker会根据Dockerfile指定的顺序执行每个指令。Dockerfile的每条指令都会将结果提交为新的镜像。然后,下一条指令基于上一条指令的镜像进行构建。
完了,又被腾讯面试官拷打了 。。。
最近有个同学跟我反馈,去面腾讯的时候,又被腾讯面试官拷打了 。
ASM字节码操作类库:打开java语言世界通往字节码世界的大门
授人以鱼不如授人以渔,应用asm的文章有很多,简单demo的也很多,那么ASM都具备哪些能力呢?如何去学习编写ASM代码呢?什么样的情景需要用到ASM呢?让我们带着这些问题阅读这篇文章吧。 这里由于篇幅限制做了删减(第六部分TreeApi和CoreApi的比较、核心API类的介绍等),如果有兴趣可以文章留言进行交流。 个人认为核心在于第五部分如何查看一个想写的类的ASM代码如何写,以及全面了解ASM都有哪些能力,这样在后面的特定场景下我们才会知道可以通过它来实现想做的功能。
SpringBoot 项目优雅实现读写分离
当使用Spring Boot开发数据库应用时,读写分离是一种常见的优化策略。读写分离将读操作和写操作分别分配给不同的数据库实例,以提高系统的吞吐量和性能。 读写分离实现主要是通过动态数据源功能实现的,动态数据源是一种通过在运行时动态切换数据库连接的机制。它允许应用程序根据不同的条件或配置选择不同的数据源,以实现更灵活和可扩展的数据库访问。
聊聊接口最大并发处理数
今天跟大家聊聊一个 Java 界的老话题,就是怎么理解接口的最大并发处理数。
探索责任链模式:优雅处理复杂请求链
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,用于创建一条对象链,每个对象依次处理请求,直到请求被处理或到达链的末尾。这种模式允许你以松散耦合的方式将请求沿链传递,同时提供更灵活的处理方式。在本文中,我们将详细介绍责任链模式的概念、应用场景以及如何使用它来构建更复杂的请求处理逻辑。
一文聊聊代码的可读性
作者通过本文聊聊自己写代码的要求及代码的可读性。