首页
关于
留言
友链
电台
壁纸
我的足迹
推荐
知易而行MCP
Search
1
乐橙CMS影视管理系统最全版本
109,325 阅读
2
VIP视频解析破解电影解析模拟破解影视解析
77,802 阅读
3
乐橙CMS影视管理系统4.0.18版本
16,941 阅读
4
新浪图片链接修复教程集合
15,129 阅读
5
反调试代码调试死机代码禁止F12代码
12,103 阅读
语言
PHP
Java
Go
JavaScript
CSS
Vue
资源教程
网络杂谈
技术文章
影视交流
软件工具
Mac
知易而行
登录
Search
标签搜索
PHP
AI
LINUX
微信
MYSQL
树莓派
OpenClaw
ESP32S3
小智AI
P2P
JS
破解
乐橙cms
支付
uniapp
人工智能
技术趋势
智能玩具
ESP32
DIY
子沐~
累计撰写
128
篇文章
累计收到
372
条评论
首页
栏目
语言
PHP
Java
Go
JavaScript
CSS
Vue
资源教程
网络杂谈
技术文章
影视交流
软件工具
Mac
知易而行
页面
关于
留言
友链
电台
壁纸
我的足迹
推荐
知易而行MCP
搜索到
59
篇与
的结果
2024-06-28
uniapp开发小程序链接mqtt开发工具可以正常连接,真机就无法连接的问题
首先检查你的链接是不是有问题,在小程序中连接mqtt需要使用 wxs://协议。 client = mqtt.connect(`wxs://${config.MQTT_WX_IP}:8084/mqtt`, config.MQTT_OPTIONS);检查你的mqtt.js版本,在uniapp中需要使用4.1.0版本的,高版本的会存在问题。检查Emqx的wss监听器是不是开启了SSL认证,如果不是很重要的话,请关闭。最重要的一点是 在真机调试的时候请求头会丢失参数:需要你手动nginx加一下 proxy_set_header Sec-WebSocket-Protocol mqtt;
2024年06月28日
1,118 阅读
0 评论
2 点赞
2023-01-06
Think-swoole集成think-queue由于配置问题造成的队列无法监听解决办法
2023-01-06T05:46:39.png问题:如上图所示官方说的queue已经在think-swoole中集成了,但是我们将此配置在swoole.php中更改后,创建完任务后,队列不执行。原因:queue.php的配置和swoole.php的配置不一致造成的。queue配置'connections' => [ 'sync' => [ 'type' => 'sync', ], 'database' => [ 'type' => 'database', 'queue' => 'zimuoo', 'table' => 'jobs', 'connection' => null, ], 'redis' => [ 'type' => 'redis', 'queue' => "zimuoo", 'host' => env('REDIS.REDIS_HOST', '127.0.0.1'), 'port' => env('REDIS.PORT', 6379), 'password' => env('REDIS.REDIS_PASSWORD', ''), 'select' => env('REDIS.SELECT', 0), 'timeout' => 0, 'persistent' => false, ], ],swoole配置//队列 'queue' => [ 'enable' => true, //键名是队列名称 'workers' => [ //下面参数是不设置时的默认配置 'default' => [ 'delay' => 0, 'sleep' => 3, 'tries' => 0, 'timeout' => 60, 'worker_num' => 3, ], //使用@符号后面可指定队列使用驱动 'default@connection' => [ //此处可不设置任何参数,使用上面的默认配置 ], ], ],代码分析先看看think-swoole的启动命令文件中的queue监听,分析代码可以发现队列是queue [$queue],但是咱们两边配置不一样,一个是zimuoo,一个是default,造成任务创建了,但是不执行。protected function createQueueWorkers() { $workers = $this->getConfig('queue.workers', []); foreach ($workers as $queue => $options) { if (strpos($queue, '@') !== false) { [$queue, $connection] = explode('@', $queue); } else { $connection = null; } $workerNum = Arr::get($options, 'worker_num', 1); $this->addBatchWorker($workerNum, function (Process\Pool $pool) use ($options, $connection, $queue) { $delay = Arr::get($options, 'delay', 0); $sleep = Arr::get($options, 'sleep', 3); $tries = Arr::get($options, 'tries', 0); $timeout = Arr::get($options, 'timeout', 60); /** @var Worker $worker */ $worker = $this->app->make(Worker::class); while (true) { $timer = Timer::after($timeout * 1000, function () use ($pool) { $pool->getProcess()->exit(); }); $this->runWithBarrier([$this, 'runInSandbox'], function () use ($connection, $queue, $delay, $sleep, $tries, $worker) { $worker->runNextJob($connection, $queue, $delay, $sleep, $tries); }); Timer::clear($timer); } }, "queue [$queue]"); } }解决只需要将 swoole.php中的队列驱动更改为一直即可。default=>zimuoo
2023年01月06日
2,152 阅读
0 评论
0 点赞
2022-11-14
树莓派一键备份脚本
树莓派备份脚本优点:备份后的镜像在恢复时会自动扩容空间运行sudo bash backup.sh将在当前路径生成备份文件生成的镜像名为raspi-backup.img#!/bin/bash set -e #当命令以非零状态退出时,则退出shell Color_End="\033[0m" Color_Red="\033[31m" Color_Green="\033[32m" if [ `id -un` != "root" ];then echo -e "$Color_Red权限不足,退出脚本! $Color_End" exit 1 fi # 设置文件存放目录 BACKUP_DIR=`pwd` BACK_UP_DIR=$BACKUP_DIR/raspi-backup FILE=$BACK_UP_DIR/raspi-backup.img #备份后的img文件名 mkdir $BACK_UP_DIR #安装必要的软件安装包 echo -e "$Color_Green安装必要的软件...$Color_End" apt-get install -qq -y dosfstools dump parted kpartx rsync apt-get clean #创建镜像img文件 echo -e "$Color_Green创建img文件...$Color_End" ROOT=`df -P | grep /dev/root | awk '{print $3}'` #获取 ROOT的文件大小 MMCBLK0P1=`df -P | grep /dev/mmcblk0p1 | awk '{print $2}'` #获取主目录的文件大小 ALL=`echo $ROOT $MMCBLK0P1 | awk '{print int(($1+$2)*1.1)}'` #生成一个比原文件大200M的IMG文件 echo "预计生成文件大小:$(($ALL/1024))MB" echo "root 大小是 $(($ROOT/1024))MB" echo "boot 大小是 $(($MMCBLK0P1/1024))MB" echo "文件路径是 $FILE" dd if=/dev/zero of=$FILE bs=1K count=$ALL status=progress #格式化分区 echo -e "$Color_Green格式化root和boot...$Color_End" P1_START=`fdisk -l /dev/mmcblk0 | grep /dev/mmcblk0p1 | awk '{print $2}'` P1_END=`fdisk -l /dev/mmcblk0 | grep /dev/mmcblk0p1 | awk '{print $3}'` P2_START=`fdisk -l /dev/mmcblk0 | grep /dev/mmcblk0p2 | awk '{print $2}'` echo "boot_start is :$P1_START .boot_end is : $P1_END .rootfs_start is :$P2_START" parted $FILE --script -- mklabel msdos parted $FILE --script -- mkpart primary fat32 ${P1_START}s ${P1_END}s parted $FILE --script -- mkpart primary ext4 ${P2_START}s -1 parted $FILE --script -- quit # mount echo -e "$Color_Green挂载分区...$Color_End" loopdevice_dst=`losetup -f --show $FILE` echo "loop分区在 $loopdevice_dst" PART_BOOT="/dev/dm-0" PART_ROOT="/dev/dm-1" sleep 1 device_dst=`kpartx -va $loopdevice_dst | sed -E 's/.*(loop[0-9])p.*/\1/g' | head -1` sleep 1 device_dst="/dev/mapper/${device_dst}" sleep 1 mkfs.vfat ${device_dst}p1 -n boot sleep 1 mkfs.ext4 ${device_dst}p2 -L rootfs sleep 1 # 复制文件到img echo -e "$Color_Green复制文件到img...$Color_End" echo "备份分区 /dev/boot" dst_boot_path=$BACK_UP_DIR/dst_boot mkdir $dst_boot_path mount -t vfat ${device_dst}p1 $dst_boot_path cp -rfp /boot/* $dst_boot_path echo "备份boot完成" echo "备份分区 /dev/root" dst_root_path=$BACK_UP_DIR/dst_root mkdir $dst_root_path sleep 1 mount -t ext4 ${device_dst}p2 $dst_root_path cd $dst_root_path chmod 777 $dst_root_path/ #通过rsync复制根目录文件到IMG镜像中,排除了一些不需要同步的文件 rsync -ax --info=progress2 --no-inc-recursive \ --exclude="$FILE" \ --exclude=$BACK_UP_DIR \ --exclude=$BACKUP_DIR/$0 \ --exclude=/sys/* \ --exclude=/proc/* \ --exclude=/tmp/* / $dst_root_path/ echo "备份root完成" # 设置自动扩展空间 echo -e "$Color_Green设置自动扩展空间 ...$Color_End" sed -i 's/exit 0/sudo bash \/expand-rootfs.sh \&/' $dst_root_path/etc/rc.local echo "exit 0" >> $dst_root_path/etc/rc.local cat > $dst_root_path/expand-rootfs.sh << EOF #!/bin/bash sed -i '/sudo bash \/expand-rootfs.sh &/d' /etc/rc.local rm "\`pwd\`/\$0" echo -e "\033[33m两秒后扩展分区空间!\033[0m" sleep 2 raspi-config --expand-rootfs echo -e "\033[33my一秒后重启系统!\033[0m" sleep 1 reboot EOF #返回目录 $BACKUP_DIR cd $BACKUP_DIR sync #替换PARTUUID 这步非常重要,liunx启动时会对PARTUUID有特定的指定,备份的时候是把旧的也同步过来,需要根据新的IMG文件来更新PARTUUID echo -e "$Color_Green替换PARTUUID ...$Color_End" opartuuidb=`blkid -o export /dev/mmcblk0p1 | grep PARTUUID` opartuuidr=`blkid -o export /dev/mmcblk0p2| grep PARTUUID` npartuuidb=`blkid -o export ${device_dst}p1 | grep PARTUUID` npartuuidr=`blkid -o export ${device_dst}p2 | grep PARTUUID` echo "BOOT uuid $opartuuidb 替换为 $npartuuidb" echo "ROOT uuid $opartuuidr 替换为 $npartuuidr" sed -i "s/$opartuuidr/$npartuuidr/g" $dst_boot_path/cmdline.txt sed -i "s/$opartuuidb/$npartuuidb/g" $dst_root_path/etc/fstab sed -i "s/$opartuuidr/$npartuuidr/g" $dst_root_path/etc/fstab #清理释放装载的文件夹 echo -e "$Color_Green清理释放装载的文件夹...$Color_End" umount $dst_boot_path umount $dst_root_path kpartx -d ${device_dst}p1 kpartx -d ${device_dst}p2 kpartx -d $loopdevice_dst losetup -d $loopdevice_dst rm -rf $dst_boot_path rm -rf $dst_root_path chmod 766 $FILE mv $FILE $BACKUP_DIR rm -rf $BACK_UP_DIR echo -e "$Color_Green备份完成。$Color_End" exit 0
2022年11月14日
1,940 阅读
0 评论
0 点赞
2021-12-28
ffmpeg下载m3u8文件转换为mp4文件
ffmpeg下载m3u8文件转换为mp4文件ffmpeg -protocol_whitelist concat,file,http,https,tcp,tls,crypto -i index06.m3u8 6.mp4
2021年12月28日
2,346 阅读
0 评论
1 点赞
2021-11-09
frp配置推荐模板
以下配置适合0.10.0~0.16.1版本frp客户端与服务端0.9.3及以下版本兼容,0.10.0~0.16.1版本兼容,使用时需要注意0.18.0以上版本把配置中的“privilege_”字段去掉即可1、frpc客户端[common] server_addr = www.yourdomain.com #frps服务端地址 server_port = 7000 #frps服务端通讯端口,客户端连接到服务端内网穿透传输数据的端口 privilege_token = frp888 #特权模式密钥,客户端连接到FRPS服务端的验证密钥 log_file = frpc.log #日志存放路径 log_level = info #日志记录类别,可选:trace, debug, info, warn, error log_max_days = 7 #日志保存天数 login_fail_exit = false #设置为false,frpc连接frps失败后重连,默认为true不重连 protocol = kcp #KCP协议在弱网环境下传输效率提升明显,但是对frps会有一些额外的流量消耗。服务端须先设置kcp_bind_port = 7000,www.yourdomain.com服务端已设置支持 [http_dsm] #穿透服务名称,不能和其他已建立的相同,使用公共服务器的建议修改成复杂一点的名称,避免与其他人冲突,很多路由器内置frpc的默认服务名称为[web],很容易很其他人冲突 type = http #穿透协议类型,可选:tcp,udp,http,https,stcp,xtcp,这个设置之前必须自行搞清楚应该是什么 local_ip = 192.168.1.2 #本地监听IP,可以是本机IP,也可以是本地的局域网内某IP,例如你的局域网是互通的,你可以在路由器上安装frpc,然后local_ip填的内网其他机器ip,这样也可以把内网其他机器穿透出去 local_port = 5000 #本地监听端口,通常有ssh端口22,远程桌面3389等等 use_compression = true #对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 cpu 资源 use_encryption = true #将 frpc 与 frps 之间的通信内容加密传输 custom_domains = dsm.yourdomain.com #自定义域名访问穿透服务,一般域名设置了二级域名泛解析以后,这里填*.yourdomain.com即可,*自定义,如果不想用域名或者自行搭建frps没有域名,则穿透协议类型选择tcp,见以下tcp部分详解 #通过app访问的注意,DS file,DS video,DS audio,DS finder里地址栏默认都是5000端口,穿透后地址栏须填写为【穿透域名:80】,DS photo由于本地local_port为80,穿透后也为80的话直接写域名地址即可 [https_dsm] type = https local_ip = 192.168.1.2 local_port = 5001 use_compression = true use_encryption = true custom_domains = dsm.yourdomain.com #以上https配置同http,注意开启https(默认5001端口),证书配置在客户端,无证书的注意浏览器访问时添加信任 [http_transmission] type = http local_ip = 192.168.1.2 local_port = 9091 use_compression = true use_encryption = true custom_domains = tr.yourdomain.com #transmission下载客户端 [http_rutorrent] type = http local_ip = 192.168.1.2 local_port = 80 use_compression = true use_encryption = true custom_domains = rt.yourdomain.com #rutorrent下载客户端,用Download Station的类似,注意端口 [http_blog] type = http local_ip = 192.168.1.2 local_port = 80 use_compression = true use_encryption = true custom_domains = blog.yourdomain.com [http_plex] type = http local_ip = 192.168.1.2 local_port = 32400 use_compression = true use_encryption = true custom_domains = plex.yourdomain.com #plex视频服务器 [https_feixun] privilege_mode = true type = http local_ip = 192.168.1.1 #路由器ip local_port = 80 use_compression = true use_encryption = true authentication_timeout = 0 custom_domains = feixun.yourdomain.com #穿透路由器 [tcp_ssh] #ssh连接 type = tcp local_ip = 192.168.1.2 local_port = 22 use_compression = true use_encryption = true remote_port = 3463 #远程端口,一般tcp和udp需要设置,不需要设置custom_domain,访问时为【frps服务器地址+远程端口】,没有域名的用这种方式通过【frps服务器地址+远程端口】即可实现访问 [udp] type = udp local_ip = 192.168.1.2 local_port = 53 use_compression = true use_encryption = true remote_port = 3453 访问时为【frps服务器地址+远程端口】2、frps服务端自行搭建服务端配置参考(必须有公网ip)[common] bind_addr = 0.0.0.0 #服务器IP,0.0.0.0为服务器全局所有IP可用,假如你的服务器有多个IP则可以这样做,或者填写为指定其中的一个服务器IP,支持IPV6 bind_port = 7000 #通讯端口,用于和客户端内网穿透传输数据的端口,可自定义 bind_udp_port = 7001 #UDP通讯端口,用于点对点内网穿透 kcp_bind_port = 7000 #用于KCP协议UDP通讯端口,在弱网环境下传输效率提升明显,但是会有一些额外的流量消耗。设置后frpc客户端须设置protocol = kcp vhost_http_port = 80 #http监听端口,注意可能和服务器上其他服务用的80冲突,比如centos有些默认有Apache,可自定义 vhost_https_port = 443 #https监听端口,可自定义 dashboard_port = 7500 #通过浏览器查看 frp 的状态以及代理统计信息展示端口,可自定义 dashboard_user = admin #信息展示面板用户名 dashboard_pwd = admin #信息展示面板密码 log_max_days = 7 #最多保存多少天日志 privilege_token = frp888 #特权模式认证密钥 privilege_allow_ports = 1-65535 #端口白名单,为了防止端口被滥用,可以手动指定允许哪些端口被使用 max_pool_count = 100 #每个内网穿透服务限制最大连接池上限,避免大量资源占用,可自定义 authentication_timeout = 0 #frpc 所在机器和 frps 所在机器的时间相差不能超过 15 分钟,因为时间戳会被用于加密验证中,防止报文被劫持后被其他人利用,单位为秒,默认值为 900,即 15 分钟。如果修改为 0,则 frps 将不对身份验证报文的时间戳进行超时校验。国外服务器由于时区的不同,时间会相差非常大,这里需要注意同步时间或者设置此值为0 log_file = frps.log log_level = info
2021年11月09日
1,641 阅读
0 评论
1 点赞
2021-04-22
mysql 往表中某个字段的字符串后追加字符串
NO BiBi show me Code,Go~~~update np_order set customer_remark=CONCAT(customer_remark,"sgja那里能的可能")WHERE order_id='1'
2021年04月22日
2,028 阅读
0 评论
2 点赞
2021-04-20
Macbook 电脑意外关机重启mysql链接不上的解决办法
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)解决办法sudo mysql.server stop sudo mysql.server start// Homebrew 安装MySQL想启动和关闭服务需要使用以下命令 // 启动 mysql, 并设置为开机启动 brew services start mysql // 关闭 mysql brew services stop mysql // 重启 mysql brew services restart mysql
2021年04月20日
1,674 阅读
0 评论
1 点赞
2021-04-16
PHP的strtotime计算2038年以上日期的时间戳错误
今天同事遇到一个bug,获取有效期值错误,同样的代码,其他开发人员操作都没有问题。在定位跟踪后发现有效期有值,如下:$expireDate = 2133999048;但是在该时间戳的基础上加上1 year后, $expireDate的值为false,而不是正确的时间戳。 $expireDate = strtotime("+1 year", $expireDate);Y2K38 漏洞 {message} Y2K38,又称 Unix Millennium Bug,此漏洞将会影响到所有 32 位系统下用 UNIX 时间戳整数来记录时间的 PHP,及其它编程语言。一个整型的变量所能保存的最大时间为 2038 年01月19 日 03:14:07。超过这个时间后,整型数值将会溢出。从 1970 年 01 月 01 日开始,到世界标准时 2038 年 01 月 19 日星期二凌晨 03:14:07 超过 2^31 – 1。2^31 – 1 就是0x7FFFFFFF,相信很多编程员都看过,在 32 位系统里,这表示最大的有符号整数。如果用它来表示秒数,大概相当于 68.1 年,从 1970 年到 2038 年刚好是这个数。{/message}其他解决方案就是升级 php版本到7.1以上
2021年04月16日
1,384 阅读
0 评论
1 点赞
2021-04-15
面试中遇到的sql练习题
面试中面试官问你啥问题,小编都给你整理在这里了。每天都会整理一份最接地气的面试题,希望能帮助到你!1.用一条SQL 语句查询出每门课都大于80 分的学生姓名?// 第一种方式:select name from table where name not in ( select name from table where score< 80 );// 第二种方式:select name from table group by name having min(score) >= 80;2.删除除了自动编号id不同, 其他都相同的学生冗余信息?字段分别是:id,stunum,name,course,scoredelete table where id not in ( select min(id) from table group by stunum,name,course,score );3.一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球对,现在四个球对进行比赛,用一条sql 语句显示所有可能的比赛组合?// 所有组合:ab,ac,ad, bc,bd, cd 所有左侧字母都小于右侧字母select a.name,b.name from team a,team b where a.name < b.name order by a.name,b.name ;4.从TestDB 数据表中查询出所有月份的发生额都比101 科目相应月份的发生额高的科目?AccID :科目代码,Occmonth :发生额月份,DebitOccur :发生额select a.AccID from TestDB a,( select Occmonth,max(DebitOccur) from TestDB where AccID = '101' group by Occmonth )b where a.Occmonth = b.Occmonth and a.DebitOccur > b.DebitOccur;5.怎么把这样一个表儿查成这样一个结果select year, (select amount from table m where month=1 and m.year=aaa.year) as m1, (select amount from table m where month=2 and m.year=aaa.year) as m2, (select amount from table m where month=3 and m.year=aaa.year) as m3, (select amount from table m where month=4 and m.year=aaa.year) as m4 from table group by year6.复制表( 只复制结构, 源表名:a新表名:b)select * into b from a where 1<>1; // where1=1,拷贝表结构和数据内容7.拷贝表( 拷贝数据, 源表名:a目标表名:b)insert into b(a, b, c) select d,e,f from a;8.显示文章、提交人和最后回复时间select a.title,a.username,b.adddate from table a, (select max(adddate) adddate from table where table.title=a.title) b;9.日程安排提前五分钟提醒select * from 日程安排 where datediff('minute',f 开始时间,getdate())>5;10.两张关联表,删除主表中已经在副表中没有的信息delete from info where not exists ( select * from infobz where info.infid=infobz.infid );11.有两个表A 和B ,均有key 和value 两个字段,如果B 的key 在A 中也有,就把B 的value 换为A 中对应的value?update b set b.value=(select a.value from a where a.key=b.key) where b.id in( select b.id from b,a where b.key=a.key );12.已知有如下4张表:学生表:STUDENT(S#,SNAME,SAGE,SSEX)课程表:COURSE(C#,CNAME,T#)成绩表:SC(S#,C#,SCORE)教师表:TEACHER(T#,TNAME)(1)查询课程编号为“001”的课程比“002”的课程成绩高的所有学生的学号?select x.sno,x.score,y.score from sc x,sc y where x.cno=1001 and y.cno=1002 and x.sno=y.sno and x.score> y.score;(2)查询平均成绩大于60分的学生的学号和平均成绩?select sno,avg(score) from sc group by sno having avg(score)>60;(3)查询所有学生的学号、姓名、选课数、总成绩?select sc.sno,sname,count(cno),sum(score) from student join sc on student.sno=sc.sno group by sc.sno,sname;(4)查询姓“悟”的老师的个数?select count(Tname) from teacher where Tname like'悟%';(5)查询没学过“悟空”老师课的学生的学号、姓名?select sno,sname from student where sno not in( select sno from SC where cno in( select cno from course where tno in( select tno from teacher where tname='悟空' ) ) );
2021年04月15日
1,164 阅读
0 评论
3 点赞
2021-04-13
Macbook安装完mysql,启动时报错:ERROR! The server quit without updating PID file
上代码解决方法: sudo chown -R _mysql /usr/local/var/mysql
2021年04月13日
1,318 阅读
0 评论
2 点赞
1
2
3
...
6