自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大林的博客

林子大了,什么代码都有

  • 博客(29)
  • 收藏
  • 关注

原创 redis 连接报错read error on connection解决

问题描述:用redis作消息队列,php连接redis,用brpop函数消费队列,过了大约60秒连接会自动断开,报错:read error on connection原因分析:查看了下php.ini文件里面有个参数default_socket_timeout = 60,就是这个配置导致redis过60秒会自动断开。这个配置是什么意思?default_socket_timeout是socket流的超时参数,即socket流从建立到传输再到关闭整个过程必须要在这个参数设置的时间以内完成,如果不能完成,那

2021-05-25 10:36:31 1529

原创 redis简单实现高并发秒杀功能

前言:秒杀功能不外乎就是解决两个问题,第一个是高并发对数据库产生的压力,第二个是竞争状态下如何解决库存的正确减少,则超卖问题。使用redis是最优方式,文件锁和数据库锁都不太好,因为redis可以方便实现分布式锁,而且redis支持的并发量远远大于文件锁和数据库锁。redis使用乐观锁,当然悲观锁(排它锁)也可以,不过悲观锁有个问题就是锁等待的时间会占用大量内存,秒杀一般是少量的数据,所以是读多写少场景,使用乐观锁更加合适。另外redis实现悲观锁不太友好,会产生一些问题,这些问题需要结合lua脚本才能

2021-01-29 13:55:36 1467 1

原创 怎么理解的并发量和QPS?

查阅了很多文章,发现很多人对于并发量和QPS这个理解都有些片面,或者只是一个模糊的概念。你肯定听过有人会说:我希望这个网站能支持10W并发量。老板,你确定是说的没错,你说的是10W并发量还是说10W流量?这是两个完全不同的概念。要理解并发量,首先先科普几个概念PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。IP(独立IP):

2021-01-23 15:23:10 7990 3

原创 了解PHP的几种常见的加密方式

常用的几种加密方式md5加密Md5是一种单向的加密技术,不可逆,不能进行解密crypt加密crypt()为单向加密,跟md5差不多一样sha1加密跟md5很像,不同的是sha1()默认情况下返回40个字符的散列值,传入参数性质一样,第一个为加密的字符串,第二个为raw_output的布尔值,默认为false,如果设置为true,sha1()则会返回原始的20 位原始格式报文摘要sha...

2020-03-15 17:52:42 508

原创 合并两个二维数组某个字段相加的处理方法

$a = array( 0 => [ 'goods_id' => 25, 'stock' =>1, ], 1 => [ 'goods_id' => 2, 'stock' =>3, ] ); ...

2022-03-12 17:22:31 379

原创 Linux expect 介绍和用法

一、expect是什么?expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。expect自动交互流程:spawn启动指定进程—expect获取指定关键字—send向指定程序发送指定字符—执行完成退出.二、使用步骤1.安装expectyum install expect2.简单使用案例#!/usr/bin/expectset timeout 20cd /usr/local/projectspawn git pull origin

2021-07-27 09:26:54 334

原创 PHP二维数组根据值反查键值

