Turling Blog

To Be A Lean Developer!

浅谈MySQL并发控制:隔离级别、锁与MVCC

前言如果数据库中的事务都是串行执行的,这种方式可以保障事务的执行不会出现异常和错误,但带来的问题是串行执行会带来性能瓶颈;而事务并发执行,如果不加以控制则会引发诸多问题,包括死锁、更新丢失等等。这就需要我们在性能和安全之间做出合理的权衡,使用适当的并发控制机制保障并发事务的执行。 并发事务带来的问题首先我们先来了解一下并发事务会带来哪些问题。并发事务访问相同记录大致可归纳为以下3种情况: ......

Go基础系列:深入理解 context

前言这篇文章将介绍Golang并发编程中常用到一种编程模式:context。本文将从为什么需要context出发,深入了解context的实现原理,以及了解如何使用context。 为什么需要context在并发程序中,由于超时、取消操作或者一些异常情况,往往需要进行抢占操作或者中断后续操作。熟悉channel的朋友应该都见过使用done channel来处理此类问题。比如以下这个例子: 1......

Go基础系列:深入理解 channel

前言Golang在并发编程上有两大利器,分别是channel和goroutine,这篇文章我们先聊聊channel。熟悉Golang的人都知道一句名言:“使用通信来共享内存,而不是通过共享内存来通信”。这句话有两层意思,Go语言确实在sync包中提供了传统的锁机制,但更推荐使用channel来解决并发问题。这篇文章会先从channel的用法、channel的原理两部分对channel做一个较......

Go基础系列:深入理解 http server

前言对于Golang来说,实现一个简单的http server非常容易,只需要短短几行代码。同时有了协程的加持,Go实现的http server能够取得非常优秀的性能。这篇文章将会对go标准库net/http实现http服务的原理进行较为深入的探究,以此来学习了解网络编程的常见范式以及设计思路。 HTTP服务基于HTTP构建的网络应用包括两个端,即客户端(Client)和服务端(Server......

Go基础系列:深入理解 interface和reflect

前言interface(即接口),是Go语言中一个重要的概念和知识点,而功能强大的reflect正是基于interface。本文即是对Go语言中的interface和reflect基础概念和用法的一次梳理,也算是我阶段学习的总结,以期温故而知新。 interface(接口)定义在Go语言中,如果自定义类型(比如struct)实现了某个interface中的所有方法,那么就可以说这个类型实现了......

深入理解Redux中间件

掘金地址 前言最近对项目中使用的Redux中间件进行了梳理,在此过程中对Redux中间件的原理也有了较为深刻的理解。所以抽空总结了一下,也希望能给读者们带来一些启发。 这篇文章会介绍Redux中间件的工作机制,并通过源码分析来了解其原理,最后会通过一个例子介绍如何编写Redux中间件。 Redux中间件工作机制用过Redux中间件的朋友都知道redux给我们带来了强大的数据管理功能,然而Re......

深入Babel,这一篇就够了

前言既然标题说了是深入Babel,那我们就不说Babel各种用法了,什么babel-core,babel-runtime,babel-loader……如果你想了解这一部分内容,这类文章很多,推荐最近看到的一篇:一口(很长的)气了解 babel,可以说是相当详实完备了。 言归正传,这篇文章主要是去了解一下Babel是怎么工作的,Babel插件是怎么工作的,以及怎么去写Babel插件,相信你看完......

Node.js爬取科技新闻网站cnBeta

前言一直很喜欢看科技新闻,多年来一直混迹于cnBeta,以前西贝的评论区是匿名的,所以评论区非常活跃,各种喷子和段子,不过也确实很欢乐,可以说那是西贝人气最旺的时候。然而自从去年网信办出台了《互联网跟帖评论服务管理规定》,要求只有实名认证的用户,才能进行留言、评论之后,往日的活跃的的评论区瞬间沦陷,人气大跌。其实说到底,还是西贝没有跟上移动互联网的潮流,至今还止步于PC互联网时代,网页广告太......