java技术圈 为您找到相关结果 297

如此狂妄,自称高性能队列的Disruptor有啥来头? - 博学谷狂野架构师

并发框架Disruptor 1. Disruptor概述 1.1 背景 ​ Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级),基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注,2011年,企业应用软件专家Martin Fowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。 ​ 目前,包括Apache Storm、Camel、Log4j 2在内的很多知名项目都应用了Disruptor以获取高性能。 ​ 需要特别指出的是,这里所说的队列是系统内部的内存队列,而不是Kafka这样的分布式队列。 有界无锁 高并发队列 1...阅读全文

博文 2023-03-03 02:58:58 博客园

高性能队列——Disruptor

背景Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Martin Fowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。目前,包括Apache Storm、Camel、Log4j 2在内的很多知名项目都应用了Disruptor以获取高性能。在美团技术团队它也有不少应用,有的项目架构借鉴了它的设计机制。本文从实战角度剖析了Disruptor的实现原理。需要特别指出的是,这里所说的队列是系统内部的内存队列,而不是Kafka这样的分布式队列...阅读全文

博文 2023-03-03 02:58:41 美团技术团队

Java 魔法类 Unsafe 详解

本文整理完善自下面这两篇优秀的文章:Java 魔法类:Unsafe 应用解析 - 美团技术团队 -2019open in new windowJava 双刃剑之 Unsafe 类详解 - 码农参上 - 2021open in new window阅读过 JUC 源码的同学,一定会发现很多并发工具类都调用了一个叫做 Unsafe 的类。那这个类主要是用来干什么的呢?有什么使用场景呢?这篇文章就带你搞清楚!# Unsafe 介绍Unsafe 是位于 sun.misc 包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升 Java 运行效率、增强 Java 语言底层资源操作能力方面起到了很大的作用。但由于 Unsafe 类使 Jav...阅读全文

博文 2023-05-23 09:57:08 JavaGuide(Java面试 + 学习指南)

[24章]Qt 全流程实战企业级项目 - 云对象存储浏览器

下载地址1:https://pan.baidu.com/s/180fnOsA0EwGXcLb3i_cy-w 提取码:laa9 下载地址2:https://pan.baidu.com/s/1a_dwzeyb1CKJrGiu2zpolQ 提取码:a5p2 Qt开发浏览器全流程实战讲解。 体设计如下: 模块功能: 提供用户界面,显示网页的内容。 允许用户在界面中浏览网页,包括滚动和缩放功能。 支持网页导航,包括前进和后退功能。 设计说明: 浏览网页模块可以使用一个 WebView 控件实现,用于显示网页内容。 用户可以使用滚动条进行页面的上下滚动,以查看完整的页面内容。 提供缩放功能,允许用户调整页面的大小比例。 通过前进和后退按钮,用户可以导航到浏览历史记录中的前一个或后一个页面。 步骤1: 创...阅读全文

博文 2023-12-12 17:08:40 giadnbhaytgw

【完结17章】JVM七大核心系统精讲 从基础理论到高级应用

