当前位置: 首页 > article >正文

jQuery小游戏(二)

jQuery小游戏(二)

今天是新年的第二天,本人在这里祝大家,新年快乐,万事胜意💕

紧接jQuery小游戏(一)的内容,我们开始继续往下咯😜

  1. 游戏中使用到的方法
  • keydown:当键盘按下时,立刻被触发;如果按住不放的话,会重复触发此事件,keydown()方法的参数是回调函数,当keydown事件触发时运行回调函数。一般keydownkeyup配合使用,下面会讲到keyup,说到keydown,我们会联想到另外一个事件keypress(当用户按下键盘上的字符键时触发,如果按住不让的话,会重复触发此事件),发生keypress事件意味着按下的键会影响到屏幕中文本的显示
  • keyup:当键盘按下,再次抬起时,被触发;在发生keydownkeyup事件时,event对象的keyCode属性会包含一个代码,与键盘上的一个特定的键对应。对数字、字母键,keyCode属性的值与ASCII码中对应小写字母或者数字的编码相同

需要注意的是:这三个键盘事件依次顺序为:keydown->keypress->keyup

  • orientationchange:便于开发者进行设备的判断,是处于垂直模式还是水平模式
  • 0:表示垂直模式
  • 90:表示左转水平模式(主屏幕键在右侧)
  • -90:表示右转水平模式(主屏幕键在左侧)
    当用户旋转设备改变了模式,就会触发orientationchange事件。但 event对象上没有暴露任何有用的信息,这是因为相关信息都可以从 window.orientation属性中获取;所有iOS设备都支持orientationchange事件和window.orientation属性;因为orientationchange事件被认为是window事件,所以也可以通过给元素添加 onorientationchange 属性来指定事件处理程序
keydown: function(e) {var t = i.checkKey(e.keyCode);n.event.keyDownGo && n.event.keys[t] != undefined && (n.event.keys[t] = !0),n.event.keyUpGo && n.event.lastKey[t] != undefined && (n.event.lastKey[t] = !1),n.event.keyPressCtrl[t] && n.event.keyPressedGo && (n.event.pressedKey[t] != undefined && (n.event.pressedKey[t] = !0), n.event.keyPressCtrl[t] = !1),n.event.keyDownCallBack != null && n.event.keyDownCallBack(e),t = null},keyup: function(e) {var t = i.checkKey(e.keyCode);n.event.keyDownGo && n.event.keys[t] != undefined && (n.event.keys[t] = !1),n.event.keyUpGo && n.event.lastKey[t] != undefined && (n.event.lastKey[t] = !0),n.event.keyPressedGo && (n.event.pressedKey[t] != undefined && (n.event.pressedKey[t] = !1), n.event.keyPressCtrl[t] = !0),n.event.keyUpCallBack != null && n.event.keyUpCallBack(e),t = null},orientationchange: function(e) {n.event.orientationChange != null && n.event.orientationChange(e)},swipeStart: function(e, t) {n.event.swipeCallBack != null && (n.event.swipeDate = Date.now(), n.event.pageStarOffX = e, n.event.pageStarOffY = t)},swipeSuccess: function(e, t) {if (n.event.swipeDate) {if (Date.now() - n.event.swipeDate < n.event.swipeTimeout) if (Math.abs(e - n.event.pageStarOffX) >= n.event.swipeRange || Math.abs(t - n.event.pageStarOffY) >= n.event.swipeRange) return n.event.swipeCallBack(n.event.pageStarOffX, n.event.pageStarOffY, e, t),!0;n.event.swipeDate = null}return ! 1},
  • touchstart:手指触摸屏幕时事件触发
  • touchend:手指离开屏幕时触发
  • touchmove:手指在屏幕上滑动式触发
  • touchcancel:系统取消touch事件的时候触发(该事件仅适用于带有触摸屏的设备)
touchstart: function(e) {e.preventDefault(),n.event.pageOffX = i.getOffsetX(e),n.event.pageOffY = i.getOffsetY(e),n.event.touchStart != null && n.event.touchStart(e, n.event.pageOffX, n.event.pageOffY);if (i.buttonLayoutEventHandler(e.type, n.event.pageOffX, n.event.pageOffY)) return ! 1;i.swipeStart(n.event.pageOffX, n.event.pageOffY)},touchend: function(e) {e.preventDefault();if (i.swipeSuccess(n.event.pageOffX, n.event.pageOffY)) return ! 1;if (i.buttonLayoutEventHandler(e.type, n.event.pageOffX, n.event.pageOffY)) return ! 1;n.event.touchEnd != null && n.event.touchEnd(e, n.event.pageOffX, n.event.pageOffY)},touchmove: function(e) {e.preventDefault(),n.event.pageOffX = i.getOffsetX(e),n.event.pageOffY = i.getOffsetY(e),n.event.touchMove != null && n.event.touchMove(e, n.event.pageOffX, n.event.pageOffY)},touchcancel: function(e) {n.event.pageOffX = i.getOffsetX(e),n.event.pageOffY = i.getOffsetY(e),n.event.touchCancel != null && n.event.touchCancel(e, n.event.pageOffX, n.event.pageOffY)},
  • mouseDown:鼠标按下事件,当鼠标的左键按下时触发

mouseDownclick点击事件不同,点击会包括两个动作,按下鼠标和松开鼠标,如果一个元素同时绑定了这两个事件,那么mousedown就会先触发,mouseup是鼠标按下后,松开鼠标按键这个动作会触发的事件,一定是先有按下动作的存在,才会有松开动作的出现。两者多配合mousemove使用于网页一些元素的拖拽事件

  • mouseUp:事件与其他浏览器原生事件一样,用于在鼠标按钮被释放时触发相应的操作
  • mouseMove:鼠标移动事件,在页面移动一像素就会触发的事件
click: function(e) {n.event.clickCallBack != null && n.event.clickCallBack(e, i.getOffsetX(e), i.getOffsetY(e))},mouseDown: function(e) {var t = i.getOffsetX(e),r = i.getOffsetY(e);if (i.buttonLayoutEventHandler(e.type, t, r)) return ! 1;n.event.mouseDownCallBack != null && n.event.mouseDownCallBack(e, t, r),i.swipeStart(t, r),t = r = null},mouseUp: function(e) {var t = i.getOffsetX(e),r = i.getOffsetY(e);if (i.buttonLayoutEventHandler(e.type, t, r)) return ! 1;if (i.swipeSuccess(t, r)) return ! 1;n.event.mouseUpCallBack != null && n.event.mouseUpCallBack(e, t, r),t = r = null},mouseMove: function(e) {n.event.mouseMoveCallBack != null && n.event.mouseMoveCallBack(e, i.getOffsetX(e), i.getOffsetY(e))},pageFocus: function(e) {if (n.event.focused) return n.event.focused = !1,!1;n.event.pageFocusCallBack != null && n.event.pageFocusCallBack(e)},pageUnFocus: function(e) {n.event.pageUnFocusCallBack != null && n.event.pageUnFocusCallBack(e)},checkKey: function(e) {var t = "0";for (var n in r.event.key) if (r.event.key[n] == e) {t = n;break}return t},
  • navigator:用于获取浏览器信息,通常通过UserAgent来识别浏览器类型
    注意:在IE浏览器中,由于UserAgent无法准确判断,因此可以使用ActiveXObject来识别

解释:

  • navigator.appCodeName:IE/Firefox/Chrome 等浏览器中,值为Mozilla
  • navigator.appName:IE/Firefox/Chrome 等浏览器中,均为Netscape
  • toLowerCase():用于返回调用该方法的字符串转换为小写后的新字符串;常用于比较字符串时忽略大小写的场景
    既然我们这里讲解了toLowerCase()方法,那衍生一下,看看toUpperCase()方法吧,其实跟toLowerCase()方法相反
  • toUpperCase():用于返回调用该方法的字符串转换为大写后的新字符串;常用于格式化字符串显示,如标题、标识符等
    注意:对于非字母字符,toLowerCase()和toUpperCase()都不会影响
getDeviceConfig: function() {var e = navigator.userAgent.toLowerCase();return e.indexOf("duopaosafari") != -1 ? {device: "duopaoSafari",fps: 1,touch: !0,zoom: 1}: e.indexOf("iphone") != -1 || e.indexOf("ipod") != -1 ? {device: "iphone",fps: 1,touch: !0,zoom: 1}: e.indexOf("ipad") != -1 ? {device: "ipad",fps: 1,touch: !0,zoom: 1}: e.indexOf("duopaoandroid") != -1 ? {device: "duopaoAndroid",fps: 1,touch: !0,zoom: 1}: e.indexOf("duopaowindowsphone") != -1 ? {device: "duopaoWindowsPhone",fps: 1,touch: !0,zoom: 1}: e.indexOf("opera mobi") != -1 ? {device: "operamobile",fps: 1,touch: !0,zoom: 1}: e.indexOf("flyflow") != -1 ? {device: "flyflow",fps: 1,touch: !0,zoom: 1}: e.indexOf("android") != -1 ? {device: "android",fps: 1,touch: !0,zoom: 1}: e.indexOf("iemobile") != -1 ? {device: "iemobile",fps: 1,touch: !1,zoom: 1}: e.indexOf("j2me") != -1 ? {device: "j2me",fps: 1,touch: !1,zoom: 1}: e.indexOf("symbian v5") != -1 ? {device: "symbian5",fps: 1,touch: !0,zoom: 1}: e.indexOf("symbian v3") != -1 ? {device: "symbian3",fps: 1,touch: !1,zoom: 1}: e.indexOf("chrome") != -1 ? {device: "chrome",fps: 1,touch: !1,zoom: 1}: e.indexOf("firefox") != -1 ? {device: "firefox",fps: 1,touch: !1,zoom: 1}: e.indexOf("msie") != -1 ? {device: "ie",fps: .5,touch: !1,zoom: 1}: e.indexOf("windows") != -1 ? {device: "ie",fps: .5,touch: !1,zoom: 1}: e.indexOf("safari") != -1 ? {device: "safari",fps: 1,touch: !1,zoom: 1}: e.indexOf("opera") != -1 ? {device: "opera",fps: 1,touch: !1,zoom: 1}: {device: "",fps: 1,touch: !1,zoom: 1}},
  • fillStyle:设置或返回用于填充绘画的颜色、渐变或模式
	<body><canvas id="zhouqiCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"></canvas><script type="text/javascript">var zhou = document.getElementById('zhouqiCanvas');//获取canvas标签var qi = zhou.getContext('2d');//获得context对象//createLinearGradient:创建线性的渐变对象//渐变开始点的 x 坐标,渐变开始点的 y 坐标,渐变结束点的 x 坐标,渐变结束点的 y 坐标var gra = qi.createLinearGradient(0,0,0,170);gra.addColorStop(0,"black");gra.addColorStop(1,"white");qi.fillStyle = gra;qi.fillRect(40,20,120,120);</script></body>

fillStyle效果
在这里插入图片描述

  • fillRect:用于绘制一个填充的矩形

fillRect(x, y, width, height)

  • x:矩形起始点的 x 轴坐标
  • y:矩形起始点的 y 轴坐标
  • width:矩形的宽度,负值的话宽度是绝对值,但是往左移动宽度绝对值像素
  • height:矩形的高度,负值的话高度是绝对值,但是往上移动高度绝对值的像素
  • fillText:用于在画布上绘制填色的文本;文本的默认颜色是黑色
  • measureText:用于测量文本的宽度
  • getAnchor:这里将getAnchor分离,在HTTP请求中,get方法用于从服务器检索资源,而Anchor是URL中的一个部分,它通常指向某个网页的特定位置,也被称为片段标识符。它不会影响服务器端的请求,也不会被发送到服务器,而是仅用于在浏览器端的页面导航
  • graphics:用于进行图像绘制操作的抽象类,可以绘制直线、矩形、椭圆等图形

