10 2022 档案
保持数据与缓存的一致
摘要:1,修改数据前,删除缓存 2,先更新数据库,再更新缓存 3,延时双删,先删除缓存,更新缓存后,在删除缓存 问题:几乎就是高并发场景产生问题 先删除缓存,别人查询数据,导致数据再次更新到数据,然后修改数据库,导致缓存数据没有更新 终极办法: 串行化,更新完数据库,更新换缓存之后,才允许别人查看数据
阅读全文
安全
摘要:1,修改id可查看别人的信息问题 2,post直接用$_POST,导致不相干的数据被修改 3,文件上传,不校验类型 //如果上传一个php文件,就炸了 //下面都是通过获取图片数据流中头部几个字节来判断图片类型的, //这样就为web_shell注入 提供了机会,木马程序只需要在头部插入相关图片类型
阅读全文
网站高并发优化策略
摘要:前端 1,前后分离 把前端代码放到cdn,优化前端代码量 2,css,js代码可以放到页面里,尽量减少单独文件 3,图片放到一个大图片里,建设服务器io 服务器端 1,使用缓存 2,优化数据库 3,使用消息队列(防止服务器卡住),防止超卖问题
阅读全文
设计模式
摘要:单例模式 <?php class sigle { protected static $ins =null; public static function getIns() { if (self::$ins==null){ self::$ins=new self(); } return self::$
阅读全文
索引
摘要:B+TREE 哈希 普通索引找id,然后通过id主键索引找数据 单列索引,多列索引,唯一索引 根节点,叶子节点,非叶子节点 聚簇索引/主键索引:需要查询的数据就在索引叶子节点内(叶子节点保存的数据是所有数据) 非聚簇索引/普通索引:通过索引找到主键id(叶子节点保存的数据是id),然后在走主键索引找
阅读全文
锁机制
摘要:悲观锁 1,读锁/共享锁 lock table t read 自己:能读,不能写 别人:能读,写等待 2,写锁/排它锁 lock table t write 自己:能读,能写 别人:读等待 解锁:unlock tables select 自动加读锁 update,delete,insert 自动加表
阅读全文
事务
摘要:原子性:事务里的操作要么全部成功,要么全部失败,undo log保证 一致性:是指数据库从一个一致性状态变到另一个一致性状态,比如a扣钱,b加钱,之后达到新的一致 隔离性:一个事务在提交或回滚前,对其他事务不可见 隔离级别: read uncommit: 读未提交,一个事务update之后,还没有c
阅读全文