mod.js分析
MODIS卫星监测陕西地表热异常点时空分布规律
草原 , 中麦 区 占 7 . 8 , 区 占 1 . 9 ,草 其 4 4 林 3 1
原 占 53 % 。 .4
由图 2可见 ,陕 西省地 表 热异 常点 主要 分 布在 4
个较 密集 区域 :①陕 北北部 榆林 、神木 、府 谷一 线 ,主要 以草 原火为 主 ,其 中神木 县境 内有 三处
收 稿 日期 :2 1 - 8 1 00 0 — 2
作 者 简 介 :王钊 (9 O ) 18 一 ,男 ,甘 肃 庆 阳人 ,学 士 ,工 程 师 ,主 要 从 事 遥 感 应 用 工 作 。
亡 风险 ; 为 由人户 线路 引入 雷击 电流产 生 的接 R
R一 0 3 .9 4 6× 1 < RT。 0
2 数 据 和 方 法 2 1 数 据 来 源 .
区的西侧 ,主要 以林 火 为主 ,密集 区域 主要为森
林 防火演 练区域 ;③关 中南 部宝 鸡 、西安 、{ 南 胃 南部 地 区 ,主要 以秸秆 火 和人工 热源 为 主 ;④ 大
的水 体周边 ,诸 如陕北 红 碱淖 、黄 河渭南 段 、渭 河沿 线 、陕南汉 江 ,主要 为春秋 烧荒 火产 生 的地 表热 异常点 。
3 地 表 热 异 常 点 分 布 规 律
图 1为 2 0 - 2 0 0 1 0 9年 陕西 省地 表 热 异 常 点
逐年变 化特征 。由图 1 可见 ,2 0 - 2 0 0 1 0 5年地 表
热异 常点逐 年呈 明显增 加 的趋 势 ,地 表热 异常 点 明显增 多 的主要 原 因是 经济社 会 的发展 ,人类 活 动增 多导致 。2 0 0 5年 开始地 表热异 常点 减少 , 这 主要 与政府 大力控 制秸 秆焚烧 有关 。 图 2为 陕 西省 地 表热 异 常点 空 间分 布 特征 。 对 不 同下 垫 面 类 型 的地 表 热 异 常 点 统 计 发 现 :地表 热异 常点 主要分 布在 关 中麦 区、林 区和
我的世界CSM2是什么 CustomStuff2MOD怎么使用
我的世界CSM2是什么 CustomStuff2MOD怎么使用在我的世界中我们不仅可以体验正常的游戏,还可以体验各种mod,Custom Stuff 2在我的世界中是一个自定义物品MOD,我们可以利用它来实现添加方块物品等功能,但是Custom Stuff 2的使用方法有很多小伙伴都不是太清楚,那么下面小编就给大家详细介绍一下。
注意下面的中/、和=都是全角字,若想简单复制粘贴请先用替换工具换成半角的/、和=其实这个mod自配的Document已经把他的用法讲的很详细了,所以这里我只是抛砖引玉地简化讲下这个mod玩法。
这里我不细讲javascript,因为一般玩家可能不需要用到javascript(虽然我后面举例可能要用到比较难的javascript),只是往里面添加方块的话只需要注意javascript的“区分大小写”的特性就可以了。
这个Mod可以实现往里面添加方块,物品,改变图形界面(GUI,用户图形接口),在地图上生成方块等功能,可惜不能生成生物,应该会在以后的版本里改进。
首先先安装CustomStuff2,将这个mod下载之后放到.Minecraftmods下面就好了。
启动minecraft,这个mod就会在.minecraftconfig文件夹下面生成一个叫CustomStuff的文件夹,打开,就会看到里面有个mods文件夹,在这里我们可以添加自制的方块和物品。
【例1】例如我们可以尝试做一个蘑菇阶梯:①先在这个文件夹里面新建一个叫mushroomStairs的文件夹,打开,然后在里面新建一个文本文档,起名为mod.js,用记事本打开(当然也可以用Notepad++等打开),往里面输入如下代码:(注意大小写!)config.addBlockIdProperty(“StairId”,2000);mod.addBlock(“mushroomStair.js”,”stairs”);解释下上面这段话的功效,第一句config.addBlockIdProperty(“StairId”,2000);是实现了往你的自制方块或物品的cfg文件中添加登记一个名为“StairId”的“方块id”属性的功能,它的初始值为2000,cfg文件保存在config文件下面,众所周知玩家是可以通过修改mod的cfg文件来更改mod 的功能的,这个也不例外。
(陈慧南 第3版)算法设计与分析——第6章课后习题答案
⑥ 选择作业 1,则 X 6, 2,3,5,1 。将其按照期限 di 非减次序排列可
得:
ID
di
5
1
6
2
3
3
1
3
2
4
作业5
作业3 作业2
-1
0
1
2
3
4
作业6 作业1(冲突)
该集合无可行排序,因此 X 6, 2,3,5,1 不可行, X 6, 2,3,5 ;
3
⑦ 选择作业 0,则 X 6, 2,3,5, 0 。将其按照期限 di 非减次序排列
可得:
ID
di
5
1
0
1
6
2
3
3
2
4
作业5
作业3 作业2
-1
0
1
2
3
4
作业0(冲突)作业6
该集合无可行排序,因此 X 6, 2,3,5, 0 不可行,X 6, 2,3,5 ;
⑧ 选择作业 4,则 X 6, 2,3,5, 4 。将其按照期限 di 非减次序排列
可得:
ID
Hale Waihona Puke di516
12,5,8,32, 7,5,18, 26, 4,3,11,10, 6 。请给出最优存储方案。
解析:首先将这 13 个程序按照程序长度非降序排列,得:
程序 ID
9 8 1 5 12 4 2 11 10 0 6 7 3
程序长度 ai 3 4 5 5 6 7 8 10 11 12 18 26 32
根据定理可知,按照程序编号存放方案如下:
解析:已知 Prim 算法时间复杂度为 O n2 ,受顶点 n 影响;
Kruskal 算法时间复杂度为 O m logm ,受边数 m 影响;
NODE.js入门手册
本书中的代码案例都在 Node.js 0.4.9 版本中测试过,可以正确工作。
读者对象
本书最适合与我有相似技术背景的读者: 至少对一门诸如 Ruby、 Python、 PHP 或者 Java 这样面向对象的语言有一定的经验;对 JavaScript 处于初 学阶段,并且完全是一个 Node.js 的新手。
最后,用户需要上传图片,所以我们需要上传处理功能来处理这方 面的细节
我们先来想想,使用 PHP 的话我们会怎么构建这个结构。一般来说我们 会用一个 Apache HTTP 服务器并配上 mod_php5 模块。 从这个角度看,整个“接收 HTTP 请求并提供 Web 页面”的需求根本不需 要 PHP 来处理。
这里指的适合对其他编程语言有一定经验的开发者,意思是说,本书不会 对诸如数据类型、变量、控制结构等等之类非常基础的概念作介绍。要读 懂本书,这些基础的概念我都默认你已经会了。
然而,本书还是会对 JavaScript 中的函数和对象作详细介绍,因为它们与 其他同类编程语言中的函数和对象有很大的不同。
不过,这些毕竟都是前端技术,尽管当想要增强页面的时候,使用 jQuery 总让你觉得很爽, 但到最后, 你顶多是个 JavaScript 用户, 而非 JavaScript
开发者。
然后,出现了 Node.js,服务端的 JavaScript,这有多酷啊?
于是, 你觉得是时候该重新拾起既熟悉又陌生的 JavaScript 了。 但是别急, 写 Node.js 应用是一件事情;理解为什么它们要以它们书写的这种方式来 书写则意味着——你要懂 JavaScript。这次是玩真的了。
当请求被服务器接收并通过路由传递之后, 需要可以对其进行处理, 因此我们需要最终的请求处理程序
基于模型检测的系统生存性分析
侧 重 的角度影 响度量 生存性 的方法 。已有 的针对 不 同的生
存 性度量 的分析 方法 ,采用 的主要 是数值 计算方 式 。形 式
化 方法 用于分析 生存性 的研 究是一 种新 的尝试 。
本 文采 用模 型检 测来进 行生存 性 的分 析 , 型检测 是 模
一
种形 式化验证 方法 ,已应 用于协议 分析 、实 时系统验 证
关注 ,内容涉 及 网络设计 、结构 规划 以及系 统软硬 件 的实
等领域 。。模 型检测 能够 自动验证 ,并能 生成 反例 。 。 …
现 。。文献[] 4研究了提供移动及个人通信业务的无线接 入网络 , 分析了错误对生存性的影响。 文献【] 5针对通信网
络 ,给 出生存性 度量 ,在 络 的 G F模 型基础 上 ,提 出 O
中图分类 T31 号: P0
基 于模 型检 测的 系统生存性 分析
周清雷 ,张 兵 ,席 琳
( 郑州大学信息工程学院 ,郑州 4 0 5 ) 502 摘 要 :提出一种采用模型检测进行 系统 生存性分析 的形式化方法 。给出系统 所处环境及主要提供的服务 ,引入灾难和错误等因素,建立
系统 生存性模型 。通过描述系统的可生存能力,确定其 生存性需求并转换为相应的逻辑表示。以电话接入 网络为例 ,利用 P S 对系统 RIM 进行建模及验证 ,结果表明 ,该形式化方法可以规范并简化 生存性分析过程 。
e v r n n n h an s r i e , h u v v b lt yse i d ld o n r d c n e f co s o ia tr a d e r r Th y t m ’ s r i a l y n io me ta d t e m i e c s t e s r i a ii s t m s mo e e n i to u i g t a t r fd s se n r o . e s se S u v v bi t v y h i r q ie n sd t r n d a d c n e t d t h e u r me t ee mi e n o v re o t emod ll g c I t k st e t lp o e a c s t r s a x mp e t t o si l me t d b h i a o i . t a e h e e h n c e s wo k a n e a l , heme h d i mp e n e y t e ne P S , n e u t h w h t hemo e h c i g c n r g l t , n i lf e s r i a ii n l s sp o e s RI M a d r s lss o t a d l e k n a e u a e a d smp i t u v b l y a ay i r c s . t c yh v t
个人关于模块化的理解
个⼈关于模块化的理解个⼈对于模块化的探索前⼀段时间我们前端的项⽬组有⼀个分兴趣⼩组的计划.因为那时候整个⼩组只有9个⼈,所以就分了三个⼩组,分别是 `性能优化`, `模块化`, `新技术` 三个⼩组.⽽我那进了"模块化研究"⼩组.所以嘞.研究模块化以及如何让项⽬的模块化更加合理和⾼效是我们⼩组的主要⽬的.⾸先,在实⾏模块化之前,得先巩固模块化开发的理论基础,因为理论是实践的基础。
只有这样,在过程中理论与实践相结合,才有可能达到最满意的效果.什么是模块化?模块化就是为了减少系统耦合度,提⾼⾼内聚,减少资源循环依赖,增强系统框架设计。
让开发者便于维护,同时也让逻辑相同的部分可复⽤模块化开发:针对js、css,以功能或业务为单元组织代码。
js⽅⾯解决独⽴作⽤域、依赖管理、api暴露、按需加载与执⾏、安全合并等问题,css⽅⾯解决依赖管理、组件内部样式管理等问题。
任何事物都有⼀个过程,那么模块化的过程通俗点讲就是:模块化的过程就是:1、拆分将整个系统按功能,格式,加载顺序,继承关系分割为⼀个⼀个单独的部分.注意:拆分的粒度问题,可复⽤问题,效率问题.如何这些问题处理的不好,就有可能出现不想要的后果。
2、归纳将功能或特征相似的部分组合在⼀起,组成⼀个资源块.3、总结将每个资源块按找需求,功能场景以及⽬录约束放到固定的地⽅以供调⽤.模块的历程模块化的发展也是从草根⼀步⼀步⾛过来的。
从最开始到现在成熟⽅案:1. namespace2. sass,less3. AMD&CMD4. html模版5. grunt,gulp,webpack6. FIS,YUI,KISSY在亘古年代,机智的⼈们为了处理javascript的命名冲突,功能块管理等等,在js中使⽤了namespace。
我们可以说这是最原始的模块化管理模式。
如下:// 使⽤namespace之前var name={};var name2={};// 使⽤namespace之后var nameSpace={};nameSpace.branchOne={name:{}};nameSpace.branchTwo={name:{}};添加命名空间,达到拆分js逻辑的⽬的。
NodeJS 技术讲解 ppt课件
NodeJS遇到I/O事件会创建一个线程去执行,然后主线程会继续往下执行的, 因此,拿profile的动作触发一个I/O事件,马上就会执行拿timeline的动作,两 个动作并行执行,假如各需要1S,那么总的时间也就是1S。它们的I/O操作 执行完成后,发射一个事件,profile和timeline,事件代理接收后继续往下执 行后面的逻辑,这就是NodeJS非阻塞I/O的特点。
简单说,就是在程序中设置两个线程:一个负责程序本身的运行,称为"主 线程";另一个负责主线程与其他进程(主要是各种I/O操作)的通信,被 称为"Event Loop线程"(可以译为"消息线程")。
PPT课件
25
上图主线程的绿色部分,还是表示运行时间,而橙色部分表示空闲时间。 每当遇到I/O的时候,主线程就让Event Loop线程去通知相应的I/O程序,然 后接着往后运行,所以不存在红色的等待时间。等到I/O程序完成操作, Event Loop线程再把结果返回主线程。主线程就调用事先设定的回调函数, 完成整个任务。
PPT课件
22
如果某个任务很耗时,比如涉及很多I/O(输入/输出)操作,那么线程的运行 大概是下面的样子。
上图的绿色部分是程序的运行时间,红色部分是等待时间。可以看到,由于 I/O操作很慢,所以这个线程的大部分运行时间都在空等I/O操作的返回结果。 这种运行方式称为"同步模式"(synchronous I/O)或"堵塞模式"(blocking I/O)。
理。
等到饭菜做号了,会喊号码,我们拿到了自己的饭菜,进行后续的处理(吃饭)。
这个喊号码的动作在NodeJS中叫做回调(Callback),能在事件(烧菜,I/O)处
常用文件格式一览表
DOOM保存的文件
DSM
Dynamic Studio音乐模块(MOD)文件
DSP
Microsoft Developer Studio工程文件
DSQ
Corel QUERY(查询)文件
DST
刺绣机图形文件
DSW
Microsoft Developer Studio工作区文件
DTA
World Bank(世界银行)的STARS数据文件
Perfect文档、Microsoft
Word文档;DisplayWrite文档
DOT
Microsoft Word文档模板
DPL
Borland Delph 3压缩库
DRV
驱动程序
DRW
Micrografx Designer/Draw;Pro/E绘画文件
DSF
Micrografx Designer VFX文件
IV
Open Inventor中使用的文件格式
IVD
超过20/20微观数据维数或变量等级文件
IVP
超过20/20的用户子集配置文件
IVT
超过20/20表或集合数据文件
IVX超过20/20微数据目 Nhomakorabea文件IW
Idlewild屏幕保护程序
IWC
Install Watch文档
J
J62
Ricoh照相机格式
JAR
HTM,HTML
超文本文档
HTT
Microsoft超文本模板
HTX
扩展HTML模板
I
ICO
Windows图标
IDX
Microsoft FoxPro相关数据库索引文件;Symantec Q&A相关数据库索引文件;Microsoft Outlook
JS时间轴效果(类似于qq空间时间轴效果)
JS时间轴效果(类似于qq空间时间轴效果)在上⼀家公司写了⼀个时间轴效果,今天整理了下,感觉有必要写⼀篇博客出来给⼤家分享分享当然代码还有很多不⾜的地⽅,希望⼤家多指点指点下,此效果类似于QQ空间或者⼈⼈⽹空间时间轴效果,当时也是为了需求研究了下qq空间逻辑(当然JS代码压缩了肯定看不到的),只是当时研究了下他们HTML结构和css结构,所以仿照他们那种逻辑⾃⼰也写了⼀个出来。
先来看看是个什么样的吧!如下图所⽰:需求分析:左侧是⼀个时间列表右侧是⼀个时间控制抽,当时的需求是这样的:默认页⾯⼀打开只加载当前年份所有列表加载出来当前年份的控制轴展开出来,默认的焦点在最近的⽉份,如上图在当前的10⽉份或者下图的12⽉份,当滚动条滚动的时候再继续判断如果左侧滚动到⼏⽉份的时候那么右侧控制抽当前的焦点也在⼏⽉份,当滚动到上⼀个年份的时候那么当前的年份控制轴收缩起来上⼀个年份控制轴展开出来,如下图所⽰:当我们点击某⼀年份的时候滚动到当前的年份,当我点击某⼀年中某⼀⽉份的时候滚动到当前年份中对应的⽉份上来。
当然下⾯的代码我是⽤到的是淘宝的KISSY框架当然如果改成Jquery框架也是⼀样的,没有很⼤的差别只是⽤了⼀下"延迟加载"和⼀些选择器⽽已,⾸先我们如果要做成这样的话要知道有2个请求⼀个是左侧列表请求返回的数据⼀个是右侧的年份和⽉份返回的数据下⾯我们可以先来看看开发给我当时返回的数据格式是个什么样的,左侧列表的JSON数据如下图:默认情况下是最近年份当我滚动到2012年时候再继续发个2012年的请求把2012年的相对应的数据渲染出来,同理2011年也⼀样.再来看看年份和⽉份的JSON数据吧如下图:下⾯我⼀步步来分析下我当时的做法:1. ⾸先我需要HTML结构如下图所⽰:<div class="tao-allMonth-w990"><div class="tao-video-left J_Video_Left" id="J_Video_Left"></div><div class="tao-year-right"><div class="mod-timelinenav"><ul id="timelinenavpanel" class="timelinenav-panel isScroll"></ul></div></div></div>其中id="J_Video_Left"和id="timelinenavpanel"在初始化的时候是可以配置的也就是说他们叫什么名字并不重要,依赖于这个HTML结构。
重症肺炎合并肠功能障碍治疗与分析
老年患者常因高龄 、脏器及免疫功能减退,易发生重症肺 炎 ,且老年人 常多并发各种慢性基础疾病,病情复杂 ,并发症 多,发病急 ,病情进展快,预后 差。 重症肺炎常可引起 不同程度 的肠功能 障碍 。肠功能障碍包 括消化吸收障碍、动力障碍 、和屏障障碍 ,可出现不同程度 的 肠麻痹 、吸收不 良、出血、肠源性感染等 。这不仅是肠本 身病 变 的问题 ,也是多器官功能障碍的一个重要问题 ,是很多疾病 共 同的病理生理过程。肠功能障碍 ,肠道黏膜完整性被破坏, 黏膜萎缩 ,黏膜屏 障功 能受损 ,易致细菌及毒素 易位 ;肠道淋 巴组织减少 ,肠道应激反应及免疫反应低下,从而增加或加重 感染 。目前这 已是共识 ,这一共识 与中医肺与大肠相表里的理
C D 6例 ,糖尿病 3 OP 4 4例,高血 压 5 2例 ,脑梗塞 3 5例 ,冠 心病 4 ,恶性肿瘤 5例 。所有重症肺炎病例均符合 2 0 年 4例 01 美 国胸科学会标准 :主要标准:①需要机械通气;②入 院 4 8 h 内病变范围扩大超过 5 %;③少尿( 0 尿量) 0 / ,或慢性 <4 0ml d 肾衰竭患者血肌 酐>17mo / 次要标准 : 呼吸频率 >3 7  ̄ l L。 a ① 0 次 /分:②氧合指数 <2 0 5mmHg ;③病变 累及双肺或 多肺叶 :
呼 衰 8 例 ( 4例 I 呼 衰 有 发 展 为 I型 呼衰 ), I 呼 衰 4 1 含 型 I 型 例 。 5例患者 中感染性休 克 3 例 。 5例胸部平片或 C 8 1 8 T检查 , 均 有 范 围不 等 的 渗 出灶 。 1 方法 患者入 I U 后均予机械通气、抗感染、化痰 、营 . 2 C 养支持及对症治疗 ( 如抗休克 、肺复张等 )。其中气 管插管行 有创通气 8 例 ( 1 4例 由无 创 通 气 改 为 有 创 通 气 ),无 创通 气 4
js中number方法
js中number方法好的,以下是一些 JavaScript 中常用的 number 方法: 1. 返回数对象的最大值:```javascriptlet num1 = 10;let num2 = 20;let max = Math.max(num1, num2);console.log(max); // 输出 20```2. 返回数对象的最小值:```javascriptlet num1 = 10;let num2 = 20;let min = Math.min(num1, num2);console.log(min); // 输出 10```3. 对数对象进行求幂运算:```javascriptlet num = 10;let power = num.pow(2, 10);console.log(power); // 输出 10000```4. 对数对象进行取模运算:```javascriptlet num = 10;let mod = num.mod(100);console.log(mod); // 输出 10```5. 对数对象进行减值运算:```javascriptlet num = 10;let decrement = num.decrement(); console.log(decrement); // 输出 9 ```6. 对数对象进行加法运算:```javascriptlet num1 = 10;let num2 = 20;let sum = num1.add(num2);console.log(sum); // 输出 30```7. 对数对象进行减法运算:```javascriptlet num1 = 10;let num2 = 20;let difference = num1.subtract(num2); console.log(difference); // 输出 10 ```8. 对数对象进行乘法运算:```javascriptlet num1 = 10;let num2 = 20;let product = num1.multiply(num2);console.log(product); // 输出 200```9. 对数对象进行除法运算:```javascriptlet num1 = 10;let num2 = 20;let quotient = num1.divide(num2);console.log(quotient); // 输出 5```10. 对数对象进行取整运算:```javascriptlet num = 10;let integral = num.floor();console.log(integral); // 输出 10```以上是 JavaScript 中常用的 number 方法,它们可以对数对象进行操作,使得数对象更具有实用性。
JS中的MOD运算
JS中的MOD运算最近研究汉诺塔⾮递归的时候,看到书上写了个MOD,久违啊,感觉好久没看到过了,都忘了怎么⽤了。
某⼈:我知道,这不就是取余嘛,直接%就⾏了。
嗯。
,如果是python语⾔,你说的很对,但是我要的是JS中的。
搜了下,貌似JS中没有MOD⽅法。
便于学习的使⽤,⾃⼰写了个。
废话不多说,直接上代码。
<!DOCTYPE html><html><head><meta charset="utf-8"><title>MOD运算</title></head><body>被除数:<input type="text" id="bcs"/>除 数:<input type="text" id="cs"/>结果:<span id="jg"></span><input type="button" value="MOD运算" onclick="modys()" /><script>function modys(){var bcs = Number(document.getElementById("bcs").value);var cs = Number(document.getElementById("cs").value);if(cs == 0){alert("除数不能为0");return;}if((bcs < 0 && cs < 0) || (bcs >=0 && cs >= 0)){ //同号if(parseInt(bcs) == bcs && parseInt(cs) == cs){ //全为整数var jg = bcs%cs;document.getElementById("jg").innerHTML = jg;}else{/*** 被除数-(整商×除数)之后在第⼀位⼩数位进⾏四舍五⼊。
Js和Thymeleaf如何获取model中的值
Js和Thymeleaf如何获取model中的值⼀、Jquery获取Model中的数据1、将model中的值赋给hidden,然后Js获取隐藏域的值。
后台的实现:@RequestMapping("/QEditorMod1")public String QEditorMod1(ModelMap model){model.addAttribute("staff_name","cxx" );return "questionEditorTemplate/QEditorMod1";}前端值的获取//将值赋给hidden域<input type="hidden" th:value="${staff_name}" id="staff_name2"/>//Js 获取hidden的隐藏域var staff_name2=$("#staff_name2").val();⼆、Thymeleaf 获取model中的值2、访问model中的数据//通过“${}”访问model中的属性<div class="panel-body"><span th:text="${}"></span></div>3、在javascript中访问model ⽬前没有发现此种⽅法的应⽤场景<script th:inline="javascript">var single = [[${singlePerson}]]; //或(如果第⼀种⽅式不⾏使⽤第⼆种) //var single = '[[${}]]';console.log(+"/"+single.age)</script>:https:///u/3421984/blog/1604188/:https:///qq_29072049/article/details/88642146。
基于深度神经网络AdaMod优化模型的来袭目标攻击意图识别
!计算机测量与控制!"#"$!$%!&"!!"#$%&'()'*+%('#',&-!",&(".!#"+'!#收稿日期 "#"$#$$%$!修回日期"#"$#'%#%作者简介 王家鑫!%-+%"&男&安徽六安人&硕士&高级工程师&主要从事,,武器系统研制与生产方向的研究%引用格式 王家鑫&王瑞琪&孟海波&等!基于深度神经网络(Y M Z J Y 优化模型的来袭目标攻击意图识别(/)!计算机测量与控制&"#"$&$%!&"*"+'"+-!文章编号 %&+%'.-* "#"$ #&#"+'#&!!,01 %#!%&."& 2!3456!%%7'+&" 89!"#"$!#&!#'%!!中图分类号 :;%*$!!文献标识码 (基于深度神经网络32*)"2优化模型的来袭目标攻击意图识别王家鑫% 王瑞琪" 孟海波" 蔺红明" 陈天群"!%<海装驻上海地区某部&上海!"#%%#-$"<上海机电工程研究所&上海!"#%%#-"摘要 海上舰艇防空反导作战基于目标攻击意图识别是现代舰艇防空技术的研究热点$来袭目标攻击意图识别是战场态势分析的一个重要部分&以往是通过先验知识和先验概率进行量化分析与明确攻击意图识别特征值的影响权重$深度神经网络可通过自适应学习目标攻击意图的特征值&可以在缺乏先验知识的条件下&通过小样本集的目标攻击意图的特征值训练&学习特征数据和攻击意图识别之间的对应关系与映射$通过引入D @H ^R 激活函数和(Y M Z J Y 优化算法加快模型收敛&并解决了(Y M \模型可能无法收敛到最优解的问题$实验结果显示文中提出的模型可以在先验知识不足及训练数据规模小的情况下&有效识别来袭目标攻击意图&同时保证更高的准确率%关键词 防空反导$攻击意图识别$深度神经网络$D @H ^R $(Y M Z J Y=*(9'&3&&*0R 4,98,&',&4",82',&4540*&4","532*)"2S $&4#4Q *&4",)"2'.L *+'2",O ''$G'%(*.G '&A "(R N(?D/6M Q 64%&N(?D >F 6L 6"&Z C ?D =M 6[J "&H 1?=J 4K \64K "&G =C ?:6M 4LF 4"!%<=M 6a P F M 4K 6RV 8M 86J 4@Y 64M,@9M T 8\@4864V P M 4K P M 6&V P M 4KP M 6!"#%%#-&G P 64M $"<V P M 4K P M 614R 868F 8@J SZ @3P M 463M U M 4YC U @38T 63M U C 4K 64@@T 64K &V P M 4KP M 6!"#%%#-&G P 64M "3?+&(*0&*?M W M U R P 69M 6T Y @S @4R @M 4YM 486\6R R 6U @J 9@T M 86J 4R [M R @YJ 48M T K @8M 88M 35648@486J 4T @3J K 4686J 4M T @T @R @M T 3PP J 88J 963R 644M W M U R P 69M 6T Y @S @4R @8@3P 4J U J K X !:P @M 88M 35648@486J 46Y @486S 63M 86J 4J S M 88M 3564K 8M T K @8R 6R M 46\9J T 8M 489M T 8J S [M 88U @S 6@U Y R 68F M 86J 4M `4M U X R 6R !148P @9M R 8&L F M 4868M 86W @M 4M U X R 6R 6R 3J 4Y F 38@Y 8P T J F K P 9T 6J T 54J _U @Y K @M 4Y 9T J [M [6U 68X &M 4Y 8P @6\9M 38_@6K P 8R J S M 88M 3564`8@486J 46Y @486S 63M 86J 4S @M 8F T @W M U F @R M T @Y @8@T \64@Y !,@@94@F T M U 4@8_J T 5R 3M 4M Y M 986W @U X U @M T 48P @S @M 8F T @W M U F @J S 8M T K @8M 88M 3564K64`8@486J 4R &M 4Y U @M T 48P @3J T T @R 9J 4Y @43@M 4Y\M 9964K [@8_@@4S @M 8F T @Y M 8M M 4Y M 88M 3564K 648@486J 4T @3J K 4686J 48P T J F K P 8P @S @M 8F T @W M U F @8T M 6464K J S 8M T K @8M 88M 3564K 648@486J 4R 64R \M U U R M \9U @R @8R_68P J F 89T 6J T 54J _U @Y K@!:P @D M F R R 6M 4@T T J T U 64@M T F 468R !D @H ^R "M 386W M `86J 4S F 4386J 4M 4YM Y M 986W @M 4Y\J \@48M U [J F 4Y !(Y M Z J Y "J 986\6a M 86J 4M U K J T 68P \M T @648T J Y F 3@Y 8J M 33@U @T M 8@8P @3J 4W @T K @43@J S 8P @\J Y @U &M 4Y R J U W @8P @9T J [U @\8P M 88P @(Y M \\J Y @U\M X 4J 83J 4W @T K @8J8P @J 986\M U R J U F 86J 4!C Q 9@T 6\@48M U T @R F U 8RR P J _8P M 88P @9T J 9J R @Y\J Y @U 3M 4@S S @386W @U X 6Y @486S X 8P @M 88M 35648@48J S M 88M 3564K 8M T K @8R_68P 64R F S S 636@489T 6J T 54J _U @Y K @M 4Y R \M U U 8T M 6464K Y M 8M &_P 6U @@4R F T 64K P 6K P @T M 33F T M 3X!@'>A "(2+*M 6T Y @S @4R @M 4YM 486\6R R 6U @$M 88M 35648@486J 46Y @486S 63M 86J 4$Y @@94@F T M U 4@8_J T 5R $D @H ^R $(Y M Z J YB !引言在目前日益紧张的国际局势中&制海权一直是大国之间博弈的重点&海上舰艇编队的进攻与防御体系的建立是掌握制海权的关键&也是各国一直以来研究的重点%在海上作战时&防空反导一直是主要防御手段&防空导弹自"#世纪.#年代问世以来&就引起了世界各国的高度关注%在进入"%世纪后&随着技术的不断进步与更新迭代&海上防空体系与高强度空袭体系间的对抗强度愈发激烈&如何识别敌方来袭目标的攻击意图是提升海上防空反导拦截效率的必要手段%在当下信息化战争时代&海上战场环境日益复杂&在军事需求和信息技术双轮驱动下&海上舰艇编队作战针对来袭目标攻击意图识别是目前态势分析领域研究的热点&是防空反导作战中指挥控制决策(%)的重要依据%战场的复杂性'瞬时性的影响使得作战指挥控制系统在短时间内无法处理大量战场信息&指战员无法做出最优决策&因此需要智能化作战指挥控制系统辅助指战员决策%智能化辅助决策系统提供的分析结果和预测模型可以提高指战员的决策效率与准确性&提升指挥控制质量%随着分布式杀伤'马赛克战'频谱战等新型作战样式与新型武器的应用&强敌海上作战体系具备较强的多域体系作战和网络中心作战能力&对我国领海安全构成重大威胁%强敌新型作战概念与方式的运用&增加了海上防空反导指战员对于来!投稿网址 ___!2R 23U X5a !3J \Copyright ©博看网. All Rights Reserved.第&期王家鑫&等*基于深度神经网络(Y M Z J Y """"""""""""""""""""""""""""""""""""""""""""""""""""优化模型的来袭目标攻击意图识别#"+.!#袭目标攻击意图的识别在短时间内做出准确判断的难度&对作战指挥控制的战略战术安排产生了至关重要的影响%目标攻击意图识别是通过量化分析来袭目标的各项参数指标&以此判断来袭目标可能锁定打击的我方舰艇&进而辅助防空反导指战员根据敌方作战意图制定作战决策&从而提高防空反导拦截效率以及减少我方舰艇作战损耗%根据目标的攻击意图生成合理的防空反导拦截方案是防空作战的重要组成部分%由于分析过程会受到未知与不确定因素的影响&现有模型的预测准确率得不到很好的验证%现有研究主要基于模板匹配(")'专家经验模型($')'层析分析法等(.&)'弹道预测等(+)&严重依赖专家经验生成的权重系数&不仅过于主观&也不适用新的作战样式%"#%&年提出使用神经网络自适应学习能力(*)&从训练数据中提取特征规则并用于目标攻击意图识别(-%#)%此方法能够解决先验知识及专家经验不足情况下分析与识别目标攻击意图的难点(%%)&但是由于采用了简单的);!反向传播算法"算法&不仅收敛速度慢&而且容易达到局部最优&无法收敛到最优解%"#%*年有学者使用深度神经网络对空中目标的作战意图进行识别&采用了(Y M \优化器和>@H F!T @386S 6@Y U 64@M T F 468"(%""#)激活函数&但是存在>@U F 激活函数在学习率较大的情况下容易导致神经元坏死的问题&同时(Y M \优化器在这类问题可能出现无法收敛到最优解的问题%文中提出了一种针对深度神经网络优化后的预测模型(%$%')&分析了来袭目标对我方单个目标的打击概率&综合考虑各项参数量化分析结果得出来袭目标的攻击意图识别&有效解决以往评估方法的不足(%+)%文中采用D @H ^R (%*)激活函数!D M F R R 6M 4@T T J T U 64@M TF 468R"作为激活函数解决梯度爆炸和梯度消失问题&并提升模型训练速度%同时采用(Y M Z J Y 优化算法!M Y M 986W @M 4Y \J \@48M U [J F 4Y "(%.)加快模型收敛&并解决了(Y M \模型可能无法收敛到最优解的问题%文中采取的方法可以更好地解决在先验知识不足的情况下识别目标攻击意图的问题%C !攻击意图特征提取现有的海上防空反导攻击意图提取方法存在特征识别单一&不能充分利用获取到的目标信息&信息深度挖掘不够&导致对攻击意图的深层次分析不足&攻击意图识别的稳定性与准确度都不够&导致往往攻击意图识别出来的结果给与决策者一个错误的判断或者根本没法使用%如何挖掘现有目标信息的各个属性参数信息&是目前攻击意图识别的难点&文中从多个角度对攻击意图特征进行提取%针对敌方来袭目标的攻击行为会遵从一定的规则*搜索目标'发现目标'锁定目标'打击目标%来袭目标不同的作战行动与攻击行为表现为目标态势信息的改变&直观表现为目标的各项运动参数及状态发生变化&可以用来识别其攻击意图%敌方来袭目标在搜索目标和发现目标阶段往往无法识别其攻击意图&直到其锁定目标并实行打击过程阶段&其攻击意图才有明显的特征%由于敌方来袭目标的攻击意图的显现是一个动态的过程&在不同的阶段会有不同的特征表象&仅依赖某时刻的目标态势信息识别其攻击意图具有片面性和不确定性%充分识别来袭目标特征属性&了解目标的特殊属性与攻击意图&以达到充分挖掘信息的目的&可以依据不同阶段&各个特征点属性不同来得到不同的数据集&可以更好地优化属性得到更理想的结果%由于敌方来袭目标的意图和状态间存在特定的联系&文中根据专家经验选取了部分参数*目标坐标!#&;&="'目标速度G E '速度方向(E '目标加速度"E '加速度方向(E '目标俯冲角"E &目标径向速度G %&目标径向到达时间-%&我方舰艇坐标!!#(&;(&=("(.%&0&Q &Q 为我方编队舰艇数量"%文中选取舰艇数量为.的典型编队配置&训练样本数据集!Y M 8M "的每一项为.#".形状%根据训练样本数据集在不同阶段得到的特征不同&但是攻击意图识别的结果相同&就可以优化模型参数&提取其重要特征&以达到相对较好的结果&为攻击意图的预测提供有效的数据训练基础%C D C !归一化处理文中选取的特征数据均为数值数据&可以使用神经网络直接处理%由于数据在各评价指标下的性质不同&通常具有不同量纲和数量级&为保证结果可靠性&加快数据收敛速度&以及降低奇异数据的对算法的敏感度&需要对原始数据进行归一化处理%数据的归一化是将数据按比例缩放到一个特定区间&将数据统一映射到(#%)区间上%设U (+?和U "#?分别是属性?的最小值和最大值&将?的一个原始值#映射到区间(#%)的值#T 的公式如下*#T ,#:U (+?U "#?:U (+?!%"式!%"用于模型训练的数据集中的数据全部进行归一化处理%转化后用于模型的学习数据为矩阵#!+"&矩阵#!+"的行数为.&列数为".&归一化处理后的#!+"为*#!+",#4&"#4&*#4-+#4'*#4"%+0#4%.#4-*#4&*#4+'-#4-*0#4&*#4$*#4'-#4&'#4$-#4+$0#4".#4'*#4&+#4"-#4-*#4-&0#4+*-#4'.#4$.#4''#4-*/0120C D E !生成攻击意图标签在未来智能化时代&战场数据呈现海量形态&智能化的指挥与辅助决策手段将被广泛运用&作战空间由物理域'信息域向认知域加速拓展&对指挥控制的精确性'时效性'实用性提出了更高的要求%由于战场环境复杂&信息量巨大&敌方攻击行为和作战样式不断涌现并且复杂多变&仅依赖领域专家难以在短时间对目标信息进行分析%以下两种数据来源可用于生成目标攻击意图识别标签*%"由真实作战或实战演练数据提供的来袭目标攻击意图记录$!投稿网址 ___!2R 23U X5a !3J \Copyright ©博看网. All Rights Reserved.!!计算机测量与控制!第$%""""""""""""""""""""""""""""""""""""""""""""""""""""卷#"+&!#""由领域专家根据不同的态势判断敌方目标的攻击意图$如图%所示&典型水面舰艇编队配置如下&每艘舰艇都拥有相应编号%图%!水面舰艇编队配置样本数据对应的攻击意图转化后用于模型学习的标签数据为矩阵$!+"&由专家识别或记录后标记的矩阵为*$!+",(#!%!#!#!#)!!其中数据的索引值对应舰艇编号&数值%代表攻击意图识别分析结果识别对应编号的舰艇被敌方锁定攻击&数值#代表未被锁定%来袭目标攻击意图的识别结果同样为格式相同&数据不同的矩阵&数值为# %之间的概率值%经过J 4@`P J 8处理后生成的识别结果与标签数据完全一致%E !攻击意图识别模型构建传统基于来袭目标攻击意图特征识别来辅助指挥者决策的方法&是需要大量的领域内专家经验对来袭目标攻击意图特征的权重'先验概率等进行先验量化&明确目标攻击意图特征之间的对应关系&但是战场形式一旦发生变化&此种方法会由于缺乏灵活性与自由度&往往会导致指挥者决策失误&这是基于先验知识确定来袭目标攻击意图特征的最大不足%而深度神经网络可以在领域专家先验知识不足条件下&通过自身训练得到来袭目标攻击意图特征之间的规则%针对传统的神经网络算法在更新网络节点权值时收敛速度慢'容易陷入局部最优的问题&通过引入D @H ^R 激活函数和(Y M Z J Y 优化算法&设计了基于深度神经网络的来袭目标攻击意图识别模型%E D C !深度神经网络人工神经网络由称为神经元的简单元素构成&这些元素具有真实值&乘以权重&然后通过非线性激活函数运行%深度神经网络!,??"具有多个处理输入的神经元+隐藏层,&隐藏层中的每个神经元都会接收部分输入变量&然后将其结果传递给下一层&网络可以学习非常复杂的功能%深度学习网络更准确&随着添加更多的神经元层可以进一步提高准确性%只要有足够的计算能力&神经网络就能够学习任何函数的形状%神经网络的优点是对于高维问题非常有效&能够处理变量之间的复杂关系&可以更好的提取数据特征&在领域专家先验知识不足的条件下根据态势数据进行训练&用于来袭目标攻击意图识别%强大的调整选项可防止过拟合!J W @T `S 68864K "和拟合不足!F 4Y @T `S 68`864K"&防止领域专家的主观性对训练结果产生影响%图"!深度神经网络结构图E D E !J'.%+激活函数深层神经网络存在梯度消失和梯度爆炸的问题&都是因为网络层数太深而引发的梯度反向传播中的连乘效应&其连乘后结果变得很小导致梯度消失%V 6K\J 6Y 激活函数(%-)在深层神经网络中极大概率会引起梯度消失&还有很小的概率出现梯度爆炸%常用的>@U F 激活函数解决了梯度消失的问题&但是可能导致神经元死亡&权重无法更新%近期的H @M 5X `>@H ^解决了>@U F 中的神经元死亡问题&但是其中的超参数)需要人工调整%后期的;>@H ^和>>@U F 激活函数都是针对超参数)进行优化调整(%")%C H ^R 是试图将激活函数的平均值接近零&从而加快学习的速度%同时通过正值的标识来避免梯度消失的问题%为改善深层神经网络的性能&需要一种新的激活函数模型&使其在学习过程中&能同时对激活函数的陡度&位置及映射范围进行调节&降低深层神经网络存在梯度消失和梯度爆炸的问题发生率&且具有更强的自我修复能力&提高模型的拟合能力与收敛速度%D @H ^R 是一个新的激活函数&它引入了随机正则的思想&直观上更加符合高斯分布&实验效果强于>@U F R %D C `H ^R 不仅解决了深层神经网络的梯度消失和爆炸问题&同时对于模型的拟合能力和收敛速度起着至关重要的重用&公式如下*#$!5*#",#*!#"!""!!其中**!#"指的是#的高斯正态分布的累积分布%式!""可近似表示为*#$!5*#",#!!%4+#"#"!$"!!其中*!的选择比较关键%H !基于32*)"2算法的深度神经网络模型H D C !32*#优化器深度学习通常需要大量时间和计算机资源进行训练&这也是困扰深度学习算法发展的主要原因%优化算法可以使用更少资源并使得模型收敛更快&从根本上提高了机器学习的速度和有效性%(Y M \算法就是以为快速收敛为目的而设计的%自适应矩估计!(Y M \"是一种在神经网络中被广泛采用的优化器&是一种对随机目标函数执行梯度优化的算法%由于(Y M \算法梯度的对角缩放!Y 6M KJ 4M U T @R 3M U `64K"的不变性&适用解决大规模参数以及稀疏梯度的非稳态问题%(Y M \算法只需要一阶梯度和很小的内存&通过第!投稿网址 ___!2R 23U X5a !3J \Copyright ©博看网. All Rights Reserved.第&期王家鑫&等*基于深度神经网络(Y M Z J Y """"""""""""""""""""""""""""""""""""""""""""""""""""优化模型的来袭目标攻击意图识别#"++!#一第二梯度的估计来计算不同参数的自适应学习速率%此外(Y M \算法的超参数可以直观的解释&不需要大量调参%H D E !32*)"2优化器由于(Y M \算法的收敛性较差&为了保证更优的结果&文中采用了名为(Y M Z J Y 的优化算法&这是一种基于(Y M \的改进优化器&可以在训练的同时计算自适应学习率的指数长期平均值&根据长期平均值对学习率进行修剪&去除过高的学习率%相比(Y M \优化器&(Y M Z J Y 能够从训练开始就控制自适应学习率的变化&无需预热%(Y M Z J Y 优化器不仅能够使用更少资源加快模型收敛&同时也不需要进行大量调参就可以使模型得到一个稳定可靠的结果%H D H !算法实现算法%*(Y M \输入*初始参数"*&步长1)E 2-E h %&瞬间衰减1'&'"2&正则常数+&随标函数M !""%*初始化!#h #&C #h #"*S J T E h %8J -Y J$*!!K E h 3M E !"E 7%"'*!!E h '%!E 7%d !%7'%"K E .*!,E h '",E 7%d !%7'""K "E &*!V !E h !E -!%7'E%"+*!V ,E h ,E -!%7'E ""**!!-E h )E -!V ,槡E d +"-*!!"E h "E 7%7-E V !E %#*@4Y S J T算法"*(Y M Z J Y输入*初始参数"*&步长1)E 2-E h %&瞬间衰减1'&'"2&正则常数+&随标函数M !""%*初始化!#h #&,#h #"*S J T E h %8J -Y J$*!!K E h 3M E !"E 7%"'*!!E h '%!E 7%d !%7'%"K E .*!,E h '",E 7%d !%7'""K "E &*!V !E h !E -!%7'E%"+*!V ,E h ,E -!%7'E ""**!!-E h )E -!V ,槡E d +"-*!3E h '$)E 7%d !%7'$"-E %#*!!V -E h\64!-E &)E "%%*@4Y S J T(Y M Z J Y 算法比(Y M \算法多出的第九步操作3E h'$)E 7%d !%7'$"-E &其中'$定义了记忆长度%定义了当前平滑值和过去+长期记忆,!U J 4K `8@T \`\@\J T X "的关系&之后从当前学习率-E 中选择最小值从而剔除高学习率%当'$h #时&(Y M Z J Y 等价于(Y M \%I !目标攻击意图识别流程训练深度神经网络模型并输入目标态势对目标攻击意图进行识别&步骤如下*%"从数据记录系统中提取目标参数&经转换后提取目标特征数据&并根据作战实际结果记录以及领域专家对结果的判断生成标签&数据结构形如(#&%&#&#&#)%其中被敌方锁定的我方舰船标记为%%""将数据集随机打乱&并采用%#折交叉验证!G T J R R `W M U 6Y M 86J 4"进行训练%实现方式为将初始样本分割为%#个子样本&其中%#A 的子样本作为测试集&其余-#A 样本用于训练%交叉验证重复%#次&每个子样本验证一次%$"调整深度神经网络结构&设置隐藏层数和节点数%'"输入训练数据到构建的好的神经网络中&并调整参数%在计算资源充足的情况下并行调试多个模型&选取最优的模型迭代优化%."将待识别目标特征数据输入训练完成的模型&对敌方目标攻击意图做出预测%M !模型分析与参数设置M D C !超参数设置不同的参数和超参数设置决定了模型的精确度%在普通的模型中&由于刚开始训练时&模型的权重!_@6KP 8"是随机初始化的&此时若选择较大的学习率&可能带来模型的不稳定%通常会选择预热!N M T \F 9"学习率的方式&在最初训练的几个@9J 3P @R 中使用较小的学习率&在预热的小学习率下&模型可以慢慢趋于稳定&等模型相对稳定后再选择预先设置的学习率进行训练&使得模型的收敛速度更快&模型效果更佳%文中采用了(Y M Z J Y 优化器&它的优点是对学习率超参数不敏感&训练曲线更平滑&并且不需要预热!N M T \F 9"%从图$可以看到即使学习率相差两个量级&也能收敛到同一个结果%而其他的优化器例如(Y `M \&如果不预热&效果可能非常差&不能保证达到可用标准%基于此特点&设置神经网路的学习率)h #<#.&超参数'%h #<-&'"h #<--&'$h #<---&平滑项&h %#7+%实验结果表明&通过对模型进行并行训练得到在迭代次数为"##次左右时&设置神经网路的学习率)h #<#.的模型表现最好%图$!不同学习率下(Y M Z J Y 优化器的精确度此外&神经网络隐藏层结构层数的设计会影响模型识别的准确度%图'与图.分别使用了不同层级的神经网络结构层数来验证使用(Y M Z J Y 优化器的模型对来袭目标攻击意图识别的准确率%从图中可以看到在训练次数.#次之后&使用(Y M Z J Y 优化器的模型验证的准确率基本趋于稳定%隐藏层设置为$层的准确度相比于隐藏层设置为%层的!投稿网址 ___!2R 23U X5a !3J \Copyright ©博看网. All Rights Reserved.!!计算机测量与控制!第$%""""""""""""""""""""""""""""""""""""""""""""""""""""卷#"+*!#准确度更加的稳定于准确%当然&如果隐藏层设置的层数越多&其预测的准确度与稳定性也开始下降%原因是层数越多&节点越多&虽然在训练模型上的效果越好&但随之带来模型过拟合问题&会造成稳定性变差&准确度下降%图'!三层节点神经网络准确率图.!五层节点神经网络准确率M D E !模型精度实验为验证最终模型的精确度&将原数据集再次随机打乱&并抽取前-#A 作为训练样本&剩余的%#A 数据作为测试样本%将训练样本作为模型输入并用测试样本检测模型精确度&测试结果如图&所示%在迭代次数为".#次的情况下&模型的准确率高于-*<'A %从识别结果可以得出结论&该深度神经网络模型在现有样本的条件下可以有效识别来袭空中目标的攻击意图&同时模型准确率高于-*A &识别可靠性高%图&!训练后的模型准确率M D H !实验结果与分析实验中所提出的激活函数和优化器配置对比基于单层);神经网络模型&普通深度神经网络模型&V 6K \6J Y 激活函数与(Y M \优化器深度神经网络模型&>@H F 激活函数与(Y M \优化器深度神经网络模型的识别效果对比如图+所示%图+!不同模型准确度对比由图+可知&文中提出的D C H ^R 激活函数与(Y M Z J Y 优化器改进的深度神经网络模型在同样的数据集上能得到比其他模型更好的识别效果%其中使用(Y M \优化器的深度神经网络模型特定学习率参数设置下收敛存在问题&出现了无法收敛的情况%在不预热的情况下&模型准确率过低&如图*所示%作为对比&文中提出的深度神经网络模型不存在无法收敛到最优解的问题&同时收敛的速度更快&识别效果更好%在保证精度问题的同时&还解决了训练数据量不足的情况下&其他模型训练结果不理想的情况%图*!无预热情况下模型准确度对比通过上述的模型分析与实验对比可以发现&文中提出的D C H ^R 激活函数对神经网络具有更好的泛化能力&可以需要更少的训练样本&得到更好的预测效果&而(Y M Z J Y优化器让模型有了更好的收敛性与收敛速度&只需要一个较小的样本集对模型进行训练&就可以让敌方空袭目标意图识别结果稳定可靠'准确率高%故此&采用(Y M Z J Y 优化器与深层神经网络D @H ^R 激活函数的来袭目标攻击意图识别模型有以下几个特点*%"模型鲁棒性性好&结果输出稳定$""收敛速度快&样本集需求少$$"攻击意图特征提取充分&数据挖掘比较完全$'"模型训练结果可靠性高&准确度高%当然&由于战场态势千变万化&战场信息错综复杂&受神经网络各参数的初始化数据影响较大&小样本集的训!投稿网址 ___!2R 23U X5a !3J \Copyright ©博看网. All Rights Reserved.。
mockjs简单易懂
mockjs简单易懂 项⽬开发的时候,有时候后端接⼝不给⼒,要是必须从后端获取数据,没有其他⽅式获取数据,那就很蛋疼了(只能等后端接⼝正常,才可以继续开发前端)。
mock 是⼀个数据模拟⽣成器,⽤于帮助前端独⽴于后端进⾏开发,其模拟 ajax 并返回相应的数据,从⽽使前端不必依赖于后端接⼝,⽅便开发。
npm 安装 mocknpm install mockjs项⽬引⼊ mockmian.jsif (process.env.NODE_ENV !== 'production') {require('@/mock')} // ⾮⽣产模式引⼊mock新建mock⽂件夹index为mock的⼊⼝⽂件indeximport Mock from 'mockjs'import * as admin from './modules/admin.js'// 可以通过 isOpen 参数设置是否拦截整个模块的 mock 功能fnCreate(admin, true)/*** 创建mock模拟数据* @param {*} mod 模块* @param {*} isOpen 是否开启?*/function fnCreate(mod, isOpen = true) {if (isOpen) {for (var key in mod) {((res) => {if (res.isOpen !== false) {Mock.mock(new RegExp(res.url), res.type, (opts) => {opts['data'] = opts.body ? JSON.parse(opts.body) : nulldelete opts.bodyconsole.log('\n')console.log('%cmock拦截, 请求: ', 'color:blue', opts)console.log('%cmock拦截, 响应: ', 'color:blue', res.data)return res.data})}})(mod[key]() || {})}}}admin.jsimport Mock from 'mockjs'// 登录export function getAuditPrj() {return {// isOpen: false,url: '/api/resources/project/audit',type: 'get',data: {'msg': 'success','code': 0,'expire': Mock.Random.natural(60 * 60 * 1, 60 * 60 * 12),'token': Mock.Random.string('abcdefghijklmnopqrstuvwxyz0123456789', 32)}}}接⼝⽂件/*** @brief 查询待审核⼯程* */getAuditProject(){return request({url: '/api/resources/project/audit',method: 'get'})}取消mock的⽅式是注释main,js中的代码或者是把fnCreate中参数改为false oooooooook...。
js模块化编程之彻底弄懂CommonJS和AMDCMD!
js模块化编程之彻底弄懂CommonJS和AMDCMD!先回答我:为什么模块很重要?答:因为有了模块,我们就可以更⽅便地使⽤别⼈的代码,想要什么功能,就加载什么模块。
但是,这样做有⼀个前提,那就是⼤家必须以同样的⽅式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套!于是下⾯三个模块规范出来了,这篇⽂章也出来了(拼出来的 {捂脸笑})。
JS中的模块规范(CommonJS,AMD,CMD),如果你听过js模块化这个东西,那么你就应该听过或CommonJS或AMD甚⾄是CMD这些规范咯,我也听过,但之前也真的是听听⽽已。
现在就看看吧,这些规范到底是啥东西,⼲嘛的。
本⽂包括这三个规范的来源及对应的产物的原理。
⼀、CommonJS1.⼀开始⼤家都认为JS是辣鸡,没什么⽤,官⽅定义的API只能构建基于浏览器的应⽤程序,逗我呢,这太狭隘了吧(⽤了个⾼端词,嘎嘎),CommonJS就按耐不住了,CommonJS API定义很多普通应⽤程序(主要指⾮浏览器的应⽤)使⽤的API,从⽽填补了这个空⽩。
它的终极⽬标是提供⼀个类似Python,Ruby和Java标准库。
这样的话,开发者可以使⽤CommonJS API编写应⽤程序,然后这些应⽤可以运⾏在不同的JavaScript解释器和不同的主机环境中。
在兼容CommonJS的系统中,你可以使⽤JavaScript开发以下程序:(1).服务器端JavaScript应⽤程序(2).命令⾏⼯具(3).图形界⾯应⽤程序(4).混合应⽤程序(如,Titanium或Adobe AIR)2009年,美国程序员Ryan Dahl创造了项⽬,将javascript语⾔⽤于服务器端编程。
这标志"Javascript模块化编程"正式诞⽣。
因为⽼实说,在浏览器环境下,没有模块也不是特别⼤的问题,毕竟⽹页程序的复杂性有限;但是在服务器端,⼀定要有模块,与操作系统和其他应⽤程序互动,否则根本没法编程。
Foobar2000界面入门:认识Foobar的UI系统,熟悉四种主流界面插件
Foobar2000界面入门:认识Foobar的UI系统,熟悉四种主流界面插件原创文章,转载请注明。
如果你想对Foobar做任何界面上的操作,无论是风格样式还是按钮行为,列表功能还是图片显示,都最好先读过下面的文字,否则你很可能在接下来的操作中处处碰壁,搞得稀里糊涂。
认识Foobar的界面系统Foobar是高度可定制的软件,它的各项功能都尽量实现独立的模块化,也就是独立成一个个的插件,它的界面的也是一样。
Foobar的整个界面系统,包括你能看到的窗口边框内的所有东西,从菜单按钮到列表样式,全都是“外包”给一个插件负责的,这个插件负责整个Foobar界面的描绘,而真正的Foobar只提供最核心的功能和命令,以供插件调用,所以当此插件缺失时,Foobar将由于没有界面系统而无法启动。
这类插件,我们通常称之为“界面插件”或“UI插件”,它们的命名规则一般是foo_ui_*.dll。
界面插件界面插件不只有一个,现在主要的界面插件有四个:Default User Interface,译名:默认用户界面,文件名:foo_ui_std.dll,论坛里常简称为“DUI”。
Columns UI,译名:分栏界面,文件名:foo_ui_columns.dll,论坛里常简称为“CUI”。
Panels UI,译名:面板界面,文件名:foo_ui_panels.dll,论坛里常简称为“PUI”。
Func UI,译名:功能面板,文件名foo_ui_func.dll,论坛里常简称为“FUI”。
这四种界面插件都有很大的定制自由度,可以让你随意打造自己的界面。
但这四种界面插件的工作方式都完全不同,所以大部分界面问题都要分情况讨论,在不同的界面下问题和解决方法往往是完全不同的。
由于每个插件都是要接管Foobar的整个界面的,所以Foobar必然只可能同时使用一个界面插件。
这并不是说你不能把多个界面插件一起放进components目录下,你可以这样做,但这些插件中同时只可能有一个在生效、在负责界面(这也并不是说把多个界面插件同时放进components目录就是没有意义的,这个将在后面说明)。
前端架构体系技术
前端架构体系技术一、框架与组件bootstrap等UI框架设计与实现伸缩布局:grid网格布局基础UI样式:元素reset、按钮、图片、菜单、表单组件UI样式:按钮组、字体图标、下拉菜单、输入框组、导航组、面包屑、分页、标签、轮播、弹出框、列表、多媒体、警告响应式布局:布局、结构、样式、媒体、javascript响应式第三方插件:插件管理jQuery、zepto使用原理以及插件开发支持amd、cmd、全局变量的模块化封装$.fn.method = function(){}mvc/mvvm框架原理设计directive设计:html、text、class、html、attr、repeat、ref,可扩展filter设计:bool、upperCase、lowerCase,可扩展表达式设计:if-else等实现viewmodel结构设计:例如数据,元素,方法的挂载与作用域数据更变检测:函数触发,脏数据检测、对象hijacking polymer/angular2思想与设计思路import技术template和script引入方式css样式命名空间隔离简单复用第三方库reactjs原理与使用virtual dom单向数据绑定js执行语法方式UI由状态控制commonJS/AMD/CMD模块引入模块定义模块标识UMD解决不同规范兼容性的问题,例如webpack封装模块懒执行(CMD)与与预执行(AMD)loadJs模块化加载原理与实现创建script标签,需要id映射到资源urlonload加载模块队列判断全部加载完成后触发加载失败问题优化requirejs、modjs、seajspolyfill、shim原理与实现polyfill提供了开发者们希望浏览器原生提供支持的功能特性shim将新的API引入到旧的环境中,且仅靠旧环境中已有的手段实现virtual Dom、Incremental DOM1.用js对象树表示dom树结构,根据该对象树构建dom树2.状态改变时,重新构建对象,和旧的对象对比,记录两个对象树差异3.将对象树差异应用到dom中小结:js对象模拟dom(elem.js),virtual dom diff算法(diff.js)、差异渲染dom(patch.js)incremental dom在状态改变时扫描旧对象树将差异直接应用到dom中shadow dom隔离外部环境用于封装组件:结构、样式、行为实现形式:新标签、class类属性+ 构建编译webwork与service Workerwebwork与主线程机制,on/postserviceworker可作为浏览器请求代理应用场景ES6转ES5、Babel与ES6开发规范体系ES6编码规范全ES6在babel下兼容性ES6在node下兼容性与性能ES6新特性:看编码规范aurelia ES6前端框架Isomorphic JavaScript同构原理同构方案Rendrnodejs: 服务器hapi: 应用服务backbone.js: 后台mvc requirejs: 模块加载jquery: dom处理reactjs同构:React + Flux + Koa 双向数据绑定函数触发:vuejs脏数据检测:angular对象hijacking:avalonbrowserify运行原理1.从入口模块开始分析require函数调用2.根据依赖生成AST3.根据AST找到每个模块的模块名4.得到每个模块的依赖关系,生成一个依赖字典5.包装每个模块(传入依赖字典以及export和require函数),生成执行的jsperformance timingperformance timing api performance timing 过程performance timing 性能计算performanceTrace库组件UI与js组件规范化组件编码规范组件目录规范:组件目录与公用目录组件构建规范:构建环境支持组件模块化管理:spm,bowserify 组件复用性管理第三方组件接入成本immutable JavaScriptgenerator与promise原理与使用二、构建生态grunt/gulp开发环境任务编写文件处理插件:html、scss、js、image、font、其它优化插件:雪碧图、图片压缩、iconfont构建发布替换插件打包、压缩包插件:组件自动分析白名单配置自定义插件编写npm、jspm、bower包管理工具r.js、browserify、webpack、webpack2、Rollup打包工具使用原理:根据依赖配置文件对文件进行依赖打包webpack支持更多的规范打包,AMD,Commonjswebpack+babel/reactjs+refluxfis3构建与插件开发、构建环境、fis3构建离线包web Component:rosetta-org、x-view、Q、riot、novabrunch构建工具三、开发技巧与调试fiddler加willow基础组合调试常见配置与分析结合浏览器调试werien、vorlonjs远程调试,chrome inspectmockjs,F.M.S(FrontMock Server)模拟调试使用与cgi自动调试macha/phantomjs/casperjs/karma测试自动化任务使用自动化UI测试,海豚node-supervior、node-inspector、karma开发发布系统流程sublime高效插件emmet工具使用、sublimelinter、babel snippets、sublimeLint、SassBeautify 、emmet 快速编辑、jsxlint、SideBarEnhancements、SnippetsMaker、SublimeCodeIntel、css snippets、ColorPicker、html/css/js Pretty、SpinnetMacker、DocBlockr、MultiEditUtils、javascript& node spinnet、JavaScript & NodeJS Snippets、jsLint、cssLint代码自动化检查fecs四、html、css与重构jpeg、webp、apng、bpg图片编码原理特点与优劣势适用场景iconfont使用与实现原理自动打包构建方法iconfont兼容性写法fonthello、fontawesome、icomoon.io、线上工具页面响应式设计layout布局响应式html结构响应式css样式响应式image媒体响应式javascript响应式media query与平台判断css重置resetnomalizeneatsass/compass/less/postcss常用语法与使用常用语法功能组件化UI设计管理构建工具实现方案雪碧图自动合成iconfont自动接入等等media query与常见页面尺寸了解媒体类型引入和媒体特性引入device-width适应retina屏幕适应em,rem原理与实现rem计算:width*retina/10,相当于屏幕宽度为10rem 字体在rem情况下仍然使用pxcode4ui、code4app、初页、maka等前端dom操作即使刷新前端页面根据dom操作生成组件config配置保存到db根据config配置使用r.js或webpack打包发布打包后输出文件css3动画transformanimationtransiction3D加速与动画加速动画库缓动函数速查表:eing/easeing/ Ceaser:cubic-bezier:css网格布局susyResponsive Grid SystemFluid 960 Grid(adaptjs) Simple Grid搜索引擎与前端SEO tdk优化页面内容优化唯一的H1标题img设置alt属性nofollowurl优化统一链接301跳转canonicalrobot优化robots.txtmeta robotssitemapSEO工具各种站长工具等浏览器缓存种类,resources,webSQL,indexDB, localstorage,cookie,app cache,cache storagestore.js、cookie.jsUI框架bootstrap、jqwidgets、semantic ui、amaze ui 微信手Q ui: frozenui、weui、blend uiextjs、echart图表ui五、native/hybrid/桌面开发ionic移动开发方案运行架构hybrid混合开发cordova交互离线包更新性能瓶颈nativescript移动开发方案react Native移动开发方案运行架构:js引擎性能缺陷与内存泄露更新机制使用场景android/ios原生开发与框架javaoc、swiftweb与native交互屏幕旋转摇一摇录像,拍照,选取本地图片打电话,发短信电池电量地理位置日期选择开启硬件加速桌面应用开发nodewebkitatom-shell(后改名为electron)网易Hexpomelo(游戏服务器框架)react desktopappjs:六、前端/H5优化(另一个图已给出)yslow、pagespeed移动web性能优化手机浏览器”省流量”原理增量更新原理及注意事项本地存储的应用加载优化图片优化单页面及路由实现业内著名站点案例分析七、全栈/全端开发express/nodeclub + mongodb、thinkjs等框架node.js直出实时web开发,meteor/express.ioMEAN(mongodb/express/angular/nodejs)http 与http2协议、bigpipe、pipeline离线缓存,cookie、localstorage、indexdbcdn与dns动态域名加速cdn原理与cdn combo八、研究实验WebAssembly、webTRC、typescriptMaterial design规范的前端框架交互动效库AMP-HTML规范使用受限HTML以及缓存技术来提高移动网络中静态内容的性能添加自定义的元素代替禁用掉的元素:amp-audio, amp-img、amp-video等九、数据分析与监控badjs数据上报捕获错误两种方法:onerror、try-catch。
OPCode详解
OPCode详解OpCode操作码(Operation Code, OPCode):描述机器语⾔指令中,指令要执⾏某种操作的机器码OPCode在不同的场合中通常具有不同的含义,例如PHP虚拟机(Zend VM)、java虚拟机(JVM)以及⼀些软件保护虚拟机中的最⼩操作单元都可以称之为OPCode。
常⽤字节常⽤单字节OPCode概览A -- 40~4Fopcode asm using0x40 inc eax emit(0x40)0x41 inc ecx emit(0x41)0x42 inc edx emit(0x42)0x43 inc ebx emit(0x43)0x44 inc esp emit(0x44)0x45 inc ebp emit(0x45)0x46 inc esi emit(0x46)0x47 inc edi emit(0x47)0x48 dec eax emit(0x48)0x49 dec ecx emit(0x49)0x4a dec ebx emit(0x4a)0x4b dec ebx emit(0x4b)0x4c dec esp emit(0x4c)0x4d dec ebp emit(0x4d)0x4e dec esi emit(0x4e)0x4f dec edi emit(0x4f)常⽤单字节OPCode概览B -- 50~5Fopcode asm using0x50 push eax emit(0x50)0x51 push ecx emit(0x51)0x52 push edx emit(0x52)0x53 push ebx emit(0x53)0x54 push esp emit(0x54)0x55 push ebp emit(0x55)0x56 push esi emit(0x56)0x57 push edi emit(0x57)0x58 pop eax emit(0x58)0x59 pop ecx emit(0x59)0x5a pop edx emit(0x5a)0x5b pop ebx emit(0x5b)0x5c pop esp emit(0x5c)0x5d pop ebp emit(0x5d)0x5e pop esi emit(0x5e)0x5f pop edi emit(0x5f)常⽤单字节OPCode概览C -- 70~7Fopcode asm using0x70 0x12 Jo 0x12 {_emit(0x70)} {_emit(0x12)}0x71 ... Jno ... ... ...0x72 ... Jb ... ... ...0x73 ... Jae ... ... ...0x74 ... Je ... ... ...0x75 ... Jne ... ... ...0x76 ... Jbe ... ... ...0x77 ... Ja ... ... ...0x78 ... Js ... ... ...0x79 ... Jns ... ... ...0x7a ... Jp ... ... ...0x7b ... Jnp ... ... ...0x7c ... Jl ... ... ...0x7d ... Jge ... ... ...0x7e ... Jle ... ... ...0x7f ... Jg ... ... ...常⽤单字节OPCode概览D -- 90~9FOpcode asm Using0x90 Nop/xchg eax,eax _emit(0x90)0x91 Xchg eax,ecx0x92 Xchg eax,edx0x93 Xchg eax,ebx0x94 Xchg eax,esp0x95 Xchg eax,ebp0x96 Xchg eax,esi0x97 Xchg eax,ediOPCode与指令的对应关系同类型的指令OPCode不⼀定相同B8 01000000 mov eax, 18B C3 mov eax, ebx8B C7 mov eax, ediOPCode相同的情况下指令也不⼀定相同90 nop90 xchg ax, ax90 xchg eax, eax结论: OPCode与汇编指令并⾮是单纯的对应关系那么它是如何进⾏解释的呢?⾸先它分为6个主要数据域,其中只有代码是必须存在的,指令长度在1-16个字节所以指令独此⼀份,不可能为其他机器码x86与x86-64指令集的指令的格式为:指令前缀指令码ModR/M SIB偏移直接数Instruction Prefixes Opcode Displacement Immediate可选。