衍生讲一下:
graphics2D:继承自graphics类,提供了更多的绘制方法和功能,可以进行更高级的图像绘制操作

setImage: function(e, t, r, i, s) {if (!e || !t) return ! 1;n.image.imgs[e] || (n.image.imgs[e] = new Image, n.image.imgs[e].onload = function() {n.image.countLoaded++,this.loaded = !0,this.cache && m.canvas.pass(this.id, this.width, this.height).drawImage(this.id, 0, 0).pass().base().delImage(this.id, !0)},n.image.imgs[e].src = t + (n.image.version != "" ? "?v=" + n.image.version: ""), n.image.imgs[e].id = e, n.image.imgs[e].url = t, n.image.imgs[e].benchId = r, n.image.imgs[e].bench = i, n.image.imgs[e].cache = s, n.image.imgs[e].refreshed = !1)},setAudio: function(e, t, r, i, s, o) {if (!e || !t) return ! 1;if (!n.audio.audios[e]) {var u = new Audio(t + (n.image.version != "" ? "?v=" + n.image.version: ""));u.id = e,u.autoplay = i,u.preload = s,u.autobuffer = o,u.loop = r,n.audio.audios[u.id] = u,u = null}},loadingCallBack: function(e, t, r) {var i = m.canvas.screen.getWidth(),s = m.canvas.screen.getHeight(),o = i,u = 5,a = parseInt(i - o >> 1),f = s - u,e = e > t ? t: e,l = parseInt(e / t * 100) + "%";m.canvas.fillStyle(n.canvas.bgColor).fillRect(0, 0, i, s).fillStyle("#00FFFF").fillRect(a, f, parseInt(e / t * o), u).fillStyle("#FFF").fillText("loading " + r, 5, s - 10).fillText(l, i - m.canvas.measureText(l).width - 5, s - 10),i = s = o = u = a = f = l = null},loadingEndCallBack: null,getAnchor: function(e, t, n, i, s) {var o = e,u = t;switch (s) {case r.canvas.graphics.ANCHOR_HV:o -= parseInt(n / 2),u -= parseInt(i / 2);break;case r.canvas.graphics.ANCHOR_LV:u -= parseInt(i / 2);break;case r.canvas.graphics.ANCHOR_RV:o -= n,u -= parseInt(i / 2);break;case r.canvas.graphics.ANCHOR_HT:o -= parseInt(n / 2);break;case 0:case r.canvas.graphics.ANCHOR_LT:default:break;case r.canvas.graphics.ANCHOR_RT:o -= n;break;case r.canvas.graphics.ANCHOR_HB:o -= parseInt(n / 2),u -= i;break;case r.canvas.graphics.ANCHOR_LB:u -= i;break;case r.canvas.graphics.ANCHOR_RB:o -= n,u -= i}return {x: o,y: u}},
  • buttonsButtonsDataTables的扩展,将控制按钮添加到表中
initUrlParams: function(e) {if (e.indexOf("?") >= 0) {var t = e.split("?"),r = [];t[1].indexOf("&") >= 0 ? r = t[1].split("&") : r.push(t[1]);var i = [];for (var s = 0; s < r.length; s++) r[s].indexOf("=") >= 0 && (i = r[s].split("="), n.request.gets[i[0]] = i[1]);i = null,r = null,t = null}},audioEnded: function() {m.audio.replay(this.id)},pageLoaded: function() {n.image.inited = !0,n.system.pageLoad(m)},buttonLayoutAction: function() {var e = n.buttonLayout.buttons,t;for (var r = e.length - 1; r >= 0; r--) if (t = e[r]) t.action().render(),t.goned && t.endPath() && e.splice(r, 1);e = t = null},buttonLayoutEventHandler: function(e, t, r) {var i = n.buttonLayout.buttons,s, o = !1;for (var u = i.length - 1; u >= 0; u--) if (s = i[u]) if (m.comm.collision(s.x, s.y, s.width, s.height, t - 5, r - 5, 10, 10)) {switch (e) {case "mousedown":case "touchstart":s.hovered = !0,s.repeated = !0,s.pressed = !0,s.released = !1;break;case "mouseup":case "touchend":s.hovered && (s.released = !0, s.hovered = !1),s.repeated = !1,s.pressed = !1;break;default:}o = !0} else if (e == "mouseup" || e == "touchend") s.hovered = !1,s.repeated = !1;return i = s = null,o}},s,o,u,a,f,l,c,h,p,d,v = {arr: [],len: 0,v: 0};

