皮皮网
皮皮网

【54321趋势线源码】【jvm 线程实现源码】【动手编译android源码】manager源码下载

来源:威客授权源码 发表时间:2024-11-25 10:51:02

1.OasisInputManager设计与实现
2.Free Download Manager最新版本
3.免费下载利器!码下全面解析FDM工具
4.consulmanager部署和使用

manager源码下载

OasisInputManager设计与实现

       å¼•è¨€

       äº¤äº’输入是引擎功能层中十分重要的一个功能,它允许用户使用设备,触摸或手势来与应用程序进行人机交互,在0.6里程碑中,我们初步搭建了Oasis的交互系统,目前已经支持了点击与键盘,而本文将与大家分享开发过程中的思路与不足。

整体设计主要架构

       è¾“入设备,触摸,XR设备等都属于交互系统的输入,在Oasis中我们将输入的所有逻辑收拢在输入管理器(InputManager)中,根据各种不同类型的输入再细分出触控管理器(PointerManager)与键盘管理器(KeyBoardManager)等特定输入。输入管理器分管所有特定输入管理器,在交互的帧处理中,只需要处理各个管理器内特定输入的逻辑即可。

API设计帧内生命周期

       å¦‚下是Oasis运行时帧处理的生命周期:InputManager的内部生命周期如下:

如何使用Pointer

       ä¸ºä¸‰ç»´ç©ºé—´å†…有碰撞体积的物体增加碰撞体。

       å‚考脚本组件(Script)内回调接口的触发条件添加适宜的逻辑。|接口|触发时机与频率||---|---||onPointerEnter|当触控点进入Entity的碰撞体范围时触发一次||onPointerExit|当触控点离开Entity的碰撞体范围时触发一次||onPointerDown|当触控点在Entity的碰撞体范围内按下时触发一次||onPointerUp|当触控点在Entity的碰撞体范围内松开时触发一次||onPointerClick|当触控点在Entity的碰撞体范围内按下并松开,在松开时触发一次||onPointerDrag|当触控点在Entity的碰撞体范围内按下时持续触发,直至触控点解除按下状态|

KeyBoard

       ç›´æŽ¥è°ƒç”¨äº¤äº’管理器(InputManager)提供的方法判断按键状态。

方法名称方法释义isKeyHeldDown返回这个按键是否被持续按住isKeyDown返回当前帧是否按下过此按键isKeyUp返回当前帧是否抬起过此按键鼠标与触控背景

       PointerEvent是浏览器内鼠标与触控交互后续发展的势头,Pointer是输入设备的硬件层抽象,开发者不需要关心数据来源是鼠标,触控板或是触摸屏,但是它也有一定兼容性问题,可以看到在canIUse中,PointerEvent的设备覆盖率为:.%,需要通过导入Polyfill来解决。

需求调研

       åœ¨è„šæœ¬ç»„件中增加响应Pointer的钩子函数,对于在三维空间中有碰撞体积的实体,可以让开发者通过补充对应钩子函数内的逻辑方便地实现点击,拖动,选中等交互操作。

钩子函数触发时机与频率onPointerEnter当触控点进入Entity的碰撞体范围时触发一次onPointerExit当触控点离开Entity的碰撞体范围时触发一次onPointerDown当触控点在Entity的碰撞体范围内按下时触发一次onPointerUp当触控点在Entity的碰撞体范围内松开时触发一次onPointerClick当触控点在Entity的碰撞体范围内按下并松开,在松开时触发一次onPointerDrag当触控点在Entity的碰撞体范围内按下时持续触发,直至触控点解除按下状态原生事件

       å’ŒMouseEvent,TouchEvent一样,PointerEvent也可以通过监听捕获。canvas.addEventListener('pointerXXX',码下callBack);

MouseEventTouchEventPointerEvent按下mousedowntouchstartpointerdown抬起mouseuptouchendpointerup移动mousemovetouchmovepointermove离开mouseout|mouseleavetouchend|touchcancelpointerout|pointercancel|pointerleave流程图

       å¯ä»¥å½’纳出Pointer处理的大致流程,其中绿框代表原生事件。

射线检测

       åœ¨Pointer中要解决的最大问题是如何根据原生事件中的位置信息在三维空间中做射线检测,因为这部分内容不仅仅包含空间转换的基本知识,还包含了物理系统的基础使用。

       åœ¨æˆ‘们捕获了PointerEvent后,需要

       ä»ŽåŽŸç”Ÿäº‹ä»¶ä¸­èŽ·å–有效的屏幕位置信息。

       å°†ä½ç½®ä»Žå±å¹•ç©ºé—´è½¬æ¢åˆ°ä¸‰ç»´ç©ºé—´ï¼Œå¹¶èŽ·å–检测射线。

       å°„线与碰撞体相交检测。

       å›žè°ƒè„šæœ¬ã€‚

屏幕位置信息

       æˆ‘们期望拿到指针相对于目标元素的位置,但是原生事件中关于坐标的属性有很多,因此需要甄别哪个坐标信息是有效的。

原生事件坐标属性属性释义clientX&clientY相对于触发事件的应用区域的坐标(可视区域坐标)offsetX&offsetY相对于目标元素的坐标pageX&pageY相对于整个Document的坐标(包含滚动区域)screenX&screenY相对于主显示屏左上角的坐标(基本不会使用)x&y同clientX&clientY

       ä»–们有以下的转换关系(假设原生事件为event,点击的目标元素为canvas):可以得到的结论是:大多坐标属性都可以得到期望的坐标信息,其中offset最直接方便。

空间转换

       ç®€åŒ–射线检测,根据从获取到屏幕上点击的坐标得到三维空间中的一条射线,然后与三维空间中碰撞体进行碰撞检测。

       ä»¥é€è§†ç›¸æœºä¸ºä¾‹ï¼Œå½“获取到屏幕上点击的坐标后,只需要完成以下步骤便可得到射线:

       offset->屏幕空间

       å±å¹•ç©ºé—´->裁剪空间

       è£å‰ªç©ºé—´->世界空间

       æœ‰å›¾å½¢å¼•æ“ŽåŸºç¡€çš„同学比较熟悉我们在渲染时经过了如下变换:

       æ¨¡åž‹ç©ºé—´->世界空间

       ä¸–界空间->观察空间->裁剪空间

       è£å‰ªç©ºé—´->屏幕空间

       ä¼¼ä¹Žåªéœ€è¦å¾—到屏幕空间的坐标,然后再经过几个空间变换的逆变换即可。

