DB和缓存一致性方案解析

一、为什么写这篇文章?

首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作:

但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存?又或者是先删除缓存,再更新数据库?其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析:

二、文章结构

1、讲解缓存更新策略;

2、对每种策略进行缺点分析;

3、针对缺点给出改进方案;

三、正文

先做一个说明,从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果数据库写成功,缓存更新失败,那么只要到达过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存。因此,接下来讨论的思路不依赖于给缓存设置过期时间这个方案。在这里,我们讨论三种更新策略:

1、先更新数据库,再更新缓存;
2、先删除缓存,再更新数据库;
3、先更新数据库,再删除缓存;

应该没人问我,为什么没有先更新缓存,再更新数据库这种策略!

四、先更新数据库,再更新缓存

这套方案,大家是普遍反对的,为什么呢?有如下两点原因:

原因一、线程安全角度

同时有请求A和请求B进行更新操作,那么会出现:

  1. 线程A更新了数据库;
  2. 线程B更新了数据库;
  3. 线程B更新了缓存;
  4. 线程A更新了缓存;

这就出现请求A更新缓存应该比请求B更新缓存早才对,但是因为网络等原因,B却比A更早更新了缓存。这就导致了脏数据,因此不考虑!

原因二、业务场景角度

有如下两点:

(1)如果你是一个写数据库场景比较多,而读数据场景比较少的业务需求,采用这种方案就会导致,数据压根还没读到,缓存就被频繁的更新,浪费性能。

(2)如果你写入数据库的值,并不是直接写入缓存的,而是要经过一系列复杂的计算再写入缓存。那么,每次写入数据库后,都再次计算写入缓存的值,无疑是浪费性能的。显然,删除缓存更为适合。

接下来讨论的就是争议最大的,先删缓存,再更新数据库。还是先更新数据库,再删缓存的问题。

五、先删缓存,再更新数据库

该方案会导致不一致的原因是:同时有一个请求A进行更新操作,另一个请求B进行查询操作。那么会出现如下情形:

(1)请求A进行写操作,删除缓存;

(2)请求B查询发现缓存不存在;

(3)请求B去数据库查询得到旧值;

(4)请求B将旧值写入缓存;

(5)请求A将新值写入数据库;

上述情况就会导致不一致的情形出现。而且,如果不采用给缓存设置过期时间策略,该数据永远都是脏数据。

那么,如何解决呢?采用延时双删策略!伪代码如下:

转化为中文描述就是:

(1)先淘汰缓存;

(2)再写数据库(这两步和原来一样);

(3)休眠1秒,再次淘汰缓存;

这么做,可以将1秒内所造成的缓存脏数据,再次删除!

5.1、那么,这个1秒怎么确定的,具体该休眠多久呢?

针对上面的情形,读者应该自行评估自己的项目的读数据业务逻辑的耗时。然后写数据的休眠时间则在读数据业务逻辑的耗时基础上,加几百ms即可。这么做的目的,就是确保读请求结束,写请求可以删除读请求造成的缓存脏数据。

5.2、如果你用了MySQL的读写分离架构怎么办?

OK,在这种情况下,造成数据不一致的原因如下,还是两个请求,一个请求A进行更新操作,另一个请求B进行查询操作。

(1)请求A进行写操作,删除缓存;

(2)请求A将数据写入数据库了;

(3)请求B查询缓存发现,缓存没有值;

(4)请求B去从库查询,这时,还没有完成主从同步,因此查询到的是旧值;

(5)请求B将旧值写入缓存;

(6)数据库完成主从同步,从库变为新值;

上述情形,就是数据不一致的原因。还是使用双删延时策略。只是,睡眠时间修改为在主从同步的延时时间基础上,加几百ms。

5.3、采用这种同步淘汰策略,吞吐量降低怎么办?

ok,那就将第二次删除作为异步的。自己起一个线程,异步删除。这样,写的请求就不用沉睡一段时间后了,再返回。这么做,加大吞吐量。

5.4、第二次删除,如果删除失败怎么办?

这是个非常好的问题,因为第二次删除失败,就会出现如下情形。还是有两个请求,一个请求A进行更新操作,另一个请求B进行查询操作,为了方便,假设是单库:

(1)请求A进行写操作,删除缓存;

