摘要: 共享锁, 又称为读锁,获得共享锁之后,可以查看但无法修改和删除数据。 排他锁, 又称为写锁、独占锁,获得排他锁之后,既能读数据,又能修改数据。 为什么要加锁 很多人都知道,锁是用来解决并发问题的,那么什么是并发问题呢?并发情况下,不加锁会有什么问题呢? 拿生活中的洗手间举例子,每个洗手间都会有一个门 阅读全文
posted @ 2019-08-07 12:47 murphy_gb 阅读(6589) 评论(4) 推荐(3) 编辑
摘要: “读”是多个事务并发执行时,在读取数据方面可能碰到的状况。先了解它们有助于理解各隔离级别的含义。其中包括脏读、丢失修改、不可重复读和幻读。 脏读 脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据 阅读全文
posted @ 2019-08-05 19:58 murphy_gb 阅读(4422) 评论(0) 推荐(1) 编辑
摘要: 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。 在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎和INNODB存储引擎)。 行级锁 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作 阅读全文
posted @ 2019-08-05 19:42 murphy_gb 阅读(2409) 评论(0) 推荐(1) 编辑
摘要: 今天来分享一下Redis几道常见的面试题: 如何解决缓存雪崩? 如何解决缓存穿透? 如何保证缓存与数据库双写时一致的问题? 一、缓存雪崩 1.1 什么是缓存雪崩? 首先我们先来回答一下我们为什么要用缓存(Redis): 1、提高性能能:缓存查询是纯内存访问,而硬盘是磁盘访问,因此缓存查询速度比数据库 阅读全文
posted @ 2019-08-04 10:45 murphy_gb 阅读(2147) 评论(0) 推荐(3) 编辑
摘要: ThreadLocal也是在面试过程中经常被问到的,本文主要从以下三个方面来谈对ThreadLocal的一些理解: ThreadLocal用在什么地方 ThreadLocal一些细节 ThreadLocal的最佳实践 ThreadLocal用在什么地方? 讨论ThreadLocal用在什么地方前,我 阅读全文
posted @ 2019-08-01 08:41 murphy_gb 阅读(712) 评论(0) 推荐(1) 编辑
摘要: 很多读者反应,就算看了前文 "动态规划详解" ,了解了动态规划的套路,也不会写状态转移方程,没有思路,怎么办?本文就借助「最长递增子序列」来讲一种设计动态规划的通用技巧:数学归纳思想。 最长递增子序列(Longest Increasing Subsequence,简写 LIS)是比较经典的一个问题, 阅读全文
posted @ 2019-07-20 10:28 murphy_gb 阅读(10634) 评论(3) 推荐(4) 编辑
摘要: 1.正确使用equals方法 Object的equals方法容易抛出空指针异常,应使用常量或确定有值的对象来调用equals方法 例如: 如果运行上面的程序则会抛出空指针异常,但是我们把第二行的条件判断语句改为下面这样的话,就不会抛出空指针异常,else语句可以得到执行: 但是更推荐用 java.u 阅读全文
posted @ 2019-07-16 19:14 murphy_gb 阅读(1003) 评论(0) 推荐(0) 编辑
摘要: 1.什么是LRU算法? LRU是一种缓存淘汰机制策略。 计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新的内容腾位置。但是要删除哪些内容呢?我们肯定希望删掉那些没有用的缓存,而把有用的数据继续留在缓存中,方便之后继续使用。那么,什么样的数据我们可以判定为有用的数据呢? LRU缓存淘汰算法就是 阅读全文
posted @ 2019-07-13 10:54 murphy_gb 阅读(21829) 评论(2) 推荐(7) 编辑
摘要: 本文分两部分,第一部分列举几个有趣的位操作,第二部分讲解算法中常用的 n & (n 1)操作,顺便把用到的这个技巧的算法题列出来讲解一下,因为位操作很简单,所以假设读者已经了解与、或、异或这三种基本操作。 位操作(Bit Manipulation)可以玩出很多奇淫技巧,但是这些技巧大部分都过于晦涩, 阅读全文
posted @ 2019-07-13 01:15 murphy_gb 阅读(1145) 评论(0) 推荐(4) 编辑
摘要: 有这样一道面试题: 现有40亿个整数,如果再给定一个新的整数,怎么判断这个整数是否在这40亿个整数中? 你可能首先会想到用一个set存储,那个新数只需判断是否在set中。但是如果用set存储的话,如果一个整数4个字节,40亿个的话就是160亿个字节,大概是16GB。这需要的内存就非常大了。 那么如果 阅读全文
posted @ 2019-07-03 22:21 murphy_gb 阅读(1207) 评论(1) 推荐(2) 编辑