自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 收藏
  • 关注

原创 后端程序员必备:书写高质量SQL的30条建议

sql 优化

2022-06-28 15:22:46 216 1

原创 订单过期 自动取消实现方案

在电商、支付等领域,往往会有这样的场景,用户下单后放弃支付了,那这笔订单会在指定的时间段后进行关闭操作,细心的你一定发现了像某宝、某东都有这样的逻辑,而且时间很准确,误差在1s内;那他们是怎么实现的呢?一般的做法有如下几种定时任务关闭订单rocketmq延迟队列rabbitmq死信队列时间轮算法redis过期监听一、定时任务关闭订单(最low)...

2022-06-07 16:45:07 2250

原创 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 608

转载 水平分库分表的关键步骤和技术难点

分片技术的由来关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。在互联网行业海量数据和高并发访问的考验下,聪明的技术人员提出了分库分表技术(有些地方也称为Sharding、分片)。同时,流行的分布式系统中间件(例如MongoDB、ElasticSearch等)均自身友好支持Sharding,其原理和思想都是大同小异的。分布式全局唯一ID在很多中小项目中,我们往往直接使用数据库自增特性来生成主键ID

2022-03-02 15:45:40 177

转载 分库分表的几种常见玩法及如何解决跨库查询等问题

在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是,这些朋友所服务的公司业务量正在(或者即将面临)高速增长,技术方面也面临着一些挑战。让人感到担忧的是,他们系统真的就需要“分库分表”了吗?“分库分表”有那么容易实践吗?为此,笔者整理了分库分表中可能遇到的一些问题,并结合以往经验介绍了对应的解决思路和建议。垂直分表垂直分表在日常开发和设计中比较常见,通俗的说法叫做“大表拆小表”,拆分是基于关系型数据库中的“列”(字段)进行的。通

2022-03-02 15:44:38 3256 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 3131 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 386

原创 mysql 面试精典问题

大家好~今天给大家分享MySQL常考的面试题,看看你们能答对多少本期MySQL面试题的目录如下: 事务的四大特性? 事务隔离级别有哪些? 索引 什么是索引? 索引的优缺点? 索引的作用? 什么情况下需要建索引? 什么情况下不建索引? 索引的数据结构 Hash索引和B+树索引的区别? 为什么B+树比B树更适合实现数据库索引? 索引有什么

2021-11-09 14:29:52 268

转载 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 446

转载 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 769

原创 在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 484

转载 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 512

转载 为什么MySQL用B+树做索引

索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4]中找到4这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在mysql数据库中分三类:B+树索引、Hash索引、全文

2021-06-22 09:02:45 88

转载 PHP常见方法封装

get请求function get_curl($url, $timeout = 5) { $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true ); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, fal...

2021-04-12 19:54:50 156 1

转载 PHP常见算法合集