(2)请求B查询发现缓存不存在;

(3)请求B去数据库查询得到旧值;

(4)请求B将旧值写入缓存;

(5)请求A将新值写入数据库;

(6)请求A试图去删除请求B写入对缓存值,结果失败了;ok,这也就是说。如果第二次删除缓存失败,会再次出现缓存和数据库不一致的问题。

5.5、如何解决呢?

具体解决方案,且看第六节更新策略的解析!

六、先更新数据库,再删缓存

首先,先说一下。老外提出了一个缓存更新套路,名为《Cache-Aside pattern》。其中就指出:

  • 失效:应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放到缓存中;
  • 命中:应用程序从cache中取数据,取到后返回;
  • 更新:先把数据存到数据库中,成功后,再让缓存失效;

另外,知名社交网站facebook也在论文《Scaling Memcache at Facebook》中提出,他们用的也是先更新数据库,再删缓存的策略。

6.1、这种情况不存在并发问题么?

不是的。假设这会有两个请求,一个请求A做查询操作,一个请求B做更新操作,那么会有如下情形产生:

(1)缓存刚好失效;

(2)请求A查询数据库,得一个旧值;

(3)请求B将新值写入数据库;

(4)请求B删除缓存;

(5)请求A将查到的旧值写入缓存;

ok,如果发生上述情况,确实是会发生脏数据。

6.2、然而,发生这种情况的概率又有多少呢?

发生上述情况有一个先天性条件,就是6.1中步骤(3)的写数据库操作比步骤(2)的读数据库操作耗时更短,才有可能使得步骤(4)先于步骤(5)。可是,大家想想,数据库的读操作的速度远快于写操作的(不然做读写分离干嘛,做读写分离的意义就是因为读操作比较快,耗资源少),因此步骤(3)耗时比步骤(2)更短,这一情形很难出现。

假设,有人非要抬杠,有强迫症,一定要解决怎么办?

6.3、如何解决上述并发问题?

首先,给缓存设有效时间是一种方案。其次,采用策略2(先删除缓存,再更新数据库)里给出的异步延时删除策略,保证读请求完成以后,再进行删除操作。

6.4、还有其他造成不一致的原因么?

有的,这也是缓存更新策略2(先删除缓存,再更新数据库)和缓存更新策略3(先更新数据库,再删除缓存)都存在的一个问题,如果删缓存失败了怎么办,那不是会有不一致的情况出现么。比如一个写数据请求,然后写入数据库了,删缓存失败了,这会就出现不一致的情况了。这也是缓存更新策略2(先删除缓存,再更新数据库)里留下的最后一个疑问。

6.5、如何解决?

提供一个保障的重试机制即可,这里给出两套方案。

方案一:

流程如下所示:

(1)更新数据库数据;

(2)缓存因为种种问题删除失败;

(3)将需要删除的key发送至消息队列;

(4)自己消费消息,获得需要删除的key;

(5)继续重试删除操作,直到成功;

然而,该方案有一个缺点,对业务线代码造成大量的侵入。于是有了方案二,在方案二中,启动一个订阅程序去订阅数据库的binlog,获得需要操作的数据。在应用程序中,另起一段程序,获得这个订阅程序传来的信息,进行删除缓存操作。

方案二:

流程如下图所示:

(1)更新数据库数据;

(2)数据库会将操作信息写入binlog日志当中;

(3)订阅程序提取出所需要的数据以及key;

(4)另起一段非业务代码,获得该信息;

(5)尝试删除缓存操作,发现删除失败;

(6)将这些信息发送至消息队列;

(7)重新从消息队列中获得该数据,重试操作;

备注说明:上述的订阅binlog程序在mysql中有现成的中间件叫canal,可以完成订阅binlog日志的功能。至于oracle中,博主目前不知道有没有现成中间件可以使用。另外,重试机制,博主是采用的是消息队列的方式。如果对一致性要求不是很高,直接在程序中另起一个线程,每隔一段时间去重试即可,这些大家可以灵活自由发挥,只是提供一个思路。

七、总结

本文其实是对目前互联网中已有的一致性方案,进行了一个总结,希望大家有所收获。

参考文章:

https://blog.csdn.net/u010870518/article/details/80389101?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-3-80389101.nonecase&utm_term=%E5%BA%94%E7%94%A8%E5%8F%8C%E5%86%99%20%E6%96%B9%E6%A1%88

