MySQL 中内连接、外连接等的区别

2020-08-19
阅读 2 分钟
4k
要想面对一个新的开始,一个人必须有梦想、有希望、有对未来的憧憬。如果没有这些,就不叫新的开始,而叫逃亡。下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。具体分解如下:1.INNER JOIN(内连接) {代码...} 2.LEFT JOIN(左连接) {代码...} 3.RIGHT JOIN(右连接) {代码...} 4.OUTER...

Java 中 synchronized 和 Lock 的区别与使用

2020-08-18
阅读 8 分钟
2k
在开始之前先把进程与线程进行区分一下,一个程序最少需要一个进程,而一个进程最少需要一个线程。关系是线程–>进程–>程序的大致组成结构。所以线程是程序执行流的最小单位,而进程是系统进行资源分配和调度的一个独立单位。以下我们所有讨论的都是建立在线程基础之上。

MySQL 行锁和表锁的含义及区别

2020-08-17
阅读 2 分钟
13.9k
对于行锁和表锁的含义区别,在面试中应该是高频出现的,我们应该对MySQL中的锁有一个系统的认识,更详细的需要自行查阅资料,本篇为概括性的总结回答。

Java 中 Comparable 和 Comparator 的区别

2020-08-16
阅读 3 分钟
1.3k
Comparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较,则依赖compareTo方法的实现。

详解 Spring 中 Bean 的生命周期

2020-08-14
阅读 6 分钟
2.4k
这一节准备给大家讲解Spring 容器中的Bean的生命周期。这一节我个人觉得还是比较实用的,在实际工作当中经常会用到这些知识来解决一些非常棘手的问题。

一个 TCP 连接可以发送多少个 HTTP 请求?

2020-08-13
阅读 3 分钟
1.1k
相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?

Java 中的 finally 一定会被执行吗?

2020-08-12
阅读 4 分钟
5.1k
因为这次面试有问到一些同学finally的问题,发现自己这块好像有点记不太清楚了,有的点可能还给人家说错了,一度弄得场面有些尴尬。所以说这篇文章深入研究一下finally的执行情况和返回值的情况。

使用 Redis 实现大规模的帖子浏览计数

2020-08-11
阅读 2 分钟
2.8k
成功只有一个——按照自己的方式,去度过人生。本文我们就来聊一聊,Reddit 是如何在大规模下统计帖子浏览量的。统计方法我们对统计浏览量有四个基本的要求计数必须达到实时或者接近实时。每个用户在一个时间窗口内仅被记录一次。帖子显示的统计数量的误差不能超过百分之几。整个系统必须能在生成环境下,数秒内完成阅读计...

详解 JUC 线程池中的 ThreadPoolExecutor

2020-08-10
阅读 21 分钟
6.9k
很早之前就打算看一次JUC线程池ThreadPoolExecutor的源码实现,由于近段时间比较忙,一直没有时间整理出源码分析的文章。之前在分析扩展线程池实现可回调的Future时候曾经提到并发大师Doug Lea在设计线程池ThreadPoolExecutor的提交任务的顶层接口Executor只有一个无状态的执行方法:

如何停止一个正在运行的线程?

2020-08-09
阅读 9 分钟
2.2k
停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。

详谈线程池的理解和应用

2020-08-08
阅读 5 分钟
4.8k
线程池是啥子,干啥使它呀,老子线程使得好好的,非得多次一举,哈哈,想必来这里看这篇文章的都对线程池有点了解。那么我来整理整理线程池的好处吧。

Java 类是如何被加载的?

2020-08-07
阅读 13 分钟
1.3k
双亲委派模型中,ClassLoader在加载类的时候,会先交由它的父ClassLoader加载,只有当父ClassLoader加载失败的情况下,才会尝试自己去加载。这样可以实现部分类的复用,又可以实现部分类的隔离,因为不同ClassLoader加载的类是互相隔离的。

Java 序列化和反序列化为什么要实现 Serializable 接口

2020-08-06
阅读 7 分钟
2.1k
公司的系统在做服务化, 需要把所有model包里的类都实现Serializable接口, 同时还要显示指定serialVersionUID的值。听到这个需求, 我脑海里突然出现了好几个问题, 比如说:

谈谈 Java 面向对象设计的六大原则

2020-08-05
阅读 4 分钟
1.1k
我的目的地,就是下一步所能跨到的最远的地方。不论何时,迈出第一步永远是最难的,因为有些路一但跨入就无法回头,我无数次告诫自己,做过的事不后悔,我跨出的每一步都是一往无前的。

详解三种单例模式的实现

2020-08-04
阅读 3 分钟
3k
这种方式基于classloder机制避免了多线程的同步问题,instance在类装载时就实例化。目前java单例是指一个虚拟机的范围,因为装载类的功能是虚拟机的,所以一个虚拟机在通过自己的ClassLoader装载饿汉式实现单例类的时候就会创建一个类的实例。

NIO 和 IO 有什么区别?

