- 前言之前或多或少分享过一些内存模型、对象创建之类的内容,其实大部分人看完都是懵懵懂懂,也不知道这些的实际意义。直到有一天你会碰到线上奇奇怪怪的问题,如:线程执行一个任务迟迟没有返回,应用假死。接口响应缓慢,甚至请求超时。CPU 高负载运行。这类问题并不像一个空指针、数组越界这样明显好查,这时就需要刚才提到的内存模型、对象创建、线程等相关知识结合在一起来排查问题了。正好这次借助之前的一次生产问... 前言之前或多或少分享过一些内存模型、对象创建之类的内容,其实大部分人看完都是懵懵懂懂,也不知道这些的实际意义。直到有一天你会碰到线上奇奇怪怪的问题,如:线程执行一个任务迟迟没有返回,应用假死。接口响应缓慢,甚至请求超时。CPU 高负载运行。这类问题并不像一个空指针、数组越界这样明显好查,这时就需要刚才提到的内存模型、对象创建、线程等相关知识结合在一起来排查问题了。正好这次借助之前的一次生产问...
- 到目前为止,我觉得不管是在公众号后台、知乎还是微信上面我被问的做多的就是:“大佬,有没有 Java 学习路线和方法”(大佬属现代流行的客气称呼,本人非大佬哈)。大概 5 个多月之前,我在公众号发过一篇类似的文章:【原创】Java 学习路线以及方法推荐。今天突然想到能把一些读者问我的一些常见问题汇总起来,于是利用下班后的时间,我先把这篇文章重新完善了一遍。另外,我把 Java 学习的一些常见问... 到目前为止,我觉得不管是在公众号后台、知乎还是微信上面我被问的做多的就是:“大佬,有没有 Java 学习路线和方法”(大佬属现代流行的客气称呼,本人非大佬哈)。大概 5 个多月之前,我在公众号发过一篇类似的文章:【原创】Java 学习路线以及方法推荐。今天突然想到能把一些读者问我的一些常见问题汇总起来,于是利用下班后的时间,我先把这篇文章重新完善了一遍。另外,我把 Java 学习的一些常见问...
- 好了切入正题,一直在工作中会聊到很多锁的问题,今天跟大家一起闲聊一下,究竟什么是锁,为什么需要锁,以及分布式的情况下,怎么设计和实现锁。什么是锁?明·魏禧《大铁椎传》上是这样解释的:锁:置于可启闭的器物上,以钥匙或暗码(如字码机构、时间机构、自动释放开关、磁性螺线管等)打开的扣件,例如:柄铁折叠环复,如锁上练,引之长丈许。锁,就是要对一个可启闭的东西上,拥有者拥有着钥匙或者某些 Code ,... 好了切入正题,一直在工作中会聊到很多锁的问题,今天跟大家一起闲聊一下,究竟什么是锁,为什么需要锁,以及分布式的情况下,怎么设计和实现锁。什么是锁?明·魏禧《大铁椎传》上是这样解释的:锁:置于可启闭的器物上,以钥匙或暗码(如字码机构、时间机构、自动释放开关、磁性螺线管等)打开的扣件,例如:柄铁折叠环复,如锁上练,引之长丈许。锁,就是要对一个可启闭的东西上,拥有者拥有着钥匙或者某些 Code ,...
- Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。大家可能会问:Sentinel 和之前常用的熔断降级库 Netflix Hystrix 有什么异同呢?Sentinel官网有一个对比的文章,这里摘抄一个总结的表格,具体的对比可以点此 链接 查看。对比内容Senti... Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。大家可能会问:Sentinel 和之前常用的熔断降级库 Netflix Hystrix 有什么异同呢?Sentinel官网有一个对比的文章,这里摘抄一个总结的表格,具体的对比可以点此 链接 查看。对比内容Senti...
- 本文转载自公众号:Hollis 作者:Hollis 主要版本更新时间备注v1.02015-08-01首次发布v1.12018-03-12增加新技术知识、完善知识体系v2.02019-02-19结构调整,更适合从入门到精通;进一步完善知识体系; 新技术补充;1基础篇01 面向对象→ 什么是面向对象面向对象、面向过程面向对象的三大基本特征和五大基本原则→ 平台无关性Java 如何实现的平台无关J... 本文转载自公众号:Hollis 作者:Hollis 主要版本更新时间备注v1.02015-08-01首次发布v1.12018-03-12增加新技术知识、完善知识体系v2.02019-02-19结构调整,更适合从入门到精通;进一步完善知识体系; 新技术补充;1基础篇01 面向对象→ 什么是面向对象面向对象、面向过程面向对象的三大基本特征和五大基本原则→ 平台无关性Java 如何实现的平台无关J...
- 熟练掌握 BIO,NIO,AIO 的基本概念以及一些常见问题是你准备面试的过程中不可或缺的一部分,另外这些知识点也是你学习 Netty 的基础。目录:1. BIO (Blocking I/O)1.1 传统 BIO1.2 伪异步 IO1.3 代码示例1.4 总结2. NIO (New I/O)2.1 NIO 简介2.2 NIO的特性/NIO与IO区别1)Non-blocking IO(非阻塞I... 熟练掌握 BIO,NIO,AIO 的基本概念以及一些常见问题是你准备面试的过程中不可或缺的一部分,另外这些知识点也是你学习 Netty 的基础。目录:1. BIO (Blocking I/O)1.1 传统 BIO1.2 伪异步 IO1.3 代码示例1.4 总结2. NIO (New I/O)2.1 NIO 简介2.2 NIO的特性/NIO与IO区别1)Non-blocking IO(非阻塞I...
- 周日午后,刚刚放下手里的电话,正在给刚刚的面试者写评价。刚刚写到『对Linux的基本IO模型理解不深』这句的时候,女朋友突然出现。哈,这个面试者咋不知道IO模型呢,我都知道呢。 你怎么知道呢,你给我说说。上次你给我讲过呀。在Java中,主要有三种IO模型,分别是阻塞IO(BIO)、非阻塞IO(NIO)和 异步IO(AIO)。额、你说的这个是Java中提供的IO有关的API啊。并不是操作系统层... 周日午后,刚刚放下手里的电话,正在给刚刚的面试者写评价。刚刚写到『对Linux的基本IO模型理解不深』这句的时候,女朋友突然出现。哈,这个面试者咋不知道IO模型呢,我都知道呢。 你怎么知道呢,你给我说说。上次你给我讲过呀。在Java中,主要有三种IO模型,分别是阻塞IO(BIO)、非阻塞IO(NIO)和 异步IO(AIO)。额、你说的这个是Java中提供的IO有关的API啊。并不是操作系统层...
- 在开发过程中,有时候我们发现JVM占用的CPU居高不下,跟我们的预期不符,这时,CPU在做什么呢?是什么线程让CPU如此忙碌呢?我们通过如下几步,可以查看CPU在执行什么线程。1.查找jvm进程ID: jps -lv 或者 ps aux | grep java2.根据pid,查找占用cpu较高的线程:ps -mp pid -o THREAD,tid,time 如图所示:找到占用cpu最高的... 在开发过程中,有时候我们发现JVM占用的CPU居高不下,跟我们的预期不符,这时,CPU在做什么呢?是什么线程让CPU如此忙碌呢?我们通过如下几步,可以查看CPU在执行什么线程。1.查找jvm进程ID: jps -lv 或者 ps aux | grep java2.根据pid,查找占用cpu较高的线程:ps -mp pid -o THREAD,tid,time 如图所示:找到占用cpu最高的...
- 本文转载于公众号:crossoverJie前言平时接触过多线程开发的童鞋应该都或多或少了解过线程池,之前发布的《阿里巴巴 Java 手册》里也有一条:可见线程池的重要性。简单来说使用线程池有以下几个目的:线程是稀缺资源,不能频繁的创建。解耦作用;线程的创建于执行完全分开,方便维护。应当将其放入一个池子中,可以给其他任务进行复用。线程池原理谈到线程池就会想到池化技术,其中最核心的思想就是把宝贵... 本文转载于公众号:crossoverJie前言平时接触过多线程开发的童鞋应该都或多或少了解过线程池,之前发布的《阿里巴巴 Java 手册》里也有一条:可见线程池的重要性。简单来说使用线程池有以下几个目的:线程是稀缺资源,不能频繁的创建。解耦作用;线程的创建于执行完全分开,方便维护。应当将其放入一个池子中,可以给其他任务进行复用。线程池原理谈到线程池就会想到池化技术,其中最核心的思想就是把宝贵...
- 随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力。所以,多线程技术是服务端开发人员必须掌握的技术。 线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁。 在Java用有一个Executors工具类,可以为我们创建一个线程池,其本质就是new了一个ThreadPoolExecutor对象。线程池几乎也是面试必考问题。本文结... 随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力。所以,多线程技术是服务端开发人员必须掌握的技术。 线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁。 在Java用有一个Executors工具类,可以为我们创建一个线程池,其本质就是new了一个ThreadPoolExecutor对象。线程池几乎也是面试必考问题。本文结...
- 来源:蒋小强 ,ifeve.com/how-to-calculate-threadpool-size/如何合理地估算线程池大小?这个问题虽然看起来很小,却并不那么容易回答。大家如果有更好的方法欢迎赐教,先来一个天真的估算方法:假设要求一个系统的TPS(Transaction Per Second或者Task Per Second)至少为20,然后假设每个Transaction由一个线程完成,... 来源:蒋小强 ,ifeve.com/how-to-calculate-threadpool-size/如何合理地估算线程池大小?这个问题虽然看起来很小,却并不那么容易回答。大家如果有更好的方法欢迎赐教,先来一个天真的估算方法:假设要求一个系统的TPS(Transaction Per Second或者Task Per Second)至少为20,然后假设每个Transaction由一个线程完成,...
- 来源:saymagic,blog.saymagic.cn/2016/08/30/java-thread-safe-model-analyze.html#post__title多线程编程一直是老生常谈的问题,在Java中,随着JDK的逐渐发展,JDK提供给我们的并发模型也越来越多,本文摘取三例使用不同原理的模型,分析其大致原理。COW之CopyOnWriteArrayListcow是copy-... 来源:saymagic,blog.saymagic.cn/2016/08/30/java-thread-safe-model-analyze.html#post__title多线程编程一直是老生常谈的问题,在Java中,随着JDK的逐渐发展,JDK提供给我们的并发模型也越来越多,本文摘取三例使用不同原理的模型,分析其大致原理。COW之CopyOnWriteArrayListcow是copy-...
- 作者:zhanlijunhttp://www.cnblogs.com/LBSer/p/4622749.html假设某银行只有10个职员。该银行的业务流程分为以下4个步骤:1) 顾客填申请表(5分钟);2) 职员审核(1分钟);3) 职员叫保安去金库取钱(3分钟);4) 职员打印票据,并将钱和票据返回给顾客(1分钟)。 我们看看银行不同的工作方式对其工作效率到底有何影响。一:BIO方式 ... 作者:zhanlijunhttp://www.cnblogs.com/LBSer/p/4622749.html假设某银行只有10个职员。该银行的业务流程分为以下4个步骤:1) 顾客填申请表(5分钟);2) 职员审核(1分钟);3) 职员叫保安去金库取钱(3分钟);4) 职员打印票据,并将钱和票据返回给顾客(1分钟)。 我们看看银行不同的工作方式对其工作效率到底有何影响。一:BIO方式 ...
- 前言在我们日常 Web 开发中难免遇到需要把一个参数层层的传递到最内层,然后中间层根本不需要使用这个参数,或者是仅仅在特定的工具类中使用,这样我们完全没有必要在每一个方法里面都传递这样一个 通用的参数。如果有一个办法能够在任何一个类里面想用的时候直接拿来使用就太好了。 Java的 Web项目大部分都是基于 Tomcat,每次访问都是一个新的线程,这样让我们联想到了 ThreadLocal,每... 前言在我们日常 Web 开发中难免遇到需要把一个参数层层的传递到最内层,然后中间层根本不需要使用这个参数,或者是仅仅在特定的工具类中使用,这样我们完全没有必要在每一个方法里面都传递这样一个 通用的参数。如果有一个办法能够在任何一个类里面想用的时候直接拿来使用就太好了。 Java的 Web项目大部分都是基于 Tomcat,每次访问都是一个新的线程,这样让我们联想到了 ThreadLocal,每...
- 最近在给别人讲解 Java 并发编程面试考点时,为了解释锁对象这个概念,想了一个形象的故事。后来慢慢发现这个故事似乎能讲解 Java 并发编程中好多核心概念,于是完善起来形成了这篇文章。 最近在给别人讲解 Java 并发编程面试考点时,为了解释锁对象这个概念,想了一个形象的故事。后来慢慢发现这个故事似乎能讲解 Java 并发编程中好多核心概念,于是完善起来形成了这篇文章。
上滑加载中
推荐直播
-
香橙派AIpro的远程推理框架与实验案例
2025/07/04 周五 19:00-20:00
郝家胜 -华为开发者布道师-高校教师
AiR推理框架创新采用将模型推理与模型应用相分离的机制,把香橙派封装为AI推理黑盒服务,构建了分布式远程推理框架,并提供多种输入模态、多种输出方式以及多线程支持的高度复用框架,解决了开发板环境配置复杂上手困难、缺乏可视化体验和资源稀缺课程受限等痛点问题,真正做到开箱即用,并支持多种笔记本电脑环境、多种不同编程语言,10行代码即可体验图像分割迁移案例。
回顾中 -
鸿蒙端云一体化应用开发
2025/07/10 周四 19:00-20:00
倪红军 华为开发者布道师-高校教师
基于鸿蒙平台终端设备的应用场景越来越多、使用范围越来越广。本课程以云数据库服务为例,介绍云侧项目应用的创建、新建对象类型、新增存储区及向对象类型中添加数据对象的方法,端侧(HarmonyOS平台)一体化工程项目的创建、云数据资源的关联方法及对云侧数据的增删改查等操作方法,为开发端云一体化应用打下坚实基础。
回顾中
热门标签