先这样吧,朋友们,早点休息啦,明天还要早起呢🎆

相关文章:

jQuery小游戏(二)

jQuery小游戏&#xff08;二&#xff09; 今天是新年的第二天&#xff0c;本人在这里祝大家&#xff0c;新年快乐&#xff0c;万事胜意&#x1f495; 紧接jQuery小游戏&#xff08;一&#xff09;的内容&#xff0c;我们开始继续往下咯&#x1f61c; 游戏中使用到的方法 key…...

【硬件测试】基于FPGA的QPSK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1QPSK 2.2 帧同步 3.Verilog核心程序 4.开发板使用说明和如何移植不同的开发板 5.完整算法代码文件获得 1.算法仿真效果 本文是之前写的文章 《基于FPGA的QPSK帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可…...

NVIDIA GPU介绍:概念、序列、核心、A100、H100

概述 入职一家大模型领域创业公司&#xff0c;恶补相关知识。 概念 一些概念&#xff1a; HPC&#xff1a;High Performance Computing&#xff0c;高性能计算SoC&#xff1a;System on Chip&#xff0c;单片系统FLOPS&#xff1a;Floating Point Operations Per Second&am…...

LINUX部署微服务项目步骤

项目简介技术栈 主体技术&#xff1a;SpringCloud&#xff0c;SpringBoot&#xff0c;VUE2&#xff0c; 中间件&#xff1a;RabbitMQ、Redis 创建用户 在linux服务器home下创建用户qshh&#xff0c;用于后续本项目需要的环境进行安装配置 #创建用户 useradd 用户名 #设置登录密…...

C++ list 容器用法

C list 容器用法 C 标准库提供了丰富的功能&#xff0c;其中 <list> 是一个非常重要的容器类&#xff0c;用于存储元素集合&#xff0c;支持双向迭代器。<list> 是 C 标准模板库&#xff08;STL&#xff09;中的一个序列容器&#xff0c;它允许在容器的任意位置快速…...

解密全同态加密中的自举(Bootstrapping)

摘要 自举&#xff08;Bootstrapping&#xff09;是全同态加密&#xff08;Fully Homomorphic Encryption, FHE&#xff09;中经常使用的术语。熟悉 FHE 的人都知道&#xff0c;自举是 FHE 方案中最复杂且计算密集的部分。然而&#xff0c;只有极少数非 FHE 专家真正理解自举操…...

C#方法(练习)

1.定义一个函数&#xff0c;输入三个值,找出三个数中的最小值 2.定义一个函数&#xff0c;输入三个值,找出三个数中的最大值 3.定义一个函数&#xff0c;输入三个值,找出三个数中的平均值 4.定义一个函数&#xff0c;计算一个数的 N 次方 Pow(2, 3)返回8 5.传入十一…...

显示当前绑定变量

来自v$sql中的信息 测试两个变量的情况&#xff08;实际可以看6个&#xff0c;可根据需要修改&#xff09; DROP TABLE T1 PURGE; CREATE TABLE T1 AS SELECT A.*,SYSDATE RIQI FROM DBA_USERS A ORDER BY 1;var mc char(3); var id number; exec :mc:SYS; exec :id:50;set li…...

随机森林例子

完整代码&#xff1a; # 导入必要的库 from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import numpy as np# 加载鸢尾花数…...

2025年1月个人工作生活总结

本文为 2025年1月工作生活总结。 研发编码 使用sqlite3命令行查询表数据 可以直接使用sqlite3查询数据表&#xff0c;不需进入命令行模式。示例如下&#xff1a; sqlite3 database_name.db "SELECT * FROM table_name;"linux shell使用read超时一例 先前有个编译…...

arm-linux-gnueabihf安装

Linaro Releases windows下打开wsl2中的ubuntu&#xff0c;资源管理器中输入&#xff1a; \\wsl$gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 复制到/home/ark01/tool 在 Ubuntu 中创建目录&#xff1a; /usr/local/arm&#xff0c;命令如下&#xff1a; …...

vscode和pycharm的区别

VSCode&#xff08;Visual Studio Code&#xff09;和 PyCharm 是两款常用的 Python 开发工具&#xff0c;它们在功能和使用体验上有一些关键区别&#xff1a; 1. 核心定位 VSCode&#xff1a;轻量级、多语言支持的代码编辑器&#xff0c;依靠插件扩展 Python 开发能力。PyCh…...

宝塔面板SSL加密访问设置教程

参考:https://www.bt.cn/bbs/thread-117246-1-1.html 如何快速使用证书加密访问面板 因早期默认未开启https访问所以没有相关的风险提醒&#xff0c;现面板默认已开启https加密访问、提升安全性 由于采用的是服务器内部本身签发证书&#xff0c;不被公网浏览器信任请参考以下步…...

Baklib在知识管理创新中的价值体现与其他产品的优势比较分析

内容概要 在当前的数字化时代&#xff0c;知识管理成为企业成功的重要组成部分。有效的知识管理不仅有助于提升内部沟通效率&#xff0c;还能促进创新与决策的科学化。尤其是Baklib作为一种知识中台&#xff0c;具有独特的价值&#xff0c;它能够融合企业内外的知识资源&#…...

Python 数据分析 - 初识 Pandas

Python 数据分析 - 初识 Pandas 简介SeriesDataFrame创建基本操作添加删除 简介 Pandas 基于 NumPy 开发&#xff0c;它提供了快速、灵活、明确的数据结构&#xff0c;旨在简单、直观地处理数据。 Pandas 适用于处理以下类型的数据&#xff1a; 有序和无序的时间序列数据带行…...

力扣【416. 分割等和子集】详细Java题解(背包问题)

首先我们可以求出数组和&#xff0c;当我们找到一个子集中元素的和为数组和的一半时&#xff0c;该就说明可以分割等和子集。 对于该问题我们可以转换成背包问题&#xff0c;求 数组里的元素 装入 数组和的一半大小的背包 能取得的最大值。 然后注意可以剪枝的地方。 代码&…...

机器学习周报-文献阅读

文章目录 摘要Abstract 1 相关知识1.1 WDN建模1.2 掩码操作&#xff08;Masking Operation&#xff09; 2 论文内容2.1 WDN信息的数据处理2.2 使用所收集的数据构造模型2.2.1 Gated graph neural network2.2.2 Masking operation2.2.3 Training loss2.2.4 Evaluation metrics 2…...

【Linux】Linux C判断两个IPv6地址是否有包含关系

功能说明 要判断两个 IPv6 地址是否具有包含关系&#xff0c;包括前缀的比较&#xff0c;可以通过以下步骤实现&#xff1a; 解析 IPv6 地址和前缀&#xff1a;将两个 IPv6 地址和它们的前缀长度解析为二进制形式。生成掩码&#xff1a;根据前缀长度生成掩码。按位比较&#…...

【Linux】列出所有连接的 WiFi 网络的密码

