6015+1560两位数相乘的简便方法法

&p&本文来自&a href=&https://link.zhihu.com/?target=https%3A//sq.163yun.com/blog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&网易云社区&/a&。&/p&&p&&br&&/p&&p&SSL/TLS是一个密码学协议,它的目标并不仅仅是网页内容的加密传输。SSL/TLS的主要目标有四个:加密安全、互操作性、可扩展性和效率。对于安全性的保障,它还会从多个方面进行,包括机密性,真实性以及完整性。机密性是指,传输的内容不被除通信的双方外的第三方获取;真实性是指,通信的对端正是期待的对端,而不是其它第三方冒充的;完整性则是指,传输的数据是完整的,数据没有被篡改或丢失。为了平衡多种需求,SSL/TLS被设计为一个安全框架,其中可以应用多种不同的安全方案,每种方案都由多个复杂的密码学过程组成。不同的安全方案,在安全性和效率之间有着不同的取舍,并由不同的密码学过程组成。&/p&&p&&br&&/p&&p&在密码学上,非对称加密具有更高的安全性,同时计算复杂度更高,性能更差;而对称加密,则效率比较高,计算复杂度较低,但如果在通信过程中明文传输密钥,或将密钥以hard code的形式写在代码里,则安全隐患比较大。&/p&&p&&br&&/p&&p&从密码学过程的特性出发,整体来看,SSL/TLS连接是在会话协商阶段,通过 &b&非对称加密&/b& 算法,如RSA、ECDHE等,完成身份验证,及后续用到的对称加密密钥的交换;在整个数据传输阶段,通过对称加密算法,如AES、3DES等,对传输的数据进行加密;通过数据散列算法,如SHA1、SHA256等,计算数据的散列值并随应用数据一起发送,以保证数据的完整性。&/p&&p&&br&&/p&&p&本文主要描述非对称加密的基本思想,及TLS的证书身份认证。&/p&&p&&br&&/p&&p&&b&非对称加密&/b&&/p&&p&非对称加密 (asymmetric encryption) 又称为公钥加密 (public key cryptography),是使用两个密钥,而不像对称加密那样使用一个密钥的加密方法;其中一个密钥是私密的,另一个是公开的。顾名思义,一个密钥用于非公开的私人的,另一个密钥将会被所有人共享。&/p&&p&&br&&/p&&p&非对称加密的两个密钥之间存在一些特殊的数学关系,使得密钥具备一些有用的特性。如果利用某人的公钥加密数据,那么只有他们对应的私钥能够解密。从另一方面讲,如果某人用私钥加密数据,任何人都可以利用对应的公钥解开消息。 后面这种操作不提供机密性,但可以用作数字签名。&/p&&p&&br&&/p&&p&&b&非对称加密保护数据安全&/b&&/p&&p&盗用阮一峰老师的几幅图来说明,通过非对称加密保护数据安全的过程。&/p&&ul&&li&鲍勃有两把钥匙,一把是公钥,另一把是私钥。&/li&&/ul&&figure&&img src=&https://pic1.zhimg.com/v2-0a3c859e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&550& data-rawheight=&311& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic1.zhimg.com/v2-0a3c859e_r.jpg&&&/figure&&ul&&li&鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。&/li&&/ul&&figure&&img src=&https://pic3.zhimg.com/v2-adae32dd7d25f392f28afdad12bfaac2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&277& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-adae32dd7d25f392f28afdad12bfaac2_r.jpg&&&/figure&&ul&&li&苏珊要给鲍勃写一封不希望别人看到的保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。&/li&&/ul&&figure&&img src=&https://pic4.zhimg.com/v2-59d13a2824992cfaf52c031df9e50294_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&247& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/v2-59d13a2824992cfaf52c031df9e50294_r.jpg&&&/figure&&ul&&li&鲍勃收到信后,用私钥解密,就可以看到信件内容。&/li&&/ul&&figure&&img src=&https://pic2.zhimg.com/v2-510cd3bc6a704999efd8272d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&276& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/v2-510cd3bc6a704999efd8272d_r.jpg&&&/figure&&p&&br&对于非对称加密,&b&只要私钥不泄露&/b&,传输的数据就是安全的。即使数据被别人获取,也无法解密。&/p&&p&&br&&/p&&p&非对称加密的这些特性直击对称加密中只用一个密钥,而该密钥不方便传输、保存的痛点。它大大方便了大规模团体的安全通信,方便了安全通信在互联网中的应用。&br&非对称加密生成数字签名&/p&&p&&br&&/p&&p&数据的加密安全只是数据安全的一个方面,数据的真实性同样非常重要。经常可以看到这样的案例,骗子在同学参加四、六级考试的时候,给同学的家长打电话或发短信,声称自己是学校的辅导员,并表示同学病重急需用钱,要求家长汇钱,同学家长汇钱给骗子而遭受巨大损失的情况。这就是数据/信息真实性没有得到足够验证而产生的问题。&/p&&p&&br&&/p&&p&再比如,一个仿冒的taobao网站,域名与真实的网站非常相似。我们一不小心输错了域名,或域名被劫持而访问了这个仿冒的网站,然后像平常在taobao购物一样,选择宝贝,并付款,但最后却怎么也收不到货物。&/p&&p&现实世界中,常常会请消息的发送者在消息后面签上自己的名字,或者印章来证明消息的真实可靠性,如信件中的签名,合同中的印章等等。类似地,在虚拟的网络世界中,也会通过数字签名来确认数据的真实可靠性。数字签名依赖的主要算法也是非对称加密,生成数字签名主要是使用私钥加密 &b&数据的散列摘要&/b& 来签名。&/p&&p&&br&&/p&&p&通过几幅图来说明这个过程。&/p&&ul&&li&鲍勃给苏珊回信,决定采用&数字签名&来证明自己的身份,表示自己对信件的内容负责。他写完后先用散列函数,生成信件的摘要(digest)。
&/li&&/ul&&figure&&img src=&https://pic1.zhimg.com/v2-acb5c6b47c7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&550& data-rawheight=&291& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic1.zhimg.com/v2-acb5c6b47c7_r.jpg&&&/figure&&ul&&li&然后,鲍勃使用自己的私钥,对这个摘要加密,生成&数字签名&(signature)。&/li&&/ul&&figure&&img src=&https://pic3.zhimg.com/v2-49a3f2257dafcca595593d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&550& data-rawheight=&245& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic3.zhimg.com/v2-49a3f2257dafcca595593d_r.jpg&&&/figure&&ul&&li&鲍勃将这个签名,附在信件下面,一起发给苏珊。&/li&&/ul&&figure&&img src=&https://pic3.zhimg.com/v2-94fb9e16abf561e90904_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&550& data-rawheight=&304& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic3.zhimg.com/v2-94fb9e16abf561e90904_r.jpg&&&/figure&&ul&&li&苏珊收到信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。&/li&&/ul&&figure&&img src=&https://pic4.zhimg.com/v2-46ff6a8fde2c1e541c15a7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&550& data-rawheight=&170& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic4.zhimg.com/v2-46ff6a8fde2c1e541c15a7_r.jpg&&&/figure&&ul&&li&苏珊再对信件本身应用散列函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,则证明这封信确实是鲍勃发出的,信件完整且未被篡改过。
&/li&&/ul&&figure&&img src=&https://pic2.zhimg.com/v2-6c3a2c0fce55e59dad0c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&550& data-rawheight=&296& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic2.zhimg.com/v2-6c3a2c0fce55e59dad0c_r.jpg&&&/figure&&p&&br&&/p&&p&如果鲍勃向苏珊借了钱,并用上面这样的过程写信给苏珊确认自己收到了钱,那么鲍勃就再也不能抵赖了——信件的末尾可是清清楚楚地签着鲍勃的大名呢。&/p&&p&&br&&/p&&p&如果我们的网络世界能像上图的过程那样,每个人都可以方便地获得可靠的公钥,那就太美好了。互联网上的网站成千上万,每个人都走到自己要访问的网站站长的办公室把网站的公钥拷走,或者网站站长挨个走到自己的目标用户家门口,把自己网站的公钥交给用户,那可就太麻烦,代价太大了。&/p&&p&&br&&/p&&p&公钥通常都是通过网络传输的。不怀好意的人,会试图干扰这个传输过程,将自己伪造的公钥发送给用户,进而破坏后续整个数据传输的安全性。如果用户拿到的是伪造的公钥,那签名也就形同虚设。&/p&&p&&br&&/p&&p&如道格想欺骗苏珊,他在鲍勃将公钥交给苏珊时拦住鲍勃,表示要替鲍勃转交。正好鲍勃有老板交待的其它重要事情要完成,于是就把自己的公钥交给道格请他帮忙转交。但道格把鲍勃的公钥丢进垃圾桶,而把自己的公钥交给了苏珊。此时,苏珊实际拥有的是道格的公钥,但还以为这是鲍勃的。因此,道格就可以冒充鲍勃,用自己的私钥做成&数字签名&,写信给苏珊,让苏珊用假的鲍勃公钥进行解密。&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-cd1bba90b36_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&550& data-rawheight=&272& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic4.zhimg.com/v2-cd1bba90b36_r.jpg&&&/figure&&p&&br&&b&证书&/b&&/p&&p&证书正是为了解决公钥的信任问题而引入。证书体系通过引入可信的第三机构,称为 &b&证书签发机构(certificate authority,简称CA)&/b&,为公钥做认证,来确保公钥的真实可靠。证书是经过了 &b&CA&/b& 私钥签名的 &b&证书持有者的公钥、身份信息及其它相关信息&/b& 的文件,用户通过 &b&CA&/b& 的公钥解密获取证书中包含的 &b&证书持有者&/b& 的公钥。只要 &b&CA&/b& 的私钥保持机密,通过证书验证 &b&证书持有者&/b& 的身份,及获取公钥的过程就可靠。&/p&&p&&br&&/p&&p&&b&证书的工作过程&/b&&/p&&p&互联网PKI证书体系的结构如下图:&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-202bfa50b2d11dce0fdc738a51bd1b0d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&490& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic4.zhimg.com/v2-202bfa50b2d11dce0fdc738a51bd1b0d_r.jpg&&&/figure&&p&&br&&br&&br&&br&&b&证书订阅人&/b& ,也就是需要提供安全服务的人,向 &b&证书中心 (CA)&/b& 的代理—— &b&登记机构&/b& 提交自己的公钥来申请证书。 &b&登记机构&/b& 对 &b&证书订阅人&/b& 的身份进行核实,然后向 &b&证书中心 (CA)&/b& 提交 &b&证书订阅人&/b& 的公钥及身份信息。 &b&证书中心 (CA)&/b& 用自己的私钥,对 &b&证书订阅人&/b& 的公钥、身份信息和其它一些相关信息进行加密,生成 &b&&数字证书&(Digital Certificate)&/b& ,并发送给 &b&登记机构&/b&。 &b&登记机构&/b& 将证书发送给 &b&证书订阅人&/b& 。 &b&证书订阅人&/b& 将证书部署在Web服务器上。 &b&信赖方&/b&,即安全服务的用户,维护 &b&CA&/b& 根证书库,并在与Web服务器通信时,从服务器获得证书。 &b&信赖方&/b& 用CA根证书验证接收到的证书的有效性,进而验证服务器的真实性。&/p&&p&&br&&/p&&p&同样通过几幅图来说明这个过程。&/p&&ul&&li&鲍勃去找证书签发机构,为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥、身份信息和一些其它相关信息一起加密,生成&数字证书&(Digital Certificate)。&/li&&/ul&&figure&&img src=&https://pic2.zhimg.com/v2-cd1de2b6e101_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&650& data-rawheight=&427& class=&origin_image zh-lightbox-thumb& width=&650& data-original=&https://pic2.zhimg.com/v2-cd1de2b6e101_r.jpg&&&/figure&&ul&&li&鲍勃拿到数字证书以后,就可以放心,以后再也没人能冒充自己了。再需要发送自己的公钥给朋友们时,只要把自己事先拿到的 &b&数字证书&/b& 发送给朋友就可以了。需要写信给苏珊时,照常附上自己的数字签名即可。&/li&&/ul&&figure&&img src=&https://pic4.zhimg.com/v2-f29192a8bcceb8fc4934_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&549& data-rawheight=&430& class=&origin_image zh-lightbox-thumb& width=&549& data-original=&https://pic4.zhimg.com/v2-f29192a8bcceb8fc4934_r.jpg&&&/figure&&ul&&li&苏珊收到信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥,然后就能证明&数字签名&是否真的是鲍勃签的。&/li&&/ul&&figure&&img src=&https://pic2.zhimg.com/v2-0bc0ebafe99c7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&550& data-rawheight=&356& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic2.zhimg.com/v2-0bc0ebafe99c7_r.jpg&&&/figure&&p&&br&&/p&&p&&b&证书里有什么&/b&&/p&&p&PKI证书是 &b&抽象语法表示一 (Abstract syntax notation one, ASN.1)&/b& 表示, &b&基本编码规则 (base encoding rules, BER)&/b& 的一个子集 &b&唯一编码规则 (distinguished encoding rules, DER)&/b& 编码的二进制文件。我们通常看到的证书则是DER使用Base64编码后的ASCII编码格式,即 &b&PEM (Privacy-enhanced mail)&/b& 这种更容易发送、复制和粘贴的编码格式的纯文本文件。&/p&&p&&br&&/p&&p&证书里到底都有些什么呢?这里我们通过一个实际的证书来看一下。我们可以通过&code&openssl&/code&解码数字证书,获得证书的可读形式:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$ openssl x509 -in chained.pem -text -noout
Certificate:
Version: 3 (0x2)
Serial Number:
03:5c:25:82:1d:c2:b2:2f:6f:73:39:48:9c:68:07:1b:48:2d
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3
Not Before: Oct 25 01:12:00 2016 GMT
Not After : Jan 23 01:12:00 2017 GMT
Subject: CN=www.wolfcstech.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (4096 bit)
00:c3:92:70:78:ff:00:0a:22:c7:14:0b:3d:b3:26:
34:cb:37:63:26:1d:d6:42:7b:5c:ab:51:cc:f7:12:
57:26:b1:d1:4f:5f:a7:02:5b:3c:f3:e6:e1:ec:7c:
66:61:ba:d8:5e:d6:61:60:48:d6:d3:4c:23:9a:50:
75:4b:2d:1b:89:7d:7b:55:2f:12:63:b4:ac:c7:b5:
d1:44:95:ed:a2:f4:9d:ee:77:3c:2b:06:48:d9:18:
21:d1:ee:cf:5c:26:ad:c2:11:28:9c:27:65:11:94:
c4:1d:0f:5e:4c:4f:00:71:cf:5d:1f:40:4b:9a:5e:
3b:b0:42:45:c5:68:01:62:29:c2:92:b5:ad:8d:13:
11:db:7e:02:65:14:6a:5d:4b:66:16:08:d4:ab:90:
dc:06:28:27:cd:84:c0:b7:30:22:ff:54:71:c2:3b:
8d:7d:8b:52:c3:a8:f1:ee:63:42:2a:dd:4d:a7:70:
66:c5:c3:54:d5:8e:a1:e2:02:d0:8b:2f:f6:44:1d:
f5:f2:85:fd:49:c7:e0:d7:d0:ae:21:b7:25:ae:7c:
15:dc:56:51:45:f1:e7:19:d6:1c:95:2c:65:f7:34:
2c:67:1c:93:00:81:a7:e2:23:da:1a:3c:d1:9f:84:
5e:01:3f:71:e7:9c:cd:e0:4f:fc:db:a6:2f:33:3a:
3d:ce:6d:52:72:47:0b:08:9c:04:1f:4a:cd:cd:71:
db:c2:3f:0d:9c:b4:24:ca:25:06:49:2b:40:a7:96:
b6:60:b7:8d:c7:b0:b4:84:96:06:63:3b:d9:0c:25:
8d:af:ad:90:ce:b8:d5:c6:e6:28:28:bd:4b:72:92:
28:1a:0a:b7:15:3c:28:26:15:ab:fc:88:22:74:50:
77:cc:3d:a3:c8:be:83:14:3d:ca:0e:79:aa:71:66:
56:b8:6f:fe:2a:2d:36:ff:0c:af:b9:61:5c:5b:5f:
a4:cc:0a:5b:13:31:c9:16:3f:51:9c:19:56:dd:06:
1d:c9:6f:f6:17:61:61:7b:4c:cb:aa:b9:92:52:25:
9b:8f:02:2d:51:39:5f:f0:89:e2:e8:25:6f:04:2a:
d3:6f:a3:3e:a7:44:a8:a1:db:01:55:ad:1d:3f:72:
3a:9a:b7:0f:35:a3:de:d2:93:d7:7c:d6:12:66:b2:
f9:da:c4:e3:e6:52:6f:55:07:5c:a2:57:0d:7a:ca:
20:5a:59:1b:78:ba:cf:e2:1d:b3:33:0a:53:2e:26:
9f:39:2f:ec:48:8b:9f:a0:b9:e8:e6:61:9b:89:34:
59:02:07:bb:b4:c4:8d:1d:24:72:ea:1e:7c:5f:a9:
a3:96:15:e9:4d:7e:4c:94:eb:cb:af:d2:70:83:78:
Exponent: 601)
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
X509v3 Basic Constraints: critical
X509v3 Subject Key Identifier:
B8:27:0E:D4:47:BB:27:66:51:3B:E7:F9:8B:9C:48:2E:3D:FD:C8:97
X509v3 Authority Key Identifier:
keyid:A8:4A:6A:63:04:7D:DD:BA:E6:D1:39:B7:A6:45:65:EF:F3:A8:EC:A1
Authority Information Access:
OCSP - URI:http://ocsp.int-x3.letsencrypt.org/
CA Issuers - URI:http://cert.int-x3.letsencrypt.org/
X509v3 Subject Alternative Name:
DNS:wolfcstech.cn, DNS:wolfcstech.com, DNS:www.wolfcstech.cn, DNS:www.wolfcstech.com
X509v3 Certificate Policies:
Policy: 2.23.140.1.2.1
Policy: 1.3.6.1.4.1..1
CPS: http://cps.letsencrypt.org
User Notice:
Explicit Text: This Certificate may only be relied upon by Relying Parties and only in accordance with the Certificate Policy found at https://letsencrypt.org/repository/
Signature Algorithm: sha256WithRSAEncryption
46:a1:fb:1c:fe:6e:ef:af:fc:84:e3:7e:20:1d:c8:0c:0b:e4:
d2:4b:9e:f6:bc:e5:31:59:08:bb:7e:0d:74:3f:e6:de:39:58:
e2:f4:fa:bf:5c:26:86:96:19:8f:00:13:17:2b:4f:95:c4:bd:
02:ad:cd:a6:e5:80:21:f5:ee:e6:4d:01:86:07:82:37:5e:39:
c9:55:40:ed:08:2e:8d:94:b8:86:2f:15:76:10:bd:97:46:06:
b3:34:80:12:f4:dc:2a:2a:63:80:36:fe:ef:e1:9e:b6:dc:22:
51:c7:54:46:1a:b2:c5:e8:62:98:90:46:ea:92:8c:fd:d4:dd:
00:4f:fb:1e:25:24:93:c1:74:15:07:6f:67:d3:be:5b:47:7e:
18:56:02:01:55:09:fc:bf:7f:ff:27:fc:db:d8:53:55:02:43:
2e:a0:23:28:01:4d:4d:f9:bc:02:bc:fe:50:c2:67:d7:d4:48:
23:c2:0b:25:d4:65:e1:8f:3c:75:12:b6:87:b1:17:86:c8:1a:
26:72:0e:ba:07:92:c4:87:3e:e1:fc:e3:58:ef:a2:23:43:09:
85:c4:82:00:04:07:49:06:10:bc:fd:20:67:0f:63:f8:ff:bf:
7f:6f:da:72:77:51:1d:50:34:07:63:e8:68:e3:ef:70:5f:71:
b4:11:9e:27
&/code&&/pre&&/div&&p&&br&&br&可以看到主要包含证书格式的版本号;证书的唯一的序列号;签名算法;颁发者的信息;证书的有效期;证书的使用者的信息、身份信息,在这里主要是几个域名;证书使用者的公钥等等。&/p&&p&&br&&/p&&p&&b&Let's Encrypt证书申请&/b&&/p&&p&&br&&/p&&p&我们通过一个 &b&Let's Encrypt&/b& 证书申请过程对证书做更多了解。 &u&&a href=&https://link.zhihu.com/?target=https%3A//letsencrypt.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Let's Encrypt&/a&&/u& 是一个免费、自动化、开放的证书签发机构,目前它已得到了Mozilla,Chrome等的支持,发展十分迅猛。&/p&&p&&br&&/p&&p&&b&证书申请&/b&&/p&&p&&br&&/p&&p&Let’s Encrypt 使用ACME协议验证申请人对域名的控制并签发证书。要获取Let’s Encrypt 证书,需使用ACME客户端进行。Let’s Encrypt &u&&a href=&https://link.zhihu.com/?target=https%3A//letsencrypt.org/getting-started/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&官方推荐&/a&&/u& 使用Certbot这个功能强大,灵活方便的工具,不过也可以使用&u&&a href=&https://link.zhihu.com/?target=https%3A//letsencrypt.org/docs/client-options/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&其它的ACME客户端&/a&&/u&。&/p&&p&&br&&/p&&p&这里我们通过Certbot申请Let’s Encrypt证书。&/p&&p&&br&&/p&&p&&b&Certbot安装&/b&&/p&&p&&br&&/p&&p&对于在Ubuntu 14.04平台上部署nginx提供Web服务的情况,应该使用 &b&certbot-auto&/b& 来安装:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$ wget https://dl.eff.org/certbot-auto$
chmod a+x certbot-auto
&/code&&/pre&&/div&&p&&br&&b&certbot-auto&/b& 接收与 &b&certbot&/b& 完全相同的标记;不带参数执行这个命令时,会自动安装依赖的所有东西,并更新工具本身。执行如下命令:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$ ./certbot-auto
&/code&&/pre&&/div&&p&&br&相关阅读:&u&&a href=&https://link.zhihu.com/?target=https%3A//sq.163yun.com/blog/article/387712& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&非对称加密与证书(下篇)&/a&&/u&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&网易云&u&&b&&a href=&https://link.zhihu.com/?target=https%3A//www.163yun.com/product/ssl%3Ftag%3DM_zhihu__zl& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SSL证书&/a&&/b&&/u&服务提供云上证书一站式生命周期管理,与全球顶级的数字证书授权机构(CA,Certificate Authority)和代理商合作,为你的网站与移动应用实现 HTTPS 加密部署。&b&&a href=&https://link.zhihu.com/?target=https%3A//www.163yun.com/product/ssl%3Ftag%3DM_zhihu__zl& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击可免费试用&/a&&/b&&/p&&p&&br&&/p&&p&本文来自网易云社区,经作者韩鹏飞授权发布。
&/p&&p&了解 网易云 :&/p&&p&网易云官网:&a href=&https://link.zhihu.com/?target=https%3A//www.163yun.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&https://www.163yun.com&/a&&/p&&p&网易云社区:&a href=&https://link.zhihu.com/?target=https%3A//sq.163yun.com/blog& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&sq.163yun.com/blog&/span&&span class=&invisible&&&/span&&/a&&/p&&p&网易云新用户大礼包:&u&&a href=&https://link.zhihu.com/?target=https%3A//www.163yun.com/gift%3Ftag%3DM_zhihu__zl& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&https://www.163yun.com/gift&/a&&/u&&/p&&p&&br&&/p&&p&更多网易研发、产品、运营经验分享请访问&a href=&https://link.zhihu.com/?target=https%3A//sq.163yun.com/blog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&网易云社区&/a&。 &/p&&p&&/p&
本文来自。 SSL/TLS是一个密码学协议,它的目标并不仅仅是网页内容的加密传输。SSL/TLS的主要目标有四个:加密安全、互操作性、可扩展性和效率。对于安全性的保障,它还会从多个方面进行,包括机密性,真实性以及完整性。机密性是指,传输的内容…
&p&推荐一款来自微软爸爸的&b&免费英语学习神器&/b&。&/p&&p&花两分钟进来看看绝对不吃亏——无论是英语学习者还是老师~&/p&&p&这款神器是&b&“微软小英”&/b&(不用下载,直接微信搜索就可以用)。&/p&&p&我认为作为一款免费的软件,它已经不能再良心了。&/p&&p&&b&为什么是神器?&/b&因为它的功能真的能帮你&b&解决英语发音问题&/b&,让你愿意&b&开口&/b&去说英语。你可以用碎片时间学习,和他对话,让它为你的口语打分。通过一些易混音练习,也能纠正你错误的读音。&/p&&p&作为小英团队的一员,我能感觉到我们团队一直在努力把学英语这件事做得有趣,也希望用AI更好地帮助大家学英语。&/p&&p&&b&为什么鲜为人知?&/b&因为小英是款免费产品。说起来真是太委屈惹,免费意味着他喵不盈利,没钱铺天盖地投广告。&/p&&p&小英的用户增长一直不快,至今总用户量也说不上多。但是用过的,都说好。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-a94edb238ecdefd6517ac0_b.jpg& data-rawwidth=&624& data-rawheight=&356& data-size=&normal& data-default-watermark-src=&https://pic3.zhimg.com/50/v2-f46dc6bf52bf_b.jpg& class=&origin_image zh-lightbox-thumb& width=&624& data-original=&https://pic4.zhimg.com/50/v2-a94edb238ecdefd6517ac0_r.jpg&&&figcaption&我最喜欢的情景模拟功能,给出关键词后训练你的表达能力,为你打分&/figcaption&&/figure&&p&&b&写个小小利益申明:&/b&&/p&&p&我曾在上海新X方当过很久兼职的托福VIP教辅老师,现在在微软亚洲研究院的小英组实习。&/p&&p&你可以当作我在为小英打广告,但是在英语学习这件事上,我真的有太多话想说。&/p&&p&我不仅做过托福教辅老师、做过高级BEC的助教,也是一名留学生。&/p&&p&所以我见过太多人——无论是国内,甚至国外学生,还是外企工作人员——书面表达都Okay,听力棒棒阅读好,&b&可是一开口,表达混乱,更可怕的是,发音奇怪&/b&。&/p&&p&“找个外教不就好了吗?”,嗯,你当然可以雇一个外教天天陪你练。但即便我在上海,都不是每个同学都家里请得起长期外教,更别说教育资源匮乏的小城市。&/p&&p&那怎么办,&b&没钱就不配拥有漂亮的英语口音了是吗?&/b&没钱就不配说一口流利的英语了是吗?&/p&&p&我突然想起曾经看过的一句令人影响深刻的话:&/p&&p&&b&“AI不是来取代人类的,而是来帮助人类更好地学习的。”&/b& &/p&&p&我之所以发自内心觉得小英是一款神器,因为我认为小英真的做到了这一点,而且它会越做越好。&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-382c49fbb9b77e6bb3118aed_b.jpg& data-rawwidth=&1298& data-rawheight=&703& data-size=&normal& data-default-watermark-src=&https://pic1.zhimg.com/50/v2-79c28b8d6dbe18e5c06a69c1f4284ce8_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1298& data-original=&https://pic4.zhimg.com/50/v2-382c49fbb9b77e6bb3118aed_r.jpg&&&figcaption&小英的情景模拟打分原理&/figcaption&&/figure&&p&其实我一直觉得,学习最有效的方法,不是请一个名师,24小时盯着你给你讲课。而是好的老师略微提点你,帮你找出问题,然后你一个人自己进行大量练习,攻克难题。&/p&&p&这里就不得不提到我以前在XDF的工作了。那时,我的学生都是家境极好,但是英语不好的,家长花重金给他们报了VIP最贵的托福班。(绝对是重金,嗯)&/p&&p&这个班级是怎么样的呢?&/p&&p&每天一节2小时的正课,是新XX的名师授课。&/p&&p&其他6小时是教辅课,由像我这样的教辅老师,带这些学生做听力的听抄、讲解,盯着他们做跟读训练,给他们简单讲讲阅读中的错题,我还会带他们练练口语,开拓写作思路。&/p&&p&为什么需要我这样的教辅?除了监督没自觉性的学生,还因为学生在做大量听抄,跟读练习的时候,需要有一个英语尚可的人帮助他们。&/p&&p&不过,我越来越感觉这个职位快要被代替了(笑)。当然,老师是永远不会被AI取代的,但是教辅、助教真的有可能哟。&/p&&p&毕竟,小英就会带着你跟读,给你的发音打分。&/p&&p&跟读真是太重要了,培养你的说话连贯性,也能知道单词在句子中的正确发音。而这样的练习,如果用AI就能帮助你练习了,的确是省下了不少人力成本。&/p&&p&其实扯了半天,我就是想说:&b&过去大家总认为,开口表达出一口流利的英语是一件很高成本的事。但现在真的不是了,科技在进步呀。&/b&&/p&&p&小英还有很多有趣的小功能,比如绕口令(强烈推荐!),看脸取英文名,微信直接输入翻译,还有最新推出的作文打分功能,真的是一款&b&以人工智能为驱动的交互式英语学习应用&/b&。&/p&&p&这样的神器,大家自己赶快去体验吧,它不能取代老师,但是真的能帮到你呀~&/p&&hr&&p&说在最后,我发现吧,现在人普遍有个毛病。&/p&&p&好玩好用的“神器”mark了一堆,却永远只存在收藏夹中,猴年马月了,也再也没想起来过。&/p&&p&所以如果你觉得我推荐的这个神器,会对你的英语学习有帮助的话,请不要收藏,现在就在微信里搜索“微软小英”。&/p&&p&直接在菜单栏里打开“&b&探索发现&/b&”—“英语力测试”,让小英给自己的&b&词汇量,发音,口语表达打个分&/b&,然后开始做相关的推荐课程,对着话筒开始叽里呱啦。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-f08a2c1bca4ffd6fe83b96d1f67a860c_b.jpg& data-rawwidth=&624& data-rawheight=&300& data-size=&normal& data-default-watermark-src=&https://pic1.zhimg.com/50/v2-ca717e0dfb451_b.jpg& class=&origin_image zh-lightbox-thumb& width=&624& data-original=&https://pic2.zhimg.com/50/v2-f08a2c1bca4ffd6fe83b96d1f67a860c_r.jpg&&&figcaption&英语力测试&/figcaption&&/figure&&p&&b&不要花钱,不要下载,从决定到开始,就15秒的事。&/b&&/p&&p&如果这你都懒得去做,那我真的很担心你是不是有努力学英语的决心。&/p&&p&如果对微软小英背后的黑科技感兴趣,比如NLP、语音识别,也欢迎关注我们最近刚开始运营的机构账号, &a class=&member_mention& href=&//www.zhihu.com/people/569fe945cebfa8a9324ef3& data-hash=&569fe945cebfa8a9324ef3& data-hovercard=&p$b$569fe945cebfa8a9324ef3&&@微软小英&/a& ~&/p&&a data-draft-node=&block& data-draft-type=&link-card& href=&https://www.zhihu.com/question//answer/& data-image=&https://pic4.zhimg.com/v2-6cc1db21fbdfaf287e117cb_180x120.jpg& data-image-width=&253& data-image-height=&196& class=&internal&&什么是知乎「机构号」?哪些机构可能进驻知乎?会带来什么样的影响?&/a&&p&&br&&/p&&p&微软爸爸还有好多黑科技,我也在慢慢了解中,慢点请小伙伴一起来答这道题?(????)&/p&
推荐一款来自微软爸爸的免费英语学习神器。花两分钟进来看看绝对不吃亏——无论是英语学习者还是老师~这款神器是“微软小英”(不用下载,直接微信搜索就可以用)。我认为作为一款免费的软件,它已经不能再良心了。为什么是神器?因为它的功能真的能帮你解…
&figure&&img src=&https://pic1.zhimg.com/v2-6fa9a2e51cb26ebe907f243b_b.jpg& data-rawwidth=&2520& data-rawheight=&1484& class=&origin_image zh-lightbox-thumb& width=&2520& data-original=&https://pic1.zhimg.com/v2-6fa9a2e51cb26ebe907f243b_r.jpg&&&/figure&&h2&每次新做一个项目,无论大小都要干这些事:&/h2&&ul&&li&框架选型&/li&&li&初始化脚手架(比如使用 &b&create-react-app&/b& 或者 &b&vue-cli&/b&)&/li&&li&也可能你选择了开源脚手架,克隆仓库&/li&&li&四处找轮子&/li&&li&安装各种依赖&/li&&li&新建页面,写逻辑&/li&&li&设计菜单&/li&&li&设计路由&/li&&li&新建页面的时候去复制旧的页面修改&/li&&li&把新的页面注册路由,注册菜单&/li&&li&做完了这个页面做下个,新建文件,复制代码,注册路由...&/li&&/ul&&p&&b&烦不烦?要优雅!&/b&&/p&&p&今天介绍阿里的开源产品:&a href=&http://link.zhihu.com/?target=https%3A//alibaba.github.io/ice& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&飞冰&/a&&/p&&h2&飞冰是什么&/h2&&figure&&img src=&https://pic3.zhimg.com/v2-50d9d7a78c79af3dbf2aefecd621779a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2880& data-rawheight=&794& class=&origin_image zh-lightbox-thumb& width=&2880& data-original=&https://pic3.zhimg.com/v2-50d9d7a78c79af3dbf2aefecd621779a_r.jpg&&&/figure&&p&&海量可复用物料,通过 GUI 工具极速构建中后台应用&。&/p&&p&这句 slogan 还是非常准确的:&/p&&p&飞冰是一套综合解决方案,用来极速构建中后台应用(其实也可以做非中后台应用)。&/p&&p&可以做到极速是通过『海量可复用物料』和『GUI 开发工具』实现的。&/p&&p&使用飞冰的开发工作流是这样的:&/p&&p&&code&下载 GUI 工具并安装&/code& =& &code&可视化的选择我们提供的初始模板创建项目&/code& =& &code&可视化的创建页面并选择我们提供的 100+ 高质量可复用区块&/code& =& &code&生成代码进行二次开发&/code& =& &code&开发完成之后点击打包编译出 HTML、JS、CSS 文件&/code& =& &code&部署使用&/code&&/p&&p&在整个流程中,你可以完全通过 GUI 工具点击操作,无需安装配置 Node 环境等前端开发工具,也无需配置 webpack 等构建脚本,我们已经按照淘宝前端最佳实践全部内置。此外,绝大部分的业务需求,我们都已经开发出对应的物料,可以通过 GUI 进行可视化的拼装,尽可能避免你去编写额外的业务逻辑。&/p&&h2&物料源&/h2&&p&下面是一张很长的图片,为了体积考虑这张图比较模糊,但是可以感受一下 ICE 的区块数量:&/p&&blockquote&原始网页链接 &a href=&http://link.zhihu.com/?target=https%3A//alibaba.github.io/ice/block& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&alibaba.github.io/ice/b&/span&&span class=&invisible&&lock&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&figure&&img src=&https://pic1.zhimg.com/v2-3cacfbf97ae38_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&682& data-rawheight=&4096& class=&origin_image zh-lightbox-thumb& width=&682& data-original=&https://pic1.zhimg.com/v2-3cacfbf97ae38_r.jpg&&&/figure&&p&目前为止 ICE 已经支持 react vue Angular 三大主流框架的物料资源&/p&&figure&&img src=&https://pic4.zhimg.com/v2-5d30efdd59e141c6e1ad6bde947d775f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2098& data-rawheight=&1402& class=&origin_image zh-lightbox-thumb& width=&2098& data-original=&https://pic4.zhimg.com/v2-5d30efdd59e141c6e1ad6bde947d775f_r.jpg&&&/figure&&p&打比方我现在项目需要富文本编辑器,可以看到区块里提供了三款编辑器可供选择&/p&&figure&&img src=&https://pic4.zhimg.com/v2-ce12bcadd585cd5bea57_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2220& data-rawheight=&1058& class=&origin_image zh-lightbox-thumb& width=&2220& data-original=&https://pic4.zhimg.com/v2-ce12bcadd585cd5bea57_r.jpg&&&/figure&&p&所有的这些,都是使用 GUI 就可以加入到项目中使用的,下面将会展示如何从安装 iceworks 客户端到在项目中新建页面。&/p&&h2&如何使用&/h2&&h2&安装&/h2&&blockquote&为了真实演示,特意删掉了以前安装的 app&/blockquote&&p&演示系统为 macOS,iceworks 支持 Windows 版本。&/p&&p&iceworks 下载地址 &a href=&http://link.zhihu.com/?target=https%3A//alibaba.github.io/ice/iceworks& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&alibaba.github.io/ice/i&/span&&span class=&invisible&&ceworks&/span&&span class=&ellipsis&&&/span&&/a&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-1f6cb3ae1d0bf2de047a81_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2754& data-rawheight=&1488& class=&origin_image zh-lightbox-thumb& width=&2754& data-original=&https://pic2.zhimg.com/v2-1f6cb3ae1d0bf2de047a81_r.jpg&&&/figure&&p&稍微等待了一会儿,下载完成。安装后得到了这样一个 App:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-d704ff205c9bc59e7bd6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1048& data-rawheight=&730& class=&origin_image zh-lightbox-thumb& width=&1048& data-original=&https://pic3.zhimg.com/v2-d704ff205c9bc59e7bd6_r.jpg&&&/figure&&h2&上手&/h2&&p&安装后打开看到一个很简单的界面:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-314eaa403b7b224eb9d2a4184bdc33f8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1740& data-rawheight=&1156& class=&origin_image zh-lightbox-thumb& width=&1740& data-original=&https://pic1.zhimg.com/v2-314eaa403b7b224eb9d2a4184bdc33f8_r.jpg&&&/figure&&p&切换到模板标签可以看到飞冰目前提供的脚手架列表:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-fb5e5cc806a33c3f1ac52_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2766& data-rawheight=&1710& class=&origin_image zh-lightbox-thumb& width=&2766& data-original=&https://pic3.zhimg.com/v2-fb5e5cc806a33c3f1ac52_r.jpg&&&/figure&&p&区块标签可以看到区块列表&/p&&figure&&img src=&https://pic4.zhimg.com/v2-a73a2c57c47e8ca438b303_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&948& data-rawheight=&724& data-thumbnail=&https://pic4.zhimg.com/v2-a73a2c57c47e8ca438b303_b.jpg& class=&origin_image zh-lightbox-thumb& width=&948& data-original=&https://pic4.zhimg.com/v2-a73a2c57c47e8ca438b303_r.jpg&&&/figure&&p&插件&/p&&figure&&img src=&https://pic3.zhimg.com/v2-fcbfefcf18cb0acddb2e562e300397ae_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1740& data-rawheight=&1348& class=&origin_image zh-lightbox-thumb& width=&1740& data-original=&https://pic3.zhimg.com/v2-fcbfefcf18cb0acddb2e562e300397ae_r.jpg&&&/figure&&p&设置&/p&&figure&&img src=&https://pic2.zhimg.com/v2-b8cadd2e7fc48bba09c42d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1740& data-rawheight=&1348& class=&origin_image zh-lightbox-thumb& width=&1740& data-original=&https://pic2.zhimg.com/v2-b8cadd2e7fc48bba09c42d_r.jpg&&&/figure&&p&这就是表面上所有的功能,下面我们来建一个项目体验一下&/p&&h2&新建 vue 项目&/h2&&p&飞冰是从 react 开始做的,现在 vue 和 Angular 物料源还比较少,我们切换到 vue 选项卡里...&/p&&figure&&img src=&https://pic2.zhimg.com/v2-feeed27fdb8560608cfd07d09b7bc095_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1740& data-rawheight=&1156& class=&origin_image zh-lightbox-thumb& width=&1740& data-original=&https://pic2.zhimg.com/v2-feeed27fdb8560608cfd07d09b7bc095_r.jpg&&&/figure&&p&&b&是不是混进了什么奇怪的东西!&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-335a00a88db5ac_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1740& data-rawheight=&1156& class=&origin_image zh-lightbox-thumb& width=&1740& data-original=&https://pic1.zhimg.com/v2-335a00a88db5ac_r.jpg&&&/figure&&p&没错,D2Admin 出了 ICE 版!&/p&&p&在我和阿里的开发者&b&一个月&/b&的对接之后,D2Admin ICE 诞生了,作为飞冰平台上第一个&b&非官方 vue 脚手架&/b&,D2Admin ICE 承担的希望还是很大的!下面使用这个脚手架做演示,展示如何&b&不写代码&/b&建页面,&b&不写代码&/b&出图表!&/p&&p&选择 D2Admin ICE 作为起始模板后会让我们填写项目保存地址:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-065d2e6652fde90ecc11807_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1740& data-rawheight=&1156& class=&origin_image zh-lightbox-thumb& width=&1740& data-original=&https://pic4.zhimg.com/v2-065d2e6652fde90ecc11807_r.jpg&&&/figure&&p&填写完成后开始下载模板,下载后会提示我是否要立刻安装依赖:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-86d8b3b7dbbe_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&862& data-rawheight=&572& data-thumbnail=&https://pic3.zhimg.com/v2-86d8b3b7dbbe_b.jpg& class=&origin_image zh-lightbox-thumb& width=&862& data-original=&https://pic3.zhimg.com/v2-86d8b3b7dbbe_r.jpg&&&/figure&&p&为了避免动态图过大我没有录安装过程:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-30dc4f3e2e897ff3dd72_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1740& data-rawheight=&1156& class=&origin_image zh-lightbox-thumb& width=&1740& data-original=&https://pic3.zhimg.com/v2-30dc4f3e2e897ff3dd72_r.jpg&&&/figure&&p&在写上面的时候已经提示我依赖安装完成了(很人性化有没有):&/p&&figure&&img src=&https://pic3.zhimg.com/v2-abcd2c9f818c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1128& data-rawheight=&488& class=&origin_image zh-lightbox-thumb& width=&1128& data-original=&https://pic3.zhimg.com/v2-abcd2c9f818c_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-62ce22f8da4ffbd2e64c09_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1740& data-rawheight=&1156& class=&origin_image zh-lightbox-thumb& width=&1740& data-original=&https://pic2.zhimg.com/v2-62ce22f8da4ffbd2e64c09_r.jpg&&&/figure&&p&ennn...没毛病。&/p&&h2&启动项目&/h2&&p&点击 &code&启动调试服务&/code& 会在本地打开调试服务,vue 项目默认执行的是 &code&npm start&/code&:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-fdc814b53de2fafad33fcb3f4c3177eb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&862& data-rawheight=&572& data-thumbnail=&https://pic4.zhimg.com/v2-fdc814b53de2fafad33fcb3f4c3177eb_b.jpg& class=&origin_image zh-lightbox-thumb& width=&862& data-original=&https://pic4.zhimg.com/v2-fdc814b53de2fafad33fcb3f4c3177eb_r.jpg&&&/figure&&p&打开显示的链接,可以看到项目已经稳稳地跑起来了:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-cead26fac759_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1944& data-rawheight=&1338& class=&origin_image zh-lightbox-thumb& width=&1944& data-original=&https://pic2.zhimg.com/v2-cead26fac759_r.jpg&&&/figure&&p&D2Admin ICE 实质上是 &a href=&http://link.zhihu.com/?target=https%3A//github.com/d2-projects/d2-admin-start-kit& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&d2-admin-start-kit&/a& 的特别版本,为适应 ICE 的逻辑修改了一部分代码,可以看到模板十分干净,没有了任何完整版的示例 demo:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-906bd3a0d8af1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2108& data-rawheight=&1432& class=&origin_image zh-lightbox-thumb& width=&2108& data-original=&https://pic2.zhimg.com/v2-906bd3a0d8af1_r.jpg&&&/figure&&p&关闭 ICE 内集成的终端后可以看到项目面板,可以显示出现在有哪些页面,安装了哪些依赖等:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-2e335e7c60e9fc874e723dbee1343fca_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1768& data-rawheight=&1454& class=&origin_image zh-lightbox-thumb& width=&1768& data-original=&https://pic3.zhimg.com/v2-2e335e7c60e9fc874e723dbee1343fca_r.jpg&&&/figure&&p&新建页面&/p&&p&点击 &code&新建页面&/code& 会打开新建页面界面:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-506ae3760_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1768& data-rawheight=&1710& class=&origin_image zh-lightbox-thumb& width=&1768& data-original=&https://pic1.zhimg.com/v2-506ae3760_r.jpg&&&/figure&&p&随便选择一个区块新建一个页面(中间的等待时间是 iceworks 在从 npm 下载区块代码)&/p&&figure&&img src=&https://pic3.zhimg.com/v2-fab5655abe141fee639e8f3d96d9ab9c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&982& data-rawheight=&722& data-thumbnail=&https://pic1.zhimg.com/v2-fab5655abe141fee639e8f3d96d9ab9c_b.jpg& class=&origin_image zh-lightbox-thumb& width=&982& data-original=&https://pic1.zhimg.com/v2-fab5655abe141fee639e8f3d96d9ab9c_r.jpg&&&/figure&&p&选择区块:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-1a33985a3bea6f3f3b9dc2de22f00fca_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1768& data-rawheight=&1156& class=&origin_image zh-lightbox-thumb& width=&1768& data-original=&https://pic3.zhimg.com/v2-1a33985a3bea6f3f3b9dc2de22f00fca_r.jpg&&&/figure&&p&效果:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-3d4f09e7cb2da7c02d63a07d9d575256_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1856& data-rawheight=&1006& class=&origin_image zh-lightbox-thumb& width=&1856& data-original=&https://pic3.zhimg.com/v2-3d4f09e7cb2da7c02d63a07d9d575256_r.jpg&&&/figure&&p&下面尝试一下选择多个区块:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-673f1444a32ebd14841a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1768& data-rawheight=&1156& class=&origin_image zh-lightbox-thumb& width=&1768& data-original=&https://pic3.zhimg.com/v2-673f1444a32ebd14841a_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-ff33cf809f46a1cd6247f6fca7291090_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1768& data-rawheight=&1156& class=&origin_image zh-lightbox-thumb& width=&1768& data-original=&https://pic1.zhimg.com/v2-ff33cf809f46a1cd6247f6fca7291090_r.jpg&&&/figure&&p&自动生成了菜单:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-591f06fdbd21cff923f7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1856& data-rawheight=&1006& class=&origin_image zh-lightbox-thumb& width=&1856& data-original=&https://pic4.zhimg.com/v2-591f06fdbd21cff923f7_r.jpg&&&/figure&&p&页面效果:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-4cdec725b1c9fa303a29a567a5be99e4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&846& data-rawheight=&612& data-thumbnail=&https://pic1.zhimg.com/v2-4cdec725b1c9fa303a29a567a5be99e4_b.jpg& class=&origin_image zh-lightbox-thumb& width=&846& data-original=&https://pic1.zhimg.com/v2-4cdec725b1c9fa303a29a567a5be99e4_r.jpg&&&/figure&&p&检查一下自动生成的代码目录:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-2e8bf9aa_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&732& data-rawheight=&1272& class=&origin_image zh-lightbox-thumb& width=&732& data-original=&https://pic3.zhimg.com/v2-2e8bf9aa_r.jpg&&&/figure&&p&自动生成的页面组件:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-be9f0c85fc88c47b6f6b90e3b520d18f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1624& data-rawheight=&2656& class=&origin_image zh-lightbox-thumb& width=&1624& data-original=&https://pic4.zhimg.com/v2-be9f0c85fc88c47b6f6b90e3b520d18f_r.jpg&&&/figure&&p&自动生成的样式文件:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-84aeaa2cf4edd46cc286e6bb548962fc_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1644& data-rawheight=&1148& class=&origin_image zh-lightbox-thumb& width=&1644& data-original=&https://pic1.zhimg.com/v2-84aeaa2cf4edd46cc286e6bb548962fc_r.jpg&&&/figure&&p&该有的都有了,不该有的也有了,连生命周期钩子都帮你写了一遍!&/p&&h2&结语&/h2&&p&演示一遍下来后,我生成了两个页面,没有写一行代码,剩下的操作就是修修改改,把多个页面都需要的组件提取一下,做做修改工作。&/p&&p&D2Admin 团队也会在以后的时间里尽力和 ICE 团队合作开发 vue 公用区块,加速 ICE 的 vue 生态建设,也希望众多的 vuer 都可以参与进来,平台有了,社区繁荣起来才是对大家都有利的事情。&/p&&p&D2Admin ICE 将会保持和 D2Admin Start Kit 一致更新,如果你看到完整版的 D2Admin 实在喜欢,从完整版做减法也未尝不可 :)&/p&&h2&关于 D2 Projects&/h2&&a href=&http://link.zhihu.com/?target=https%3A//github.com/d2-projects& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&团队主页&/a&&a href=&http://link.zhihu.com/?target=http%3A//d2admin.fairyever.com/zh/& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&中文文档&/a&&a href=&http://link.zhihu.com/?target=https%3A//fairyever.gitee.io/d2-admin-preview/%23/index& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&D2Admin&/a&&a href=&http://link.zhihu.com/?target=https%3A//github.com/d2-projects/d2-admin& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic2.zhimg.com/v2-9ec7fc26e0e902f775d4f467b93ffe95_ipico.jpg& data-image-width=&400& data-image-height=&400& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&d2-projects/d2-admin&/a&&p&开源项目组官方公众号&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//weixin.qq.com/r/5S6yqhLEck8NrVbJ93v3& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&weixin.qq.com/r/5S6yqhL&/span&&span class=&invisible&&Eck8NrVbJ93v3&/span&&span class=&ellipsis&&&/span&&/a& (二维码自动识别)&/p&&p&在最后,如果你看完了,并且觉得还不错,希望可以到 D2 &a href=&http://link.zhihu.com/?target=https%3A//github.com/d2-projects/d2-admin& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&项目主页&/a& 上点一个 &b&star&/b& 作为你对这个项目的认可与支持,谢谢。&/p&&p&开源的路还很长... 一起加油!&/p&
每次新做一个项目,无论大小都要干这些事:框架选型初始化脚手架(比如使用 create-react-app 或者 vue-cli)也可能你选择了开源脚手架,克隆仓库四处找轮子安装各种依赖新建页面,写逻辑设计菜单设计路由新建页面的时候去复制旧的页面修改把新的页面注册路…
&h2&解决方法:&/h2&&p&  在Ubuntu下开启SSH首先要确认是否配置了IP,如果没有用以下命令进行配置:&/p&&p&  1.sudo ifconfig eth0 192.168.0.3 netmask 255.255.255.0 //配置你的eth0网卡的ip地址和子网掩码&/p&&p&  2. duso route default gw 192.168.0.1 //配置默认路由&/p&&h2&开启ssh服务&/h2&&p&  1.查看是否有sshd_config   cat /etc/ssh/sshd_config //查看是否有sshd_config文件&/p&&p&  2.如果没有进行安装   sudo apt-get install opensshd-server //安装sshd-server,Ubuntu缺省安装了openssh-client,如果没有安装,用apt-get install 进行##安装即可。&/p&&p&  3.查看sshsever是否启动   ps -e |grep ssh   1207 ? 00:00:00 ssh-agent   21834 ? 00:00:00 sshd   如果看到sshd则表示sshserver已经启动,如果只有ssh-agent,则表示没有启动,用   sudo /etc/init.d/ssh start 启动sshserver&/p&&p&  4.ssh-server的配置文件位于 /etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端##口号,如222。然后用以下命令重启SSH服务:   sudo /etc/init.d/ssh restart&/p&&p&  5. 还可以用sudo netstart -tlp 命令来检测, 如果看到:   tcp6 0 0 [::]:ssh [::]:*   就表示sshserver启动正常。   通过客户端就可以访问了。&/p&&p&如果在Ubuntu系统下,ssh客户端一般是自带的,如果没有可以执行sudo apt-get install openssh-client进行安装,之后执行ps -e|grep ssh如果有ssh-agent那么就表示ssh客户端安装成功了。在终端可以输入ssh username@192.168.1.100登录到192.168.1.100这个ssh服务器,然后会让你输入密码,之后就登录了。&/p&&p&学会了么?有问题欢迎评论,千锋PHP培训随时恭候大家&/p&
解决方法: 在Ubuntu下开启SSH首先要确认是否配置了IP,如果没有用以下命令进行配置: 1.sudo ifconfig eth0 192.168.0.3 netmask 255.255.255.0 //配置你的eth0网卡的ip地址和子网掩码 2. duso route default gw 192.168.0.1 //配置默认路由开启ssh服务 1.…
&p&为了应对诸如惊人的操作开销、重复的努力、可测试性等微服务通常面临的挑战,以及获得诸如代码解耦,易于横向扩展等微服务带来的好处,ZStack将所有服务包含在单个进程中,称为管理节点,构建一个进程内的微服务架构。&/p&&h2&动机&/h2&&p&构建一个IaaS软件是很难的,这是一个已经从市场上现存的IaaS软件获得的教训。作为一个集成软件,IaaS软件通常需要去管理复杂的各种各样的子系统(如:虚拟机管理器hypervisor,存储,网络,身份验证等)并且需要组织协调多个子系统间的交互。例如,创建虚拟机操作将涉及到虚拟机管理模块,存储模块,网络模块的合作。由于大多数IaaS软件通常对架构考虑不够全面就急于开始解决一个具体问题,它们的实现通常会演变成:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-b8a5e516b467e79cbbad8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&608& data-rawheight=&615& class=&origin_image zh-lightbox-thumb& width=&608& data-original=&https://pic3.zhimg.com/v2-b8a5e516b467e79cbbad8_r.jpg&&&/figure&&p&随着一个软件的不断成长,这个铁板一块的架构(monolithic architecture)将最终变为一团乱麻,以至于没有人可以修改这个系统的代码,除非把整个系统从头构建。这种铁板一块的编程问题是微服务可以介入的完美场合。通过划分整个系统的功能为一个个小的、专一的、独立的服务,并定义服务之间交互的规则,微服务可以帮助转换一个复杂笨重的软件,从紧耦合的、网状拓扑架构,变成一个松耦合的、星状拓扑的架构。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-c702e95d241f18eb6f27e1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&911& data-rawheight=&777& class=&origin_image zh-lightbox-thumb& width=&911& data-original=&https://pic4.zhimg.com/v2-c702e95d241f18eb6f27e1_r.jpg&&&/figure&&p&因为服务在微服务中是编译独立的,添加或者删除服务将不会影响整个系统的架构(当然,移除某些服务会导致功能的缺失)。&/p&&p&微服务远比我们已经讨论的内容更多:微服务的确有很多引入注目的优点,尤其是在一个的开发运维 流程(DevOps process)中,当涉及到一个大机构的很多团队时。我们不打算讨论微服务的所有支持和反对意见,我们确定你可以在网上找到大量的相关文章,我们主要介绍一些我们认为对IaaS软件影响深远的特性。&/p&&h2&问题&/h2&&p&虽然微服务可以解耦合架构,但这是有代价的。阅读Microservices - Not A Free Lunch!和Failing at Microservices会对这句话有更深的理解。在这里,我们重点强调一些我们认为对IaaS软件影响重大的事情。&/p&&p&&b&1.难以定义服务的边界和重复做功&/b&&/p&&p&创建Microservices架构的挑战之一是决定应该把哪一部分的代码定义为服务,一些是非常明显的,比如说,处理主机部分的逻辑代码可以被定义为一个服务。然而,管理数据库交互的代码非常难以决定应不应该被定义为服务。数据库服务可以使得整个架构更加清晰明了,但是这样会导致严重的性能下降。通常,类似于这样的代码可以被定义为库,库可以被各个服务调用。鉴于所有服务一般在互相隔离的目录下开发和维护,创建一个给不同的单一的软件提供接口的虚拟的库,要求开发者必须具有良好的和各个不同组的开发者沟通协调的能力。综上,服务很容易重复造轮子和导致不必要的重复做功。&/p&&p&&b&2.软件难以部署、升级和维护&/b&&/p&&p&服务,尤其是那些分散在不同进程和机器上的,是难以部署和升级的。用户通常必须去花费几天甚至几周去部署一个完整的可运行的系统,并害怕升级一个已经构建好的稳定的系统。尽管一些类似puppet的配置管理软件一定程度上缓解了这个问题,用户依旧需要克服陡峭的学习曲线去掌握这些配置工具,仅仅是为了部署或者升级一个软件。管理一个云是非常困难的,努力不应该被浪费在管理这些原本应该使生活更轻松的软件上。&/p&&p&服务的数量确实很重要:IaaS软件通常有许许多多的服务。拿著名的openstack举个例子,为了完成一个基础的安装你将需要:Nova, Cinder, Neutron, Horizon, Keystone, Glance。除了nova是在每台主机都需要部署的,如果你想要4个实例(instances),并且每个服务运行在不同机器上,你需要去操纵20台服务器。虽然这种人造的案例将不太可能真实地发生,它依旧揭示了管理相互隔离的服务的挑战。&/p&&p&&b&3.零散的配置&/b&&/p&&p&运行在不同服务器上的服务,分别维护着它们散乱在系统各个角落的配置副本。在系统范围更新配置的操作通常由临时特定的脚本完成,这会导致由不一致的配置产生的令人费解的失败。&/p&&p&&b& 4.额外的监控努力&/b&&/p&&p&为了跟踪系统的健康状况,用户必须付出额外的努力去监控每一个服务实例。这些监控软件,要么由第三方工具搭建,要么服务自身维护,仍然受到和微服务面临的问题所类似的问题的困扰,因为它们仍然是以分布式的方式工作的软件。&/p&&p&&b&5.插件杀手&/b&&/p&&p&插件这个词在微服务的世界中很少被听到,因为每个服务都是运行在不同进程中一个很小的功能单元(function unit);传统的插件模式(参考The Versatile Plugin System)目标是把不同的功能单元相互挂在一起,这在微服务看来是不可能的,甚至是反设计模式的。然而,对于一些很自然的,要在功能单元间强加紧密依赖的业务逻辑,微服务可能会让事情变得非常糟糕,因为缺乏插件支持,修改业务逻辑可能引发一连串服务的修改。&/p&&h2&所有的服务都在一个进程&/h2&&p&意识到上述的所有问题,以及这么一个事实,即一个可以正常工作的IaaS软件必须和所有的编排服务一起运行之后,ZStack把所有服务封装在单一进程中,称之为管理节点。除去一些微服务已经带来的如解耦架构的优点外,进程内的微服务还给了我们很多额外的好处:&/p&&p&&b&1.简洁的依赖&/b&&/p&&p&因为所有服务都运行在同一进程内,软件只需要一份支持软件(如:database library, message library)的拷贝;升级或改变支持库跟我们对一个单独的二进制应用程序所做的一样简单。&/p&&p&&b& 2.高可用,负载均衡和监控&/b&&/p&&p&服务可以专注于它们的业务逻辑,而不受各种来自于高可用、负载均衡、监控的干扰,这一切只由管理节点关心;更进一步,状态可以从服务中分离以创建无状态服务,详见ZStack's Scalability Secrets Part 2: Stateless Services。&/p&&p&&b&3.中心化的配置&/b&&/p&&p&由于在一个进程中,所有的服务共享一份配置文件——&a href=&https://link.zhihu.com/?target=http%3A//zstack.properties& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&zstack.properties&/a&;用户不需要去管理各种各样的分散在不同机器上的配置文件。&/p&&p&&b&4.易于部署、升级、维护和横向扩展&/b&&/p&&p&部署,升级或者维护一个单一的管理节点跟部署升级一个单一的应用程序一样容易。横向扩展服务只需要简单的增加管理节点。&/p&&p&&b&5.允许插件&/b&&/p&&p&因为运行在一个单一的进程中,插件可以很容易地被创建,和给传统的单进程应用程序添加插件一样。&/p&&p&*进程内的微服务并不是一个新发明:* 早在90年代,微软在COM(Component Object Model)中把server定义为远程、本地和进程内三种。这些进程内的server是一些DLLs,被应用程序在同一进程空间内加载,属于进程内的微服务。Peter Kriens在四年前就声称已经定义了一种总是在同一进程内通信的服务,OSGi uservices。&/p&&h2&&b&服务样例&/b&&/h2&&p&在微服务中,一个服务通常是一个可重复的业务活动的逻辑表示,是无关联的、松耦合的、自包含的,而且对服务的消费者而言是一个“黑盒子”。简单来说,一个传统的微服务通常只关心特定的业务逻辑,有自己的API和配置方法,并能像一个独立的应用程序一样运行。尽管ZStack的服务共享同一块进程空间,它们拥有这些特点中的绝大多数。ZStack很大程度上是一个使用强类型语言java编写的项目,但是在各个编排服务之间没有编译依赖性,例如:计算服务(包含VM服务、主机服务、区域服务、集群服务)并不依赖于存储服务(包含磁盘服务、基础存储服务、备份存储服务、磁盘快照服务等),虽然这些服务在业务流程中是紧密耦合的。&/p&&p&在源代码中,一个ZStack的服务并不比一个作为一个独立的jar文件构建的maven模块多任何东西。每一个服务可以定义自己的APIs、错误码、全局配置,全局属性和系统标签。例如KVM的主机服务拥有自己的APIs(如下所示)和各种各样的允许用户自己定义配置的方式。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&&?xml version=&1.0& encoding=&UTF-8&?&
&service xmlns=&http://zstack.org/schema/zstack&&
&id&host&/id&
&name&org.zstack.kvm.APIAddKVMHostMsg&/name&
&interceptor&HostApiInterceptor&/interceptor&
&interceptor&KVMApiInterceptor&/interceptor&
&/message&
&/service&
&/code&&/pre&&/div&&h2&通过全局配置来配置&/h2&&p&备注:这里只简单展示一小部分,用户可以使用API去更新/获取全局配置,在这里展示一下全局配置的视图。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&&?xml version=&1.0& encoding=&UTF-8&?&
&globalConfig xmlns=&http://zstack.org/schema/zstack&&
&category&kvm&/category&
&name&vm.migrationQuantity&/name&
&description&A value that defines how many vm can be migrated in parallel when putting a KVM host into maintenance mode.(当一个KVM主机变成维护模式的时候,这里的值定义了可以被并发迁移的虚拟机的数量)&/description&
&defaultValue&2&/defaultValue&
&type&java.lang.Integer&/type&
&category&kvm&/category&
&name&reservedMemory&/name&
&description&The memory capacity reserved on all KVM hosts. ZStack KVM agent is a python web server that needs some memory capacity to run. this value reserves a portion of memory for the agent as well as other host applications. The value can be overridden by system tag on individual host, cluster and zone level(所有的KVM主机预留的内存容量。ZStack中的KVM代理运行时是一个需要一部分内存容量去运行的python的web服务器,这个值为代理和其他主机应用程序预留了一部分内存,在单一主机上的、集群上的、区域上的系统标签可以覆盖这个值)&/description&
&defaultValue&512M&/defaultValue&
&/globalConfig&
&/code&&/pre&&/div&&h2&通过全局属性配置&/h2&&p&备注:以下代码对应zstack.properties文件夹中相应的属性&/p&&div class=&highlight&&&pre&&code class=&language-java&&&span&&/span&&span class=&nd&&@GlobalPropertyDefinition&/span&
&span class=&kd&&public&/span& &span class=&kd&&class&/span& &span class=&nc&&KVMGlobalProperty&/span& &span class=&o&&{&/span&
&span class=&nd&&@GlobalProperty&/span&&span class=&o&&(&/span&&span class=&n&&name&/span&&span class=&o&&=&/span&&span class=&s&&&KvmAgent.agentPackageName&&/span&&span class=&o&&,&/span& &span class=&n&&defaultValue&/span& &span class=&o&&=&/span& &span class=&s&&&kvmagent-0.6.tar.gz&&/span&&span class=&o&&)&/span&
&span class=&kd&&public&/span& &span class=&kd&&static&/span& &span class=&n&&String&/span& &span class=&n&&AGENT_PACKAGE_NAME&/span&&span class=&o&&;&/span&
&span class=&nd&&@GlobalProperty&/span&&span class=&o&&(&/span&&span class=&n&&name&/span&&span class=&o&&=&/span&&span class=&s&&&KvmAgent.agentUrlRootPath&&/span&&span class=&o&&,&/span& &span class=&n&&defaultValue&/span& &span class=&o&&=&/span& &span class=&s&&&&&/span&&span class=&o&&)&/span&
&span class=&kd&&public&/span& &span class=&kd&&static&/span& &span class=&n&&String&/span& &span class=&n&&AGENT_URL_ROOT_PATH&/span&&span class=&o&&;&/span&
&span class=&nd&&@GlobalProperty&/span&&span class=&o&&(&/span&&span class=&n&&name&/span&&span class=&o&&=&/span&&span class=&s&&&KvmAgent.agentUrlScheme&&/span&&span class=&o&&,&/span& &span class=&n&&defaultValue&/span& &span class=&o&&=&/span& &span class=&s&&&http&&/span&&span class=&o&&)&/span&
&span class=&kd&&public&/span& &span class=&kd&&static&/span& &span class=&n&&String&/span& &span class=&n&&AGENT_URL_SCHEME&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&&h2&通过系统标签配置&/h2&&p&备注:以下代码对应zstack.properties文件夹中相应的属性&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&@GlobalPropertyDefinition
public class KVMGlobalProperty {
@GlobalProperty(name=&KvmAgent.agentPackageName&, defaultValue = &kvmagent-0.6.tar.gz&)
public static String AGENT_PACKAGE_NAME;
@GlobalProperty(name=&KvmAgent.agentUrlRootPath&, defaultValue = &&)
public static String AGENT_URL_ROOT_PATH;
@GlobalProperty(name=&KvmAgent.agentUrlScheme&, defaultValue = &http&)
public static String AGENT_URL_SCHEME;
&/code&&/pre&&/div&&h2&通过系统标签配置&/h2&&p&备注:以下代码对应数据库中相应的系统标签。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&@TagDefinition
public class KVMSystemTags {
public static final String QEMU_IMG_VERSION_TOKEN = &version&;
public static PatternedSystemTag QEMU_IMG_VERSION = new PatternedSystemTag(String.format(&qemu-img::version::%s&, QEMU_IMG_VERSION_TOKEN), HostVO.class);
public static final String LIBVIRT_VERSION_TOKEN = &version&;
public static PatternedSystemTag LIBVIRT_VERSION = new PatternedSystemTag(String.format(&libvirt::version::%s&, LIBVIRT_VERSION_TOKEN), HostVO.class);
public static final String HVM_CPU_FLAG_TOKEN = &flag&;
public static PatternedSystemTag HVM_CPU_FLAG = new PatternedSystemTag(String.format(&hvm::%s&, HVM_CPU_FLAG_TOKEN), HostVO.class);
&/code&&/pre&&/div&&h2&载入服务&/h2&&p&服务在Spring的bean的xml文件中声明自身,例如,kvm的部分声明类似于:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&&?xml version=&1.0& encoding=&UTF-8&?&
&beans xmlns=&http://www.springframework.org/schema/beans&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance& xmlns:aop=&http://www.springframework.org/schema/aop&
xmlns:tx=&http://www.springframework.org/schema/tx& xmlns:zstack=&http://zstack.org/schema/zstack&
xsi:schemaLocation=&http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://zstack.org/schema/zstack
http://zstack.org/schema/zstack/plugin.xsd&
default-init-method=&init& default-destroy-method=&destroy&&
&bean id=&KvmHostReserveExtension& class=&org.zstack.kvm.KvmHostReserveExtension&&
&zstack:plugin&
&zstack:extension interface=&org.zstack.header.Component& /&
&zstack:extension interface=&org.zstack.header.allocator.HostReservedCapacityExtensionPoint& /&
&/zstack:plugin&
&bean id=&KVMHostFactory& class=&org.zstack.kvm.KVMHostFactory&&
&zstack:plugin&
&zstack:extension interface=&org.zstack.header.host.HypervisorFactory& /&
&zstack:extension interface=&org.zstack.header.Component& /&
&zstack:extension interface=&org.zstack.header.managementnode.ManagementNodeChangeListener& /&
&zstack:extension interface=&org.zstack.header.volume.MaxDataVolumeNumberExtensionPoint& /&
&/zstack:plugin&
&bean id=&KVMSecurityGroupBackend& class=&org.zstack.kvm.KVMSecurityGroupBackend&&
&zstack:plugin&
&zstack:extension interface=&org.zstack.network.securitygroup.SecurityGroupHypervisorBackend& /&
&zstack:extension interface=&org.zstack.kvm.KVMHostConnectExtensionPoint& /&
&/zstack:plugin&
&bean id=&KVMConsoleHypervisorBackend& class=&org.zstack.kvm.KVMConsoleHypervisorBackend&&
&zstack:plugin&
&zstack:extension interface=&org.zstack.header.console.ConsoleHypervisorBackend&/&
&/zstack:plugin&
&bean id=&KVMApiInterceptor& class=&org.zstack.kvm.KVMApiInterceptor&&
&zstack:plugin&
&zstack:extension interface=&org.zstack.header.apimediator.ApiMessageInterceptor&/&
&/zstack:plugin&
&/code&&/pre&&/div&&p&管理节点,作为所有服务的容器,将在启动阶段读取它们的XML配置文件,载入每一个服务。&/p&&h2&总结&/h2&&p&在这篇文章中,我们演示了ZStack的进程内微服务架构。通过使用它,ZStack拥有一个非常干净的,松耦合的代码结构,这是创建一个强壮IaaS软件的基础。&/p&&p&&/p&
为了应对诸如惊人的操作开销、重复的努力、可测试性等微服务通常面临的挑战,以及获得诸如代码解耦,易于横向扩展等微服务带来的好处,ZStack将所有服务包含在单个进程中,称为管理节点,构建一个进程内的微服务架构。动机构建一个IaaS软件是很难的,这是一…
&figure&&img src=&https://pic3.zhimg.com/v2-ce8eb6aac37b330c4ceccbd_b.jpg& data-rawwidth=&1950& data-rawheight=&1300& class=&origin_image zh-lightbox-thumb& width=&1950& data-original=&https://pic3.zhimg.com/v2-ce8eb6aac37b330c4ceccbd_r.jpg&&&/figure&&p&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-c96ce96973beaf2ceee84ec_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1200& data-rawheight=&169& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&https://pic4.zhimg.com/v2-c96ce96973beaf2ceee84ec_r.jpg&&&/figure&&p&入行7年,可以说阅遍无数效率工具,但对产品经理来说,真正高效的办公软件都有哪些呢?以下工具是我7年经验的良心推荐,谁用谁知道,工作效率提升100%&/p&&p&&br&&/p&&h2&&b&1、交互工具-墨刀 吐血推荐!!!&/b&&/h2&&figure&&img src=&https://pic4.zhimg.com/v2-0adf0db02fb4422_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1915& data-rawheight=&943& class=&origin_image zh-lightbox-thumb& width=&1915& data-original=&https://pic4.zhimg.com/v2-0adf0db02fb4422_r.jpg&&&/figure&&p&我用过很多交互制作软件,包括老牌的Axure/Sketch,还有一些国外交互制作工具,最后还是选择了墨刀,因为这货——&/p&&ul&&li&&b&上手简单:&/b&不用教学文档视频,基本上10分钟上手;&/li&&li&&b&内置控件:&/b&icon和iOS/Android控件;&/li&&/ul&&figure&&img src=&https://pic4.zhimg.com/v2-e2e3ab947dd707dccda949_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&804& data-rawheight=&806& class=&origin_image zh-lightbox-thumb& width=&804& data-original=&https://pic4.zhimg.com/v2-e2e3ab947dd707dccda949_r.jpg&&&/figure&&p&&br&&/p&&ul&&li&&b&可加动画:&/b&页面跳转方便,可以加简单的跳转动画&/li&&/ul&&figure&&img src=&https://pic4.zhimg.com/v2-5cefa1cbefaed4dd0f0cca9ffee7e977_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&390& data-rawheight=&692& data-thumbnail=&https://pic4.zhimg.com/v2-5cefa1cbefaed4dd0f0cca9ffee7e977_b.jpg& class=&content_image& width=&390&&&/figure&&ul&&li&&b&网页+PC+手机同步&/b&:手机上可以下载墨刀APP,PC上画好交互,可以直接操作在手机demo上看效果,酷的一逼&/li&&/ul&&figure&&img src=&https://pic1.zhimg.com/v2-3eeb1b2741afdd67e10ee1fe00b93f4f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&459& data-rawheight=&819& class=&origin_image zh-lightbox-thumb& width=&459& data-original=&https://pic1.zhimg.com/v2-3eeb1b2741afdd67e10ee1fe00b93f4f_r.jpg&&&/figure&&p&&br&&/p&&ul&&li&&b&交互输出:&/b&流程交互图也可以直接编辑输出,非常贴心&/li&&/ul&&figure&&img src=&https://pic3.zhimg.com/v2-1df51f8cf2acb35ffe174a07_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1752& data-rawheight=&944& class=&origin_image zh-lightbox-thumb& width=&1752& data-original=&https://pic3.zhimg.com/v2-1df51f8cf2acb35ffe174a07_r.jpg&&&/figure&&ul&&li&&b&中文界面:&/b&我这种学渣的独特需求&/li&&li&&b&免费:&/b&这么好用还免费,不推荐不是人(当然了,也有更高级的收费版)&/li&&/ul&&p&&b&【总体评价】&/b&墨刀也有Axure之类的母版的功能,虽然不如Sketch强大,但对于产品经理,已经绝对够用了,简单+好用+免费,成为我这几年最喜欢的交互软件&/p&&blockquote&PS:墨刀的PC客户端也很好用,也是账号同步,并且支持取色之类的功能&/blockquote&&p&&b&【收费情况】&/b&免费&/p&&p&&b&【推荐指数】★★★★★&/b&&/p&&h2&&b&2、必备TO-Do管理:Trello 吐血推荐!!!&/b&&/h2&&p&做产品的经常会被打断,被各种插入任务,这个工具帮助你整理好自己之后做事情,不重不漏,即使有事情插进来,也可以井然有序,从容不迫。&/p&&p&一件事情一张卡片,做完的事情移动到对应栏或者归档,分享一下我的分类。&/p&&ul&&li&&b&今日计划:&/b&每天来公司的第一件事情,就是清理今日计划栏,确定今天要做的事情&/li&&li&&b&本周计划:&/b&近期要完成的事情,今日计划大多从此栏中挑选放到今日计划&/li&&li&&b&其他工作:&/b&什么信用卡还款,报销之类的,和工作没有直接相关的,我单独列出来,不想干活,想划一划的时候,完成这里的卡片&/li&&li&&b&完成:&/b&做完的事情移到这一栏,一周清理一次。你的周报要写什么,就看这一栏&/li&&li&&b&下周计划:&/b&非本周要完成的工作计划&/li&&li&&b&后续要做的需求:&/b&做产品这一行,动不动就会有一些新点子,先记在这里,之后当你要列FL的时候,可以从里面挑出来一些。&/li&&/ul&&figure&&img src=&https://pic2.zhimg.com/v2-bb813730edfa0e6bba8f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1685& data-rawheight=&853& class=&origin_image zh-lightbox-thumb& width=&1685& data-original=&https://pic2.zhimg.com/v2-bb813730edfa0e6bba8f_r.jpg&&&/figure&&p&&br&&/p&&p&Trello还可以针对不同的卡片增加不同的颜色,一般我会以项目来区分&/p&&p&当然你可以把绿色留给老板,老板布置的任务标记个绿色(为什么是绿色呢?黑人问号?)&/p&&figure&&img src=&https://pic1.zhimg.com/v2-85a7aa5c0bacd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&924& data-rawheight=&657& class=&origin_image zh-lightbox-thumb& width=&924& data-original=&https://pic1.zhimg.com/v2-85a7aa5c0bacd_r.jpg&&&/figure&&p&Trello也有手机版,手机上和网页也是同步的。对了,Trello可以插入图片的,不过我不太用。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-b86d4d50adbcf5c5fb6e7f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1178& data-rawheight=&653& class=&origin_image zh-lightbox-thumb& width=&1178& data-original=&https://pic4.zhimg.com/v2-b86d4d50adbcf5c5fb6e7f_r.jpg&&&/figure&&p&&b&【整体评价】&/b&我之前用过番茄工作法和各种TODoList之类的APP,最终还是选择了Trello,一件事情一张卡片,非常好用,可视化的面板,基本上我现在离开他是挂机的状态。&/p&&p&&b&【收费情况】&/b&免费&/p&&p&&b&【推荐指数】&/b&★★★★★&/p&&h2&&b&3、最强大的截图+后处理工具:Snagit 吐血推荐!!!&/b&&/h2&&p&这款软件是7年前我在微软实习的时候,我的Mentor推荐给我的。结果一用就是7年,好用到爆,我敢说,这个将是你使用过,最好用的截图编辑软件,没有之一。缺点是,这个软件不是免费的……只能免费试用……&/p&&p&对了,这篇文章中所有的图片+Gif的后处理全部都是用Snagit制作的&/p&&ul&&li&&b&常用的功能&/b&&/li&&/ul&&p&&b&-两张图迅速拼在一起:&/b&选中一张复制后,到另一张那边黏贴&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d3fcdaafb4dad48_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&546& data-rawheight=&402& class=&origin_image zh-lightbox-thumb& width=&546& data-original=&https://pic4.zhimg.com/v2-d3fcdaafb4dad48_r.jpg&&&/figure&&p&&b&-增加标注/线框/数字符号等&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-6a399e6e6b0d8e17feba_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&550& data-rawheight=&405& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic3.zhimg.com/v2-6a399e6e6b0d8e17feba_r.jpg&&&/figure&&p&&b&-模糊/马赛克&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-cea721bfb2acc7b2ecedee1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&561& data-rawheight=&412& class=&origin_image zh-lightbox-thumb& width=&561& data-original=&https://pic4.zhimg.com/v2-cea721bfb2acc7b2ecedee1_r.jpg&&&/figure&&p&&b&-局部剪裁&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-5a7cd2d6f71e3ab55e5128_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&633& data-rawheight=&466& class=&origin_image zh-lightbox-thumb& width=&633& data-original=&https://pic1.zhimg.com/v2-5a7cd2d6f71e3ab55e5128_r.jpg&&&/figure&&p&&b&-资料库回溯:&/b&之前的用Snagit的截图和编辑的图片都在,而且速度一点都不会慢(为了防止暴露隐私,必须加一层模糊了,逃……)&/p&&figure&&img src=&https://pic1.zhimg.com/v2-fd7a093b92bf8ae1b46a7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1185& data-rawheight=&871& class=&origin_image zh-lightbox-thumb& width=&1185& data-original=&https://pic1.zhimg.com/v2-fd7a093b92bf8ae1b46a7_r.jpg&&&/figure&&p&&br&&/p&&ul&&li&&b&不常用,但是超屌的功能&/b&&/li&&/ul&&p&&b&-截取整个网页:&/b&网页一屏展示不下,一键可以滚动截屏,体验贼好&/p&&figure&&img src=&https://pic4.zhimg.com/v2-db35fa86c3adf236a3e6ca0e_b.jpg& data-size=&normal& data-rawwidth=&412& data-rawheight=&800& class=&content_image& width=&412&&&figcaption&避免干扰阅读,这张超长图做了缩小,他}

我要回帖

更多关于 两位数相乘的简便方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信