Tech 导读 性能对提高用户体验,保证系统可靠性,降低资源使用率,甚至增强市场竞争力等方面,都有着很大的影响,性能优化是程序开发过程中绕不过去一个课题。本文聚焦代码和设计两个方面,从CPU硬件到JVM容器,从缓存设计到数据预处理,全面的展现了性能优化的实施方向和落地细节,希望能启发您的思考,为您带来帮助。 01 前言 在今年的敏捷团队建设中,我通过Suite执行器实现了 […]
Tech 导读 性能对提高用户体验,保证系统可靠性,降低资源使用率,甚至增强市场竞争力等方面,都有着很大的影响,性能优化是程序开发过程中绕不过去一个课题。本文聚焦代码和设计两个方面,从CPU硬件到JVM容器,从缓存设计到数据预处理,全面的展现了性能优化的实施方向和落地细节,希望能启发您的思考,为您带来帮助。 01 前言 在今年的敏捷团队建设中,我通过Suite执行器实现了 […]
为优化淘宝带宽成本,我们在网关 SDK(Java)统一使用 ZSTD 替代 GZIP 压缩以获取更高的压缩比,从而得到更小的响应包。具体实现采用官方推荐的 zstd-jni 库。zstd-jni 会调用 zstd 的 c++ 库。 背景 在性能压测和优化过程中,遇到了以下三个问题: GC 次数不变,但耗时翻倍 进程内存泄漏,极限情况下会出现 OOM Killer 杀掉进程的 […]
在第一个专题中已经比较系统地介绍了JVM三种常见的垃圾回收器算法和相关实践,这篇文章会在此基础上分场景将GC相关问题再梳理一番,一方面希望能够在发生GC问题的时候可以比较系统地指导问题分析的方向,另一方面也是希望通过这篇文章介绍一些关于使用GC日志分析GC问题的思路。如果在阅读的时候需要更加深入了解背后的机制,可以回头阅读公众号前期相关GC理论文章。 场景一: 没有发生GC […]
软件系统是通过软件开发来解决某一个业务领域或问题单元而产生的一个交付物。而通过软件设计可以帮助我们开发出更加健壮的软件系统。因此,软件设计是从业务领域到软件开发之间的桥梁。而DDD是软件设计中的其中一种思想,旨在提供一种大型复杂软件的设计思路和规范。通过DDD思想可以让我们的业务架构、系统架构、部署架构、数据架构、工程架构等都具备高扩展性、高维护性和高测试性。 但是落地DD […]
今天给大家分享一篇DDD领域建模实战,结合我个人三年来的DDD实践经验,以企业级电商项目DDD领域设计为出发点,希望能给到大家对DDD的一些启发。 我会从DDD领域分析、DDD设计呈现、领域建模实际案例来展开说明,后面会有彩蛋给到大家~ 讲DDD之前,咱们得了解一些基本概念,大家都知道DDD指的是领域驱动设计(Domain-Driven Design),那怎么理解DDD呢? […]
问题背景 Lombok使⽤ 同时使⽤@Data和@Builder ,构建无参构造器报错!编译不通过。如下图: 图片 Lombok @Data和@Builder分别单独分析用法 Lombok使⽤@Data可以⽣成⽆参构造和类⾥⾯所有属性的getter/setter⽅法。可以简化我们代码的开发。(需要安装Lombok插件和引⼊Lombok依赖)。 例如下⾯的⼀个实体类,引⼊Lo […]
在软件工程中,术语管理是一个极其冷门但是却非常重要的话题。 在很多项目上开发人员和业务人员之间的讨论有很大一部分是词汇的误解造成的,即使在技术人员、业务人员内部讨论也存在同样的情况。例如,某电信运营商项目,话费套餐属于商品还是产品这个问题经常被拿出来讨论,直到找到了总部给出的规范性文件才定性下来。 越是专业的软件系统对专业术语的定义需求越发迫切,这些定义往往需要极其精确,甚 […]
本系列共三篇文章, 本文是系列第2篇——进阶篇,详细讲解 MAT 各种工具的核心功能、用法、适用场景,并在具体实战场景下讲解帮大家学习如何针对各类内存问题。 《JVM 内存分析工具 MAT 的深度讲解与实践——入门篇》 介绍 MAT 产品功能、基础概念、与其他工具对比、Quick Start 指南。 《JVM 内存分析工具 MAT 的深度讲解与实践——进阶篇》 展开并详细讲 […]
在金融、保险、电商等涉及金额计算的领域,常常需要高精度计算。但是由于计算机原理受限,普遍存在精度丢失问题。 例如,使用 JavaScript 在浏览器控制台输入: (0.1+0.2) == 0.3 我们会得到一个 false 的计算结果。 如果使用编程语言原生的计算方法会遇到大量精度问题。一般来说,我们可以优先考虑使用整数计算,例如在电商领域为了简单往往以分为单位计算金额。 […]
在 Java 项目中,对象转换是一个比较繁琐的工作,常见的转换场景有: 页面请求对象(Use Case Command)转领域模型实体(Entity)。 领域模型转换为数据库操作对象(PO)。 领域模块转返回给前端的结果对象(Use Case Response)。 …… 这些对象统称为 POJOs,也就是 Plan Object Java Object 的缩写。 这一期的系 […]
Tech 导读 随着Java开发者社区对Spring框架的深入使用,我们越来越认识到在大型应用中,启动速度和性能优化的重要性。本文将深入探讨如何通过专业分析和优化技术,显著提升Spring应用程序的启动速度和运行性能,解决了开发过程中的效率瓶颈和线上服务的快速扩容需求。 01 引言 在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Su […]
了解 Eclipse MAT 中 incoming and outgoing 引用之间的区别。 Eclipse MAT(内存分析器工具)是分析 JVM 堆 Dump 文件的强大工具。它具有几个非常有效分析内存问题的强大功能。“Incoming references”和“Outgoing references”就是其中一种功能。在本文中,我们来探讨 Incoming refe […]
有没有想过 Shallow 和 Retained heap 之间的区别? Eclipse MAT(内存分析器工具)是分析 JVM 堆 Dump 文件的强大工具。当尝试分析内存相关的问题时,它非常方便。在 Eclipse MAT 内存分析的报告中会显示对象两种类型的 Heap 信息: Shallow Heap Retained Heap 在本文中,我们主要讨论它们之间的区别, […]
在应用系统中,使用缓存不算非常难的事,但是设计好一套缓存策略比较麻烦,这样既能起到好的缓存效果也能在合适的时候更新缓存。 今天我们聊聊缓存。 不过,在计算机科学中,有很多种缓存。我们先聊聊缓存的类型,再谈应用系统中的缓存。 我们会涉及哪些缓存知识? 这里我把缓存分为两类: 非应用缓存:难以被程序员干预、控制和使用的缓存,但是我们能通过选择合适的数据结构,写出缓存友好的代码。 […]
一篇新论文:Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4 总结下来就是 26 条有效的提示词技巧,绝大部分都很熟悉了,不过温习一下也不错! 1 - 与大型语言模型 (LLM) 交流无需使用礼貌用语,如“请”、“谢谢”等,直接表达需求即可。 2 - 在提示中指明目标受 […]
BeanUtils (1) BigDecimal (1) CDC (1) ETL (1) github (1) heap (1) LLaMa (1) MAT (5) MDM (1) Sora (1) TCP (1) 业务图 (1) 企业应用 (1) 停机迁移 (1) 内存泄露 (4) 协议 (1) 可用性 (1) 基础设施层 (1) 堆内存 (1) 堆外存 (1) 大事记 (1) 实时协作 (1) 对象转换 (1) 应用架构 (1) 异常 (3) 技术规范 (1) 技术选型 (4) 提示工程 (1) 数据交换 (1) 数据共享 (1) 数据双写 (1) 日期 (1) 时间 (1) 时间线 (1) 术语 (1) 架构方案 (14) 流程图 (1) 精度 (1) 线程模型 (1) 经验分享 (1) 网络编程 (2) 解耦 (1) 软件复杂性 (1) 软件工程 (1) 重构 (3) 重试 (1) 隔离级别 (1) 集群扩容 (1) 领域层 (3) 领域模型 (1)
COPYRIGHT © 2014-2024 verysu.com . ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang