首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

看得见的与看不见的 - 计算机科学里的 trade-off

政府或企业的每一个决策、每一次行动,甚至不经意间的个人行为都可能会对现实生活中造成影响,其中有些影响是立马可以感受到的,是看得见的,而有些影响是第一时间很难感受到的,是看不见的。经济学里有一个很经典的例子是来说明看得见和看不见的影响,商店主人的儿子把商店的橱窗打破了,然后商店的主人花钱请玻璃工师傅把橱窗修复了,然后玻璃工师傅拿到了修复的费用,在某种程度上,这笔修复的费用使整个资金链运转起来,商店的橱窗修复了,玻璃工师傅有了收入,这是看的见的影响。同样的,还有看不见的影响,商店主人原本可以用这笔钱去创造更大的价值,比如购进新的货物、让商店更好看,然而因为橱窗的打破这笔钱没有了。

02

跨行零基础转行前端,到底需要学多少东西才够用?

现在新进入前端的人主要分二类,一是毕业就学前端的;二是做了几年其它工作,然后转行前端开发。从大的就业效果上来看,工作几年之后再跨行的人,就业率要明显低于前者。 但是工作几年的人之所以要转行前端开发,就说明他们各自有“不得不转”的原因。所以没办法必须转,算是明知山有虎,偏向虎山行吧。 他们对于前端开发行业的理解,可能仅仅只是“行业爆发,待遇丰厚”。更形象一点的说,前端开发的火爆对他们来讲,就好比“大蒜行业很火”、“红木家具很火”这种的单一技能行业。对这个前端开发这个工作完全不了解,甚至不想多了解。只是想马上

08

什么是REPEATABLE-READ隔离级别?

马克-to-win:既 然我们教材用mysql,我们仔细研究一下mysql缺省情况,即两个窗口都是REPEATABLE-READ(可重复读)级别的情况。两个窗口都开始事 务以后,窗口2的update,delete,insert,窗口1肯定都看不见。但双方如果都同时update,delete,insert的话,虽然 会被block住,但一旦最后两个窗口都提交,两个窗口的效果是累加的。马克-to-win:举几个例子:1)比如窗口2先要减1,虽然窗口1看不见这种变化,窗口1如果也要 减1的话,虽然当时被block住,但只要窗口2提交的话,窗口1竟然凭着select * from table能够看到累加的效果,即一共减了2。换句话说,窗口1如果不update一下,就不会看到窗口2的update的效果。2)同样道理,如果窗口 2删除了一条记录,提交以后,窗口1未提交之前,还以为这条记录存在呢。select时发现还有,但update时,不能update,也不报错。提交以 后才发觉,数据早没有了。更新半天,都是瞎忙活。马克-to-win:也好理解,因为窗口2早delete了嘛!3)如果窗口2增加一条,窗口1也想增加同样主键的这条记录 (因为看不到这条主键的记录),暂时被挡住以后,当窗口2提交,窗口1会报错,说试图增加重复键。4)窗口1想更新全部的记录为红色,同时窗口2想插入一 条蓝色的,被挡住后不能动弹键盘。窗口1必须先提交,select一下,没发觉蓝色的,等窗口2提交以后,大家都发觉,所有的都变成了红色,除了新插入的 一条是蓝色。所以还是符合提交的变化都会生效,变化的效果是累加的。5)窗口2增加一条,窗口1死活看不到这一条。即使看不见,如果愣更新这条记录的话, 会被挡在那里。马克-to-win:这时如窗口2提交,窗口1简单select,就可以看到自己update的效果。mysql的策略是,只要你叠加在别人的修改之上修改了, 在你提交之前,是可以看到这种修改的,即使你的窗口级别是REPEATABLE-READ(可重复读)。

02

事务隔离与更改数据库的关系

马克-to-win:当 然,为了保持数据的一致性和数据库的正确性,涉及到同时改变数据库(update,insert,delete)时,不管任何的隔离级别,事务一定是序列 的执行的。先执行的事务挡住(block)后执行的事务正好要改变数据库的那句话(换句话说,在那句话后面的事务就卡在那了)。后执行的事务需要获得相关 行的“行排他锁”才能改数据。先执行的,一定是事务完成才释放“行排他锁”。注意不止是那句更新完成就释放“行排他锁”。马克-to-win:先执行的事务一完成,后面的事务 立刻继续。注意二者都commit后,对数据库的改变是叠加的。只要commit,改变就不会白做,保证了数据库的正确性。(查事务的ACID的 Durable的特性)比如一个insert,另一个update,效果也叠加,即使update的select时,还看不见insert的东西。只要对 准那个insert的row的主键update,更新就不白做。马克-to-win:两个都update,效果更是叠加了。如果你delete,我看不见,我还update, 就白做了,也好理解,因为你先delete了嘛!具体见“REPEATABLE-READ隔离级别”

01
领券