找到 14589 篇与 陆伍 相关的结果 - 第 12 页
-
surpass {card-default label="? 项目信息"} ? 项目名称:surpass ? 开发语言:Java ⭐ Star数:3482 | ? Fork数:1446 ? 开源协议:Apache-2.0 ? 项目地址:https://gitee.com/dromara/surpass {/card-default} 项目介绍 Dromara Surpass API权限开放平台,面向REST API资源无状态认证和调用,实现企业统一权限管理;零代码开发,SQL定义RESTful OpenAPI接口,支持JWT、RBAC资源权限管理,Swagger自动生成等,遵循Apache-2.0开源免费 项目详情 项目截图 项目截图 项目截图 项目截图 Surpass API权限开放平台 SurpassAPI权限开放平台,零代码开发,SQL定义RESTful OpenAPI接口;面向REST API资源无状态认证和调用,实现企业统一权限管理 提供基于Mybatis SQL方式的OpenAPI功能定义,只需编写 SQL,零代码开发 API 服务 实现企业内部系统统一权限管理,提供标准应用资源读取接口,轻松掌控企业内部复杂的权限 基于角色访问控制RBAC,提供对应用系统的权限控制,经典RBAC权限管理:用户-角色-应用-资源 提供页面可配置式的,动态的 API 权限安全管理支持 基于客户端Token的认证机制,保护OpenAPI安全 数据传输动态秘钥加密,JWT过期刷新,用户操作监控等加固应用安全 全方位日志记录,包括API地址、归属地、调用权限控制,加强API调用审计 根据OpenAPI配置自动生成Swagger文档 gitee | github 快速开始 部署文档 - 完整的部署指南 在线文档 - 官方文档 官方微信: 项目截图 效果展示 仪表盘 image1 数据源 image2 客户端 image3 用户管理 image4 角色管理 image5 应用管理 image6 资源管理 image7 OpenAPI接口配置 image8 OpenAPI接口Debug image9 客户端权限 image10 角色权限 image11 接口调用日志 image12 开源推荐 tancloud Saas监控平台 https://console.tancloud.cn HertzBeat赫兹节拍 易用友好的高性能监控告警系统。 https://hertzbeat.apache.org/ MaxKey 业界领先的IAM身份管理和身份认证产品: https://www.maxkey.top/ JustAuth 小而全而美的第三方登录开源组件: https://gitee.com/yadong.zhang/JustAuth PhalApi 一个轻量级PHP开源接口框架: https://www.phalapi.net/ ?️ License Apache License, Version 2.0 ⬇️ 下载地址 下载后请先检查文件完整性,如有问题请在评论区反馈 -
snackjson {card-default label="? 项目信息"} ? 项目名称:snackjson ? 开发语言:Java ⭐ Star数:367 | ? Fork数:86 ? 开源协议:Apache-2.0 ? 项目地址:https://gitee.com/noear/snackjson {/card-default} 项目介绍 新一代高性能 Jsonpath 框架。同时兼容 jayway.jsonpath 和 IETF JSONPath (RFC 9535) 标准规范(支持开放式定制)。 项目详情 SnackJson 一个 Json 框架,支持 JsonDom、JsonPath、JsonSchema(for Java) 兼容 `jayway.jsonpath` 和 IETF JSONPath (RFC 9535) 标准。兼容 JsonSchema draft-07 标准。支持开放式定制。 https://solon.noear.org/article/snack 项目截图 项目截图 项目截图 项目截图 项目截图 项目截图 项目截图 项目截图 项目截图 语言: 中文 | English SnackJson 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调 Json dom 的构建和操控能力 可以 Json path 高性能查询(比 jayway.jsonpath 快很多),同时兼容 jayway.jsonpath 和 IETF JSONPath (RFC 9535) 标准 (用 options 切换)。提供新一代 JsonPath 体验。 提供 Json schema 构建与校验,兼容 JsonSchema draft-07、draft-2019 标准 支持 json5 部分特性(无键字段,注释,等...) 优先使用 无参构造函数 + 字段 编解码(可减少注入而触发动作的风险) | 依赖包 | 描述 | |-------------------------------|------------------------| | org.noear:snack4 | 提供 json dom 构建和编解码支持 | | org.noear:snack4-jsonpath | 提供 json path 查询支持 | | org.noear:snack4-jsonschema | 提供 json schema 校验支持 | JSONPath 语法参考( IETF JSONPath (RFC 9535) ) 语法元素描述$根节点标识符@当前节点标识符(仅在过滤选择器中有效)[]子段:选择节点的零个或多个子节点.name简写 ['name'].*简写 [*]..[]后代段:选择节点的零个或多个后代..name简写 ..['name']..*简写 ..[*]'name'名称选择器:选择对象的命名子对象*通配符选择器:选择节点的所有子节点3索引选择器:选择数组的索引子项(从 0 开始)0:100:5数组切片选择器:数组的 start:end:step?过滤选择器:使用逻辑表达式选择特定的子项fun(@.foo)过滤函数:在过滤表达式中调用函数(IETF 标准).fun()聚合函数:作为片段使用(jayway 风格)过滤选择器语法参考: 语法描述优先级(...)分组5name(...)函数扩展5!逻辑 非4==,!=,`,>=`关系比较符3&&逻辑 与2`\\`逻辑 或1IETF JSONPath (RFC 9535) 标准定义操作符(支持) 操作符描述示例==左等于右(注意1不等于'1')$[?(@.a == 1)]!=左不等于右$[?(@.a != 1)]``左大于右$[?(@.a > 1)]>=左大于等于右$[?(@.a >= 1)]jayway.jsonpath 增量操作符(支持) 操作符描述示例=~左匹配正则表达式[?(@.s =~ /foo.*?/i)]in左存在于右[?(@.s in ['S', 'M'])]nin左不存在于右 subsetof左是右的子集[?(@.s subsetof ['S', 'M', 'L'])]anyof左与右有一个交点[?(@.s anyof ['M', 'L'])]noneof左与右没有交集[?(@.s noneof ['M', 'L'])]size左(数组或字符串)的大小应该与右匹配$[?(@.s size @.expected_size)]emptyLeft(数组或字符串)应该为空$[?(@.s empty false)]IETF JSONPath (RFC 9535) 标准定义函数(支持) 函数描述参数类型结果类型length(x)字符串、数组或对象的长度值数值count(x)节点列表的大小节点列表数值match(x,y)正则表达式完全匹配值,值逻辑值search(x,y)正则表达式子字符串匹配值,值逻辑值value(x)节点列表中单个节点的值节点列表值jayway.jsonpath 函数(支持) 函数描述输出类型length()字符串、数组或对象的长度Integermin()查找当前数值数组中的最小值Doublemax()查找当前数值数组中的最大值Doubleavg()计算当前数值数组中的平均值Doublestddev()计算当前数值数组中的标准差Doublesum()计算当前数值数组中的总和Doublekeys()计算当前对象的属性键集合Setconcat(X)将一个项或集合和当前数组连接成一个新数组like inputappend(X)将一个项或集合 追加到当前路径的输出数组中like inputfirst()返回当前数组的第一个元素依赖于数组元素类型last()返回当前数组的最后一个元素依赖于数组元素类型index(X)返回当前数组中索引为X的元素。X可以是负数(从末尾开始计算)依赖于数组元素类型snack-jsonpath 增量操作符(支持) 操作符描述示例startsWith左(字符串)开头匹配右[?(@.s startsWith 'a')]endsWith左(字符串)结尾匹配右[?(@.s endsWith 'b')]contains左(数组或字符串)包含匹配右[?(@.s contains 'c')]JSONPath 语法示例 JSON 样本数据 { "store": { "book": [ { "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century", "price": 8.95 }, { "category": "fiction", "author": "Evelyn Waugh", "title": "Sword of Honour", "price": 12.99 }, { "category": "fiction", "author": "Herman Melville", "title": "Moby Dick", "isbn": "0-553-21311-3", "price": 8.99 }, { "category": "fiction", "author": "J. R. R. Tolkien", "title": "The Lord of the Rings", "isbn": "0-395-19395-8", "price": 22.99 } ], "bicycle": { "color": "red", "price": 399 } } }示例JSONPath表达式及其应用于示例JSON值时的预期结果 JSONPath预期结果$.store.book[*].author书店里所有书的作者$..autho所有作者$.store.*商店里的所有东西,包括一些书和一辆红色的自行车$.store..price商店里所有东西的价格$..book[2]第三本书$..book[2].author第三本书的作者$..book[2].publisher空结果:第三本书没有“publisher”成员$..book[-1]最后一本书$..book[0,1]`$..book[:2]`前两本书$..book[?@.isbn]所有有国际标准书号的书`$..book[?@.price {o.addNew().set("title", "开始").set("type", "start"); o.addNew().set("title", "结束").set("type", "end"); }); oNode.get("id").getInt(); oNode.get("layout").get(0).get("title").getString(); oNode.getOrNew("list").fillJson("[1,2,3,4,5,6]"); 支持 `json path` 查询、构建、删除 ONode.ofBean(store).select("$..book[?@.tags contains 'war'].first()").toBean(Book.class); //RFC9535 规范,可以没有括号 ONode.ofBean(store).select("$..book[?(!(@.category == 'fiction') && @.price (){}).getClass()); //泛型 ONode.ofJson("[{},{}]").toBean(new TypeRef>(){}); //泛型 //快捷方式 String json = ONode.serialize(user); User user = ONode.deserialize(json, User.class); ### 路径树接口 //case1 ONode o = ONode.ofJson(json); ONode rst = o.select("$.data.list[*].mobile"); //自动为查询到的节点,生成 path 属性 List rstPaths = rst.pathList(); //获取结果节点的路径列表 for(ONode n1 : rst.getArray()) { n1.path(); //当前路径 n1.parent(); //父级节点 } //case2 ONode o = ONode.ofJson(json).usePaths(); //手动为每个子节点,生成 path 属性 ONode rst = o.get("data").get("list").get(2); rst.path(); rst.parent(); ### 高级定制 Json 编解码定制 Options options = Options.of(); //添加检测器(for Feature.Read_AutoType) options.addChecker(clzName -> { //通过 if (clzName.startsWith("com.ok.xxx.")) { return TypeChecker.ALLOW; } //拒绝 if (clzName.startsWith("com.no.yyy.")) { return TypeChecker.DENY; } //跳过 return TypeChecker.SKIP; }); //添加编码器 options.addEncoder(Date.class, (ctx, value, target) -> { target.setValue(DateUtil.format(data, "yyyy-MM-dd")); }); //添加解码器 options.addDecoder(Date.class, ...); //添加创建器(接管类实例化) options.addCreator(...); //添加特性 options.addFeature(Feature.Write_PrettyFormat); //移除特性 options.removeFeature(Feature.Write_PrettyFormat); //设置日期格式附 options.addFeature(Feature.Write_UseDateFormat); //使用日期格式 options.dateFormat("yyyy-MM"); //.. String json = ONode.ofBean(orderModel, options).toJson(); JsonPath 函数与操作符定制 import org.noear.snack4.ONode; import org.noear.snack4.jsonpath.FunctionLib; public class FunctionDemo { public static void main(String[] args) { //定制 floor 函数 FunctionLib.register("floor", (ctx, argNodes) -> { ONode arg0 = argNodes.get(0); //节点列表(选择器的结果) if (ctx.isDescendant()) { for (ONode n1 : arg0.getArray()) { if (n1.isNumber()) { n1.setValue(Math.floor(n1.getDouble())); } } return arg0; } else { ONode n1 = arg0.get(0); if (n1.isNumber()) { return ctx.newNode(Math.floor(n1.getDouble())); } else { return ctx.newNode(); } } }); //检验效果(在 IETF 规范里以子项进行过滤,即 1,2) //out: 1.0 System.out.println(ONode.ofJson("{'a':1,'b':2}") .select("$.a.floor()") .toJson()); //参考 //out: 2.0 System.out.println(ONode.ofJson("{'a':1,'b':2}") .select("$[?floor(@) > 1].first()") .toJson()); } } import org.noear.snack4.ONode; import org.noear.snack4.jsonpath.OperatorLib; public class OperationDemo { public static void main(String[] args) { //定制操作符 OperatorLib.register("startsWith", (ctx, node, term) -> { ONode leftNode = term.getLeftNode(ctx, node); if (leftNode.isString()) { ONode rightNode = term.getRightNode(ctx, node); if (rightNode.isNull()) { return false; } return leftNode.getString().startsWith(rightNode.getString()); } return false; }); //检验效果 assert ONode.ofJson("{'list':['a','b','c']}") .select("$.list[?@ startsWith 'a']") .size() == 1; } } ### 特别感谢JetBrains对开源项目支持:  ## ⬇️ 下载地址 ## {alert type="warning"}下载后请先检查文件完整性,如有问题请在评论区反馈{/alert} -
go-view {card-default label="? 项目信息"} ? 项目名称:go-view ? 开发语言:TypeScript ⭐ Star数:16408 | ? Fork数:5091 ? 开源协议:MIT ? 项目地址:https://gitee.com/dromara/go-view {/card-default} 项目介绍 ?GoView 是一个Vue3搭建的低代码数据可视化开发平台,将图表或页面元素封装为基础组件,无需编写代码即可完成业务需求。 它的技术栈为:Vue3 + TypeScript4 + Vite2 + NaiveUI + ECharts5 +VChart + Axios + Pinia2 + PlopJS 项目详情 项目截图 项目截图 开源、精美、便捷的「数据可视化」低代码开发平台 项目截图 项目截图 长期赞助商 项目截图 项目截图 项目截图 ? 纯前端 分支: master ? 携带 后端 请求分支: master-fetch ? GoView 文档 地址:https://www.mtruning.club/ 项目纯前端-Demo 地址:https://vue.mtruning.club/ 项目带后端-Demo 地址:https://demo.mtruning.club/ Cloud IDE 代码在线预览地址:https://idegitee.com/dromara/go-view ? 后端项目看这里! 后端地址(社区实现,仅供参考): JAVA https://gitee.com/MTrun/go-view-serve (当前使用) .NET https://gitee.com/sun_xiang_yu/go-view-dotnet NODE https://gitee.com/qwdingyu/led Docker 镜像 https://gitee.com/AHEAD4/go-view-docker GO-goframe https://gitee.com/bufanyun/go-view-server GO-gin https://gitee.com/ls1990/go-view-serve 接口文档 https://docs.apipost.cn (不是最新, 以前端代码为准) 整体介绍 框架:基于 Vue3 框架编写,使用 hooks 写法抽离部分逻辑,使代码结构更加清晰; 类型:使用 TypeScript 进行类型约束,减少未知错误发生概率,可以大胆修改逻辑内容; 性能:多处性能优化,使用页面懒加载、组件动态注册、数据滚动加载等方式,提升页面渲染速度; 存储:拥有本地记忆,部分配置项采用 storage 存储本地,提升使用体验; 封装:项目进行了详细的工具类封装如:路由、存储、加/解密、文件处理、主题、NaiveUI 全局方法、组件等 可视化:基于开源图表库ECharts 和 VChart 编写,具有丰富的图表类型和适配大屏的主题效果; 入选 NaiveUI 社区精选资源推荐:查看 NaiveUI 推荐列表 说明文档: 说明文档 工作台: 工作台 请求配置: 请求配置 数据过滤: 数据过滤 高级事件编辑: 高级事件编辑 自定义组件颜色: 高级事件编辑 快捷主页: 快捷主页 主题色: 主题色 亮白主题: 亮白主题 最新动态: 整合字节图表框架 VCharthttps://visactor.io/vchart 图表框架 VChart 主要技术栈为: 名称版本名称版本Vue3.2.xTypeScript44.6.xVite4.2.xNaiveUI2.34.xECharts5.3.xPinia2.0.x详见 package.json???开发环境: 名称版本名称版本node18.20.xnpm10.7.xpnpm8.6.7windows11已完成图表: 分类名称名称名称名称图表柱状图横向柱状图折线图单/多 折线面积图(渐变色)*饼图环形图水球图雷达图*NaiveUI 多种进度散点图对数回归散点图热力图*漏斗图中国地图高德地图?信息文字渐变文字词云嵌套网页*图片视频??列表滚动排名列表滚动表格??小组件边框-01~13装饰-01~05数字翻牌通用时间*数字计数倒计时时钟?浏览器支持 开发和测试平台均在 Google 和最新版 EDGE 上完成,暂未测试 IE11 等其它浏览器,如有需求请自行测试与兼容。 安装 请查看文档:https://www.mtruning.club/ 代码提交 feat: 新功能 fix: 修复 Bug docs: 文档修改 perf: 性能优化 revert: 版本回退 ci: CICD 集成相关 test: 添加测试代码 refactor: 代码重构 build: 影响项目构建或依赖修改 style: 不影响程序逻辑的代码修改 chore: 不属于以上类型的其他类型(日常事务) 交流群 QQ 群:687586375 项目截图 Pro 部分功能展示 体验地址: https://ai.goviewlink.com/saas/ 项目截图 渲染海报 ⬇️ 下载地址 下载后请先检查文件完整性,如有问题请在评论区反馈 -
PHP开源IM即时通讯系统源码|网页聊天 付费入群 音视频直播社区源码 开源版IM聊天系统,即时通信源码,支持音视频和付费进群,私聊/群聊直播 高效转化聊天工具——打造一个聊天室平台,将任何网站转变为蓬勃发展的社区,提升用户参与度并带来收益。该平台功能强大,集群聊、一对一聊天、视频和音频聊天以及人工智能于一体。 ? 狗凯源码库 · bbbb.bid 功能介绍与技术架构全解 本文基于对源码的实际审计与功能梳理写成:功能矩阵、技术栈、音视频与第三方服务选型、实时通讯机制、并发承载能力与扩容建议,一文讲透。所有结论均来自代码本身,非官方宣传文案。即时通讯/即时通信 类型 群聊 + 私聊 + 直播 + 社区语言 PHP 8.0+架构 AJAX 轮询 / Swoole WebSocket音视频 LiveKit + Agora(声网)页面 PWA 渐进式应用 源码下载 https://bbbb.bid/shop/40944.html 一、产品定位 Grupo Chat 是一套网页版多人聊天室 / 社区系统(类 Discord + Zoom + Telegram 的混合体),无需 App,浏览器打开即用,支持 PWA 安装到手机桌面。核心场景:兴趣社群、在线课堂、客服群聊、直播互动、付费会员社区。 ? 群聊 + 私聊 多类型群组(公开/私密/密码/年龄限制/付费)、私聊、转发、引用、必达 ? 音视频直播 视频/语音聊天室、摄像头直播、屏幕共享,LiveKit/Agora 双方案 ? 钱包商业化 充值/提现/打赏/付费入群/会员套餐,20+ 支付网关与加密货币 ?️ 安全风控 防火墙、IP/指纹封禁、内容审核、频率限制、人机验证 二、功能矩阵 ? 消息与聊天 群组体系:公开 / 私密 / 密码保护 / 年龄限制 / 付费入群 / 审核加入 / 自动加入;群分类、群角色(群主-管理员-成员自定义角色)、群 SLUG 自定义链接、群封面与背景、嵌入第三方网页(embed) 消息能力:文字、表情、贴纸、GIF(Giphy/Klipy)、图片、视频、音频、文件附件、位置分享、链接预览、语音消息;消息回复/引用、转发、置顶、编辑、撤回、已读回执、正在输入、@提及(@所有人)、投票、定时消息、广播消息、聊天记录导出、清屏 私聊体系:一对一私聊、私聊视频/语音、陌生人私信开关、好友系统(申请/忽略/黑名单)、附近的人 直播互动:摄像头直播(Camera Broadcasting)、观众列表、直播间弹幕互动、Live Cam ? 商业化 钱包系统:用户充值、提现申请、站内转账流水、发票下载(PDF)、银行转账凭证审核 变现路径:付费会员套餐(到期管理、专属权益)、付费入群、消息打赏(Tips)、广告位系统(可管理,本定制版已移除) 支付网关(20+):Stripe、PayPal、Razorpay、Mollie、Authorize.Net、iyzico、Paysera、PayTR、Flutterwave、PayUni、Maya、toyyibpay、aamarPay、Pesapal、Paymentwall;加密货币:Binance Pay、Coinbase、NOWPayments;对公银行转账 ? 内容与社区 自定义页面(隐私政策/条款)、自定义菜单、自定义用户字段、自定义 CSS/JS、页头页脚代码注入(统计代码等) 音频播放器(站内音乐电台)、电台当前播放(laut.fm)、小游戏(分类管理)、徽章系统、表情包商店、贴纸包管理 落地页(Landing Page)带动画 Hero、FAQ、群组展示、套餐展示;幻灯片管理、群组头图管理 游客登录(免注册体验)、邀请注册、假人/机器人用户生成(Faker 批量造号)、虚假在线人数 ?️ 安全与审核 防火墙:IP 黑名单、设备指纹封禁、登录尝试限制、频率控制( Flood Control )、每日发送上限、API 密钥机制 内容审核:脏话过滤(含严格模式)、图片 AI 审核(Sightengine / Google Cloud Vision,可按裸露/暴力分级设阈值)、链接过滤、邮件域名白名单校验、HTMLPurifier 防 XSS 人机验证:hCaptcha、Google reCAPTCHA v2、Cloudflare Turnstile、Friendly Captcha ⚙️ 管理后台(内嵌聊天界面) 用户管理:封禁/解封、角色权限体系(站点角色 + 权限矩阵细到每个按钮)、代登录(Login As)、批量导入用户 多语言管理(添加语言/翻译/导入导出 JSON)、推送通知配置、计划任务(Cron Jobs)、系统信息与缓存重建 站内通知(@提醒、邀请、徽章)、邮件营销(Brevo / sender.net 订阅同步) 三、技术栈 层面技术说明后端语言PHP ≥ 8.0(推荐 8.0~8.2)严格类型声明(declare(strict_types=1))、命名空间、单例 Registry 容器数据库MySQL / MariaDB(utf8mb4)ORM 使用 Medoo(轻量查询构造器),PDO 长连接(ATTR_PERSISTENT),62 张表实时通讯Swoole WebSocket 或 AJAX 轮询二选一,后台可切换;WS 默认端口 9502 + 内部 TCP 监听端口缓存文件缓存 / Redis(可选)设置、语言、CSS/JS 合并产物均落 assets/cache/,高并发可切 Redis前端jQuery + Bootstrap 5 + 原生模块非 SPA;合并压缩 JS/CSS(带时间戳缓存指纹);SVG 图标字体;暗色/亮色双主题实时前端livekit-client(UMD)音视频通话/直播客户端富文本Summernote自定义页面编辑PDFDomPDF钱包发票等单据生成图片处理GD / Imagick(可选)+ FFmpeg(可选)头像裁剪、图片压缩、视频压缩与缩略图登录认证Hybridauth(40+ OAuth Provider)Google/Facebook/Apple/Twitter 等,后台按 Provider 配置密钥密码存储password_hash() Bcrypt兼容旧版 MD5+Salt 自动升级云存储本地 / Amazon S3(官方 SDK)上传文件可切 S3 兼容存储推送Webpushr / OneSignal / Firebase FCMWeb Push 通知(离线消息、好友申请等事件)架构风格模块化函数路由(非 MVC 框架)fns/{load,add,update,remove,form} 按动作分目录、按文件名动态加载,带 file_exists 守卫 架构点评:不用 Laravel/Symfony 重框架,裸 PHP + Medoo + 模块化函数,性能开销小、部署门槛低(虚拟主机都能跑),代价是代码组织偏过程式,二次开发需要熟悉它的 Registry / load 约定。 四、音视频、多语言与第三方服务 “视频用什么、语言用什么”——这是这套系统最核心的外部依赖清单,全部来自源码实际引用: ? 音视频:双方案并存(SFU 架构) 服务在源码中的角色部署要求LiveKit 主推前端加载 livekit-client.umd.min.js(jsdelivr CDN);服务端集成 LiveKit Server SDK(Twirp 协议,Token 签发)需自建/租用 LiveKit Server(开源,可 Docker 自部署),填 API Key/Secret 与 WS 地址Agora 声网内置 AgoraDynamicKey(Token 动态密钥生成),前端 SDK 从 download.agora.io 拉取注册 Agora 控制台拿 App ID + 证书,国内节点质量好,按用量计费(有免费额度) 支撑的场景:群组视频聊天、群组语音聊天、摄像头直播(含观众观看)、屏幕共享、私聊音视频通话。都是 WebRTC SFU 架构——服务器转发多路流,浏览器之间不直连,穿透率和手机端体验都有保障。录音不经过第三方:语音消息走浏览器录音 → 本站/S3 存储。 成本提示:音视频不吃你 Web 服务器的带宽,吃 LiveKit/Agora 服务器的流量。自建 LiveKit 推荐 3~5Mbps 上行/人的独享带宽云主机;用 Agora 则按分钟计费。 ?️ 多语言:自建翻译系统(非外部服务) 语言不走任何第三方 API,是内置的数据库翻译表(gr_languages + gr_language_strings,1100+ 字符串条目):后台添加语言 → 逐条翻译或 JSON 导入导出 → 一键切默认语言 → 用户可自选界面语言(含 RTL 从右到左支持,适配阿拉伯语等)。中文站做简体化就是把这个翻译表灌成中文。 ? 其余第三方服务清单 类别支持的服务默认状态GIF 图库Giphy、Klipy(双引擎可切换)关闭,填 API Key 启用短信验证Twilio、MessageBird关闭Web 推送Webpushr、OneSignal、Firebase FCM关闭AI 聊天机器人OpenRouter(可接 GPT/Claude 等任意模型)关闭图片内容审核Sightengine、Google Cloud Vision关闭,支持分级阈值IP 情报ipdata.co(防火墙/附近的人)启用人机验证hCaptcha / reCAPTCHA v2 / Cloudflare Turnstile / Friendly Captcha关闭电台源laut.fm(在线电台正在播放)可选邮件营销Brevo、sender.net可选汇率换算内置货币转换工具(钱包多币种)启用 总结:除了音视频(LiveKit/Agora)是重依赖,其余全部是”填 Key 即用、不填不影响”的可选增强,且官方服务器零依赖(狗凯定制版已切断全部回传)——断网外网服务不影响核心聊天功能。 五、实时通讯机制 模式 A:AJAX 轮询(默认,零依赖) 前端按 refresh_rate(默认 3000ms,可调)轮询新消息与状态接口;每 5 分钟触发一次系统任务(会员到期校验等)。优点:任何 PHP 虚拟主机都能跑;缺点:在线人数越多,空轮询请求越多,消息延迟 = 轮询间隔。 模式 B:Swoole WebSocket(推荐) CLI 常驻进程 php websocket.php,Swoole 事件驱动长连接:消息即时推送(毫秒级)、在线状态实时变更、打字指示器即时同步;另开一个 TCP 内部监听端口,供 PHP-FPM 侧(网页请求)把”发消息”事件投递给 WS 进程转发给在线用户。HTTP 层只承担页面加载与 REST 式接口。 数据流(WebSocket 模式) 用户A发消息 → Nginx → PHP-FPM → 写MySQL + 投递TCP → Swoole进程 Swoole进程 → 按群成员在线表 → WebSocket 即时推送给 B/C/D… 离线用户 B 上线/轮询时从 MySQL 拉取未读 → 推送/邮件/FCM 通知 六、并发能力与扩容建议 两种模式的并发模型对比 指标AJAX 轮询模式Swoole WebSocket 模式请求模型每用户每 3s 一次 HTTP 轮询(可调 1~10s)长连接保持,事件推送,几乎无空请求100 在线≈ 33 请求/秒(轻负担)1 个常驻进程即可500 在线≈ 167 请求/秒,2C4G 需调 FPM 进程数轻松,消息毫秒级到达1000+ 在线≈ 333+ 请求/秒,开始吃力,建议调大轮询间隔 + Redis推荐区间,单机数千长连接无压力万级在线不适合Swoole 单机可承载 1w~5w 长连接(内存足够前提),瓶颈转移到 MySQL 写入消息延迟≈ 轮询间隔(秒级)毫秒级 瓶颈分析(按压力来源排序) ① MySQL 写入 —— 每条消息一次 INSERT,高发言频率下先到瓶颈。对策:MySQL 8.0 + innodb_buffer_pool 调大、消息表按群分表/归档、Redis 缓存热点 ② PHP-FPM 进程数(仅 AJAX 模式敏感)—— 宝塔默认 pm.max_children 偏小,按内存调(例:4G 内存、单请求 40MB → 80~100 children);OPCache 必开 ③ 带宽 —— 文件/图片走站点带宽,大站建议直接上 S3/OSS 卸载静态流量 ④ 音视频 —— 完全不占 Web 服务器,走 LiveKit/Agora 独立扩容 实操扩容路线(宝塔环境) 1. 开 WebSocket 模式(最大收益的一步) PHP 装 Swoole 扩展 → 进程守护跑 websocket.php → 放行 9502 → 后台切 WS 模式 2. 开 Redis(config.php enable_redis = true) 设置/语言/权限缓存走内存,减轻 MySQL 读压力 3. PHP-FPM 调优 pm = dynamic, max_children 按内存算, opcache 已默认开启 4. MySQL 调优 innodb_buffer_pool_size = 物理内存的 50~60% 5. 静态与上传分流 图片/附件迁移 S3 或独立 CDN 域名 单台 4C8G 云主机 + Swoole + Redis 的合理预期是 2000~5000 同时在线、日活上万的社群站;再往上就加机器做 MySQL 读写分离 + Swoole 多节点(系统设置自带 Redis 支持为多节点共享状态做了准备)。中小社群(几十到几百人在线)AJAX 模式完全够用。 资源下载 隐藏内容,请前往内页查看详情 本资源售价9.9元,购买后即可查看下载地址。如有问题请联系站长。 -
InShot Pro 视频编辑器v2.243.1555开心版 InShot Pro 视频编辑器v2.243.1555开心版插图 软件介绍: InShot Pro 是顶级电影制作人和带有音乐的高清视频编辑器,可帮助您轻松创建、编辑视频,并且可以分享发布到各个平台上。它是具有所有功能的最佳高清视频编辑器和视频制作器,可修剪和剪切视频/电影,模糊背景且无裁剪,添加音乐和视频效果! InShot Pro 是一款功能强大的视频制作器和垂直视频编辑器,非常易于使用。非常适合将长视频剪切,修剪和分割为小视频片段。模糊工具还可以帮助您模糊视频和照片的背景。使用InShot您可以轻松地在视频中添加音乐,文字和标签。快速/慢动作功能非常有趣。 ⬇️ 下载地址 下载后请先检查文件完整性,如有问题请在评论区反馈 -
PDFelement,解锁会员,AI全能PDF编辑 解锁尊享会员,AI对话PDF、智能摘要、OCR识别、60+语言翻译、无水印无广告全开放 【应用名称】 PDFelement - PDF编辑器 【应用版本】 6.1.16 【软件大小】 约 117.4 MB 【适用平台】 安卓(需要 Android 7.0+) 应用简介 本版本已解锁会员特权,畅享全部高级功能,去除广告与水印,AI工具、OCR识别、格式转换、密码保护全开放。 一款集PDF编辑、阅读、扫描、转换与AI智能于一体的全能PDF工具,Google Play 评分 4.7星(3.64万条评价),下载量超过 500万次。 AI智能助手:解锁后可使用与PDF对话功能,直接提问即可获得基于文档内容的即时回答;智能摘要一键生成全文梗概并提取关键词;AI翻译支持60+种语言互译;AI改写优化自动修正语法和文风;生成思维导图将PDF内容可视化整理。 像Word一样编辑PDF:直接修改PDF中的文本和图片,保留原始字体,自由调整字号和间距。解锁后可编辑扫描或图片型PDF,支持文字提取和扫描添加图片。 Liquid Mode阅读模式:自动将PDF内容重排适配手机屏幕,无需反复缩放拖动。支持书签导航、听书朗读(可调语速和音量),内置超过8800本英文原版书免费阅读。 专业扫描与OCR识别:快速将纸质文档(发票、收据、证书等)扫描为PDF,多页合并为一个文件。解锁后可使用 OCR文字识别,扫描后可直接搜索和编辑内容,OCR识别不再受限。 全能格式转换:解锁后PDF转Word、Excel、PowerPoint、文本、JPG/PNG/TIFF图片功能全开放,也可从Office文件、图片等创建PDF。批量转换不再受限。 注释与协作:添加评论、笔记、形状、箭头和高亮,多种样式可选,方便审阅和批注。 PDF创建与管理:创建空白PDF并选择自定义模板,支持压缩PDF(不损失质量)、合并多个文件,以及页面管理(添加、删除、提取、旋转、裁剪、重排)。 表单填写与电子签名:支持交互式表单(文本框、复选框、单选按钮),可添加手写签名或电子签名,随时随地签署合同和文件。 安全存储与便捷分享:支持云存储(PDFelement Cloud、Google Drive、Dropbox 等),可设置密码保护文档,通过二维码在电脑和手机之间快速传输文件。 v6.1.16 更新亮点:优化图片编辑功能,增强扫描文本提取能力;注释模式支持框选多个元素;新增折线和多边形绘制功能。 本版本已解锁的会员功能: 尊享会员已激活,全部高级功能开放使用 无广告干扰,编辑体验更纯净 无水印保存,导出文件干净整洁 AI工具无限使用:对话PDF、智能摘要、翻译、思维导图 OCR识别开放,扫描文件可直接搜索编辑 格式转换无限制:PDF与Office、图片互转 密码保护与文档加密功能开放 使用提示:部分AI功能依赖服务器端处理,需联网使用。 适合学生、职场人士、自由职业者,以及所有需要高效处理PDF文档的用户——解锁会员,AI加持,PDF处理从未如此轻松。 资源下载