18|为什么这些SQL语句逻辑相同,性能却差异巨大?在MySQL中,有很多看上去逻辑相同,但性能却差异巨大的SQL语句。对这些语句使用不当的话,就会不经意间导致整个数据库的压力变大。三个案例案例一:条件字段函数操作假设你现在维护了一个交易系统,其中交易记录表tradelog包含交易流水号(tradeid)、交易员id(operator)、交易时间(t_modified)等字段,先忽略其他字段。这个表的建表语句如下:CREATETABLE`tradelog`(`id`int(11)NOTNULL,`tradeid`varchar(32)DEFAULTNULL,`operator`int(11)D
安装Ubuntu18.04后,默认源在国外,可以替换为国内的源以提升访问速度参考https://mirrors.ustc.edu.cn/repogen/sudovi/etc/apt/sources.list,写入以下内容debhttps://mirrors.ustc.edu.cn/ubuntu/bionicmainrestricteduniversemultiversedeb-srchttps://mirrors.ustc.edu.cn/ubuntu/bionicmainrestricteduniversemultiversedebhttps://mirrors.ustc.edu.cn/ubu
安装Ubuntu18.04后,默认源在国外,可以替换为国内的源以提升访问速度参考https://mirrors.ustc.edu.cn/repogen/sudovi/etc/apt/sources.list,写入以下内容debhttps://mirrors.ustc.edu.cn/ubuntu/bionicmainrestricteduniversemultiversedeb-srchttps://mirrors.ustc.edu.cn/ubuntu/bionicmainrestricteduniversemultiversedebhttps://mirrors.ustc.edu.cn/ubu
本文讲讲Ubuntu18及以上版本配置IP的方法,为什么它值得一讲,因为以Ubuntu16为首的版本的配置方法已经不适用了,如果你还不知道,那本文正好get一个新技能。Ubuntu18之后版本配置方法需要使用netplan工具。对应配置文件:/etc/netplan/50-cloud-init.yaml,有的不一定是50-cloud-init.yaml这个文件,但都大同小异。修改如下:#vim/etc/netplan/50-cloud-init.yamlnetwork:version:2renderer:networkdethernets:enp10s0:dhcp4:noaddresses:[
本文讲讲Ubuntu18及以上版本配置IP的方法,为什么它值得一讲,因为以Ubuntu16为首的版本的配置方法已经不适用了,如果你还不知道,那本文正好get一个新技能。Ubuntu18之后版本配置方法需要使用netplan工具。对应配置文件:/etc/netplan/50-cloud-init.yaml,有的不一定是50-cloud-init.yaml这个文件,但都大同小异。修改如下:#vim/etc/netplan/50-cloud-init.yamlnetwork:version:2renderer:networkdethernets:enp10s0:dhcp4:noaddresses:[
开篇明义,Golang中从来就不存在所谓的“引用传递”,从来就只有一种变量传递方式,那就是值传递。因为引用传递的前提是存在“引用变量”,但是Golang中从来就没有出现过所谓的“引用变量”,所以也就不可能存在引用传递这种变量传递的方式。引用类型首先,Golang的基本数据类型是值类型,比如整数、浮点、字符串、布尔、数组及错误类型,它们本质上是原始类型,也就是不可改变的,所以对它们进行操作,一般都会返回一个新创建的值,所以把这些值传递给函数时,其实传递的是一个值的拷贝副本,这一点,基本没啥争议。而引用类型指的是它的修改动作可以影响到任何引用到它的变量。在Go语言中,引用类型有切片(slice)、
开篇明义,Golang中从来就不存在所谓的“引用传递”,从来就只有一种变量传递方式,那就是值传递。因为引用传递的前提是存在“引用变量”,但是Golang中从来就没有出现过所谓的“引用变量”,所以也就不可能存在引用传递这种变量传递的方式。引用类型首先,Golang的基本数据类型是值类型,比如整数、浮点、字符串、布尔、数组及错误类型,它们本质上是原始类型,也就是不可改变的,所以对它们进行操作,一般都会返回一个新创建的值,所以把这些值传递给函数时,其实传递的是一个值的拷贝副本,这一点,基本没啥争议。而引用类型指的是它的修改动作可以影响到任何引用到它的变量。在Go语言中,引用类型有切片(slice)、
1. 编程语言1.1. 仍然是一门语言1.1.1. 以最清晰、最容易理解的方式传递信息1.2. 代码的易读性和易理解性在软件中的重要性甚至更胜一筹2. 领域特定语言DSL2.1. 为了解决某个特定业务领域问题的一种自定义语言2.1.1. 一种小型语言2.1.2. 大多都不通用2.1.3. 为某个特定领域定制化而生2.2. 流畅式(fluentstyle)2.2.1. 链接(chaining)方法2.3. 别的底层实现细节都应该被隐藏2.3.1. 以这种方式设计的DSL才是一个用户友好的DSL2.4. 产生原因2.4.1. 沟通为王2.4.1.1. 代码应该能清晰地表达它的意图2.4.1.2.
1. 编程语言1.1. 仍然是一门语言1.1.1. 以最清晰、最容易理解的方式传递信息1.2. 代码的易读性和易理解性在软件中的重要性甚至更胜一筹2. 领域特定语言DSL2.1. 为了解决某个特定业务领域问题的一种自定义语言2.1.1. 一种小型语言2.1.2. 大多都不通用2.1.3. 为某个特定领域定制化而生2.2. 流畅式(fluentstyle)2.2.1. 链接(chaining)方法2.3. 别的底层实现细节都应该被隐藏2.3.1. 以这种方式设计的DSL才是一个用户友好的DSL2.4. 产生原因2.4.1. 沟通为王2.4.1.1. 代码应该能清晰地表达它的意图2.4.1.2.
如果说Golang是静态语言中的皇冠,那么,Goroutine就是并发编程方式中的钻石。Goroutine是Go语言设计体系中最核心的精华,它非常轻量,一个Goroutine只占几KB,并且这几KB就足够Goroutine运行完,这就能在有限的内存空间内支持大量Goroutine协程任务,方寸之间,运筹帷幄,用极少的成本获取最高的效率,支持了更多的并发,毫无疑问,Goroutine是比Python的协程原理事件循环更高级的并发异步编程方式。GMP调度模型(Goroutine-Machine-Processor)为什么Goroutine比Python的事件循环高级?是因为Golang的调度模型G