摘要:
一、概述 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样, 阅读全文
摘要:
一、注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可。2.注册成功后进入首页,在 小程序发布流程->小程序开发与管理->配置服务器中,点击“开发者设置”。3.会获得一个AppID,记录AppID,后面创建项目时会用 阅读全文
摘要:
一、概念 1.HTTP协议:即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和Web服务器之间互相通信的规则,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地 阅读全文
摘要:
前言 阻塞IO(blocking IO) 非阻塞IO(nonblocking IO) IO复用(IO multiplexing) 异步IO(asynchronous IO (the POSIX aio_functions)) 前三种都是同步,只有最后一种才是异步IO。 一、阻塞IO 简介:进程会一直 阅读全文
摘要:
前言 defer是golang语言中的关键字,用于资源的释放,会在函数返回之前进行调用。 一般采用如下模式: 1 2 3 4 5 f,err := os.Open(filename) if err != nil { panic(err) } defer f.Close() 如果有多个defer表达式 阅读全文
摘要:
ORM以QuerySeter来组织查询,每个返回QuerySeter的方法都会获得一个新的QuerySeter对象。 基本使用方法: 1 2 3 4 5 6 7 8 o := orm.NewOrm() // 获取 QuerySeter 对象,user 为表名 qs := o.QueryTable(" 阅读全文
摘要:
一、go 语言 panic 报错捕获 使用 go 语言的同学在真实项目中应该经常出现空指针使用等 panic 报错,这类报错与 C++ 中的 try-catch 模块不同,go 语言会一直将当前 panic 一直从报错栈传至最外层的栈,所以很多 go 语言的架构都会在架构中 handler 的入口添 阅读全文
摘要:
一、快速排序 先用一个基准元素,将数组分成两部分,一部分比基准元素小,一部分大于等于基准元素。此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。 二、插入排序 假设前面的数已经是排好顺序的,把后面的数依次插到前面的有序数中。 三、选择排序 依次从后面选出最小(最大)的一个 阅读全文
摘要:
一、入门命令 (1)查看当前的数据库 (2)切换数据库 (3)查看当前数据库下的collection 二、创建库 Mongodb的库是隐式创建,可以use一个不存在的库,然后在该库下创建collection,即可创建库(1)创建collection (2)collection允许隐式创建 (3)删除 阅读全文
摘要:
12306抢票,票是有限的,库存一份,瞬时流量非常多,都读相同的库存,读写冲突,锁非常严重;小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万;这是秒杀业务难的地方。那我们怎么优化秒杀系统呢? 一、难点 (1)高并发用户在秒杀开始前,通过不停刷新浏览器页面以保证不会错过秒杀, 阅读全文
摘要:
一、全局配置 (1)max_connections最大连接数。默认值是151,最多2000。如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量。但是如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值。查看最大连接数 查看响应的连接数 ma 阅读全文
摘要:
一、SQL语句优化 (1)使用limit对查询结果的记录进行限定(2)避免select *,将需要查找的字段列出来(3)使用连接(join)来代替子查询(4)拆分大的delete或insert语句 二、选择合适的数据类型 (1)使用可存下数据的最小的数据类型,整型 < date,time < cha 阅读全文
摘要:
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也 阅读全文
摘要:
一、事务(Transaction)及其ACID属性 事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性:1.原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。2.一致性(Consistent):在事务开始和完 阅读全文
摘要:
一、概念 1.为什么要分表和分区?日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高 阅读全文
摘要:
一、简介 MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引 二、语句 1.unique|fulltext为可选参数,分别表示唯一索引、全文索引2.index和key为同义词,两者作用相同,用来指定创建索引3.col_name为需要创建索引的字段列,该 阅读全文
摘要:
MySQL目前主要有以下几种索引方法:B-Tree,Hash,R-Tree。 一、B-Tree B-Tree是最常见的索引类型,所有值(被索引的列)都是排过序的,每个叶节点到跟节点距离相等。所以B-Tree适合用来查找某一范围内的数据,而且可以直接支持数据排序(ORDER BY)B-Tree在MyI 阅读全文