缓存更新的套路

win10 讲述人如何关闭

鼠标移过,win10会自动语音读出鼠标hover 的文字,烦的不行,这是我第二次触发此功能了,发现已经忘记上次出现是怎么解决的了,实在不喜欢一个问题要被坑两次,证明坑的不深刻,这次我又百度了好久才搜到解决方案,以免忘记,先记录一下。不希望犯第三次或是查第三次,原因: 快捷键win+ctrl+enter触发,

如何关闭讲述人功能:

开始->设置->轻松使用->讲述人, 关闭

唐宋八大家之苏轼

一直很喜欢苏轼,前段时间把苏轼相关的书籍看了个遍,看了林语堂先生写的《苏轼传》,无论是苏轼的《定风波》,还是苏轼的《念奴娇赤壁怀古》,亦或是《江城子》,都是千古名作,都很喜欢。一直想写一篇关于苏轼的文章,由于工作太忙,一直拖到了今天,下面来聊一下苏轼:

苏轼,字子瞻,号东坡居士,四川眉山人,(四川这个地方人杰地灵,印象中除了苏轼之外,陈子昂,杨慎也都是四川籍,陈子昂就是写念天地之悠悠,独怆然而涕下的那位,相信看过还珠的小朋友都不会陌生),(杨慎呢,写过一首很有名的词,滚滚长江东逝水,浪花淘尽英雄,没错,三国演义主题曲的词,就是杨慎写的),苏轼,北宋文豪,唐宋八大家之一(唐宋八大家,苏家占位其三,真是了不起),其诗、词、赋、散文均成就极高,且擅长书法绘画,是中国文学艺术史上罕见的全才,韩愈说:千里马常有,而伯乐不常有,同理,天才常有,而全才不常有,(这个世界上很少能有全才,如果有,那他便是人中之王(全)),李白,可谓是个天才,擅长写诗,但是文呢,比起他的诗还是差远了,李白主要擅长绝句,歌行和古风;杜甫律诗写的好,七律无人能及,但是杜甫画画不行;王维,诗画双绝,但是书法相较书画,还是要差一点的;所以,要想样样精通,其实很难,人的精力和悟性有限,老天爷很公平,打开一扇门的同时,就会关闭一扇窗,但是老天爷遇到苏轼,非常慷慨,给他打开了很多扇门窗,苏轼可以说是中国文化史上难得一见的全才,无论诗词文赋,有宋一代,苏轼都是一面旗帜,先说诗,北宋,苏黄(黄庭坚)并称,南(两)宋苏陆(陆游)并称,无论苏黄还是苏陆,苏东坡这面旗帜都是在的,欧阳修诗文革新运动的旗帜就是交给了苏轼,再说文,苏轼,唐宋八大家之一,这个八大家就是指古文八大家,所以苏轼的文也很了不起,(欧阳修,北宋文坛盟主,当初苏轼科举考试的主考官,苏轼的作文题目是《刑赏忠厚之至论》看到苏轼的文章,惊为天人,说:“老夫当避路,放他出一投地”),从这能看出两点,其一,苏轼的文章水平很高,其二,欧阳修的胸襟,苏东坡年少中第,名扬天下,他的清醒与坚持,导致他被困于党争,屡遭贬黜,仕途之路走的异常艰辛,“问汝平生功业,黄州惠州儋州”, 是他对自己人生的总结。(42岁被贬黄州,59岁被贬惠州,62岁被贬儋州)苏轼终年活了64岁。

苏轼,我们先说一下他的名字,苏轼和苏辙的名字都很有意思,一个是车把手(轼),一个是车轱辘印(辙),苏洵在《名二子说》里有解释到为什么给两个儿子起这么个名字:苏轼(车把手),为什么叫轼呢?说一辆车子有轮子,轮子有用;轮上有车幅,车幅有用;车上有车盖,车盖有用;这都是最有用处的几个部件,而有个小部件好像没太大的用处,叫什么呢,叫轼,就是车子前方有一个横木,你要坐在车子里,有时候车子颠簸的比较厉害,抓一把那横木,但大多数情况下那个横木没什么用处,可是你要说少了这个横木,车子的结构就不完整了。苏洵说,知道为什么我给你起苏轼这个轼字吗,希望你像这个轼一样不要那么显山露水,不要那么锋芒毕露;为人应该老老实实、安守本分,你有才华,你也给我憋到肚子里,一点一点地渗透出来,儒家重礼仪要瞻前顾后,所以苏轼又字子瞻;而苏辙性格沉稳一些,天下的车没有不顺着辙走的,但谈到车的功劳,车轮印从来都不参与其中。即使这样,车毁马亡,也不会责难到车轮印上。这车轮印,是能够处在祸福之间的,所以取辙是让其尽管大胆的向前冲,兄弟俩性格互补,相互扶持。

