lock in share mode 和 select for update

许多同学或应该都听过"select ... lock in share mode" 和 "select ... for update",但是或多或少会有以下几个疑问: 这俩货是什么含义? 和普通的select有什么区别呢? 什么场景下用?用哪个? 含义 我们直接从mysql官网上看它们的定义: SELECT ... LOCK IN SHARE MODE Sets a shared mode lock on any rows that are read. Other sessions can read the rows, but cannot modify them until your transaction commits. If any of these rows were changed by another transaction that has not yet committed, your query waits until that transaction ends and then uses the latest values. 翻译一下:在你正在读的行设置一....

阅读全文 »

一次Java泛型引发的运行时异常

问题描述 公司对redis进行了封装,提供了一套自己的客户端api,其中有两个hash相关的接口是这样的 1. Long hincrBy(String key, String field, int amount) 2. <T> Map<String, T> hgetAll(String key) 业务中需要用到这两个接口,下面是我的用法: 调用hincrBy接口:hincrBy(“aa”, "bb", 1) 调用hgetAll接口:Map<String, Integer> map = hgetAll("aa"); 使用返回的map map.foreach((k, v) -> {int i = v;}); 然后编译一切正常,在运行的时候,会报错: java.lang.classCastException:java.long.Long can not be cast to java.long.Integer. 寻找原因 为什么我incrBy的时候塞进去的是int,获取hgetAll的时候,用Map<String, Integer&g....

阅读全文 »

Mysql事务隔离级别、脏读、幻读

Mysql事务隔离级别本身很重要,再加上可能是因为各大公司面试必问的缘故,在博客中出现的概率非常高,但不幸的是,中国的技术博客要么是转载,要么是照抄,质量参差不齐,好多结论都是错的,对于心怀好奇之心想弄明白问题的同学来说,这些博客是很危险的。 我当时也是看了各种版本的博客之后,翻官网,做实验,最终搞明白了一些事情,写在这里,希望对后来人有所帮助。水平有限,有不正确或者不明白的地方,欢迎指正拍砖。 事务隔离级别 先说什么叫做“事务隔离”,事务隔离是指多个事务同时在进行中(如果只有一个事务,那就无所谓隔离不隔离了)时,各个事务被隔离开来,相互之间的影响和事物的隔离级别有关,按照“读未提交”-->“读已提交”-->“可重复读”-->“串行化”的顺序,越往后面隔离级别越高,事务之间的影响越小。 下面的内容都以这个数据表为例进行说明: idmoney 110 220 440 读未提交和脏读 两个同时进行的事务A、B,A会读到B还未提交的的数据,这种事务隔离级别会存在脏读的问题,举个例子: B修改id=2的money为200,但是尚未提交,然后A读取id为2的money....

阅读全文 »

关于读书

  文字是人类最伟大的发明之一。文字出现之前只能口口相传,出现之后,所有言论、思想都可以记录成册,流传于后世。我们无法跨越时间,但可以阅读前人留下的文字,或者将文字流传给后人,着实是一件很奇妙也很欣慰的事情(隐隐有一种战胜自然法则的快感,还有比读书和写作更爽的事么?)。 时间是个残酷的东西,好多书籍都在时间的流逝中消失了;时间也是好东西,那些经受住时间考验流传至今的书籍,都是前人思想的精华,能流传下来肯定有能流传下来的价值。这些都是宝贝,不读岂不可惜。 然而,大道至简,很多道理大家都明白,比如坚持、勤奋,等等,可很少有人能或者愿意去做,读书也是如此。然而,随着生活节奏的加快和娱乐设备的完善,越来越多的时间被瓜分,当今时代,坚持读书的人越来越少了,绝大多数人有过这样的疑问,读书有啥用,又不能当饭吃。 关于为什么要读书这个问题,这是我见到过得最好的回答: ![40b390827fcd48da86e1223b5400ac69-IMG120578.JPG](http://oss.lanjingdejia.com/file/2018/5/40b390827fcd48da86e1223b5400....

阅读全文 »

Hello, World!

近来对计算机有所感悟,记录下来。 什么是计算机 当今时代,几乎各行各业都离不开计算机,种了一辈子地的老爸也会打开浏览器,每天看看新闻了。刚开始接触计算机时,大多数人都会感觉计算机无所不能,很强大但又很神秘,接通电源之后,世界便出现在你的眼前了。 可是,万能的计算机究竟是怎么一种东西呢,于是,怀着好奇心,我们找来螺丝刀拆开笨重主机的后盖,出现在我们面前的似乎并没有我们想象中那么神秘,电路板,各种电子元件,各种电线,还有个小风扇。 这一堆东西总的来说那该有这么几部分,CPU,内存,硬盘,电源,风扇,机箱。没错,我们一直觉得神秘又强大的计算机就是这些普通的定西组装起来的。 接通电源,正负电压流进计算机,正负电压的排列组合被用来模拟‘是‘、’非’、‘而且’、‘或者’、‘循环’、‘顺序‘、’分叉’等这些人类活动中事物的关系,有了这些关系,计算机便可以处理人们遇到的问题。硬盘和我们平时的记东西的本子没什么区别,是计算机用来记东西的。内存是CPU和硬盘之间的桥梁,用来缓冲cpu和硬盘之间速度的巨大差异,风扇是用来给cpu吹风降温的,机箱就是个保护罩。 这样看来,计算机其实也挺'朴实',各个元器件各司....

阅读全文 »