offset->裁剪空间

       éœ€è¦å¯¹åƒç´ ï¼ˆpixel),设备独立像素(dips与设备像素比(divicePixelRatio有一个大致的了解,从点击事件中的属性offset获取的坐标信息携带的单位是设备独立像素,因此在求解屏幕空间坐标的时候需要注意分子与分母的单位一致。

       è£å‰ªç©ºé—´æ˜¯XYZ范围皆在-1到1的左手坐标系(裁剪空间可以形象地理解为当渲染范围超出这个区间就会被裁减),此处转换时需注意:

       æ±‚解触摸点在屏幕空间的相对位置时要注意分子与父母应都为像素或都为设备独立像素。

       è£å‰ªç©ºé—´Y轴方向向上,offset参考坐标系Y轴方向向下,因此Y轴需翻转。

       è£å‰ªç©ºé—´ä¸­depth离观察者越远值越大,简单来说近平面是-1远平面是1。

屏幕空间的点->世界空间的射线

       å…¬ç¤ºæŽ¨å¯¼ä¸­çŸ©é˜µä¸ºåˆ—为主序。

       ä»¥é€è§†ç›¸æœºä¸ºä¾‹ï¼Œä¸–界空间经过View变换和Project变换即可转换到裁剪空间,那么从裁剪空间转换到世界空间只需要经历这些变换的逆即可。

检测射线

       ä¸Šå¼ä¸­ä»£å…¥è¿‘平面深度与远平面深度依次求得触摸点在世界坐标空间下近平面与远平面的投影点,连接这两个点即可得到检测射线。

射线相交检测

       ç¢°æ’žä½“由规则几何体组成(长方体,球体等)可以查阅相关射线与几何体相交算法。

脚本回调

       å½“物理引擎返回命中的碰撞体后,可以认为它的Entity这就是当前帧的所有onPointerXXX回调的当事人了,在这个环节只需要根据收集的原生事件进行脚本回调即可。

性能优化

       åŽ‹æµï¼šæ•èŽ·PointerEvent后将原生事件压入数组,待执行到交互系统的tick时,再按序处理相应逻辑。

       Pointer合并:射线检测的性能损耗较大,所以在屏幕上有多个触控点时,我们会按照一定规则合并这几个触控点,因此在触控交互逻辑中每帧的射线检测至多只会执行一次。

       å¤šç›¸æœºåœºæ™¯ï¼šå½“出现多相机时,会依次检查渲染范围包含了点击点的所有相机,并根据相机的渲染顺序进行排序(后渲染优先),如果当前比较的相机渲染场景内没有命中碰撞体且相机的背景透明,点击事件会继续传递至上一个渲染的相机,直至命中或遍历完所有相机。

注意事项

       æ­£å¦‚开篇提到的兼容性问题,如果你的Oasis项目可能运行在低系统版本的机器中,可以导入我们定制的PointerPolyFill。Git源码地址/post/

Free Download Manager最新版本

       Free Download Manager (FDM) 提供了不同版本供用户选择。稳定版本为FDM ver. 3.0 build ,码下其安装文件大小为6.4 Mb,码下你可以从官方网站下载,码下同时也可以找到2.1及更早版本和源码的码下54321趋势线源码选项。

       对于那些希望尝试新功能的码下用户,FDM的码下预览版本(Release Candidate,即3.8 RC)正在开发中,码下同样提供了6.4 Mb的码下安装包。不过请注意,码下这可能是码下一个测试版本,可能包含一些未完全稳定的码下功能。

       对于那些追求轻便的码下jvm 线程实现源码用户,FDM还提供了轻量版本,码下即FDM Lite ver. 3.0,其大小仅为2.1 Mb,功能相对较少,包括BT支持、视频格式转换和上传管理器等功能。这些功能可以通过后续下载安装的插件来添加,如Video Conversion plugin (2. Mb) 和 Bittorrent plugin (1. Mb)。

       安装轻量版时,若选择Chinese语言,可能会遇到安装后界面显示乱码的情况。遇到此问题,不必担心,动手编译android源码只需在启动FDM后,进入工具栏,找到第二个选项的最后一项,选择Language选项,然后选择"Chinese(CHS)"即可解决问题。

免费下载利器!全面解析FDM工具

       Free Download Manager(FDM)是一款开源且免费的下载管理软件,支持多点续传、多线程、计划任务以及整站下载。最新版本6.带来多项新功能和改进,包括下载完成后的外部程序启动、默认保存设置、埃及离中国源码以及自动清理已完成下载。FDM具备音频和视频直接预览与播放功能,源代码开源,确保无广告和病毒,适应不同网络连接,实现高效下载速度,提升可达%。

       FDM功能强大,使用技巧如下:

       1. 关联浏览器:在FDM中,设置浏览器默认为FDM下载,以提高下载速度。只需在右上角选择设置,点击浏览器集成选项,怎样保存语言源码勾选浏览器类型即可。

       2. 流量限制慢速下载:设置下载和上传速度限制,最大化下载速度,设置为无限制和k上传速度。使用蜗牛标志以慢速下载,保持正常上网体验。

       3. HTTP和BT下载:关联浏览器后,FDM自动后台下载文件。若未关联,复制链接,点击右上角加号并粘贴地址。种子文件直接拖入软件主页。下载位置设置在下载时点击“保存到”选项。

       4. 设置标签:为文件添加标签便于分类管理。点击加号图标输入标签名称。FDM自带标签,如“全部活动”。下载文件较多时,通过标签页查看。下载开始时显示网址、网速等信息,点击隐藏。

       FDM安装步骤如下:

       1. 浏览器输入官网网址:freedownloadmanager.org...,选择下载版本。

       2. 双击下载程序fdm_x_setup.exe运行。

       3. 选择安装类型为所有用户。

       4. 更改安装路径,点击“Next”。

       5. 两次点击“Next”。

       6. 点击“Install”。

       7. 软件安装中。

       8. 软件安装完成,打开即可使用。

       FDM下载效果如图所示。

       了解更多详情,请访问原文链接。

consulmanager部署和使用

       书接上回 渐行渐远:prometheus的安装以及监控指标的配置

       这次主要介绍如何使用consulmanager 去监控各个监控项

       一 consulmanager安装

       github.com/starsliao/Te... #consulmanager项目地址

       consulmanager 是一个开源的项目,现在已经更名为tensuns,有兴趣的可以自行研究

       要想安装consulmanager,必须先安装下面三个 docker ,docker-compase, consul

       1.1 安装consul

       1.1.1 安装consul-基于centos7

       1.1.2 生成uuid

       1.1.3 配置文件设置

       1.1.4 启动consul

       访问方式 ip:

       1.2 安装docker和docker-compase

       1.2.1 安装docker

       1.2.2 安装docker-compase

       二 安装 ConsulManager

       2.1 下载源码

       下载地址 github.com/starsliao/Co...

       目录结构如下:

       2.2 docker-compose.yml 内容

       2.3 启动并访问

       三 配置consulmanager

       3.1 云主机管理

       3.1.1 同步云主机

       云主机管理就是可以自动同步云服务器到consulmanager这个上面

       前提是需要你在云账号里面创建access key 和secret key,这个账号还需要有访问主机的权限

       新增云资源

       创建完成之后,你可以手动同步,也可以自动同步,然后去云主机列表查看,是否同步过来了

       3.1.2 批量云主机监控

       前提是每天主机需要安装好node-exporter

       选定好指定的组,选择好系统,点击生成配置,然后把这个配置,粘贴到prometheus的配置文件中

       进行重启prometheus

       然后进去到prometheus-target里进行查看

       当然如果你的node-exporter的端口不是,怎么办,打开cousul的web页面,可以自定义设置

       3.1.3 导入对应的模版

       导入ID:

       详细URL: grafana.com/grafana/das...

       3.1.4 设置告警规则

       3.2 blackbox站点监控设置

       3.2.1. 配置Blackbox_Exporter

       在Web页面点击

       Blackbox 站点监控/Blackbox 配置,点击

       复制配置,如下所示:

       复制配置到 blackbox.yml,清空已有的配置,把复制的内容粘贴进去,重启blackbox_exporter

       3.2.2 配置Prometheus

       在Web页面点击 Blackbox 站点监控/Prometheus 配置,点击复制配置。编辑Prometheus的

       prometheus.yml,把复制的内容追加到最后,reload或重启Prometheus

       3.2.3. 配置Prometheus告警规则

       在Web页面点击

       Blackbox 站点监控/告警规则,点击复制配置。

       编辑Prometheus的配置文件,添加 rules.yml,然后把复制的内容粘贴到rules.yml里面,reload或重启Prometheus。

       然后去prometheus查看告警规则是否生成

       3.2.4. 查看Prometheus

       在Prometheus的Web页面中,点击Status-Targets,能看到新增的Job即表示数据同步到Prometheus。

       3.2.5 新增tcp或者/grafana/das...

       最终在grafana访问的效果如下:

       四 总结

       到这里基本的监控项和报警规则都已经设定好了,接下来会介绍告警的方式和具体实现

相关栏目:知识

.重点关注