汇智动力学院成就你的IT梦!
成都汇智动力老师直接接听
作者:汇智动力学院 来源:汇智动力学院 2022/10/6 14:23:13
提到高并发,这几年几乎是火遍编程界的网络名词了。无它,随着现...
结论: 我们发现使用Runnable接口的方式可以让t1、t2、t3三个窗口线程同时在卖100张票,而不是每个线程都卖100张,这是因为t1、t2、t3都使用了同一个Runnable实例。显然Runnable接口的实现可以实现100张票资源的共享,但是通过运行结果我们会发现一个令人困惑的问题,就是不管程序运行多少次,总是有两个或者三个线程卖了同一张票!这是什么原因导致的呢?其实这就是所谓的著名的 “多线程并发访问不安全的问 题”! 后面的篇章中我们会介绍为什么多线程访问对象会不安全。 二、算法的设计原则 ①、正确性:首先,算法应当满足以特定的“规则说明”方式给出的需求。其次,对算法是否“正确”的理解可以有以下四个层次: 一、程序语法错误。 二、程序对于几组输入数据能够得出满足需要的结果。 三、程序对于精心选择的、典型、苛刻切带有刁难性的几组输入数据能够得出满足要求的结果。 四、程序对于一切合法的输入数据都能得到满足要求的结果。 PS:通常以第 三 层意义的正确性作为衡量一个算法是否合格的标准。 ②、可读性:算法为了人的阅读与交流,其次才是计算机执行。因此算法应该易于人的理解;另一方面,晦涩难懂的程序易于隐藏较多的错误而难以调试。 ③、健壮性:当输入的数据非法时,算法应当恰当的做出反应或进行相应处理,而不是产生莫名其妙的输出结果。并且,处理出错的方法不应是中断程序执行,而是应当返回一个表示错误或错误性质的值,以便在更高的抽象层次上进行处理。 ④、高效率与低存储量需求:通常算法效率值得是算法执行时间;存储量是指算法执行过程中所需要的*大存储空间,两者都与问题的规模有关。 前面三点 正确性,可读性和健壮性相信都好理解。对于第四点算法的执行效率和存储量,我们知道比较算法的时候,可能会说“A算法比B算法快两倍”之类的话,但实际上这种说法没有任何意义。因为当数据项个数发生变化时,A算法和B算法的效率比例也会发生变化,比如数据项增加了50%,可能A算法比B算法快三倍,但是如果数据项减少了50%,可能A算法和B算法速度一样。所以描述算法的速度必须要和数据项的个数联系起来。也就是“大O”表示法,它是一种算法复杂度的相对表示方式,这里我简单介绍一下,后面会根据具体的算法来描述。 相对(relative):你只能比较相同的事物。你不能把一个做算数乘法的算法和排序整数列表的算法进行比较。但是,比较2个算法所做的算术操作(一个做乘法,一个做加法)将会告诉你一些有意义的东西; 表示(representation):大O(用它*简单的形式)把算法间的比较简化为了一个单一变量。这个变量的选择基于观察或假设。例如,排序算法之间的对比通常是基于比较操作(比较2个结点来决定这2个结点的相对顺序)。这里面就假设了比较操作的计算开销很大。但是,如果比较操作的计算开销不大,而交换操作的计算开销很大,又会怎么样呢?这就改变了先前的比较方式; 然后我们再说说算法的存储量,包括: 程序本身所占空间; 输入数据所占空间; 辅助变量所占空间; 一个算法的效率越高越好,而存储量是越低越好。 三、算法的分类 算法可以宏泛的分为三类: 一,有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。 二,有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是的或确定的。 三,无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。 Java中常见的算法有: ①、排序 排序就是对一组数据按照一定的顺序(从大到小或者从小到大)进行排序; 常见排序如下: 简单排序:冒泡排序、选择排序、插入排序; 高级排序:快速排序、希尔排序、归并排序、基数排序、鸡尾酒排序等等; ②、递归 递归是一种直接或者间接调用自身的一种算法,递归的目的是简化程序设计使程序更加易读; ③、查找 在一些(有序的/无序的)数据元素中,通过一定的方法找出与给定关键字相同的数据元素就叫做查找; ④、统计 指对有关数据的搜集、整理、计算、分析、解释、表述等的活动。 往期文章 墙裂推荐 [ 1] Java开发篇——设计模式(5)装饰设计模式 [2] Java开发篇——设计模式(4)先生需要代购吗? [3] Java开发篇——设计模式(3)面试被问工厂模式?不要怕看这里! 原创视频 墙裂推荐 2022转行软件测试之开班动态 ↓↓↓
活动福利 // 1 毕业礼包 | 毕业学员免费赠送《软件测试技术大咖专题课》,助力学员早日突破高薪瓶颈 // 2 入职礼包 |就业学员免费赠送《Java语言开发视频课》及全套源代码,市场价值12800元 // 3 推荐有奖 |推荐好友成功报名,立得丰厚“伯乐”红包 (欢迎详询校区老师)
详询软件测试&开发培训事宜
专业解答各类课程问题、介绍师资和学校情况
微信号:186******73
相关资讯
“成都汇智动力”是成都汇智动力信息技术有限公司在教育宝平台开设的店铺,若该店铺内信息涉嫌虚假或违法,请点击这里向教育宝反馈,我们将及时进行处理。
成都汇智动力·车载测试培训
成都汇智动力·成都软件测试培训
成都汇智动力·IT培训-零基础学IT
成都汇智动力·java开发培训
成都汇智动力·金融测试培训