【今日观点】 搞点事情!死磕Java并发编程(带密码文章如何访问)
对于程序员来说,编写不出错的代码是很难的,比这更难的是编写不出错的多线程相关代码。相比较于顺序执行的代码,并发执行的代码更加容易出错。而且在多线程场景中,出现了问题更加不容易排查。 造成这种种困难的原因就是开发者其实对并发编程有关的知识了解...
对于程序员来说,编写不出错的代码是很难的,比这更难的是编写不出错的多线程相关代码。相比较于顺序执行的代码,并发执行的代码更加容易出错。而且在多线程场景中,出现了问题更加不容易排查。 造成这种种困难的原因就是开发者其实对并发编程有关的知识了解...
一想到并发控制,很多人第一反应就是加锁,的确,加锁确实是解决并发问题最常见的方案。但是,其实除了加锁以外,在数据库领域,还有一种无锁的方案可以来实现并发控制,那就是大名鼎鼎的MVCC。 MVCC,是Multiversion Concurre...
阿里出过一个《Java开发手册》,上面有一条规约是禁止超过三张表的join。 而实际操作过程中,我们平时确实在SQL中写JOIN也比较少,两张表JOIN有的时候也有,多张表的JOIN在离线数据分析的时候很多,但是在线系统确实很少。经常有人问...
Redis是一种KV的存储结构,他的key是字符串类型,值也支持字符串,所以字符串是redis中最常见的一个类型了。Redis自己本身是通过C语言实现的,但是他并没有直接使用C语言中的字符数组的方式来实现字符串,而是自己实现了一个SDS,即...
近日,Google、微软、facebook 和亚马逊终于忍不了了,联合呼吁废除闰秒,什么是闰秒呢?闰秒到底做错了什么?为什么各大互联网公司想要废除他呢? 什么是闰秒 闰秒概念是 1972 年提出的,之所以有这个概念,主要是因为由于潮汐等自然...
分库分表,是企业里面毕竟常见的针对高并发、数据量大的场景下的一种技术优化方案,也是一个非常高频的面试题。但是,因为很多人其实并没有非常丰富的分库分表的经验,所以能把这个问题回答的比较好的人其实还挺少的。 那么,本文就来试图把关于分库分表的事...
对象加锁的入口在ObjectSynchronizer::enter(h_obj, lock, current); 这个方法中(https://github.com/openjdk/jdk/blob/9583e3657e43cc1c6f210...
在之前的一篇文章《为什么会出现数据库和缓存不一致的问题》中,我们介绍过缓存和数据库会出现数据不一致的几种情况。 我们提到过,在数据库和缓存的操作过程中,可能存在”先写数据库,后删缓存”、”先写数据库,后更新缓存”、”先删缓存库,后写数据库”...
大家好,我是Hollis,今天要和大家说个事儿。 那就是,大家期待已久的新书终于出版了,来,先给大家亮个相: 这本书是在5.1之前就送去印刷了,放假回来之后预售就开启了,可是还没等我在公众号告知大家,预售第一天就登上了京东的新书热销榜第一名...
关于缓存,相信很多人都不陌生,我们通常会在数据库之上搭建一个缓存服务器,将一些高频的数据存储到缓存中,可以提升查询效率,从而提高响应速度以及并发度。 但是,与此同时也带来了一个问题,那就是如何保证缓存和数据库之间的数据一致性? 在讨论怎么做...
不知道大家有没有遇到过类似的问题,应用在刚刚启动之后,前几次访问都会比较卡顿,RT都会比极高,在运行一段时间之后,就会顺畅很多了。 这背后的原因是什么呢? 今天给大家介绍一种可能的原因,也是一种经常被别人忽略的原因,也是我们线上环境遇到过很...