摘要:需求 一个用户不能重复登录. 后登录者可以踢掉前者. 设计思路: 核心概念 流程描述 用户登录的时候使用用户IP+用户表主键+Unix时间戳组成的字符串, 经过md5运算生成一个singleToken 字符串. 并且存入session. 在redis中保存登录时的 Unix时间戳,redis中保存的
阅读全文
摘要:最近初步接触redis,结合thinkphp5与redis,写了一个用户注册的基础例子,用于学习。 这个例子是结合了兄弟连的redis视频,最后两节的内容写的:https://study.163.com/course/courseMain.htm?courseId=265010 这个例子实现了以下功
阅读全文
摘要:需求 一个用户不能重复登录. 后登录者可以踢掉前者. 设计思路: 核心概念 流程描述 用户登录的时候使用用户IP+用户表主键+Unix时间戳组成的字符串, 经过md5运算生成一个singleToken 字符串. 并且存入session. 在redis中保存登录时的 Unix时间戳,redis中保存的
阅读全文
摘要:1、酒店预订怎么实现?怎么设计表 你好,我大概的说下我们的业务流程,我们的业务流程是:用户在网站浏览酒店信息,可以根据地区检索出该地区的酒店信息。列表展示酒店的信息由:酒店的名称,酒店图片,酒店位置,评论人数,评论分数以及最低入住价格。用户选中要入住的酒店进入酒店详情页面,查看酒店的介绍以及酒店的房
阅读全文
摘要:第一次写博客,哈哈,纯属用来记录一下自己工作中遇到的问题及解决办法。 昨天因为工作的需求,需要做一个后台上传TXT文件,读取其中的内容,然后导入redis库中。要求速度快,并且支持至少10W以上的数据,而内容也就一个字段存类似openid和QQ。我一开始做的时候就老套路,遍历、hset,然后就发现非
阅读全文
摘要:MySQL慢查询日志提供了超过指定时间阈值的查询信息,为性能优化提供了主要的参考依据,是一个非常实用的功能,MySQL慢查询日志的开启和配置非常简单,可以指定记录的文件(或者表),超过的时间阈值等就可以记录到慢sql了,实话讲,相比较sqlserver的trace或者扩展事件(虽然此二者的作用并非仅
阅读全文
摘要:这篇文章主要介绍扫码支付场景二。 目前有两种模式,模式一比模式二稍微复杂点,至于模式一与模式二的具体内容,流程,微信开发文档都有详细介绍,这里就不多说废话,接下来赶紧上教程! [title]下载SDK类文件[/title] Wxpay Library 并SDK文件/lib下的几个文件放置到/Thin
阅读全文
摘要:我们这里用的是即时到帐的接口,具体实现的步骤如下: [title]一、下载支付宝接口包[/title]下载地址:https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103566&docType=1具体如何下载,我就不在罗嗦了~~ 解
阅读全文
摘要:1 支付宝开放平台 支付宝手机网站支付 具体的请求参数和返回参数等相关数据 https://docs.open.alipay.com/203/107090/ 2 支付demo 下载手机网站支付相关的demo 这里的demo和APP支付提供的demo 多了一些数据.需要重新下载 https://doc
阅读全文
摘要:第一次做PHP商城项目对接微信支付接口,踩了N次坑,这也不对,那也不对,搞了很久,查了一些资料,终于实现了支付功能,小小总结一下,万一下次遇到就不用到处找资料了。 微信扫码支付 前期准备: 1、微信公众号配置,首先微信公众号上面要开通支付,并且要填写网页授权接口,填好之后呢,就是记录下公众号上的AP
阅读全文
摘要:首先,因为秒杀这个环节在商城项目中比较常见,最近写商城项目,碰到这个功能模块,于是就拿出来给大家分享一波。 难点:高并发的情况下,正常逻辑写的话数据库的库存会出现负数,对付这类问题有很多解决方案,我就不一一赘述,我这次用的是redis的队列机制。 话不多说,进入正题 三张表做测试,分别是:商品表,日
阅读全文
摘要:参与过抢购活动就知道,很明显的一点是商即便商品实际没有了也是可以下单成功的,但是在支付的时候会提示你商品没有了。 实现原理:list双向链表 使用redis队列,因为pop操作是原子的,即使有很多用户同时到达,也是依次执行.(mysql事务在高并发下性能下降很厉害,文件锁的方式也是). 此处用到了R
阅读全文
摘要:1,安装redis,根据自己的php版本安装对应的redis扩展(此步骤简单的描述一下) 1.1,安装 php_igbinary.dll,php_redis.dll扩展此处需要注意你的php版本如图: 1.2,php.ini文件新增 extension=php_igbinary.dll;extens
阅读全文
摘要:相信大家都对黑客那种只用命令行对电脑操作的风格惊呆了,其实你也可以做到。linux是一款不同于windows的操作系统,而且它是黑客、渗透人员、运维人员等等必会的。如果你想学习,小编下面整理的命令将会能够让你基础的操作它。1、命令格式命令 [-选项] [参数]说明:1)、个别命令不一定遵循这个格式2
阅读全文
摘要:抢购、秒杀是平常很常见的场景,面试的时候面试官也经常会问到,比如问你淘宝中的抢购秒杀是怎么实现的等等。抢购、秒杀实现很简单,但是有些问题需要解决,主要针对两个问题:一、高并发对数据库产生的压力二、竞争状态下如何解决库存的正确减少("超卖"问题)第一个问题,对于PHP来说很简单,用缓存技术就可以缓解数
阅读全文
摘要:1、什么事面向对象?主要特征是什么?面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。2、SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明?A、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同
阅读全文
摘要:1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在
阅读全文
摘要:当有业务需求需要一次性循环n条数据,插入或更新数据库时,如果单纯的循环,插入/更新,会消耗太多的数据库资源 一下是一种简单的解决方案 数据库的insert 是可以批量更新的,当有大量数据循环insert时,可以将数据先保留不执行插入命令,到最后一条时一次性插入,例如tp的addAll()方法; 数据
阅读全文
摘要:第一部分 首先要了解下mysql数据库的事务特征之一隔离级别: READ UNCOMMITTED(未提交读): 在READUNCOMMITTED级别,事务中的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,这也被称为脏读(DirtyRead)。这个级别会导致很多问题,从性能上来
阅读全文
摘要:php调用redis进去读写操作,大并发下会出现:读取key1,没有内容则写入内容,但是大并发下会出现同时多个php进程写入的情况,这个时候需要加一个锁,即获取锁的php进程有权限写。 思路是:设置一个锁的key,setnx是原子操作,只能一个进程写入成功,写入成功返回true(表示获取锁权限),然
阅读全文
摘要:核心技术点 前端优化 前端优化主要包括动态内容静态化,增加前端缓存。页面静态化是指将指含有大量动态元素的动态网页,如jsp、php等,转换为html静态页 面,静态页面由于不用加载动态元素,其访问速度要比动态页面快得多,可以增加访问速度,减小数据库压力;前端页面缓存在系统前端对Web服务器上的页面进
阅读全文
摘要:分表: 分表分为水平分表和垂直分表。 水平分表原理: 分表策略通常是用户ID取模,如果不是整数,可以首先将其进行hash获取到整。 水平分表遇到的问题: 1. 跨表直接连接查询无法进行 2. 我们需要统计数据的时候 3. 如果数据持续增长,达到现有分表的瓶颈,需要增加分表,此时会出现数据重新排列的情
阅读全文
摘要:数据库设计范式 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些 规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。 什么是三大范式: 第一范式:当关系模式R的所有属性都不能在分解为更基本的数
阅读全文
摘要:原始方案(失败):在每次下订单前我们判断促销商品的数量够不够,不够不允许下订单,更改库存量时加上一个条件,只更改商品库存大于0的商品的库存,当时我们使用ab进行压力测试,当并发超过500,访问量超过2000时,还是会出现超卖现象。 public function buyOne() { $shop =
阅读全文
摘要:问题描述 引起这个原因的主要因素是高并发下,我们一般设定一个缓存的过期时间时,可能有一些会设置5分钟啊,10分钟这些;并发很高时可能会出在某一个时间同时生成了很多的缓存,并且过期时间在同一时刻,这个时候就可能引发——当过期时间到后,这些缓存同时失效,请求全部转发到DB,DB可能会压力过重。 处理方法
阅读全文
摘要:1、面向对象 封装继承多态 接口、重载、抽象类、最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1、什么是类? 具有相同属性(特征)和方法(行为)的一系列个体的集合,类是一个抽象的概念2、什么是对象?从类中拿到的具有具体属性值得个体,称为对象,对象是一个
阅读全文
摘要:一、抽象类与抽象方法 1,任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。 2,定义为抽象的类不能被实例化。 3, 被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。 4,必须在子类中将抽象类的全部抽象方法全部实现才可以 <?php //
阅读全文