游标(cursor)是可以从数据库检索结果集中每次提取一行记录的机制,游标的作用就是对结果集进行遍历,方便对记录进行操作。
特性
三种特性:
- 只读
不能更新它
- 非滚动
根据SQL语句确定顺序,不能向后获取记录和跳过记录
- 敏感/不敏感
敏感游标指向的是数据表,不敏感游标指向的则是临时数据表。(Mysql使用的是敏感游标)
声明游标
游标使用的变量必须在声明游标之前声明
游标(cursor)是可以从数据库检索结果集中每次提取一行记录的机制,游标的作用就是对结果集进行遍历,方便对记录进行操作。
三种特性:
不能更新它
根据SQL语句确定顺序,不能向后获取记录和跳过记录
敏感游标指向的是数据表,不敏感游标指向的则是临时数据表。(Mysql使用的是敏感游标)
游标使用的变量必须在声明游标之前声明
项目中某个定时任务执行过程中出现死锁问题,具体错误如下:
1 | Error 1213: Deadlock found when trying to get lock; try restarting transaction |
检查一下表引擎 & 事务隔离级别
1 | mysql> show variables like '%storage_engine%'; |
之前项目数据表有分表设计,现在因为业务量增长数据表数据量膨胀数倍导致单表性能不理想 … 所以希望在不影响用户使用的情况下扩展数据表(迁移)
基本分为热迁移和冷迁移两种方式
通俗的来说就是停机迁移,比如某些游戏合服维护等
优点: 操作可靠性高、数据一致性有保证、数据回滚方便
缺点: 用户体验差
有时候git项目比较大,git clone会因为各种原因中断,但是Git并不会断点续“传”再次clone又是重新来过,类似这种问题…让人很是苦恼
1 | $ error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out |
1 | $ git config --global http.lowSpeedLimit 0 // 最小速度 |
1 | $ git clone --depth=1 {repo} // 拉取最新的代码(最后一次commit) |
但这样会带来其他的小问题,就是拉下来的代码默认分支既不是master也不是其他分支 … 需要拉取完整的项目
1 | $ git fetch --unshallow // 拉取深层代码 |
Laravel框架中控制反转和依赖注入功能是怎么实现的?
其实控制反转和依赖注入是一种设计思想,它最早源于Java Spring框架设计中的机制,所以身边如果有做Java开发的小伙伴~简单聊聊就能明白许多。
依赖注入(Dependency Injection),通俗的解释是当我们构建对象时需要的参数,只要不是手动创建而是以实例对象的形式注入都可以称为依赖注入。
举个例子,一个小游戏中玩家可以创建不同的职业。
1 | // 职业接口 |
之前简单了解过Mysql的索引,今天来学习一下Mysql(InnoDB)的聚簇索引以及SQL为什么会产生回表查询?
都知道Mysql存储的数据结构是B+Tree,所以当查询数据的时候能最快找到叶子节点的检索方式时是最快的。比如:主键直接定位行记录,而有些查询需要先检索索引树找到叶子节点的主键值,再通过主键值定位行记录这种扫描2次索引树的方式就叫做回表查询。
如何确定SQL语句会不会造成回表查询?如下表:
1 | CREATE TABLE `users` ( |
2种查询方式:
网上购物看到自己喜欢的东西加入购物车然后付款,但是在付款的突然不想要了 … 往往这个订单会给一个30分钟的支付时间,时间一到就自动关闭了 所以这是怎么做到的呢?
1 | 脚本每隔一定时间就去数据表检查一下状态,是否过期需要关闭。 |
1 | 创建订单时开始计时,计时结束后直接处理关闭订单。 |
1 | 数据库建立检查事件,每隔一定时间去执行一次存储过程。 |
1 | 对于更改任何Redis Key的每个操作,都可以配置Redis将消息发布到Pub/Sub,然后订阅这些通知。 |
不多说,直接上SQL
碰上github网络抽风的时候,恰巧你又需要拉取github上托管的项目,这个时候看着2kb/s的下载速度是不是很抓狂?
打开ipaddress查询以下三个域名的ip,写到hosts文件中。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true