Go 并发——实现协程同步的几种方式 (www.54tianzhisheng.cn)

【简介】

前言
Java 中有一系列的线程同步的方法,go 里面有 goroutine(协程),先看下下面的代码执行的结果是什么呢?

点击查看全文 >>

@zhisheng_blog 2018-09-27 22:40分享 / 0个评论
赞过的人: 技术头条 zhisheng_blog
要不要再学学下面的文章?
MVVM+组件化+Arouter实现 (mp.weixin.qq.com)
由于不同模块,可能引用相同的依赖库,那么对于这部分共同的模块则需要提取出来做统一的管理,因此在项目的根目录创建了common.gradle。
by @code小生 22小时前 分享 查看详情
Go: 关于锁的1234 (www.felix021.com)
其实锁很适合用来做套题,比如可以这么切入:sync.Mutex 是悲观锁还是乐观锁?

有些候选人不了解它们的区别,回答靠猜,缺乏逻辑以至于我都记不住。虽然这只是一个概念性的知识,但是却很能反映候选人的工作经验,比如读多写少的并发场景,乐观锁可以减少加锁冲突带来的开销。

当然大多数人还是知道的,于是可以继续问:你有了解过锁是怎么实现的吗?

很多人都能想到:维护一个初值为 false 的变量,当一个线程加锁成功的时候,将它置为 true ,就可以保证其他线程无法再获取。

逻辑是没错,但真正的问题是:两个线程同时检查,发现它的值都是 false ,如何保证只有一个线程会把它置为 true 呢?

这样的提问让不少候选人意识到,自己其实并没有真正理解锁。
by @技术头条 2021-06-13 23:27 分享 查看详情
数据库内核的并发控制 (www.ideawu.net)
大部分程序员最先接触并发编程, 一般是从编程语言里的多线程和锁开始. 但是, 并发控制是一种广义的技术思想, 千万不可将眼光局限于编程语言所提供的锁. 将编程语言里的并发控制技术推广, 就能得到任何层面的并发控制技术.

以操作一个文件为例, 如果不做并发控制, 就会遇到数据完整性问题. 例如, 我们写入的一项数据, 对应着现实对象, 如果不做并发控制, 那么可能读到的时两项数据的混合体, 或者只读到一项数据的部分.
by @技术头条 2021-06-13 22:42 分享 查看详情
无需升级系统,Win10更新方式大调整! (mp.weixin.qq.com)
今年6月,安装Win 10版本2004后,你可能会注意到该操作系统包括“ Windows Feature Experience Pack(功能体验包)”这个项目。
by @code小生 2021-06-06 15:01 分享 查看详情
使用Nginx的Basic Auth认证实现不同的登录用户内容隔离 (xnow.me)
上传和下载文件是企业经常要面对的场景,本文提供了一个新思路,使用企业具备的现有工具(Linux和Nginx),不需要安装任何其他软件,可以快速建立一个简单、可靠、带认证和用户隔离的文件上传下载系统。
by @技术头条 2021-05-28 23:00 分享 查看详情
PHP FFI详解 - 一种全新的PHP扩展方式 (www.laruence.com)
随着PHP7.4而来的有一个我认为非常有用的一个扩展:PHP FFI(Foreign Function interface), 引用一段PHP FFI RFC中的一段描述:For PHP, FFI opens a way to write PHP extensions and bindings to C libraries in pure PHP.

是的,FFI提供了高级语言直接的互相调用,而对于PHP来说,FFI让我们可以方便的调用C语言写的各种库。

其实现有大量的PHP扩展是对一些已有的C库的包装,比如常用的mysqli, curl, gettext等,PECL中也有大量的类似扩展。

传统的方式,当我们需要用一些已有的C语言的库的能力的时候,我们需要用C语言写wrapper,把他们包装成扩展,这个过程中就需要大家去学习PHP的扩展怎么写,当然现在也有一些方便的方式,比如Zephir. 但总还是有一些学习成本的,而有了FFI以后,我们就可以直接在PHP脚本中调用C语言写的库中的函数了。

而C语言几十年的历史中,积累了大量的优秀的库,FFI直接让我们可以方便的享受这个庞大的资源了。
by @技术头条 2021-05-28 08:32 分享 查看详情
当 SSR 遇上 Serverless,轻松实现页面瞬开 (fed.taobao.org)
最近随着 Rax SSR 完成渲染性能 6x React 的提升,以及工程上 Serverless 发布形式的对接,我想是时候跟大家介绍下 Rax SSR 了。

SSR 的全称是 Server Side Rendering,对应的中文名是:服务器端渲染,顾名思义是将渲染的工作放在 Server 端进行。

而与之对应的是 CSR ,客户端渲染,也就是目前 Web 应用中主流的渲染模式,一般由 Server 端返回的初始 HTML 页面,然后再由 JS 去异步加载数据,然后完成页面的渲染。
by @技术头条 2021-05-27 22:30 分享 查看详情
Go反模式之越俎代庖 (colobu.com)
反模式(anti-pattern或antipattern)又叫做反面模式,指的是在实践中经常出现但又低效或是有待优化的设计模式,是用来解决问题的带有共同性的不良方法。Andrew Koenig在1995年造了anti-pattern这个词,灵感来自于GoF的《设计模式》一书。

按《AntiPatterns》作者的说法,可以用至少两个关键因素来把反面模式和不良习惯、错误的实践或糟糕的想法区分开来:
1、行动、过程和结构中的一些重复出现的乍一看是有益的,但最终得不偿失的模式;
2、在实践中证明且可重复的清晰记录的重构方案;
by @技术头条 2021-05-27 08:02 分享 查看详情
用Go撸一个二叉搜索树 (colobu.com)
前几天Redis的作者antirez说他朋友面试的时候考到排序问题,然后他说要是他也会考实现一个二叉搜索树,我说在中国某公司,据说面试直接就撸一个红黑树。不是说你技术渣,试问在座的各位有几个现在直接裸写出红黑树?

红黑树太过偏门,但是常用的二叉搜索树你能写出来吗?快排呢?堆排序呢?
by @技术头条 2021-05-27 07:54 分享 查看详情
踩坑记: Go 服务灵异 panic (www.felix021.com)
这个坑比较新鲜,周一刚填完,还冒着冷气。在字节跳动,我们线上服务的所有 log 都通过统一的日志库采集到流式日志服务、落地 ES 集群,配上字节云超(sang)级(xin)强(bing)大(kuang)的监控能力,每一条 panic log 都可以触发一个打给值班同学的电话。
by @技术头条 2021-05-27 07:53 分享 查看详情