【Java并发编程实战】(五):死锁问题

2021-04-01
阅读 7 分钟
2k
在上一篇文章中,我们用Account.class作为互斥锁,来解决银行业务里面的转账问题,虽然这个方案不存在并发问题,但是所有账户的转账操作都是串行的,例如账户A 转账户B、账户C 转账户D这两个转账操作现实世界里是可以并行的,但是在这个方案里却被串行化了,这样的话,性能太差。

【Java并发编程实战】(四):互斥锁——解决原子问题和保护多个资源

2021-04-01
阅读 9 分钟
2.2k
在第一篇文章中我们提到,一个或者多个操作在CPU执行的过程中不被中断的特性,称为“原子性”。理解这个特性有助于你分析并发编程Bug出现的原因,例如利用它可以分析出long型变量在32位机器上读写可能出现的诡异Bug,明明已经把变量成功写入内存,重新读出来却不是自己写入的。

【Java并发编程实战】(三):Java内存模型——看Java如何解决可见性和有序性问题

2021-04-01
阅读 5 分钟
1.5k
上一节我们讲到在并发场景中,因可见性、原子性、有序性导致的问题常常会违背我们的直觉,从而成为并发编程的Bug之源。这三者在编程领域属于共性问题,所有的编程语言都会遇到,Java在诞生之初就支持多线程,自然也有针对这三者的技术方案,而且在编程语言领域处于领先地位。理解Java解决并发问题的解决方案,对于理解其...

【Java并发编程实战】(二):并发编程Bug的源头——可见性、原子性和有序性问题

2021-04-01
阅读 6 分钟
2.1k
如果你细心观察的话,你会发现,不管是哪一门编程语言,并发类的知识都是在高级篇里。换句话说,这块知识点其实对于程序员来说,是比较进阶的知识。我自己这么多年学习过来,也确实觉得并发是比较难的,因为它会涉及到很多的底层知识,比如若你对操作系统相关的知识一无所知的话,那去理解一些原理就会费些力气。这是我...

【Java并发编程实战】(一):如何才能学好并发编程

2021-04-01
阅读 4 分钟
2.1k
并发编程并不是一门相对独立的学科,而是一个综合学科。并发编程相关的概念和技术看上非常零散,相关度也很低,总给你一种这样的感觉:我已经学习很多相关技术了,可还是搞不定并发编程。那如何才能学习好并发编程呢?

【数据结构与算法】腾讯面试官让我模拟快排的执行过程,背好的代码竟无用武之地

2020-10-26
阅读 3 分钟
1.8k
快速排序号称最优雅的算法之一,在开发中可能用得不算多,但是在一些场景下还是很出色的。最关键的是,各大厂面试官都爱问啊,你说要不要好好掌握吧。然后就是网上很多快排的代码和讲解,少侠发现很多人自己压根都没搞清楚,代码的边界不清,扔进去一执行就报数组越界异常;要么就是一些人模拟的快排过程都是错的,这让...

我为什么不建议开发中使用UUID作为MySQL的主键

2020-10-18
阅读 2 分钟
4.1k
我在之前一篇博客专门介绍了MySQL聚簇索引和非聚簇索引,附传送门:【享学MySQL】系列:MySQL索引的数据结构,索引种类及聚簇索引和非聚簇索引简单来说,就是我们设计表的时候,基本都会人为设定一个主键,这就是聚簇索引(如果没有设定主键,MySQL会选择非空不唯一的字段作为聚簇索引,如果依然没有,则MySQL会选择自己...

【Redis】拼多多面试官问我zset底层是如何实现的,我反手就把跳表的数据结构画了出来

2020-10-14
阅读 4 分钟
13.5k
Redis因为其完全基于内存、性能出色,加上具备丰富的数据类型,在电商环境中深受后端开发的喜爱。其中有序集合zset就是基本数据类型之一,并且每个member都带有score(可用于排序),因此很适合在打赏日榜、近一周收益这类场景中运用。

【Spring】详细的Spring的核心IOC源码分析,温故而知新

2020-10-14
阅读 76 分钟
1.7k
Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。

【搞定面试官】系列:阿里面试官问我事务注解@Transactional失效场景有哪些

2020-09-10
阅读 4 分钟
4.8k
此时事务肯定不会回滚。如下代码所示,在插入数据之后紧接着执行了一个会触发NPE(空指针异常)的操作。可以发现日志打印出了"新增用户信息时捕获到异常",但是数据还是正常插入到了MySQL中,即不会发生回滚。

【搞定面试官】系列:当面试官问你如何保证缓存和数据库双写一致性时,他到底想问什么

2020-09-09
阅读 3 分钟
3.4k
小伙子你好,看你简历上写到了MySQL和Redis。今天我们就围绕他们两个展开吧。Redis和MySQL是后端开发中举重若轻的重要角色。实际开发中二者也基本上如影随行,为了提高性能和响应,Redis常常存放热点数据,MySQL存放所有数据,保证数据持久化。所以Redis可以说是MySQL的一部分数据。

【网络协议】彻底弄清POST和GET请求的区别,这次你GET了么

2020-09-08
阅读 2 分钟
29k
我想大家在面试中应该经常有被问到POST和GET请求的区别,很多人都会回答诸如POST比GET安全,GET比POST传输的长度要少之类的,然而,这会是面试官想要的答案么?这样的回答听上去难免像是囫囵吞枣的背诵下来的,并且就算是背,多少也得知道一下原理呀。今天,少侠就带着问题和大家一起看看POST和GET请求的区别。

MySQL深度分页的问题及优化方案:千万级数据量如何快速分页

2020-09-06
阅读 3 分钟
18.3k
后端开发中为了防止一次性加载太多数据导致内存、磁盘IO都开销过大,经常需要分页展示,这个时候就需要用到MySQL的LIMIT关键字。但你以为LIMIT分页就万事大吉了么,Too young,too simple啊,LIMIT在数据量大的时候极可能造成的一个问题就是深度分页。

【搞定面试官】系列:字节面试官的灵魂三问,为什么Redis这么快,怎样支撑高并发,如何解决并发竞争问题

2020-08-29
阅读 3 分钟
1.9k
Redis是当前炙手可热的NoSQL数据库,几乎已经成为高并发、高可用系统的标配了。若是对Redis响应快的认知仅仅停留在基于内存和单线程的层面,恐怕是很难斩获大厂的Offer。本篇重点全面介绍Redis的单线程模型及如何支撑高并发的。

【搞定面试官】系列:避免缓存穿透的利器之Bloom Filter

2020-08-29
阅读 6 分钟
3k
在开发或者面试过程中,时常遇到过海量数据需要查询,秒杀时缓存击穿怎么避免等等这样的问题呢?掌握好本篇介绍的知识点将有助于你在之后的工作、面试中策马奔腾。

【搞定面试官】系列:Redis基础

2020-08-25
阅读 5 分钟
1.5k
在互联网电商如火如荼发展的大背景下,传统的关系型数据库(MySQL、Oracle)已然无法满足高并发、限时秒杀等复杂的场景。此时NoSQL(非关系型数据库)应运而生,而Redis就是NoSQL大军里的一颗璀璨新星,在大厂面试中也是绝对绕不开的话题。

【享学MySQL】系列:深入理解MySQL中的事务【超详细配图版】

2020-08-25
阅读 7 分钟
2.3k
想必参加过后台开发面试的伙伴们都知道,MySQL事务这玩意是各大面试官百问不厌的知识点,但是大家对于事务的了解到什么层面呢,仅仅停留在ACID上么,这篇文章将陪着大家一起深入MySQL中的事务。

看了架构师的代码,切身感受到了代码可扩展性高的魅力

2020-08-24
阅读 5 分钟
1.3k
开发有个著名的设计原则:开闭原则,即对扩展开放,对修改关闭。但是实际开发中鲜有人能运用纯熟,少侠在开发中接触的例子就是,大多数人就是if...else...这样难以扩展的条件判断。那么应该如何优雅的精简掉复杂的逻辑判断呢?当然抽象共性是从产品思维角度的优化方案,今天少侠想说的是通过技术手段实现。