创建分卷压缩文件
1 | zip -s 100m -r file.zip foo/ |
-s
: 创建分卷的大小-r
: 循环压缩文件夹下面的内容
切分已有的文件:
1 | zip existing.zip --out new.zip -s 50m |
执行完之后会创建下面一系列文件:
1 | new.zip |
解压分卷文件
1 | # 将分卷文件合并成一个单独的文件 |
四个维度
性能可扩展:性能无法完全实现线性扩展,但要尽量使用具有并发性和异步性的组件。 具备完成通知功能的工作队列要优于同步连接到数据库。
可用性可扩展:CAP理论表明,分布式系统无法同时提供一致性、可用性和分区容错性保证。 许多大规模Web应用程序都为了可用性和分区容错性而牺牲了强一致性,而后者则有赖于最终一致性来保证。
维护可扩展:软件和服务器都需要维护。在使用平台&工具监控和更新应用程序时,要尽可能地自动化。
成本可扩展:总拥有成本包括开发、维护和运营支出。在设计一个系统时,要在重用现有组件和完全新开发组件之间进行权衡。 现有组件很少能完全满足需求,但修改现有组件的成本还是可能低于开发一个完全不同的方案。 另外,使用符合行业标准的技术使组织更容易聘到专家,而发布独有的开源方案则可能帮助组织从社区中挖掘人才。
我们为了保证系统的高可用性,如果按着每天访问的峰值作为标准来设计系统, 绝大数情况下访问量较低时,无论是硬件资源还是网络带宽等资源都会造成巨大的浪费。 那么如何从技术上解决这个问题呢?答案是大规模弹性架构设计。
大规模弹性架构的主要设计目标是系统的高可用性和高扩展性:根据系统的实际需要,系统自动弹性分配资源。 在需求量大,比如峰值的时候,系统自动调配足够的资源;在访问量小,系统自动释放出部分的资源,从而实现资源的按需分配。
那么大规模弹性架构的基本工作原理是什么?其主要是利用高性能虚拟化技术,实现了计算、存储和网络资源的统一调度和弹性分配。
实现动态部署。为了应对突发峰值访问量或者可能的网络攻击,需要在应用服务器内部部署一些监控程序, 由主控程序判断当前整个集群的负载情况,自动增加或者减少服务节点,并且自动部署应用程序,从而从容应对突增的业务流量。
实现故障自动恢复。当一台物理机损坏时,系统需要自动监测到硬件故障,并且在第一时间内, 把云服务器迁移到新的宿主机上,同时硬盘数据需要保持最后一刻的状态。数据安全是第一位, 因为数据始终面临误删文件、病毒破坏、程序写错、硬件损坏等种种可能的风险。在弹性计算平台上, 需要利用快照功能自动完成数据的备份。
Basic认证是HTTP中非常简单的认证方式,因为简单,所以不是很安全,不过仍然非常常用。
当一个客户端向一个需要认证的HTTP服务器进行数据请求时, 如果之前没有认证过,HTTP服务器会返回401状态码,要求客户端输入用户名和密码。 用户输入用户名和密码后,用户名和密码会经过BASE64加密附加到请求信息中再次请求HTTP服务器, HTTP服务器会根据请求头携带的认证信息,决定是否认证成功及做出相应的响应。
Basic认证要求在请求时在请求头中添加Authorization: Basic Base64编码串
,
Base64编码串
生成规则是user:password
做Base64编码。
curl使用-u, --user <user:password>
设置Basic认证。
详见:HTTP Authentication: Basic and Digest Access Authentication
curl命令是一个利用URL规则在命令行下工作的文件传输工具。 它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。 作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、 cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。 做网页处理流程和数据检索自动化,curl可以祝一臂之力。
options | description |
---|---|
-d/–data <data> | 传送数据 |
-H/–header <line> | 自定义头信息传递给服务器 |
-i/–include | 输出时包括protocol头信息 |
-I/–head | 只显示请求头信息 |
-o/–output | 把输出写到该文件中 |
-O/–remote-name | 把输出写到该文件中,保留远程文件的文件名 |
–progress | 显示进度条 |
-s/–silent | 静默模式,不输出任何东西 |
-w/–write-out [format] | 什么输出完成后 |
-X/–request <command> | 指定什么命令 |
SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。SQLite是在世界上最广泛部署的SQL数据库引擎。
SQLite优点:
使用Docker部署thinkphp,需要注意几件事:
VirtualHost
的DocumentRoot
指向public目录;mod_rewrite.so
模块;1 | FROM php:5.6-apache |
如果在项目中用到了扩展,使用docker-php-ext-install
命令安装相应的扩展:
1 | # 安装postgresql扩展 |
Git帮助命令,用来查看Git帮助,直接使用git help
可以查看git所有相关的子命令,
使用git help <subcommand>
可以查看对应子命令的详细内容。
1 | git help # 查看git帮助 |
Git初始化命令,直接在一个空目录下执行命令git init
即可,
当然,也可以在一个不是git项目的目录下执行。
Git配置命令,用来配置一些git常用的配置参数,例如用户名等。
git配置一般分为两种,一种是当前项目的配置,一种是全局的配置。 如果两个位置都有同一个配置,当前项目的配置覆盖全局的配置。
1 | git config user.name # 查看用户名设置 |
将待提交的文件缓存到暂存区。
1 | git add <filename> # 将文件filename提交到暂存区 |
将暂存区中的文件提交。
1 | git commit -m '<reason>' # 提交,并解释提交的理由 |
brew安装完软件之后:
/usr/local/etc
目录下/usr/local/Cellar
目录下/usr/local/bin
目录下GIFT格式是一种编写可导入试题的格式,它可用来编写选择题、判断题、简答题、填空题以及数字题。 GIFT格式可是题库可导出格式的一种。这种格式是Moodle社区内开发的,其他软件或多或少支持它。
符号 | 说明 |
---|---|
// text |
Comment until end of line (optional) |
::title:: |
Question title (optional) |
text |
Question text (becomes title if no title specified) |
[...format...] |
The format of the following bit of text. Options are [html] , [moodle] , [plain] and [markdown] . The default is [moodle] for the question text, other parts of the question default to the format used for the question text. |
{ |
Start answer(s) – without any answers, text is a description of following questions |
{T} or {F} |
True or False answer; also {TRUE} and {FALSE} |
{ ... =right ... } |
Correct answer for multiple choice, (multiple answer? – see page comments) or fill-in-the-blank |
{ ... ~wrong ... } |
Incorrect answer for multiple choice or multiple answer |
{ ... =item -> match ... } |
Answer for matching questions |
#feedback text |
Answer feedback for preceding multiple, fill-in-the-blank, or numeric answers |
####general feedback |
General feedback |
{# |
Start numeric answer(s) |
answer:tolerance |
Numeric answer accepted within ± tolerance range |
low..high |
Lower and upper range values of accepted numeric answer |
=%n%answer:tolerance |
n percent credit for one of multiple numeric ranges within tolerance from answer |
} |
End answer(s) |
\character |
Backslash escapes the special meaning of ~ , = , # , { , } , and : |
\n |
Places a newline in question text – blank lines delimit questions |