Golang包导入的执行顺序
逛Stackoverflow的时候,发现了一个很有趣的话题:When is the init() function run?init()函数是什么时候执行的,由此,引出了一个问题:Golang在导入包的时候,各个部分的执行顺序是什么。答案:import --> const --> var --> init()后面有大佬也给出了一张图,我觉得很经典:测试代码:package ...
逛Stackoverflow的时候,发现了一个很有趣的话题:When is the init() function run?init()函数是什么时候执行的,由此,引出了一个问题:Golang在导入包的时候,各个部分的执行顺序是什么。答案:import --> const --> var --> init()后面有大佬也给出了一张图,我觉得很经典:测试代码:package ...
对于使用Redis作为数据库的缓存,我们一般会有以下流程查询缓存是否存在数据若存在数据则返回,若不存在数据,查询数据并更新缓存后返回对应如下流程图:这种流程分别可能这几种问题问题:缓存击穿、缓存穿透、缓存雪崩因此,本文分别探讨这几种问题并给出部分的解决方案,这也是经典的面试题了,在这里稍做记录。缓存击穿简介缓存击穿,是指在某个时间点同时访问一个已经过期的key时,因为某些原因,比如复杂SQL...
概念如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功要么同时失败。操作开始事务:START TRANSACTION回滚:ROLLBACK提交:COMMIT事务提交的两种方式自动提交MySQL默认自动提交一条DML(增删改)语句会自动提交一次事务手动提交先开启事务再提交修改事务的默认提交方式查看默认提交方式:SELECT @@aucocommit;1代表自动提交,0代表手动...
约束概念对表中的数据进行限定,保证数据的正确性、有效性和完整性非空约束:not null非空约束:值不能为null创建表时添加非空约束CREATE TABLE stu( id INT, name VARCHAR(20) NOT NULL -- 添加非空约束 );创建表完成后,添加非空约束ALTER TABLE stu MODIFY name VARCHAR(20) NOT N...