说完苏轼的名字,我们来说说苏轼的情感生活,总要八卦一下古人的生活,苏轼的一生恰好遇到三个女人,很巧的是三位女人都姓王,王弗,王闰之和王朝云。也许苏轼正好就是那三横一竖王当中的竖吧。林徽因有首名作《你是人间的四月天》,诗中写到,你是爱,是暖,是希望,你是人间的四月天。而在苏轼心中, 王弗,王闰之和王朝云,分别代表了爱,代表了暖,代表了希望。王弗是苏轼的结发之妻,我们学生时代学过的悼亡词《江城子》十年生死两茫茫,不思量,自难忘,就是苏轼为王弗而写,可见感情之深。王弗与苏轼生活了十一年后病逝。苏轼依父亲苏洵言“于汝母坟茔旁葬之”,并在埋葬王弗的山头亲手种植了三万株雪松以寄哀思。又过了十年,苏轼为王弗写下了被誉为千古悼亡词之首的《江城子》;苏轼的第二任妻子叫王闰之,是王弗的堂妹,在王弗逝世后第三年嫁给了苏轼。她比苏轼小十一岁,自小对苏轼崇拜有加,生性温柔,处处依着苏轼。王闰之伴随苏轼走过了他人生中最重要的25年,历经乌台诗案,黄州贬谪,在苏轼的宦海沉浮中,与之同甘共苦。也许王闰之没有王弗那种才情,但确是苏轼人生最沉郁顿挫之时那一丝温暖;苏轼的第三任妻子是苏轼的侍妾王朝云,比苏轼小二十六岁。在他最困顿的时候,王朝云一直陪伴其左右。王朝云是苏轼的红颜知己,苏轼写给王朝云的诗歌最多,称其为“天女维摩”。但不幸的是,朝云也先于苏轼在惠州病逝。朝云可以说是苏轼的红颜知己,最懂苏轼,苏轼曾为朝云写过一副楹联“不合时宜,惟有朝云能识我;独弹古调,每逢暮雨倍思卿”。这个是有典故的,具体记不太清了,大意是苏轼问一群侍妾,自己肚子里装的是什么?有人说是才学,有人说是文章,唯独朝云说先生肚子里装的是一肚子的不合时宜(因为当时的苏轼既不赞同王安石的新法变革,又抨击旧党执政后的政治腐败,因此不容于新旧两党)。所以王朝云是苏轼人生当中的红颜,也是苏轼人生当中的希望。

说完苏轼的情感,再聊一下苏轼的诗文,苏轼自评自己的文章:常行于所当行,常止于不可不止,如是而已。该走的地方走,该停的地方停,文气贯穿,毫无窒碍。苏轼写下了很多名篇,除了上面说的《定风波》,《江城子》之外,还有《喜雨亭记》《赤壁赋》《凌虚台记》等等很多很多,苏东坡开辟了豪放词一派,豪放词的代表人物是苏辛(辛弃疾)。苏轼一生坎坷,知杭州,知密州,在密州的时候,一首转变词风的关键作品出现《江城子.密州出猎》

老夫聊发少年狂,左牵黄,右擎苍(当初看三生三世十里桃花的时候一出现擎苍,我总想到这句),锦帽貂裘,千骑卷平冈,为报倾城随太守,亲射虎,看孙郎。酒酣胸胆尚开张,鬓微霜,又何妨,持节云中,何日遣冯唐,会挽雕弓如满月,西北望,射天狼。《江城子.密州出猎》

苏轼在贬官外放经历更大的人生挫折–乌台诗案之后,苏轼作为罪官被流放黄州,在黄州,苏轼写下的千古名作《念奴娇赤壁怀古》

