深圳幻海软件技术有限公司 欢迎您!

  • 抖音 Android 性能优化系列:Java 锁优化

    背景Java多线程开发中为了保证数据的一致性,引入了同步锁(synchronized)。但是,对锁的过度使用,可能导致卡顿问题,甚至ANR:Systrace中的主线程因为等锁阻塞了绘制,导致卡顿Slardar平台(字节跳动内部APM平台,以下简称Slardar)中搜索waitingtolock关键字

  • 面试官:说一下顺序锁和轮询锁?

    锁(DeadLock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。死锁示例代码如下:复制publicclassDeadLockExample{publicstaticvoidmain(String[]args){Obje

  • Java多线程小记,你学会了吗?

    一、线程在一个进程中可以有多个执行单元同时运行,来同时完成一个或者多个程序任务,这些执行单元被称为线程。当启动一个java程序系统就会创建一个进程,该进程也会创建一个线程来运行main方法中的代码。操作系统中的进程都至少有一个线程。代码按照调用顺序依次往下执行不会出现代码交替运行的就叫做单线程程序,

  • 不规范使用ThreadLocal导致的bug,说多了都是泪

    ThreadLocal一般用于线程间的数据隔离,通过将数据缓存在ThreadLocal中,可以极大的提升性能。但是,如果错误的使用Threadlocal,可能会引起不可预期的bug,以及造成内存泄露。因为线程重用导致的信息错乱的bug有时我们会在一个接口中缓存某些数据到ThreadLocal中,但是

  • 线程数,512是否合理?

    ​Web-Server有个配置,工作线程数。Service一般也有个配置,工作线程数。经验丰富的架构师,懂得如何配置这些参数,使得系统的性能达到最优:有些业务设置为CPU核数的2倍,有些业务设置为CPU核数的8倍,有些业务设置为CPU核数的32倍。“线程数”的设置依据,是本文要讨论的问题。工作线程数

  • SpringBoot:Event实现发布/订阅模式

    如图所示支付业务中,用户支付成功之后,后续还有很多的业务流程,但是对于用户来讲是透明的,所以为了提高接口的响应速率,提高用户体验,后续操作都会选择异步执行。异步执行方式异步执行主体复制@ServicepublicclassOrderService{publicvoidorderSuccess(){/

  • 线上Kafka消息堆积,Consumer掉线,怎么办?

    线上kafka消息堆积,所有consumer全部掉线,到底怎么回事?最近处理了一次线上故障,具体故障表现就是kafka某个topic消息堆积,这个topic的相关consumer全部掉线。整体排查过程和事后的复盘都很有意思,并且结合本次故障,对kafka使用的最佳实践有了更深刻的理解。好了,一起来回

  • 面试官:你确定 Redis 是单线程的进程吗?

    ​这次主要分享 Redis线程模型篇的面试题。Redis是单线程吗?Redis单线程模式是怎样的?Redis采用单线程为什么还这么快?Redis6.0之前为什么使用单线程?Redis6.0之后为什么引入了多线程?Redis是单线程吗?Redis单线程指的是「接收客户端请求->解析请求

  • 面试官:有了解过Synchronized吗 说说看

    前言相信很多同学对synchronized的使用上不陌生,之前也给大家讲解过它的使用。本篇主要带大家深入了解一下它,大家也可以自己试着总结一下,这也是面试中常常问到的,单纯的回答它的基本使用,是惊艳不到面试官的~。synchronized介绍从字面意思翻译过来就是同步的意思,所以它也叫同步锁,我们通

  • Java多线程专题之线程与进程概述

    前言大家好,一直以来我都本着用最通俗的话理解核心的知识点,我认为所有的难点都离不开「基础知识」的铺垫。目前正在出一个Java多线程专题长期系列教程,从入门到进阶,篇幅会较多,喜欢的话,给个关注❤️~适合人群有一定的Java基础。想学习或了解多线程开发。想提高自己的同学。背景之前给大家讲了一些框架的使

  • 面试突击:公平锁和非公平锁有什么区别?

    作者|磊哥来源|Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)从公平的角度来说,Java中的锁总共可分为两类:公平锁和非公平锁。但公平锁和非公平锁有哪些区别?孰优孰劣呢?在Java中的应用场景又有哪些呢?接下来我们一起来看。正文公平锁:每个线程获取

  • 性能优化那些事儿(三)

    接上文:《​​性能优化那些事儿(一)​​》《​​性能优化那些事儿(二)​​》在讨论完性能优化的方面和策略之后,这次我们的文章更偏向技术层面,来分享下如何开发一个自己的性能分析工具(基于JVM)。『新』知识考虑到咱们大多数还是开发业务为主,所以Java里面一些『鲜为人知』的API可能很多人都不知道,这

  • 面试突击:什么是守护线程?它和用户线程有什么区别?

    在Java语言中,线程分为两类:用户线程和守护线程,默认情况下我们创建的线程或线程池都是用户线程,所以用户线程也被称之为普通线程。想要查看线程到底是用户线程还是守护线程,可以通过Thread.isDaemon()方法来判断,如果返回的结果是true则为守护线程,反之则为用户线程。我们来测试一下默认情

  • Node.js 内核的幕后英雄 -子线程

    Node.js为人所知的是单线程应用,也为人所知的是底层其实利用了多线程。单线程会使得代码实现上变得容易好理解,但是带来好处的同时,也往往会存在一些限制,这些限制导致在Node.js内核中,不得不引入其他子线程,最终形成多线程。本文介绍Node.js中的这些幕后英雄。1Libuv线程池Node.js

  • Java多线程之线程状态详解之一

    本文转载自微信公众号「我是开发者FTD」,作者FTD 。转载本文请联系我是开发者FTD公众号。从上一节,我们已经知道Java中线程一共有6种状态,在正式开始介绍之前,先给大家介绍一个监控线程状态的工具,也是JDK自带的工具。通过这个工具,我们可以更清晰的看到线程此时此刻所处的状态是什么。找

  • 这么理解线程生命周期,是不是很简单?

    为什么要了解线程的生命周期?之前写过SpringBean生命周期三部曲: SpringBean生命周期之缘起 SpringBean生命周期之缘尽 SpringAware到底是什么?有朋友留言说:“了解了它们的生命周期后,使用SpringBean好比看到它们的行动轨迹,现

  • Java那么多锁,能锁住灭霸吗?

    这个图是不是比上次的好看点?自旋?自旋锁如果此时拿不到锁,它不马上进入阻塞状态,而愿意等待一段时间。如果循环一定的次数还拿不到锁,那么它才会进入阻塞的状态,循环的次数是可以人为指定的。 自旋锁🌰有一天去全家买咖啡,服务员说真不巧,前面咖啡机坏了,现在正在修,要等10分钟喔,恰好没什么急事

  • 想提高计算速度?作为数据科学家你应该知道这些Python多线程、进程知识

    每个数据科学项目迟早都会面临一个不可避免的挑战:速度问题。使用更大的数据集会导致处理速度变慢,因此最终必须想办法优化算法的运行时间。正如你们大多数人已经知道的,并行化是这种优化的必要步骤。python为并行化提供了两个内置库:多处理和线程。在这篇文章中,我们将探讨数据科学家如何在两者之间进行选择,以

  • 信号量限流,高并发场景不得不说的秘密

     限流可以认为是一种降级,一般是根据后台的负载提前预估的一个阈值(也可以动态调整)。超过了这个值,就要进行一些旁路处理。根据业务形态,会有直接拒绝、延迟处理、保持等待、部分穿透、默认返回等响应方式。concurrent包中的信号量,由于使用简单,易于理解,被广泛应用。但是,你要是直接用了网

  • 如何理解高性能网络模型?这篇文章说透了

    【51CTO.com原创稿件】本文旨在为大家提供有用的概览以及网络服务模型的比较,以揭开设计和实现高性能网络架构的神秘面纱。服务端处理网络请求首先看看服务端处理网络请求的典型过程:由上图可以看到,主要处理步骤包括: 获取请求数据,客户端与服务器建立连接发出请求,服务器接受请求(1-3)。构

推荐阅读