滑动窗口法:
滑动窗口法:
|
|
使用队列逐层遍历,存到res,不过这道题是反向存储,所以每层得到的List就存入res的起始位置,这样就倒序了
这里有两种集合可以实现插入起始位置:
若使用ArrayList,使用add(index,ArrayList)方法
若使用LinkedList,使用addFirst(ArrayList)方法
PS:
这里遇到的一个问题就是返回值是List<List<Integer>>
这样的集合嵌套形式,参见我的另一篇Java集合嵌套
的笔记。
|
|
遇到这样返回值
由于List是接口,不可直接实例化,也就是直接使用List<List<Integer>> list = new List<List<Integer>>();
是错的
但如果使用List<List<Integer>> list = new LinkedList<LinkedList<Integer>>();
又会报错(cannot convert from LinkedList>)
正确的做法是修改成:List<LinkedList<Integer>> list = new LinkedList<LinkedList<Integer>>();
或List<List<Integer>> list = new LinkedList<List<Integer>>();
这样才可以,也就是说,泛型的类型参数必须相同。
下面这种处理
ArrayList<ArrayList<String>> list= new ArrayList<ArrayList<String>>();
或LinkedList<LinkedList<String>> list = new LinkedList<LinkedList<String>>();
也是可以的,这样就没有用接口类引用实现类了。
传参方式分析:
使用docker镜像:
puckel/docker-airflow
下载镜像:
启动:
进入docker:
接下来以分析tutorial为例:
分析run按钮:
点击的script代码如下:
这个函数首先组装一个url地址,然后window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。
组装格式如下:
可以通过在web调试窗设断点来找出最终组合的字符串如下形式:
这里我们就找到了airflow前端到后台调用的方式(通过url传参),接下来需要找出如何通过url传参到后台响应:
url传参分析:
先贴最终结果,airflow使用的是python的flask框架,定义的文件在如下路径的python文件里,从下图中我们可以看到暴露了/run路径,同样的还有success也是以这种方式暴露的
至于如何找到用什么框架方法,是先通过组装好的url的特征字符串比如“run”,然后使用grep命令进行文件内容查找,锁定到views.py文件,然后查看import的
库找到所使用的框架,之后我们就可以通过学习框架继续深入研究airflow啦!这是我目前使用的分析逻辑,虽然笨了点,希望对大家能有所帮助,以此抛砖引玉,以后学习
更深入了了解的框架更多了,应该能根据经验判断出套用的框架或者调用方式,希望大家有更好的方法能与笔者交流~
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
查看规则:
-R参数修改规则:
区块链是一种转型技术,有潜力将数字化转型扩展到公司four walls之外,并进入与供应商,客户和合作伙伴共享的过程。越来越多的企业正在投资区块链,作为一种安全透明的方式,以数字方式跟踪跨越信任边界的资产所有权,并就共享业务流程进行写作,为跨组织协作和富有想象力的新业务模式开创新机遇。
微软致力于为企业提供区块链,并与客户,合作伙伴和区块链社区合作,继续推进企业就绪。我们的使命是通过提供开放,可扩展的平台和服务,帮助企业在这个安全的多方计算的新时代蓬勃发展,任何公司从分类账初创企业到零售商到健康提供商到全球银行都可以用它来改善共享业务流程。
随着企业利用区块链技术来满足其业务需求,他们已经意识到许多现有的区块链协议不能满足关键的企业需求,如性能,机密性,治理和所需的处理能力。这是因为现有的系统被设计来在公开场景最大透明地以匿名,不可信任的角色来实现功能并达成共识。正因为如此,交易被明确地张贴出来供所有人来看,网络中的每个节点都执行每一个交易,并且必须采用计算密集型的共识算法。这些安全措施,虽然是确保公共区块链网络完整所必须的,但会根据重要的企业需求(如可扩展性和机密性)方面进行权衡。
为了适应现有的公共区块链协议或者为了满足这些需求创建新的协议,通常将一个required企业属性交换为另一个,例如以更高的复杂度或更低的性能为代价改进机密性。
促进企业区块链采用
今天我很高兴介绍Coco框架,一个开源系统,能够满足所有关键企业需求的高规模,机密的区块链网络,为加快生产企业采用区块链技术提供了一种手段。
Coco通过专门为保密联盟设计来实现这一点,在这些联盟中,节点和角色被明确声明和控制。基于这些需求,Coco 提出一种可替代的方法来构建分类账(ledger),为企业提供所需的可扩展性,分布式治理和增强的机密性,同时又不牺牲固有的安全性和不变性。
利用现有的区块链协议,可靠执行环节(TEEs)例如Intel SGX and Windows Virtual Secure Mode (VSM),分布式系统和加密技术,Coco可实现企业就绪区块链网络:
通过提高这些功能,Coco提供了一个现有的区块链协议可以集成到一起的可信任的基础,来提供完整的企业级分类账(ledger)解决方案,为各行业开放广阔的,高规模的应用场景,进一步提升区块链的数字化转型业务的能力。
我们已经开始探索Coco在各行业的潜力,包括零售,供应链和金融服务。
“在Coco框架内运行我们现在的供应链Dapp代码能够更快,这是一个巨大的性能改进,当我们和零售客户谈论企业区块链就绪时,这将减少很多摩擦。在不牺牲这种改进的情况下增加数据的机密性支持,能够引导我们用智能供应链设想的数字化转型。”
- Tom Racette, Vice President, Global Retail Business Development, Mojix
无论客户是设计一个端到端的贸易金融解决方案,利用区块链来确保边缘安全,还是利用企业智能合约来提高办公效率,Coco都能够满足他们的企业需求。微软是唯一一个提供跨 本地和公有云一致性的云服务商,同时为广大的应用程序提供访问丰富的Azure生态系统,这些应用将被构建在区块链之上作为共享的数据层。
一个open approach
按照设计,Coco是开放的,并且兼容任何区块链协议。微软已经开始将Ethereum整合到Coco中,我们很高兴地宣布J.P. Morgan Chase, Intel and R3已经分别致力于整合enterprise ledgers, Quorum, Hyperledger Sawtooth and Corda。这仅仅是一个开始,我们期待在不久的将来与其他ledgers探索整合机会。
“微软的Coco框架代表了实现高度可扩展的,机密的,以太坊或其他区块链网络的突破,这些区块链网络将成为新兴世界多种互联区块链系统的重要组成部分”。
- Joseph Lubin, Founder of ConsenSys
我相信Coco只能从当今推动区块链创新的多元化和有才华的开源社区中受益。虽然Coco最初是Azure和微软研究院之间的合作,但已经从数十位客户和合作伙伴的投入中受益。开放Coco是一种扩展开发的方式,远超出我们最初工作组的范围和想象,我们的目的是在2018年初向社区贡献代码。
Coco将通过设计和任何ledger协议兼容,并且可以在任何支持兼容TEE的云协议,操作系统和管理程序上运行。我们正在建立这种灵活性,让社区能够将Coco和其他协议集成在一起,在其他硬件上尝试,并将其应用在我们还没想到的企业场景中。
行业对区块链的热情正在增长,虽然区块链还需要时间来实现企业保障,但我们仍然将激光聚焦于与社区合作来加速其发展和企业采用。
要了解有关Coco的更多信息,您可以阅读我们的技术白皮书,并在MSCloud Youtube页面上观看我的demo,请务必在GitHub上star and follow the project,以跟上工作组的进展并接收有关最新进展的通知!
比较:
1、 http://blog.csdn.net/zhang_zp2014/article/details/46822263
2、搬瓦工与vultr及linode三家VPS服务商
http://www.bawagon.com/bandwagonvultrlinode/
首先价格上搬瓦工实惠,搬瓦工是Openvz系统的VPS,而Vultr及Linode都是KVM系统,性能上比搬瓦工要更好,可操作性更好。因此追求性能的选择Vultr及Linode ,追求价格的可以选择搬瓦工VPS。
Xen、OpenVZ、KVM三大VPS技术优劣势详解
基于KVM系统好,能保证内存
http://vps.zzidc.com/vpsjishu/452.html
VPS服务器全面性能测试:
https://www.freehao123.com/vps-cpu-io-unixbench/
VPS主机的CPU详细参数:
$ cat /proc/cpuinfo
查看内存信息:
cat /proc/meminfo
测试硬盘读写速度:
sudo dd if=/dev/zero of=test bs=1M count=1024
172.104.111.103
172.104.111.103
ssserver -p 8383 -k 201702 -m rc4-md5 -d start
修改配置原理:
/etc/nginx/nginx.conf配置文件里的 http 配置区块里,用了一个 include 指令,把所有的在 /etc/nginx/conf.d 这个目录下面的 .conf 文件包含到了这里。
include /etc/nginx/conf.d/*.conf;
我们如果想去添加自己的配置,可以在/etc/nginx/conf.d 这个目录下新建一个以 .conf 结尾的文件,重新加载 nginx 以后,这些配置就会生效了。
修改/etc/nginx/conf.d下default.conf配置文件
保存之后,sudo nginx -t测试配置文件语法是否正确,返回:
然后service nginx reload重新加载nginx
配置好default.conf文件后,打开网址,显示403forbidden,是由于权限问题,修改nginx.conf文件下第一行为user root;即可
<b>加粗
<p>段落
表单数据可以作为 URL 变量(method=”get”)或者 HTTP post (method=”post”)的方式来发送。
浏览器使用 method 属性设置的方法将表单中的数据传送给服务器进行处理。共有两种方法:POST 方法和 GET 方法。
如果采用 POST 方法,浏览器将会按照下面两步来发送数据。首先,浏览器将与 action 属性中指定的表单处理服务器建立联系,一旦建立连接之后,浏览器就会按分段传输的方法将数据发送给服务器。
在服务器端,一旦 POST 样式的应用程序开始执行时,就应该从一个标志位置读取参数,而一旦读到参数,在应用程序能够使用这些表单值以前,必须对这些参数进行解码。用户特定的服务器会明确指定应用程序应该如何接受这些参数。
另一种情况是采用 GET 方法,这时浏览器会与表单处理服务器建立连接,然后直接在一个传输步骤中发送所有的表单数据:浏览器会将数据直接附在表单的 action URL 之后。这两者之间用问号进行分隔。
函数 | 描述 |
---|---|
JSON.parse() | 将JSON字符串转为js对象 |
JSON.stringify() | 将js值转为JSON字符串 |
代码规范:
代码一行太长,建议在 运算符 或 逗号后换行
变量声明时如果不使用var
关键字,即使在函数内定义,也是全局变量。
语法格式:
selector {declaration;declaration;}
declaration格式
属性:[attribute=value] (注意:中间不要留有空格)
Id选择器: 以#
来定义
class选择器:以.
来定义
三种颜色定义方式:
tag:
缺失模块。
1、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
2、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: true raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true