大江东去,浪淘尽,千古风流人物,故垒西边,人道是,三国周郎赤壁,乱石穿空,惊涛拍岸,卷起千堆雪,江山如画,一时多少豪杰,遥想公瑾当年,小乔出嫁了,雄姿英发,羽扇纶巾,谈笑间,樯橹灰飞烟灭,故国神游,多情应笑我,早生华发,人生如梦,一樽还酹江月。《念奴娇》

《念奴娇》这首词算是苏轼的巅峰之作,苏东坡将词抬上了和诗文一样的地位。除了《念奴娇》和《密州出猎》之外,个人更喜欢苏轼的《定风坡》

莫听穿林打叶声,何妨吟啸且徐行,竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生
料峭春风吹酒醒,微冷,山头斜照却相迎,回首向来萧瑟处,归去,也无风雨也无晴。
《定风坡》

《定风坡》大概是我最喜欢的一首词了。除此之外,本人还喜欢《临江仙》

夜饮东坡醒复醉,归来仿佛三更,家童鼻息已雷鸣,敲门都不应,倚杖听江声。
长恨此身非我有,何时忘却营营,夜阑风静縠纹平,小舟从此逝,江海寄余生。

长恨此身非我有,何时忘却营营,这何尝不是大多数人的写照呢?

讲了这么多苏东坡的诗文,最后总结下这位大文豪。他诗词文赋样样精通,亦是北宋四大书法名家之一(苏黄米蔡,想起深圳羊台山,还有米芾的刻字),同时也是个美食家,这让我想起文艺复兴时期的达芬奇(达芬奇在各个领域都颇有成就,无论是解剖学,土木工程,光学,流体力学,亦或是美术绘画,画鸡蛋,哈哈),苏轼和达芬奇一样都是个全才。他是一个达则兼济天下,穷则独善其身的知识分子。他是一个太上立德,其次立功,其次立言追求“三不朽”的知识分子。他同时是一个为天地立心,为生民立命,为往圣继绝学,为万世开太平的知识分子的楷模,他身上有着陈寅恪那种“独立之精神,自由之思想”。

《隐秘的角落》犯罪分析

最近有一部剧非常火,很多小朋友都推荐我看《隐秘的角落》,确实是近两年来比较良心的国产剧。最近我又比较喜欢罗翔老师的普法视频,其中一期正好分析了《隐秘的角落》当中的法律问题,特此记录下(以下是罗翔老师视频当中的内容)。

这部剧当中的两个人物,一个叫朱朝阳,一个叫张东升,他们的名字都向往着光明,但他们最终却被自己内心的黑暗所吞噬,也许我们很多人都是这样,我们向往光明,但却时常被我们内心的黑暗所吞噬,所以《礼记.大学》当中有一句:君子慎独,什么意思呢? 意思是说在闲居独处无人监督之时,更须谨慎从事,自觉遵守各种道德准则.黑夜给了我黑色的眼,我却用它去寻找光明.写这首诗的诗人顾城,最终把自己的妻子杀害.他陷在黑暗中无力自拔.也许这是很多人的真实写照.那么在本剧中有许多的法律问题值得讨论.

第一个法律问题就是敲诈勒索:故事当中,三个小孩(朱朝阳,普普和严良)在六峰山景区游玩时,无意当中拍到了张东升将其岳父岳母推下山崖的画面.借此来要挟张东升索要30w元.“敲诈勒索”是指掌握了别人的把柄,以这个把柄相要挟,让别人陷入恐惧之中.并出于恐惧而处分财物.这就是一种标准的敲诈勒索.敲诈勒索它有三档量刑:1.数额较大这个是三年以下.2.数额巨大是三到十年.3.数额特别巨大是十年以上.而在本案中30w其实就卡在数额特别巨大的这样一个起点了.当然在剧中他最终拿到的是三万.三万就可以卡在数额巨大的这样一个起点.但是司法解释的规定:多少钱叫做数额巨大呢?3w到10w之间.各省市自治区在这个地方来进行酌定.但在本案中有个非常非常有趣的问题.敲诈勒索是让别人陷入到恐惧之中并基于恐惧要交付财物.而司法实践中经常有一种情况:比如说你敲诈我,但是我根本不恐惧.你一敲诈我,我就可以抓现形.所以你给我编了很多很多,哎呀说你看看你这个绯闻那个绯闻,你不给我钱,我就在网上公布.我就告诉谁谁谁.哎呀我装着很害怕,我说我很害怕好害怕,你赶快把卡给我,我把钱打给你.但我打到他卡上,我立即去报警,因为我就想立马抓现形,我跟警察说:他敲诈我,钱也到他卡上了,得把他抓起来.当然,他构成犯罪是毫无疑问的.但是这不构成敲诈勒索的既遂,为什么呢?因为被害人并不是因为陷入恐惧而交付财物.而是基于其他目的而交付财物.他是希望让这个人被抓现形坐牢.所以很明显行为人主观上想敲诈,但客观上他的恐吓跟对方的恐惧没有因果关系.这是本剧当中的第一个问题:敲诈勒索.