【完结17章】JVM七大核心系统精讲 从基础理论到高级应用 今天给大家讲解一下关于JVM的知识内容,希望对大家在学习JVM的过程中遇到的问题有所帮助,以下是参考资料下载: JVM运行机制概述 类加载机制: 类加载过程由类加载器来完成,即由ClassLoader及其子类实现,有隐式加载和显式加载两种方式。隐式加载是指在使用new等方式创建对象时会隐式调用类加载器把对应的类加载到JVM中;显式加载是指通过直接调用Class.forName()把对应的类加载到JVM中。 内存模型(运行时数据区):共享区【方法区、堆】、私有区【虚拟机栈、本地方法栈、程序计数器】、直接内存(不受JVM GC管理)。其中程序计数器是唯一不会出现OOM的内存区。 执行引擎:即时编译器、垃圾收集器(按代回收算法:新生代-复...阅读全文

博文 2023-11-21 23:23:24 woaiwodejia333

图灵-Java互联网架构师六期|视频+资料

图灵-Java互联网架构师六期|视频+资料​获课:itazs.fun/4860/并发容器(Map、List、Set)实战及其原理并发容器是在多线程环境中安全使用的集合类,它们设计用于在多个线程同时访问和修改数据时保持一致性和性能。Java 提供了多种并发容器,包括 ConcurrentHashMap、CopyOnWriteArrayList 和 ConcurrentSkipListSet 等等。下面将介绍这些并发容器的实战使用场景及其工作原理。ConcurrentHashMap实战场景:当你需要一个可以在高并发环境下高效读写的 Map 时。应用程序中频繁进行查找操作,并且偶尔有更新或插入操作。工作原理:ConcurrentHashMap 是一种线程安全的哈希表实现,它允许多个读取操作并发执行...阅读全文

博文 2024-12-09 13:43:19 zxcs

[完结13章]一课掌握Java并发编程精髓

![1.png](http://static.itsharecircle.com/231222/68e5919d4e1d238e765721ce81d62439.png) Java并发编程从入门到进阶 多场景实战,众所周知,并发编程是优秀工程师的标准之一,但知识庞杂,复杂性高,常常让人望而却步。但如果没有掌握背后的核心原理,你开发的代码可能会成为难以调试和优化的头疼问题。在此,我将通过上百个案例场景驱动教学+动画直观演示,帮助大家深入、直观地理解并发编程核心概念和底层原理。助力大家在实际工作和面试中都能尽早脱颖而出。 首先,我们先来了解关于并发的基本概念。 并发情况主要会引出三个基本概念,分别是原子性、可见性、有序性三个基本概念 Java中线程的状态分为6种: 1. 初始(NEW):新创建了...阅读全文

博文 2023-12-22 10:15:14 udbmaidns

HBase - 生产环境上线前真的优化过吗?

笔者今天给大家讲一下 HBase 生产环境中的实践,包括资源隔离、参数配置、性能优化等方面,部分内容参考《HBase原理与实践》(非常建议大家好好读一读,一定会大有收获),以及笔者的实战经验。HBase 业务资源隔离1. 读写分离场景RegionServer 默认情况下只提供一个请求队列给所有业务使用,导致部分延迟较高的请求影响其他对延迟敏感的业务。针对这种情况,HBase 提供了读写队列隔离方案。我们知道,HBase 有三种典型的API操作类型,分别为 get、scan 和write,其中 get 和 scan 属于 read 类型。默认场景下,HBase 只提供一个队列,所有请求都会进入该队列进行优先级排序。在一些场景下,我们要求这三种类型的访问尽可能的互相不影响,那么就需要在线上配置读...阅读全文

博文 2024-01-09 16:32:52 墨天轮

[从零单排HBase 07]如何正确管理HBase的连接,从原理到实战

本文将介绍HBase的客户端连接实现,并说明如何正确管理HBase的连接。最近在搭建一个HBase的可视化管理平台,搭建完成后发现不管什么查询都很慢,甚至于使用api去listTable都要好几秒。经过一番排查发现,是每次请求的时候,都去临时创建了一个connection,而创建connection非常耗时导致整体的rt上升。因此,就深入了解了下如何正确管理HBase的connection,同时,也在优化过程中有些小细节的总结。本文基于hbase 2.0.0版本的源码,github上3.0版本的源码已经有很大差异了,但是思想还是差不多的1.HBase-client和HBase是如何连接的?这个问题实际上在我之前的文章 深入HBase读写 中介绍过。当HBase-client第一次请求读写的时...阅读全文

博文 2023-05-16 11:19:59 掘金

操作系统入门与实践-参透技术本质[完结9章]

![1.png](http://static.itsharecircle.com/240109/539f36d2bc2c908d947345fd1a215abd.png) 众所周知,操作系统是计算机的基石,理解操作系统有助于写出正确的、性能更好、稳定性更高的程序,是技术各路大厂面试官重点考察的能力之一,成为越来越多程序员的必修课,因此,我在本文中将带领大家从0到1参透技术本质,快速补齐操作系统短板,来一次质的提升。 我将从以下三方面深度剖析操作系统入门理论与实战要点: 1、深刻理解计算机—掌握优秀编码能力 理解操作系统可以深刻理解自己所写的程序会对计算机系统产生的影响,有助于编写出正确的、质量更高的程序,同时可以充分利用系统资源来优化程序运行效率,编写出性能更高的程序,突破系统性能瓶颈。 2...阅读全文

博文 2024-01-09 09:43:50 udbmaidns

Java8新特性之日期处理 - WayfreemBlog

Java8新特性之日期处理Wayfreem24114发布于2018-01-21   简介 伴随 lambda表达式、streams 以及一系列小优化,Java 8 推出了全新的日期时间API。 Java处理日期、日历和时间的不足之处:将 java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。然后就在 java8 上面增加新的特性。 全新API的众多好处之一就是,明确了日期时间概念,例如:瞬时(instant)、 长短(duration)、日期、时间、时区和周期。 同时继承了Joda 库按人类语言和计算机各自解析的时间处理方式。不同于老版本,新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。 ...阅读全文

博文 2023-05-22 08:15:29 SegmentFault 思否

认识Redis:不只是缓存,还有这些厉害的功能!

在当今数据驱动的世界中,快速存取信息成为了技术发展的关键。而在众多存储解决方案中,Redis以其独特的魅力和强大的功能,成为了开发者们的宠儿。今天,就让我们一起来认识一下Redis。 ### 一、Redis是什么,可以用来干什么? Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 ![image.png](http://static.itsharecircle.com/240220/c4b8adfc73b7950a6784418485d666f8.png) 与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速...阅读全文

博文 2024-02-20 16:18:32 YDYXCODE

Rocksdb原理简介

本文分享自天翼云开发者社区《Rocksdb原理简介》,作者:l****nRocksdb作为当下nosql中性能的代表被各个存储组件(mysql、tikv、pmdk、bluestore)作为存储引擎底座,其基于LSM tree的核心存储结构(将随机写通过数据结构转化为顺序写)来提供高性能的写吞吐时保证了读性能。同时大量的并发性配置来降低compaction的影响。​涉及到的几个核心文件:WALWriteAheadLog,rocksdb的日志,保存memtable中的信息。当memtable转化为immutable memtable并且Flush到L0层之后,之前WAL的会被清理,即于删除DB目录下的log文件。在RocksDB中每一次数据的更新都会涉及到两个结构,一个是内存中的memtable...阅读全文

博文 2023-05-25 09:13:56 Tianyiyun

kafka是如何保证消息不丢失的 - 腾讯云开发者社区

今天和大家聊一下,kafka对于消息的可靠性保证。作为消息引擎组件,保证消息不丢失,是非常重要的。 那么kafka是如何保证消息不丢失的呢?前提条件任何消息组件不丢数据都是在特定场景下一定条件的,kafka要保证消息不丢,有两个核心条件。第一,必须是已提交的消息,即committed message。kafka对于committed message的定义是,生产者提交消息到broker,并等到多个broker确认并返回给生产者已提交的确认信息。而这多个broker是由我们自己来定义的,可以选择只要有一个broker成功保存该消息就算是已提交,也可以是令所有broker都成功保存该消息才算是已提交。不论哪种情况,kafka只对已提交的消息做持久化保证。第二,也就是最基本的条件,虽然kafka集...阅读全文

博文 2023-02-27 12:28:51 腾讯云

一种动态实现核隔离的方法

本文分享自天翼云开发者社区《一种动态实现核隔离的方法》,作者:y****n一、技术背景相关概念:核隔离:指定的cpu核心只参与最低限度的OS内核计算; DPDK(Date planedevelopment kit):是一个用来进行包数据处理加速的软件库。Cpu亲和性:进程要在某个给定的CPU上尽量长时间地运行而不被迁移到其他处理器的倾向性。背景:网元节点上,对cpu消耗比较多的进程可以分为几个类别:1、系统运行相关进程(通过systemd启动和管理的进程以及内核线程)2、网元相关进程(比如dpos、gobgpd进程)。然而在现网中发现,由于系统运行相关进程与网元相关进程在同内核下运行时,会概率性的抢占pmd线程的cpu,从而导致dpdk丢包,影响网元性能。一般使用的隔离系统进程方法如修改gr...阅读全文

博文 2023-10-30 16:14:37 Tianyiyun

Spring Cloud Alibaba: 实现服务的无损下线功能

Spring Cloud Alibaba: 实现服务的无损下线功能作者:谁偷走了我的奶酪2024.01.18 02:49浏览量:2简介:在微服务架构中,服务的上线和下线是一个常见的操作。然而,直接关闭服务可能会导致数据丢失或服务中断。本文将介绍如何使用Spring Cloud Alibaba实现服务的无损下线功能。在微服务架构中,服务的上线和下线是一个常见的操作。但是,直接关闭服务可能会导致数据丢失或服务中断,这被称为“有损下线”。为了解决这个问题,我们可以使用Spring Cloud Alibaba提供的解决方案来实现服务的无损下线。无损下线的原理是在服务关闭之前,将所有待处理的任务或者请求全部处理完成,保证服务的正常运行,然后再安全地关闭服务。这样就可以避免数据丢失和服务中断的问题。要实...阅读全文

博文 2024-03-28 11:23:54 百度开发者中心

可以使用 Instant 代替 Date , LocalDateTime 代替 Calendar,DateTimeFormatter 代替 SimpleDateFormat - 周文豪

DateFormat 类是一个非线程安全的类。javadocs 文档里面提到:"Date formats是不能同步的。 我们建议为每个线程创建独立的日期格式。 如果多个线程同时访问一个日期格式,这需要在外部加上同步代码块。" 如何并发使用DateFormat类? 1. 同步 最简单的方法就是在做日期转换之前,为DateFormat对象加锁。这种方法使得一次只能让一个线程访问DateFormat对象,而其他线程只能等待。 public class DateUtil { private static final String MESSAGE_FORMAT = "MM-dd HH:mm:ss.ms"; private static final SimpleDateFormat format=new...阅读全文

博文 2023-05-22 08:13:46 博客园

S3基准测试工具 - Warp使用简介

本文分享自天翼云开发者社区《S3基准测试工具 - Warp使用简介》,作者:y****n1.Warp⼯具简介warp 是⼀款开源的S3基准测试⼯具,开源S3项⽬minio下的⼀个⼦项⽬,可以对兼容S3语义的服务进⾏基准测试。2.Warp主要功能及配置常⽤功能有mixed,put,get,analyze等;mixed:是混合读写模式,可以指定put、get、delete、stat类型的请求的不同⽐例。put:只进⾏上传请求。get:先上传部分数据进⾏预热,然后只进⾏下载请求。analyze:将其他模式的输出结果进⾏分析,warp数据取样间隔5s例:mixed 混合读写1:9warp mixed --put-distrib=90 --get-distrib=10 --stat-distrib=0...阅读全文

一文告诉你Java日期时间API到底有多烂 - YourBatman

前言 你好,我是A哥(YourBatman)。 好看的代码,千篇一律!难看的代码,卧槽卧槽~其实没有什么代码是“史上最烂”的,要有也只有“史上更烂”。 日期是商业逻辑计算的一个关键部分,任何企业的程序都需要正确的处理日期时间问题,否则很可能带来事故和损失。为此本系列仅着眼于这一个点就写了好几篇文章,目的是帮助你系统化的搞定所有问题/难题。 平时我们都热衷于吐槽同事的代码有多烂,今天我们就来玩点狠的:吐槽吐槽JDK,看看它的日期时间API设计得到底有多烂。 说明:本文指的日期时间API是Date/Calendar系列,而非Java 8新的API。毕竟一般我们称后者为JSR 310日期时间,请注意区分哈 本文提纲 版本约定 JDK:8 正文 诚然,Java的API绝大多数设计得都是非常优秀且成功...阅读全文

博文 2023-05-22 08:08:55 博客园

一课掌握Java并发编程精髓(完结13章)

一课掌握Java并发编程精髓(完结13章) 分享一套Java课程——一课掌握Java并发编程精髓(完结13章),附源码+PDF课件下载。 并发编程 1.多线程 Java 是最先支持多线程的开发的语言之一,Java 从一开始就支持了多线程能力。由于现在的 CPU 已经多是多核处理器了,是可以同时执行多个线程的。 多线程优点 多线程技术使程序的响应速度更快 ,可以在进行其它工作的同时一直处于活动状态,程序性能得到提升。 性能提升的本质 就是榨取硬件的剩余价值(硬件利用率)。 并行与并发 单核 cpu 下,线程实际是串行执行的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片,分给不同的线程使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是同时运行的。 总结为一句话就是...阅读全文

博文 2023-12-20 16:06:06 woaiwodejia333

Vulkan原理与实战

Vulkan原理与实战 ‌Vulkan‌是一个用于图形和计算设备的编程接口,它允许开发人员直接访问硬件资源,提供对设备的更多控制和更高的性能。Vulkan设备通常由一个处理器和一定数量的固定功能硬件模块组成,用于加速图形和计算操作。Vulkan的计算模型基于并行计算,并且是一个显式的API,意味着开发人员需要亲自管理几乎所有的资源和操作。这与传统的图形API(如OpenGL)形成对比,后者在老的API中自动管理内存和同步,但在应用程序正确运行时可能会消耗宝贵的CPU性能。 ‌Vulkan‌应用场景: 游戏开发:Vulkan的高效性能和低开销特性使其成为游戏开发者的理想选择,尤其是在需要高帧率和复杂渲染效果的游戏中。 图形渲染:无论是实时渲染还是离线渲染,Vulkan都能提供强大的图形处理能力...阅读全文

博文 2024-09-13 15:45:25 woaidaqipaiqiu1122

初识 NIO, 你了解io 和nio吗? 了解直接缓冲区和非直接缓冲区的区别吗?_兮家小二的博客

一、nio 是什么? 1、Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始) 2、Java NIO提供了与标准IO不同的IO工作方式。 3、nio 主要面向于网络编程 二、nio 和 io 的区别? 1、IO基于字节流和字符流进行操作的 2、NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 3、NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。 io 流实现过程 数据传递是单向的,写数据只管把数据往文件丢,读也是同理 并且 io 基本都是非直接缓冲区传递(速度慢) nio 实现过程 先...阅读全文

博文 2023-09-13 16:43:52 CSDN博客

Log4j2中的同步日志与异步日志 - Ye_yang

1.背景 Log4j 2中记录日志的方式有同步日志和异步日志两种方式,其中异步日志又可分为使用AsyncAppender和使用AsyncLogger两种方式。 2.Log4j2中的同步日志 所谓同步日志,即当输出日志时,必须等待日志输出语句执行完毕后,才能执行后面的业务逻辑语句。 下面通过一个例子来了解Log4j2中的同步日志,并借此来探究整个日志输出过程。 log4j2.xml配置如下: ...阅读全文

博文 2023-09-13 16:05:00 博客园

使用CompletableFuture优化你的代码执行效率 - 冬至饮雪

这篇文章详细讲解java8中CompletableFuture的特性,方法以及实例. 在java8以前,我们使用java的多线程编程,一般是通过Runnable中的run方法来完成,这种方式,有个很明显的缺点,就是,没有返回值,这时候,大家可能会去尝试使用Callable中的call方法,然后用Future返回结果,如下: public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newSingleThreadExecutor(); Future stringFuture = executor.submit(new Callable阅读全文

博文 2024-04-12 15:39:19 博客园

线程池之ThreadPool与ForkJoinPool_threadpoolexecutor fork/join

网上对Java线程池都有很多非常具体的解析,我概念性进行总结下,如有错误,可与我联系修改。 一、 ThreadPool Executor 一个线程池包括以下四个基本组成部分: 1、线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务; 2、工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务; 3、任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等; 4、任务队列(taskQueue):用于存放没有处理的任务。提供一种缓冲机制。 工作方式: 线程池有一个工作队列,队列中包含了要分配给各线程的工作。当线程空闲时,就会从队...阅读全文

博文 2023-12-01 10:40:55 CSDN博客

【小家java】Java线程池之---ForkJoinPool线程池的使用以及原理_forkjoinpool自定义线程池

相关阅读 【小家java】java5新特性(简述十大新特性) 重要一跃 【小家java】java6新特性(简述十大新特性) 鸡肋升级 【小家java】java7新特性(简述八大新特性) 不温不火 【小家java】java8新特性(简述十大新特性) 饱受赞誉 【小家java】java9新特性(简述十大新特性) 褒贬不一 【小家java】java10新特性(简述十大新特性) 小步迭代 【小家java】java11新特性(简述八大新特性) 首个重磅LTS版本 【小家java】Java中的线程池,你真的用对了吗?(教你用正确的姿势使用线程池) 小家Java】一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结 【小家java】BlockingQueue阻塞队列详解以及5...阅读全文

博文 2023-12-01 10:52:18 CSDN博客

ThreadLocal为什么要用WeakReference

先上一张图看一下ThreadLocal的内部结构,每个Thread对象内部都维护了一个ThreadLocal.ThreadLocalMap 我们在上图看到的就是三个Thread对象内部格子的ThreadLocalMap 这里要说的不是ThreadLocal,是ThreadLocal为什么要用WeakReference static class ThreadLocalMap { static class Entry extends WeakReference> { Entry(ThreadLocal k, Object v) { super(k); value = v; } 复制代码 弱引用WeakReference 弱引用只要发生了gc就会被回收,但前提是...阅读全文

博文 2023-05-23 03:39:09 掘金

一种提升SQL改写效率的方法

本文分享自天翼云开发者社区《一种提升SQL改写效率的方法》,作者:唐****律一、背景SQL改写是数据库产品中使用比较频繁的一个技术,在大多数产品中的调用频率也非常高,通常对性能的需求需要接近对应数据库产品的上限。例如在天翼云关系型数据库中的Mysql语法兼容组件,其性能测试标准需要达到接近30万TPS,也意味着SQL改写环节的性能标准需要支持至少每秒30万次以上,否则会成为系统的性能瓶颈。SQL改写的基础是抽象语法树,而抽象语法树则是由SQL字符串经过词法分析和语法分析之后得到的。词法分析器和语法分析器在市面上有非常多的种类可供挑选,例如Lexer、YACC、Antlr、Druid等,一般数据库产品都只在其基础上进行SQL改写,例如基于C语言开发的PG的分布式数据库插件Citus。对于一些...阅读全文

博文 2023-09-28 16:23:21 Tianyiyun

利用 Arthas 精准定位 Java 应用 CPU 负载过高问题_arthas cpuusage

Arthas 官方社区正在举行征文活动,参加即有奖品拿哦~点击投稿 作者 | 张云翔 最近我们线上有个应用服务器有点上头,CPU总能跑到99%,我寻思着它流量也不大啊,为啥能把自己整这么累?于是我登上这台服务器,看看它到底在干啥! 以前碰到类似问题,可能会考虑使用 top -Hp 加 jstack 命令去排查,虽然能大致定位到问题范围,但有效信息还是太少了,多数时候还是要靠猜。今天向大家推荐一款更高效更精准的工具:Arthas!Arthas 是 Alibaba 开源的 Java 诊断工具,能够帮助我们快速定位线上问题。基本的安装使用可以参考官方文档:https://alibaba.github.io/arthas 这次我们利用它来排查 CPU 负载高的问题。CPU 负载过高一般是某个或某几个...阅读全文

博文 2024-03-13 11:20:01 CSDN博客

谈阿里核心业务监控平台SunFire的技术架构

谈阿里核心业务监控平台SunFire的技术架构 2017-01-01 19:00 相关阅读: 在2016年双11全球购物狂欢节中,天猫全天交易额1207亿元,前30分钟每秒交易峰值17.5万笔,每秒支付峰值12万笔。承载这些秒级数据背后的监控产品是如何实现的呢?接下来本文将从阿里监控体系、监控产品、监控技术架构及实现分别进行详细讲述。 阿里有众多监控产品,且各产品分工明确,百花齐放。整个阿里监控体系如下图: 集团层面的监控,以平台为主,全部为阿里自主研发(除引入了第三方基调、博睿等外部检测系统,用于各地CDN用户体验监控),这些监控平台覆盖了阿里集团80%的监控需求。 此外,每个事业群均根据自身特性自主研发了多套监控系统,以满足自身特定业务场景的监控需求,如广告的GoldenEye、菜鸟的棱...阅读全文

博文 2024-07-10 19:28:45 www.sohu.com

HBase高可用原理与实践-社区博客

前言 前段时间有套线上HBase出了点小问题,导致该套HBase集群服务停止了2个小时,从而造成使用该套HBase作为数据存储的应用也出现了服务异常。在排查问题之余,我们不禁也在思考,以后再出现类似的问题怎么办?这种问题该如何避免?用惯了MySQL,于是乎想到了HBase是否跟MySQL一样,也有其高可用方案? 答案当然是肯定的,几乎所有的数据库(无论是关系型还是分布式的),都采用WAL的方式来保障服务异常时候的数据恢复,HBase同样也是通过WAL来保障数据不丢失。HBase在写数据前会先写HLog,HLog中记录的是所有数据的变动, HBase的高可用也正是通过HLog来实现的。 进阶 HBase是一个没有单点故障的分布式系统,上层(HBase层)和底层(HDFS层)都通过一定的技术手段...阅读全文

博文 2024-01-09 17:06:39 网易数帆

C#多线程与线程同步机制高级实战课程

C#多线程与线程同步机制高级实战课程 多线程是C#中一个重要的概念,多线程指的是在同一进程中同时运行多个线程的机制。多线程适用于需要提高系统并发性、吞吐量和响应速度的场景,可以充分利用多核处理器和系统资源,提高应用程序的性能和效率。 多线程常用场景 CPU 密集型任务. I/O 密集型任务. 并发请求处理. 大数据处理等. 一、什么是多线程 1、进程 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。 而一个进程又是由多个线程所组成的。 2、线程 线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。 3、句柄 句柄是Windows系统中对象或实例的标识,这些对象包括模块、应用...阅读全文

博文 2024-10-12 16:05:44 woaidaqipaiqiu1122

饿了么轻量级分布式时序数据库的设计与探索

饿了么轻量级分布式时序数据库的设计与探索 2018-07-19 10:14 作者介绍 黄杰,2015年加入饿了么,现任框架工具部高级开发经理,主要负责饿了么的监控系统及监控系统周边的工具。 一、背景 饿了么对时序数据库的需求主要来自各监控系统,主要用于存储监控指标。原来使用的是graphite,后来慢慢对指标有了多维的需求,主要体现在对一个指标加多个Tag来组成Series,然后对Tag进行Filter和Group进行计算,这时graphite基本很难满足需求。 业界现在用的比较多的主要有如下几类TSDB: InfluxDB:很多公司都在用,包括饿了么有部分监控系统也是用的InfluxDB。其优点在于支持多维和多字段,存储也根据TSDB的特点做了优化,不过开源的部分并不支持。很多公司自己做集...阅读全文

博文 2024-09-06 15:21:49 www.sohu.com

如何避免ForkJoinPool在没有任务的情况下调用Thread.yield()导致的cpu爆满问题

​​​​​​​​​​​​​​​在Java的ForkJoinPool中,线程不会因为没有任务而被自动销毁。这是因为ForkJoinPool的设计初衷是为了高效地处理大批量的并行任务,通过工作窃取机制来提升CPU的利用率。以下是一些关于ForkJoinPool和线程管理的要点:工作窃取机制:ForkJoinPool中的线程会尝试从其他忙碌线程的工作队列中“窃取”任务。这种行为意味着线程在没有任务时,会在池中持续搜索其他可能的工作,而不是立即终止。线程数量:ForkJoinPool会根据配置自动选择线程的数量,默认情况下,它会使用等于CPU核心数量的线程。这意味着在没有任务时,所有这些线程都将尝试寻找新的待处理任务。线程的生命周期:ForkJoinPool线程是守护线程,它们在池关闭时会终止。在某...阅读全文

博文 2024-12-05 22:46:34 zhidiantech

Java并发编程指南15:Fork/join并发框架与工作窃取算法剖析

创文章,转载请注明: 转载自并发编程网 – ifeve.com 1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+。。+10000,可以分割成10个子任务,每个子任务分别对1000个数进行求和,最终汇总这10个子任务的结果。Fork/Join的运行流程图如下: 2. 工作窃取算法 工作窃取(work-stealing)算法是指某个线程从其他队列里窃取任务来...阅读全文

博文 2023-12-01 10:42:03 阿里云开发者社区

深入理解内存屏障:内存与屏障的奥秘

在计算机系统的运行过程中,内存屏障是一个专业但又关键的概念。很多开发者可能听说过它,但并不一定了解它在硬件级别上是如何工作的,以及为何它对于现代并行计算如此重要。在这篇文章中,我们将深入探讨内存屏障中的“内存”和“屏障”,并尝试解答几个常见的问题:它们是否是CPU提供的指令?为什么会对内存的读取和写入进行限制?以及屏障是否可以简单地理解为栅栏?什么是内存屏障?内存屏障(Memory Barrier)是计算机科学中的一个重要概念,尤其在多线程和并发编程中,用于控制和协调不同线程对内存的访问。理解内存屏障需要从两个方面来看:内存和屏障。内存在现代计算机体系结构中,内存并不仅仅是物理内存(RAM),还包括各种级别的缓存(如L1,L2,L3缓存)。处理器(CPU)和内存之间的访问速度差异很大,因此现...阅读全文

博文 2024-12-03 10:18:05 zhidiantech

「完结18章」C++大型流媒体项目-从底层到应用层千万级直播系统实战

「完结18章」C++大型流媒体项目-从底层到应用层千万级直播系统实战​获课:「完结18章」C++大型流媒体项目-从底层到应用层千万级直播系统实战获取ZY↑↑方打开链接↑↑C++通用基础函数库实现构建一个C++通用基础函数库是一个有助于提高代码复用性和开发效率的好方法。这个库可以包含一系列常用的数据结构、算法以及工具函数,以支持各种编程任务。以下是一些建议的模块和它们可能包含的功能:1. 数据结构智能指针:尽管C++11已经引入了std::shared_ptr, std::unique_ptr等,但你可以实现自己的版本来学习内存管理。容器类:如链表、栈、队列、哈希表等,这些可以基于STL(标准模板库)进行扩展或自定义实现。2. 算法排序算法:实现快速排序、归并排序、堆排序等多种排序算法,并考虑...阅读全文

博文 2024-12-22 15:31:51 khujnk

JKSJ-Rust训练营(1期同步更新)

JKSJ-Rust训练营(1期同步更新)​来百度APP畅享高清图片获课:点我获取资源:上方URL获取资源如何学习 Rust?学习 Rust 可以分为几个阶段,从基础概念到进阶实践,再到实际项目应用。以下是一个系统的学习路径,帮助你逐步掌握 Rust:1. 基础知识在线课程Rust 编程入门:一些在线教育平台如 Coursera、Udemy 和 Pluralsight 提供了 Rust 的入门课程。Exercism:一个免费的在线编程练习平台,提供大量的 Rust 练习题。网址:[exercism.io/tracks/rust]2. 核心概念2.1 所有权系统所有权:理解 Rust 的所有权模型,包括所有权、借用和生命周期。引用和借用:了解如何使用引用和借用规则来管理内存。2.2 类型系统基本...阅读全文

博文 2024-12-01 22:41:08 asdas

“软件系统三高问题”高并发、高性能、高可用系统设计经验

总的来说解决三高问题核心就是 “分字诀” 业务分层、系统分级、服务分布、数据库分库/表、动静分离、同步拆分成异步、单线程分解成多线程、原数据缓存分离、分流等等。。。。直观的表述就是:从前端用的CDN、动静分离,到后台服务拆分成微服务、分布式、负载均衡、缓存、池化、多线程、IO、分库表、搜索引擎等等。都是强调一个“分”字。 原文地址: 【高并发、高性能、高可用】系统设计经验 软件开发通常会提到一个名词 “三高”,即高并发、高性能、高可用。 具体的指标定义,如:高并发方面要求QPS 大于 10万;高性能方面要求请求延迟小于 100 ms;高可用方面要高于 99.99%。 接下来,我们重点来介绍这 三高 一、高并发 我们使用 QPS(Queries Per Second,每秒查询率)来衡量系统承载...阅读全文

博文 2024-06-19 15:48:56 阿里云开发者社区

Netty+SpringBoot开发即时通讯系统|ppt齐全|完结无秘15章

Netty+SpringBoot开发即时通讯系统|ppt齐全|完结无秘15章​获课:Netty+SpringBoot开发即时通讯系统|ppt齐全|完结无秘15章获取ZY↑↑方打开链接↑↑在使用Netty与SpringBoot开发即时通讯系统的过程中,企业开发者必须掌握一系列关键技能,以确保系统的稳定性、高效性和安全性。以下是一些核心技能:一、Netty基础与核心组件事件驱动模型理解Netty的事件驱动编程模型,这是Netty高效处理网络连接和I/O操作的基础。Channel和ChannelHandler熟悉Channel接口,它是Netty中与实际数据传输相关的连接。掌握ChannelHandler,它是处理网络事件(如连接、读写等)的关键组件。异步编程掌握Java的CompletableF...阅读全文

博文 2025-02-10 19:34:42 wwee

【完结21章附电子书】2024全新GO工程师面试总攻略,助力快速斩获offer

【完结21章附电子书】2024全新GO工程师面试总攻略,助力快速斩获offer GO工程师面试总攻略‌主要包括以下几个方面:基础知识复习、进阶知识掌握、项目经验准备、面试技巧提升、实战演练以及持续学习与社区参与。 一、基础知识复习 Go语言基础:理解Go语言的基本语法,如变量声明、控制结构、函数等。 类型系统:熟悉基本数据类型、复合类型以及类型转换。 并发模型:深入理解goroutine和channel的工作原理及其在并发编程中的应用。 内存管理:了解垃圾回收机制及如何避免内存泄漏。 标准库:熟悉常用的包如fmt、io/ioutil、net/http等,并能灵活运用。 二、进阶知识掌握 错误处理:掌握使用error类型进行错误处理的方法,了解如何优雅地处理程序中的异常情况。 测试:学会编写单...阅读全文

博文 2024-12-25 16:37:56 woaidaqipaiqiu1122

log4j2同步日志引发的性能问题

1 问题回顾1.1 问题描述在项目的性能测试中,相关的接口的随着并发数增加,接口的响应时间变长,接口吞吐不再增长,应用的CPU使用率较高。1.2 分析思路谁导致的CPU较高,阻塞接口TPS的增长?接口的响应时间的调用链分布是什么样的,有没有慢的点?1)使用火焰图分析应用的CPU如下,其中log4j2日志占了40%左右CPU,初步怀疑是log4j2的问题。2)调用链的分析通过pfinder查看调用链发现,接口总耗时78ms,没有明显慢的调用方法和慢sql等,先排除接口的本身的代码问题。1.3 初步结论log4j2的问题,需详细分析日志的相关配置log4j2.xml。上面可以看到asyncRollingFile和errorAsynchRollingFile都是打印的同步日志。同步日志是程序的业务...阅读全文

博文 2024-07-08 10:42:54 京东云开发者社区

Redis缓存异常及解决方案

本文分享自天翼云开发者社区《Redis缓存异常及解决方案》,作者:l****n本文向读者解释了Redis使用过程中,数据不一致、缓存雪崩、缓存击穿和缓存穿透等问题的定义,并给出对应的解决方案。1、数据不一致 一致指的是:缓存中有数据,那么,缓存的数据值需要和数据库中的值相同;缓存中本身没有数据,那么,数据库中的值必须是最新值。不一致如何发生:对于读写缓存来说,写缓存时同步写数据库,需要使用事务保证缓存和数据库的更新具有原子性。弱一致性情况下,可以使用异步写回。对于只读缓存,删改数据需要既更新数据库,又删除缓存。如果不使用事务,就会出现数据不一致。比如先更新数据库,再删除缓存。更新成功,删除缓存失败,则缓存中为旧值。如果先删除缓存再更新数据库,则缓存删除成功,数据库更新失败,再访问数据库,数据...阅读全文

博文 2024-08-16 16:29:52 Tianyiyun

Java实现负载均衡算法--轮询和加权轮询 - 渊渟岳

Java实现负载均衡算法--轮询和加权轮询 1.普通轮询算法 轮询(Round Robin,RR)是依次将用户的访问请求,按循环顺序分配到web服务节点上,从1开始到最后一台服务器节点结束,然后再开始新一轮的循环。这种算法简单,但是没有考虑到每台节点服务器的具体性能,请求分发往往不均衡。 代码实现: /** * 普通轮询算法 */ public class RoundRobin { private static Integer index = 0; private static List nodes = new ArrayList<>(); // 记录轮询输出结果 private static StringBuffer stringBuffer = new StringBuf...阅读全文

博文 2024-08-21 17:57:27 博客园

剑指Java面试-Offer直通车 百度资深面试官授课

剑指Java面试-Offer直通车 百度资深面试官授课 获课:www.999it.top/1496/ 获取ZY↑↑方打开链接↑↑ 《剑指Java面试-Offer直通车》是一本专门为准备Java面试的开发者设计的书籍,书中通常会涵盖一些重要的Java技术知识点和面试技巧。它的目标是帮助读者在短时间内掌握Java面试的核心知识,以便顺利通过面试并获得工作机会。 书中可能涉及以下几个重要方面: 1. 基础知识 Java语法:包括数据类型、控制流语句、异常处理、集合框架等。 面向对象编程(OOP):封装、继承、多态、抽象类、接口等。 Java常用API:如String、ArrayList、HashMap等类的使用。 2. 数据结构与算法 常见的数据结构:如数组、链表、栈、队列、哈希表、树、图等。 算...阅读全文

博文 2025-01-19 18:24:49 sfdsf

到底什么是Java AIO?为什么Netty会移除AIO?一文搞懂AIO的本质!-IM开发/专项技术区

本文由得物技术团队Uni分享,即时通讯网收录时有内容修订和大量排版优化。 1、引言 关于Java网络编程中的同步IO和异步IO的区别及原理的文章非常的多,具体来说主要还是在讨论Java BIO和Java NIO这两者,而关于Java AIO的文章就少之又少了(即使用也只是介绍了一下概念和代码示例)。 在深入了解AIO之前,我注意到以下几个现象: 1)2011年Java 7发布,它增加了AIO(号称异步IO网络编程模型),但12年过去了,平时使用的开发框架和中间件却还是以NIO为主(例如网络框架Netty、Mina,Web容器Tomcat、Undertow),这是为什么?2)Java AIO又称为NIO 2.0,难道它也是基于NIO来实现的?3)Netty为什么会舍去了AIO的支持?(点此查看...阅读全文

博文 2024-08-21 17:06:15 即时通讯开发者社区!

Java并发编程高阶技术 高性能并发框架源码解析与实战

Java并发编程高阶技术 高性能并发框架源码解析与实战 获课:jzit.top/1579/ 获取ZY↑↑方打开链接↑↑ Java 并发编程是一个复杂且至关重要的领域,它能够帮助开发者在多核处理器和多线程环境中实现高效的应用程序。在 Java 中进行并发编程不仅仅是使用多线程,更多的是理解如何安全且高效地在多个线程之间共享数据、管理线程生命周期,以及解决线程之间的竞争问题。 以下是一些 Java 并发编程的高阶技术: 1. 线程池(Executor Framework) Java 提供了一个强大的 Executor 框架来管理线程池,而不需要手动创建和销毁线程。使用线程池可以有效地减少系统的开销并提高性能。 ExecutorService 是 Executor 接口的子接口,提供了执行任务的多...阅读全文

博文 2025-01-19 18:23:31 sfdsf

SpringCloud+Netty集群实战千万级 IM系统(完结)

SpringCloud+Netty集群实战千万级 IM系统(完结)使用SpringCloud和Netty来打造自己的IM(即时通讯)系统,是Java后端开发者进阶的一个重要实践。以下是一个详细的指南,帮助你理解如何利用这两个强大的框架来构建高效、可扩展的IM系统。一、SpringCloud在IM系统中的应用SpringCloud是一套完整的微服务解决方案,它提供了服务注册与发现、配置中心、负载均衡、熔断降级等一系列组件,非常适合用于构建分布式IM系统。服务注册与发现使用Eureka或Nacos等注册中心,实现IM系统中各个微服务的动态注册与发现。这样,当有新用户接入或现有用户发起请求时,系统可以自动将请求路由到可用的服务实例上。配置中心利用SpringCloud Config等配置中心,统一...阅读全文