1.【jsbsim学习】飞行器模型配置文件解读
2.电脑开机出现蓝屏stop:0x00000050(0xfffffff9,码设0x00000000,0x80544EID,0x00000000)
3.关于Cocos2dx-js游戏的jsc文件解密
4.当creator遇上protobufjs|相遇
5.JBoss Webå Tomcatçåºå«
【jsbsim学习】飞行器模型配置文件解读
jsbsim是用于飞行力学仿真的一款开源软件,旨在实现类似IL2/1战争雷霆的码设空战游戏。在Unity中通过C#封装一个简化版的码设气动仿真模型,使模型在接收飞行器当前状态后,码设能输出6个自由度上的码设力/力矩,以接入Unity的码设e语言捆绑源码刚体组件。
以jsbsim自带的码设f-模型配置文件f.xml为例,解析其中内容。码设
从xml根节点入手,码设metrics、码设mass_balance、码设aerodynamics等部分尤为关键。码设地面互动、码设推力、码设自动控制等稍后关注,码设因为jsbsim最初专注于自动控制策略仿真,因此flight_control模块较为详细。
配置文件中的缩写繁多,不易理解,但只要直接导入Unity的刚体组件即可。metrics节点描述了飞行器尺寸、位置指标,明确了飞行器坐标系中的VRP概念,即确定飞行器“鼻尖”与坐标原点之间的偏移。
mass_balance节点包含飞行器质量分布参数,涉及惯性张量等理论力学知识点。对于三维情况下刚体角动量与瞬时角速度方向的差异,理解惯性张量有助于预测飞行器在力矩作用下的旋转行为。
aerodynamics节点包含大量表格数据,jsbsim通过查表实现非线性公式/函数计算,采用线性插值处理。节点下包含轴对应飞行器沿x、y、z轴平动、照妖镜源码下载绕轴转动的六个刚体运动自由度。
重点分析了DRAG轴、SIDE轴、LIFT轴、PITCH轴、YAW轴,这些变量描述了飞行器在不同轴向的气动特性。若无法理解某个变量,可在Google搜索或探索jsbsim源代码中找到相关描述。
完成f.xml配置文件解析后,下一步将编写程序加载配置文件并执行动力学运算。若遇到未在Google搜索到的变量,尝试在jsbsim源代码中进行全局搜索,可获得更多线索。
电脑开机出现蓝屏stop:0x(0xfffffff9,0x,0xEID,0x)
蓝屏"的硬件原因及解决
"蓝屏"现象多和内存大小、CPU频率、光驱、硬盘碎片等等关系密切......在计算机的使用过程中,经常会遇到蓝屏的情况。对于初学者来讲,好象就是一场电脑灾难一样,不知所措。其实只要了解了原因之后就不用怕了。造成计算机蓝屏的原因有很多种,硬件方面的原因总体可以概括为以下几种:
一、屏幕显示系统忙,请按任意键继续……
1、虚拟内存不足造成系统多任务运算错误
虚拟内存是WINDOWS系统所特有的一种解决系统资源不足的方法,其一般要求主引导区的硬盘剩余空间是其物理内存的2-3倍。而一些发烧友为了充分利用空间,将自己的硬盘塞到满满的,忙记了WINDOWS这个苛刻的要求。结果导致虚拟内存因硬盘空间不足而出现运算错误,concurrent hashmap源码所以就出现蓝屏。要解决这个问题好简单,尽量不要把硬盘塞得满满的,要经常删除一些系统产生的临时文件、交换文件,从而可以释放空间。或可以手动配置虚拟内存,选择高级,把虚拟内存的默认地址,转到其他的逻辑盘下。这样就可以避免了因虚拟内存不足而引起的蓝屏。
2、CPU超频导致运算错误
超频对于发烧友来说是常事,所以由超频所引起的各种故障也就在所难免了。超频,就本身而言就是在原有的基础上完成更高的性能,但由于进行了超载运算,造成其内部运算过多,使CPU过热,从而导致系统运算错误。有些CPU的超频性能比较好,如INTEL的赛扬处理器和AMD-K6-2处理器还算较好的,但有时也会出现一些莫名其妙的错误。(例如:我曾试过将INTEL赛扬A,在超频到时,软驱在没有接受命令时,进行读盘操作)。 INTEL的低于的CPU以及AMD-K5的超频能力就不是那么好。建议高档的CPU要超频时,那么散热工作一定要做好,最好装一个大的风扇,再加上一些硅胶之类的散热材料。至于一些低档的rolc指标源码CPU我建议你就最好不要超频了,免得超频达不到预想的效果反而经常出现蓝屏影响计算机的正常速度。
二、内存条的互不兼容或损坏引起运算错误
这时个最直观的现象,因为这个现象往往在一开机的时候就可以见到,根本启动不了计算机,画面提示出内存有问题,问你是否要继续。造成这种错误是物理上的损坏内存或者内存与其它硬件不兼容所致。这时候只有换过另外的内存了。
三、光驱在读盘时被非正常打开所至
这个现象是在光驱正在读取数据时,由于被误操作打开而导致出现蓝屏。这个问题不影响系统正常动作,只要再弹入光盘或按ESC键就可以。
以上是我在维护计算机中碰到导致蓝屏的几种原因,或许还会有其他一些莫名其妙的问题导致计算机出现蓝屏。不管怎样,遇到这类问题后,应先仔细分析问题发生的原因,然后再着手解决。
四、硬件剩余空间太小或碎片太多
由于Win9X运行时需要用硬盘作虚拟内存,这就要求硬盘必须保留一定的自由空间以保证程序的正常运行。一般而言,最低应保证MB以上的空间,否则出现“蓝屏”很可能与硬盘剩余空间太小有关。另外,硬盘的碎片太多,也容易导致“蓝屏”的出现。因此,每隔一段时间进行一次碎片整理是必要的。
五、系统硬件冲突
这种现象导致“蓝屏”也比较常见。shutdown 命令源码实践中经常遇到的是声卡或显示卡的设置冲突。在“控制面板”→“系统”→“设备管理”中检查是否存在带有**问号或感叹号的设备,如存在可试着先将其删除,并重新启动电脑,由Win9X自动调整,一般可以解决问题。若还不行,可手工进行调整或升级相应的驱动程序。
"蓝屏"的软件原因及解决
与硬件密切联系的是软件,有时软件在"蓝屏"现象中也"功不可没",加载了过多的程序、注册表有问题、软硬不兼容、驱动程序有问题,相对于硬件原因来说要不易察觉些,可要多加注意.........
一、启动时加载程序过多
不要在启动时加载过多的应用程序(尤其是你的内存小于MB),以免使系统资源消耗殆尽。正常情况下,Win9X启动后系统资源应不低于%。最好维持在%以上,若启动后未运行任何程序就低于%,就需要卸掉一部分应用程序,否则就可能出现“蓝屏”。
二、应用程序存在着BUG
有些应用程序设计上存在着缺陷或错误,运行时有可能与Win9X发生冲突或争夺资源,造成Win9X无法为其分配内存地址或遇到其保护性错误。这种BUG可能是无法预知的,免费软件最为常见。另外,由于一些用户还在使用盗版软件(包括盗版Win9X),这些盗版软件在解密过程中会破坏和丢失部分源代码,使软件十分不稳定,不可靠,也常常导致“蓝屏”。
三、遭到不明的程序或病毒攻击所至
这个现象只要是平时我们在上网的时候遇到的,当我们在冲浪的时候,特别是进到一些BBS站时,可能暴露了自己的IP,被"黑客"用一些软件攻击所至。对互这种情况最好就是在自己的计算机上安装一些防御软件。再有就是登录BBS要进行安全设置,隐藏自己IP。
四、版本冲突
有些应用程序需调用特定版本的动态链接库DLL,如果在安装软件时,旧版本的DLL覆盖了新版本的DLL,或者删除应用程序时,误删了有用的DLL文件,就可能使上述调用失败,从而出现“蓝屏”。不妨重新安装试一试。
五、注册表中存在错误或损坏
很多情况下这是出现“蓝屏”的主要原因。注册表保存着Win9X的硬件配置、应用程序设置和用户资料等重要数据,如果注册表出现错误或被损坏,就很可能出现“蓝屏”。如果你的电脑经常出现“蓝屏”,你首先就应考虑是注册表出现了问题,应及时对其检测、修复,避免更大的损失。
六、软硬件不兼容
新技术、新硬件的发展很快,如果安装了新的硬件常常出现“蓝屏”,那多半与主板的BIOS或驱动程序太旧有关,以致不能很好支持硬件。如果你的主板支持BIOS升级,应尽快升级到最新版本或安装最新的设备驱动程序。
关于Cocos2dx-js游戏的jsc文件解密
上期关于Cocos2dx-js游戏的jsc文件解密教程引发了一些疑问,本文将解答一些常见问题。
首先,我们通过CocosCreator开发工具构建并编译一个案例js工程,发现游戏中存在脚本加密选项。构建后,得到一个简单的样本APK。在APK中,我们通过Jadx-gui工具解析Java层源码,关注assets目录下二进制源代码的加载情况。在入口Cocos2dxActivity的onLoadNativeLibraries函数中,我们找到了加载libcocos2djs.so文件的步骤,该文件位于AndroidManifest.xml中。
初步分析显示,加载Assets目录资源的操作不在Java层进行。接着,我们参考“jsc反编译工具编写探索之路”一文,将注意力转移到libcocos2djs.so文件上。在Cocos2dx源码中,我们发现其使用的是xxtea加密和解密算法,与Cocos2dx-lua的加密解密过程类似。
在游戏实例分析部分,我们以两个游戏案例为例进行解密。对于游戏A,通过十六进制编辑器搜索libcocos2djs.so文件中的Cocos Game字符串,未发现相关信息。使用IDA分析工具对libcocos2djs.so进行深入研究,发现导出函数名清晰,没有添加额外的安全手段。通过搜索xxtea / key相关函数,我们找到了几个相关函数。在jsb_set_xxtea_key函数中,我们尝试直接设置key值,并发现一个可疑的参数v,用于解密jsc文件。通过回溯该函数的调用路径,我们成功获取了Key值,并成功解密游戏文件。
对于游戏B,虽然Key值不像游戏A那样明文显示,但通过搜索附近的字符串,我们发现可疑的Key值与常规的Cocos Game字符串共存。尝试使用此Key值解密游戏文件,同样取得了成功。对比游戏A和游戏B的关键代码,我们发现密匙都在applicationDidFinishLaunching函数内部体现。此函数在Cocos2d-x应用入口中,当应用环境加载完成时回调。理解CocosCreator构建项目的过程后,我们知道游戏应用环境加载完毕后,该函数内部将Key值传入解密函数中,解密函数将jsc文件转换为js文件,并拷贝到内存中,游戏开始调用js文件,进入游戏界面。
在其他关键函数的分析中,我们注意到在xxtea_decrypt函数中存在memcpy和memset操作,表明在进行内存拷贝数据。通过CocosCreator源代码jsb_global.cpp文件,我们得知传入xxtea_decrypt函数的第三个参数即为解密的Key值。因此,我们可以通过Hook libcocos2djs.so文件加载时的xxtea_decrypt函数来获取Key值。使用Frida框架编写简单的js脚本进行Hook操作,可以成功获取Key值。在获取Key值后,可以参照CocosCreator源代码实现解密逻辑,或者利用封装好的解密程序进行文件解密。
最后,对于解密工具的选择,我们推荐使用一些已封装的加解密程序,例如jsc解密v1.,它能够满足当前Cocos2dx版本的文件加解密需求,并提供较为简单的操作方法。同时,欢迎各位分享自己的解密方法和见解,共同推动社区的发展。
当creator遇上protobufjs|相遇
在探索cocos H5开发的最佳实践时,我已离不开nodejs、npm和各种脚手架工具。首先,从初始化package.json文件开始,通过npm init命令创建一个文件,用于管理项目中的nodejs第三方模块。
在cocos creator项目中,protobufjs的使用至关重要。安装步骤如下:通过npm install protobufjs@5 --save命令引入protobufjs 5.x版本,若需要全局使用,可以使用npm install -g protobufjs@5。这个版本虽然不支持最新的6.x,但其动态编译功能在cocos creator中更为便利。
在creator项目中,我们以Player.proto文件为例,展示了如何动态编译文件,生成js对象。在静态语言中,我们会使用protoc命令将proto文件编译为c++/java代码,但在javascript中,protobufjs直接提供了动态编译的功能。
然而,当尝试在cocos-jsb环境中运行protobufjs时,可能会遇到问题。这涉及到javascript在浏览器、nodejs和cocos-jsb上的不同文件接口。在cocos-jsb,我们需要处理的是jsb.fileUtils.getStringFromFile接口,这与浏览器和nodejs的文件操作有所不同。
为了解决这个问题,可能需要修改protobufjs源码以适应cocos-jsb。此外,还需注意creator项目中资源路径的管理,通常需要将proto文件放在assets/resources/pb/目录下,并使用cc.url.raw获取正确的资源路径。
尽管通过修改源码可以解决问题,但并不是长久之计。为寻求更稳定的方法,我已创建了一个creator和protobufjs的示例项目,未做任何源码改动,链接如下:[github.com/ShawnZhang...](github.com/ShawnZhang...)。继续关注我的系列文章《探索cocosH5正确的开发姿势》,以了解更多无需修改源码的解决方案和proto文件预编译的用法。
JBoss Webå Tomcatçåºå«
JBoss Webå Tomcatçåºå«
å¨Web2.0ç浪潮ä¸ï¼åç§é¡µé¢ææ¯åæ¡æ¶ä¸ææ¶ç°ï¼ä¸ºæå¡å¨ç«¯çåºç¡æ¶ææåºäºæ´é«ç稳å®æ§åå¯æ©å±æ§çè¦æ±ãè¿å¹´æ¥ï¼ä½ä¸ºå¼æºä¸é´ä»¶çå ¨ çé¢å¯¼è ï¼JBosså¨J2EEåºç¨æå¡å¨é¢åå·²æ为åå±æä¸ºè¿ éçåºç¨æå¡å¨ãå¨å¸åºå æçåæå¡æ»¡æ度ä¸åå¾äºå·¨å¤§çæåï¼ä¸æ¯«ä¸éè²äºå ¶å®çéå¼æº ç«äºå¯¹æï¼å¦WebSphereãWebLogicãApplication ServerãJBoss Webç诸å¤ä¼è¶æ§è½ï¼æ£æ¯å ¶å¹¿ä¸ºæµè¡çåå ã
åºäºTomcatå æ ¸ï¼éèäºè
Tomcat æå¡å¨æ¯ä¸ä¸ªå è´¹çå¼æ¾æºä»£ç çWeb åºç¨æå¡å¨ï¼ææ¯å è¿ãæ§è½ç¨³å®ï¼èä¸å è´¹ï¼å èæ·±åJava ç±å¥½è çåç±å¹¶å¾å°äºé¨å软件å¼ååç认å¯ãå ¶è¿è¡æ¶å ç¨çç³»ç»èµæºå°ï¼æ©å±æ§å¥½ï¼ä¸æ¯æè´è½½å¹³è¡¡ä¸é®ä»¶æå¡çå¼ååºç¨ç³»ç»å¸¸ç¨çåè½ãä½ä¸ºä¸ä¸ªå°åçè½» é级åºç¨æå¡å¨ï¼Tomcatå¨ä¸å°åç³»ç»å并å访é®ç¨æ·ä¸æ¯å¾å¤çåºåä¸è¢«æ®é使ç¨ï¼æ为ç®åæ¯è¾æµè¡çWeb åºç¨æå¡å¨ã
èJBoss Webéç¨ä¸çæä¼çå¼æºJava Webå¼æï¼ å°Java社åºä¸ä¸è½½éæ大ï¼ç¨æ·æ°æå¤ï¼æ åæ¯ææå®å¤çTomcatå æ ¸ä½ä¸ºå ¶Servlet容å¨å¼æï¼å¹¶å ä»¥å®¡æ ¸åè°ä¼ãå纯çTomcatæ§è½æ éï¼å¨å¾å¤å°æ¹è¡¨ç°ææ¬ ç¼ºï¼å¦æ´»å¨è¿æ¥æ¯æãéæå 容ã大æ件åHTTPSçãé¤äºæ§è½é®é¢ï¼Tomcatçå¦ä¸å¤§ç¼ºç¹æ¯å®æ¯ä¸ä¸ªåéçéæå¹³å°ï¼ä» è½è¿ è¡Javaåºç¨ç¨åºãä¼ä¸å¨ä½¿ç¨æ¶Tomcatï¼å¾å¾è¿éåæ¶é¨ç½²Apache Web Server以ä¸ä¹æ´åãæ¤é ç½®è¾ä¸ºç¹çï¼ä¸ä¸è½ä¿è¯æ§è½çä¼è¶æ§ã
JBosså¨Tomcatçåºç¡ä¸ï¼å¯¹å ¶è¿è¡æ¬å°åï¼å°Tomcat 以å åµçæ¹å¼éæå° JBoss ä¸ãJBoss Webéè¿ä½¿ç¨APRåTomcatæ¬å°ææ¯çæ··å模åæ¥è§£å³Tomcatç诸å¤ä¸è¶³ãæ··åææ¯æ¨¡åä»ææ°çæä½ç³»ç»ææ¯éæä¾äºæ好ç线ç¨åäºä»¶å¤çã ç»æï¼JBoss Webè¾¾å°äºå¯æ©å±æ§ï¼æ§è½åæ°å¹é çè³è¶ è¶äºæ¬å°Apache HTTPæå¡å¨æè IISãè¬å¦JBoss Webè½å¤æä¾æ°æ®åºè¿æ¥æ± æå¡ï¼ä¸ä» æ¯æ JSP ç Java ææ¯ï¼åæ¶è¿æ¯æå ¶ä» Web ææ¯çéæï¼è¬å¦ PHPã.NET 两大éµè¥ã
æ ååæ¯åå°ææ¯ä¾èµé£é©ï¼ä¿æ¤æèµæ好çæ¹å¼ãJBoss Webçå æ¯æå ¨ç³»åJEE Webæ åï¼ä»æ ¹æ¬ä¸ä¿è¯äºåºç¨âä¸æ¬¡å¼åï¼å°å¤è¿è¡âçç¹ç¹ï¼ä½¿åºç¨æåè½æ¹ä¾¿å°å¨JBoss Webåå ¶ä»Java Webæå¡å¨ä¹é´è½»æè¿ç§»ã