第二个问题是关于不作为的犯罪问题:就是关于这个求助义务的问题,按照剧情的介绍,当然剧情有很多种解读,如果按照剧情的解读之一,当普普去找晶晶理论的时候,在争吵的过程中,晶晶陷入到一个危险境地,最后这个晶晶坠落.如果坠落的时候,她还拽着窗台,那么请问在这种情况下,朱朝阳(晶晶同父异母的哥哥)有没有救助义务?甚至包括普普(与晶晶争吵的女孩)有没有救助义务?这要说到先前行为, “先前行为就是先行行为,是指行为人实施了某种行为而使刑法所保护的社会关系处于危险状态,使行为人负有防止或者排除这种危险发生的义务 “,所以先前行为必须是你的行为让对方处于危险之中,而你的行为必须是一种法律所禁止的行为,而不是一种法律所容忍的行为,罗翔老师在上课的时候,经常举例子说:”我们两人分手了”,女的说:你不能跟我分手,你要是跟我分手,我就死给你看,我说:你还别吓我,你去死呀,你怎么不去死呀,她拿着一瓶农药就喝了,那么在这种情况下,能不能理解为先前行为?我们认为是不能理解为先前行为的,因为分手虽然有危险,但这种危险是社会生活所允许的危险.所以在剧情中,发现两个小孩的争吵,争吵的行为也是社会生活所允许的一种危险,所以争吵并没有创造对方陷入法律所禁止的危险之中,所以当这个晶晶她站到危险之处,最后坠落,这个危险其实是她自己所创造的.既然是自己所创造的,那么其他人在法律上没有救助的义务.但是这里面又出现了第二个问题,因为在本案中,朱朝阳是晶晶同父异母的哥哥,当你的妹妹坠落时,你的哥哥有没有法律上的救助义务呢?如果孩子坠落,父母是有法律上的救助义务的,但是妹妹坠落,哥哥在法律上是没有救助义务的.刑法是对人最低的道德要求.在道德上,哥哥当然有救助妹妹的义务,但是在刑法上没有.当哥哥看到妹妹掉到河里,哥哥扔一个救生圈就可以把妹妹救上来,但是哥哥就是不救,因为哥哥想起平时妹妹集父母万千宠爱于一身,自己非常非常郁闷,说你也有今天,哥哥的行为十分恶心,但是在法律上构不成犯罪.剧中的朱朝阳就没有救下妹妹,相反,按照剧情的解读,很有可能是朱朝阳把晶晶推了下去(如果真是这样,那就是故意杀人罪),至少原著当中是朱朝阳把朱晶晶推下去的.

第三就是关于片面教唆问题,剧中有一个情节,是朱朝阳故意的让张东升听到了他和严良的对话,让张东升误以为有一个复制的视频内存卡(犯罪证据)在严良手上,想借张东升之手,除掉严良,这其实是一种典型的借刀杀人.这属于刑法理论中的片面教唆问题.片面教唆是指我创造了你的犯意,你以为你的杀心是你自己起的,其实是他人在借刀杀人.他的犯意是单向交流,不是双向的.对于片面教唆有多种处理方式,个人比较接受还是间接正犯来加以处理.就是我把你当成了一把枪.我借刀去杀人,你不知道我的存在,但是我知道我的存在,直接构成故意杀人罪的间接正犯( 间接正犯,又称“间接实行犯”,“直接正犯”的对称。是指行为人以自己的犯罪意图,利用无责任能力人的人或无犯罪意思的人实施犯罪行为,以达到自己的犯罪目的的人

当然在《隐秘的角落》这部剧当中,正如它的名字一样,我们每个人的内心也许都存在这样隐秘的角落,人心隐藏着整个世界的败坏,张三(罗老师的视频经常是举张三犯了xxx)存在于我们每个人的内心之中,我时常在想,如果是你,如果是我,我们会不会也陷入这种犯罪当中,我们有没有可能遏制我们内心的黑暗呢?所以很多时候不要过于高看自己,不要把自己想象的太光明太高尚,我们时常要警惕我们内心的幽暗,我们远比我们想的更加可怕.

苏格拉底曾经问过一个问题,如果只有两个选项,一边是承受不义,一边是行不义,你更愿意选哪个选项呢?

清华731分学霸揭露一个真相:别抱怨读书苦,那是你看世界的路

--读书是你此生所受的最轻的苦

摘自:电子课本网, 作者: 三立书会 ; 来源:三立书会(ID: sanlishuhui) 原文章链接: https://mp.weixin.qq.com/s/pZDqY58ZSphG3NBNo0vKsw

2019年的清华大学开学典礼上,校长邱勇点了四名优秀新生,其中就有来自云南的731分寒门学霸林万东。

林万东出生在云南宣威市阿都乡的一个小山村,那里是中国深度贫困地区。由于父亲有腰伤,无法干重活,全家的经济来源都靠母亲在昆明的一家工地搬砖背沙……如果不是因为读书,林万东可能一辈子都走不出云南;如果不是因为读书,他可能也会像父母一样一辈子打工;如果不是读书,他甚至没有机会改变自己的命运。
都说穷人家的孩子早当家,所以深知生活困苦的林万东不仅明白读书是改变人生的最好方法,他更明白,读书之苦是人生中最容易咽下的苦。

  • 条条大路通罗马 读书却是最短的捷径

一代名臣曾国藩,出身在一个穷苦的农民家庭,他自身的天赋不高,甚至可以说有点儿愚笨。但是他却通过读书,一步步从秀才奋斗为进士,又由进士被点为翰林。

后来又因为读书,修身养性,改变了此前没有眼界心胸和格局的状态,不仅成为一代“完人”,而且也给后世之人带来很多教育意义。

知识可以改变命运,读书是最简单的捷径,古往今来,皆是如此。

很多人因为年少无知,上学时并没有意识到学习的重要性,没有好好读书,也没能拿到一个好的学历,最后平白走了很多弯路,常常是脏活累活干了个遍,饱尝人间疾苦后才悔不当初。

正如白岩松所说:“孩子,除了上学,真是没有其他的路能走,考试不是唯一的路,却是最公平的那条路,不读书,你拿什么和别人拼?”

的确,人生之中众多,读书确实不是唯一的出路。而有些路眼下看上去也的确平坦又轻松,似乎可以很轻松就能抵达远方。我们也常说,条条大路通罗马,但是,最后你却会发现,读书却是最好走的那条捷径,也是人生所受最轻的苦。

  • 在所有的人生之苦中 读书是最轻的苦

常听有人这样说,如果遇到孩子不好好读书的时候,你就带他去四个地方:长途汽车客运站,火车站,高铁站和飞机场。

这四个地方,分别代表着不同的生活层次。而读书,最终将会引领我们抵达不同生活层次的通道。

曾看到过一个在网上热传的视频,一位小学生抱怨读书太苦太累了,连续三天没有完成作业,所以被父亲“惩罚”不读书只能回乡挑粪。虽然这个教育看起来有点另类,但却让孩子明白了一个道理:在人生所有要承受的苦难里面,读书之苦其实是最轻的,而且也是最体面最容易收获的。

唯累过,方知闲,唯苦过,方知甜。读书也是如此,读书虽苦,然而终究有一天你会明白:幸而数载寒窗苦,自此阡陌多暖春。

正如马云在《不吃苦,你要青春干嘛》这篇演讲中说的:“当你不去拼一份奖学金,不去过没试过的生活,整天挂着QQ、刷着微博、逛着淘宝、玩着网游,干着我80岁都能做的事,你要青春干嘛?”

千万别在该奋斗的年纪选择安逸,也千万别在该读书的时候选择放弃。能够苦读的岁月,是最无忧无虑的时光,也是此生所承受的最轻的苦。

当然,也是所谓“寒门”子弟突破阶层改变命运和圈子的最好方式。

  • 唯有读书 才能最快摆脱现有的环境

当年退学的韩寒,如今已成为作家,也算取得了不错的成就,可是他到了中年后,却告诉我们:不建议在大学前离开学校。

韩寒还曾坦言:“无论你的家庭,你的父母从事什么工作,你只要努力读书,最终成为科学家、院士、教授、公司高层、成功商人、政府高官、优秀艺术家等等等等,都是有着不小概率的。”

之前网上曾盛传两张互联网圈的大佬合影,他们每一个无一例外,都是学霸精英。

就像一个网友曾说的:这个社会,正在经历你跑步都跟不上的时代,而你可能大把时间正在荒废掉。而读书,可能是这个世界上你能抓住的为数不多的,能够提升自己生活圈子的方式。

读书这条路,它既不看重出身,甚至也不看重天赋,只看重努力和付出。只要你想,便可以随时徜徉在知识的海洋中,汲取养分。只要你付出,就总会有收获。

作家三毛告诉我们:读书多了,容颜自然改变,许多时候,自己可能以为许多看过的书籍都成了过眼云烟,不复记忆,其实他们仍是潜在的。在气质里,在谈吐上,在胸襟的无涯。

读书,不但可以改变你的气质,还能够提升你的格局。而知识,也是帮助我们人生逆袭的最有效的工具。你读过的书,正在潜移默化地影响着你,并可能改变你的一生。

寒窗苦读,可以获得更好人生的敲门砖,也让我们的视野和人脉更加广阔。

  • 读书虽苦 却可以更好地选择自己想要的人生

7月23日,华为总裁办发布了一封引起热议的邮件,宣布对8位2019届博士毕业生实行年薪管理制度,其中就有两名寒门学子。其中最高的年薪达到了200万,而保底的年薪也有89.6万。

这就是当今现实的生活中,活生生用知识改变年薪、文化改变命运的例子。读书,不仅帮助我们打开更宽广的世界,还让我们拥有了更好的自己和更多的选择机会,人生也因此而拥有了更多的可能。

著名作家龙应台曾告诉自己的儿子:我要求你读书用功,不是因为我要你跟别人比成就,而是因为,我希望你将来拥有更多选择的权利,选择有意义、有时间的工作,而不是被迫谋生。

读书无用,学历不重要,就是这个世界上最大的谎言。

但为什么大多数人宁愿吃生活的苦,也不愿吃学习的苦呢?知乎上点赞最高的答案是:大概是因为懒。学习的苦需要主动去吃,生活的苦,你躺着不动它就来了

可当我们经历了生活的苦难和考验之后,就会发现,在学校读书的时候,才是人生之中最美好的时光,而读书之苦,也着实是人生所承受最轻的苦。

所以孩啊,别再抱怨读书苦,读书才能照亮你看世界的路,并且只要你足够努力,就能拥有比你的起点更高的生活。

sublime 常用的不易记的正则

Sublime 经常用ctrl+H , 然后用正则匹配Find all, 一键Replace all

  • 替换非包含xxx的字符行
^(?!.*母婴).+ //选中不含"母婴"字符的行
  • 匹配空白行
\s+$ //匹配空白行
  • 在行首插入某个字符
^ //匹配行首 (Find All)
  • 在行尾插入某个字符
$ //匹配行尾 (Find All)

浏览器默认打开毒霸网址解决方案

浏览器默认网址被毒霸网址劫持,试了各种方法,网上说的也没啥鸟用,用QQ电脑管家,保护浏览器也不管用,最可气的网上让我下载个毒霸,然后用毒霸的百宝箱,保护网页不被篡改,搞笑,根据利益分配原则,就是毒霸搞的鬼。打死不装毒霸,什么年代了,还有人做病毒。最多出点广告,赚点广告点击量。

最后说下如何解决这个问题的,发现电脑不知道什么时候装了驱动精灵这个软件,查了下驱动精灵和毒霸一般是捆绑软件。于是把驱动精灵卸载,卸载完再次试了下,首页不再出现毒霸,完美解决。