![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端技术
文章平均质量分 70
php【菜鸟】
革命尚未成功 同志还需努力
展开
-
后端程序员必备:书写高质量SQL的30条建议
sql 优化原创 2022-06-28 15:22:46 · 257 阅读 · 1 评论 -
订单过期 自动取消实现方案
在电商、支付等领域,往往会有这样的场景,用户下单后放弃支付了,那这笔订单会在指定的时间段后进行关闭操作,细心的你一定发现了像某宝、某东都有这样的逻辑,而且时间很准确,误差在1s内;那他们是怎么实现的呢?一般的做法有如下几种定时任务关闭订单rocketmq延迟队列rabbitmq死信队列时间轮算法redis过期监听一、定时任务关闭订单(最low)...原创 2022-06-07 16:45:07 · 2383 阅读 · 0 评论 -
Redis键空间通知
Redis键空间通知(Keyspace Notifications)Redis Keyspace Notificationshttps://redis.io/topics/notificationsRedis 是一个键值对数据库服务器,服务器中每个数据库都由 redisDB 结构表示(默认16个库)。其中,redisDB 结构的 dict 字典保存了数据库中所有的键值对,这个字典被称为键空间(key space)。而16个库,独立在各自的键空间(key space)中。键空间(key spac原创 2022-04-01 09:48:59 · 620 阅读 · 0 评论 -
水平分库分表的关键步骤和技术难点
分片技术的由来关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。在互联网行业海量数据和高并发访问的考验下,聪明的技术人员提出了分库分表技术(有些地方也称为Sharding、分片)。同时,流行的分布式系统中间件(例如MongoDB、ElasticSearch等)均自身友好支持Sharding,其原理和思想都是大同小异的。分布式全局唯一ID在很多中小项目中,我们往往直接使用数据库自增特性来生成主键ID转载 2022-03-02 15:45:40 · 194 阅读 · 0 评论 -
分库分表的几种常见玩法及如何解决跨库查询等问题
在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是,这些朋友所服务的公司业务量正在(或者即将面临)高速增长,技术方面也面临着一些挑战。让人感到担忧的是,他们系统真的就需要“分库分表”了吗?“分库分表”有那么容易实践吗?为此,笔者整理了分库分表中可能遇到的一些问题,并结合以往经验介绍了对应的解决思路和建议。垂直分表垂直分表在日常开发和设计中比较常见,通俗的说法叫做“大表拆小表”,拆分是基于关系型数据库中的“列”(字段)进行的。通转载 2022-03-02 15:44:38 · 3315 阅读 · 2 评论 -
redis中setbit(位操作)的实际应用
redis的五种数据类型相信大家都非常清楚了,任何人问你基本都能脱口而出(string,hash,list,set,zset)。如果还不清楚,建议先看看redis基础,但是还有这几种类型很多人会忽略到。比如 Setbit(位操作),GEO(地理位置信息)等等。今天我们就来淦一淦setbit,看一看实际场景中到底是怎么用的,以及有哪些优势?我们先来回顾一下setbit吧,大家知道位操作,只有两个值,0和1,8个位正好是1b,所以位操作是非常节省空间的一种操作。1Byte(B)=8bit...原创 2022-03-02 15:42:53 · 3197 阅读 · 1 评论 -
PHP 利用phpexif_read_data函数获取iPhone 手机拍摄的图片 进行翻转照片
最近业务上做有关设计人脸识别的业务 发现有的图片识别不到,查看人脸库图片是翻转的,查看具体图片信息发现是苹果设备拍摄的,为了识别成功 需要将图片进行翻转。话不多说 下面展示解决方法利用PHPexif_read_data函数获取图片信息echo "1111.jpg:<br />\n";$exif = exif_read_data('1111.jpg', 0,true);echo $exif===false ? "No header data found.<...原创 2021-11-25 09:31:32 · 409 阅读 · 0 评论 -
mysql 面试精典问题
大家好~今天给大家分享MySQL常考的面试题,看看你们能答对多少本期MySQL面试题的目录如下: 事务的四大特性? 事务隔离级别有哪些? 索引 什么是索引? 索引的优缺点? 索引的作用? 什么情况下需要建索引? 什么情况下不建索引? 索引的数据结构 Hash索引和B+树索引的区别? 为什么B+树比B树更适合实现数据库索引? 索引有什么原创 2021-11-09 14:29:52 · 277 阅读 · 0 评论 -
Laravel 使用 JWT 完成多用户认证
JWT ------ json web Token作用:1.降低耦合性,适用于前后端分离,分布式架构,取代传统的session2.较少服务器和数据库的压力JWT的结构JWT包含了使用.分隔的三部分: Header 头部 Payload 负载 Signature 签名 结构为 Header.Payload.SignatureHeader在header中通常包含了两部分:token类型和采用的加密算法。{ "alg": "HS256", "typ": "JWT"} 接下来对这部分内容使用转载 2021-10-29 11:02:34 · 478 阅读 · 0 评论 -
postgresql无序uuid性能测试
无序uuid对数据库的影响由于最近在做超大表的性能测试,在该过程中发现了无序uuid做主键对表插入性能有一定影响。结合实际情况发现当表的数据量越大,对表插入性能的影响也就越大。测试环境PostgreSQL创建插入脚本,测试各种情况的tps。数据库版本:PostgreSQL 10.4 (ArteryBase 5.0.0, Thunisoft)操作系统配置:CentOS Linux release 7 ,32GB内存,8 cpu测试参数:pgbench -M prepared -r -n转载 2021-10-29 10:51:06 · 828 阅读 · 0 评论 -
在Windows系统的环境搭建 ELK(ElasticSearch7.3,logstash,kibana)
1、安装ElasticSearch7.3一、下载ElasticSearch7.3html百度搜索ElasticSearch官网或者直接去官网下载,地址https://www.elastic.co/cn/downloads/elasticsearchgit版本7.3,windows环境github二、安装ElasticSearchide下载完毕,直接解压,进入路径bin目录下,直接双击运行elasticsearch.bat。ui首先会检测你本机的jdk环境,7.3使用的是jd.原创 2021-10-29 10:31:56 · 504 阅读 · 0 评论 -
win10环境Filebeat+Logstash+Elasticsearch+kibanan存储日志
Filebeat 是轻量级的数据收集器, 占用资源少, 支持系统很多, 是ELK 后期增加的一员。一. 从官网下载, win10 是win 64位版本下载地址:https://www.elastic.co/cn/downloads/beats/filebeat目前是7.0.1 版本。二. 把下载的filebeat-7.0.1-windows-x86_64.zip 解压我是把里面的文件夹解压到 D:\program files\ 下,然后把文件夹filebeat-7.0.1-windows转载 2021-10-29 10:15:13 · 533 阅读 · 0 评论 -
为什么MySQL用B+树做索引
索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4]中找到4这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在mysql数据库中分三类:B+树索引、Hash索引、全文转载 2021-06-22 09:02:45 · 94 阅读 · 0 评论 -
php获取某段时间内每个月的方法
php获取某段时间内每个月的方法,返回由这些月份组成的数组,具体代码如下:/*** 生成从开始月份到结束月份的月份数组* @param int $start 开始时间戳* @param int $end 结束时间戳*/function monthList($start,$end){if(!is_numeric($start)||!is_numeric($end)||($end<=$start)) return '';$start=date('Y-m',$start);$end=dat原创 2021-03-22 20:34:51 · 906 阅读 · 0 评论 -
SQL 优化极简法则
查询优化是一个复杂的工程,涉及从硬件到参数配置、不同数据库的解析器、优化器实现、SQL 语句的执行顺序、索引以及统计信息的采集等,甚至应用程序和系统的整体架构。本文介绍几个关键法则,可以帮助我们编写高效的 SQL 查询;尤其是对于初学者而言,这些法则至少可以避免我们写出性能很差的查询语句。以下法则适用于各种关系型数据库,包括但不限于:MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite 等。如果觉得文章有用,欢迎评论????、点赞????、推荐????法则一:只返转载 2020-11-04 17:23:42 · 107 阅读 · 0 评论 -
PHP 无限极分类
$data = array( array('id' => 1, 'pid' => 0, 'name' => '山西省'), array('id' => 2, 'pid' => 0, 'name' => '北京市'), array('id' => 3, 'pid' => 1, 'name' => '晋中市'), array('id' => 4, 'pid' => 2, 'name' => '朝阳区'),.原创 2020-10-17 15:45:48 · 111 阅读 · 0 评论 -
Mysql系列 子查询
子查询出现在select语句中的select语句,称为子查询或内查询。外部的select查询语句,称为主查询或外查询。子查询分类按结果集的行列数不同分为4种 标量子查询(结果集只有一行一列) 列子查询(结果集只有一列多行) 行子查询(结果集有一行多列) 表子查询(结果集一般为多行多列) 按子查询出现在主查询中的不同位置分 select后面:仅仅支持标量子查询。 from后面:支持表子查询。 where或having后面:支持标原创 2020-10-10 15:49:25 · 142 阅读 · 0 评论 -
Mysql 细说NULL导致的神坑,让人防不胜防
比较运算符中使用NULLmysql> select 1>NULL;+--------+| 1>NULL |+--------+| NULL |+--------+1 row in set (0.00 sec)mysql> select 1<NULL;+--------+| 1<NULL |+--------+| NULL |+--------+1 row in set (0.00 sec)mysql> select 1&原创 2020-10-10 15:45:59 · 286 阅读 · 0 评论 -
导致MySQL索引失效的几种常见写法
这次的话简单说下如何防止你的索引失效。再说之前我先根据我最近的经验说下我对索引的看法,我觉得并不是所以的表都需要去建立索引,对于一些业务数据,可能量比较大了,查询数据已经有了一点压力,那么最简单、快速的办法就是建立合适的索引,但是有些业务可能表里就没多少数据,或者表的使用频率非常不高的情况下是没必要必须要去做索引的。就像我们有些表,2年了可能就10来条数据,有索引和没索引性能方面差不多多少。索引只是我们优化业务的一种方式,千万为了为了建索引而去建索引。下面是我此次测试使用的一张表结构以及一...转载 2020-09-17 14:33:54 · 110 阅读 · 0 评论 -
MySQL百万级数据库优化方案
首先声明是转的,感觉写的很细,原文链接:http://simpleframework.net/blog/v/7881.html1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:.转载 2020-08-03 10:40:22 · 812 阅读 · 0 评论 -
订单相关问题
从下单开始、支付、发货,收货,每一个环节,都少不了更新订单,每一次更新又需要同时更新好几张表。这些操作可能被随机分布到很多台服务器上执行,服务器有可能故障,网络有可能出问题。那么如何才能保证订单服务的数据一致性呢?正确使用数据库的事务eg.创建订单时,要同时往订单表和订单商品表中插入数据,那这些插入数据的INSERT必须在一个数据库事务中执行,数据库的事务可以确保:执行这些INSERT语句,共赴生死!但还有很多难以发现的坑存在1 基本功能和数据表任何系统的订单服务都是独一无二的,基于不同转载 2020-05-29 10:10:43 · 1963 阅读 · 0 评论 -
PHP oss 分片上传文件
话不多说直接上代码//分片上传视频public static function fen_upload($par){ self::par($par); require EXT.'oss/src/OSS/OssClient.php'; $bucket = OSS_PREF.$par['bucket']; /** * 步骤1:初始化一个分片上传事件,获取uploadId。 */ $ossClient = new OssClient(self::.原创 2020-05-28 15:27:05 · 1691 阅读 · 0 评论 -
SQL中join的用法解析(inner join、full out join、left join)
话不多说,先上个对于各种join情况的总结图:例如有如下关系的数据:1、inner joinselect * from Table_ajoin Table_b on Table_a.id_a = Table_b.id_b2.1、full outer join等于full joinselect * from Table_a full join Table_b on Table_a.id_a = Table_b.id_b2.2、full outer ..转载 2020-05-25 16:29:17 · 538 阅读 · 0 评论 -
如何做一个对账系统
在互联网行业中只要涉及到支付,必然就会有对账的需求,几乎所有互联网公司的业务中多多少少的都会涉及到支付,大一点的公司甚至都标配有了自己的第三方支付公司,因此对账具有普遍性。对账系统是支付体系中最重要的一环,也是保证交易、资金安全的最后一道防线。在大多数的互联网公司中,一般都会有独立的对账系统来处理,比如:电商平台、互联网金融、第三方支付公司等。对账是支付系统中的一环,因此在对账前我们先了解一下相关的业务知识业务知识什么是对账传统的对账就是核对账目,是指在会计核算中,为保证账簿记录正确可靠,对转载 2020-05-25 15:54:24 · 774 阅读 · 0 评论 -
PHP操作Redis LIST ,SET, HASH 的相关命令 (一)
PHP操作Redis KEY,String 的相关命令 (二)PHP操作Redis 有序集(Sorted Set) 的相关命令 (三)1.PHP操作Redis之List1、lPush()/rPush()lPush()的语法格式是:$redis->lPush(key, value),作用是将value添加到链表key的左边(头部)。rPush()的语法格式是:$redis->rPush(key, value),作用是将value添加到链表key的右边(尾部)。2、lPush原创 2020-05-25 15:34:37 · 330 阅读 · 0 评论 -
Linux curl命令参数详解
linuxcurl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态。一、Linux curl用法举例:1. linux curl抓取网页:抓取百度: 1 curlhttp://www.baidu.com 如发现乱码,可以使用iconv转码: 1 curlhttp://iframe...转载 2020-05-25 15:29:33 · 281 阅读 · 0 评论 -
session入库
ini_set("session.save_handler","user");//session.gc_probability=1分子ini_set("session.gc_probability",1);//session.gc_divisor=1000分母ini_set("session.gc_divisor",2);//session.gc原创 2017-04-26 12:27:50 · 329 阅读 · 0 评论 -
lnmp与nginx-rtmp-module搭建视频直播,感受一下流媒体服务器
现在,一起学习一下如何自己搭建一个流媒体服务器吧!本次搭建流媒体使用的环境是centos 7.0+nginx;让我们一起开始奇妙的流媒体之旅吧!1、下载nginx-rtmp-module:nginx-rtmp-module的官方github地址:https://github.com/arut/nginx-rtmp-module使用命令原创 2017-04-26 12:23:24 · 1417 阅读 · 0 评论 -
常见的网站攻击方式
sql注入,xss攻击,csrf攻击,文件上传漏洞,访问控制。这些是一般网站容易发生的攻击方式,接下来我们一一分析它们是如何攻击以及防范的。一、sql注入什么是sql注入? sql注入说的通俗一些就是用户在http请求中注入而已的代码,导致服务器使用数据库sql命令时,导致恶意sql一起被执行。用户登原创 2017-04-25 17:01:46 · 393 阅读 · 0 评论 -
万能采集大法
$ch = curl_init();$url = 'https://i.taobao.com/my_taobao.htm?spm=a1z09.2.a210b.d1000352.o3ZVQB&tracelog=mytaobaonavindex&nekot=1492052759958';$header = array( '这里填写页面上的cookie');// 添加apikey到hea原创 2017-05-04 16:22:23 · 704 阅读 · 0 评论 -
渗透测试工具sqlmap基础教程
本文仅献给想学习渗透测试的sqlmap小白,大牛请绕过。>>对于网络安全人员来说,掌握渗透工具的使用方法是一项必备的技能。然而,一个没有师傅带领的小白在刚开始学习时,并不知道该如何入手进行渗透学习,所以本文旨在帮助这些小白入门。sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞。它由Python语言开发而成,因此运行需要安装python环境。原创 2017-06-12 20:30:55 · 366 阅读 · 0 评论 -
新LNMP环境,但是SESSION跨页面或者刷新 session丢失
唠叨:本地WNMP做了一个项目,一切OK,昨天需要在LINUX架设一套LNMP环境。但是,在架设代码的时候,登录总是不成功~~~最终解决:权限其实,作为一个程序猿,只要涉及到服务器内容,都应该非常了解权限的问题。但是,如何正确的配置权限,或者那个位置没有配置到权限,才是比较苦恼的。(所有文件夹,给予所有权限的忽略…………)下面详细说下我的环境部署:请注明出处,珍惜我们自己的劳动成功原创 2017-09-06 16:04:37 · 1211 阅读 · 0 评论 -
通过IP地址获取当前地理位置(省份)的接口
1.淘宝接口通过ip获取地址[html] view plain copy /***通过淘宝IP地址库获取IP位置*1.请求接口(GET):http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]*2.响应信息:(json格式的)国家、省(自治区或直辖市)、市(县)、运营商原创 2017-09-22 10:10:42 · 4204 阅读 · 0 评论 -
聊天室的实现(消息实时刷新)
简单的对话框:实现消息的两秒一刷新,获取消息记录;页面加载时,消息框中的滑块处于最低端,向上滑动可以查看历史信息,此时刷新信息的时候,不在刷新滑块,使其仍处于最底层,也就是说,当滑块滚动的时候,不在受实时刷新的控制。当输入新的信息的时候,启动滑块的刷新,使其刷新到最底层(当前DIV的最底层)。另外,内容发送会显示发送状态,2秒后自动消失。代码实现:index.html[原创 2017-09-22 10:19:09 · 4604 阅读 · 2 评论 -
thinkphp5调用七牛云SDK上传文件
1.先在verdor里新建一个文件夹: Qiniu2.将SDK压缩包中的文件全部解压到Qiniu文件夹中3.在Controller中,引用类vendor('Qiniu.autoload');use Qiniu\Auth as Auth;use Qiniu\Storage\BucketManager;use Qiniu\Storage\UploadManager;12344.在config.p...原创 2018-03-26 11:12:29 · 1835 阅读 · 0 评论 -
yii2 开源商城Fecshop
Yii2 开源电商商城Fecshopgithub地址:https://github.com/fecshop/yii2_fecshop官网:http://www.fecshop.com原创 2018-05-25 17:52:22 · 1644 阅读 · 0 评论 -
php Swoole教程
原文手册参照:https://www.w3cschool.cn/swoole/原创 2018-05-28 13:28:21 · 760 阅读 · 0 评论 -
PHP导出word,CVS,PDF
WORD:<?phpheader("Cache-Control: no-cache, must-revalidate");header("Pragma: no-cache");//有了这些,可以把带html标签的html源码导入到word里,并且可以保持html的样式。/* <STYLE>BR.page { page-break-after: always }<...原创 2018-06-06 15:07:44 · 197 阅读 · 0 评论 -
阿里云智能媒体服务 oss文档转换及预览
本人 在工作中 也是接触到这个需求 我们本身的文档 都存储在阿里云的oss上 ,由于浏览文档需要下载后观看 为了方便浏览文档方便 开了这样一个功能 将文档转换成图片来进行预览 好了 废话就不多说了 下面给大家来点实实在在的干货,以防大家在以后工作中遇到这些问题。阿里云oss文档转换文档https://help.aliyun.com/document_detail/72044.html?spm=...原创 2018-08-25 15:35:58 · 6016 阅读 · 2 评论 -
php 抽奖接口demo
不废话 直接上代码 大家可以 借鉴一下 只是接口 没有 页面抽奖页面效果抽奖概率public static function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as $ke...原创 2018-09-29 18:51:08 · 936 阅读 · 0 评论