non - iterable 非迭代的
unpack 解压,装载,赋值,理解
第一次创建类 class Force: def __init__(self,fx,fy): self.x = fx,self.y = fy # 构造方法 def show(self): print('Force<%s,%s>'%(self.x,self.y)) # 输出函数 def add(self,force2): self.x += force2.x self.y += force2.y print('Force<%s,%s>'%(self.x,self.y)) f1 = Force(1,2) f2 = Force(2,3) f1.add(f2) 错误提示 一个语句结束了,就用;连接,用‘,’说明两个并行的变量
或者做如下修改
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/105561341
本文出自【赵彦军的博客】
在 GooglePlay 创建 App 的时候,一不小心勾选了 谷歌签名保护计划,就非常坑,为什么非常坑,因为这个一旦加入,就无法退出,后面的坑就后患无穷。
这里普及一下 谷歌签名保护计划:
简单来说,就是apk上传到 GooglePlay 后,GooglePlay 会替换你的签名,实际上用户下载的 APK 的签名并不是你最初上传的签名,而是 GooglePlay 自己的签名,这个签名存放在 Google 服务器,我们是不能下载的。
说到这里,大家就明白了,我前面说的坑是什么意思?
因为 线上版本 和 本地版本 的签名不一致,会导致 facebook 登录失败,google 登录失败、微信登录失败 。
那么怎么才能把 GooglePlay 的签名换成我们自己的签名呢? 是有办法的。
解决方案 第一步:应用签名菜单下,请求升级密钥
第二步: 选择升级秘钥的原因,你可以选择第二个 "我需要针对多个应用或此应用的预安装版本使用同一秘钥"
第三步:下载工具(pepk.jar )生成签名压缩包,并上传即可。注意,此签名一个应用只能更新一次,只有一次机会哦
点击下载 Pepk.jar 在终端中执行
java -jar pepk.jar --keystore=foo.keystore --alias=foo --output=output.zip --encryptionkey=eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a --signing-keystore=foo.keystore --signing-key-alias=foo 注意:要把 foo.keystore 换成你的签名,把 foo 换成你自己的 alias 。
执行完命令,会在本地生成 output.zip , 然后上传就可以了。
提交成功后可以看到谷歌的签名已经替换成想要的了。与上传签名一致。如图所示
总结 终于完美的解决了我们的问题,经过这一波操作,本地签名和 GooglePlay 签名已经保持一直了。
mac卸载了xcode后,运行软件提示:xcode-select: error: invalid developer directory
解决方法:
xcode-select --install
问题1:一位全加器 assign sum = a ^ b ^ cin; assign cout = a&b | a&cin | b&cin; 一位全加器,sum为输入加进位位异或(即1的个数为奇数时,sum==1);
cout为cout = a&b | a&cin | b&cin即三个输入至少两个是1时为1。
问题2:加/减法器 减法可以由加法得到,将一个加数取负(二进制形式取反加一)。
这里当输入sub为1时进行减法运算,当sub=0时进行加法运算。一方面,输入b与sub取异或,sub为1时,可以进行取反操作,sub为0时保持不变。另一方面,sub为1时,将其输入作为cin刚好可以完成减法运算中的加一操作,为0时,刚好可以满足加法运算。
module top_module( input [31:0] a, input [31:0] b, input sub, output [31:0] sum ); wire [31:0] in; wire cout,cout1; assign in=b^{32{sub}}; add16 add16 ( .a(a[15:0]), .b(in[15:0]), .cin(sub), .sum(sum[15:0]), .cout(cout) ); add16 add161 ( .a(a[31:16]), .b(in[31:16]), .cin(cout), .sum(sum[31:16]), .cout(cout1) ); endmodule 另外,将位数不一样的两个数进行按位门运算时,不要忘记把位数补足。
找了很多,这个最全面
https://blog.csdn.net/weixin_40649505/article/details/80229794
自mybatis3.1.0开始,如果你无需使用原生枚举,可配置默认枚举来省略扫描通用枚举配置 默认枚举配置
1、配置文件配置枚举所在的包
#配置枚举 支持通配符 * 或者 ; 分割 mybatis-plus.type-enums-package=com.iscas.biz.mp.test.model.enums mybatis-plus.configuration.default-enum-type-handler=org.apache.ibatis.type.EnumOrdinalTypeHandler 2、定义一个枚举,在需要存入数据库的字段上加上@EnumValue注解
package com.iscas.biz.mp.test.model.enums; import com.baomidou.mybatisplus.annotation.EnumValue; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonView; import com.iscas.biz.mp.test.model.TestEntity; import lombok.Getter; import java.util.Objects; /** * //TODO * * @author zhuquanwen * @vesion 1.0 * @date 2020/4/5 15:23 * @since jdk1.8 */ public enum SexEnum /*implements IEnum<Integer>*/ { /** * 男 * */ MAN(1, "男"), /** * 女 * */ WOMEN(2, "女"); @EnumValue private final int code; @JsonValue public int getCode() { return this.
前言 CRC和Hamming Code都采用了冗余编码技术,而前者是一种检错编码,而后者是一种纠错编码。冗余(CRC中的FCS帧检验序列、Hamming Code中的校验位)的作用之一就是帮助扩大码距,从而更容易找出错误甚至是纠错。那么为什么加冗余位就更容易检错纠错了呢?
码距:在信息编码中,两个合法代码对应位上编码不同的位数称为码距,又称海明距离。举例如下:10101和00110从第一位开始依次有第一位、第四、第五位不同,则海明距离为3。
码距越大,反映了码集中每两个码字之间的差别程度越大。那么从一个编码传输错误变成另一个编码的可能性越小。则其检错、纠错能力也就越强。
比如我们用0代表女,1代表男,(码距为1)这时候如果0在传输的过程中变成了1,那么我们没有办法判断是否发生了错误,因为1仍然是一个正确的编码。
但比如我们用00代表女,11代表男,(码距为2)那么我们就可以检测出1位发生错误的情况,比如00变成了10或者01.因为合法的编码只有00和11.
如果继续冗余,用000代表女,111代表男,(码距为3)同理。那么这时候我们可以检测出1位和两位发生错误的情况。同时,我们可以纠正一位发生错误的情况,比如如果出现了001,我们很清楚的知道它原来传输的正确编码应该是000,因为只有一位出错,所以不可能是111变过来的。
注:码距和检错纠错能力的关系(当d≦4)
(1)若码距d为奇数,则能发现d-1位错,或能纠正(d-1)/2位错
(2)若码距d为偶数,则能发现d/2位错,并能纠正(d/2-1)位错
回顾CRC(Cyclic Redundancy Code) 如果要发送的数据是 1101011011,生成多项式为10011
(1)生成多项式中,最高次为4,则添4个0,11010110110000
(2)11010110110000和10011进行模2除法(异或:同0异1)
余数1110为FCS帧检验序列,替代添的0.故要发送的数据为11010110111110
(3)接收端除以生成多项式,除尽即没有发生错误
回顾Hamming Code 以数据码1010为例
(1)确定海明码的位数 n为数据位位数,k为校验位的位数
n+k+1≦2^k
因为n=4,所以易得,k等于3。设信息位D4D3D2D1(1010),校验位P3P2P1,对应的海明码为H7H6H5H4H3H2H1
(2)确定校验位的分布 规定校验位Pi在位号为2^(i-1)上
D4D3D2P3D1P2P1对应
H7H6H5H4H3H2H1
(3)分组以形成校验关系 每个数据位用多个校验位校验,但要满足条件:被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和。
如D4对应的是7,转换成2进制0111,则负责校验D4的校验位为P3P2P1
(4)校验位取值 校验位Pi的值为该校验位校验的所有数据位求异或。即可得到海明码,即H7H6H5H4H3H2H1。
(5)海明码的校验原理 每个校验位和参与形成该校验位的信息位异或得到S3S2S1,值若为000则没有错误,否则有错,且这个数就是错误的位号
PCA用到的矩阵知识 svd奇异值分解瑞利熵谱定理 PCA input:n*d,n代表个数,d代表维度Output:主成分向量 ,principle vectors ,仅仅是一个向量,代表一个方向。主成分的个数k<=原始空间维度数d Q&A 什么是最主要的成分?
点的投影后分布的方差最大的方向。(在该方向上的点云分布的最分散)怎么获取第二个主成分
去掉第一个主成分之后分布方差最大的方向 法向量估计 1. 原理 所谓法线估计实质上就是对每一个点,在其邻域内估计出一个平面。
我们知道,估计一个平面需要一个点和一个法向量,这个法向量就是我们要估计的法向量。这个点就是这一群邻域点(与该点自身)的平均值。
设平均点为c,法向量为n,问题就可以转换到寻求一个方向n使得所有邻域点在方向n上的投影点的分布最为集中,这样一个优化问题,
很显然,根据PCA分析可以知道,寻求一个方向n使得所有邻域点在方向n上的投影点的分布最为集中,也是就意味着点在该方向上的投影的方差最小。这就是PCA中最不重要的那个方向向量,因为点云在三维空间所以,n就是第三个PCA向量。
我们选择c为这一群点的平均值,所以xi-c就是就是去中心化后的点。所以该问题变为了如下问题,
把括号展开,化简就可以得到
根据PCA可知,我们要求的n就是XXT最小特征值对应的特征向量。
2. 步骤
选择P发现所选点的最近邻点PCA分析法线:对应主成分中的最不重要的那一个方向(代表在该方向上的投影点分布最密集,方差最小)曲率->最小特征值所占的比例
船型开关工作原理分析 由于疫情,这几个月一直无聊的待在家里,就把家里翻出来的旧电热锅简单的修理了一下,关于电热锅的修理博客之后有时间再写吧,这次就总结下在修过程中让我一直很头疼的船型开关的工作原理。
船型开关也称翘板开关。其结构与钮子开关相同,只是把钮柄换成船型。船型开关常用作电子设备的电源开关,其触点分为单刀单掷和双刀双掷等几种,有些开关还带有指示灯。以下就是几种常见船型开关:
由于家用电器上使用较多的是图中第一行的第二个,我只分析了它的工作原理,等以后有机会遇到其他的,再进行分析:
首先贴上网上能找到的它的工作原理电路图:
下面是我自己根据实物画出来的电路简图(图中连接线均为导线):
这张图里已经把船型开关的工作原理蕴含在其中了,其中黄代表的是铜制接头,白代表的是铝质接头,开状态指通电状态,关状态指断电状态。
算是自己第一个正式的java项目,加油!
文章目录 项目配置修改中央仓库、镜像配置修改IDEA中 maven 设置搜索、管理maven包Spring入门Spring MVC 入门获取参数的值 Mybatis入门配置信息MyBatis 增删改查语句日志级别调整为Debug 1.30 开发社区首页server层调 dao层渲染html加载html static文件 分页 项目调试技巧 项目配置 修改中央仓库、镜像配置 阿里云maven镜像仓库
修改IDEA中 maven 设置 搜索、管理maven包 搜索
https://mvnrepository.com/
管理
https://start.spring.io/
Spring入门 Spring MVC 入门 获取参数的值 通过不同的注解,获取值,但是一般不加
// GET请求 // /students?current=1&limit=20 @RequestMapping(path = "/students", method = RequestMethod.GET) @ResponseBody public String getStudents( @RequestParam(name = "current", required = false, defaultValue = "1") int current, @RequestParam(name = "limit", required = false, defaultValue = "10") int limit) { System.
最近学习深度学习的时候,遇到如下问题
SyntaxError: Non-UTF-8 code starting with '\xb5' in file /Users/qianjiangang/Desktop/stock 2/stock/run_RL.py on line 6, but no encoding declared; see http://py 解决办法:
在开头加 #coding=gbk
一、什么是npm和cnpm npm(node package manager):nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等) cnpm:因为npm安装插件是从国外服务器下载,受网络的影响比较大,可能会出现异常,如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队干了这事。来自官网:“这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。”
二、安装nodejs 1、首先前往nodejs官网下载nodejs 2、然后点击安装,选择自己要安装的路径,此处我选择的是:D:\Program Files\nodejs,安装至完成。 3.window+R,输入cmd,打开命令提示符窗口,输入:
npm -v 1 检测是否安装成功,如果输出版本号,则表示安装成功,如图: 二、改变原有的环境变量 1、首先配置npm的全局模块的存放路径、cache的路径,此处我选择放在:D:\Program Files\nodejs 输入如下命令:
npm config set prefix "D:\Program Files\nodejs\node_global" npm config set cache"D:\Program Files\nodejs\node_cache" 12 如下图所示: 完成后可以在文件夹中看到相应名字的文件夹,如下: 2、在系统环境变量添加NODE_PATH,输入路径为: D:\Program Files\nodejs\node_global\node_modules 操作如下:我的电脑右击,打开属性->高级系统设置->环境变量->新建(系统变量下)->输入变量名NODE_PATH->变量值:输入上面路径,确定即可。 3、在命令行输入以下命令安装express(注:“-g”表示安装到global目录下,就是上面设置的node_global中)
npm install express -g 1 可以看到node_global/node_modules下有express了,如图: 4、在命令行输入node进入编辑模式,输入以下代码检测是否能正常加载模块:
require('express') 1 如果成功,如上图显示;如果出错,检测下上面配置的NODE_PATH是否配置或者配置正确。
三、安装cnpm 1、安装cnpm,输入以下命令:
npm install -g cnpm --registry=https://registry.npm.taobao.org 1 如下图: 2、输入cnpm -v ,检测是否正常,但是这里会报错。 3、添加系统变量path的内容 因为cnpm会被安装到D:\Program Files\nodejs\node_global下,而系统变量path并未包含该路径。在系统变量path下添加该路径即可正常使用cnpm。 如图,修改系统变量path: 然后再次输入cnpm -v ,结果如下: 参考文章: https://blog.
问题 Pytorch RuntimeError: “host_softmax” not implemented for ‘torch.cuda.LongTensor’
报错的位置在这个地方
loss=criterion(out,train_y) # train_y 应该是int64 原因 参考:https://stackoverflow.com/questions/51818225/pytorch-runtimeerror-host-softmax-not-implemented-for-torch-cuda-longtensor。
大致就是说,train_y应该是int64类型.
解决 在将train_y变为一个tensor的时候,设置数据类型为int64。
train_x=torch.tensor(train_x,dtype=torch.float32).cuda() train_y=torch.tensor(train_y,dtype=torch.int64).cuda() train_x = Variable(train_x) train_y = Variable(train_y)
贪心活动安排问题贪心的理论基础贪心选择性质最优子结构性质求结过程 背包问题 慕课贪心法的例子:活动选择问题贪心法正确性证明:活动选择 贪心 在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。
从贪心算法的定义可以看出,贪心算法不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解,而由问题自身的特性决定了该题运用贪心算法可以得到最优解。
如果一个问题可以同时用几种方法解决,贪心算法应该是最好的选择之一。
活动安排问题 活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。
该问题要求高效地安排一系列争用某一公共资源的活动。
贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。
设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。
每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si<fi。如果选择了活动i,则它在半开时间区间[si ,fi )内占用资源。若区间[si ,fi )与区间[sj,fj )不相交,则称活动i与活动j是相容的。当 si ≥ fj 或 sj ≥ fi 时,活动i与活动j相容。
活动安排问题就是在所给的活动集合中选出最大的相容活动子集合。
数据结构
struct action{ int s; //起始时间 int f; //结束时间 int index; //活动的编号 }; 活动的集合E记为数组:
action a[1000]; 按活动的结束时间升序排序
排序比较因子:
bool cmp(const action &a, const action &b) { if (a.f<=b.f) return true; return false; } 使用标准模板库函数排序(下标0未用):
sort(a, a+n+1, cmp); //形参数组b用来记录被选中的活动 void GreedySelector(int n, action a[], bool b[]) { b[1] = true; //第1个活动是必选的 //记录最近一次加入到集合b中的活动 int preEnd = 1; for(int i=2; i<=n; i++) if (a[i].
部署Aria2 系统要求:CentOS 7+/Debian 6+/Ubuntu 14.04+
一.使用脚本安装 wget -N --no-check-certificate
https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/aria2.sh
&& chmod +x aria2.sh && bash aria2.sh
#备用地址 wget -N --no-check-certificate https://www.moerats.com/usr/shell/Aria2/aria2.sh && chmod +x aria2.sh
&& bash aria2.sh
进入下载脚本的目录并运行脚本
二.运行 bash .aria2.sh
按照选项安装即可
三脚本命令 启动:service aria2 start
停止:service aria2 stop
重启:service aria2 restart
查看状态:service aria2 status
配置文件:/root/.aria2/aria2.conf(配置文件包含中文注释,但是一些系统可能不支持显示中文)
下载目录:/usr/local/caddy/www/aria2/Download(该目录为Github下载安装的,而备用地址下载的默认为/usr/local/caddy/www/file)
配置 到/root/.aria2目录下,编辑aria2.conf文件,配置RPC授权口令
部署前端页面AriaNG 一.下载ArinaNG https://github.com/mayswind/AriaNg/releases
到这里找一个版本,我选择
二.应用 将Aria2Ng解压放在你的网站目录下.
参考:https://sleele.com/2019/04/09/linux%E9%83%A8%E7%BD%B2%E6%9C%80%E6%96%B0%E7%89%88aria2ariang/
最近做毕设关于量化交易的, 因此一直使用tushare作数据源,但是过程中到一些问题,因此这里写篇文章,供大家一起交流下。
Tushare简介 Tushare是一个免费、开源的python财经数据接口包。拥有如股票、基金、期货等行情数据,公司财务、基金经理等基本面数据,以及债券、外汇、行业、大数据、区块链。Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,因此非常方便用于进行数据分析和可视化。目前现已升级到tushare pro版本
注册与安装 1、注册地址:https://tushare.pro/register?reg=361711
2、点击右上角注册之后登陆,并进入个人主页
3、点击接口TOKEN,即可获取到TOKEN码
安装:pip install tushare 或者升级 pip install tushare --upgrade
股票接口使用 import tushare as ts ts.set_token('your token here')#设置token,只需设置一次 api = ts.pro_api()#初始化接口 data = api.stock_basic(fields='ts_code,name,list_date')#获取股票基础信息数据,包括股票代码、名称、上市日期,行业、概念等 报错:
抱歉,您没有访问该接口的权限,权限的具体详情访问:https://tushare.pro/document/1?doc_id=108。 原因:
积分不够,因为tushare虽然是免费的,但是升级到pro之后,有些API接口只能当账户达到一定积分之后才可以使用,详细信息可以在https://tushare.pro/document/1?doc_id=108查到
获取积分方法 https://tushare.pro/document/1?doc_id=13
最近时间充裕在学习深度学习,用博客记录一下自己的理解,毕竟好记性不如烂笔头。如果有错误的地方,希望大家指正,一起进步。如果这篇博客对你有帮助,点赞支持一下,码字不易。。。。。
迁移学习是深度学习中常用的一个手段,从头开始训练一个模型需要耗费大量的资源,在训练好的权重(预训练)的基础上训练自己的模型是迁移学习的重要思想。Keras 的应用模块(keras.applications)提供了带有预训练权值的深度学习模型,这些模型可以用来进行预测、特征提取和微调(fine-tuning)。关于keras.applications的详细应用可以参考博客,详细介绍了keras.applications的用法和一些具体的例子。
Keras迁移学习(升级版)实现详解 1、迁移学习用于图像分类(基础版)2、迁移学习高级实现(升级版)2.1 迁移部分模型2.2 实现模型融合(多输入单输出,单输入单输出) 3、总结 1、迁移学习用于图像分类(基础版) 迁移学习通俗来讲就是把预训练权重当作模型的初始化权重,使得模型站在巨人的肩膀上训练。
我们通过一个例子来了解Keras中迁移学习用于图像分类的基础版实现,在预训练模型InceptionV3上微调训练出自己的模型。
首先来介绍一下调用keras.applications中InceptionV3模型时各参数的意义:
keras.applications.inception_v3.InceptionV3(include_top=False, weights='imagenet', input_tensor=None, input_shape=None, pooling=None, classes=1000) 各参数的意义:
include_top:是否保留顶层的全连接网络
weights:None代表随机初始化,即不加载预训练权重。'imagenet’代表加载预训练权重
input_tensor:可填入Keras tensor作为模型的图像输出tensor
input_shape:可选,仅当include_top=False有效,应为长为3的tuple,指明输入图片的shape,图片的宽高必须大于197,如(200,200,3)
pooling:当include_top=False时,该参数指定了池化方式。None代表不池化,最后一个卷积层的输出为4D张量。‘avg’代表全局平均池化,‘max’代表全局最大值池化。
classes:可选,图片分类的类别数,仅当include_top=True并且不加载预训练权重时可用。
返回值:Keras 模型对象
更多不同模型加载时的参数意义可参考Keras中文文档
迁移学习实现代码如下,在代码中详细介绍了每一步的实现
#首先导入相关的包,导入applications模块中的InceptionV3预训练模型 from keras.applications.inception_v3 import InceptionV3 from keras.preprocessing import image from keras.models import Model from keras.layers import Dense, GlobalAveragePooling2D from keras import backend as K # # 第二步:构建完整模型 #include_top这个参数可以控制的是,到底要不要最后的这些全连接层。构建不带分类器的预训练模型 base_model = InceptionV3(weights='imagenet', include_top=False) x = base_model.output x = GlobalAveragePooling2D()(x)# 添加全局平均池化层 x = Dense(1024, activation='relu')(x)# 添加一个全连接层 predictions = Dense(200, activation='softmax')(x)# 自定义自己的分类器,这是一个200分类的分类器 model = Model(inputs=base_model.
servlet 404 第一种:servlet 编译生成class位置不对解决方案 第二种调用servlet的URl配置错误解决方案 $`{pageContext.request.contextPath}`是什么WebServlet参数 大家好,我是EverdayForCode。你,今天学习了吗!
写在前面:tomcat从7.0版本开始就支持Servlet3.0,在Eclipse中不再需要web.xml配置servlet,而通过注解的方式找寻servlet。本环境安装tomcat v8.5
采用注解方式配置servlet。
第一种:servlet 编译生成class位置不对 解决方案 项目上右键–>Build path --> Configure Build Path–>Source 目录必须是"项目名/WebContent/WEB-INF/classes
假如没有classes,先在WebContent/WEB-INF目录下建立classes文件再更改
还有,最重要一点的就是必须要确保菜单栏Project选项卡里buid automatically被选中,否则不会自动生成class文件
第二种调用servlet的URl配置错误 当jsp页面不在webcontent根目录下面,而是在webcontent其他目录下面时
例如:
如果在jsp中调用servlet的url直接写为
则会出现404错误
解决方案 url 变为 “${pageContext.request.contextPath}/url-pattern”
action="${pageContext.request.contextPath}/uploadimg" 当这里404报错就解决了
如何新建servlet自动配置xml可参考:
解决在Eclipse新建web项目没有自动生成web.xml和在新建servlet的时候自动生成web.xml配置
${pageContext.request.contextPath}是什么 ${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> 。
也就是取出部署的应用程序名或者是当前的项目名称。
WebServlet参数 属性名类型作用nameString指定Servlet 的 name 属性,等价于 <servlet-name>。如果没有显式指定,则该 Servlet 的取值即为类的全限定名。valueString[]该属性等价于 urlPatterns 属性。两个属性不能同时使用。urlPatternsString[]指定一组 Servlet 的 URL 匹配模式。等价于<url-pattern>标签。loadOnStartupint指定 Servlet 的加载顺序,等价于 <load-on-startup>标签。initParamsWebInitParam[]指定一组 Servlet 初始化参数,等价于标签。asyncSupportedboolean声明 Servlet 是否支持异步操作模式,等价于<async-supported> 标签。descriptionString该 Servlet 的描述信息,等价于 <description>标签。displayNameString该 Servlet 的显示名,通常配合工具使用,等价于 <display-name>标签。 WebServlet参数参考:
背景:
在本机创建了django项目,并用过git进行初始化管理;
gitlab中创建了仓库;
在把本机的代码push到 gitlab是报错:
error: cannot spawn ssh: No such file or directory fatal: unable to fork 原因:
没找到
解决:
既然命令push不了,就是用借助pycharm中的工具push
1、拷贝地址
2、添加远程地址
3、输入远程地址
4、输入码云的账号和密码
5、选择菜单中的 VCS -> Git -> Push
一、思路: 字符串逆序,然后遍历两个逆序后的字符串,然后对应的字符相乘,i+j等于它的位数。
string multiply(string num1, string num2) { reverseStr(num1); reverseStr(num2); string res; int carry = 0; for (int i = 0; i < num1.size(); i++) { carry = 0; for (int j = 0; j < num2.size(); j++) { int temp = (num1[i] - '0')*(num2[j] - '0') + carry; if (i + j >= res.size()) { res.push_back(temp % 10 + '0'); carry = temp / 10; } else { int temp1 = res[i + j] + temp - '0'; res[i + j] = temp1 % 10 + '0'; carry = temp1 / 10; } if (carry !