摘要: 事务分为4个等级: 1.read uncommitted(未提交读) :无法避免脏读、不可重复读、虚读(幻读) 2.read committed (提交读) :可以避免脏读 3.repeatable committed(可重复读) :避免脏读、不可重复读 4.serializable(序列化) :避 阅读全文
posted @ 2017-03-03 21:00 qing0506 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 采用php+redis,简易的实现文章发布系统,用户投票,文章分组,分页排序。 redis是一个高性能的key-value存储系统,最为常见的5大类型:string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型),和memcache区 阅读全文
posted @ 2017-03-03 20:54 qing0506 阅读(1094) 评论(0) 推荐(0) 编辑
摘要: 对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:1. 什么是TCP/IP、UDP?2. Socket在哪里呢?3. Socket是什么呢?4. 你会使用它们吗?什么是TCP/IP、UDP? TCP/IP(Transmission 阅读全文
posted @ 2017-01-23 14:39 qing0506 阅读(1042) 评论(3) 推荐(1) 编辑
摘要: Generator是PHP 5.5加入的新语言特性。但是,它似乎并没有被很多PHP开发者广泛采用。因此,在我们了解PHP 7对Generator的改进之前,我们先通过一个简单却显而易见的例子来了解下Generator究竟为我们解决什么问题。 一千万个整数的数组 如果我们要“创建一个指定元素个数的数组 阅读全文
posted @ 2017-01-06 11:41 qing0506 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 什么是缓冲区(buffer)? 简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题,如果有兴趣,可以在网山找下资料. 其实缓冲区最本质的作用就是,协调高速CPU和相对缓慢的IO设备(磁盘等)的运作. PHP在执行的时候,在什么地方 阅读全文
posted @ 2016-12-28 11:43 qing0506 阅读(2744) 评论(0) 推荐(0) 编辑
摘要: PHP实现HTTP断点续传的方法。 阅读全文
posted @ 2016-12-28 10:49 qing0506 阅读(9631) 评论(1) 推荐(0) 编辑
摘要: 1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领码,在没有加锁限制的情况下,用户则可以使用同一个换领码同时兑换到多张优惠券。 伪代码如下: if A(可以换领) B( 阅读全文
posted @ 2016-12-28 10:30 qing0506 阅读(424) 评论(0) 推荐(0) 编辑
摘要: mysql中的in语句是把外表和内表作hash 连接,而exists语句是对外表作loop循环,每次loop循环再对内表进行查询。一直大家都认为exists比in语句的效率要高,这种说法其实是不准确的。这个是要区分环境的。 如果查询的两个表大小相当,那么用in和exists差别不大。 如果两个表中一 阅读全文
posted @ 2016-12-21 08:58 qing0506 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 一、锁的种类 MySQL中锁的种类很多,有常见的表锁和行锁,也有新加入的Metadata Lock等等,表锁是对一整张表加锁,虽然可分为读锁和写锁,但毕竟是锁住整张表,会导致并发能力下降,一般是做ddl处理时使用。 行锁则是锁住数据行,这种加锁方法比较复杂,但是由于只锁住有限的数据,对于其它数据不加 阅读全文
posted @ 2016-12-20 11:53 qing0506 阅读(265) 评论(0) 推荐(0) 编辑
摘要: MySQL索引作为数据库优化的常用手段之一在项目优化中经常会被用到, 但是如何建立高效索引,有效的使用索引以及索引优化的背后到底是什么原理?这次我们深入数据库索引,从索引的数据结构开始说起. 索引原理 索引为什么能提高查询效率?当我们有一个索引index(a)之后,写一个查询语句where a = 阅读全文
posted @ 2016-12-19 17:40 qing0506 阅读(371) 评论(0) 推荐(0) 编辑