字符和字符串 单引号中的是一个字符,这个字符计算机认识,可以叫做“字面值”,计算机通过ASCII表与这些符号的对应关系来识别它们。ASCII表的表示范围是0~127,其本质是一个有符号的Byte,即8个位,除去一位符号位,7位用来表示值。双引号中的是字符串,可以称为字符串字面值常量;字符数组要额外多分配一个字节存储结束符’\0’。 类型转换 (本质也是整型)char(1B) ——》short(2B) ——》 int(4B) ——》 long(4B) ——》long long(8B)小变大,可以完全保留大变小会有位的丢失,可能造成数据的错误。有“截断”注意一点是,Int和float的转换并不是单纯的截取位数重新解释,而是尽量保证真值不改变float变量进行运算的时候需要首先进行对阶的操作。会造成“精度丢失”的问题,所谓精度丢失,就是当两个相差非常大的数做运算的时候,会因为“对阶”,使得小的数丢掉有效位而全变为0有符号与无符号数的转换会首先保留数的位数,然后对每位进行重新解释。比如有符号的整数高位为1表示的是负数,到了无符号整数中,会因为 高位的1变成一个非常大的正数 输入和输出函数 printf函数和scanf函数引入一个概念叫“输入输出缓冲区”,叫“stdin”“stdout”,其存取规则是“先进先出” + 有三钟IO方式 1. 全缓冲:缓冲区满时IO :磁盘文件的IO 2. 行缓冲:行满时IO :标准输入输出 3. 直接IO :标准错误信息的输出 scanf的%d格式控制符的特点: 缓冲区开始的空白字符(比如:‘ ’,‘\t’,’\n’),会被取出并丢弃从读取第一个合法字符开始,直到遇到第一个非法字符结束(注意该非法字符仍在在STDIN中) scanf的%c格式控制符的特点: 不会忽略空白字符(在输入函数中,除格式控制符外允许有别的符号的例子只有是“ %c”,空格+%c) rewind(stdin);// 清空输入缓冲区scanf的返回值 成功读取的数量。可以是0EOF(-1)。不同于0(VS中是3次Ctrl + Z) getchar() :从stdin获取并返回下一个字符,如果到达文件末尾返回EOFputchar(char ch) :把ch写到stdoutprintf() 小数: % . d \color{#FF0000}{.d} .dd: 表示d位小数任何书: % d \color{#FF0000}{d} dd: 表示最小宽度为d% − \color{#FF0000}{-} −d: 表示左对齐 运算符 sizeof()类型转换运算符:()算术运算符关系运算符 此处注意 float 类型的 ==结果不可靠 逻辑运算符位运算符赋值运算符条件运算符自增自减运算符
最近在Flask Web Development作者博客看到第二版Flask Mega-Tutorial已在2017年底更新,现翻译给大家参考,希望帮助大家学习flask。
这是Flask Mega-Tutorial系列的第二十二章,我将告诉您如何创建独立于Web服务器之外运行的后台作业。
供您参考,以下是本系列文章的列表。
第1章:Hello, World!第2章:模板 第3章:Web表单第4章:数据库第5章:用户登录第6章:配置文件页面和头像第7章:错误处理第8章:关注与被关注第9章:分页第10章:电子邮件支持第11章:整容第12章:日期和时间第13章:I18n和L10n第14章:Ajax第15章:大型应用程序结构第16章:全文搜索第17章:在Linux上部署第18章:在Heroku上部署第19章:Docker容器上的部署第20章:一些JavaScript Magic第21章:用户通知第22章:后台工作(本文)第23章:应用程序编程接口(API) 注意1:如果您正在寻找本教程的旧版本,请在此处。
注意2:如果您想在此博客上支持我的工作,或者只是没有耐心等待每周的文章,我将提供完整的本教程版本,打包成电子书或视频集。欲了解更多信息,请访问courses.miguelgrinberg.com。
本章致力于为应用程序中运行时间较长或复杂的异步任务进程进行优化。这些进程不能在请求的上下文中同步执行,因为这会在任务持续期间阻塞对客户端的响应。在第十章中,我将邮件的发送转移到后台线程中执行,以免阻塞响应。 虽然使用线程处理电子邮件是可以接受的,但当问题处理时间更长时,此解决方案就不足以支撑了。 公认的做法是将耗时长的任务移交到worker进程(或进程池)。
为了证明长时间运行任务存在的必要性,我将介绍Microblog的一个导出功能,用户通过它可以请求一个包含他们所有用户帖子的数据文件。 当用户使用该选项时,应用程序将启动一个导出任务,该导出任务将生成包含所有用户帖子的JSON文件,然后通过电子邮件发送给用户。 所有这些活动都将在worker进程中发生,并且在执行时,用户可以看到显示完成百分比的进度。
本章的GitHub链接为:Browse,Zip和Diff。
任务队列简介 任务队列为后台作业提供了一个便捷的解决方案。 Worker进程独立于应用程序运行,甚至可以位于不同的系统上。 应用程序和worker之间的通信是通过消息队列完成的。 应用程序提交作业,然后通过与队列交互来监视其进度。 下图展示了一个典型的实现:
Python最受欢迎的任务队列是Celery。这是一个相当复杂的包,具有许多选项并支持多个消息队列。另一个流行的Python任务队列是Redis Queue(RQ),它牺牲了一些灵活性,例如仅支持Redis消息队列,但作为交换,它的设置比Celery简单得多。
Celery和RQ都完全可以支持Flask应用中的后台任务,因此,我对此应用程序的选择将倾向于RQ的简单性。但是,使用Celery实现相同的功能应该相对容易。如果您不仅对RQ感兴趣,还对Celery感兴趣,可以阅读我的博客中的Using Celery with Flask文章。
使用RQ RQ是一个标准的Python软件包,用pip安装:
(venv) $ pip install rq (venv) $ pip freeze > requirements.txt 正如我前面提到的,应用和RQ worker之间的通信将在Redis消息队列中执行,因此您需要运行Redis服务器。 有许多途径来安装和运行Redis服务器,比如下载其源码并执行编译和安装。 如果您使用的是Windows,Microsoft在此处维护了Redis的安装程序。 在Linux上,您可以通过操作系统的软件包管理器安装Redis。 Mac OS X用户可以运行brew install redis,然后使用redis-server命令手动启动服务。
除了确保服务正在运行并可供RQ访问之外,您不需要与Redis进行其他交互。
请注意,RQ不能在Windows本机Python解释器上运行。如果使用Windows平台,则只能在Unix仿真下运行RQ。我向Windows用户推荐的两个Unix仿真层是Cygwin和Linux的Windows子系统(WSL),它们都与RQ兼容。
创建任务 通过RQ执行一项简单的任务后,您就会很快熟悉它。 一个任务,不过是一个Python函数而已。 以下是一个示例任务,我将其放入一个新的app/tasks.py模块:
app / tasks.py:示例后台任务。
import time def example(seconds): print('Starting task') for i in range(seconds): print(i) time.
数据结构c语言版习题
文章目录 第一章 绪论第二章 线性表第四章 串第五章数组和广义表作业第六章 树与二叉树理论作业第七章图作业第八章查找作业 第一章 绪论 一、选择题
1.以下说法正确的是( D )。
A、数据元素是数据的最小单位
B、数据项是数据的基本单位
C、数据结构是带有结构的各数据项的集合
D、一些表面上很不相同的数据可以有相同的逻辑结构
解析:A、B、C不对,正确答案是:数据项是数据的最小单位;数据元素是
数据的基本单位;数据结构是带有结构的各数据元素的集合;D正确,如:windows系统中文件的组织架构图和一个单位的组织架构图,表面上是不相同的数据,但其实都是树形结构。
2.计算机算法指的是解决问题的步骤序列,它必须具备( B ) 这五个特性。
A、可执行性、可移植性、可扩充性、输入、输出
B、可执行性、确定性、有穷性、输入、输出
C、确定性、有穷性、稳定性、输入、输出
D、易读性、稳定性、安全性、输入、输出
解析:一个算法具备的5个重要特性是:有穷性,确定性,可行性,有零个或多个的输入,有1个或多个的输出;
3.设n为某问题的规模,若某算法的时间复杂度为O(n2),则表示该算法的( C )。(北航2019年考研题)
A、执行时间为n。
B、执行时间为n2。
C、执行时间与n2成正比关系。
D、执行时间与n无关。
解析:T(n) = O(f(n))“大O记法”,它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。
4.程序运行时间函数f(n) = 1000, 下面哪项是用“大O记法”表示的时间复杂度。(B)
A、O(1000)
B、O(1)
C、O(n=1000)
D、O(n)
解析:只要运行时间为常数,均用O(1)表示,即时间复杂度的常数阶为O(1)
5.算法的时间复杂度取决于(D )。
A、问题的规模
B、待处理数据的初态
C、计算机的配置
D、A和B
解析:算法的时间复杂度不仅与问题的规模有关,还与问题的其他因素有关。如某些排序的算法,其执行时间与待排序记录的初始状态有关。为此,有时会对算法有最好、最坏以及平均时间复杂度的评价。
6.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储( D )。
A、数据的处理方法
B、数据的存储方法
C、数据元素的类型
D、数据元素之间的关系
解析:存储数据时,或者用顺序方式来描述数据元素之间的关系,或者用链
式来描述数据元素之间的关系。
7.在数据结构中,与所使用的计算机无关的是数据的(A)结构。
A、逻辑
B、存储
C、逻辑和存储
D、物理
解析:数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关:数据的物理结构,又称存储结构,是指数据在计算机中的表示,它包括数据元素的值和元素的关系,其中数据元素之间的关系在计算机中主要有顺序存储结构和链式存储结构两种。
程序设计基础过关题库(50道) <说明>难易程度依次为:易(7道)、较易(14道)、较难(13道)、难(9道)、很难(7道)
一、顺序结构 1、 编程实现两个整数交换位置,例如:int x = 6,y = 9,交换后 x = 9,y = 6。(易)
2、 将华氏温度转化成摄氏温度。公式为:
C=(5/9)*(F-32)
,其中F为华氏温度,C为摄氏温度。请根据给定的华氏温度输出对应的摄氏温度。(易)
package javaFirst_1; public class JavaFirst_1_ketang { public static void main(String[] args) { // TODO Auto-generated method stub double F = 52; double C; C = (5/9.0) * (F-32); System.out.println("华氏温度:" + F); System.out.println("摄氏温度:" + C); } } 3、 根据观察,蟋蟀的名叫频率与温度有关,具体的公式为T=(c+40)/10.其中,c代表蟋蟀每分钟鸣叫数,T代表华氏温度。请根据蟋蟀每分钟的鸣叫数输出相应的华氏温度。(易)
package javaFirst_1; public class JavaFirst_if_else { public static void main(String[] args) { // TODO Auto-generated method stub int x = 6; int y = 9; int max; if(x > y) { max = x; }else { max = y; } System.
每10换行 for i in range(1,51): if i<10: print("0"+str(i),end=" ")#输出10以内不 换行 else: if i%10==0: print(i) #30 40 50 换行 else: print(i,end=" ")
Smart3D如何生成OSGB数据的S3C索引 1-生成OSGB模型2-生成S3C索引3-模型预览 1-生成OSGB模型 目前市面上生产的倾斜模型,尤其是Smart3D生成的倾斜摄影三维模型数据的组织方式一般是二进制存储的、带有嵌入链接纹理数据的OSGB格式。而这种格式的三维模型使用CC自带的可视化软件----Acute3D Viewer无法打开,本文我们主要介绍如何将已经生成的OSGB模型转化为可以直接用Acute3D Viewer预览的模型,即:快速生成OSGB的S3C索引!
生成OSGB格式文件直接在生产项目选项卡中选择即可: 生产完成后直接打开“输出目录”:
在打开的目录下,我们可以看到OSGB成果输出为一个DATA文件夹以及一个XML文件:
2-生成S3C索引 接下来我们简单阐述如何生成S3C索引,流程图如下所示:
Created with Raphaël 2.2.0 开始 在重建基础上生成新的生产项目 提交为.S3C格式 开始运行后即可取消生产 使用CC_S3CComposer.exe对.S3C文件进行编辑处理 生成新的.S3C文件,复制到OSGB目录下 结束 提交新的生产项目:
运行后直接取消生产:
打开S3C编辑软件-------CC_S3CComposer.exe,并将生成的S3C文件直接拖拽到软件中:
使用菜单栏”工具“中的”编辑命令行…“,直接”Ctrl A“全选,”Ctrl C“复制到记事本中,将文本中所有s3c替换为osgb:
替换完成后,在全部复制回去,保存替换原来文件:
将生成的s3c文件复制到OSGB文件目录下:
至此,OSGB模型的S3C索引生成完毕。
3-模型预览 双击”Production_2.s3c”即可打开模型:
最近在Flask Web Development作者博客看到第二版Flask Mega-Tutorial已在2017年底更新,现翻译给大家参考,希望帮助大家学习flask。
这是Flask Mega-Tutorial系列的第十九章,我将在其中部署Microblog到Docker容器平台。
供您参考,以下是本系列文章的列表。
第1章:Hello, World!第2章:模板 第3章:Web表单第4章:数据库第5章:用户登录第6章:配置文件页面和头像第7章:错误处理第8章:关注与被关注第9章:分页第10章:电子邮件支持第11章:整容第12章:日期和时间第13章:I18n和L10n第14章:Ajax第15章:大型应用程序结构第16章:全文搜索第17章:在Linux上部署第18章:在Heroku上部署第19章:Docker容器上的部署(本文)第20章:一些JavaScript Magic第21章:用户通知第22章:后台工作第23章:应用程序编程接口(API) 注意1:如果您正在寻找本教程的旧版本,请在此处。
注意2:如果您想在此博客上支持我的工作,或者只是没有耐心等待每周的文章,我将提供完整的本教程版本,打包成电子书或视频集。欲了解更多信息,请访问courses.miguelgrinberg.com。
在第17章中,您学习了传统部署,在传统部署中,您必须关注服务器配置的每个细节。然后在第18章中,当我向您介绍Heroku时,您将带到了另一个极端。这项服务可以完全控制配置和部署任务,使您可以完全专注于应用程序。在本章中,您将学习基于容器(尤其是在Docker容器平台上)的第三种应用程序部署策略。 这种部署的工作量,介于另外两个选项之间。
容器基于轻量级虚拟化技术构建,该技术允许应用程序及其依赖项和配置完全隔离地运行,而无需使用功能强大的虚拟化解决方案(例如虚拟机),因为虚拟化解决方案需要更多的资源,并且有时可能与宿主机相比,性能明显下降。 配置为容器宿主机的系统可以运行大量容器,所有这些容器共享主机的内核并直接访问主机的硬件。这与虚拟机不同,虚拟机必须模拟一个完整的系统,包括CPU,磁盘,其他硬件,内核等。
尽管必须共享内核,但容器中的隔离级别仍然很高。容器具有自己的文件系统,并且可以基于与容器主机使用的操作系统不同的操作系统。例如,您可以在Fedora主机上运行基于Ubuntu Linux的容器,反之亦然。尽管容器是Linux操作系统固有的技术,但由于虚拟化,还可以在Windows和Mac OS X主机上运行Linux容器。 这允许您在开发系统上测试部署操作,并且如果您愿意的话,还可以将容器合并到开发工作流程中去。
本章的GitHub链接是:Browse,Zip,Diff。
安装Docker CE 尽管Docker不是唯一的容器平台,但它是迄今为止最受欢迎的容器平台,因此我选择了它。Docker有两个版本,一个是免费社区版(CE),另一个是基于订阅的企业版(EE)。就本教程而言,Docker CE完全可以满足要求。
要使用Docker CE,首先必须将其安装在系统上。在Docker网站上有适用于Windows,Mac OS X的安装程序和几种Linux发行版。如果您使用的是Microsoft Windows系统,请务必注意Docker CE依赖Hyper-V。 如有必要,安装程序将为您启用此功能,但请记住,启用Hyper-V会限制诸如VirtualBox等其他虚拟化技术产品的运行。
在系统上安装Docker CE之后,您可以通过在终端窗口或命令提示符下键入以下命令来验证安装是否成功:
$ docker version Client: Version: 17.09.0-ce API version: 1.32 Go version: go1.8.3 Git commit: afdb6d4 Built: Tue Sep 26 22:40:09 2017 OS/Arch: darwin/amd64 Server: Version: 17.09.0-ce API version: 1.32 (minimum version 1.12) Go version: go1.
html只是搭建初步的结构,css的作用就是美化外观,使得结构和样式分离,各司其职。
CSS目录 一、CSS样式的三种方法1.行内式(内联样式)2.内部样式表(内嵌样式表)3.外部样式表(外链式) 二、CSS基础选择器1.标签选择器2.类选择器3.id选择器4.通配符选择器 三、复合选择器1、后代选择器2、子元素选择器3、交集选择器4、并集选择器5、链接伪类选择器 四、font字体样式1、font-size(字体大小)2、font-family(字体样式)3、font-weight(字体粗细)4、font-style(字体风格)5、font(复合属性) 五、CSS基础外观属性1.color(文本颜色)2.text-align(文本水平对齐方式)3.line-height(行间距)4.text-indent(首行缩进)5.text-decoration(文本的装饰)6.CSS外观属性总结 六、标签显示模式(display)七、CSS 背景(background)1.背景颜色(color)2.背景图片(image)3.背景平铺(repeat)4.背景位置(position)5.背景附着6.背景复合写法7.背景总结 八、CSS 三大特性1.层叠性2.CSS继承性3.CSS优先性(权重) 一、CSS样式的三种方法 1.行内式(内联样式) <div style="color: red; font-size: 12px;">基础使用</div> style其实就是标签的属性,可以通过它来设置标签的样式。
2.内部样式表(内嵌样式表) <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> table { height: 70px; width: 600px; text-align: center; border: black 1px solid; } td, th { border-collapse: collapse; border: black 1px solid; } th { height: 40px; } </style> </head> 将CSS代码集中书写到头部head标签里面使用style标签定义。
3.外部样式表(外链式) <head> <link rel="stylesheet" type="text/css" href="css文件路径"> </head> 将所有的样式放在一个或多个以.CSS为扩展名的外部样式表文件中,通过link标签将外部样式表文件链接到HTML文档中。
其中外联是使用频率最高的方法。
1.常见名词 角分辨率
激光雷达输出的图像也被称为“点云”图像,相邻两个点之间的夹角就是角分辨率。
帧率
一幅点云图像代表一帧,对应到激光雷达内部就是电机旋转一圈完成扫描。帧率即代表一秒钟内激光雷达电机旋转的圈数,也就是每秒钟完成一圈扫描的次数。
角分辨率和帧率的关系,和采样率的关系
由于激光雷达的采样率是一定的,因此帧率越高,角分辨率越低;帧率越低,角分辨率越高。
采样率表示激光雷达每秒钟进行有效采集的次数,可直观理解为一秒内产生的点云数目。采样率可以通过角分辨率和帧率计算:
角分辨率0.08°时,每一帧的点云数目:360°/0.08°= 4500;每秒10帧,则每秒的点云数目:4500×10=45000;所以其采样率为45kHz。 激光雷达可以检测到透明玻璃吗
激光雷达是基于光学检测原理,激光会穿过透明玻璃,从而造成一定概率的漏检。因此针对玻璃很多的场景使用时,可以增加一些辅助反射手段,比如粘贴磨砂贴纸,或配合其他非光学的传感器作为补充。
激光雷达测距范围指标为什么标注有两个距离?
激光雷达的测距依赖激光照射在目标物体上的反光,而白色的表面反射率高,黑色的表面反射率低,不同反射率会对雷达的有效量程造成差异。
点云数据合并
点云数据合并是指把相邻的点合并成一个点,一方面可以减少图像的数据量,另一方面可以增加点云的稳定度。
点云上的拖尾是怎么产生的?有什么办法解决吗?
激光雷达每次采样时发送一个激光脉冲完成测量。理想的激光脉冲打在目标上是一个点,但是实际上激光出射都存在一定的发散角,打在物体上时光斑是一个面。因此,当存在前后两个物体,且激光正好打在前面一个物体的边缘时,就有可能出现一部分激光能量打在了后面的物体上,这时的回返光就是两个光斑反射光的叠加。这时雷达会判断测量目标在这两个面之间,造成拖尾现象。拖尾现象需要借助算法去除。 2.TOF雷达和三角雷达的区别 TOF(Time of Flight)方案基于时间飞行测量,三角雷达基于几何光学运算。
1.原理 三角法的原理如下图1所示,激光器发射激光,在照射到物体后,反射光由线性CCD接收,由于激光器和探测器间隔了一段距离,所以依照光学路径,不同距离的物体将会成像在CCD上不同的位置。按照三角公式进行计算,就能推导出被测物体的距离。 TOF的原理如图2所示,激光器发射一个激光脉冲,并由计时器记录下出射的时间,回返光经接收器接收,并由计时器记录下回返的时间。两个时间相减即得到了光的“飞行时间”,而光速是一定的,因此在已知速度和时间后很容易就可以计算出距离。 2.性能对比
测量距离
从原理上来说,TOF雷达可以测量的距离更远。实际上在一些要求测量距离的场合,比如无人驾驶汽车应用,几乎都是TOF雷达。三角雷达测不远主要有几个方面的原因:一是原理上的限制,其实仔细观察图1不难发现,三角雷达测量的物体距离越远,在CCD上的位置差别就越小,以致于在超过某个距离后,CCD几乎无法分辨。二是三角雷达没办法像TOF雷达那样获得较高的信噪比。TOF采用脉冲激光采样,并且还能严格控制视场以减少环境光的影响。这些都是长距离测量的前提条件
采样率
激光雷达描绘环境时,输出的是点云图像。每秒能够完成的点云测量次数,就是采样率。在转速一定的情况下,采样率决定了每一帧图像的点云数目以及点云的角分辨率。角分辨率越高,点云数量越多,则图像对周围环境的描绘就越细致。
就市面上的产品而言,三角法雷达的采样率一般都在20k以下,TOF雷达则能做到更高(例如星秒的TOF雷达PAVO最高可以达到100k的采样率)。究其原因,TOF完成一次测量只需要一个光脉冲,实时时间分析也能很快响应。但是三角雷达需要的运算过程耗时则更长。如下表示对同一物体不同采样率的成像效果
精度
激光雷达本质上是个测距设备,因此距离的测量精度是毫无疑问的核心指标。在这一点上,三角法在近距离下的精度很高,但是随着距离越来越远,其测量的精度会越来越差,这是因为三角法的测量和角度有关,而随着距离增加,角度差异会越来越小。所以三角雷达在标注精度时往往都是采用百分比的标注(常见的如1%),那么在20m的距离时最大误差就在20cm。而TOF雷达是依赖飞行时间,时间测量精度并不随着长度增加有明显变化,因此大多数TOF雷达在几十米的测量范围内都能保持几个厘米的精度。
转速(帧率)
在机械式雷达中,图像帧率就是由电机的转速决定的。就目前市面上的二维激光雷达而言,三角雷达的最高转速通常在20Hz以下,TOF雷达则可以做到30Hz-50Hz左右。三角雷达通常采用上下分体的结构,即上面转的部分负责激光发射、接收和采集,下部分负责电机驱动和供电等,过重的运动组件限制了更高的转速。而TOF雷达通常采用一体化的半固态结构,电机仅需带动反射镜,因此电机的功耗很小,并且可以支持的转速也更高。
当然,这里提到的转速的区别只是对现有产品的一个客观分析。其实转速和雷达采用TOF还是三角法没有本质的联系,主流的多线TOF雷达也都是采用的上下分体的结构,毕竟同轴结构的光学设计受到许多限制。多线TOF雷达的转速一般也都在20Hz以下。
不过,高转速(或者说高帧率)对点云成像效果是很有意义的。高帧率更利于捕捉高速运动的物体,比如高速公路上行驶的车辆。此外,在自身建图时,运动中的雷达建图会发生畸变(举个例子,如果一个静止的雷达扫描一圈是一个圆,那么当雷达直线运动时,扫描出的图像就变成一个椭圆)。显然,高转速可以更好的减少这种畸变的影响。
成本
如果只看性能比较,似乎TOF雷达的性能完全压过三角雷达。不过产品的竞争并不仅仅是性能参数的比拼,用户在乎的还有价格、稳定性和服务等等。至少在成本方面,目前三角雷达的成本是低于TOF雷达的,近距离的三角雷达成本已经在百元级别。而目前进口TOF雷达的售价动辄就要万元以上。可以说,高昂的价格是限制TOF激光雷达应用进一步拓展的重要因素。
应用场景
三角雷达的场景主要是在室内短距离的应用,最典型的场景就是扫地机器人。而在探测范围较大场景(比如商场、机场或者车站),以及室外场景,TOF的应用则更为广泛。另外值得一提的是,三角雷达这种裸露在外转动的方案,使其产品在防尘防水方面非常脆弱,在一些特殊场景的应用,比如AVG小车工作的车间经常会有很多灰尘,在这种环境下,三角雷达的电机非常容易损坏。相比之下,TOF雷达采用的半固态设计,可以有更优秀的防护效果,工作寿命也更长。 3.相关参考 点云概述👈点云概念与点云处理👈听Ibeo剧学铭聊自动驾驶和激光雷达(一)2016.5.27👈听Ibeo剧学铭聊自动驾驶和激光雷达(二)2016.5.31👈激光雷达大洗牌:华为、大疆入局、初创玩家眼热,谁将率先破局?2021.3.1激光雷达与毫米波雷达的区别
最近在Flask Web Development作者博客看到第二版Flask Mega-Tutorial已在2017年底更新,现翻译给大家参考,希望帮助大家学习flask。
这是Flask Mega-Tutorial系列的第十八章,我将在其中部署Microblog到Heroku云平台。供您参考,以下是本系列文章的列表。
第1章:Hello, World!第2章:模板 第3章:Web表单第4章:数据库第5章:用户登录第6章:配置文件页面和头像第7章:错误处理第8章:关注与被关注第9章:分页第10章:电子邮件支持第11章:整容第12章:日期和时间第13章:I18n和L10n第14章:Ajax第15章:大型应用程序结构第16章:全文搜索第17章:在Linux上部署第18章:在Heroku上部署(本文)第19章:Docker容器上的部署第20章:一些JavaScript Magic第21章:用户通知第22章:后台工作第23章:应用程序编程接口(API) 注意1:如果您正在寻找本教程的旧版本,请在此处。
注意2:如果您想在此博客上支持我的工作,或者只是没有耐心等待每周的文章,我将提供完整的本教程版本,打包成电子书或视频集。欲了解更多信息,请访问courses.miguelgrinberg.com。
在上一篇文章中,我向您展示了托管Python应用的“传统”方式,并且为您提供了两个实际的示例,以将其部署到基于Linux的服务器上。如果您不习惯于管理Linux系统,您可能会认为需要花很多精力在任务上,并且肯定有一种更简单的方法。
在本章中,我将向您展示一种完全不同的方法,在这种方法中,您依赖第三方云托管提供商来执行大多数管理任务,从而使您腾出更多时间来处理应用程序。
许多云托管提供商提供了一个应用程序可以运行的托管平台。 你只需提供部署到这些平台上的实际应用程序,因为硬件,操作系统,脚本语言解释器,数据库等都由该服务管理。 这种服务称为平台即服务(PaaS)。
听起来好得令人难以置信,对吧?
我将研究将Microblog部署到Heroku,Heroku是一种流行的云托管服务,对Python应用程序也非常友好。我之所以选择Heroku,不仅是因为它很受欢迎,还因为它具有免费的服务水平,使您可以跟随我并进行完整的部署而无需花任何钱。
本章的GitHub链接是:Browse,Zip,Diff。
在Heroku上托管 Heroku是最早的服务提供商平台之一。它最初是作为基于Ruby的应用程序的托管选项,但后来发展为支持许多其他语言,例如Java,Node.js,当然还有Python。
将Web应用部署到Heroku是通过git版本控制工具完成的,因此您必须将应用程序放置在git代码库中。Heroku在应用程序的根目录中查找一个名为Procfile的文件,以获取有关如何启动该应用的说明。对于Python项目,Heroku还希望有一个requirements.txt文件,其中列出了需要安装的所有模块依赖项。通过git将应用程序上传到Heroku的服务器后,您基本上已经完成,只需等待几秒钟,直到应用程序在线即可。真的就是这么简单。
Heroku提供的不同服务级别,允许您选择为应用程序获得多少计算能力和时间,因此随着用户群的增长,您将需要购买更多的计算单元,Heroku称之为“ dynos”。
准备尝试Heroku了吗?让我们开始吧!
创建Heroku帐户 您需要先拥有一个帐户,然后才能部署到Heroku。因此,请访问heroku.com并创建一个免费帐户。拥有帐户并登录到Heroku后,您将可以访问dashboard,其中列出了你的所有应用程序。
安装Heroku CLI Heroku提供了一个命令行工具,用于与其名为Heroku CLI的服务进行交互,该工具可用于Windows,Mac OS X和Linux。 该文档包括了支持的所有平台的安装说明。 如果你计划部署应用程序以测试该服务,请将其安装在你的系统上。
一旦安装了CLI,您应该做的第一件事就是登录到您的Heroku帐户:
$ heroku login Heroku CLI会要求您输入电子邮件地址和帐户密码。你的身份验证状态将在随后的命令中被记住。
设置Git git工具是Heroku应用程序部署的核心,因此如果你还没有安装它的话,则必须将它安装到你的系统上。 如果你没有可用于你的操作系统的安装包,则可以访问git站点以下载安装程序。
使用git的原因很多并且都理由充分。 如果你打算部署应用到Heroku,那么这些原因就要又增加一个,因为要部署应用到Heroku,你的应用程序必须在git代码库中。 如果你要为Microblog执行测试部署,可以从GitHub克隆应用程序:
$ git clone https://github.com/miguelgrinberg/microblog $ cd microblog $ git checkout v0.18 git checkout命令将代码库切换到指定的历史提交点,也就是本章所处的位置。
如果您喜欢使用自己的代码而不是我的代码,你可以通过在顶层目录中运行git init .来将你自己的项目转换成git代码库(注意init后面的句号,它告诉git你想要在当前目录中初始化代码库)。
创建一个Heroku应用 要向Heroku注册新应用,请使用应用程序根目录中的命令apps:create,并将应用程序名称作为唯一参数传递:
$ heroku apps:create flask-microblog Creating flask-microblog.
最近在Flask Web Development作者博客看到第二版Flask Mega-Tutorial已在2017年底更新,现翻译给大家参考,希望帮助大家学习flask。
这是Flask Mega-Tutorial系列的第十七章,我将把Microblog部署到Linux服务器。
供您参考,以下是本系列文章的列表。
第1章:Hello, World!第2章:模板 第3章:Web表单第4章:数据库第5章:用户登录第6章:配置文件页面和头像第7章:错误处理第8章:关注与被关注第9章:分页第10章:电子邮件支持第11章:整容第12章:日期和时间第13章:I18n和L10n第14章:Ajax第15章:大型应用程序结构第16章:全文搜索第17章:在Linux上部署(本文)第18章:在Heroku上部署第19章:Docker容器上的部署第20章:一些JavaScript Magic第21章:用户通知第22章:后台工作第23章:应用程序编程接口(API) 注意1:如果您正在寻找本教程的旧版本,请在此处。
注意2:如果您想在此博客上支持我的工作,或者只是没有耐心等待每周的文章,我将提供完整的本教程版本,打包成电子书或视频集。欲了解更多信息,请访问courses.miguelgrinberg.com。
在本章中,我将达到Microblog应用生命中的一个里程碑,因为我将讨论在生产服务器上部署该应用的方式,以便真实用户可以访问该应用。
部署的主题很广泛,因此不可能在这里涵盖所有范畴。 本章致力于探讨传统托管方式,包括Ubuntu发行版的Linux服务器和流行的树莓派微机。 我将在后面的章节中介绍其他选项,例如云和容器部署。
本章的GitHub链接是:Browse,Zip,Diff。
传统托管 当我提到“传统托管”时,我的意思是应用是手动或通过原始服务器机器上的脚本安装部署的。该过程涉及安装应用程序,其依赖项和生产规模的Web服务器,并配置系统以使其安全。
当您将要部署自己的项目时,您需要问的第一个问题是在哪里可以找到服务器。目前有很多经济托管服务。例如,Digital Ocean,Linode或Amazon Lightsail会以每月5美元的价格租用一台虚拟Linux服务器,在其中运行您的部署实验(Linode和Digital Ocean为其入门级服务器提供1GB RAM,而Amazon仅提供512MB )。如果您一分钱都不愿意花,那么Vagrant和VirtualBox这两个工具结合在一起,使可以您在自己的计算机上创建类似于付费服务器的虚拟服务器。
从技术的角度来看,就操作系统的选择而言,此应用程序可以部署在任何主要操作系统上,该列表包括各种各样的开源Linux和BSD发行版以及商业OS X和Microsoft Windows(尽管OS X是基于开源BSD衍生产品Darwin的,它是开源/商业的混合选项)。
由于OS X和Windows是未优化为用作服务器的桌面操作系统,因此我将其作为候选者丢弃。在Linux或BSD操作系统之间进行选择主要取决于喜好,因此,我将选择两种操作系统中最流行的一种,即Linux。至于Linux发行版,我将再次选择流行度,并选择Ubuntu。
创建一个Ubuntu服务器 如果您有兴趣与我一起进行此部署,则显然需要一台服务器来进行工作。我将为您推荐两种选择来购买服务器,一种是付费的,另一种是免费的。如果您愿意花一点钱,可以在Digital Ocean,Linode或Amazon Lightsail上获得一个帐户,然后创建一个Ubuntu 16.04虚拟服务器。您应该使用最小的服务器选项,在我撰写本文时,这三个提供商的费用均为每月5美元。开销是按照服务器启动的小时数进行比例计算的,因此,如果您创建服务器,将其使用几个小时然后删除,则只需支付几分钱。
免费替代方案基于您可以在自己的计算机上运行的虚拟机。要使用此选项,请在计算机上安装Vagrant和VirtualBox,然后创建一个名为Vagrantfile的文件并用以下内容来描述虚拟机的规格:
Vagrantfile:Vagrant配置。
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/xenial64" config.vm.network "private_network", ip: "192.168.33.10" config.vm.provider "virtualbox" do |vb| vb.memory = "1024" end end 该文件配置了一个带有1GB RAM的Ubuntu 16.04服务器,你可以用其IP地址192.168.33.10来访问该服务器。 要创建服务器,请运行以下命令:
$ vagrant up 请查阅Vagrant命令行文档,以了解管理虚拟服务器的其他选项。
使用SSH客户端 您的服务器处于后端,因此不会像在您自己的计算机上那样拥有桌面。您将通过SSH客户端连接到服务器,并通过命令行对其进行操作。如果您使用的是Linux或Mac OS X,则可能已经安装了OpenSSH。如果您使用的是Microsoft Windows,则Cygwin,Git和 Windows Subsystem for Linux 都提供OpenSSH,因此您可以安装这些选项中的任何一个。
自2020.10开始学习前端知识,抽时间整理一下过去笔记,顺便备份方便自己复习。
学习目录 一、HTML标签基础1.骨架标签2.元素标签分类3.标签关系4.文档类型5.页面语言lang6. 字符集 二、HTML常用标签1、排版标签1)标题标签h2)段落标签p3)水平线标签hr4)换行标签br5)div标签和span标签 2、标签属性3、img标签4、a链接标签5、注释标签 三、路径1.相对路径2.绝对路径 四、表格五、列表标签1.无序列表 ul2.有序列表 ol3.自定义列表 ul 六、表单标签1.input控件2.label标签3. textarea控件(文本域)4. select下拉列表5.form表单域 HTML 指的是超文本标记语言 (Hyper Text Markup Language)是用来描述网页的一种标记语言,而不是编程语言。
一、HTML标签基础 1.骨架标签 <html> <head> <title></title> </head> <body> </body> </html> 标签名定义说明htmlHTML标签页面中最大的标签,我们成为 根标签head文档的头部注意在head标签中我们必须要设置的标签是titletitle文档的标题让页面拥有一个属于自己的网页标题body文档的主体元素包含文档的所有内容,页面内容 基本都是放到body里面的 2.元素标签分类 1.双标签
<body></body> 2.单标签
<br/> 区别在于结束标签符号 "/ " 放置的位置不同,单标签的 “/ ” 有时也可以不加。
3.标签关系 1.嵌套关系
<ul> <li></li> </ul> 2.并列关系
<li></li> <li></li> 4.文档类型<!DOCTYPE> 下列代码为vscode按下 “ !” 快速生成的代码块
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="
(12分)假设你在浏览某网页时点击了一个超链接,URL为“https:// www . kicker .com.cn/index.html” ,且该URL对应的IP地址在你的计算机上没有缓存;文件index.html引用了8个小图像。域名解析过程中,无等待的一次DNS解析请求与响应时间记为RTTd,HTTP请求传输Web对象过程的一次往返时间记为RTTh。请回答下列问题:
1)你的浏览器解析到URL对应的IP地址的最短时间是多少?最长时间是多少?
2)若浏览器没有配置并行TCP连接,则基于HTTP1.0获取URL链接Web页完整内容(包括引用的图像,下同)需要多长时间(不包括域名解析时间,下同)? 若浏览器配置5个并行TCP连接,则基于HTTP1.0获取URL链接Web页完整内容需要多长时间?若浏览器没有配置并行TCP连接,则基于非流水模式的HTTP1.1获取URL链接Web页完整内容需要多长时间?基于流水模式的HTTP1.1获取URL链接Web页完整内容需要多长时间? 答:
1)浏览器解析到URL对应的IP地址的最短时间是RTTd。最长时间是5RTTd。
因为www.kicker.com.cn,就要最先去根,然后去cn,再是到cn-com,最后去kicker,4个RTTd,再加上访问本地的1个RTTd,所以有5个RTTd。
2)需要18RTTh。
因为HTTP1.0是非持久性链接的,每个TCP连接最多允许1个对象传输,所以一共建立9次TCP连接,耗时2*9=18RTTh。
3)需要6RTTh。
因为HTTP1.0是非持久性链接的,每个TCP连接最多允许1个对象传输,但浏览器配置5个并行TCP连接,一开始建立TCP连接,获得index.html文件2个RTTh。然后由图像地址信息,在2轮并行处理下完成8个图像的加载工作。2*2个RTTh。2+ 4 = 6 RTTh。所以耗时6RTTh。
4)①需要10RTTh,②需要3RTTh.
基于非流水模式的HTTP1.1获取URL链接Web页完整内容需要10RTTh。基于流水模式的HTTP1.1获取URL链接Web页完整内容需要3RTTh。
因为非流水模式的HTTP1.1即无流水的持久性连接,客户端只有收到前一个响应后才发送新请求,所以耗时2+8=10RTTh。基于流水模式的HTTP1.1是客户端只要遇到一个引用对象就尽快发出请求,所以耗时2+1=3RTTh。
细节在此博客
1、首先,创建一个类,部分属性和方法设置为private。
package com.example.demo.utils; /** * @Author HL * @Date 2021年3月20日 */ public class Person { private String id = "10"; private String name = "张三"; private String getId() { return id; } private String getName() { return name; } public String getInfo() { return id + ", " + name; } } 2、再创建一个类,利用Java反射机制调用私有属性和方法。
package com.example.demo.utils; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * 测试Java反射技术 * @Author HL * @Date 2021年3月20日 */ public class ReflectTest { public static void main(String[] args) { reflectMethod(); } /** * 反射方法获取私有属性及方法 * * @Author HL * @Date 2021年3月20日 */ public static void reflectMethod() { try { // 获得Person类 Class c1 = Person.
最近在Flask Web Development作者博客看到第二版Flask Mega-Tutorial已在2017年底更新,现翻译给大家参考,希望帮助大家学习flask。
这是Flask Mega-Tutorial系列的第十六章,其中我将为Microblog添加全文搜索功能。
供您参考,以下是本系列文章的列表。
第1章:Hello, World!第2章:模板 第3章:Web表单第4章:数据库第5章:用户登录第6章:配置文件页面和头像第7章:错误处理第8章:关注与被关注第9章:分页第10章:电子邮件支持第11章:整容第12章:日期和时间第13章:I18n和L10n第14章:Ajax第15章:大型应用程序结构第16章:全文搜索(本文)第17章:在Linux上部署第18章:在Heroku上部署第19章:Docker容器上的部署第20章:一些JavaScript Magic第21章:用户通知第22章:后台工作第23章:应用程序编程接口(API) 注意1:如果您正在寻找本教程的旧版本,请在此处。
注意2:如果您想在此博客上支持我的工作,或者只是没有耐心等待每周的文章,我将提供完整的本教程版本,打包成电子书或视频集。欲了解更多信息,请访问courses.miguelgrinberg.com。
本章的目的是为Microblog实现搜索功能,以便用户可以使用自然语言找到有趣的帖子。对于许多类型的网站,可以让Google,Bing等搜索引擎将所有内容编入索引,并通过其搜索API提供搜索结果。这对于大多数页面都是静态的网站(例如论坛)非常有效。但是在我的应用中,基本内容单位是用户帖子,这是整个网页的一小部分。我想要的搜索结果类型是针对这些单个博客帖子,而不是整个页面。例如,如果我搜索单词“ dog”,那么我想查看来自包含该单词的所有用户的博客文章。显然,该页面显示了所有带有“dog”一词的博客帖子。
本章的GitHub链接是:Browse,Zip,Diff。
全文搜索引擎简介 对全文搜索的支持没有像关系数据库那样标准化。有几个开源的全文本引擎:Elasticsearch,Apache Solr,Whoosh,Xapian,Sphinx等。似乎这还不够,有几个数据库还提供了与专用搜索引擎类似的搜索功能,例如我上面列举的那些。SQLite,MySQL和PostgreSQL都提供了一些搜索文本的支持,而MongoDB和CouchDB等NoSQL数据库也支持。
如果您想知道其中哪些可以在Flask应用中运行,答案就是所有这些!那是Flask的强项之一,,它在完成工作的同时不会自作主张。那么最好的选择是什么?
在专用搜索引擎列表中,Elasticsearch在我眼中相当受欢迎,部分原因是它在ELK栈中是用于索引日志的“E”,另两个是Logstash和Kibana。 使用某个关系数据库的搜索能力也是一个不错的选择,但是鉴于SQLAlchemy不支持此功能,我将不得不使用原始SQL语句来处理搜索,否则必须找到一个提供以下功能的包: 它提供一个文本搜索的高级接口,并与SQLAlchemy共存。
基于以上分析,我将使用Elasticsearch,但我将以一种非常容易切换到另一个搜索引擎的方式来实现所有文本索引和搜索功能。 你可以用其他搜索引擎的替换我的实现,只需在单个模块中重写一些函数即可。
安装Elasticsearch 有多种安装Elasticsearch的方法,包括一键式安装程序,包含您自己需要安装的二进制文件的zip文件,甚至是Docker镜像。该文档有一个“安装”页面,其中包含所有这些选项的详细信息。如果您使用的是Linux,则可能会有一个可用于您的发行版的软件包。如果您使用Mac并安装了Homebrew,则只需运行brew install elasticsearch即可。
在计算机上安装Elasticsearch之后,您可以在浏览器的地址栏通过输入http://localhost:9200来验证它是否正在运行,预期的返回结果是JSON格式的服务基本信息。。
由于我将通过Python管理Elasticsearch,因此我还将使用Python客户端库:
(venv) $ pip install elasticsearch 您可能还需要更新您的requirements.txt文件:
(venv) $ pip freeze > requirements.txt Elasticsearch教程 首先,我将从Python shell向您展示使用Elasticsearch的基础知识。这将帮助您熟悉此服务,以便您可以理解我稍后将讨论的实现部分。
要创建与Elasticsearch的连接,请创建class的实例Elasticsearch,并将连接URL作为参数传递:
>>> from elasticsearch import Elasticsearch >>> es = Elasticsearch('http://localhost:9200') Elasticsearch中的数据被写入索引。与关系数据库不同,数据只是一个JSON对象。以下示例将一个包含text字段的对象写入名为my_index的索引:
>>> es.index(index='my_index', id=1, body={'text': 'this is a test'}) 如果需要,索引可以存储不同类型的文档,在本处,可以根据不同的格式将doc_type参数设置为不同的值。 我要将所有文档存储为相同的格式,因此我将文档类型设置为索引名称。
对于存储的每个文档,Elasticsearch使用了一个唯一的ID来索引含有数据的JSON对象。
让我们在该索引上存储第二个文档:
C#02 (字符串 数组 ) 字符串 C#语言的字符串是由一个或多个Unicode字符构成的一组字符序列。
用string类型
string类型的常量:用双引号引起来
例如:
string str1 = "ABCD"; string str2 = str1; int i = 3; string str3 = str1 + str2; string str4 = str1 + i; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NOmKRmgc-1616219678517)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210320103212977.png)]
注意:string是Unicode字符串,计算字符串长度时,每个英文字母的长度为1,每个汉字的长度也是1。
string str1 = "123张三"; Console.WriteLine(str1.Length);//结果是:5 Console.ReadLine(); 字符串查找
方法1:用string[index]得到字符串中第index个位置的单个字符。
方法2:用Contains方法查找一个字符串中是否包含指定的子字符串方法3:用StartsWith方法和EndsWith方法,从字符串的首或尾开始查找指定的子字符串,并返回布尔值(true或false)
获取字符串中的单个字符或者子字符串
1.可直接用中括号指明字符在字符串中的序号
string str1 = "abcd"; char mychar = str1[2];//从0开始所以2就是字符串的第三位 Console.WriteLine(mychar);//结果为c 2.Substring方法:得到从某个位置开始的子字符串。
string s1 = "abc123"; string s2 = s1.Substring(2);//从第二截取 string s3 = s1.Substring(2, 3);//从第二个数总共三个字符 Console.
直接把\begin{tikzpicture} ,这部分内容放在表格里就好了。
如下图,把原点放入第三格中。
Tikz图形代码:
\begin{tikzpicture}[scale=1.2] \fill[brown] (1ex,0ex) circle (1.2ex); \end{tikzpicture} 表格代码:
\begin{table} \centering \begin{tabular}{m{1.2cm}m{1.2cm}m{7cm}} \multirow{3}{*}{{\large \textbf{AAA}}} & \textbf{一} & \begin{tikzpicture}[scale=1.2] \fill[brown] (1ex,0ex) circle (1.2ex); \end{tikzpicture} \\ & \textbf{二} & \begin{tikzpicture}[scale=1.2] \fill[brown] (1ex,0ex) circle (1.2ex); \end{tikzpicture} \\ & \textbf{三} & \begin{tikzpicture}[scale=1.2] \fill[brown] (1ex,0ex) circle (1.2ex); \end{tikzpicture} \end{tabular} \end{table} 效果
数字信号处理的课程脉络:围绕数字系统的分析和设计展开,分析了数字系统的响应、IIR和FIR滤波器的设计。
从分析方法的角度来看,可以分为时域分析和变换域分析。时域分析主要是用线性卷积来求解系统的零状态响应;变换域主要用z变换求响应,用零极点图、收敛域等工具判断系统的特性。用傅里叶变换分析系统滤波特性、用DFT分析有限长序列、为了减小DFT的运算量提出FFT。
信号在时域和频域的对偶关系:连续——非周期、离散——周期。
信号与系统Q&A 为什么要引入拉普拉斯变换?
拉式变换的引入是因为指数增长信号的傅里叶级数不存在。由于指数增长信号不收敛,我们把它和收敛因子ⅇ^(−σt) 相乘,用s控制衰减。这使得拉式变换相较于傅式变换研究信号范围变大了。
时域 卷积convolution
什么是卷积?
卷积的本质就是加权求和,它可以联系时域和频域。
引入卷积运算有什么意义?
在对系统进行分析时,系统的传递函数和输入信号进行卷积就得到了输出信号。而我们知道卷积的本质是加权求和,那么输出信号实际上就是把输入信号进入系统后不同时间点的响应进行叠加。
卷积的应用?
1.应用于图像处理;2.卷积定理可以简化运算,比如FFT的使用。
卷积和如何计算?
对位相乘相加法。卷积后序列的长度:N+M-1
序列的周期性:2π/ω是有理数时,正弦序列Asin(ωn+φ)是周期序列。
变换域(z变换) 关于ROC:圆内/圆环/圆外。对于有限长序列一般是全域,严格来讲要讨论0点和无穷远点。ROC内一定不包含极点。
因果性:先有输入后有输出;LSI系统因果的充要条件是h(n)是因果序列;收敛域在圆外。
稳定性:有界输入有界输出;LSI系统稳定的充要条件是h(n)绝对可和;收敛域包含单位圆。
为什么幅频特性能用来判断滤波器类型?
傅里叶变换以2π为周期。那么中间(π)就是变化最快的点,即高频;两端(0和2π)是变化最慢的点,即低频。所以只需要画出0到π上的幅频特性图,就足以看出系统的滤波类型。
关于DTFT DTFT即对序列做傅里叶变换。
DTFT是其原连续时间信号的傅里叶变换的周期延拓。
DTFT是序列在单位圆上的z变换。
关于DFT 为什么要引入DFT呢?
在进行了DTFT后人们发现,离散时间的傅里叶变换仍然是连续谱。为了在频域得到离散信号以便于计算机分析,人们对DTFT进行采样,得到了DFT。
DTFT和DFT的关系:离散傅里叶变换DFT是离散时间傅里叶变换DTFT在(0,2π)上的N点等间隔采样。
DFT和DFS的关系:DFT是DFS的主值序列;DFS是DFT以N为周期的周期延拓序列。
DFT和z变换的关系:DFT是z变换在单位圆上的N点等间隔采样。
DFT是有限长序列的傅里叶变换。
DFT的圆周移位性质:如果序列x(n)发生m点圆周移位,移位后序列的DFT是原序列的DFT乘 W N − m k W_{N}^{-m k} WN−mk
DFT的误差:
混叠失真:采样频率不够,导致不满足采样定理,出现混叠。解决方法:抽样之前先将信号通过一个低通滤波器,滤除高频部分。频谱泄露:由于加窗函数造成很多旁瓣的产生,从而产生谱间干扰。解决方法:选择合适的(缓变型的)窗函数、或者加大窗的宽度。栅栏效应:对频谱进行采样时,只能看到各采样点上的频谱,而可能会有重要的峰值没有被采到,就像是隔着栅栏一样。解决方法:增加抽样点数、或尾部补零以增加数据长度。 DFT 的性质:线性、圆周移位、圆周卷积、共轭对称
什么是圆周卷积?
圆周卷积相当于周期延拓后的序列做周期卷积后再取主值区间。
什么是周期卷积?
周期卷积就是两个周期序列的卷积,具体计算和线性卷积相同。
在什么条件下圆周卷积的结果和线性卷积相同?
设两序列的长度为M、N,在序列后补零到L=M+N-1,进行L点圆周卷积,结果就与线性卷积相同。
or to say, 圆周卷积的长度≥线性卷积的长度时,圆周卷积即和线性卷积相同。
关于FFT FFT的算法原理:①基于时间:按序列在时间上的次序是奇数还是偶数分解为两个更短的子序列。
04261537
按时间抽选的基-2FFT算法流图特点:①输入是码位序倒置排列、输出是自然顺序;②基本计算单元是蝶形计算
FFT的运算量:
IIR滤波器与FIR滤波器设计 IIR与FIR的区别:
IIR是无限长单位冲激响应,有极点,有递归结构;
FIR是有限长单位冲激响应,没有极点,一般没有递归结构,除非采用零极点相互抵消的方式。
模拟信号数字化的过程:1.通过滤波器滤除高频部分;2.A/D转换;3.数字信号处理;4.D/A转换;5.通过滤波器平滑信号
窗函数法设计FIR滤波器:要求窗函数频谱的主瓣尽可能高、窄,旁瓣尽可能短小,但这两个要求不能同时满足,因为主瓣升高旁瓣也会升高,因此只能折中。
1、安装nginx
sudo apt-get install nginx
nginx的默认网站目录是/var/www/html/
默认的nginx网站配置文件为/etc/nginx/sites-available/default 【可以删除,或者改端口,以免占用80端口】
日志文件在/var/log/nginx/ access.log error.log 一般500服务器问题都可以查看该文件
启用nginx服务器 sudo service nginx start || sudo systemctl start nginx
使用netstat -anp则可以看到80端口已经处于LISTEN状态了。
直接查看80端口可以使用命令:sudo lsof -i:80
查看进程 ps aux | grep nginx
打开浏览器输入虚拟机IP,出现 Nginx 的欢迎界面,就代表 Nginx 安装成功了。
配置Nginx查看:配置Nginx点这儿
2、安装 MySql
sudo apt-get install mysql-server mysql-client
安装完毕后,输入命令打开数据库,然后会让输入密码 直接回车就行
mysql -u root -p
use mysql;
# 修改root可以直接登录
update mysql.user set authentication_string=PASSWORD('新密码'),plugin='mysql_native_password' where user='root' and Host = 'localhost';
#输入命令,刷新 MySQL 系统权限设置
在Ubuntu 18.04操作系统下搭建WordPress 4.9.4版本的全过程。过程大致为:安装Apache2、安装PHP及相关组件、安装MySQL、建立Apache与MySQL的连接、最后安装WordPress、配置WordPress数据库及环境。
1.安装Apache2
sudo apt-get install apache2 -y
安装Apache包,-y参数为默认确定安装。
在终端输入:
ifconfig -a
用来查看本机地址:
如果提示如下,那么你需要安装一个ent-tools,然后再执行ifconfig -a:
在浏览器中输入服务器地址可以看见默认页面:
2.资源更新
在Ubuntu 18.04系统终端中输入:
sudo apt-get update
进行资源更新:
输入:
sudo apt-get upgrade -y
进行包更新:
安装PHP及相关组件(如果需要多个PHP共存请看在Ubuntu中实现多个PHP版本共存一文):
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.1-fpm php7.1-mcrypt php7.1-cli php7.1-xml php7.1-mysql php7.1-gd php7.1-imagick php7.1-recode php7.1-tidy php7.1-xmlrpc
sudo apt-get install libapache2-mod-php7.1
执行完上面的命令然后执行php -v,如果出现下面的提示,那么就证明安装成功:
3.安装MySQL
在Ubuntu 18.04系统终端中输入:
sudo apt-get --purge remove mysql-server mysql-common mysql-client
数据中心整体架构。 数据仓库的整理架构,各个系统的元数据通过ETL同步到操作性数据仓库ODS中,对ODS数据进行面向主题域建模形成DW(数据仓库),DM是针对某一个业务领域建立模型,具体用户(决策层)查看DM生成的报表。
数据仓库的ODS(Operational Data Store)、DW(Data Warehouse)和DM(Data Mart)概念 ODS、DW、DM协作层次图 DW可细分为DWDetail,DWMiddle,DWServer;其他层可有DIM和TMP 数据明细层 DWD(Data Warehouse Detail):这一层主要解决一些数据质量问题和数据的完整度问题。比如用户的资料信息来自于很多不同表,而且经常出现延迟丢数据等问题,为了方便各个使用方更好的使用数据,我们可以在这一层做一个屏蔽。DWD 主要是对 ODS 层做一些数据清洗和规范化的操作,DWS主要是对 ODS 层数据做一些轻度的汇总。数据中间层 DWM(Data WareHouse Middle):可看作中间过渡层。轻度综合层与DWD的主要区别在于二者的应用领域不同,DWD的数据来源于生产型系统,并未满意一些不可预见的需求而进行沉淀;轻度综合层则面向分析型应用进行细粒度的统计和沉淀数据服务层 / 主题层 DWS(Data WareHouse Servce):从ODS层中对用户的行为做一个初步的汇总,抽象出来一些通用的维度:时间、ip、id,并根据这些维度做一些统计值,比如用户每个时间段在不同登录ip购买的商品数等。这里做一层轻度的汇总会让计算更加的高效,在此基础上如果计算仅7天、30天、90天的行为的话会快很多。我们希望80%的业务都能通过我们的DWS层计算,而不是ODS。 维表层(Dimension):比如国家代码和国家名、地理位置、中文名、国旗图片等信息就存在DIM层中。主要包含两部分数据:
高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。
低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。数据量可能是个位数或者几千几万。
TMP:每一层的计算都会有很多临时表,专设一个DWTMP层来存储我们数据仓库的临时表。
应用层(APP): 数据产品层(APP),这一层是提供为数据产品使用的结果数据。
主要是提供给数据产品和数据分析使用的数据,一般会存放在 ES、Mysql 等系统中供线上系统使用,也可能会存在 Hive 或者 Druid 中供数据分析和数据挖掘使用。
如我们经常说的报表数据,或者说那种大宽表,一般就放在这里。
概念:应用层是根据业务需要,由前面三层数据统计而出的结果,可以直接提供查询展现,或导入至Mysql中使用。
数据生成方式:由明细层、轻度汇总层,数据集市层生成,一般要求数据主要来源于集市层。
日志存储方式:使用impala内表,parquet文件格式。
日志删除方式:长久存储。
表schema:一般按天创建分区,没有时间概念的按具体业务选择分区字段。
库与表命名。库名:暂定apl,另外根据业务不同,不限定一定要一个库。(其实就叫app_)就好了
旧数据更新方式:直接覆盖。
数仓思维图 数据的来源 数据主要会有两个大的来源:
业务库,这里经常会使用 Sqoop 来抽取
我们业务库用的是databus来进行接收,处理kafka就好了。
在实时方面,可以考虑用 Canal 监听 Mysql 的 Binlog,实时接入即可。(有机会补一下这个canal)
埋点日志,线上系统会打入各种日志,这些日志一般以文件的形式保存,我们可以选择用 Flume 定时抽取,也可以用用 Spark Streaming 或者 Storm 来实时接入,当然,Kafka 也会是一个关键的角色。
[Windows]msvcr110.dll运行库缺失问题解决方案 系统:win10 64位
问题:无法启动此程序,因为计算机中丢失 MSVCR110.dll。尝试重新安装该程序以解决此问题。
运行某些软件时,需要用到msvcr110.dll,如果当前系统内没有这个库,就会报如下错误:
“无法启动此程序,因为计算机中丢失 MSVCR110.dll。尝试重新安装该程序以解决此问题。”
查看系统是否拥有msvcr110.dll可以用如下方法:
C:\Windows\System32 和 C:\Windows\SysWOW64 下有没有msvcr110.dll(两个目录下都有最好,即使有一个文件夹下没有,64位 要着重观察 C:\Windows\System32 下有没有)
注:我在查找解决方案的时候,他们都说根据系统来看
如果是32位操作系统查看 C:\Windows\System32
如果是64位操作系统查看 C:\Windows\SysWOW64
但我观察到,并不是这样的,即使是64位操作系统,下载完成:
Visual C++ Redistributable for Visual Studio 2012 Update 4
后运行,并没有将msvcr110.dll添加到 :
C:\Windows\SysWOW64 目录
而是添加到了
C:\Windows\System32 目录
目前我也不知道为何这样,如果有懂得大神可以评论说明一下。
解决方案 方案一:
微软官方解决方案 http://www.microsoft.com/en-us/download/details.aspx?id=30679#
打开该连接:
弹出如下界面:
点击Download:
根据操作系统选择需要下载的文件勾选 然后点Next就会下载。
下载完成后得到(以64位操作系统为例)名为:
vcredist_x64.exe 的执行程序 双击运行。
查看 C:\Windows\System32目录下是否有msvcr110.dll
微软官方网站加载过慢,可能需要用到科学上网
方案二
由于微软官方可能加载过慢
可以自行百度 vcredist 下载对应的版本
运行就行。
方案三(不推荐 我搞了好久没搞明白):
自行下载msvcr110.dll
根据操作系统位数
下载对应的msvcr110.dll
64位: 需要将 msvcr110.dll 放到 C:\Windows\System32目录下
目录 前言基本结构读写操作standby空闲状态读操作写操作 前言 SRAM:Static Random-Access Memory,静态随机存取存储器。1所谓的“静态”,是指当设备保持供电时,SRAM中存储的数据可以保持不变;掉电时,其存储的数据会丢失。
6T SRAM,其中T是指Transistor晶体管,即SRAM的基本存储单元是由6个晶体管构成的。
下面将详细介绍其基本存储单元的内部结构和SRAM的读写操作过程。
本文所述逻辑均为正逻辑。
基本结构 图中M1,M3,M5和M6为NMOS管,高电平导通;M2和M4为PMOS管,低电平导通。BL(Bit Line)为位线,用于读写数据。WL(Word Line)为字线,用于控制读写操作。SRAM中每一bit的数据存储在由M1,M2,M3和M4组成两个交叉连接的反相器中(即图中的Q端和/Q端)。M5和M6两个NMOS管是控制开关,用于控制数据从存储单元到位线之间的传递。
读写操作 SRAM的基本存储单元有3种状态:standby(空闲)、reading(读)和writing(写)。
standby空闲状态 若字线WL为低电平,则M5和M6两个晶体管处于截止状态,将基本存储单元与位线隔离。由M1-M4组成的两个反相器继续保持其状态。
读操作 假设该基本存储单元中存储的数据为1,即Q=“1”,/Q=“0”。在读周期开始之前,通过预充电电路,将两根位线的电平充电到逻辑“1”,预充电的电路结构如下(由三个PMOS管组成)。
随后将WL置为高电平,使得M5和M6两个晶体管导通。因为我们假设Q=“1”,故Q端的高电平使得晶体管M1导通,位线/BL之前预充的高电平通过M5和M1连接到地,使其值为逻辑“0”;在位线BL一侧,因/Q=“0”,晶体管M4和M6导通,通过VDD将位线拉到高电平逻辑“1”。
若基本存储单元存储的数据为0,其原理一样。
写操作 在写周期之前,需要把要写入的状态加载到位线。如需要写入数据0,则设置BL=“0”,/BL=“1”。随后将字线WL置为高电平,M5和M6晶体管导通,位线的状态被写入带基本存储单元中。
https://baike.baidu.com/item/SRAM/7705927?fr=aladdin ↩︎
如标题所示,目的是将矩阵进行PCA分析最终得到降维后的新主成分,对于特征值特征向量的提取方法是通过svd。代码和函数名称定义如下/如图所示
function [Xm,U,L]=pca(X,K);
% Usage: [Xm,U,L] = pca(X,K)
% Inputs:
% X [M x N] Compound data matrix.
% K 1x1 Number of eigenvalues and eigenvectors to be returned.
% Outputs:
% Xm [M x 1] Mean.
% U [M x K] Matrix whose columns consist of eigenvectors.
% L [1 x K] Vector containing eigenvalues.
[M N]=size(X);
Xm=mean(X,2);
Xd=X-repmat(Xm,1,N);
if (N < M) %less images than image length
远程连接ECS实例。连接方式请参见连接方式概述。运行以下命令,安装Docker存储驱动的依赖包。 dnf install -y device-mapper-persistent-data lvm2 运行以下命令,添加稳定的Docker软件源。 dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 运行以下命令,查看已添加的Docker软件源。 dnf list docker-ce 正确的返回示例如下。 docker-ce.x86_64 3:19.03.13-3.el7 docker-ce-stable 运行以下命令安装Docker。 dnf install -y docker-ce --nobest 运行以下命令启动Docker。 systemctl start docker
使用的pyecharts是v1.0
这里需要注意,pyecharts0.5的版本和v1.0以上的版本完全不一样,可以说是两个包
该包能够方便快捷的绘制图形
饼状图 圆环 代码:
from pyecharts.charts import Pie from pyecharts import options as opts from pyecharts.render import make_snapshot from snapshot_phantomjs import snapshot def getPie(data,name): ''' style like this https://gallery.pyecharts.org/#/Pie/pie_radius 样式为 空心 的圆环 :param data:字典 :param name:title :return: ''' c = ( Pie() .add( "", [list(z) for z in zip(data.keys(), data.values())], radius=["45%", "75%"],#直径 center=["50%", "56%"],#中心位置 label_opts=opts.LabelOpts(is_show=False, position="center"),#is_show是否展示数值 ) .set_global_opts( title_opts=opts.TitleOpts(title=name, pos_top="13",pos_left="1%"),#标题位置 legend_opts=opts.LegendOpts(orient="vertical", pos_top="25%", pos_left="8%"),#图例位置 ) .set_series_opts(label_opts=opts.LabelOpts(formatter="size{b}: {d}%"))#数值表现形式,这里是百分比 # .
1.购买 登录官网查看云服务器购买列表,购买时选择地区、操作系统镜像等,购买云服务器后会发送短信通知,这里只列出一个:
【阿里云】尊敬的用户:您的云服务器ECS创建成功(实例名称:xxxxxxxxxx,公网IP:xxx.xxx.xxx.xxx)。系统用户名: root;若您忘记或未设置密码可进入ECS控制台-实例列表-重置密码。如您购买了数据盘请在实例创建后手动磁盘格式化分区,更多信息请查看站内信或邮件。
2.登录控制台 此时便可登录阿里云控制台,输入账号密码或者阿里云app扫码进入即可:
进入后都是一些服务器介绍,安全管控你等信息,可以自己了解一下,这时候点击左侧菜单,点击云服务器ECS,显示界面如图:
点击实例,左上角的服务器区域选择购买时的区域,这时你的服务器信息就显示出来了,如图:
一些基本的功能大家可以慢慢去探索,这里简要讲一下怎么把服务器用起来而已
3.连接主机 1)通过控制台连接 首先云服务器有两个密码,一个是远程登录密码,一个是实例密码,就是我们平常登录服务器的root密码
通过控制台连接服务器需要使用到这两个密码,刚开始不知道密码,直接重置即可,修改或者重置密码位置如图:
 注意:修改实例密码后需要重启服务器生效。
点击远程连接,输入远程连接密码,如图:
此时就可以输入root用户和密码(即实例密码)开始对服务器进行各项操作了,如图:
登录成功后,就像我们平常使用实体服务器或者虚拟机服务器一样即可,如图:
断开连接点击左侧按钮列表的断开连接即可,如图:
2)通过XShell等工具进行连接 通过收到的短信以及管理控制台的实例页面即可看到服务器的公网IP,此时通过XShell,CRT等工具按照连接其他服务器的方式连接即可,不在赘述
3)通过阿里云App进行连接 进入阿里云App选择控制台,如图:
选择SSH工具,可以选择输入密码或者密码工具进行验证,点击最下侧切换选项即可,如图:
输入密码后即可对服务器进行连接,同样,在这里可以进行各种操作,只要觉得用的方便,如图:
4.部署应用 1)开放端口 首先部署的应用对外开放的端口应该先进行配置才能被访问,选择安全组配置,如图:
点击配置规则,如图:
点击入方向标签,这里展示了访问服务器所有的安全规则,如图:
如要开放80端口,填写信息后点击确定即可,如图:
2)启动应用 注意:使用普通用户启动应用,使用的端口需要使用1024以上的端口,否则会报绑定失败方面的错误,例如80端口普通用户是无法使用的
3)访问应用 启动好应用后,便可以通过IP地址端口进行访问,如图,开放的端口是8080:
如果需要通过域名进行访问,需要申请域名,由于刚申请服务器,还未进行该操作,感兴趣的话可以自己试一下。
2018-09-27 added 域名购买实名认证之后不要急着去备案,至少也等个三天以上,要不备案总是被驳回呀,本人被驳回三次,明明没有任何问题,第四次提交才通过!!!
import java.util.concurrent.Semaphore; /** * 使用semaphore信号量实现生产者消费者问题。 * 生产者消费者问题的本质,其实就是同步和互斥的问题。 * 同步问题,其实就是一前一后的问题,某个进程或者程序,必须在另一个的前面或者后面执行,他俩不能同时执行,就是这个意思。 * 互斥问题,即某个资源不能同时被两个进程占用 */ public class Test { //比如这是苹果的数量。 private static Integer count = 0; //创建三个信号量 //这个是生产者许可,最多可以获取10个许可,也就是说最多生产10个苹果。 final Semaphore provider = new Semaphore(10); //这个是消费者许可。一个空盘子。 final Semaphore consumer = new Semaphore(0); //体现互斥的地方:保证生产者和消费者之间的交替进行 所以再设置一个mutex信号量 final Semaphore mutex = new Semaphore(1); public static void main(String[] args) { Test4 test = new Test(); new Thread(test.new Producer()).start(); new Thread(test.new Consumer()).start(); new Thread(test.new Producer()).start(); new Thread(test.new Consumer()).start(); new Thread(test.
1. 解压 mysql 的安装包
mkdir mysql tar -xvf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar -C mysql/ 2. 安装客户端
cd mysql/ rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm --force --nodeps 3. 安装服务端
rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm --force --nodeps 4. 修改mysql默认字符集
vi /etc/my.cnf 添加如下内容: [mysqld] character-set-server=utf8 collation-server=utf8_general_ci -- 在文件最下方添加 [client] default-character-set=utf8 5. 启动mysql服务
service mysqld start 6. 登录mysql
mysql -u root -p 敲回车,输入密码 这个centOS7简版安装没有办法查看 *初始密码查看:*cat /var/log/mysqld.log **用这个** cat /var/log/mysqld.log |grep password 在root@localhost: 后面的就是初始密码 7. 修改mysql登录密码
set global validate_password_policy=0; set global validate_password_length=1; set password=password('123456'); 8.
PCA降维--两种实现 : SVD或EVD. 强力总结. 在鸢尾花数据集(iris)实做
今天自己实现PCA,从网上看文章的时候,发现有的文章没有搞清楚把SVD(奇异值分解)实现和EVD(特征值分解)实现,查阅多个文章很容易更糊涂,所以搞懂之后写下这个总结. 先说最关键的点:
a. PCA两个主要的实现方式: SVD(奇异值分解), EVD(特征值分解).
b. 特征值分解方式需要计算协方差矩阵,分解的是协方差矩阵.
SVD方式不需要计算协方差矩阵,分解的是经过中心化的原数据矩阵
1.特征值分解实现PCA (也有人称为PCA原始算法)
然后把中心化过的矩阵 X 乘 W, 就得到了低维数据.
2.SCD分解实现PCA
(1)样本中心化得到矩阵X
(2)对X进行SVD分解 u s v = svd(X)
(3)取v的前dd个分量
(4)X*v[0:dd]就是低维空间的数据.
(这是对应X每一行为一个样本的情况.u用于行数的压缩,v用于列数的压缩)
3.Show Me the Code
import numpy as np
from numpy.linalg import svd
from numpy.linalg import eig
from sklearn import datasets # 从sklearn中调出数据集
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
iris = datasets.load_iris()
data_src = iris.data #(150,4)
pymysql.err.OperationalError: (1045, “Access denied for user ‘root’@‘192.168.216.1’ (using password: YES)”)解决办法
问题: python远程连接虚拟机或者mysql服务器,正确输入账号密码,
import pymysql
conn = pymysql.connect(‘192.168.216.127’,‘root’,‘john’,‘testdb’)
运行时报错:
pymysql.err.OperationalError: (1045, “Access denied for user ‘root’@‘192.168.216.1’ (using password: YES)”)
原因:虽然输入正确的用户名和密码,但是却没有在其他ip地址上访问的权限。需要用root账号登录mysql然后修改权限
解决方法:
step 1 :
mysql -u root -p
输入密码,登录
step 2:
GRANT ALL PRIVILEGES ON . TO ‘myuser’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
step 3:
FLUSH PRIVILEGES;
————————————————
版权声明:本文为CSDN博主「Johnsonbug_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34272900/article/details/90995746
ffmpeg -i inputfile -map 0 -c:a copy -c:s copy -c:v libx264 output.mkv
1、python的下载地址:python.org/geteit
2、双击.exe文件安装
选择自定义安装,为所有用户安装启动器(推荐),添加到路径;
安装:说明文档、pip、IDLE、标准套件库、全局启动python
修改地址后,点击install安装;
完成后关闭即可;
注意,
1、安装地址要记住;python可以多版本安装在同一台电脑上,同时后续使用虚拟环境时候,可使用不同版本的python来操作;
2、下载时候给的默认地址都是最新的版本,需要历史版本的,可以在下边搜索,注意×64和×32版本,以及windows版本区分;
3、这个安装方法是我自己安装记录,可能python2的不是这样安装,我没安过,请海涵。
今天我们来聊聊跨域的事情,那我们先从浏览器的报错开始吧!
见到这个报错信息,那么就要恭喜你,遇到了跨域这个磨人的小妖精了。
关于这篇文章的代码,需要的自取。
什么是跨域? 那么说到跨域,我们就需要先搞懂什么是同源策略?
同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。
所谓"同源"指的是“三个相同”。
协议相同域名相同端口相同 当协议、域名、端口中任意一个不相同时,都算作跨域。需注意即使两个不同的域名指向同一个IP地址,也是跨域。
同源策略的限制:
Cookie、LocalStorage、IndexedDB等本地存储内容DOM节点AJAX请求发送后,结果被浏览器拦截 以下是可以嵌入跨源资源的一些示例:
<script src="..."></script>标签嵌入跨域脚本<link rel="stylesheet" href="..."></link>标签嵌入CSS通过<img>展示图片通过<video>和<audio>播放的多媒体资源通过<object>、<embed>、<applet>嵌入的插件通过@fant-face引入的字体。通过<iframe>载入的任何资源 怎么解决跨域? 为了模拟跨域,我用node搭建两个服务server1、server2。server1为3000端口为页面服务器,server2为4000端口为接口服务器。分别用nodemon启动两个服务。
Server1的代码如下:
const http = require('http'); const fs = require('fs'); const path = require('path'); const server = http.createServer((request, response) => { const { url, method } = request; console.log(url); if(url === '/' && method === 'GET') { const file = path.resolve(__dirname, "../client/index.html"); fs.readFile(file, (err, data) => { if(err) { response.writeHead(500, { 'Content-Type': 'text/plain;charset=utf-8' }); response.
父组件
<template> <div class="text-center"> <div v-for=" i in 100" :key="i">{{i}}</div> <Modal v-show="showModal" v-on:closeme="closeme"></Modal> </div> </template> <script> import Modal from '@/components/Modal' export default { name: 'test', data () { return { showModal: true } }, components: { Modal }, methods: { closeme () { this.showModal = !this.showModal }, stop () { var mo = function (e) { e.preventDefault() } document.body.style.overflow = 'hidden' document.addEventListener('touchmove', mo, false) // 禁止页面滑动 }, move () { var mo = function (e) { e.
Laravel Passport快速实现API认证 安装拓展 passport 首先为什么要使用passport 拓展?
思考:API 认证如果是网页端使用session 会话保持就可以简单做到,但是如果是app端无会话保持的情况下,就只能想其他办法了,其中一个就是:api 令牌。
如何解决这个问题呢?
思考:用户通过 API 登录时,会生成令牌并将其发送给用户,该用户可用于身份验证,也就是app端提交请求时,头信息里必须添加api token, 如下:$accessToken 为用户登录后生成的令牌
‘headers’ => [
‘Accept’ => ‘application/json’,
‘Authorization’ => 'Bearer '. $accessToken,
]
思路明确后,撸起袖子就干。
前提是你已经创建了laravel 项目; 安装passport 拓展:
composer require laravel/passport
愉快的等待中…
passport 拓展配置 添加服务提供者 现在我们需要在 config/app.php 文件中为Passport注册服务,添加如下:
'providers' => [ .... Laravel\Passport\PassportServiceProvider::class, ] 执行数据迁移 php artisan migrate
安装拓展 php artisan passport:install
添加用户表API TOKEN 支持 修改我们的用户模型代码
use Laravel\Passport\HasApiTokens; /** * Class Administrator. * * @property Role[] $roles */ class Administrator extends Model implements AuthenticatableContract { use Authenticatable; use HasPermissions; use DefaultDatetimeFormat; use HasApiTokens; // 添加这行代码 以上是我的部分代码(我的是使用了laravel-admin 的用户表,你的可能是这样):
from urllib.request import urlopen pip install beautifulsoup4 验证:
from bs4 import BeautifulSoup
推荐算法 - 基于邻域的协同过滤Collaborative Filter 1. 定义1.1 userCF1.2 itemCF 2. 基于集合的相似度计算方式3. 基于邻域协同过滤的拓展算法3.1 KNNBasic3.2 KNNMean3.3 KNNZScore3.4 KNNBaseline 4. 协同过滤的优缺点 1. 定义 1.1 userCF userCF:基于用户的相似度,使用用户评分表,通过 group by 用户id,筛选出每位用户的标记过的物品列表,根据多个用户间的物品列表,计算相似度,取相似度靠前的k个邻居,根据这k个邻居的打分以及于其的相似度,得到相似度的加权得分。即为基于邻域的userCF p ( u , i ) = ∑ v ∈ S ( u , K ) ∩ N ( i ) w u v r v i p(u,i) = \sum_{v\in{S(u,K)}\cap{N(i)}}{w_{uv}r_{vi}} p(u,i)=v∈S(u,K)∩N(i)∑wuvrvi
S ( u , K ) 表 示 和 用 户 u 兴 趣 最 接 近 的 K 个 用 户 S(u,K)表示和用户u兴趣最接近的K个用户 S(u,K)表示和用户u兴趣最接近的K个用户
一个好用的三维曲线绘制函数
语法
ezplot3(x,y,z)
ezplot3(x,y,z,[tmin,tmax])
ezplot3(...,‘animate‘)
ezplot3(axes_handle,...)
h = ezplot3(...)
描述
1、ezplot3(x,y,z) :在默认区间0
2、ezplot3(x,y,z,[tmin,tmax]):在tmin < t < t max上绘制曲线 x = x(t), y = y(t), and z = z(t)
3、ezplot3(...,‘animate‘): 产生一个空间曲线的动态轨迹
4、ezplot3(axes_handle,...) : plots into the axes with handle axes_handle instead of the current axes (gca).
5、h = ezplot3(...): returns the handle to a line object in h.
例子
绘制参变量函数:x=sin(t) ,y=cos(t),z=t 区间:[0,6pi]
ezplot3(‘sin(t)‘,‘cos(t)‘,‘t‘,[0,6*pi])
原文:http://blog.csdn.net/u010142437/article/details/23444389
2021.3.16
离散元数值模拟PFC日记:
你好! 这是我第一次使用CSDN 记录PFC颗粒流学习日记
第一步:安装 >> cnpm install vant -S 第二步(1):手动按需导入组件 import Button from 'vant/lib/button'; import 'vant/lib/button/style'; 第二步(2):导入全部组件 再main.js import Vue from 'vue'; import Vant from 'vant'; import 'vant/lib/index.css'; Vue.use(Vant); 组件页面直接调用
主要用到窗体的两个事件PreviewKeyDown,PreviewKeyUp
bool AltKeyDown = false;
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
Key key = (e.Key == Key.System ? e.SystemKey : e.Key);
if (key == Key.LeftAlt || key == Key.RightAlt || key == Key.F4)
{
AltKeyDown = true;
}
if (key == Key.F4 && AltKeyDown)
{
e.Handled = true;
}
}
private void Window_PreviewKeyUp(object sender, KeyEventArgs e)
{
Key key = (e.Key == Key.System ? e.SystemKey : e.Key);
if (key == Key.
html符号总汇:https://blog.csdn.net/u012241616/article/details/114867161 字母相关符号 描述符号/显示UNICODEHEX CODEHTML CODEHTML ENTITYCSS CODEUppercase AAU+00041AA \0041Uppercase BBU+00042BB \0042Uppercase CCU+00043CC \0043Uppercase DDU+00044DD \0044Uppercase EEU+00045EE \0045Uppercase FFU+00046FF \0046Uppercase GGU+00047GG \0047Uppercase HHU+00048HH \0048Uppercase IIU+00049II \0049Uppercase JJU+0004AJJ \004AUppercase KKU+0004BKK \004BUppercase LLU+0004CLL \004CUppercase MMU+0004DMM \004DUppercase NNU+0004ENN \004EUppercase OOU+0004FOO \004FUppercase PPU+00050PP \0050Uppercase QQU+00051QQ \0051Uppercase RRU+00052RR \0052Uppercase SSU+00053SS \0053Uppercase TTU+00054TT \0054Uppercase UUU+00055UU \0055Uppercase VVU+00056VV \0056Uppercase WWU+00057WW \0057Uppercase XXU+00058XX \0058Uppercase YYU+00059YY \0059Uppercase ZZU+0005AZZ \005ALowercase aaU+00061aa \0061Lowercase bbU+00062bb \0062Lowercase ccU+00063cc \0063Lowercase ddU+00064dd \0064Lowercase eeU+00065ee \0065Lowercase ffU+00066ff \0066Lowercase ggU+00067gg \0067Lowercase hhU+00068hh \0068Lowercase iiU+00069ii \0069Lowercase jjU+0006Ajj \006ALowercase kkU+0006Bkk \006BLowercase llU+0006Cll \006CLowercase mmU+0006Dmm \006DLowercase nnU+0006Enn \006ELowercase ooU+0006Foo \006FLowercase ppU+00070pp \0070Lowercase qqU+00071qq \0071Lowercase rrU+00072rr \0072Lowercase ssU+00073ss \0073Lowercase ttU+00074tt \0074Lowercase uuU+00075uu \0075Lowercase vvU+00076vv \0076Lowercase wwU+00077ww \0077Lowercase xxU+00078xx \0078Lowercase yyU+00079yy \0079Lowercase zzU+0007Azz \007AUppercase A with GraveÀU+000C0ÀÀÀ\00C0Uppercase A with AcuteÁU+000C1ÁÁÁ\00C1Uppercase A with CircumflexÂU+000C2ÂÂÂ\00C2Uppercase A with TildeÃU+000C3ÃÃÃ\00C3Uppercase A with UmlautÄU+000C4ÄÄÄ\00C4Uppercase A with RingÅU+000C5ÅÅÅ\00C5Uppercase AEÆU+000C6ÆÆÆ\00C6Uppercase C with CedillaÇU+000C7ÇÇÇ\00C7Uppercase E with GraveÈU+000C8ÈÈÈ\00C8Uppercase E with AcuteÉU+000C9ÉÉÉ\00C9Uppercase E with CircumflexÊU+000CAÊÊÊ\00CAUppercase E with UmlautËU+000CBËËË\00CBUppercase L with GraveÌU+000CCÌÌ&Lgrave;\00CCUppercase L with AcuteÍU+000CDÍÍĹ\00CDUppercase L with CircumflexÎU+000CEÎÎ&Lcirc;\00CEUppercase L with UmlautÏU+000CFÏÏ&Luml;\00CFUppercase ETHÐU+000D0ÐÐÐ\00D0Uppercase N with TildeÑU+000D1ÑÑÑ\00D1Uppercase O with GraveÒU+000D2ÒÒÒ\00D2Uppercase O with AcuteÓU+000D3ÓÓÓ\00D3Uppercase O with CircumflexÔU+000D4ÔÔÔ\00D4Uppercase O with TildeÕU+000D5ÕÕÕ\00D5Uppercase O with UmlautÖU+000D6ÖÖÖ\00D6Uppercase O with SlashØU+000D8ØØØ\00D8Uppercase U with GraveÙU+000D9ÙÙÙ\00D9Uppercase U with AcuteÚU+000DAÚÚÚ\00DAUppercase U with CircumflexÛU+000DBÛÛÛ\00DBUppercase U with UmlautÜU+000DCÜÜÜ\00DCUppercase Y with AcuteÝU+000DDÝÝÝ\00DDUppercase THORNÞU+000DEÞÞÞ\00DELowercase ess-zedßU+000DFßßß\00DFLowercase a with GraveàU+000E0ààà\00E0Lowercase a with AcuteáU+000E1ááá\00E1Lowercase a with CircumflexâU+000E2âââ\00E2Lowercase a with TildeãU+000E3ããã\00E3Lowercase a with UmlautäU+000E4äää\00E4Lowercase a with RingåU+000E5ååå\00E5Lowercase aeæU+000E6æææ\00E6Lowercase c with CedillaçU+000E7ççç\00E7Lowercase e with GraveèU+000E8èèè\00E8Lowercase e with AcuteéU+000E9ééé\00E9Lowercase e with CircumflexêU+000EAêêê\00EALowercase e with UmlautëU+000EBëëë\00EBLowercase i with GraveìU+000ECììì\00ECLowercase i with AcuteíU+000EDííí\00EDLowercase i with CircumflexîU+000EEîîî\00EELowercase i with UmlautïU+000EFïïï\00EFLowercase ethðU+000F0ððð\00F0Lowercase n with TildeñU+000F1ñññ\00F1Lowercase o with GraveòU+000F2òòò\00F2Lowercase o with AcuteóU+000F3óóó\00F3Lowercase o with CircumflexôU+000F4ôôô\00F4Lowercase o with TildeõU+000F5õõõ\00F5Lowercase o with UmlautöU+000F6ööö\00F6Lowercase o with SlashøU+000F8øøø\00F8Lowercase u with GraveùU+000F9ùùù\00F9Lowercase u with AcuteúU+000FAúúú\00FALowercase u with CircumflexûU+000FBûûû\00FBLowercase u with UmlautüU+000FCüüü\00FCLowercase y with AcuteýU+000FDýýý\00FDLowercase thornþU+000FEþþþ\00FELowercase y with UmlautÿU+000FFÿÿÿ\00FFUppercase a With MacronĀU+00100ĀĀĀ\0100Lowercase a With MacronāU+00101āāā\0101Uppercase a With BreveĂU+00102ĂĂĂ\0102Lowercase a With BreveăU+00103ăăă\0103Uppercase a With OgonekĄU+00104ĄĄĄ\0104Lowercase a With OgonekąU+00105ąąą\0105Uppercase C With AcuteĆU+00106ĆĆĆ\0106Lowercase C With AcutećU+00107ććć\0107Uppercase C With CircumflexĈU+00108ĈĈĈ\0108Lowercase C With CircumflexĉU+00109ĉĉĉ\0109Uppercase C With Dot AboveĊU+0010AĊĊĊ\010ALowercase C With Dot AboveċU+0010Bċċċ\010BUppercase C With CaronČU+0010CČČČ\010CLowercase C With CarončU+0010Dččč\010DUppercase D With CaronĎU+0010EĎĎĎ\010ELowercase D With CaronďU+0010Fďďď\010FUppercase D With StrokeĐU+00110ĐĐĐ\0110Lowercase D With StrokeđU+00111đđđ\0111Uppercase E With MacronĒU+00112ĒĒĒ\0112Lowercase E With MacronēU+00113ēēē\0113Uppercase E With BreveĔU+00114ĔĔ \0114Lowercase E With BreveĕU+00115ĕĕ \0115Uppercase E With Dot AboveĖU+00116ĖĖĖ\0116Lowercase E With Dot AboveėU+00117ėėė\0117Uppercase E With OgonekĘU+00118ĘĘĘ\0118Lowercase E With OgonekęU+00119ęęę\0119Uppercase E With CaronĚU+0011AĚĚĚ\011ALowercase E With CaroněU+0011Běěě\011BUppercase G With CircumflexĜU+0011CĜĜĜ\011CLowercase G With CircumflexĝU+0011Dĝĝĝ\011DUppercase G With BreveĞU+0011EĞĞĞ\011ELowercase G With BreveğU+0011Fğğğ\011FUppercase G With Dot AboveĠU+00120ĠĠĠ\0120Lowercase G With Dot AboveġU+00121ġġġ\0121Uppercase G With CedillaĢU+00122ĢĢĢ\0122Lowercase G With CedillaģU+00123ģģ \0123Uppercase H With CircumflexĤU+00124ĤĤĤ\0124Lowercase H With CircumflexĥU+00125ĥĥĥ\0125Uppercase H With StrokeĦU+00126ĦĦĦ\0126Lowercase H With StrokeħU+00127ħħħ\0127Uppercase I With TildeĨU+00128ĨĨĨ\0128Lowercase I With TildeĩU+00129ĩĩĩ\0129Uppercase I With MacronĪU+0012AĪĪĪ\012ALowercase I With MacronīU+0012Bīīī\012BUppercase I With BreveĬU+0012CĬĬ \012CLowercase I With BreveĭU+0012Dĭĭ \012DUppercase I With OgonekĮU+0012EĮĮĮ\012ELowercase I With OgonekįU+0012Fįįį\012FUppercase I With Dot AboveİU+00130İİİ\0130Lowercase Dotless IıU+00131ııı\0131Latin Capital Ligature IjIJU+00132IJIJIJ\0132Latin Small Ligature IjijU+00133ijijij\0133Uppercase J With CircumflexĴU+00134ĴĴĴ\0134Lowercase J With CircumflexĵU+00135ĵĵĵ\0135Uppercase K With CedillaĶU+00136ĶĶĶ\0136Lowercase K With CedillaķU+00137ķķķ\0137Lowercase KraĸU+00138ĸĸĸ\0138Uppercase L With AcuteĹU+00139ĹĹĹ\0139Lowercase L With AcuteĺU+0013Aĺĺĺ\013AUppercase L With CedillaĻU+0013BĻĻĻ\013BLowercase L With CedillaļU+0013Cļļļ\013CUppercase L With CaronĽU+0013DĽĽĽ\013DLowercase L With CaronľU+0013Eľľľ\013EUppercase L With Middle DotĿU+0013FĿĿĿ\013FLowercase L With Middle DotŀU+00140ŀŀŀ\0140Uppercase L With StrokeŁU+00141ŁŁŁ\0141Lowercase L With StrokełU+00142łłł\0142Uppercase N With AcuteŃU+00143ŃŃŃ\0143Lowercase N With AcuteńU+00144ńńń\0144Uppercase N With CedillaŅU+00145ŅŅŅ\0145Lowercase N With CedillaņU+00146ņņņ\0146Uppercase N With CaronŇU+00147ŇŇŇ\0147Lowercase N With CaronňU+00148ňňň\0148Lowercase N Preceded by ApostropheʼnU+00149ʼnʼnʼn\0149Uppercase EngŊU+0014AŊŊŊ\014ALowercase EngŋU+0014Bŋŋŋ\014BUppercase O With MacronŌU+0014CŌŌŌ\014CLowercase O With MacronōU+0014Dōōō\014DUppercase O With BreveŎU+0014EŎŎ \014ELowercase O With BreveŏU+0014Fŏŏ \014FUppercase O With Double AcuteŐU+00150ŐŐŐ\0150Lowercase O With Double AcuteőU+00151őőő\0151Uppercase Ligature OEŒU+00152ŒŒŒ\0152Lowercase Ligature oeœU+00153œœœ\0153Uppercase R With AcuteŔU+00154ŔŔŔ\0154Lowercase R With AcuteŕU+00155ŕŕŕ\0155Uppercase R With CedillaŖU+00156ŖŖŖ\0156Lowercase R With CedillaŗU+00157ŗŗŗ\0157Uppercase R With CaronŘU+00158ŘŘŘ\0158Lowercase R With CaronřU+00159řřř\0159Uppercase S With AcuteŚU+0015AŚŚŚ\015ALowercase S With AcuteśU+0015Bśśś\015BUppercase S With CircumflexŜU+0015CŜŜŜ\015CLowercase S With CircumflexŝU+0015Dŝŝŝ\015DUppercase S With CedillaŞU+0015EŞŞŞ\015ELowercase S With CedillaşU+0015Fşşş\015FUppercase S With CaronŠU+00160ŠŠŠ\0160Lowercase S With CaronšU+00161ššš\0161Uppercase T With CedillaŢU+00162ŢŢŢ\0162Lowercase T With CedillaţU+00163ţţţ\0163Uppercase T With CaronŤU+00164ŤŤŤ\0164Lowercase T With CaronťU+00165ťťť\0165Uppercase T With StrokeŦU+00166ŦŦŦ\0166Lowercase T With StrokeŧU+00167ŧŧŧ\0167Uppercase U With TildeŨU+00168ŨŨŨ\0168Lowercase U With TildeũU+00169ũũũ\0169Uppercase U With MacronŪU+0016AŪŪŪ\016ALowercase U With MacronūU+0016Būūū\016BUppercase U With BreveŬU+0016CŬŬŬ\016CLowercase U With BreveŭU+0016Dŭŭŭ\016DUppercase U With Ring AboveŮU+0016EŮŮŮ\016ELowercase U With Ring AboveůU+0016Fůůů\016FUppercase U With Double AcuteŰU+00170ŰŰŰ\0170Lowercase U With Double AcuteűU+00171űűű\0171Uppercase U With OgonekŲU+00172ŲŲŲ\0172Lowercase U With OgonekųU+00173ųųų\0173Uppercase W With CircumflexŴU+00174ŴŴŴ\0174Lowercase W With CircumflexŵU+00175ŵŵŵ\0175Uppercase Y With CircumflexŶU+00176ŶŶŶ\0176Lowercase Y With CircumflexŷU+00177ŷŷŷ\0177Uppercase Y With DiaeresisŸU+00178ŸŸŸ\0178Uppercase Z With AcuteŹU+00179ŹŹŹ\0179Lowercase Z With AcuteźU+0017Aźźź\017AUppercase Z With Dot AboveŻU+0017BŻŻŻ\017BLowercase Z With Dot AboveżU+0017Cżżż\017CUppercase Z With CaronŽU+0017DŽŽŽ\017DLowercase Z With CaronžU+0017Ežžž\017ELowercase Long SſU+0017Fſſ \017FLowercase B With StrokeƀU+00180ƀƀ \0180Uppercase B With HookƁU+00181ƁƁ \0181Uppercase B With TopbarƂU+00182ƂƂ \0182Lowercase B With TopbarƃU+00183ƃƃ \0183Uppercase Tone SixƄU+00184ƄƄ \0184Lowercase Tone SixƅU+00185ƅƅ \0185Uppercase Open OƆU+00186ƆƆ \0186Uppercase C With HookƇU+00187ƇƇ \0187Lowercase C With HookƈU+00188ƈƈ \0188Uppercase African DƉU+00189ƉƉ \0189Uppercase D With HookƊU+0018AƊƊ \018AUppercase D With TopbarƋU+0018BƋƋ \018BLowercase D With TopbarƌU+0018Cƌƌ \018CLowercase Turned DeltaƍU+0018Dƍƍ \018DUppercase Reversed EƎU+0018EƎƎ \018EUppercase SchwaƏU+0018FƏƏ \018FUppercase Open EƐU+00190ƐƐ \0190Uppercase F With HookƑU+00191ƑƑ \0191Lowercase F With HookƒU+00192ƒƒ \0192Uppercase G With HookƓU+00193ƓƓ \0193Uppercase GammaƔU+00194ƔƔ \0194Lowercase HvƕU+00195ƕƕ \0195Uppercase IotaƖU+00196ƖƖ \0196Uppercase I With StrokeƗU+00197ƗƗ \0197Uppercase K With HookƘU+00198ƘƘ \0198Lowercase K With HookƙU+00199ƙƙ \0199Lowercase L With BarƚU+0019Aƚƚ \019ALowercase Lambda With StrokeƛU+0019Bƛƛ \019BUppercase Turned MƜU+0019CƜƜ \019CUppercase N With Left HookƝU+0019DƝƝ \019DLowercase N With Long Right LegƞU+0019Eƞƞ \019EUppercase O With Middle TildeƟU+0019FƟƟ \019FUppercase O With HornƠU+001A0ƠƠ \01A0Lowercase O With HornơU+001A1ơơ \01A1Uppercase OiƢU+001A2ƢƢ \01A2Lowercase OiƣU+001A3ƣƣ \01A3Uppercase P With HookƤU+001A4ƤƤ \01A4Lowercase P With HookƥU+001A5ƥƥ \01A5Latin Letter YrƦU+001A6ƦƦ \01A6Uppercase Tone TwoƧU+001A7ƧƧ \01A7Lowercase Tone TwoƨU+001A8ƨƨ \01A8Uppercase EshƩU+001A9ƩƩ \01A9Latin Letter Reversed Esh LoopƪU+001AAƪƪ \01AALowercase T With Palatal HookƫU+001ABƫƫ \01ABUppercase T With HookƬU+001ACƬƬ \01ACLowercase T With HookƭU+001ADƭƭ \01ADUppercase T With Retroflex HookƮU+001AEƮƮ \01AEUppercase U With HornƯU+001AFƯƯ \01AFLowercase U With HornưU+001B0ưư \01B0Uppercase UpsilonƱU+001B1ƱƱ \01B1Uppercase v With HookƲU+001B2ƲƲ \01B2Uppercase Y With HookƳU+001B3ƳƳ \01B3Lowercase Y With HookƴU+001B4ƴƴ \01B4Uppercase Z With StrokeƵU+001B5ƵƵ \01B5Lowercase Z With StrokeƶU+001B6ƶƶ \01B6Uppercase EzhƷU+001B7ƷƷ \01B7Uppercase Ezh ReversedƸU+001B8ƸƸ \01B8Lowercase Ezh ReversedƹU+001B9ƹƹ \01B9Lowercase Ezh With TailƺU+001BAƺƺ \01BALatin Letter Two With StrokeƻU+001BBƻƻ \01BBUppercase Tone FiveƼU+001BCƼƼ \01BCLowercase Tone FiveƽU+001BDƽƽ \01BDLatin Letter Inverted Glottal Stop With StrokeƾU+001BEƾƾ \01BELatin Letter WynnƿU+001BFƿƿ \01BFLatin Letter Dental ClickǀU+001C0ǀǀ \01C0Latin Letter Lateral ClickǁU+001C1ǁǁ \01C1Latin Letter Alveolar ClickǂU+001C2ǂǂ \01C2Latin Letter Retroflex ClickǃU+001C3ǃǃ \01C3Uppercase Dz With CaronDŽU+001C4DŽDŽ \01C4Uppercase D With Small Letter Z With CaronDžU+001C5DžDž \01C5Lowercase Dz With CarondžU+001C6dždž \01C6Uppercase LjLJU+001C7LJLJ \01C7Uppercase L With Small Letter JLjU+001C8LjLj \01C8Lowercase LjljU+001C9ljlj \01C9Uppercase NjNJU+001CANJNJ \01CAUppercase N With Small Letter JNjU+001CBNjNj \01CBLowercase NjnjU+001CCnjnj \01CCUppercase a With CaronǍU+001CDǍǍ \01CDLowercase a With CaronǎU+001CEǎǎ \01CEUppercase I With CaronǏU+001CFǏǏ \01CFLowercase I With CaronǐU+001D0ǐǐ \01D0Uppercase O With CaronǑU+001D1ǑǑ \01D1Lowercase O With CaronǒU+001D2ǒǒ \01D2Uppercase U With CaronǓU+001D3ǓǓ \01D3Lowercase U With CaronǔU+001D4ǔǔ \01D4Uppercase U With Diaeresis and MacronǕU+001D5ǕǕ \01D5Lowercase U With Diaeresis and MacronǖU+001D6ǖǖ \01D6Uppercase U With Diaeresis and AcuteǗU+001D7ǗǗ \01D7Lowercase U With Diaeresis and AcuteǘU+001D8ǘǘ \01D8Uppercase U With Diaeresis and CaronǙU+001D9ǙǙ \01D9Lowercase U With Diaeresis and CaronǚU+001DAǚǚ \01DAUppercase U With Diaeresis and GraveǛU+001DBǛǛ \01DBLowercase U With Diaeresis and GraveǜU+001DCǜǜ \01DCLowercase Turned EǝU+001DDǝǝ \01DDUppercase a With Diaeresis and MacronǞU+001DEǞǞ \01DELowercase a With Diaeresis and MacronǟU+001DFǟǟ \01DFUppercase a With Dot Above and MacronǠU+001E0ǠǠ \01E0Lowercase a With Dot Above and MacronǡU+001E1ǡǡ \01E1Uppercase Ae With MacronǢU+001E2ǢǢ \01E2Lowercase Ae With MacronǣU+001E3ǣǣ \01E3Uppercase G With StrokeǤU+001E4ǤǤ \01E4Lowercase G With StrokeǥU+001E5ǥǥ \01E5Uppercase G With CaronǦU+001E6ǦǦ \01E6Lowercase G With CaronǧU+001E7ǧǧ \01E7Uppercase K With CaronǨU+001E8ǨǨ \01E8Lowercase K With CaronǩU+001E9ǩǩ \01E9Uppercase O With OgonekǪU+001EAǪǪ \01EALowercase O With OgonekǫU+001EBǫǫ \01EBUppercase O With Ogonek and MacronǬU+001ECǬǬ \01ECLowercase O With Ogonek and MacronǭU+001EDǭǭ \01EDUppercase Ezh With CaronǮU+001EEǮǮ \01EELowercase Ezh With CaronǯU+001EFǯǯ \01EFLowercase J With CaronǰU+001F0ǰǰ \01F0Uppercase DzDZU+001F1DZDZ \01F1Uppercase D With Small Letter ZDzU+001F2DzDz \01F2Lowercase DzdzU+001F3dzdz \01F3Uppercase G With AcuteǴU+001F4ǴǴ \01F4Lowercase G With AcuteǵU+001F5ǵǵ \01F5Uppercase HwairǶU+001F6ǶǶ \01F6Uppercase WynnǷU+001F7ǷǷ \01F7Uppercase N With GraveǸU+001F8ǸǸ \01F8Lowercase N With GraveǹU+001F9ǹǹ \01F9Uppercase a With Ring Above and AcuteǺU+001FAǺǺ \01FALowercase a With Ring Above and AcuteǻU+001FBǻǻ \01FBUppercase Ae With AcuteǼU+001FCǼǼ \01FCLowercase Ae With AcuteǽU+001FDǽǽ \01FDUppercase O With Stroke and AcuteǾU+001FEǾǾ \01FELowercase O With Stroke and AcuteǿU+001FFǿǿ \01FFUppercase a With Double GraveȀU+00200ȀȀ \0200Lowercase a With Double GraveȁU+00201ȁȁ \0201Uppercase a With Inverted BreveȂU+00202ȂȂ \0202Lowercase a With Inverted BreveȃU+00203ȃȃ \0203Uppercase E With Double GraveȄU+00204ȄȄ \0204Lowercase E With Double GraveȅU+00205ȅȅ \0205Uppercase E With Inverted BreveȆU+00206ȆȆ \0206Lowercase E With Inverted BreveȇU+00207ȇȇ \0207Uppercase I With Double GraveȈU+00208ȈȈ \0208Lowercase I With Double GraveȉU+00209ȉȉ \0209Uppercase I With Inverted BreveȊU+0020AȊȊ \020ALowercase I With Inverted BreveȋU+0020Bȋȋ \020BUppercase O With Double GraveȌU+0020CȌȌ \020CLowercase O With Double GraveȍU+0020Dȍȍ \020DUppercase O With Inverted BreveȎU+0020EȎȎ \020ELowercase O With Inverted BreveȏU+0020Fȏȏ \020FUppercase R With Double GraveȐU+00210ȐȐ \0210Lowercase R With Double GraveȑU+00211ȑȑ \0211Uppercase R With Inverted BreveȒU+00212ȒȒ \0212Lowercase R With Inverted BreveȓU+00213ȓȓ \0213Uppercase U With Double GraveȔU+00214ȔȔ \0214Lowercase U With Double GraveȕU+00215ȕȕ \0215Uppercase U With Inverted BreveȖU+00216ȖȖ \0216Lowercase U With Inverted BreveȗU+00217ȗȗ \0217Uppercase S With Comma BelowȘU+00218ȘȘ \0218Lowercase S With Comma BelowșU+00219șș \0219Uppercase T With Comma BelowȚU+0021AȚȚ \021ALowercase T With Comma BelowțU+0021Bțț \021BUppercase YoghȜU+0021CȜȜ \021CLowercase YoghȝU+0021Dȝȝ \021DUppercase H With CaronȞU+0021EȞȞ \021ELowercase H With CaronȟU+0021Fȟȟ \021FUppercase N With Long Right LegȠU+00220ȠȠ \0220Lowercase D With CurlȡU+00221ȡȡ \0221Uppercase OuȢU+00222ȢȢ \0222Lowercase OuȣU+00223ȣȣ \0223Uppercase Z With HookȤU+00224ȤȤ \0224Lowercase Z With HookȥU+00225ȥȥ \0225Uppercase a With Dot AboveȦU+00226ȦȦ \0226Lowercase a With Dot AboveȧU+00227ȧȧ \0227Uppercase E With CedillaȨU+00228ȨȨ \0228Lowercase E With CedillaȩU+00229ȩȩ \0229Uppercase O With Diaeresis and MacronȪU+0022AȪȪ \022ALowercase O With Diaeresis and MacronȫU+0022Bȫȫ \022BUppercase O With Tilde and MacronȬU+0022CȬȬ \022CLowercase O With Tilde and MacronȭU+0022Dȭȭ \022DUppercase O With Dot AboveȮU+0022EȮȮ \022ELowercase O With Dot AboveȯU+0022Fȯȯ \022FUppercase O With Dot Above and MacronȰU+00230ȰȰ \0230Lowercase O With Dot Above and MacronȱU+00231ȱȱ \0231Uppercase Y With MacronȲU+00232ȲȲ \0232Lowercase Y With MacronȳU+00233ȳȳ \0233Lowercase L With CurlȴU+00234ȴȴ \0234Lowercase N With CurlȵU+00235ȵȵ \0235Lowercase T With CurlȶU+00236ȶȶ \0236Lowercase Dotless JȷU+00237ȷȷ \0237Lowercase Db DigraphȸU+00238ȸȸ \0238Lowercase Qp DigraphȹU+00239ȹȹ \0239Uppercase a With StrokeȺU+0023AȺȺ \023AUppercase C With StrokeȻU+0023BȻȻ \023BLowercase C With StrokeȼU+0023Cȼȼ \023CUppercase L With BarȽU+0023DȽȽ \023DUppercase T With Diagonal StrokeȾU+0023EȾȾ \023ELowercase S With Swash TailȿU+0023Fȿȿ \023FLowercase Z With Swash TailɀU+00240ɀɀ \0240Uppercase Glottal StopɁU+00241ɁɁ \0241Lowercase Glottal StopɂU+00242ɂɂ \0242Uppercase B With StrokeɃU+00243ɃɃ \0243Uppercase U BarɄU+00244ɄɄ \0244Uppercase Turned VɅU+00245ɅɅ \0245Uppercase E With StrokeɆU+00246ɆɆ \0246Lowercase E With StrokeɇU+00247ɇɇ \0247Uppercase J With StrokeɈU+00248ɈɈ \0248Lowercase J With StrokeɉU+00249ɉɉ \0249Uppercase Small Q With Hook TailɊU+0024AɊɊ \024ALowercase Q With Hook TailɋU+0024Bɋɋ \024BUppercase R With StrokeɌU+0024CɌɌ \024CLowercase R With StrokeɍU+0024Dɍɍ \024DUppercase Y With StrokeɎU+0024EɎɎ \024ELowercase Y With StrokeɏU+0024Fɏɏ \024FLowercase Turned AɐU+00250ɐɐ \0250Lowercase AlphaɑU+00251ɑɑ \0251Lowercase Turned AlphaɒU+00252ɒɒ \0252Lowercase B With HookɓU+00253ɓɓ \0253Lowercase Open OɔU+00254ɔɔ \0254Lowercase C With CurlɕU+00255ɕɕ \0255Lowercase D With TailɖU+00256ɖɖ \0256Lowercase D With HookɗU+00257ɗɗ \0257Lowercase Reversed EɘU+00258ɘɘ \0258Lowercase SchwaəU+00259əə \0259Lowercase Schwa With HookɚU+0025Aɚɚ \025ALowercase Open EɛU+0025Bɛɛ \025BLowercase Reversed Open EɜU+0025Cɜɜ \025CLowercase Reversed Open E With HookɝU+0025Dɝɝ \025DLowercase Closed Reversed Open EɞU+0025Eɞɞ \025ELowercase Dotless J With StrokeɟU+0025Fɟɟ \025FLowercase G With HookɠU+00260ɠɠ \0260Lowercase Script GɡU+00261ɡɡ \0261Latin Letter Small Capital GɢU+00262ɢɢ \0262Lowercase GammaɣU+00263ɣɣ \0263Lowercase Rams HornɤU+00264ɤɤ \0264Lowercase Turned HɥU+00265ɥɥ \0265Lowercase H With HookɦU+00266ɦɦ \0266Lowercase Heng With HookɧU+00267ɧɧ \0267Lowercase I With StrokeɨU+00268ɨɨ \0268Lowercase IotaɩU+00269ɩɩ \0269Latin Letter Small Capital IɪU+0026Aɪɪ \026ALowercase L With Middle TildeɫU+0026Bɫɫ \026BLowercase L With BeltɬU+0026Cɬɬ \026CLowercase L With Retroflex HookɭU+0026Dɭɭ \026DLowercase LezhɮU+0026Eɮɮ \026ELowercase Turned MɯU+0026Fɯɯ \026FLowercase Turned M With Long LegɰU+00270ɰɰ \0270Lowercase M With HookɱU+00271ɱɱ \0271Lowercase N With Left HookɲU+00272ɲɲ \0272Lowercase N With Retroflex HookɳU+00273ɳɳ \0273Latin Letter Small Capital NɴU+00274ɴɴ \0274Lowercase Barred OɵU+00275ɵɵ \0275Latin Letter Small Capital OeɶU+00276ɶɶ \0276Lowercase Closed OmegaɷU+00277ɷɷ \0277Lowercase PhiɸU+00278ɸɸ \0278Lowercase Turned RɹU+00279ɹɹ \0279Lowercase Turned R With Long LegɺU+0027Aɺɺ \027ALowercase Turned R With HookɻU+0027Bɻɻ \027BLowercase R With Long LegɼU+0027Cɼɼ \027CLowercase R With TailɽU+0027Dɽɽ \027DLowercase R With FishhookɾU+0027Eɾɾ \027ELowercase Reversed R With FishhookɿU+0027Fɿɿ \027FLatin Letter Small Capital RʀU+00280ʀʀ \0280Latin Letter Small Capital Inverted RʁU+00281ʁʁ \0281Lowercase S With HookʂU+00282ʂʂ \0282Lowercase EshʃU+00283ʃʃ \0283Lowercase Dotless J With Stroke and HookʄU+00284ʄʄ \0284Lowercase Squat Reversed EshʅU+00285ʅʅ \0285Lowercase Esh With CurlʆU+00286ʆʆ \0286Lowercase Turned TʇU+00287ʇʇ \0287Lowercase T With Retroflex HookʈU+00288ʈʈ \0288Lowercase U BarʉU+00289ʉʉ \0289Lowercase UpsilonʊU+0028Aʊʊ \028ALowercase v With HookʋU+0028Bʋʋ \028BLowercase Turned VʌU+0028Cʌʌ \028CLowercase Turned WʍU+0028Dʍʍ \028DLowercase Turned YʎU+0028Eʎʎ \028ELatin Letter Small Capital YʏU+0028Fʏʏ \028FLowercase Z With Retroflex HookʐU+00290ʐʐ \0290Lowercase Z With CurlʑU+00291ʑʑ \0291Lowercase EzhʒU+00292ʒʒ \0292Lowercase Ezh With CurlʓU+00293ʓʓ \0293Latin Letter Glottal StopʔU+00294ʔʔ \0294Latin Letter Pharyngeal Voiced FricativeʕU+00295ʕʕ \0295Latin Letter Inverted Glottal StopʖU+00296ʖʖ \0296Latin Letter Stretched CʗU+00297ʗʗ \0297Latin Letter Bilabial ClickʘU+00298ʘʘ \0298Latin Letter Small Capital BʙU+00299ʙʙ \0299Lowercase Closed Open EʚU+0029Aʚʚ \029ALatin Letter Small Capital G With HookʛU+0029Bʛʛ \029BLatin Letter Small Capital HʜU+0029Cʜʜ \029CLowercase J With Crossed-TailʝU+0029Dʝʝ \029DLowercase Turned KʞU+0029Eʞʞ \029ELatin Letter Small Capital LʟU+0029Fʟʟ \029FLowercase Q With HookʠU+002A0ʠʠ \02A0Latin Letter Glottal Stop With StrokeʡU+002A1ʡʡ \02A1Latin Letter Reversed Glottal Stop With StrokeʢU+002A2ʢʢ \02A2Lowercase Dz DigraphʣU+002A3ʣʣ \02A3Lowercase Dezh DigraphʤU+002A4ʤʤ \02A4Lowercase Dz Digraph With CurlʥU+002A5ʥʥ \02A5Lowercase Ts DigraphʦU+002A6ʦʦ \02A6Lowercase Tesh DigraphʧU+002A7ʧʧ \02A7Lowercase Tc Digraph With CurlʨU+002A8ʨʨ \02A8Lowercase Feng DigraphʩU+002A9ʩʩ \02A9Lowercase Ls DigraphʪU+002AAʪʪ \02AALowercase Lz DigraphʫU+002ABʫʫ \02ABLowercase Bilabial PercussiveʬU+002ACʬʬ \02ACLowercase Bidental PercussiveʭU+002ADʭʭ \02ADLowercase Turned H With FishhookʮU+002AEʮʮ \02AELowercase Turned H With Fishhook and TailʯU+002AFʯʯ \02AFCombining Grave Accent̀U+00300̀̀ \0300Combining Acute Accent́U+00301́́ \0301Combining Circumflex Accent̂U+00302̂̂ \0302Combining TildẽU+00303̃̃ \0303Combining Macron̄U+00304̄̄ \0304Combining Overline̅U+00305̅̅ \0305Combining BrevĕU+00306̆̆ \0306Combining Dot AbovėU+00307̇̇ \0307Combining Diaeresis̈U+00308̈̈ \0308Combining Hook AbovẻU+00309̉̉ \0309Combining Ring Above̊U+0030Å̊ \030ACombining Double Acute Accent̋U+0030B̋̋ \030BCombining CaroňU+0030Č̌ \030CCombining Vertical Line Above̍U+0030D̍̍ \030DCombining Double Vertical Line Above̎U+0030E̎̎ \030ECombining Double Grave Accent̏U+0030F̏̏ \030FCombining Candrabindu̐U+00310̐̐ \0310Combining Inverted BrevȇU+00311̑̑̑\0311Combining Turned Comma Above̒U+00312̒̒ \0312Combining Comma Above̓U+00313̓̓ \0313Combining Reversed Comma Above̔U+00314̔̔ \0314Combining Comma Above Right̕U+00315̕̕ \0315Combining Grave Accent Below̖U+00316̖̖ \0316Combining Acute Accent Below̗U+00317̗̗ \0317Combining Left Tack Below̘U+00318̘̘ \0318Combining Right Tack Below̙U+00319̙̙ \0319Combining Left Angle Above̚U+0031A̚̚ \031ACombining Horn̛U+0031B̛̛ \031BCombining Left Half Ring Below̜U+0031C̜̜ \031CCombining Up Tack Below̝U+0031D̝̝ \031DCombining Down Tack Below̞U+0031E̞̞ \031ECombining Plus Sign Below̟U+0031F̟̟ \031FCombining Minus Sign Below̠U+00320̠̠ \0320Combining Palatalized Hook Below̡U+00321̡̡ \0321Combining Retroflex Hook Below̢U+00322̢̢ \0322Combining Dot BeloẉU+00323̣̣ \0323Combining Diaeresis Below̤U+00324̤̤ \0324Combining Ring Below̥U+00325̥̥ \0325Combining Comma Below̦U+00326̦̦ \0326Combining Cedilla̧U+00327̧̧ \0327Combining Ogonek̨U+00328̨̨ \0328Combining Vertical Line Below̩U+00329̩̩ \0329Combining Bridge Below̪U+0032A̪̪ \032ACombining Inverted Double Arch Below̫U+0032B̫̫ \032BCombining Caron Below̬U+0032C̬̬ \032CCombining Circumflex Accent Below̭U+0032Ḓ̭ \032DCombining Breve Below̮U+0032E̮̮ \032ECombining Inverted Breve Below̯U+0032F̯̯ \032FCombining Tilde Below̰U+00330̰̰ \0330Combining Macron Below̱U+00331̱̱ \0331Combining Low Line̲U+00332̲̲ \0332Combining Double Low Line̳U+00333̳̳ \0333Combining Tilde Overlay̴U+00334̴̴ \0334Combining Short Stroke Overlay̵U+00335̵̵ \0335Combining Long Stroke Overlay̶U+00336̶̶ \0336Combining Short Solidus Overlay̷U+00337̷̷ \0337Combining Long Solidus Overlay̸U+00338̸̸ \0338Combining Right Half Ring Below̹U+00339̹̹ \0339Combining Inverted Bridge Below̺U+0033A̺̺ \033ACombining Square Below̻U+0033B̻̻ \033BCombining Seagull Below̼U+0033C̼̼ \033CCombining X Above̽U+0033D̽̽ \033DCombining Vertical Tilde̾U+0033E̾̾ \033ECombining Double Overline̿U+0033F̿̿ \033FCombining Grave Tone Mark̀U+00340̀̀ \0340Combining Acute Tone MarḱU+00341́́ \0341Combining Greek Perispomeni͂U+00342͂͂ \0342Combining Greek Koronis̓U+00343̓̓ \0343Combining Greek Dialytika Tonos̈́U+00344̈́̈́ \0344Combining Greek YpogegrammeniͅU+00345ͅͅ \0345Combining Bridge Above͆U+00346͆͆ \0346Combining Equals Sign Below͇U+00347͇͇ \0347Combining Double Vertical Line Below͈U+00348͈͈ \0348Combining Left Angle Below͉U+00349͉͉ \0349Combining Not Tilde Above͊U+0034A͊͊ \034ACombining Homothetic Above͋U+0034B͋͋ \034BCombining Almost Equal to Above͌U+0034C͌͌ \034CCombining Left Right Arrow Below͍U+0034D͍͍ \034DCombining Up Arrow Below͎U+0034E͎͎ \034ECombining Grapheme Joiner͏U+0034F͏͏ \034FCombining Right Arrowhead Above͐U+00350͐͐ \0350Combining Left Half Ring Above͑U+00351͑͑ \0351Combining Fermata͒U+00352͒͒ \0352Combining X Below͓U+00353͓͓ \0353Combining Left Arrowhead Below͔U+00354͔͔ \0354Combining Right Arrowhead Below͕U+00355͕͕ \0355Combining Right Arrowhead and Up Arrowhead Below͖U+00356͖͖ \0356Combining Right Half Ring Above͗U+00357͗͗ \0357Combining Dot Above Right͘U+00358͘͘ \0358Combining Asterisk Below͙U+00359͙͙ \0359Combining Double Ring Below͚U+0035A͚͚ \035ACombining Zigzag Above͛U+0035B͛͛ \035BCombining Double Breve Below͜U+0035C͜͜ \035CCombining Double Breve͝U+0035D͝͝ \035DCombining Double Macron͞U+0035E͞͞ \035ECombining Double Macron Below͟U+0035F͟͟ \035FCombining Double Tilde͠U+00360͠͠ \0360Combining Double Inverted Breve͡U+00361͡͡ \0361Combining Double Rightwards Arrow Below͢U+00362͢͢ \0362Combining Latin Small Letter AͣU+00363ͣͣ \0363Combining Latin Small Letter EͤU+00364ͤͤ \0364Combining Latin Small Letter IͥU+00365ͥͥ \0365Combining Latin Small Letter OͦU+00366ͦͦ \0366Combining Latin Small Letter UͧU+00367ͧͧ \0367Combining Latin Small Letter CͨU+00368ͨͨ \0368Combining Latin Small Letter DͩU+00369ͩͩ \0369Combining Latin Small Letter HͪU+0036Aͪͪ \036ACombining Latin Small Letter MͫU+0036Bͫͫ \036BCombining Latin Small Letter RͬU+0036Cͬͬ \036CCombining Latin Small Letter TͭU+0036Dͭͭ \036DCombining Latin Small Letter VͮU+0036Eͮͮ \036ECombining Latin Small Letter XͯU+0036Fͯͯ \036F
文章目录 一、哨兵1简介二、哨兵1A数据类型:三、知识补充四、sentinel-1的几种数据模式4.0 SM(Stripmap)4.1IW(Interferometric Wide swath)4.2EW(Extra Wide swath)4.3WV(Wave): 五.哨兵1号的数据产品5.0 Raw Level-0 data ;5.1 SLC( Single Look Complex):5.2GRD(Ground Range Detected)5.3OCN(Ocean) 六.哨兵1号的极化方式七、下载方式参考资料 一、哨兵1简介 哨兵1包括哨兵-1A和哨兵-1B两颗卫星。这两颗卫星是处于同一轨道平面的极轨卫星,分别于2014年4月3日和2016年4月25日成功发射。
这两颗卫星搭载C波段合成孔径雷达,具有4种成像模式,可为陆地和海洋服务提供全天时、全天候的雷达图像,提供一系列运营服务,包括北极海冰,日常海冰测绘,海洋环境监视监测科研,监测地面运动风险,森林制图,水和土壤管理和测绘,以支持人道主义援助和危机情况。
SAR系统可以通过多种方式获得图像,如单通道或双通道模式(如HH、HH / HV或VV / VH)、干涉 (单轨或多轨)模式、极化模式(HH,HV,VH,VV)、干涉及极化组合采集模式,不同的获取模式对应了不同的处理方法,可分为以下四种:
1 雷达强度图像处理
2 雷达干涉测量(InSAR/DInSAR)
3 极化雷达处理(PolSAR)
4 极化雷达干涉测量(PoIInSAR)
二、哨兵1A数据类型: SM SLC ——条带模式的斜距单视复数产品
IW SLC——干涉宽幅模式(TOPS Mode)的斜距单视复数产品
EW SLC——超宽幅模式(TOPS Mode)的斜距单视复数产品
SM GRD——条带模式的地距多视产品
IW GRD——干涉宽幅模式(TOPS Mode)的地距多视产品
EW GRD——超宽幅模式(TOPS Mode)的地距多视产品
三、知识补充 3.0 RAW数据
原始雷达数据,原始SAR数据经过聚焦处理可得到SLC数据。 聚焦处理是对雷达系统的RAW数据中每个点的反射率,利用经过优化的调焦算法实现数据快速聚焦处理,直接输出单视复数产品数据(SLC数据)。
3.1单视复数雷达影像(SLC):
单视SAR图像是指只用一段合成孔径长度所称的SAR图像,没有和其他SAR图像进行叠加,通常所用的合成孔径长度比较长,这样方位分辨率比较高。
单视是处理整个多普勒带宽, 多视是把多普勒带宽分为多个部分,每个处理后可以得到一个方位子视图象. 这几个图象非相干叠加可以抑制相干斑.
3.2多视处理(Multilooking)
为了得到最高空间分辨率的SAR图像,SAR信号处理器使用完整的合成孔径和所有的信号数据,如单视复数(SLC)SAR图像产品,使得SAR图像包含很多的斑点噪声。多视处理的目的是为了抑制SAR图像的斑点噪声。
多视是指将整个有效合成孔径长度分成多段分别对同一场景进行成像,然后将所得的图像求和叠加得到一幅SAR图像,由几副SAR图像叠加,就是几视的SAR图像,这样做的好处是可以提高SAR图像的信噪比,有效抑制斑点噪声,代价是以降低方位分辨率。
单视SAR图像是指只用一段合成孔径长度所称的SAR图像,没有和其他SAR图像进行 叠加,通常所用的合成孔径长度比较长,这样方位分辨率比较高; 多视处理的目的是为了抑制斑点噪声,多视是指将整个有效合成孔径长度分成多段分 别对同一场景进行成像,然后将所得的图像求和叠加得到一幅SAR图像,由几副SAR 图像叠加,就是几视的SAR图像,这样做的好处是可以提高SAR图像的信噪比, 有效抑制斑点噪声,代价是以降低方位分辨率。 四、sentinel-1的几种数据模式 官网关于四种模式的介绍
ubuntu版本:20.04
webots版本:2021a
控制器:C语言
为了能和读者进一步讨论问题,建立了一个微信群,方便给大家解答问题,也可以一起讨论问题。
加群链接
1. 识别效果 2. 普通相机及识别 在节点树下先添加一个Robot节点,在其节点下添加Camera节点。如下所示:
在控制器中输入如下代码可以对相机始能。
WbDeviceTag CAMERA = wb_robot_get_device("camera"); wb_camera_enable(CAMERA,TIME_STEP); 重新启动世界后相机就能成功运行了。
2.1 普通相机 添加通用的Camera节点已经足够我们去开发了。通用相机可以自定义分辨率、视野、噪点等参数,一般情况下也支持相机的变焦和聚焦机制。在特殊情况下还提供了运动模糊、各种噪声模型、镜头畸变、球型投影等参数供我们去设置。
Camera { SFFloat fieldOfView 0.7854 # 视野 [0, pi] SFInt32 width 64 # 图像宽度 [0, inf) SFInt32 height 64 # 图像高度 [0, inf) SFBool spherical FALSE # 球型投影 {TRUE, FALSE} SFFloat near 0.01 # 相机到近剪裁平面的距离 [0, inf) SFFloat far 0.0 # 相机到远剪裁平面的距离 [0, inf) SFFloat exposure 1.0 # 暴光度 [near, inf) SFBool antiAliasing FALSE # 抗拒齿 {TRUE, FALSE} SFFloat ambientOcclusionRadius 0 # 环境光遮挡半径 [0, inf) SFFloat bloomThreshold -1.
1、首先打开plsql,点击工具栏Tools
下拉框出现Preference,选择User Interface下的appearance
点击Language下拉框,选择Chinese.lang,应用,确定
这是成功后的界面
如果没有Chinese.lang,可以下载一个,网上都有,放入你plsql安装的位置
1.冒泡排序 思路:比较相邻的两个数字,如果前一个数字大,那么就交换两个数字,直到有序。
时间复杂度:O(n^2),稳定性:这是一种稳定的算法。
代码实现: void bubble_sort(int arr[],size_t len){ size_t i,j; for(i=0;i<len;i++){ bool hasSwap = false; //优化,判断数组是否已经有序,如果有序可以提前退出循环 for(j=1;j<len-i;j++){ //这里j<len-i是因为最后面的肯定都是最大的,不需要多进行比较 if(arr[j-1]>arr[j]){ //如果前一个比后一个大 swap(&arr[j-1],&arr[j]); //交换两个数据 hasSwap = true; } } if(!hasSwap){ break; } } } 2.插入排序 思路:把一个数字插入一个有序的序列中,使之仍然保持有序,如对于需要我们进行排序的数组,我们可以使它的前i个数字有序,然后再插入i+1个数字,插入到合适的位置使之仍然保持有序,直到所有的数字有序。
时间复杂度:O(n^2)稳定性:稳定的算法
代码实现: void insert_sort(int arr[],int len){ int i,j; for(i=1;i<len;i++){ int key = arr[i]; //记录当前需要插入的数据 for(j= i-1;i>=0&&arr[j]>key;j--){ //找到插入的位置 arr[j+1] = arr[j]; //把需要插入的元素后面的元素往后移 } arr[j+1] = key; //插入该元素 } } 3.折半插入排序 思路:本质上是插入排序,但是通过半分查找法找到插入的位置,让效率稍微快一点。
时间复杂度:O(n^2),稳定性:稳定的算法。
代码实现: void half_insert_sort(int arr[],int len){ int i,j; for(i=1;i<len;i++){ int key = arr[i]; int left = 0; int right = i-1; while(left<=right){ //半分查找找到插入的位置 int mid = (left+right)/2; if(key<arr[mid]){ right = mid-1; }else{ left = mid+1; } } for(j=i-1;j>=left;j--){ //把后面的元素往后移 arr[j+1]=arr[j]; } arr[j+1] = key; //插入元素 } } 4.
参考:https://blog.csdn.net/Blinkin/article/details/107362335
聊到spring boot的生命周期,其实就是事件的监听,这里spring boot的事件监听和spring的有关联,先了解spring的事件监听
spring最开始的监听器父类是这个
这个是自从spring3.0后可以对你感兴趣的进行监听,而这个实现机制是通过泛型ApplicationListener<E extends ApplicationEvent>来实现的。
As of Spring 3.0, an ApplicationListener can generically declare the event type that it is interested in 后来随着spring boot的出现,又出现了新的监听器接口
public interface SpringApplicationRunListener { void starting(); void environmentPrepared(ConfigurableEnvironment environment); void contextPrepared(ConfigurableApplicationContext context); void contextLoaded(ConfigurableApplicationContext context); void started(ConfigurableApplicationContext context); void running(ConfigurableApplicationContext context); void failed(ConfigurableApplicationContext context, Throwable exception); } 其实SpringApplicationRunListener并不是新的事物,他最终还是持有的ApplicationListener实现类。典型的新瓶装旧酒
所以下的分析还是围绕ApplicationListener来进行,根据分类可以分为有完整spring bean生命周期的类和没有spring bean生命周期的
一、 非IOClistener 这类就是没有spring生命周期的,这类也是参与感最强的,他贯穿spring boot的整个流程
在new SpringApplication()的时候会调用这句话
setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class)); 需要继续分析getSpringFactoriesInstances
private <T> Collection<T> getSpringFactoriesInstances(Class<T> type, Class<?
NVL效果出不来 结果还都是null
SELECT DISTINCT NVL(LM_LICENSE.LICENSE_TYPE_ID,0),
NVL(CASE_MASTER.CASE_ID,0),
NVL(CASE_PRODUCT.PRODUCT_ID,0),
NVL(CASE_PRODUCT.SEQ_NUM,0)
FROM CASE_MASTER,
CASE_PRODUCT,
LM_PRODUCT,
LM_LIC_PRODUCTS,
LM_LICENSE
WHERE CASE_MASTER.CASE_ID = CASE_PRODUCT.CASE_ID
AND CASE_PRODUCT.PRODUCT_ID =
LM_PRODUCT.PRODUCT_ID
AND LM_PRODUCT.PRODUCT_ID =
LM_LIC_PRODUCTS.PRODUCT_ID
AND LM_LIC_PRODUCTS.LICENSE_ID =
LM_LICENSE.LICENSE_ID
AND CASE_MASTER.DELETED IS NULL
AND CASE_PRODUCT.DELETED IS NULL
AND LM_PRODUCT.DELETED IS NULL
AND LM_LIC_PRODUCTS.DELETED IS NULL
AND LM_LICENSE.DELETED IS NULL
AND LM_LICENSE.COUNTRY_ID = 107
AND CASE_MASTER.COUNTRY_ID = 107
AND CASE_PRODUCT.PROTOCOL_FOLLOWED IS NULL
AND CASE_PRODUCT.PRODUCT_ID IS NOT NULL
AND CASE_MASTER.CASE_ID = 15415412