React + Ant Design 4.X版本表单Form数据回显、重置表单、获取表单某一项的值、获取整个表单的值

React + Ant Design 4.X版本表单Form数据回显、重置表单、获取表单某一项的值、获取整个表单的值 由于 4.x版本弃用了3.x中的Form.create()高阶函数,这里我们使用ref。下面的是使用以前老的ref的声明,以及使用,这里只是作为展示,不推荐使用。 给From表单添加ref属性,假设这里设置的ref=“addForm” 在满足条件的时候,通过下列方法做不同的事 ①表单数据回显(设置值) this.refs.addForm.setFieldsValue({name: ‘xxxx’}) // 给一个对象,属性名为表单中的某一项 ②重置表单 this.refs.addFrom.resetFields() ③获取某一表单项的值 this.refs.addFrom.getFieldValue(‘name’) ④获取多项的值 this.refs.addFrom.getFieldsValue([‘name’, ‘age’]) // 给一个数组 ⑤获取整个表单的值 this.refs.addFrom.getFieldsValue() // 不传参数 以上的this.refs这个写法,由于会产生问题,react官方已经不建议使用,后期版本迭代可能会丢弃。所以我们这里也不用这种方式。我们使用官网推荐的写法:React.createRef() api 。 在Antd的Form组件中,设置属性ref={this.formRef}在类中声明"formRef=React.createRef()"①表单数据回显(设置值) this.formRef.current.setFieldsValue({name: ‘xxxx’}) ②重置表单 this.formRef.current.resetFields() ③获取某一表单项的值 this.formRef.current.getFieldValue(‘name’) ④获取多项的值 this.formRef.current.getFieldsValue([‘name’, ‘age’]) // 给一个数组 ⑤获取整个表单的值 this.formRef.current.getFieldsValue() // 不传参数 我们打印输出 this.formRef对象可以发现,Antd底层已经给我们封装好了很多关于操作form表单的方法。 **注意:**在Antd框架中使用Modal组件时,如果使用了Form表单,使用数据回显时会出现一下问题,详情请参看: 使用React Antd框架时,出现Modal里加form表单,用ref回显数据,第一次取到的是null

小球反弹-C++

一个 #include <iostream> using namespace std; int main() { int n,sum=0; cin>>n; sum=n; for(int i=2;i<=10;i++) { sum+=n; n=n/2; } cout<<sum; return 0; } 小球从n米高度落下,每次落地后反弹为原来高度的一半,再落下,球在10次落地后,共经过了多少米?

overall accuracy (OA) and average accuracy (AA)

The average accuracy is calculated as the sum of the accuracy figures in column Accuracy divided by the number of classes in the test set. The average reliability is calculated as the sum of the reliability figures in column Reliability divided by the number of classes in the test set. The overall accuracy is calculated as the total number of correctly classified pixels (diagonal elements) divided by the total number of test pixels.

Java二维数组的学习

一.二维数组的命名和初始化 // 静态初始化 int [ ][ ]array=new int[ ][ ]{{1,2,3},{4,5,6},{7,8,9}}; // 动态初始化1 int [ ] [ ]array=new int[ 3 ][ 2 ]; //动态初始化2 int [ ] [ ] array=new int[ 3 ][ ]; // 初始化的错误情况(只是说明一下,不要记住) String [ ] [ ]array=new int[ ][3]; String [4 ] [ 5]array=new int[ ][ ]; int[ ][ ]array=new int[4][3]{{1,2,3,4},{5,6},{6,7,8}}; 二.二维数组的使用 规定:二维数组分为外层数组的元素,内层数组的元素 int [ ][ ]array=new int[3][2]; 外层元素: array[0],array[1]等 内层元素: array[0][0],array[0][1]等 ①, 数组元素的默认初始化值 针对初始化方式一,比如,int [ ][ ]array=new int[3][2];

[ssh] remote host key has changed

vscode 使用 ssh 连接容器时,出现这个问题。不慌,因为之前通过 8000 端口连接过该容器,后来容器被删除重新创建,导致这个问题。 不慌,先用命令行连接下 ssh asdfg@202.xx.xx.166 -p 8000 当然是连接不上 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:2sDvjwqDXkKFRWaZXYg+zsj0fjNU4/RYwfD9CyhnC+U. Please contact your system administrator.

python 国内的repository

国内python数据源头 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://pypi.hustunique.com/ 山东理工大学:http://pypi.sdutlinux.org/ 豆瓣:http://pypi.douban.com/simple/

itextpdf 简介

itextpdf 简介 官网:iText 7 ********************* 简 介 iText 7 is the latest version of iText's powerful PDF Toolkit for PDF generation, PDF programming, handling & manipulation, such as digital signing and more # itext7是itext最新的pdf处理工具,可以用来生成pdf文档、pdf编程、执行数字签名等其他操作 itext7-core:包含很多itext开发所需的包 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext7-core</artifactId> <version>7.2.0</version> <type>pom</type> </dependency> ********************* 相关类与接口 PdfDocument public class PdfDocument implements IEventDispatcher, Closeable { private static IPdfPageFactory pdfPageFactory = new PdfPageFactory(); private PageSize defaultPageSize; //pdf页面大小 protected EventDispatcher eventDispatcher; protected PdfWriter writer; //写入pdf文件 protected PdfReader reader; //读取pdf文件 protected byte[] xmpMetadata; protected PdfCatalog catalog; protected PdfDictionary trailer; //pdf字典:内有map,key为pdfName、value为pdf对象 protected PdfDocumentInfo info; //pdf文档信息:作者、标题、关键字、创建时间等 protected PdfVersion pdfVersion; //pdf版本 private PdfString originalDocumentId; private PdfString modifiedDocumentId; final PdfXrefTable xref; protected FingerPrint fingerPrint; protected final StampingProperties properties; protected PdfStructTreeRoot structTreeRoot; protected int structParentIndex; protected boolean closeReader; protected boolean closeWriter; protected boolean isClosing; protected boolean closed; protected boolean flushUnusedObjects; private Map<PdfIndirectReference, PdfFont> documentFonts; private PdfFont defaultFont; protected TagStructureContext tagStructureContext; private SequenceId documentId; private LinkedHashMap<PdfPage, List<PdfLinkAnnotation>> linkAnnotations; Map<PdfIndirectReference, byte[]> serializedObjectsCache; MemoryLimitsAwareHandler memoryLimitsAwareHandler; private EncryptedEmbeddedStreamsHandler encryptedEmbeddedStreamsHandler; *********** 构造方法 public PdfDocument(PdfReader reader) { public PdfDocument(PdfReader reader, DocumentProperties properties) { public PdfDocument(PdfWriter writer) { public PdfDocument(PdfWriter writer, DocumentProperties properties) { public PdfDocument(PdfReader reader, PdfWriter writer) { public PdfDocument(PdfReader reader, PdfWriter writer, StampingProperties properties) { *********** XmpMetadata protected void setXmpMetadata(byte[] xmpMetadata) { public void setXmpMetadata(XMPMeta xmpMeta, SerializeOptions serializeOptions) throws XMPException { public void setXmpMetadata(XMPMeta xmpMeta) throws XMPException { public byte[] getXmpMetadata() { public byte[] getXmpMetadata(boolean createNew) { *********** pdfObject public PdfObject getPdfObject(int objNum) { public int getNumberOfPdfObjects() { *********** page public PdfPage getPage(int pageNum) { public PdfPage getPage(PdfDictionary pageDictionary) { public PdfPage getFirstPage() { public PdfPage getLastPage() { public PdfPage addNewPage() { public PdfPage addNewPage(PageSize pageSize) { public PdfPage addNewPage(int index) { public PdfPage addNewPage(int index, PageSize pageSize) { public PdfPage addPage(PdfPage page) { public PdfPage addPage(int index, PdfPage page) { public int getNumberOfPages() { public int getPageNumber(PdfPage page) { public int getPageNumber(PdfDictionary pageDictionary) { public boolean movePage(PdfPage page, int insertBefore) { public void movePage(int pageNumber, int insertBefore) { public boolean removePage(PdfPage page) { public void removePage(int pageNum) { public List<PdfPage> copyPagesTo(int pageFrom, int pageTo, PdfDocument toDocument, int insertBeforePage) { public List<PdfPage> copyPagesTo(int pageFrom, int pageTo, PdfDocument toDocument, int insertBeforePage, IPdfPageExtraCopier copier) { public List<PdfPage> copyPagesTo(int pageFrom, int pageTo, PdfDocument toDocument) { public List<PdfPage> copyPagesTo(int pageFrom, int pageTo, PdfDocument toDocument, IPdfPageExtraCopier copier) { public List<PdfPage> copyPagesTo(List<Integer> pagesToCopy, PdfDocument toDocument, int insertBeforePage) { public List<PdfPage> copyPagesTo(List<Integer> pagesToCopy, PdfDocument toDocument, int insertBeforePage, IPdfPageExtraCopier copier) { public List<PdfPage> copyPagesTo(List<Integer> pagesToCopy, PdfDocument toDocument) { public List<PdfPage> copyPagesTo(List<Integer> pagesToCopy, PdfDocument toDocument, IPdfPageExtraCopier copier) { public PageSize getDefaultPageSize() { public void setDefaultPageSize(PageSize pageSize) { public void flushCopiedObjects(PdfDocument sourceDoc) { *********** font public PdfFont getFont(PdfDictionary dictionary) { public PdfFont getDefaultFont() { public PdfFont addFont(PdfFont font) { public PdfFont findFont(String fontProgram, String encoding) { *********** 文档信息 public PdfDocumentInfo getDocumentInfo() { public PdfString getOriginalDocumentId() { public PdfString getModifiedDocumentId() { public long getDocumentId() { public SequenceId getDocumentIdWrapper() { *********** event public void addEventHandler(String type, IEventHandler handler) { public void dispatchEvent(Event event) { public void dispatchEvent(Event event, boolean delayed) { public boolean hasEventHandler(String type) { public void removeEventHandler(String type, IEventHandler handler) { public void removeAllHandlers() { *********** reader、writer public PdfWriter getWriter() { public PdfReader getReader() { *********** 其他操作 public PdfCatalog getCatalog() { public String[] getPageLabels() { public PdfVersion getPdfVersion() { public PdfDictionary getTrailer() { public FingerPrint getFingerPrint() { public int getNextStructParentIndex() { public PdfStructTreeRoot getStructTreeRoot() { public TagStructureContext getTagStructureContext() { public PdfOutline getOutlines(boolean updateOutlines) { public boolean isClosed() { public boolean isTagged() { public boolean isAppendMode() { public boolean isCloseReader() { public boolean isCloseWriter() { public boolean isFlushUnusedObjects() { public void close() { public PdfDocument setTagged() { public void setCloseReader(boolean closeReader) { public void setCloseWriter(boolean closeWriter) { public void setFlushUnusedObjects(boolean flushUnusedObjects) { public boolean hasOutlines() { public void initializeOutlines() { public void addFileAttachment(String key, PdfFileSpec fs) { public void addAssociatedFile(String description, PdfFileSpec fs) { public PdfArray getAssociatedFiles() { public PdfEncryptedPayloadDocument getEncryptedPayloadDocument() { public void setEncryptedPayload(PdfFileSpec fs) { public PdfIndirectReference createNextIndirectReference() { public List<PdfIndirectReference> listIndirectReferences() { public void addNamedDestination(String key, PdfObject value) { public void addOutputIntent(PdfOutputIntent outputIntent) { public void checkIsoConformance(Object obj, IsoKey key) { public void checkIsoConformance(Object obj, IsoKey key, PdfResources resources, PdfStream contentStream) { public void checkShowTextIsoConformance(CanvasGraphicsState gState, PdfResources resources) { public void setUserProperties(boolean userProperties) { public boolean registerProduct(ProductData productData) { public void markStreamAsEmbeddedFile(PdfStream stream) { PdfXrefTable getXref() { boolean isDocumentFont(PdfIndirectReference indRef) { boolean hasAcroForm() { boolean doesStreamBelongToEmbeddedFile(PdfStream stream) { protected void initTagStructureContext() { protected void storeLinkAnnotation(PdfPage page, PdfLinkAnnotation annotation) { protected void checkIsoConformance() { protected void markObjectAsMustBeFlushed(PdfObject pdfObject) { protected void flushObject(PdfObject pdfObject, boolean canBeInObjStm) throws IOException { protected void open(PdfVersion newPdfVersion) { protected void addCustomMetadataExtensions(XMPMeta xmpMeta) { protected void updateXmpMetadata() { protected XMPMeta updateDefaultXmpMetadata() throws XMPException { protected Collection<PdfFont> getDocumentFonts() { protected void flushFonts() { protected void checkClosingStatus() { protected IPdfPageFactory getPageFactory() { protected void checkAndAddPage(PdfPage page) { protected void checkAndAddPage(int index, PdfPage page) { protected void tryInitTagStructure(PdfDictionary str) { private void tryFlushTagStructure(boolean isAppendMode) { private void updateValueInMarkInfoDict(PdfName key, PdfObject value) { private void removeUnusedWidgetsFromFields(PdfPage page) { private void copyLinkAnnotations(PdfDocument toDocument, Map<PdfPage, PdfPage> page2page) { private void copyOutlines(Set<PdfOutline> outlines, PdfDocument toDocument, Map<PdfPage, PdfPage> page2page) { private void getAllOutlinesToCopy(PdfOutline outline, Set<PdfOutline> outlinesToCopy) { private void cloneOutlines(Set<PdfOutline> outlinesToCopy, PdfOutline newParent, PdfOutline oldParent, Map<PdfPage, PdfPage> page2page, PdfDocument toDocument) { private void ensureTreeRootAddedToNames(PdfObject treeRoot, PdfName treeType) { private boolean writerHasEncryption() { private void updatePdfVersionFromCatalog() { private void readDocumentIds() { private void processReadingError(String errorMessage) { private static void overrideFullCompressionInWriterProperties(WriterProperties properties, boolean readerHasXrefStream) { private static boolean isXmpMetaHasProperty(XMPMeta xmpMeta, String schemaNS, String propName) throws XMPException { Document

Java数组的学习

Java是一门有用的学科,话不多说上干货。 一,数组的概述 1,所谓数组就是若干个相同数据类型的元素按一定顺序排列的集合。 数组的特点: ①数组是相同数据类型元素的集合。 ②数组中的个元素是有先后顺序的,他们在内存中按照这个先后顺序连续存放在一起。 ③数组元素用整个数组的名字和他自己在数组中的顺序位置来表示。 例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a中的第二个元素,依次类推 一维数组: 要使用Java语言的数组,一般需要经过三个步骤:①是声明变量;②是分配空间;③是创建数组元素并赋值。 前两个步骤语法如下: 数据类型[ ]数组名;//声明一维数组 数组名=new 数据类型[个数];//分配内存给数组 在数组的声明格式中,“数据类型”是声明数组元素的数据类型包括“基本类型”和“引用类型”。 数组名是用来统一那些相同数据类型的名称,命名规则和变量的命名规则相同, 其中“[ ]”指明该变量是一个数组类型变量,Java语言在数组的定义中并不为数组元素分配内存,因此“[ ]”中不用给出数组中元素的个数,但必须在为它分配内存空间才能使用。 new是分配数组内存用的运算符,“个数”是告诉编译器,所声明的数组要存放多少元素,利用new运算符为数组分配内存空间的方式称为动态内存分配方式。 也可以合并为 数据类型[ ]数组名=new数据类型[个数] int [ ] x; x=new int[10]; 用户可以改变x的值,让他指向另一个数组对象,或者不指向任何数据对象。 要让x不指向任何数据数据对象只需要将常量null赋给x即可。如“x=null” 原来,执行完“x=null”语句后,原来通过new int[ 10]产生的数组对象不再被任何对象引用变量所引用,直到被垃圾回收站来将他稀释掉。

