如何用MATLAB产生25Gbaud的基带QPSK调制信号 包括生成随机符号序列,进行QPSK调制,过采样,脉冲成型滤波和降采样。有错误敬请指正。
参数设置:symbol rate=25Gbaud
DAC sampling rate=64Gbaud
随机序列生成和QPSK调制 选取一次性生成的符号数目1600。
sources = randi([0 3],1600,1);
对信号进行psk调制,直接调用matlab里的pskmod函数。注意QPSK和4PSK不同之处在于pi/4的相移。
syms = pskmod(sources, 4, pi/4);
过采样和平方根升余弦滚降滤波器(成形滤波器) 先解决几个疑惑。有转载。
1.为什么数字信号传输也要过采样,成形滤波?
答:过采样的数字信号处理起来对低通滤波器的要求相对较低,如果不过采样,滤波的时候滤波器需要很陡峭,指标会很严格
成形滤波的作用是保证采样点不失真。如果没有它,那信号在经过带限信道后,眼图张不开,ISI非常严重。成形滤波的位置在基带调制之后。因为经成形滤波后,信号的信息已经有所损失,这也是为避免ISI付出的代价。
由于光纤通信系统中,该MATLAB产生的调制信号会被送进DAC速率设置为64Gbaud的AWG(任意波形发生器)中,所以不需要加载波调制,过完filter就完事了。
2.信号速率和采样率的关系?
答: 采样速率=每个码元的采样点数*码源波特率
3.平方根?升余弦滚降滤波器?
答:升余弦滚降滤波器本质上只是一个低通滤波器,只不过它的滚降因子(rolloff effect)会对波形的幅度产生一定影响,一般是降低了波形的幅度并且低通。
平方根的原因:升余弦滚降信号用来消除码间串扰,实际实现时采用的方式是由发送端的基带成形滤波器和接收端的匹配滤波器两个环节公共实现。传输系统的传递函数二者的乘积,所以每个环节均为平方根升余弦滚降滤波器。
matlab中平方根升余弦滚降滤波器的设计 Nsym = 6; % 滤波器长度
beta = 0.1; % 滚降系数
sampsPerSym = 64; % 上采样倍数
rctFilt = comm.RaisedCosineTransmitFilter(…
‘Shape’, ‘Square root’, …
‘RolloffFactor’, beta, …
‘FilterSpanInSymbols’, Nsym, …
‘OutputSamplesPerSymbol’, sampsPerSym);
确定上采样倍数为64,调制完之后就是25Gbaud的信号(这里还没太懂),上采样乘以64,下采样除以25,就得到采样率为64Gbaud的信号。
sources = randi([0 3],1600,1);
syms = pskmod(sources, 4, pi/4);
今天主要讲一下Android中存储概念,主要分为以下两点:
1.内部存储(Internal Storage) 内部存储会随应用卸载被删除
/data/data/<applicationId>/shared_prefs 数据存储
/data/data/<applicationId>/databases 数据库
/data/data/<applicationId>/files 文件
通过context.getCacheDir()获得
/data/data/<applicationId>/cache 缓存
通过context.getFilesDir()获得
FileOutputStream FileInputStream
主要看代码进行总结整理
package com.example.scrollview.datastorage; import androidx.appcompat.app.AppCompatActivity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.example.scrollview.R; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileActivity extends AppCompatActivity { EditText editText; Button save,show; TextView savetv; SharedPreferences sharedPreferences; SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shared_peferences); editText=findViewById(R.id.name); save=findViewById(R.id.save); show=findViewById(R.
记一次Recyclerview+BottomSheetDialog的简单使用
列子里用到的依赖
implementation 'com.android.support:recyclerview-v7:27.1.0' implementation 'de.hdodenhof:circleimageview:2.1.0' implementation 'com.android.support:design:27.1.0' 大致形式是这样,没有实现点赞,收藏和喜欢功能,底部可以弹出输入框,并加到列表中显示。
/** *srdx *2019/8/6 */ public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private ArrayList list=new ArrayList(); private RecyclerView recyclerView; private CommitAdapter mAdapter; private GridLayoutManager mLayoutManager; private BottomSheetDialog dialog; private TextView bt_comment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); initView(); } private void initData(){ for (int i=0;i<10;i++){ list.add("这是第"+i+"条评论"); } } private void initView(){ recyclerView=findViewById(R.id.recy); mAdapter=new CommitAdapter(this,list); recyclerView.setAdapter(mAdapter); mLayoutManager=new GridLayoutManager(this,1); recyclerView.setLayoutManager(mLayoutManager); bt_comment = findViewById(R.
数模matlab入门教程-001 1.函数介绍2.数据读入3.后续内容 数模要开始了,整理了一些基本资料提供给没有基础的同学。本文以2017届D题为例,21天数学建模从入门到精通。 这个题目可以在数模官网上下载应该,之很早之前下的了,需要的话我也放了个链接。 https://download.csdn.net/download/coomcon/11483957 环境为 win8+matlab2014a 1.函数介绍 数据读入一般用xlsread即可,该函数的使用也非常简单。
可以直接在matlab的命令窗口键入 help xlsread 就会显示出本函数的帮助文档,也就是用法。
参数定义如下:
Filename为路径文件名,xlsread(filename)函数会直接读取filename对应xls文件中的sheet1中的数据区域到双精度矩阵num中。
sheet用来指定读入excel文件的第几个sheet
xlrange 是指定sheet中表格的区域,使用时需要用单引号括起来,使用方法为’A2:C14’代表以A2和C14为对角定点的矩形区域
主要用到的就是上面几个参数,
至于函数 xlsread(filename, -1)
输入后matlab将会打开相应的excel文件,切换到想要的sheet,用鼠标选择需要导入的数据区域,然后点击确定就读入到matlab中了。如下图所示。
2.数据读入 在matlab工作区内,右键新建一个文件夹D,将xls文件复制到该文件夹下,新建datainput.m文件。如下图所示,为了读入方便顺路将xls文件名改成cum2017.
读入连通关系数据:
filename = 'cum2017.xlsx'; num = xlsread(filename,2,'A2:C32'); 3.后续内容 乍一看是个图论问题,下面需要考虑建图的问题,欲求不满的同学可以自己百度学习一下图论。了解一下顶点和边,了解一下有向图和无向图,以及图的存储形式。比如邻接矩阵等。
此外欢迎关注公众号“一匹大懒虫”,里面有一些软件资源和matlab基础教程,以及写的代码和相关文档。本文题目也可以在公众号回复“cum2017”获取,相关代码也会在后续逐步更新
原文链接:https://yq.aliyun.com/articles/697546
从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展。
阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。
由于开发者涉及的技术领域众多,笔者仅从自己熟悉的领域,以后端开发者的视角盘点平时可能用得到的工具。每个工具按照以下几点进行介绍:
工具名称和简介使用场景使用教程获取方式 一、Java 线上诊断工具 Arthas Arthas 阿里巴巴2018年9月开源的一款Java线上诊断工具。
工具的使用场景:
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!是否有一个全局视角来查看系统的运行状况?有什么办法可以监控到JVM的实时运行状态? Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
使用教程:
基础教程:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-basics
进阶教程:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced
获取方式:(免费)
开源地址:https://github.com/alibaba/arthas
开发者交流群号:
21965291(钉群)
二、IDE 插件 Cloud Toolkit Cloud Toolkit 是一款 IDE 插件,可以帮助开发者更高效地开发、测试、诊断并部署应用。通过 Cloud Toolkit,开发者能够方便地将本地应用一键部署到任意机器(本地或云端),并内置 Arthas 诊断、高效执行终端命令和 SQL 等,提供 IntelliJ IDEA 版,Eclipse 版,PyCharm 版和 Maven 版。
工具的使用场景:
每次修改完代码后,是否正在经历反复地打包?在 Maven 、Git 以及其他运维脚本和工具的之间频繁切换?采用 SCP 工具上传?使用XShell或SecureCRT登陆服务器?替换部署包?重启?文件上传到服务器指定目录,在各种 FTP、SCP 工具之间频繁切换 ? 获取方式:(免费)
点击这里,下载工具。
开发者交流群号:
23341694(钉群)
三、混沌实验注入工具 ChaosBlade ChaosBlade 是一款遵循混沌工程实验原理,提供丰富故障场景实现,帮助分布式系统提升容错性和可恢复性的混沌工程工具,可实现底层故障的注入,提供了延迟、异常、返回特定值、修改参数值、重复调用和try-catch 块异常等异常场景。
本文分为两部分:第一部分:ArcGIS必会的几个工具的应用 第二部分ArcGIS一些常用操作方法总结 第一部分内容:ArcGIS必会的几个工具的应用 1、 筛选 第一个工具, 我们来看下 比较简单的 筛选工具的应用。筛选( select )的用法:从输入要素类或输入要素图层中提取要素(通常使用选择或结构化查询语言 (SQL) 表达式),并将其存储于输出要素类中。我们首先来看下案例数据 - 福建的各县行政区划矢量图。
图 1-1 图 1-2
该数据属性表中,有 NAME 和 city 等字段,其中 NAME 代表区县名, city 代表区县所在的地级市城市编码。例如,闽侯县归属福州市( 3501 ),仙游县归属莆田市( 3503 )。那么,要筛选出福州下辖的所有区县,只要利用筛选工具选出 city 字段是 3501 的记录就可。
✧ 打开筛选工具 ,分析工具 提取分析 筛选
图 1-3
✧ 有如下图的参数设置,点击确定,就得到我们想要的结果。
图 1-4
✧ 运行结果如下。具体操作,可以观看学习如上所述视频教程。
图 1-5
2、 分割 现在我们在裁剪中 福建的各县行政区划矢量图 fj 基础上 又有了 福建省各地级市的行政区划图 fj5 (网络数据,仅供学习参考使用),如下图。那我们的问题来了,我们要如 1 中那样筛选出福建九个地级市(福州、厦门、莆田、泉州、漳州、龙岩、三明、南平、宁德)区县划数据,当然我们可以如 1 中操作 9 次得到我们的结果,但这样一来操作就麻烦了,万一你来个全国地级市,那不是坑爹,所以为了提高效率我们引入了分割( split )工具的应用。
文章目录 Border继承构造方法BorderStyle和BorderSideBorderStyleBorderSide构造方法 BoxShadow构造方法 BoxShape是Code BorderRadius继承CodeRadius(半径) Border 继承 Object-> ShapeBorder-> BoxBorder-> Border
构造方法 很简单的构造方法,用四个BorderSide组成,
const Border({ this.top =BorderSide.none, this.right = BorderSide.none, this.bottom = BorderSide.none, this.left = BorderSide.none, }) : assert(top != null), assert(right != null), assert(bottom != null), assert(left != null); factory Border.all({ Color color = const Color(0xFF000000), double width = 1.0, BorderStyle style = BorderStyle.solid, }) { final BorderSide side = BorderSide(color: color, width: width, style: style); return Border.fromBorderSide(side); } const Border.
文章目录 一、平方和公式1.介绍2.公式3.证明方法(1)证法一(归纳猜想法)(2)证法二(利用恒等式)(3)证法三() 一、平方和公式 1.介绍 \quad 平方和公式是一个比较常用公式,用于求连续自然数的平方和(Sum of squares),其和又可称为四角锥数,或金字塔数(square pyramidal number)也就是正方形数的级数。
\quad 此公式是冯哈伯公式(Faulhaber’s formula)的一个特例。
2.公式 核心: 1 2 + 2 2 + 3 2 + ⋯ + n 2 = n ( n + 1 ) ( 2 n + 1 ) 6 1^2+2^2+3^2+\cdots+n^2=\dfrac{n(n+1)(2n+1)}{6} 12+22+32+⋯+n2=6n(n+1)(2n+1)
其他:
∑ k = 1 n k 2 = 1 2 + 2 2 + 3 2 + ⋯ + n 2 = n 3 3 + n 2 2 + n 6 = n ( n + 1 ) ( 2 n + 1 ) 6 \displaystyle \sum^{n}_{k=1}{k^2}=1^2+2^2+3^2+\cdots+n^2=\frac{n^3}{3}+\frac{n^2}{2}+\frac{n}{6}=\dfrac{n(n+1)(2n+1)}{6} k=1∑nk2=12+22+32+⋯+n2=3n3+2n2+6n=6n(n+1)(2n+1)
透视表可以根据一个或多个键对数据进行聚合,并根据行和列上得分组建将数据分配到各个矩形区域中。在Python和pandas中,也有透视表的使用。
先读取数据
import pandas as pd import numpy as np data = pd.read_excel('豆瓣电影数据.xlsx', index_col=0, encoding='str') df = data.head(100) 共100条
使用透视表
1、以产地为索引,计算各个数字字段的均值 # 以产地为索引,计算各个数字字段的均值 pd.pivot_table(d, index=['产地']) 2、设置多索引 # 设置多索引 pd.pivot_table(d, index=['产地', '年代']) 3、指定要统计的列数据 # 指定要统计的列数据 pd.pivot_table(d, index=['年代', '产地'], values=['评分']) 4、指点统计方法 # 指定函数,统计和 pd.pivot_table(d, index=['产地', '年代'], values=['投票人数'], aggfunc=np.sum) 5、同时计算多个统计量 # 同时计算平均值和总和 pd.pivot_table(d, index=['产地'], values=['投票人数','评分'], aggfunc=[np.sum,np.mean]) 6、非法字符的替换 先添加一条带空值的数据
dic = { '名字':'复仇者联盟3', '投票人数':4565142, '类型':'剧情/科幻', '产地':'美国', '上映时间':'1994-09-10 10:00:00', '时长':np.nan, '年代':np.nan, '评分':np.nan, '首映地点':'美国' } s = pd.
结合上篇玩转Jetson nano系列(1),在jetson安装好ncnn,就可以开发各种模型了。
上篇最后提到,可以通过在ncnn根目录下修改CMakefile.txt文件,去掉examples的编译注释,就可以编译出ncnn自带的模型。
一. 修改自带yolov2源码 因为自带yolov2是基于mobilenet的,而且只支持图片检测,为了让模型支持cam的实时检测,因此需要对自带的源码进行修改。
进入自带模型源码文件夹:
并备份得到新的yolov2_cam.cpp
cd ~/ncnn/examples cp yolov2.cpp yolov2_cam.cpp 打开修改yolov2_cam.cpp
vim yolov2_cam.cpp 因为我用的是树莓派cam,设置cam参数:
这里参考自:
https://github.com/JetsonHacksNano/CSI-Camera
std::string gstreamer_pipeline (int capture_width, int capture_height, int display_width, int display_height, int framerate, int flip_method) { return "nvarguscamerasrc ! video/x-raw(memory:NVMM), width=(int)" + std::to_string(capture_width) + ", height=(int)" + std::to_string(capture_height) + ", format=(string)NV12, framerate=(fraction)" + std::to_string(framerate) + "/1 ! nvvidconv flip-method=" + std::to_string(flip_method) + " ! video/x-raw, width=(int)" + std::to_string(display_width) + ", height=(int)" + std::to_string(display_height) + "
整个安装流程基本按照官方的步骤
build ncnn for jetson
但是在jetson nano上安装时,遇到了glslang和vulkan引发的问题:
Found glslangValidator: GLSLANGVALIDATOR_EXECUTABLE-NOTFOUND
Could NOT find Vulkan (missing: Vulkan_INCLUDE_DIR)
所以这篇博客主要解决这两个问题,另外glslang按照ncnn的编译安装过程好像也有点问题,所以参考glslang官方的安装。
整个过程如下:
一. 安装Vulkan SDK 官网下载链接:
Nvidia
注册完成就可以下载了,得到如下文件:
Vulkan_loader_demos_1.1.100.tar.gz
传入Jetson nano,并解压得到文件。
/home/username/Vulkanloader_demos_1.1.100
安装Vulkan SDK
cd ~/Vulkanloader_demos_1.1.100 sudo cp loader/libvulkan.so.1.1.100 /usr/lib/aarch64-linux-gnu/ cd /usr/lib/aarch64-linux-gnu/ sudo rm -rf libvulkan.so.1 libvulkan.so sudo ln -s libvulkan.so.1.1.100 libvulkan.so sudo ln -s libvulkan.so.1.1.100 libvulkan.so.1 cd ~/ 二. 安装Glslang 下载Glslang:
git clone https://github.com/KhronosGroup/glslang.git 安装其他工具
cd <the directory glslang was cloned to, "
上次简单实现了python发送和接收图片的Demo,本次通Qt的接收图片,并显示在QLabel上。
在开始之前,先了解下常见图片的几种格式。
①BMP(.bmp)
位图图像是Microsoft为Windows开发的格式。bmp文件没有压缩或信息丢失,这使得图像具有质量很高,当然图像文件也就比较大。
②JPEG(.jpg .jepg)
是一种有损格式,意味着图像被压缩成较小的文件。虽然压缩图像会造成图像有所损失,但是是在可接受范围内的。这种图片格式在互联网上比较常见。
③GIF(.gif)
GIF广泛用于Web图形,因为它们仅限于256中颜色,可以允许透明度,还可以设置动画。GIF文件通常很小,即使被压缩也不会降低质量。
④PNG(.png)
PNG最初旨在替换gif格式文件,是一种便携式无损图像格式。与gif所支持的256种颜色不同,png文件可以处理多达1600万种颜色。(表示不懂。。。)png文件也比较小,同样压缩也不会降低图像质量。
接下来了解下Qt对图像处理的支持:
可以使用QLabel轻松地在屏幕上显示QPixmap。 QLabel有一个pixmap属性。
程序平台:ubuntu 14.04、Qt5.5.1、python2.7
void Widget::slot_readClientData() { QByteArray buffer; buffer = mp_clsTcpClientConnnect->readAll(); if(buffer.size() < 15) { qDebug() << "Receive Data str:" << buffer.size() << buffer; } if(buffer.size() == 24518) { QPixmap pix; bool ret = pix.loadFromData(buffer,"png"); //show if(ret) ui->lb_picture->setPixmap(pix.scaled(250,200)); // 500 * 375 // QFile file("in.png"); // if (!file.open(QIODevice::WriteOnly)) // { // qDebug() << "failed!"; // return; // } // file.
ASP.NET 身份验证 身份验证是从用户获取名称和密码等标识凭证并根据某些机构验证这些凭据的过程。如果凭据有效,则提交该凭据的实体被视为通过身份验证的标识。一旦标识通过了身份验证,则身份验证过程会确定该标识是否可以访问给定的资源。
ASP.NET 通过身份验证提供程序、包含验证请求者凭据所需代码的代码模块来实现身份验证。ASP.NET 支持下表所描述的身份验证提供程序。
ASP.NET 身份验证提供程序描述Forms 身份验证通过其可将没有通过身份验证的请求重定向到使用 HTTP 客户端重定向的 HTML 窗体的系统。用户提供凭据并提交该窗体。如果应用程序验证该请求,系统就会发出包含凭据或密钥的 Cookie 以重新获取该标识。后续的请求在请求标题中随 Cookie 一起发出,ASP.NET 事件处理程序会使用应用程序开发人员指定的任何验证方法去验证请求并给其授权。Passport 身份验证由 Microsoft 提供的集中身份验证服务,用于为成员站点提供单一登录和核心配置服务。Windows 身份验证ASP.NET 会结合 Internet 信息服务 (IIS) 身份验证使用 Windows 身份验证。IIS 以下列三种方式执行身份验证:基本身份验证、摘要式身份验证或集成 Windows 身份验证。当 IIS 身份验证完成后,ASP.NET 会使用验证过的标识授权访问权限。 要为 ASP.NET 应用程序启用身份验证提供程序,仅需按照以下方法为应用程序配置文件创建一个条目。
模式可设置为下列身份验证模式之一:Windows、Forms、Passport 或 None。默认为 Windows。如果将模式设置为 None,ASP.NET 不会对该请求应用任何附加身份验证 - 当要实现自定义的身份验证方案,或只想使用匿名身份验证并想获得尽可能高的性能级别时,这是很有用的。
身份验证模式不能在应用程序根目录以下的级别进行设置。其他 ASP.NET 模块也是如此,在 URL 中的子目录会继承身份验证模块,除非其被明确覆盖。
源自(http://doc.51windows.net/iismmc/?url=/iismmc/htm/aaconaspnetauthentication.htm)
阅读全文 类别: asp.net 查看评论 posted on 2008-10-27 17:38 Alan Gan 阅读( ...) 评论( ...) 编辑 收藏 转载于:https://www.cnblogs.com/AlanGan/archive/2008/10/27/1905792.html
关于HTTP中重定向的解释: 客户浏览器发送http请求-->web服务器接受后发送302状态码响应及对应新的location给客户浏览器-->客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址-->服务器根据此请求寻找资源并发送给客户。
我们在charles中设置的map remote就是实现了一个类似重定向的功能。
打开Charles-->Tools-->Map Remote可以进行相关配置。
我们可以将url和其对应的重定向地址添加到列表中,实现重定向功能。如我们将WWW重定向到ABC。
但是在访问某域名时,浏览器地址不会变成ABC,但是抓包工具可以抓到其实访问的是ABC。
需要注意的是,虽然所有访问WWW的都重定向到ABC,但是重定向可能不会成功。需要看抓包数据确认其是否重定向成功。
那么这样做有什么目的呢? 假如我们需要对某个项目进行测试,我们可以使用Charles的系统代理模式,在系统代理模式下,我们所有访问过的网站都将经过我们自己的系统,所以可以用Charles将其截获下来。将我们测试的网站重定向到本机,这意味着测试网站的后台服务由本机提供,然后就可以启动服务进行本地测试。我们只在Map remote当中加入测试网站,并不影响我们访问其余网站。
问题:用户输入一个包含“+”、“-”、“*”、“/”、正整数和圆括号的合法数学表达式,计算该表达式的运算结果
C语言
我这里是使用两个栈实现的,直接对中缀表达式进行运算的
输入的算式以#结尾
除此之外该问题还可以使用一个栈,如:先转化成后缀表达式;或者使用char型共享栈,操作数进出栈时进行类型转换即可。
Evaluation.h
#ifndef EVALUATION_H_INCLUDED #define EVALUATION_H_INCLUDED #include <stdio.h> #include <stdlib.h> #define MAXSIZE 20 //操作数 typedef struct Operand { int Data[MAXSIZE]; int top; }Rand; //运算符 typedef struct Operator { char Data[MAXSIZE]; int top; }Rator; //定义栈存放操作数和运算符 Rand operands; Rator operators; //初始化栈 void InitOperand(Rand *ra); void InitOperator(Rator *op); //判栈空 int EmptyRand(Rand *ra); int EmptyRator(Rator *op); //进栈 int PushRand(Rand *ra,int e); int PushRator(Rator *op,char e); //出栈 int PopRand(Rand *ra,int *e); int PopRator(Rator *op,char *e); //取栈顶元素 int GetTopRand(Rand *ra); char GetTopRator(Rator *op); //判断字符是否为运算符 int InOp(char ch); //判断运算符优先级 int Priority(char s); //比较运算符优先级 int Precede(char op1,char op2); //判断符号并运算 int Calculation(int a,int b,char c); //计算表达式 int ExpCalculation(Rand *ra,Rator *op); #endif // EVALUATION_H_INCLUDED Evaluation.
NumPy 数字类型是dtype(数据类型)对象的实例,
每个对象具有唯一的特征。 这些类型可以是np.bool_,np.float32等。
使用数组标量类型 import numpy as np dt = np.dtype(np.int32) print(dt) #int8,int16,int32,int64 可替换为等价的字符串 'i1','i2','i4',以及其他。 dt = np.dtype('i4') print(dt) ‘’’
结构化数据类型
‘’’
dt = np.dtype([('age',np.int8)]) print(dt) 将结构化数据应用于ndarray对象 dt = np.dtype([('age',np.int8)]) a = np.array([(10,),(20,),(30,)],dtype = dt) print(a) 访问age列内容 dt = np.dtype([('age','i1')]) a = np.array([(10,),(20,),(30,)],dtype = dt) print(a['age']) 结构化数据包含多个字段 student = np.dtype([('name','S20'),('age','i1'),('marks','f4')]) a = np.array([('joe',20,80),('susan',22,85),('tom',23,90),('fank',23,33)],dtype=student) print(a) print(a['name']) 每个内建类型都有一个唯一定义它的字符代码:
‘b’:布尔值
‘i’:符号整数
‘u’:无符号整数
‘f’:浮点
‘c’:复数浮点
‘m’:时间间隔
‘M’:日期时间
‘O’:Python 对象
‘S’, ‘a’:字节串
‘U’:Unicode
1.Component的复制黏贴 等同于Inspector窗口下的Copy Component,Paste Component Values,Paste Component As New
#if UNITY_EDITOR //首先复制需要复制的组件 UnityEditorInternal.ComponentUtility.CopyComponent(needCopyComponent); //粘贴组件的值到另一个组件上 UnityEditorInternal.ComponentUtility.PasteComponentValues(newComponent); //为GameObject添加复制的组件 UnityEditorInternal.ComponentUtility.PasteComponentAsNew(gameObject); #endif 2.组件删除 //Running模式下 Destroy(component); //Editor模式下 DestroyImmediate(component); 3.Editor模式下执行脚本的Update或OnGUI 方法 有时为了帮助策划搞一下编辑工具,需要在Editor模式下,自动帮其做些操作,要在Update下进行检测。在类的定义前添加ExecuteInEditMode标签即可。
[ExecuteInEditMode] public class TestComponent : MonoBehaviour { } 4.弧度与角度的转换 Mathf.Sin(float),Mathf.Cos(float)这些正弦余弦的方法中,参数的单位是弧度而不是角度。
弧度:弧长等于半径的弧,其所对的圆心角为1弧度,单位缩写是rad。(半径为r的圆,当某个角度α的弧长为r,那么角度α即为一弧长)
根据定义我们可以知道,圆的周长为2πr,对应360°,即360°=2πr,180°=πr。1rad对应弧长r,可以得出,1rad=180°÷π≈57.295°反过来,1°≈0.01745rad
在Mathf中有两个变量用于转换
Mathf.Deg2Rad = 0.0174532924F;//角度转弧度
Mathf.Rad2Deg = 57.29578F;//弧度转角度
所以如果我们要求sin30°,写法应该为
Mathf.Sin(30 * Mathf.Deg2Rad); 5.Vector3.ProjectOnPlane Vector3.ProjectOnPlane(Vector3 vector, Vector3 planeNormal);将向量vector投影到法向量为planeNormal的平面上。
例如你有个向量Vector3 v = new Vector3(x, y, z); 你想求他在xy轴平面上的向量(法向量为z轴),就可以使用该方法
Vector3.ProjectOnPlane(v, Vector3.forward); 6.向量的点积,叉积 点积
Vector3.Dot(Vector3 lhs, Vector3 rhs);
给定一个多项式(ax+by)^k,请求出多项式展开后x^ny^m项的系数。 输入描述:
共一行,包含5个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开。 输出描述:
输出共1行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007取模后的结果。 示例1
输入 1 1 3 1 2 输出 3 备注:
对于30%的数据,有0≤k≤10; 对于50%的数据,有a=1,b=1; 对于100%的数据,有0≤k≤1,000,0≤n,m≤k,且n+m=k,0≤a,b≤1,000,000。 这里求的是系数,这里a一定和x对应,b一定和y对应,就相当于在k个(ax+by)中选n个x,剩下的就是m个y了,
所以这里的公式就是 而后边的这里可以用逆元来求
=k(k-1)(k-2)......(k-n+1)/1*2*3......*n
对于正整数和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元。
逆元一般用扩展欧几里得算法来求得,如果为素数,那么还可以根据费马小定理得到逆元为。
推导过程如下
所以这里求组合数的时候可以把所有的除法都变成乘法
求组合数: n<=1000 递推公式 n<=100000 逆元 n<=10^18 Lucas定理 #include<iostream> using namespace std; long long mod=10007; long long Mood(long long a,long long b){ long long sum=1; a%=mod; while(b){ if(b&1) sum=sum*a%mod; a=a*a%mod; b=b>>1; } return sum; } int a,b,k,n,m; long long ans=0; int main(){ cin>>a>>b>>k>>n>>m; ans=Mood(a,n)*Mood(b,m)%mod; for(int i=1,j=k;i<=n;i++,j--){//逆元 ans=ans*j%mod; ans=ans*Mood(i,mod-2)%mod; } cout<<ans<<endl; return 0; }
操作环境 CentOS Linux release 7.4.1708 (Core) nginx version: nginx/1.12.2
Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2 Nginx Master Node:10.10.200.3
Nginx Backup Node:10.10.200.2
VIP:10.10.200.100
操作步骤 安装nginx 因为主要讲述keepalived配置步骤,nginx就用最简单模式安装
#yum -y install nginx 为了方面测试分别修改2台nginx server中的index.html文件如下:
Nginx Server:10.10.200.3
<h1>Nginx</h1> <h1>10.10.200.3</h1> Nginx Server:10.10.200.2
<h1>Nginx</h1> <h1>10.10.200.2</h1> 这样我们可以通过curl获取信息如下:
[root@nginx-backup sbin]# curl -l http://10.10.200.3 <h1>Nginx</h1> <h1>10.10.200.3</h1> [root@nginx-backup sbin]# curl -l http://10.10.200.2 <h1>Nginx</h1> <h1>10.10.200.2</h1> 安装配置Keepalived #yum -y install ipset keepalived 注意一定要安装ipset,否则后面再keepalived的过程中,会报错!!!
在Nginx Master&Backup Node上编辑nginx监控脚本,我们将脚本放在/usr/local/keepalived/sbin目录下
[root@nginx-backup sbin]# vi check_nginx_alive.sh #!/bin/bash counter=$(ps -C nginx --no-heading|wc -l) if [ "
1、软件测试说明:vs2013里面可以很好的检测出来,vs2015的工程检测的不是很准。
2、对win10系统的版本有要求,有些比较新的系统无法使用
3、Debug或者Release都行,包括win32和x64
4、使用
方法1
1、控制台里输入安装程序路径
cd C:\Program Files (x86)\Dr. Memory\bin64
2、输入如下对应的要检测的exe的路径
drmemory.exe E:\newwork\TestMemory\Debug\对应的.exe
方法2
直接拖拽程序到桌面安装程序的快捷方式
5、支持控制台程序和mfc程序