$modelArr = [ "a" => [ "module" => "a", "meter" => 2, "type" => "pressure", ], "b" => [ "module" => "b", "meter" =...

2021-07-22 11:35:46 225

原创 解决jQuery动态加载的元素无法绑定事件

在新手接触JavaScript时,常常会遇到一个棘手的问题就是当一些元素是从数据库中动态加载时,写好的一些事件会无法绑定和使用出现这种情况的原因是当内容通过js动态加载的时候,js事件已经解析完毕,不会再与动态加载出来的元素做绑定同时我们知道js事件只对当前页面的元素有效,那么为什么会出现这种情况就不用多解释了解决方法:利用事件委托,把事件委托给一开始就存在的父节点上,这样我们就可以完成动态元素的事件绑定操作。$(function(){ $('.container').o

2021-06-11 18:00:01 295 1

原创 记一次javascript变量的作用域问题

我在父页面做了一个定时器setInterval()循环检测一个业务逻辑,定时器用一个全局变量保存。然后操作一个弹窗打开子页面完成逻辑操作之后会关闭这个定时器clearInterval(),但是在清除clearInterval这个动作的时候死活获取不到定时器的ID,百思不得其解。由于我使用了requirejs加载JS,我一度怀疑requireJS是不是会每次请求都重新开启一个作用域,但是我的页面并没有刷新。后来发现是一个非常容易忽略的问题。就是JS的作用域只对于当前页面,所以在父页面设置的变量,子页面是无法获

2021-04-13 17:59:38 65

原创 记一次virtualBox 不能选择64位操作系统的解决方法

用公司的新电脑,发现virtualbox居然不能选择64位的系统,这是解决之后的,正常来说默认都是可以选择64位的。百度找到的原因大概就是下面3个Win10系统安装了自带的Hyper-V虚拟机占用了CPU虚拟化技术电脑CPU不是64位的或者本身不支持虚拟化技术BIOS没有开启对应的Virtualization Technology(虚拟化技术)1和2的可能性很低,你可以逐个验证下,另外一个现在都2200年了,你的电脑CPU不可能不支持虚拟化技术。所以一般来说都是第三个,BIOS没有开启虚拟化

2021-03-12 16:00:57 984

转载 shell 1>&2 2>&1 &>filename重定向的含义分析

在 shell 程式中,最常使用的 FD (file descriptor) 大概有三个, 分别是:0 是一个文件描述符,表示标准输入(stdin)1是一个文件描述符,表示标准输出(stdout)2是一个文件描述符,表示标准错误(stderr)在标准情况下, 这些FD分别跟如下设备关联:stdin(0): keyboard 键盘输入,并返回在前端stdout(1): monitor 正确返回值 输出到前端stderr(2): monitor 错误返回值 输出到前端举例说...

2020-12-07 17:31:00 181

原创 记一次centos7系统启动network.service报错

和法规和

2020-03-18 21:01:24 328

原创 替换html里面的图片相对路径地址为绝对路径

项目要用到使用正则函数preg_replace_callback把图片相对路径替换为绝对路径,自己写的函数记录下来以备以后复用 function pregReplaceImg($content,$prefix) { $contentAlter = preg_replace_callback('/src=[\'\"]([\s\S]*?)[\'\...

2019-10-31 23:52:08 2166

转载 前端关于Base64编码的一些技术分析

引言  图片处理在前端工作中可谓占据了很重要的一壁江山。而图片的 base64 编码可能相对一些人而言比较陌生,本文不是从纯技术的角度去讨论图片的 base64 编码。标题略大,不过只是希望通过一些浅显的论述,让你知道什么是图片的 base64 编码,为什么我们要用它,我们如何使用并且方便的使用它,并让你懂得如何去在前端的实际工作中运用它。什么是 base64 编码?  ...

2019-10-21 23:41:47 247

原创 Thinkphp5.1里面如何使用workerman

之前一直用swoole,最近研究workerman,于是composer安装composer require workerman/workerman在Thinkphp控制器里面写一段测试代码<?phpnamespace app\workerman\controller;use think\Controller;use Workerman\Worker;class Inde...

2019-08-07 18:44:56 6823

原创 php购买业务流程通用设计思路

php购买业务流程通用设计思路设计表商品表商品ID数量价格用户账户表用户ID账户用户商品表商品ID购买流程大致流程为:商品展示,如果商品下架或者库存不足,关闭购买入口或者阻断用户进入。进入购买入口,选择相应的数量和商品,通常也会有相应的商品属性。点击购买,进入支付页面。点击支付,判断账户金额够不够,不够...

2019-08-02 10:29:16 576

原创 记PHP7.1中出现PHP Warning: Illegal string offset 'tagname'报错

调试一个陈年老代码,提示PHP Warning: Illegal string offset ‘tagname’。代码如下:$this->c_att = new quick_attribute();$this->c_att->items['tagname'] = ($this->charToLow ? strtolower($tmpvalues[0]) : $t...

2019-07-20 14:36:17 2076 1

原创 简单理解正则的捕获组和反向引用

捕获组正则使用()捕获组,只有()捕获组形式才会记录匹配的值。非捕获组则只匹配,不记录 $str = 'abccde'; $regex = '/\w(\w)/'; if(preg_match($regex, $str, $matches)){ echo "<pre>"; print_r...

2019-07-19 17:19:50 505

原创 使用imagettftext()函数执行失效的原因排查

登陆使用到验证码死活加载不出来,排查之后发现imagettftext函数执行失败。该函数作用是把文字写入图片当中,常用于做验证码图片。使用该函数需要安装GD库,但是安装之后依然不能使用,报以下错误:PHP Fatal error: Call to undefined function imagettftext()原因是由于安装GD库的时候没有安装freetype的支持。freetype不是...

2019-07-17 17:36:11 3860

原创 关于301和302重定向的理解

无论是301或者是302重定向,实际都是一种跳转1.301跳转是永久性跳转,浏览器会把权重转移到下一个跳转的页面,浏览器会把旧的网址替换为新的网址。实际上是浏览器把该跳转缓存起来了,所以点击旧的页面立马跳到新的页面,可以理解为把旧的网址替换为新的网址。但是这个替换的过程是浏览器帮我们实现。如果你不需要跳转回旧的页面的跳转就可以用301,因为如果你跳回来得话浏览器还是回把旧地址指向新网址...

2019-05-24 18:09:25 480

原创 swoole实例化对象的两种写法

最近在深入学习swoole看到官方文档里面实例化对象有两种写法,两种写法都能执行成功。一种是这样$server = new \Swoole\WebSocket\Server("0.0.0.0", 9501);另外一种是这样$server = new \Swoole_WebSocket_Server("0.0.0.0", 9501);第一种很容易理解,就是一个全局的命名空间加载的...

2019-05-24 16:20:30 664

原创 docker里面使用crontab遇到的坑

业务需要在docker里面使用crontab,安装好crontab之后。我在想怎样不进入容器就能自己添加或者修改cron任务。因为我的docker环境都是通过docker-compose配置的,首先想到的方法是通过dokcer-compose里面的volumes映射cron任务文件则crontab -e的操作对象文件。路径是 /var/spool/cron/crontabs以用户名命名的文件。映射...

2019-05-22 16:31:10 5899 5

转载 yum无法使用解决方法(比较全)

如下,新装的linux虚拟机,yum安装wget报错 Cannot find a valid baseurl for repo: base/7/x86_64[root@baty opt]# yum install wget已加载插件:fastestmirrorDetermining fastest mirrors One of the configured reposi...

2019-05-14 09:48:06 26846 5

原创 php flock文件锁通俗讲解几种锁的用法

使用共享锁(读锁)LOCK_SH,如果是读取,不需要等待,但如果是写入,需要等待读取完成。 使用独占锁也叫排它锁(写锁)LOCK_EX,无论写入/读取都需要等待。 LOCK_UN,无论使用共享/读占锁,使用完后需要解锁。 LOCK_NB,当被锁定时,不阻塞,而是提示锁定,直接拒绝理解PHP文件锁关键是理解LOCK_SH和L...

2019-05-06 16:08:23 660

原创 chrome浏览器的一个特性

用chrome浏览器(版本 74.0.3729.131)测试并发的时候无意中发现chrome浏览器一个小小的特性。凡是同一个请求(一定是要同一个请求),你连续按F5,即使你开多个窗口或者只是一个窗口,你请求一个页面或者接口。第一次请求会阻塞直到执行程序完毕才会执行其他的请求。测试了IE浏览器并不会出现这个问题,还是非阻塞的。另外在chrome也仅限于按F5刷新才会,强制刷新或者右键刷新与IE浏览器...

2019-05-04 10:37:33 446

原创 Thinkphp5.1里面使用Memcached的bug

在tp5.1里面使用缓存数据库memcached,我安装了memcached拓展。填好配置之后报以下错误Call to undefined method Memcached::has()。查看代码发现tp5.1里面使用了has这个函数 protected function setTagItem($name) { if ($this->tag) { ...

2019-04-19 13:29:19 1230

原创 mysql中int长度的意义

一直以来都是认为mysql的int储存的值的长度与设置的int长度有关,如int(3)表示只能储存3位数字int(11)能存储11位数字。其实这根本就是大错特错。mysql手册是这样写的:MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超...

2019-04-09 13:59:03 8075

转载 mysql5.7主从(Master/Slave)同步配置

环境:mysql版本都是5.7(以前的版本配置可能不一样)主(Master) windows:192.168.0.68从(Slave) centos7:192.168.0.4基本环境配置:要保证防火墙3306端口开放,如果只是为了学习,可以直接关闭防火墙。centos关闭防火墙方法:service iptables stop或者systemctl stop fi...

2019-04-08 15:40:40 237

转载 数据库设计三大范式(简单易懂)

数据库设计的三大范式为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就叫做范式。范式就是符合某一种设计要求的总结,要想设计一个结构合理的关系型数据库,必须满足一定的范式。在实际开发中最常见的设计范式有三个:1、第一范式*(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库满足第一...

2019-04-04 11:54:27 198

空空如也

空空如也

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

TA关注的人

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