【java】统计图表百分比和如何等于百分之百

最近遇到一个问题,各个类型资金占总资金的百分比,计算后客户端以图饼的形式展示。 文章目录 方法一:利用java中的Bigdecimal 进行统计方法二 差减法方法三 递增加一法 方法一:利用java中的Bigdecimal 进行统计 代码如下: @Test public void test() { double a = 5, b = 11, c = 13, d = 22, e = 36; long sum = 87; BigDecimal bigDecimal = new BigDecimal(a / sum).setScale(2, BigDecimal.ROUND_HALF_EVEN); BigDecimal bigDecimal1 = new BigDecimal(b / sum).setScale(2, BigDecimal.ROUND_HALF_EVEN); BigDecimal bigDecimal2 = new BigDecimal(c / sum).setScale(2, BigDecimal.ROUND_HALF_EVEN); BigDecimal bigDecimal3 = new BigDecimal(d / sum).setScale(2, BigDecimal.ROUND_HALF_EVEN); BigDecimal bigDecimal4 = new BigDecimal(e / sum).

php-fpm的配置和优化

php-fpm的安装目录 下面是我的平时的环境搭建php的各种安装目录,大家的基本也差不多。 centos等linux平台 /usr/local/php/php /usr/local/php/etc/php.ini /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm.conf mac平台 /usr/bin/php /etc/php.ini /usr/bin/php-fpm /etc/php-fpm.conf 由于我开发以Mac为主,所以就用Mac的环境配置来学习。 php-fpm配置详解 这是搜索的一份还算算比较详细的php-fpm.conf配置详解,我会针对性的修改下,当然php手册上也有详细的讲解:PHP: 配置 - Manual pid = /usr/local/var/run/php-fpm.pid #pid设置,一定要开启,上面是Mac平台的。默认在php安装目录中的var/run/php-fpm.pid。比如centos的在: /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/var/log/php-fpm.log #错误日志,上面是Mac平台的,默认在php安装目录中的var/log/php-fpm.log,比如centos的在: /usr/local/php/var/log/php-fpm.log log_level = notice #错误级别. 上面的php-fpm.log纪录的登记。可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice. emergency_restart_threshold = 60 emergency_restart_interval = 60s #表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个选项一般保持默认值。0 表示 '关闭该功能'. 默认值: 0 (关闭). process_control_timeout = 0 #设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0. daemonize = yes #后台执行fpm,默认值为yes,如果为了调试可以改为no。在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。 listen = 127.

JavaScript浏览器BOM

目录 window Window 尺寸 Windows的一些方法 Window History 一些方法: Window Location Window Navigator Windows 弹窗 系統提示框 计时事件 BOM事件 JavaScript的盒子模型 client系列 offset系列 scroll系列 获取 设置 获取html 获取body 获取可视区域的宽度或高度 回到顶部按钮实现 BOM(Browser Obejct Model):浏览器对象模型 window 所有浏览器都支持 window 对象。它表示浏览器窗口。 所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。 全局变量是 window 对象的属性。 全局函数是 window 对象的方法。 甚至 HTML DOM 的 document 也是 window 对象的属性之一: window.document.getElementById("header"); 与此相同: document.getElementById("header"); Window 尺寸 有三种方法能够确定浏览器窗口的尺寸。 对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari: window.innerHeight - 浏览器窗口的内部高度(包括滚动条)window.innerWidth - 浏览器窗口的内部宽度(包括滚动条) 对于 Internet Explorer 8、7、6、5:

verilog实现边沿检测

verilog边沿检测 下例是基于mealy状态机实现信号上升沿检测 module edge_detect ( input wire clk, input wire rst_n, input wire level, //检测信号 output reg tick //输出信号 ); parameter zero = 1'b0, one = 1'b1; reg state_c, state_n; always@(posedge clk or negedge rst_n)begin if(!rst_n) state_c <= zero; else state_c <= state_n; end always@(*)begin tick = 1'b0; state_n = state_c; csae(state_c) zero: if(level)begin tick = 1'b1; state_n = one; end one: if(~level) state_n = zero; default: state_n = zero; endcase end endmodule

Java+MySQL基于springboot+vue的小区疫情数据动态管理系统#毕业设计

项目编号:Java+MySQL spring240-基于springboot的小区疫情数据动态管理系统#毕业设计 开发语言:Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:springboot+vue 随着冠状病毒在全球的爆发,全球都进去了相当严格的疫情管控。小区是以当前城市居住中的一个非常重要的环节,小区内一般都集中居住了大量的居民,一旦某个高危人群,如果放任不管让他四处和小区内的人接触将会引起非常严重的后果,所以很多时候我们要对小区内的疫情进行防控。只有这样才能够将新冠疫情的传播降低到冰点

nginx 重启/停止/退出失败

启动Nginx时候报错: nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory) 这句话的意思就是,你的nginx.pid 打开失败,今天我也是被这个问题困扰了半天,但是我就是要弄懂它。 事情的经过是这样的,我先下载nginx,然后上传都root目录下,进行对应的环境安装下载,万事俱备之后,我用./nginx命令(默认启动方式启动成功)。 然后我想停止的时候,无法停止,也无法退出,一直报上面那个错误。 我就去查询相关知识,并且自己重复测试,总是弄明白了,我也不知道算不算弄明白,不过还是记录一下。 应为我上传的配置文件是这样的(这是部分配置,在头部几行的位置), #pid logs/nginx.pid; 我对应的这个配置被注释掉了,然后我就把注释打开了,然后更改路径为niginx的安装默认路径 /usr/local/nginx/logs/nginx.pid 到这里你就解决了大半 之后就有两种解决方法 第一种: ps aux|grep nginx //查看nginx的进程 kill 进程号//普通的手段已经无法退出 之后再重新启动,就会发现问题已经解决,stop,relaod,quit命令都可以使用, 已经在你设置的目录下生成了对应的nginx.pid文件,它会去使用nginx.pid文件中保存的进程号。 第二种: 既然我们知道它是拿nginx.pid文件中的进程号来进行一系列的操作,那我们就直接用 ps aux|grep nginx //查看nginx的进程 然后把获取到的进程号放到nginx.pid文件中,就可以使用一系列的命令了。 其实还有第三种方法 绕过了nginx.pid文件 nginx路径 -c ningx配置文件 以配置文件的形式启动nginx 你学废了嘛?

matlab 产生已知功率的复高斯白噪声及信噪比计算

假定已知噪声功率 P n P_n Pn​,那么产生一个长度为 N N N的复高斯白噪声代码为: n = s q r t ( 0.5 ∗ P n ) ∗ ( r a n d n ( 1 , N ) + 1 j r a n d n ( 1 , N ) ) n=sqrt(0.5*P_n) * (randn(1,N)+1jrandn(1,N)) n=sqrt(0.5∗Pn​)∗(randn(1,N)+1jrandn(1,N)) 可以通过计算信号总能量除以信号长度验证该噪声的功率是否为 P n P_n Pn​,即 P n = n × n ′ / N P_n=n \times n'/N Pn​=n×n′/N 信噪比SNR可通过能量、功率或幅度进行计算。采用能量和功率进行计算时用 10 l o g 10 10log_{10} 10log10​,而采用幅度计算时用 20 l o g 10 20log_{10} 20log10​。考虑脉冲雷达,发射功率为 P t P_t Pt​(平均功率是 P t × N 1 / N 2 P_t\times N_1 / N_2 Pt​×N1​/N2​?),采样点数为 N 1 N_1 N1​,而噪声在一个脉冲重复周期内持续存在,平均功率(方差)为 P n P_n Pn​,采样点数为 N 2 N_2 N2​,于是采用能量计算SNR为:

阿里云对象存储OSS简介和使用

文章目录 简介OSS是什么存储类型费用说明使用限制 快速使用1.开通服务2.创建Bucket3.测试上传、访问 开发接入1.pom依赖2.获取AccessKey3.代码示例 高级功能表单上传追加上传断点续传上传分片上传图片处理防盗链设置监控搭配CDN 常见问题1.OSS的数据是如何组织的? 简介 OSS是什么 阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。非常适合存储非结构化数据,例如视频、图形、日志、文本文件以及各种App应用、多终端同步软件、网盘下载站的文件等,单个文件的大小从1字节到48.8TB,可以存储的个数无限制。 存储类型 非特殊场景直接选择标准类型就可以了。 费用说明 OSS的所有计费服务都是单独计费的,例如您存储文件会产生存储费用;通过外网访问OSS存储的文件,会产生外网流出流量费用;使用图片处理服务处理OSS的图片会产生图片处理费用等。 以常见的费用明细罗列如下(未考虑搭配CDN情况): 存储费用:标准存储(本地冗余)容量 按量计费:0.12元/GB/月 包年包月:标准型(本地冗余LRS)存储包 100G年价99元 = 0.99元/GB/年 = = 0.08元/GB/月 一年内容量在100G之内的部分会通过存储包抵扣,超出部分自动按量计费 流量费用:外网流出流量 按量计费:00:00-08:00(闲时):0.25元/GB、8:00-24:00(忙时):0.50元/GB 包年包月:下行流量包 100G年价441 = 0.36元/GB 一年内每个月都有100G的外网下载流量抵扣额度,每月1号更新,超出部分自动按量计费 请求费用:Put类型请求次数、Get类型请求次数 按量计费: 0.01元/万次包年包月:不支持 图片处理费用: 图片处理:每月0-10TB:免费,大于10TB:0.025元/G图片高级压缩:低规格(800×600以下):0.025元/千次、中规格(1600×1200以下):0.1元/千次 以上所有费用相加即为总费用,可以看到主要还是流量费用贵,其他的很便宜可以忽略了。费用明细地址:请参见阿里云产品定价。 这里提一嘴,ECS那边的流量费是0.8元/GB,详情链接 计费周期 OSS以小时为周期统计OSS所有资源的使用量,并按照使用量结算产生的费用。 计费案例:详情地址 李先生在OSS内存储了505GB标准存储(本地冗余)类型文件,存储空间所在地域为华东1(杭州),每小时的请求数均值为1000次,每天的外网流出流量约为2GB 。李先生可以选择以下两种方案进行付费: 仅按量计费 存储费用=505 GB*0.12元/GB/月=60.6元 请求费用=1000*0.01元/10000次*24小时*30天=0.72元 流量费用=2 GB*30天*0.5元/GB=30元 说明 OSS计算流量费用时,分为忙时流量(8:0024:00,0.50元/GB)和闲时流量(00:0008:00,0.25元/GB),用户都是白天使用,此处按忙时流量计算。 总费用:一个月费用约91.32元 包年包月+按量计费 存储费用=54元(500 GB标准(LRS)存储包)+5 GB*0.12元/GB/月=54.6元 说明 超出存储包的5 GB数据按量计费。 请求费用=1000*0.01元/10000次*24小时*30天=0.72元 流量费用=9.96元(50 GB流量包)+10 GB*0.5元/GB=14.96元 说明 流量以忙时流量计算。50 GB流量包只有半年包,平均每月需59.76元/6个月=9.96元。 总费用:一个月费用约70.28元

利用python实现本地文件上传到sftp

实现功能: 利用python自动连接sftp,并实现本地文件(文件夹)自动上传到远程sftp服务中指定路径下,且保持本地目录结构 系统环境:centos7 python版本:python3 使用模块包:paramiko ,若未安装,可使用 pip install paramiko 进行安装 难点分析: (1)sftp.put(localfile,remotefile) 函数必须是两个文件名,且sftp远端的文件路径要存在,因此需要提前创建好目录 (2)sftp.mkdir() 函数只能创建一级目录,不能循环创建多级目录,本文通过一级一级获取本地路径,然后判断远程路径是否存在,若不存在就创建好,由此来保证上传的文件能够在sftp远端找到对应的目录 (3)用到的重点函数有 sftp.mkdir 、sftp.stat,更多函数可参见帮助文档:https://docs.paramiko.org/en/stable/api/sftp.html (4)关于sftp文件下载的方法,参考博文:https://blog.csdn.net/d1240673769/article/details/106295184 (5)关于sftp文件上传和下载,另一种最简单的方法就是利用 shell脚本,lftp工具,详情参考:https://blog.csdn.net/d1240673769/article/details/106307421 实现代码: # -*- coding: utf-8 -*- import paramiko import os import stat # 判断sftp服务端中文件路径是否存在,若不存在则创建 def create_dir(sftp,remoteDir): try: if stat.S_ISDIR(sftp.stat(remoteDir).st_mode): # 如果remoteDir存在且为目录,则返回True pass except Exception as e: sftp.mkdir(remoteDir) print("在远程sftp上创建目录:{}".format(remoteDir)) # 上传 def sftp_upload(sftp,localDir,remoteDir): if os.path.isdir(localDir): # 判断本地localDir是否为目录 for file in os.listdir(localDir): remoteDirTmp=os.path.join(remoteDir,file) localDirTmp=os.path.join(localDir,file) if os.path.isdir(localDirTmp): # 如果本地localDirTmp为目录,则对远程sftp服务器进行判断 create_dir(sftp,remoteDirTmp) # 判断sftp服务端文件目录是否存在,若不存在则创建 sftp_upload(sftp,localDirTmp,remoteDirTmp) else: print("

关于ForkJoin框架的一点小坑

一、使用ForkJoinPool执行ForkJoinTask,如果main方法中使用pool.execute(task);主函数中没有其他操作,会看不到task执行结果。 原因分析: 1.execute是异步执行(不需要等待task执行完毕主函数就继续执行下面的语句);invoke是同步执行,主函数等待invoke执行完毕再继续执行。 2.主线程是非守护线程,ForkJoinPool执行任务的线程是守护线程。主线程执行execute后没有等task完成就继续执行后续命令然后主线程结束,当程序中只有守护线程时jvm就会退出。 建议主线程执行execute后做判断while(!task.isDone()){System.out.println("任务执行中...");Thread.sleep(1000);}或者调用invoke,主线程阻塞等待task执行完成