参考链接
- 二维码的生成细节和原理,by 陈皓.
- 微信小程序中生成二维码工具:weapp.qrcode.js,by yingye.
因为Win10的安全问题和Win7用户习惯问题,新电脑要求装Win7系统。但是Win7系统中没有自带USB3.0驱动和固态硬盘nvme驱动,导致安装或启动Win7时USB3.0的鼠标和键盘无法识别,无法操纵。经过研究,决定在Win7原版镜像基础上,注入USB3.0和nvme驱动。
Dism++是一个Dism的GUI版,但是并不依赖Dism(Deployment Image Servicing and Management),直接基于更底层的CBS(Component Based Servicing Reference)。
Dism是一个命令行工具,可用于服务和准备Windows映像,包括用于Windows PE、Windows恢复环境(Windows RE)和Windows安装程序的映像。
EasyBCD是由NeoSmart Technologies开发的程序,用于配置和调整启动配置数据,该启动数据库最初是在Windows Vista中引入的,并在以后的所有Windows版本中使用。EasyBCD可用于为可同时安装某些版本的Windows,Linux,BSD和Mac OS X的计算机设置多重启动环境。例如删除OneKey Ghost启动项。
UltraISO 是一个运行在Microsoft Windows平台上的用来创建、修改和转换ISO文件的软件。自从2002年4月20日UltraISO首次发布以来,它的开发公司EZB Systems就把它定义为一个共享软件。当前EZB Systems域名的注册地址在中国深圳。
UltraISO用于替换Windows启动镜像中的boot.wim和install.wim。
Windows7原版镜像中有两个重要文件:install.wim和boot.wim。boot.wim本质时WinPe,用于安装Windows7时的启动,install.wim镜像文件用于Windows7安装后的启动。使用工具Dism++在boot.wim和install.wim中注入USB3.0和nvme驱动,可以确保Windows7系统在安装和启动过程中识别USB3.0的键盘和鼠标,以及固态硬盘,从而保证Windows7的顺序安装和启动。
当前很多笔记本已不再支持Win7操纵系统,强行在新机器上安装Win7会出现很多问题。通过验证,总结了如下使用Win7封装步骤:
通过上述三张光盘,相信安装Windows7操作系统不再是麻烦。
一种迷你系统,通常体积比较小,只有300MB左右。用于安装系统或者修复系统问题。
跟WinPE几乎一样,只是WinRE更加侧重于系统修复,并且Vista以后系统自带WinRE,因此我们可以在WinRE做原本在WinPE里做的事情。
一种文件载体,可以保存系统映像。在Dism++中,映像文件有WIM、SWM、ESD以及ISO。
统一可扩展固件接口(英语:Unified Extensible Firmware Interface,缩写UEFI)是一种个人电脑系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS的替代方案。可扩展固件接口负责加电自检、联系操作系统以及提供连接操作系统与硬件的接口。
BIOS是Basic Input/Output System的缩写,中文:基本输入输出系统,亦称为ROM BIOS、System BIOS、PC BIOS,是在通电引导阶段运行硬件初始化,以及为操作系统提供运行时服务的固件。BIOS最早随着CP/M操作系统的推出在1975年出现。BIOS预安装在个人电脑的主板上,是个人电脑启动时加载的第一个软件。
现在,BIOS的作用是初始化和测试硬件组件,以及从大容量存储设备(如硬盘)加载引导程序,并由引导程序加载操作系统。BIOS还为DOS操作系统提供键盘、显示及其他I/O设备的硬件抽象层。
许多BIOS程序都只能在特定电脑型号或特定主板型号上运行。早年,BIOS存储于ROM芯片上;现在的BIOS多存储于闪存芯片上,这方便了BIOS的更新。
UEFI是旧式BIOS的后继者。
设备独立像素(density-independent pixel, dip)也叫逻辑分辨率,是一种可以被程序所控制的虚拟像素,在Web开发中对应CSS像素。
物理像素(physical pixel, PP)也叫设备像素,由设备的屏幕决定,其实就是屏幕中控制显示的最小单位。例如,华为荣耀V20的屏幕显示分辨率2310*1080即为物理像素。
设备像素比(device pixel ratio,dpr)计算公式如下:
$$dpr=物理像素/设备独立像素$$
这条公式成立的前提是,缩放比Scale为1,原因下面讲到缩放的时候就会知道。根据这种关系,如果设备像素大于设备独立像素(DPR大于1的设备,我们常说的高清屏或者视网膜Retina屏),就会出现一个设备独立像素对应多个设备像素的情况。
在JavaScript中,可以通过window.devicePixelRatio获取到当前设备的dpr,但遗憾的是并不是所有的都支持。
通过访问mydevice,可获得各类显示屏的dpr、dpi等参数信息。 例如,通过访问该网站可知华为荣耀V20的dpr为3。
微信小程序对于rem的一种应用规定,官方规定屏幕宽度为20rem,规定屏幕宽为750rpx,因此微信中1rem=750/20rpx,iphone6下,1px=1rpx=0.5pt,使用rpx作为单位,微信小程序会自动在不同的分辨率下进行转换,而使用px为单位不会转换,iphone6p下1px=0.6rpx;
在移动端做适配通常用rem作为单位,rem是根据html的fontsize去动态计算实际px;
pt是逻辑分辨率,pt的大小和屏幕尺寸有关系,简单可以理解为长度和视觉单位;1个pt可以有1个px,也可以有2个,3个或更多的px,但人的视网膜极限为2倍@2x,增加再多也不会让屏幕看起来更加好了,比如iphone6,2个px构成一个pt,ip6以物理像素750*1334这视觉稿进行设计;
流程图是表示算法、工作流或流程的一种框图表示,它以不同类型的框代表不同种类的步骤,每两个步骤之间则以箭头连接。这种表示方法便于说明解决已知问题的方法。流程图在分析、设计、记录及操控许多领域的流程或程序都有广泛应用。遵循规范绘制流程图,不仅可提高流程图的可读性,还可以美化流程图。
流程图由三大结构构成,这三大结构分别为顺序结构、选择结构和循环结构,这三个结构构成了流程执行的全过程。
在顺序结构中,各个步骤是按先后顺序执行的,这是一种最简单的基本结构。
选择结构又称分支结构,选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。
循环结构又称为重复结构,就是流程在一定的条件下,反复执行某一操作的流程结构。循环结构下又可以分为当型结构和直到型结构。
绘制流程图时,为了提高流程图的逻辑性,应遵循从左到右、从上到下的顺序排列。
绘制流程图时,为了提高流程图的逻辑性,应遵循从左到右、从上到下的顺序排列。一个流程从开始符开始,以结束符结束。开始符号只能出现一次,而结束符号可出现多次。若流程足够清晰,可省略开始、结束符号。
菱形为判断符号,必须要有“是和否(或Y和N)”两种处理结果,意思是说,菱形判断框一定需要有两条箭头流出;且判断符号的上下端流入流出一般用“是(或Y)”,左右端流入流出用“否(或Y)”。
同一流程图内,符号大小需要保持一致,同时连接线不能交叉,连接线不能无故弯曲。
流程处理关系为并行关系的,需要将流程放在同一高度。
必要时应采用标注,以此来清晰地说明流程,标注要用专门的标注符号。
处理流程须以单一入口和单一出口绘制,同一路径的指示箭头应只有一个。
同一路径的指示箭头应只有一个。
流程图中,如果有参考其他已经定义的流程,不需重复绘制,直接用已定义流程符号即可。
大数据,官方定义是指那些数据量特别大、数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理。大数据的主要特点为数据量大(Volume),数据类别复杂(Variety),数据处理速度快(Velocity)和数据真实性高(Veracity),合起来被称为4V。
Apache Hadoop则是大数据应用的关键基础设施,本质上是一款支持数据密集型分布式应用程序的开源软件框架。它被设计成从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。Apache Hadoop本身不是依赖硬件来提供高可用性,而是设计用于检测和处理应用程序层的故障,因此在计算机集群上提供高可用性服务,但每个集群都可能容易出现故障。
Hadoop最早由美国工程师Doug Cutting开发。Doug Cutting同样是用于全文检索和搜索的开放源码程序库Lucene和开源搜索引擎Nutch的作者。
在Google发表的三篇有关GFS、MapReduce和BigTable的技术论文基础上,Doug Cutting分别开发了HDFS(Hadoop分布式文件系统)、MapReduce编程模型和用来处理海量数据的非关系型数据库HBase,它们共同构成了Hadoop。因此,本质上Hadoop是Google大数据系统的开源实现。
各大公司包括Yahoo、IBM、Facebook、亚马逊、阿里巴巴、华为、百度、腾讯等都采用Hadoop构建自己的大数据系统,使Hadoop成为了分布式计算系统事实上的国际标准。
Hadoop框架构成如图1所示。下面简单介绍Hadoop框架中的重要组件。
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。
Hbase是一种分布式存储的NoSQL数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java。它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务。因此,它可以对稀疏文件提供极高的容错率。
MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归纳)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。
当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归纳)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
数据仓库之父比尔·恩门(Bill Inmon)在 1991 年出版的“Building the Data Warehouse”(《建 立数据仓库》)一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面 向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史 变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
Apache Hive则是一个建立在Hadoop架构之上的数据仓库。它能够提供数据的精炼,查询和分析。Apache Hive起初由Facebook开发,目前也有其他公司使用和开发Apache Hive,例如Netflix等。亚马逊公司也开发了一个定制版本的Apache Hive,亚马逊网络服务包中的Amazon Elastic MapReduce包含了该定制版本。
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Apache Spark是一个开源集群运算框架,最初是由加州大学柏克莱分校AMPLab所开发。相对于Hadoop的MapReduce会在运行完工作后将中介数据存放到磁盘中,Spark使用了存储器内运算技术,能在数据尚未写入硬盘时即在存储器内分析运算。Spark在存储器内运行程序的运算速度能做到比Hadoop MapReduce的运算速度快上100倍,即便是运行程序于硬盘时,Spark也能快上10倍速度。Spark允许用户将数据加载至集群存储器,并多次对其进行查询,非常适合用于机器学习算法。
Storm是一个分布式计算框架,主要由Clojure编程语言编写。最初是由Nathan Marz及其团队创建于BackType,该项目在被Twitter取得后开源。它使用用户创建的“管(spouts)”和“螺栓(bolts)”来定义信息源和操作来允许批量、分布式处理流式数据。最初的版本发布于2011年9月17日。
Storm应用被设计成为一个拓扑结构,其接口创建一个转换“流”。它提供与MapReduce作业类似的功能,当遇到异常时该拓扑结构理论上将不确定地运行,直到它被手动终止。
一直使用Hexo+Github构建静态博客,可突然在使用hexo g -d命令时出故障了,问题如下:
1 | INFO [hexo-math] Using engine 'mathjax' |
不想在费劲的查找问题原因,打算重新走一遍hexo+github构建博客流程,于是记录一下。
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。安装Hexo命令如下:
1 | npm install hexo-cli -g |
安装最新版本的Hexo之后,发现还是出现文章开始的错误,不过幸运的是,新版本的Hexo给出了错误的位置,经检查是公式输入不对导致解析错误的原因。
在使用Simulink建模过程中,发现没有想要的模块,于是只能使用Simulink的自定义函数模块拓展其功能。Simulink自定义函数模块可分成:
使用Simulink建模的过程中,需要输入或输出可变尺寸的信号,具体方法主要有三种:
具有不同输入端口的开关或多端口开关块,具有不同大小的固定大小信号,其输出是一个可变大小的信号。
选择器块和起始和结束索引(端口)索引选项。索引端口信号可以指定输入数据信号的不同子区域,这些子区域在模拟过程中产生可变大小的输出信号。
具有为可变大小信号配置的输出端口的S函数块。输出不仅包括信号的值,还包括信号的维数。
Simulink是The MathWorks公司开发的用于动态系统和嵌入式系统的多领域模拟和基于模型的设计工具,常集成于MathWorks公司的另一产品MATLAB中与之配合使用。
S-函数是系统函数(System Function)的简称,在Simulink中用非图形化的方式来描述一个模块。一个完整的S-函数结构体系包含了描述一个动态系统所需要的全部能力。使用S-函数用户可以向Simulink模型中添加自己的模块,可以自由选择使用MATLAB、C、C++等语言来创建自己的模块。
编写S函数,可以从 Matlab 给的模板S函数文件开始,用户可以在 Matlab 命令窗口中键入:
1 | edit sfuntmpl |
该模板S函数文件包含了所有的S函数的例程, 包含1个主函数和6个子函数。 在主函数程序使用一个多分支语句 (Switch-case)根据标志将执行流程转移到相应的例程函数。主函数的参数 Flag 标志值是由系统(Simulink 引擎)调用时给出的。
飞行器仿真一个难点是气动力和力矩系数的生成和计算方法。通常获得气动力和力矩系统的方法主要有:
气动力模型是表征气动力和力矩系数与飞行状态、控制输入之间关系的函数。可表示为:
$$C_i=f(H, Ma, α, β, \omega_x, \omega_y,\omega_z, \delta_e,\delta_r,\delta_a)$$
其中,H、Ma、α、β分别为高度、马赫数、攻角、侧滑角;$\omega_x, \omega_y,\omega_z$ 分别为滚转、偏航和俯仰角速度;$\delta_e,\delta_r,\delta_a$ 分别为升降舵、方向舵和副翼舵偏角。
Datcom+是Digital Datcom程序的一个扩展,它包含了一些工具,使使用Digital Datcom程序更加容易。这一计划的起源始于1996年,并由Holy Cows,Inc.支持到2010年。
Datcom+Pro是Datcom+的下一代,它已经变得更加用户友好。可视化工具允许您立即看到您的飞机,由数字数据通信程序生成的系数数据绘制在X-Y图上,以便于解释和包含在报告中。此外,您的Datcom+模型现在可以在JSBSim中运行,它是一个完整的6自由度运动方程模型,并提供了执行标准飞行试验机动的飞行试验脚本示例。可惜无法网上无法获得该版本。
下面重点介绍Datcom+的使用方法。
Datcom+输入是以“.dcm”为扩展名的文件,具体数据输入格式可参考示例文件“citation.dcm”。该示例文件的设计目的是允许您读取它,并可能理解它,即使Datcom符号可能很难读取和理解。它由以“*”开头的注释行和Datcom命令组成,其中一些命令必须以列1开头,另一些命令以$开头,后跟公共块名,如FLTCON。如果以$开头,则必须以$结尾。常用的名字列表如下:
FLTCON-定义飞行条件
SYNTHS-定位cg、机翼、水平尾翼和垂直尾翼相对于参考线
BODY-定义机体几何体
WGPLNF-定义机翼平面形状几何图形
HTPLNF-定义水平尾翼几何结构
VTPLNF-定义垂直尾翼几何结构
1 | CASEID ----- MIKOYAN-GUREVICH MiG-17 ----- |
1 | DIM FT |
在Missile Datcom的for005.dat文件中输入如下内容:
1 | $FLTCON |
Matlab使用datcomimport函数导入Datcom输出文件数据到工作空间,有可能会出现如下所示警告:
1 | > In usafdatcom |
然后会发现导入的启动系数值无法使用。出现该问题的原因主要有: