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

  • 速度与安全可兼得!改造异步布局大幅提升客户端布局性能

    一、背景介绍随着小红书用户规模的不断增长,App性能对用户体验的影响显得越来越重要,例如页面的打开速度、App的启动速度等,几十毫秒的提升都能带来业务数据上比较显著的收益。今天要介绍的是对一个官方框架的实践以及优化,期间踩了不少坑,但收益也很可观。AsyncLayoutInflater最早于2015

  • 「JVM」关于JVM,你需要掌握这些

    最近,一直有小伙伴让我整理下关于JVM的知识,经过十几天的收集与整理,初版算是整理出来了。希望对大家有所帮助。JDK是什么?JDK是用于支持Java程序开发的最小环境。Java程序设计语言Java虚拟机JavaAPI类库JRE是什么?JRE是支持Java程序运行的标准环境。JavaSEAPI子集Ja

  • 聊聊 Java 19 新功能,你学会了吗?

    ​Java19 在2022年9月20日正式发布,Java19不是一个长期支持版本,直到2023年3月它将被JDK20取代,这次更新共带来7个新功能。复制➜bin./java-versionopenjdkversion"19"2022-09-20OpenJDKRuntimeEnvironme

  • Volatile:JVM 我警告你,我的人你别乱动

    Volatile算是一个面试中的高频问题了。我们都知道Volatile有两个作用:禁止指令重排保证内存可见指令重排序指令重排序的问题,基本上都是通过DCL问题来考察。DCL,DoubleCheckLook面试中通常会是下面这种情景:面试官:用过单例吗?你:用过。面试官:如何实现一个线程安全的懒汉式单

  • Eureka中读写锁的奇思妙想,太顶了

    这篇文章来聊一下读写锁。所谓的读写锁,就是将一个锁拆分为读锁和写锁两个锁,然后你加锁的时候,可以加写锁,也可以加读锁。如下面代码所示:如果有一个线程加了写锁,那么其他线程就不能加写锁了,同一时间只能允许一个线程加写锁。因为加了写锁就意味着有人要写一个共享数据,那同时就不能让其他人来写这个数据了。同时

  • 深入理解 Synchronized 的锁优化

    我们都知道synchronized关键字能实现线程安全,但是你知道这背后的原理是什么吗?今天我们就来讲一讲synchronized实现线程同步背后的原因,以及相关的锁优化策略吧。背后的原理synchronized关键字经过编译之后,会在同步块的前后分别形成monitorenter和monitorex

  • 深入理解 Happens-Before 原则

    今天就让我们来深入聊聊关于happens-before的那些事儿!什么是happens-before?happens-before指的是Java内存模型中两项操作的顺序关系。例如说操作A先于操作B,也就是说操作A发生在操作B之前,操作A产生的影响能够被操作B观察到。这里的「影响」包括:内存中共享变量

  • 面试官:线程池是如何做到线程复用的?有了解过吗?

    前言我们今天探讨ThreadPoolExecutor,一起来看下吧!ThreadPoolExecutor中是如何做到线程复用的?我们知道,一个线程在创建的时候会指定一个线程任务,当执行完这个线程任务之后,线程自动销毁。但是线程池却可以复用线程,一个线程执行完线程任务后不销毁,继续执行另外的线程任务。

  • 「 NodeJs 进阶」超全面的 Node.js 性能优化相关知识梳理

    相信对于前端同学而言,我们去开发一个自己的简单后端程序可以借助很多的​​nodeJs​​的框架去进行快速搭建,但是从前端面向后端之后,我们会在很多方面会稍显的有些陌生,比如性能分析,性能测试,内存管理,内存查看,使用C++插件,子进程,多线程,Cluster模块,进程守护管理等等​​NodeJs​​

  • 满满的干货!全面的介绍Python的协程是如何实现!看懂算你牛!

    如果你需要访问多个服务来完成一个请求的处理,比如实现文件上传功能时,首先访问Redis缓存,验证用户是否登录,再接收HTTP消息中的body并保存在磁盘上,最后把文件路径等信息写入MySQL数据库中,你会怎么做?首先可以使用阻塞API编写同步代码,直接一步步串行即可,但很明显这时一个线程只能同时处理

  • 面试突击:Volatile 有什么用?

    volatile是Java并发编程的重要组成部分,也是常见的面试题之一,它的主要作用有两个:保证内存的可见性和禁止指令重排序。下面我们具体来看这两个功能。内存可见性说到内存可见性问题就不得不提Java内存模型,Java内存模型(JavaMemoryModel)简称为JMM,主要是用来屏蔽不同硬件和操

  • 面试突击:线程休眠的方法有几种?

    作者|磊哥来源|Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)在Java中,让线程休眠的方法有很多,这些方法大致可以分为两类,一类是设置时间,在一段时间后自动唤醒,而另一个类是提供了一对休眠和唤醒的方法,在线程休眠之后,可以在任意时间对线程进行唤醒

  • 面试突击:线程安全问题是如何产生的?

    线程安全是指某个方法或某段代码,在多线程中能够正确的执行,不会出现数据不一致或数据污染的情况,我们把这样的程序称之为线程安全的,反之则为非线程安全的。举个例子来说,比如银行只有张三一个人来办理业务,这种情况在程序中就叫做单线程执行,而单线程执行是没有问题的,也就是线程安全的。但突然有一天来了很多人同

  • 轻量级动态线程池才是“王道”?

    大家好,我是龙台。一、前言最初设计Hippo4j的初衷是尽可能提高以及保障线程池对于线上应用的作用,所以加了很多个性化功能,这也间接导致强依赖Hippo4jServer项目。自Hippo4j1.0.0版本发布之后,不断有社区小伙伴提出相同的一个问题,如何能够轻量级使用动态线程池?这不,它来了。Git

  • 我会手动创建线程,为什么让我使用线程池?

    好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 IfyoucanNOTexplainitsimply,youdoNOTunderstanditwellenough上一篇文章面试问我,创建多少个线程合适?我该怎么说从定性到定量的分析了如何创建正确个数

  • Java项目服务器CPU占用100%解决办法

     1、使用命令top查看cpu进程,发现tomcat占用cpu使用率过高可以看到服务器负载很高,tomcatCPU使用已达到接近300%,内存20%。2、把进程的栈dump到文件里,以便后面的分析 复制jstack 22764 > cpu082

  • 多线程开发中线程数量设计问题

     前言前面我们用了几篇文章系统的说了一下有关Java并发编程模型中的一些基础的知识。比如同步,锁,原子性操作,信号量等以及它们的一些延展实现闩锁,栅锁等等。今天我们回过头来简单说一下并发编程模型的设计和选择。主要涉及到我们如何利用多线程设计来在多处理器或者多内核时代如何提高我们应该程序的性

  • 一份十分完整的CPU 100%排查优化指南

     最近又收到了运维报警:表示有些服务器负载非常高,让我们定位问题。还真是想什么来什么,前些天还故意把某些服务器的负载提高(没错,老板让我写个Bug!),不过还好是不同的环境,互相没有影响。定位问题拿到问题后首先去服务器上看了看,发现运行的只有我们的Java应用。于是先用PS命令拿到了应用的

  • Java线程池实现原理与技术,看这一篇就够了

    01.***制线程的缺点多线程的软件设计方法确实可以***限度地发挥多核处理器的计算能力,提高生产系统的吞吐量和性能。但是,若不加控制和管理的随意使用线程,对系统的性能反而会产生不利的影响。一种最为简单的线程创建和回收的方法类似如下:复制new Thread(new Runnab

  • 秒杀系统必须考虑的3个技术问题!

    1、并发队列的选择Java的并发包提供了三个常用的并发队列实现,分别是:ArrayBlockingQueue、ConcurrentLinkedQueue和LinkedBlockingQueue。ArrayBlockingQueue是初始容量固定的阻塞队列,我们可以用来作为数据库模块成功竞拍的队列,比

推荐阅读