全球共有10多个国家和地区1000多个平台,20万+商户使用
扫码加微信免费试用
源码交付 免费技术支持
全定制化开发服务
三级分销丨社区团购丨上门服务丨打车代驾丨医疗问诊
点餐收银丨CRM丨ERP丨酒店丨生产管理丨批发零售系统
短视频丨聊天交友丨外卖跑腿丨租户管理丨在线票务
蓝牙控制丨空调控制丨血压检测丨共享设备丨人脸识别
三级分销丨积分系统丨级差佣金丨直销模式丨合伙人分红
直播系统丨短视频APP丨电商直播丨礼物系统丨社交类
SQL数据库只读问题
The MySQL server is running with the LOCK_WRITE option so it cannot execute this statement在 MySQL 中,出现错误 "The MySQL server is running with the LOCK_WRITE option so it cannot execute this statement" 通常意味着当前的 MySQL 服务器正在以只读模式运行,这使得某些写操作无法执行。这种情况常见于以下几种场景:只读模式: 服务器配置为只读模式,可能是因为设置了 read_only 选项。主从复制配置: 如果你在使用主从复制,可能你连接的是从服务器而不是主服务器,从服务器通常是只读的。手动配置: 可能管理员在配置文件中手动启用了只读选项。解决方法要解决此问题,可以考虑以下步骤:检查配置:连接到 MySQL,运行以下命令来查看当前的设置:SHOW VARIABLES LIKE 'read_only';SHOW VARIABLES LIKE 'super_read_only';如果结果为 ON,表示当前服务器处于只读模式。修改配置:如果你想关闭只读模式,可以执行以下命令(需要超级用户权限):SET GLOBAL read_only = OFF;SET GLOBAL super_read_only = OFF;请注意,修改全局变量只会在服务器重启后失效,所以需要编辑 MySQL 的配置文件(通常是 my.cnf 或 my.ini),找到并修改下列设置:read_only = OFFsuper_read_only = OFF3.确认连接的服务器:确保你连接的是主服务器而不是从服务器,尤其是在复制架构中。4.重启 MySQL 服务:如果你修改了配置文件,需要重启 MySQL 服务以使更改生效。5.检查事务:如果是在事务中发生的错误,确保事务是以正常模式启动的。确保在做这些更改前备份数据库并遵循相关的维护流程,以避免数据丢失或其他问题。
使用artplayer实现简单的实现视频播放
文档地址:https://artplayer.org/安装npm install artplayer在html实现<html> <head> <title>ArtPlayer Demo</title> <meta charset="UTF-8" /> <style> .artplayer-app { width: 400px; height: 300px; } </style> </head> <body> <div class="artplayer-app"></div> https://cdn.jsdelivr.net/npm/artplayer/dist/artplayer.js <script> const art = new Artplayer({ container: '.artplayer-app', url: 'path/to/video.mp4', }); </script> </body></html>这里把url里面的视频地址换一下就ok接下来是vue<template> <div class="artplayer-app"></div></template>artplayer-app就是视频插入的位置下面是js代码<script setup>import { ref, reactive, getCurrentInstance, onMounted, nextTick,} from 'vue';import Hls from 'hls.js';import { useRouter, useRoute } from 'vue-router';import Artplayer from 'artplayer'import artplayerPluginDanmuku from 'artplayer-plugin-danmuku'const { proxy } = getCurrentInstance();const router = useRouter();const route = useRoute();let player = null;const initPlayer = () => { //隐藏右键菜单 Artplayer.CONTEXTMENU = false //自动回放功能的最大记录数,默认为 10 Artplayer.AUTO_PLAYBACK_MAX = 20 //自动回放功能的最小记录时长,单位为秒,默认为 5 Artplayer.AUTO_PLAYBACK_MIN = 10 player = new Artplayer({ container: '.artplayer-app', url: 'https://media.w3.org/2010/05/sintel/trailer.mp4', type: 'm3u8', theme: '#23ade5', //播放器主题颜色,目前用于 进度条 和 高亮元素 上 volume: 0.7, //播放器的默认音量 autoplay: true, //是否自动播放 假如希望默认进入页面就能自动播放视频,muted 必需为 true autoMini: false, //当播放器滚动到浏览器视口以外时,自动进入 迷你播放 模式 fullscreen: true, //设置和获取播放器窗口全屏 fullscreenWeb: true, //设置和获取播放器网页全屏 setting: true, pip: true, //开启画中画 playbackRate: true, //是否显示视频播放速度功能,会出现在 设置面板 和 右键菜单 里 flip: true, //是否显示视频翻转功能,目前只出现在 设置面板 和 右键菜单 aspectRatio: true, //比例 //miniProgressBar: true, //迷你进度条,只在播放器失去焦点后且正在播放时出现 screenshot: true, //截图 autoPlayback: true, //自动回放 //自定义图标 icons: { state: document.querySelector('#play'), }, //重写宽屏模式 controls: [ { name: 'wide-screen', position: 'right', html: '<span class="iconfont icon-wide-screen"></span>', tooltip: '宽屏模式', style: { color: '#fff', display: 'flex', }, click: function (...args) { changeWideScreen() }, }, { name: 'narrow-screen', position: 'right', html: '<span class="iconfont icon-narrow-screen"></span>', tooltip: '退出宽屏', style: { color: '#fff', display: 'none', }, click: function (...args) { changeWideScreen() }, }, ], });}onMounted(() => { nextTick(() => { initPlayer() })})</script>看着很长,其实不难理解,重写的方法可以去掉,这里我是做了个性化的重写。剩下的就是配置一些功能是否开启,这里也只需要注意更换视频地址,以及更换一些图标。再下面是scss代码<style lang="scss" scoped>.artplayer-app { width: 100%; height: 600px; width: 100%; :deep(.art-video-player.art-mask-show .art-state) { //播放按钮 position: absolute; right: 40px; bottom: 50px; .art-icon-state { width: 60px; height: 60px; img { width: 100%; } } } //改变播放器的右侧操作按钮 :deep(.art-controls-right) { position: relative; display: block; width: 280px; .art-control { position: absolute; } //截屏 .art-control-screenshot { left: 0px; } //设置按钮 .art-control-setting { left: 46px; } //画中画 .art-control-pip { left: 92px; } //宽屏 .art-control-wide-screen, .art-control-narrow-screen { left: 138px; .iconfont { font-size: 20px; } } //网页全屏按钮 .art-control-fullscreenWeb { left: 184px; } //全屏按钮 .art-control-fullscreen { left: 230px; } }}</style>这样就能实现一个简单的视频播放了
Xshell可视化查看方法
Xshell可视化文件如何查看?1、下载安装好Xftp2、右键要打开的会话3、选择用Xftp打开即可下面就是打开后的页面了
vue控制台指令无法使用
npm : 无法加载文件 D:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 + npm i + ~~~ + CategoryInfo : SecurityError: (:) [],PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess下载依赖时出现这种报错查阅资料时发现是因为 PowerShell 的执行策略阻止了脚本的运行。默认情况下,Windows 系统的 PowerShell 可能会将脚本执行策略设置为限制性模式,从而禁止未经授权的脚本执行。这就是为何在运行 npm 时会遇到这个错误。要解决这个问题,可以通过以下步骤更改 PowerShell 的执行策略:以管理员身份打开 PowerShell:右键点击开始菜单中的 "Windows PowerShell",选择 "以管理员身份运行"。查看当前的执行策略:Get-ExecutionPolicy更改执行策略: 你可以将执行策略更改为 RemoteSigned 或 Unrestricted,这两种策略允许本地脚本运行:Set-ExecutionPolicy RemoteSigned或者:Set-ExecutionPolicy Unrestricted确认更改: 运行上述命令时,系统会询问你是否确认更改,输入 Y 并按回车确认。重新启动 PowerShell: 更改后,关闭 PowerShell 窗口并重新打开新的 PowerShell 窗口。再次运行 npm 命令: 尝试再次运行 npm i 命令,便可解决问题。
C#使用SqlSuger如何通过优化代码,提高查询效率
1.Sqlsuger是什么SqlSugar是一款来自未来的ORM,拥有超前的理念,需求领跑第一线,可以毫不夸张的说,在设计理念上就算不更新几年都不会过时,我们每天都会跟踪用户需求,将这些用户需求分类和整理,把有共性的功能都整理出来,经历过长达7年的努力,需求成负增长,已经走向了成熟和完善,是一款真正用了功能齐全的ORM框架,如果你用过EF CORE或者DAPPER肯定会为功能缺失而无奈,该有的功能没有,花里胡哨的一大堆。如果你用SqlSugar, 会给你一个不错的选择, 不断给你惊喜。(这是官方解释),2.Sqlsuger的优点1. .NET中唯一【全自动分表组件】+【读写分离】+【SAAS分库】+【大数据读写】 官方完美整合的ORM框架2. .NET 百万级大数据写入、更新和读取 性能最强框架3. 使用最简单,语法最爽的ORM 【文档,视频教程】4. 支持 DbFirst、CodeFirst和WebFirst 3种模式开发5.Github star数仅次于EF 和 Dapper,每月nuget下载量超过1万更多优点: 简单易用、功能齐全、高性能、轻量级、服务齐全、官网教程文档、有专业技术支持一天18小时服务支持数据库:MySql、SqlServer、Sqlite、Oracle 、 postgresql、达梦、人大金仓、神通数据库、Access 、MySqlConnector、自定义扩展二、使用步骤1.引入Sqlsuger1. 创建 .Net工程小编使用的是最新版的Visual Studio 2022,创建了一个基于.NET Framework的控制台应用程序。Sqlite数据库也提前用Navicat 工具创建好了。2. 引入Sqlsuger接下来便是在工程中引入Sqlsuger的dll文件,Visual Studio引入文件也很方便。使用NuGet 包管理器,在浏览中搜索 SqlSugar 点击安装即可(需要注意的是小编创建的项目是基于).NET Framework的控制台程序,所以下载的时候安装了支持.NET Framework版本的Sqlsuger,如果你创建的项目是其他的,比如 .NET Core 就要安装相对应的Sqlsuger 安装好了之后在Program.cs中引入Sqlsuger代码如下(示例):using SqlSugar;2.操作Sqlite数据库1. 创建数据库表实例首先尝试的通过Sqlsuger创建Sqlite数据库中表的实例,代码如下using SqlSugar;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp1{ internal class Program { static void Main(string[] args) { ConnectionConfig connectionConfig = new ConnectionConfig(); connectionConfig.DbType = DbType.Sqlite; connectionConfig.ConnectionString = @"Data Source=D:\sqlsuger\wxa7795cfeb64842e2\wechatsetting.db;Version=3"; using (SqlSugarClient sugarClient = new SqlSugarClient(connectionConfig)) { sugarClient.DbFirst.CreateClassFile(@"D:\sqlsuger\新建文件夹\ConsoleApp1\dbModels\"); } } }}需要创建SqlSugarClient对象,创建时需要ConnectionConfig参数,创建ConnectionConfig参数时有两个主要的字段,connectionConfig.DbType = DbType.Sqlite;//你要操作的数据库类型,这里选择的时Sqlite数据库connectionConfig.ConnectionString = "数据库连接字符串"//想要连接的数据库连接字符在SqlSugarClient对象中有DbFirst.CreateClassFile方法,它的参数是你要生成的数据库表实体类的存放地址,初次运行上述文件时会报错,无法找到System.Data.SQLite.dll相关依赖等错误,这是因为Sqlsuger操作Sqlite数据库时用到了System.Data.SQLite.dll,和Newtonsoft.Json 安装完这两个包之后运行上面的代码 在对应的文件夹下便会生成表的实体类,2. 增删改查的操作小编写了最简单的几个操作,Sqlsuger能实现的操作远不止这些,增删改查操作直接上代码:using Models;using SqlSugar;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace ConsoleApp1{ internal class Program { static void Main(string[] args) { ConnectionConfig connectionConfig = new ConnectionConfig(); connectionConfig.DbType = DbType.Sqlite; connectionConfig.ConnectionString = @"Data Source=D:\sqlsuger\wxa7795cfeb64842e2\wechatsetting.db;Version=3"; using (SqlSugarClient sugarClient = new SqlSugarClient(connectionConfig)) { //sugarClient.DbFirst.CreateClassFile(@"D:\sqlsuger\新建文件夹\ConsoleApp1\dbModels\"); //插入的操作 WDB_Template wDB = new WDB_Template() { id = 4, content = "测试", isuse = 0 }; sugarClient.Insertable<WDB_Template>(wDB).ExecuteCommand(); WDB_Template wDB_Template0 = sugarClient.Queryable<WDB_Template>().First(); print(wDB_Template0); //查询的操作 WDB_Template wDB_Template1 = sugarClient.Queryable<WDB_Template>().First(); print(wDB_Template1); //更新的操作 wDB.content = wDB.content + "更新后"; sugarClient.Updateable<WDB_Template>(wDB).WhereColumns(it => new { it.id }).ExecuteCommand(); WDB_Template wDB_Template2 = sugarClient.Queryable<WDB_Template>().First(); print(wDB_Template2); //删除的操作 sugarClient.Deleteable<WDB_Template>().In(it => it.id, 4).ExecuteCommand(); WDB_Template wDB_Template3 = sugarClient.Queryable<WDB_Template>().First(); print(wDB_Template3); Console.ReadLine(); } } public static void print(WDB_Template wDB) { if (wDB == null) { Console.WriteLine("数据库中没有数据"); } else { Console.WriteLine($"id = {wDB.id} ---- content = {wDB.content} ---- isuse = {wDB.isuse}"); } } }}下面是Sqlsuger的官网大家感兴趣可以继续探究: https://www.donet5.com/Home/Doc
Redis 数据库 安装、配置、访问
Redis 非关系型数据库简介 :数据存储形式 : Redis 数据库中存储的数据 是以 键值对 的形式 进行存储的 ;可存储的数据格式 : 该数据库支持各种 Value 值类型 , 包括 String 字符串 , List 链表集合 , Set 不重复集合Zset 有序集合Hash 哈希类型 ;数据存储位置 : Redis 数据库中的 数据都存储在内存中 , 这样可以保证效率 ; 同时还会 每隔 一定周期 自动将数据 保存到 本地硬盘 中 , 将更新的内容 或 追加操作 更新进去即可 ;数据库支持的操作 : Redis 数据库的操作都是 原子性 Atomicity 的 ;数据增减操作 : push / pop 操作 , add / remove 操作 ;数据逻辑操作 : 取交集操作 , 取并集操作 , 取差集操作 ;自动排序 : 在 Redis 数据库中存储的数据可以 通过不同的排序算法进行自动排序 ;二、Redis 数据库操作场景实例Redis 数据库操作场景实例 获取最新的 10 个数据 : 将数据 按照时间放到 List 集合 中 , 然后每次追加即可 , 获取最新的 10 个数据只需将最后 10 个数据取出 ;获取排行榜 TOP 10 : 数据存储在zset 有序集合中 , 每次添加时自动插入到对应位置 , 取出时直接取出 前 10 即可 ;获取手机验证码 : 手机验证码一般 5 分钟过期 , 可以 设置 Expire 过期时间 ;数据去重 : 数据保存在 Set 集合中 ;计数器 : 使用 Redis 中的 INCR / DECR ( 自增 / 自减 ) 方法 , 获取数据 , 可实现计数器相关操作 , 如倒计时 , 秒表 等 ;下面开始安装 Redis 数据库 ;三、下载 Redis 安装包1、Windows 安装包下载Windows 安装包是 微软提供的 , 该项目已经 6 年没有维护了 , 谨慎使用 ;下载地址 : https://github.com/MicrosoftArchive/redis/releases下载 3.2.100 版本 ;下载后的 Redis-x64-3.2.100.msi 安装文件 , 大概 5.8 MB ;2、Linux 安装包下载Redis 官网 : https://redis.io/点击右上角的 Download 按钮 , 下载 Redis ;在 https://download.redis.io/releases/ 页面 , 可以 查看 / 下载 各个 Redis 版本 , 下载完之后是 tar.gz 的压缩包 ;下载之后是一个 2MB 左右的 redis-6.2.1.tar.gz 安装包 ;四、Windows 中安装 Redis执行在上个章节从 https://github.com/MicrosoftArchive/redis/releases 下载的 Redis-x64-3.2.100.msi 安装文件 ,欢迎界面 : 选择 Next ;同意许可协议 ;选择 Redis 安装位置 D:\Program Files\Redis\ , 同时勾选下面的 " Add the Redis installation folder to the PATH environment variable. " 选项 , 将 Redis 安装目录添加到 PATH 环境变量中 ;设置 Redis 访问的端口 , 默认为 6379 ;下面的 " Add 按 exception to the Windows FireWall. " 选项在下面的条件下勾选 :本计算机开启了防火墙 ;并且 从外部计算机访问该 Redis 数据库 ;设置最大内存缓存 , 这里设置 500MB ;配置完成后 , 点击 Install 按钮 , 开始安装 Redis ;等待 Redis 安装完毕 ;安装完毕 , 点击 Finish 退出安装程序 ;五、Windows 中配置 Redis1、配置访问密码Redis 数据库的 配置文件 是 安装目录下的 Redis.windows-Service.conf 配置文件 ;在#requirepassfooBared 后面 添加requirepass 000000配置 , 含义是 将 Redis 数据块访问密码设置为 000000 ;2、重启 Redis 服务在前面修改了 Redis 的访问密码 , 因此这里需要重启 Redis 服务 ;在 文件资源管理器 中 , 右键点击 " 此电脑 " , 选择 " 管理 " 选项 ,在 弹出的 " 计算机管理 " 对话框中 , 左侧的 " 服务和应用程序 " 菜单中 , 选择 " 服务 " 选项 , 在右侧找到 Redis 服务 , 右键点击该 Redis 服务 , 选择 " 重新启动 " 选项 , 重启 Redis 服务 ;六、命令行访问 Redis1、打开 Redis 客户端打开cmd 命令行窗口 , 在命令行中执行redis-cli命令 , 进入 Redis 客户端 ;2、验证 Redis 访问密码如果直接执行set name "Tom"命令 , 向 Redis 数据库中插入 键值对 数据 , 此时会提示如下错误信息 ,(error) NOAUTH Authentication required.这是因为之前我们设置了 000000 作为访问密码 , 使用前要先输入密码进行验证 , 否则就会报上述错误 ;输入auth 000000命令 , 验证密码 , 如果密码验证成功 , 命令行会提示 OK 3、保存键值对数据执行set name "Tom"命令 向 Redis 数据块中插入数据 键 Key 为 name , 值 Value 为 “Tom” ,如果提示 OK , 说明 键值对 数据保存成功 ;4、查询键值对数据执行get name命令 , 在 Redis 数据库中查询 键 Key = name 对应的 Value 值 ;5、退出 Redis 客户端执行quit 命令 , 可以退出 Redis 客户端 ;还可以直接使用 Ctrl + C 或者 Ctrl + Z 直接退出 ;6、完整命令行输出完整命令行输出 :Microsoft Windows [版本 10.0.19044.2486](c) Microsoft Corporation。保留所有权利。D:\>redis-cli127.0.0.1:6379> set name "Tom"(error) NOAUTH Authentication required.127.0.0.1:6379> auth 000000OK127.0.0.1:6379> set name "Tom"OK