一、文件夹遍历<?phpfunction allFile($path = __DIR__, $level = 1){ if (is_dir($path) && is_readable($path)) { if($pd = opendir($path)) { while (($file = readdir($pd)) !== false) { if($file != '.' && $fi...

2021-04-12 19:52:45 2219

原创 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 876

转载 php的运行原理、cgi对比fastcgi以及php-cgi和php-fpm之间的联系区别

要了解php的运行原理,首先要了解下面几个概念:CGI:CGI的英文是(COMMON GATEWAY INTERFACE)公共网关接口,它的作用就是帮助服务器与语言通信,这里就是nginx和php进行通信,因为nginx和php的语言不通,因此需要一个沟通转换的过程,而CGI就是这个沟通的协议。nginx服务器在接受到浏览器传递过来的数据后,如果请求的是静态的页面或者图片等无需动态处理的则会直接根据请求的url找到其位置然后返回给浏览器,这里无需php参与,但是如果是一个动态的页面请求,这

2021-03-03 15:43:52 105 1

转载 SQL 优化极简法则

查询优化是一个复杂的工程,涉及从硬件到参数配置、不同数据库的解析器、优化器实现、SQL 语句的执行顺序、索引以及统计信息的采集等,甚至应用程序和系统的整体架构。本文介绍几个关键法则,可以帮助我们编写高效的 SQL 查询;尤其是对于初学者而言,这些法则至少可以避免我们写出性能很差的查询语句。以下法则适用于各种关系型数据库,包括但不限于:MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite 等。如果觉得文章有用,欢迎评论????、点赞????、推荐????法则一:只返

2020-11-04 17:23:42 104

原创 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 108

原创 Mysql系列 子查询

子查询出现在select语句中的select语句,称为子查询或内查询。外部的select查询语句,称为主查询或外查询。子查询分类按结果集的行列数不同分为4种 标量子查询(结果集只有一行一列) 列子查询(结果集只有一列多行) 行子查询(结果集有一行多列) 表子查询(结果集一般为多行多列) 按子查询出现在主查询中的不同位置分 select后面:仅仅支持标量子查询。 from后面:支持表子查询。 where或having后面:支持标

2020-10-10 15:49:25 129

原创 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 253

转载 导致MySQL索引失效的几种常见写法

这次的话简单说下如何防止你的索引失效。再说之前我先根据我最近的经验说下我对索引的看法,我觉得并不是所以的表都需要去建立索引,对于一些业务数据,可能量比较大了,查询数据已经有了一点压力,那么最简单、快速的办法就是建立合适的索引,但是有些业务可能表里就没多少数据,或者表的使用频率非常不高的情况下是没必要必须要去做索引的。就像我们有些表,2年了可能就10来条数据,有索引和没索引性能方面差不多多少。索引只是我们优化业务的一种方式,千万为了为了建索引而去建索引。下面是我此次测试使用的一张表结构以及一...

2020-09-17 14:33:54 105

转载 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 805

转载 PHP 判断图片是否带点赞(以抖音为例)

写在前面的话:技术点:PHP的GD库越学习,越发现自己的无知,当真如此,永远需要抱着学徒的心,今天把GD的所有函数看了下,不日用空更新正文:$img = '5212901b71dc6cf0bc910424b116361.jpg';list($width, $height, $type, $attr) = getimagesize($img); switch($type){ case 2: $im = imagecreatefromjpeg($im...

2020-07-19 10:57:03 201

转载 订单相关问题

从下单开始、支付、发货,收货,每一个环节,都少不了更新订单,每一次更新又需要同时更新好几张表。这些操作可能被随机分布到很多台服务器上执行,服务器有可能故障,网络有可能出问题。那么如何才能保证订单服务的数据一致性呢?正确使用数据库的事务eg.创建订单时,要同时往订单表和订单商品表中插入数据,那这些插入数据的INSERT必须在一个数据库事务中执行,数据库的事务可以确保:执行这些INSERT语句,共赴生死!但还有很多难以发现的坑存在1 基本功能和数据表任何系统的订单服务都是独一无二的,基于不同

2020-05-29 10:10:43 1942

原创 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 1667

原创 PHP 利用FFmpeg 视频切片

话不多说 上代码 各位看官 参考吧require 'vedio.ext.php'; $file = '文件地址 绝对路径'; $video = new videoExt(); $file_info = pathinfo($file); $video_id = $file_info['filename']; // 视频名作为视频的id $tmp_dir = ''; // 切片的临时目录绝对路径 if (!file_exists($tmp_dir))

2020-05-27 14:40:00 1931

转载 PHP 网站应用微信登录

背景近期进行 PC 端的网站开发,需要用到微信授权登录,考虑到前期手机端已经获得了大量的微信用户群,现在想着进行资源整合,满足同一个微信用户的数据同步一、开发须知1.概念区分因为接触到微信开发的知识,必然会接触 OpenID 与 UnionID 的使用,以下为微信官方文档的的介绍,请注意区分:> 在关注者与公众号产生消息交互后;> 公众号可获得关注者的 OpenID(加密后的微信号,每个用户对每个公众号的 OpenID 是唯一的。对于不同公众号,同一用户的 OpenID 不同)

2020-05-26 18:02:33 1325

原创 PHP 图片水印

效果展示:2.代码实现:$dst_path = '111.jpg';//原图片$src_path = '222.jpg';//水印的图片//创建图片的实例$dst = imagecreatefromstring(file_get_contents($dst_path));$src = imagecreatefromstring(file_get_contents($src_path));//获取水印图片的宽高list($src_w, $src_h) = getimagesize($

2020-05-26 16:49:15 354

原创 mysql技巧之数据去重并记录总数

1、使用distinct去重(适合查询整张表的总数)有多个学校+教师投稿,需要统计出作者的总数select count(author) as total from files每个作者都投稿很多,这里有重复的记录。select distinct author from files;有可能两个学校的教师姓名相同,结果只统计一个,出错。select distinct author,sid from files统计(作者+学校id)的组合唯一值,结果出现正确的结果,但如何知道一共有多少人呢?se.

2020-05-26 15:54:49 2771

转载 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 483

转载 谈PHP中信息加密技术

同样是一道面试答错的问题,面试官问我非对称加密算法中有哪些经典的算法? 当时我愣了一下,因为我把非对称加密与单项散列加密的概念弄混淆了,所以更不用说什么非对称加密算法中有什么经典算法,结果当然也让面试官愣了一下,所以今天就花点时间说说PHP中的信息加密技术信息加密技术的分类单项散列加密技术(不可逆的加密)属于摘要算法,不是一种加密算法,作用是把任意长的输入字符串变化成固定长的输出串的一种函数MD5string md5 ( string $str [, bool $raw_outpu.

2020-05-25 16:05:48 261 1

转载 如何做一个对账系统

在互联网行业中只要涉及到支付,必然就会有对账的需求,几乎所有互联网公司的业务中多多少少的都会涉及到支付,大一点的公司甚至都标配有了自己的第三方支付公司,因此对账具有普遍性。对账系统是支付体系中最重要的一环,也是保证交易、资金安全的最后一道防线。在大多数的互联网公司中,一般都会有独立的对账系统来处理,比如:电商平台、互联网金融、第三方支付公司等。对账是支付系统中的一环,因此在对账前我们先了解一下相关的业务知识业务知识什么是对账传统的对账就是核对账目,是指在会计核算中,为保证账簿记录正确可靠,对

2020-05-25 15:54:24 766

原创 PHP操作Redis 有序集(Sorted Set) 的相关命令 (三)

PHP操作Redis LIST ,SET, HASH 的相关命令 (一)PHP操作Redis KEY,String 的相关命令 (二)1.zAdd()增加一个或多个元素,如果该元素已经存在,更新它的socre值虽然有序集合有序,但它也是集合,不能重复元素,添加重复元素只会更新原有元素的score值$redis->zAdd('key', 1, 'val1');$redis->zAdd('key', 0, 'val0');$redis->zAdd('key', 5, 'va

2020-05-25 15:37:37 234

原创 PHP操作Redis KEY,String 的相关命令 (二)

PHP操作Redis LIST ,SET, HASH 的相关命令 (一)PHP操作Redis 有序集(Sorted Set) 的相关命令 (三)1.PHP操作Redis之KEY1、DEL()移除给定的一个或多个key。如果key不存在,则忽略该命令。返回值:被移除key的数量。$redis->set('myname','ikodota');echo $redis->get('myname').'<br>'; # 返回:ikodota$redis->del

2020-05-25 15:35:59 235

原创 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 306

转载 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 269

转载 php 日志类

使用php开发的日志处理类,本类可自定义多种日志配置,根据标签对应配置。代码中方便调用此类进行日志记录操作。提供完整代码及演示例子,方便大家学习使用。功能:1.自定义日志根目录及日志文件名称。2.使用日期时间格式自定义日志目录。3.自动创建不存在的日志目录。4.记录不同分类的日志,例如信息日志,警告日志,错误日志。5.可自定义日志配置,日志根据标签调用不同的日志配置。代码如下:LOG.class.php <?php /** ...

2020-05-25 15:26:16 614

转载 nginx优化的一些建议

1.1隐藏Nginxheader里版本号信息1、查看版本号 curl -I 127.0.0.1 HTTP/1.1 200 OK Server: nginx/1.6.2 Date: Sat, 14 Mar 2015 08:15:29 GMT Content-Type: text/html Content-Length: 25 Last-Modified: Fri, 13 Mar 2015 10:52:27 GMT Co..

2020-05-25 10:34:44 460

转载 中奖概率算法(php 可用于刮刮卡,大转盘等抽奖算法)

php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法。用法很简单,代码里有详细注释说明,一看就懂<?php /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内, * 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间, * 在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的。 * 这样 .

2020-05-23 15:09:43 431

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除