mysql支持插件式的存储引擎。 myisam和innodb。 myisam查询速度快,只支持表锁,不支持事务。 innodb整体速度快,支持表锁和行锁,支持事务。 事务的特点:acid:原子性,一致性(事务开始和结束之间的中间状态不会被其他事务看到),隔离性(两个事务是互相隔离的),持久性(事务的操作是不会丢失的)。 隔离性:隔离级别:·Serializable (串行化):可避免脏读、不可重复读、幻读的发生。 ·Repeatable read (可重复读):可避免脏读、不可重复读的发生(innodb)。MySQL的默认隔离级别就是Repeatable read。 ·Read committed (读已提交):可避免脏读的发生。 ·Read uncommitted (读未提交):最低级别,任何情况都无法保证。 索引:b树和b+树。索引的类型。索引的命中。 分库分表。 sql注入,sql慢查询优化,msyql主从(binlog),mysql读写分离。 go语言并不提供具体的数据库驱动。原生支持连接池,是并发安全的。 mysql连接池,不用用到的时候去建立连接,可以提高效率。 必须 对rowObj调用scan方法,这样才可以释放连接。sql执行完之后,一定要close。 UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause] DELETE FROM table_name [WHERE Clause] mysql预处理,可以优化重复执行的sql操作 推荐看看jmoiron/sqlx 这个库,是个轻量级的SQL 扩展组件,在大部分的场景下,比起ORM笨重的框架和复杂的学习曲线,我更倾向这个轻量级的SQL库。可以支持转换为结构体。 不同的数据库中,SQL语句使用的占位符语法不尽相同。例如mysql是?。 我们任何时候都不应该自己拼接SQL语句!参数要进行校验 。最常见的脱库 的手段。用户输入的任何参数都要进行校验(无论前端后端) 。
sqlInjectDemo ( "xxx' or 1=1#" )
sqlInjectDemo ( "xxx' union select * from user #" )
sqlInjectDemo ( "xxx' and (select count(*) from user) <10 #" )
redis的作用:简单队列,排行榜。Memcached中的值只支持简单的字符串,Reids支持更丰富的5中数据结构类型。 Redis的性能比Memcached好很多 Redis支持RDB持久化和AOF持久化。 Redis支持master/slave模式。redis.Z(有序集合)。 nsq 分布式消息队列,支持横向扩展,而且内置了管理界面。流量削峰。把同步的操作异步化。nsqd是一个守护进程,它接收、排队并向客户端发送消息。 nsq三种角色:
nsq消息不保证有序。 go module 依赖管理,默认的版本管理工具。有了go module,没必要再从gopath下写代码了。Go modules 是 Go 语言中正式官宣的项目依赖管理工具。Go moudles 目前集成在 Go 的工具链中,只要安装了 Go,自然而然也就可以使用 Go moudles 了。 Go modules 的解决的问题之一就是“淘汰”掉 GOPATH。 go 1.7加入了context。 kafka:每个partition都是有序的。zookeeper:是一个针对大型应用提供高可用的数据管理、应用程序协调服务的分布式服务框架。