MySQL JSON 数组查询实战:JSON_CONTAINS 用法详解与 LIKE 的本质区别
MySQL 中如何优雅地查询 JSON 数组字段(以及它和 LIKE 的区别) 很多业务表里都会有这么一个字段: 它是一个 JSON 数组,数组里是对象。 问题来了: 如果我想查出「数组中存在 uri = '/v1/xxx'」的记录,该怎么写 SQL? 再进一步: 这样写和 LIKE 有什么区别? 这篇文章把这个问题讲清楚。 -
MySQL 中如何优雅地查询 JSON 数组字段(以及它和 LIKE 的区别) 很多业务表里都会有这么一个字段: 它是一个 JSON 数组,数组里是对象。 问题来了: 如果我想查出「数组中存在 uri = '/v1/xxx'」的记录,该怎么写 SQL? 再进一步: 这样写和 LIKE 有什么区别? 这篇文章把这个问题讲清楚。 -
2008年,Russ Cox提交的初版Mutex的代码如下: ```go // CAS操作,当时还没有抽象出atomic包 func cas(val int32, old, new int32) bool func semacquire(int32) func semrelease(int32) // 互斥锁的结构,包含两个字段 type Mutex str…
reboot-cover 大多数人不是不努力, 而是在用错误的方式反复努力。 真正阻碍你改变的, 从来不是自律、执行力或方法论, 而是你早已默认却从未审视过的—— 人生操作系统。 如何用 1 天,重启你的人生 很多人觉得新年计划是个笑话。 说实话,这个判断并不完全错。 因为大多数人改变人生的方式,从一开始就走偏了。 他们之所以制定计划,并
Logic-methodology-influence 我小时候,总是被那些听起来很聪明的人吸引。 他们不一定说得很快,也不一定很幽默,但总能把复杂的问题讲得有层次、有深度。 即使当时我并不完全听懂,只要对方表达清晰、逻辑自洽,我就会下意识地尊重他们。 但那时候,我从没想过—— 我也可以成为这样的人。 我一直觉得,能把复杂问题讲清楚,是一种天赋。 而我,只是…
race 数据竞争是并发程序中最常见的,也是最难发现的并发问题,所幸的是,Go内置了在一定程度上可以发现竞争问题。你可以在测试数据竞争检测器(data race detector),或者运行程序时使用-race开启数据竞争检测器,或者在编译程序时开启,编译好的二进制程序在运行时也可以开启数据竞争检测: ```golang go test -race mypk…
因为并发编程中有竞争条件和数据竞争的问题,我们才需要将代码片段设定为临界区,通过使用Mutex等同步原语将临界区保护起来。接下来,我们来熟悉Go标准库的Mutex 的使用方法,看看它是如何保护临界区,解决竞争条件和数据竞争的问题的。 Mutex的用法 一个并发问题 有时候,我们很清楚地知道临界区或者共享资源,能主动地发现数据竞争问题;但是有时候,数据竞争问题…
一般来说,正如我们平常理解的那样,将串行程序修改为并行程序之后,其性能会得到提升。但也不是绝对的,在某些情况下,串行编程性能反而更好。 下面这个例子是快速排序的串行实现。 ```golang // 快速排序中的分区,把a分成左右两部分,左边部分小于右边部分 func partition(a []int, lo, hi int) int { pivot :=…