2020-08-01
阅读 2 分钟
1.7k
NIO不在是和IO一样用OutputStream和InputStream 输入流的形式来进行处理数据的,但是又是基于这种流的形式,而是采用了通道和缓冲区的形式来进行处理数据的。

ConcurrentHashMap 是如何保证线程安全的?

2020-07-30
阅读 5 分钟
2.1k
我们知道,ConcurrentHashMap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢?

为什么 HashMap 是线程不安全的

2020-07-29
阅读 6 分钟
1.1k
在jdk1.8中对HashMap做了很多优化,这里先分析在jdk1.7中的问题,相信大家都知道在jdk1.7多线程环境下HashMap容易出现死循环,这里我们先用代码来模拟出现死循环的情况:

HashMap 中 hash 冲突的解决方法及原理分析

2020-07-28
阅读 13 分钟
1.4k
HashMap冲突的解决方法比较考验一个开发者解决问题的能力。下文给出HashMap冲突的解决方法以及原理分析,无论是在面试问答或者实际使用中,应该都会有所帮助

深入理解 Java 线程之间的通信方式

2020-07-27
阅读 5 分钟
3.6k
有时候,成年人的自律就是,抱最好的希望,做最坏的打算,尽最大的努力。通信方式①同步②while轮询的方式③wait/notify机制④管道通信一,介绍本文总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码。二,线程间的通信方式①同步这里讲的同步是指多...

Java 并发编程之 ReentrantLock 源码分析

2020-07-26
阅读 9 分钟
1.2k
我是一个优秀的人,但也有缺点,比我优秀的人有很多很多。连自己都认输,何谈你的对手,与你一样优秀,甚至比你优秀的人。战胜自己,就是最大的超越。

谈谈 Redis 的过期策略

2020-07-25
阅读 5 分钟
3.4k
在日常开发中,我们使用 Redis 存储 key 时通常会设置一个过期时间,但是 Redis 是怎么删除过期的 key,而且 Redis 是单线程的,删除 key 会不会造成阻塞。要搞清楚这些,就要了解 Redis 的过期策略和内存淘汰机制。

BigDecimal 一定不会丢失精度吗?

2020-07-24
阅读 5 分钟
2.7k
我们基本已经形成了常识,需要用到金钱的地方要用BigDecimal而不是其他,而我们也都知道浮点型变量在进行计算的时候会出现丢失精度的问题。

解读 Java 内存模型

2020-07-23
阅读 13 分钟
1.1k
伟人之所以伟大,是因为他与别人共处逆境时,别人失去了信心,他却下决心实现自己的目标。 Java内存模型(Java Memory Model)定义了Java的线程在访问内存时会发生什么。这里针对以下几个要点进行解析: 重排序 可见性 synchronized volitile final Double-Checked Locking 首先了解一下与Java内存模型交互时的指南: {...

Redis 中是如何实现分布式锁的?

2020-07-22
阅读 3 分钟
1.5k
喷泉漂亮是因为它有压力,瀑布壮观是因为它没有退路,水能穿石是因为它永远在坚持。 分布式锁常见的三种实现方式: 数据库乐观锁; 基于Redis的分布式锁; 基于ZooKeeper的分布式锁。 要点 Redis要实现分布式锁,以下条件应该得到满足互斥性 在任意时刻,只有一个客户端能持有锁。 不能死锁 客户端在持有锁的期间崩溃而...

分库分表之后,id 主键如何处理?

2020-07-21
阅读 6 分钟
1.4k
这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个全局唯一的 id 来支持。所以这都是你实际生产环境中必须考虑的问题。

深入理解 ZooKeeper 的基本原理

2020-07-20
阅读 7 分钟
1.9k
ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

分布式锁,进程锁,线程锁的区别

2020-07-19
阅读 3 分钟
2.9k
线程锁:大家都不陌生,主要用来给方法、代码块加锁。当某个方法或者代码块使用锁时,那么在同一时刻至多仅有有一个线程在执行该段代码。当有多个线程访问同一对象的加锁方法/代码块时,同一时间只有一个线程在执行,其余线程必须要等待当前线程执行完之后才能执行该代码段。但是,其余线程是可以访问该对象中的非加锁代...

Java 并发编程之 ConcurrentHashMap 源码分析

2020-07-18
阅读 18 分钟
958
我们知道哈希表是一种非常高效的数据结构,设计优良的哈希函数可以使其上的增删改查操作达到O(1)级别。Java为我们提供了一个现成的哈希结构,那就是HashMap类,在前面的文章中我曾经介绍过HashMap类,知道它的所有方法都未进行同步,因此在多线程环境中是不安全的。为此,Java为我们提供了另外一个HashTable类,它对于多...

大白话聊分布式事务

2020-07-17
阅读 2 分钟
1.2k
简单的来说就是,一个大的操作由两个或者更多的小的操作共同完成。而这些小的操作又分布在不同的网络主机上。这些操作,要么全部成功执行,要么全部不执行。