OS4

算法的时间复杂度和空间复杂度

无人久伴 提交于 2020-05-04 23:41:23
最近在研究数据结构与算法,在B站中找到了小甲鱼的《数据结构与算法课程》,挺有意思的! (小甲鱼)数据结构和算法 对于一个算法来说,分析有两步,第一是从数学上证明算法的正确性,第二步是分析算法的时间复杂度。 算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能反映出算法的优劣与否。 度量一个程序的执行时间通常有两种方法。 一、事后统计的方法 该方法有两个缺陷: 1、要想对设计的算法的运行性能进行评测,必须先依据算法编制相应的程序并实际运行; 2、所得的统计量依赖于计算机的硬件、软件等环境因素,有时容易掩盖算法本身的优势。 二、事前分析估算的方法 一个用高级语言编写的程序在计算机上运行时所消耗的时间取决于下列因素: 算法采用的策略、方法; 编译产生的代码质量; 问题的输入规模; 机器执行行指定的速度; 一个算法是由控制结构(顺序、分支和循环)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果。为了便于比较同一个问题的不同算法,通常的做法是,从算法中选取一种对于所研究的问题(或算法类型)来说是基本操作的原操作,以该基本操作的重复执行的次数作为算法的时间量度。 三、时间复杂度 1、时间频度 一个算法执行所消耗的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试 ,只需知道哪个算法花费的时间多

死磕Tomcat系列(3)——Tomcat如何做到一键式启停的

喜夏-厌秋 提交于 2019-11-29 15:33:46
死磕Tomcat系列(3)——Tomcat如何做到一键式启停的 在没有SpringBoot内嵌有Tomcat之前,我们都是将项目打为War包放在Tomcat的webapp目录下面,然后如果是Linux系统,运行命令 start.sh 、如果是Windows系统,运行命令 start.bat 以后就能启动起来并访问到页面。如果是想要停止运行只需要运行 shutdown.sh 或者 shutdown.bat 就能将程序停止起来,那么Tomcat是如何做到只需要一个命令就将所有容器启动起来呢? 脚本分析 start.sh 和 start.bat 里面的内容相同,所以这里就主要分析 start.sh 的内容了。 os400=false case "`uname`" in OS400*) os400=true;; esac # resolve links - $0 may be a softlink # PRG是脚本路径,如果当前脚本文件为软连接,则会解析出PRG真正文件所在的路径 PRG="$0" while [ -h "$PRG" ] ; do # 判断是否为软连接 ls=`ls -ld "$PRG"` # 如果是软连接,输出中含有lin -> source的字符串 link=`expr "$ls" : '.*-> \(.*\)$'` # 模式匹配出源文件的路径 if expr "