MySQL优化:虚拟字段
前言最近我们一个二手应用的即时通讯模块马上就用不了了,因为当时对接的是腾讯的IM服务,现在组织里说不想再续费了,功能还得保留。
那就能手写聊天模块了,所有都写得差不多的时候,在聊天记录表格里却整了一出尬尴的事儿。建表时根据消息推送方式,只存储了接收者ID,发送者ID却放在消息包的json中。
但是后面很多时候的查询需要两个ID字段联合,也就是要从json的多层路径中找到发送者ID,并作为条件。于是就有了下面通过虚拟字段解决的方法了。
知识点
多层json路径标量读取
虚拟字段的创建
聊天消息的查询优化
原表结构12345678910CREATE TABLE `bqs_chat_message` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT '0' COMMENT '用户ID', `data` json DEFAULT NULL, `is_get` tinyint(1) DEFAULT '0', `delete_t ...
工具类uniapp源码免费开源啦!
简介一个基于uniapp开发的强大且实用的工具类APP,提供了包括图片处理、测算,信息查询和娱乐等常用的工具。如:文本加密解密、二维码生成与识别、九宫格切图、图片拼接、国旗头像、房贷和BMI计算器等,如同瑞士军刀一样方便好用~
1🕙 项目基本保持每日更新,右上随手点个 🌟 Star 关注,这样才有持续下去的动力,谢谢~
项目展示码云: https://gitee.com/gaoxingqufuhchao/bqs-toolsbox-uniapp
落地: https://www.zerofc.cn/market/
下载:https://www.zerofc.cn/market/land_pages/bqs_toolsbox/index.html
项目截图
项目说明项目灵感来源于 前端铺子 ,前台基于Vue-uniApp,使用colorUi与uview框架,部分Demo参考uniApp插件市场等,感谢各位作者~
特别声明本软件属于技术开源软件, 任何使用本源码从事商业活动,对别人和自己造成损失的,本人概不负责!
功能规划2024-08 : 增加2048小游戏、小霸王游戏 ...
如何将 Python 项目打包成 exe,另带卸载功能!
前言虽然我是做 web 的,但是对 Python 的众多开源项目一直都很关注。像之前的 stable diffusion 的 AI 绘画,和 so-vits-svc 音色替换等源码的部署文档都很完善了。尽管如此,对于刚入门的和本地环境搭建各种踩坑的同学,又急于一试就显得不太友好了。针对这一现象,网上早有了各种大佬做了一键部署的解决方案,不用安装 Python 环境,不用下载各种依赖包,点一下 exe 就可以用了。
那他们是怎么做的呢,到这里应该已经很多人会说用 pyinstaller。是的这个确实可以解决整体环境打包,但是有时候一些图标和依赖文件要放在一起才能正常使用,类似于绿色桌面工具。那有没有方法对这个进一步封装,就是点击 exe 后需要安装,然后安装后才是项目的文件,还可以卸载,答案就是用 Inno Setup Compiler。那么,接下来我就用一个 GUI 的小 demo 完成 exe 打包和进一步安装打包。
环境Python 3.8Tkinter (自带)pyinstaller 6.3.0Inno Setup Compiler
基本流程用 conda 单独创建一虚 ...
如何用 Python 实现一个 “系统声音” 的实时律动挂件
前言应该是三年前,我用 Esp8266 和 ws2812 实现了一个音乐律动灯带。就是电脑播放音乐时,灯带会随着系统内部音乐播放的频率而闪动不同色彩的灯珠。而当时用来监听系统声音的工具是一个博主提供的,除了实时采集声音外还通过 UDP 传递数据到 Esp8266 上。
而这次,我就自己用 Python 实现一下,不过不传数据,就采集后直接实时地在电脑上绘制波形动画,主要是用来作为 FL Studio 播放时的一个桌面小挂件。
环境
python3.8
pyaudio0.2.14
matplotlib
pyaudio 简介pyaudio 是一个跨平台地音频 I/O 库,使用他可以在 Python 程序中进行播放,录音和生成 wav 文件等。需要注意的是,如果要使用 pyaudio 时,python 的版本最好在 3.7 以上,不然 pip 安装会报错。因为以下例子是获取系统内部声音,而 pyaudio 读取的音频流默认是麦克风,所以接下来介绍一下关于获取的设备列表信息。
代码获取设备列表12345678# pyaudio实例audio = pyaudio.PyAudio() ...
基于 pytorch-openpose 实现 “多目标” 人体姿态估计
前言还记得上次通过 MediaPipe 估计人体姿态关键点驱动 3D 角色模型,虽然节省了动作 K 帧时间,但是网上还有一种似乎更方便的方法。MagicAnimate 就是其一,说是只要提供一张人物图片和一段动作视频 (舞蹈武术等),就可以完成图片人物转视频。
于是我就去官网体验了一下,发现动作的视频长度不能超过 5 秒,当然,如果说要整长视频可以切多段处理再合成解决。主要的还是视频需要那种背景相对较纯的,不然提交表单一直报错,还有他也不能处理画面内多人物的姿态估计。
多目标人体姿态估计为什么我要弄多目标,其实是我有次拿了一舞团的视频用 MediaPipe 检测,发现一个画面中只能采集到一个人的动作数据。虽然齐舞可能就一套动作,其他的角色模型可以复制粘贴,但是有些编舞为了好看,伴舞也会根据节奏作不同的变化。所以说对于我用来采集舞蹈数据,这个很重要了,当然他也可以用在多人互动的 AR 游戏,或用在同时培训多人的动作规范检测等等场景。
要从单一人体检测到多人体姿态估计,开始我是打算用 YOLO 对画面中的多 Person 区块读出来,然后再将这些方块遍历交给 MediaPipe 对指定区域 ...
后端搞 Cocos 小游戏开发的三点避坑指北
前言先说一下我为什么要弄小游戏吧,首先无关工作,也无关兴趣,就只是想在副业里探索一下。没错就是做一个单机的小游戏上架到平台试一下水(薅广告费),不过说实话入局有点晚。
早在 2019 年的时候,我也折腾过白鹭引擎还弄过小 demo,当时上架平台也简单。但是不知道为什么那时不顺手发布一下,录了个视频就没再管了(还是太年轻)。现在好了白鹭引擎倒了,而我也才意识到写文章做视频并不是我的强项。
尽管现在大佬们都在 All in AI,但我还是把一个方向定在了小游戏上。选引擎二选一,挑了 Cocos Creator,之所以有下面的几个坑点,其根本原因是我没有系统性看他们的文档,所以记录一下以便后期捡起。
坑点脚本引入方式这个问题是我在 Cocos Creator 资源管理器里,创建脚本时选的 js,而代码里却用了 import 的语法导致还排查了一段时间(离大谱),但下面的花括号还是要值得注意。
12import {util} from "./util";import startPanel from "./startPanel& ...
【YOLOv5】实现扑克牌的点数识别
前言其实年初的时候,我也跟着别人的源码,用 Tensoflow 实现过扑克牌的目标检测。虽然也通过博文的方式记录了,但是那个项目使用的 TF 版本比较旧,自身对 TF 并不熟。后期如果说要升级或修改估计够呛,知道最近看到 YOLO 对目标检测的实现方法,发现这个更方便快捷。
于是决定用 YOLOv5.6 来重新实现一下扑克牌的点数识别,本文章主要是个人记录,也面向刚刚接触 YOLO 的同学阅读。所以以下会从数据标注,归一化处理到模型训练的实战内容,也包括各种踩坑经历和处理方法,最后对 detect.py 的重写,完成目标对象的坐标和识别标记输出。
YOLO 简介YOLO(You Only Look Once)是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。现在 YOLO 已经发展到 v8 版本,每个版本都在原有基础上改进演化的。选择 V5 是因为后面几个新版发行并不久,v5 相关资料和文章较多,踩坑起来也好搜索。其中每个版本里又有按场景划分几个特定场景版本,比如:
12345YOLOv5s:最小版本,速度最快,但检测性能最低。YOLOv ...
YOLO+SlowFast+DeepSORT 简单实现视频行为识别
前言前段时间刷短视频看到过别人用摄像头自动化监控员工上班状态,比如标注员工是不是离开了工位,在位置上是不是摸鱼。虽然是段子,但是这个是可以用识别技术实现一下,于是我在网上找,知道发现了 SlowFast,那么下面就用 SlowFast 简单测试一下视频的行为识别。
工具简介YOLOYOLO 是一个基于深度学习神经网络的对象识别和定位算法,前面我也用 v5s 训练了标注的扑克牌,实现了图片或视频中的点数识别,这里就跳过了。
DeepSORTDeepSORT 是一个实现目标跟踪的算法,其使用卡尔曼滤波器预测所检测对象的运动轨迹。也就是当视频中有多个目标,算法能知道上一帧与下一帧各目标对象的匹配,从而完成平滑锁定,而不是在视频播放或记录时,检测框一闪一闪的。
SlowFastSlowFast 是一个行为分类模型 (pytorchvideo 内置),可以通过输入视频序列和检测框信息,输出每个检测框的行为类别。所以需要借助类似 YOLO 的多目标检测模型,当然 SlowFast 也可以自行标注数据集训练,来完成自定义的行为识别。
流程
读取视频或者摄像头中的图片
通过 yolo 检测出画面的目 ...
三种方式,浅谈 Cocos Creator 的动画添加
前言虽然 Cocos 的官方文档对动画系统做了较详细的介绍,但是对于刚接触的同学(比如我)来说还是不太友好。尽管如此,我就按文档加社区帖子一起实践了一下。为了方便忘记后能快速捡起,所以就用我的方式结合使用场景,简单介绍一下 Cocos Creator 动画添加的三种方式。
属性动画这个是 Cocos Creator 动画系统自带的一种对节点进行标准位移、旋转、缩放动画操作。可以用来制作一些按钮加亮,引导之类的业务型动画。
创建节点并挂载 “Animation” 组件添加组件 > 其他组件 > Animation,然后打开动画编辑器,再点击 “新建 Clip 文件”,保存后放在 “assets” 下 “animations”,后缀为.anim 的文件。
动画编辑进入编辑后,找到属性列表,点击 “Add Property”,选择列表的 “position,width,coclor” 等属性,点击右侧菜单按钮,可以插入关键帧,删除关键帧,清空关键帧等,添加一帧就可以在属性检查器对应节点的属性进行调节。
挂载动画剪辑将已经编辑好的动画剪辑文件 (.anim 后缀),拖入到节点 ...
初探 Cocos Creator: 碰撞与物理系统
前言不知道你刚开始玩碰撞时,会不会遇到始终无法触发碰撞事件?玩物理系统时,自由落体的刚体会穿过 “地面” 刚体等情况?没错我全都遇到过,那么下面我就用红蓝色方块,简单实战一下 Cocos Creator 的碰撞与物理系统。
场景创建场景很简单,一个白色背景,两个红蓝色玩家,和一个绿色大草地。创建的方式也很简单,全部采用 Sprite 单色。节点创建层级管理器 ->Canvas 右键 -> 创建节点 -> 创建渲染节点 ->Sprite(单色)。
颜色填充在属性检查器,找到 Node 下的 Color,选择色盘里的一颜色即可。分组由于物理和碰撞中都要用到,这里就提前给两个玩家和绿草地创建分组并分配好。在属性检查器的 Node 中,找到 Group 点击编辑再添加,如下图。
碰撞匹对将三个分组进行碰撞的匹对,一定要勾选这个,不然后面测试碰撞无法触发回调,而是直接穿过另一个物体。
碰撞系统测试碰撞组件添加碰撞组件有三种,Box(盒状)、Circle(圆形)、Polygon(多边形),可以根据不同的物体形状选择对应组件类型,比如像赛车的就可以选盒状,合成西瓜的那种就可以 ...