多线程程序加速指南

2019-06-22
阅读 9 分钟
2.3k
虽然对于一个计算机程序来说最重要的是正确性,如果一个程序没办法产出正确的结果,那么这个程序的价值就大打折扣了。但程序性能也是很重要的一个方面,如果程序运行得太慢,那也会影响到程序的适用范围和硬件配置的成本。

多线程编程完全指南

2019-06-22
阅读 3 分钟
3k
多线程编程或者说范围更大的并发编程是一种非常复杂且容易出错的编程方式,但是我们为什么还要冒着风险艰辛地学习各种多线程编程技术、解决各种并发问题呢?

Java同步机制的底层实现

2019-05-26
阅读 12 分钟
5.5k
在多线程编程中我们会遇到很多需要使用线程同步机制去解决的并发问题,而这些同步机制就是多线程编程中影响正确性和运行效率的重中之重。这不禁让我感到好奇,这些同步机制是如何实现的呢?好奇心是进步的源泉,就让我们一起来揭开同步机制源码的神秘面纱吧。

从0到1实现自己的阻塞队列(下)

2019-04-29
阅读 13 分钟
1.4k
在上一篇文章《从0到1实现自己的阻塞队列(上)》中,我们已经实现了一个可以使用的阻塞队列版本。在这篇文章中,我们可以继续我们的冒险之旅,将我们的阻塞队列提升到接近JDK版本的水平上。

从0到1实现自己的阻塞队列(上)

2019-04-29
阅读 15 分钟
1.6k
阻塞队列不止是一道热门的面试题,同时也是许多并发处理模型的基础,比如常用的线程池类ThreadPoolExecutor内部就使用了阻塞队列来保存等待被处理的任务。而且在大多数经典的多线程编程资料中,阻塞队列都是其中非常重要的一个实践案例。甚至可以说只有自己动手实现了一个阻塞队列才能真正掌握多线程相关的API。

解决死锁的100种方法

2019-04-21
阅读 5 分钟
2.1k
死锁是多线程编程或者说是并发编程中的一个经典问题,也是我们在实际工作中很可能会碰到的问题。相信大部分读者对“死锁”这个词都是略有耳闻的,但从我对后端开发岗位的面试情况来看很多同学往往对死锁都还没有系统的了解。虽然“死锁”听起来很高深,但是实际上已经被研究得比较透彻,大部分的解决方法都非常成熟和清晰,...

多线程中那些看不见的陷阱

2019-04-09
阅读 8 分钟
1.9k
多线程编程就像一个沼泽,中间遍布各种各样的陷阱。大多数开发者绝大部分时间都是在做上层应用的开发,并不需要过多地涉入底层细节。但是在多线程编程或者说是并发编程中,有非常多的陷阱被埋在底层细节当中。如果不知道这些底层知识,可能在编写过程中完全意识不到程序已经出现了漏洞,甚至在漏洞爆发之后也很难排查出...

线程池运行模型源码全解析

2019-03-24
阅读 11 分钟
2k
在上一篇文章《从0到1玩转线程池》中,我们了解了线程池的使用方法,以及向线程池中提交任务的完整流程和ThreadPoolExecutor.execute方法的源代码。在这篇文章中,我们将会从头阅读线程池ThreadPoolExecutor类的源代码,深入剖析线程池从提交任务到执行任务的完整流程,从而建立起完整的线程池运行模型。

从0到1玩转线程池

2019-03-24
阅读 10 分钟
1.4k
我们一般不会选择直接使用线程类Thread进行多线程编程,而是使用更方便的线程池来进行任务的调度和管理。线程池就像共享单车,我们只要在我们有需要的时候去获取就可以了。甚至可以说线程池更棒,我们只需要把任务提交给它,它就会在合适的时候运行了。但是如果直接使用Thread类,我们就需要在每次执行任务时自己创建、...

Java线程池从使用到阅读源码(3/10)

2019-03-18
阅读 14 分钟
2.3k
我们一般不会选择直接使用线程类Thread进行多线程编程,而是使用更方便的线程池来进行任务的调度和管理。线程池就像共享单车,我们只要在我们有需要的时候去获取就可以了。甚至可以说线程池更棒,我们只需要把任务提交给它,它就会在合适的时候运行了。但是如果直接使用Thread类,我们就需要在每次执行任务时自己创建、...

这一次,让我们完全掌握Java多线程(2/10)

2019-03-10
阅读 4 分钟
3.9k
多线程不仅是Java后端开发面试中非常热门的一个问题,也是各种高级工具、框架与分布式的核心基石。但是这个领域相关的知识点涉及到了线程调度、线程同步,甚至在一些关键点上还涉及到了硬件原语、操作系统等更底层的知识。想要背背面试题很容易,但是如果面试官一追问就很容易露馅,更不用说真正想搞明白这个问题并应用...

当我们在说“并发、多线程”,说的是什么?

2019-03-05
阅读 3 分钟
2.7k
这篇文章的目的并不是想教你如何造火箭(面试造火箭,工作拧螺丝),而是想通过对原理和应用案例的有限度剖析来协助你构建起并发的思维,并将操作系统的理论知识与工程实践结合起来,贯穿从学到会的全过程。当然,虽然我们是从实用角度出发,但具有实践意义的深层次知识点永远会是面试中的杀手锏,这可比只能口头造火箭...

技术面试老是有劲使不出,该怎么办?

2019-02-22
阅读 4 分钟
7k
又到了一年金三银四,回想到很多年前我刚参加工作时的面试经历,那时都是呆呆地等着面试官问问题,被问到一些自己并不熟悉的问题时要不就是思考半天也切不中要点,要不就只能无奈地回答并不清楚了。其实不管是经验不足的初级开发,还是面临更高要求的资深开发,在面试上都会有一样的困扰:如何在掌握的知识有限的情况下...

数据库索引为什么用B+树实现?

2019-02-14
阅读 2 分钟
3.7k
为什么大多数数据库索引都使用B+树来实现呢?这涉及到数据结构、操作系统、计算机存储层次结构等等复杂的理论知识,但是不用担心,这篇文章20分钟之后就会给你答案。

20分钟数据库索引设计实战

2019-02-14
阅读 2 分钟
3.1k
在后端开发的工作中如何轻松、高效地设计大量数据库索引呢?通过下面这四步,20分钟后你就再也不会为数据库的索引设计而发愁了。 顺畅地阅读这篇文章需要了解数据库索引的组织方式,如果你还不熟悉的话,可以通过另一篇文章来快速了解一下——数据库索引融会贯通。 这篇文章是一系列数据库索引文章中的第三篇,这个系列包...

数据库索引融会贯通

2019-02-14
阅读 3 分钟
2.5k
索引的各种规则纷繁复杂,不了解索引的组织形式就没办法真正地理解数据库索引。通过本文,你可以深入地理解数据库索引在数据库中究竟是如何组织的,从此以后索引的规则对于你将变得清清楚楚、明明白白,再也不需要死记硬背。

数据库索引是什么?新华字典来帮你

2019-02-14
阅读 3 分钟
4.8k
学过服务器端开发的朋友一定知道,程序没有数据库索引也可以运行。但是所有学习数据库的资料、教程,一定会有大量的篇幅在介绍数据库索引,各种后端开发工作的面试也一定绕不开索引,甚至可以说数据库索引是从后端初级开发跨越到高级开发的屠龙宝刀,那么索引到底在服务端程序中起着怎样的作用呢?