【Linux】列出所有连接的 WiFi 网络的密码 终端输入 sudo grep psk /etc/NetworkManager/system-connections/*会列出所有连接过 Wifi 的信息&#xff0c;格式类似 /etc/NetworkManager/system-connections/AAAAA.nmconnection:pskBBBBBAAAAA 是 SSID&#xff0c;BBBBB 是对…...

C语言连接Mysql

目录 C语言连接Mysql下载 mysql 开发库 方法介绍mysql_init()mysql_real_connect()mysql_query()mysql_store_result()mysql_num_fields()mysql_fetch_fields()mysql_fetch_row()mysql_free_result()mysql_close() 完整代码 C语言连接Mysql 下载 mysql 开发库 方法一&#xf…...

Synology 群辉NAS安装(6)安装mssql

Synology 群辉NAS安装&#xff08;6&#xff09;安装mssql 写在前面mssql 2019:成功安装说明&#xff0c;这个最终成功了 mssql 2022没有成功1. pull image2.启动mssql docker container 远程连接 写在前面 mssq是一个重要节点。 这是因为我对mysql没有一丝好感。虽然接触了许…...

WEB集群1-5天

文章目录 第一天、1、初始化配置1. 编写的初始化的脚本 init_env.sh2. 远程拷贝初始化脚本到mysql服务器里3.在mysql这台服务器上执行脚本 2、总结 第二天1、yumyum介绍yum操作将冯老师提供的网站的源码包上传到web服务器 2、部署网站1、解压文件2、epel源&#xff1a;可以提供…...

“AI视频智能分析系统:让每一帧视频都充满智慧

嘿&#xff0c;大家好&#xff01;今天咱们来聊聊一个特别厉害的东西——AI视频智能分析系统。想象一下&#xff0c;如果你有一个超级聪明的“视频助手”&#xff0c;它不仅能自动识别视频中的各种元素&#xff0c;还能根据内容生成详细的分析报告&#xff0c;是不是感觉特别酷…...

oracle中使用in 和 not in 查询效率分析

在Oracle数据库中&#xff0c;IN和NOT IN的查询效率受多种因素影响&#xff0c;以下是关键点总结和优化建议&#xff1a; 1. IN 的效率 优化方式&#xff1a; IN 通常会被优化为 OR条件 或 半连接&#xff08;Semi-Join&#xff09;&#xff0c;如果子查询关联到外部表&#x…...

kaggle视频追踪NFL Health Safety - Helmet Assignment

3年前的比赛了&#xff0c;检测视频中的头盔&#xff0c;通过对比赛录像的分析&#xff0c;正确指派球员。每个进攻都有两个相关的视频&#xff0c;一个是边线视角&#xff0c;另一个是端区视角&#xff0c;而且这两个视频是同步的&#xff0c;即视频中的每一帧都是对应的。我用…...

idea对jar包内容进行反编译

1.先安装一下这个插件java Bytecode Decompiler 2.找到这个插件的路径&#xff0c;在idea的plugins下面的lib文件夹内&#xff1a;java-decompiler.jar。下面是我自己本地的插件路径&#xff0c;以作参考&#xff1a; D:\dev\utils\idea\IntelliJ IDEA 2020.1.3\plugins\java-d…...

deepseek R1 14b硬件要求

RTX2080ti 11G显卡&#xff0c;模型7b速度挺快&#xff0c;试试14B也不错。 7B显存使用5.6G&#xff0c;11B显存刚好够&#xff0c;出文字速度差不多。 打算自己写个移动宽带的IPTV播放器&#xff0c;不知道怎么下手&#xff0c;就先问他了。...

DeepSeek-R1环境搭建推理测试

引子 这两天国货之光DeepSeek-R1火爆出圈&#xff0c;凑个热闹。过来看看 aha moment&#xff08;顿悟时刻&#xff09;的神奇&#xff0c;OK&#xff0c;我们开始吧。 一、模型介绍 1月20日&#xff0c;中国AI公司深度求索&#xff08;DeepSeek&#xff09;发布的DeepSeek-…...

列表(修改、添加和删除元素)

你将学习列表是什么以及如何使用列表元素。列表让你能够在一个地方存储成组的信息&#xff0c;其中可以只包含几个元素&#xff0c;也可以包含数百万个元素。 列表是新手可直接使用的最强大的Python功能之一&#xff0c;它融合了众多重要的编程概念。 修改、添加和删除元素 你…...

记录 | 基于Docker Desktop的MaxKB安装

目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章&#xff1a;如何利用智谱全模态免费模型&#xff0c;生成大家都喜欢的图、文、视并茂的文章&#xff01; MaxKB的Github下载地址 参考视频&#xff1a;【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…...