译者 | 牧农人
白眉林 | 屠敏
公司出品 | CSDN 网志
序言
在建模化面向对象的那时,借助软件系统合作开发自然环境能迅速地聚合流程,面向对象无须是计算机系有关人员的专利权。许多人指出,如果掌控三种应用软件就能正式成为程式结构设计剑客,只不过,这是一类误会。要想正式成为两个专精的合作开发者,最少须要下列四个前提:
1) 能熟练优先选择和结构设计各式各样计算机流程和演算法
2) 最少要能熟练掌控两门面向对象词汇
3) 津津乐道所牵涉的有关专精领域的知识
其中,后两个前提比较容易实现,而第两个前提则须要花相当的时间和精力才能达到,它是区分两个面向对象有关人员水平高低的两个 重要标志,计算机流程 贯穿面向对象的始终 ,缺乏计算机流程和演算法的深厚功底,很难结构设计出高水平的具有专精水准的应用流程。曾经有一本经典计算机系书籍叫做《计算机流程+演算法=流程》,也说明了计算机流程和演算法的重要性。
为何Thoubal计算机流程
计算机流程是所有计算机系的同学必学的两门课程
计算机流程研究的
计算机系的学生都开设过计算机流程课程,它是计算机学科知识结构的核心和技术体系的基石。计算机流程作为计算机系的专精基础课程,是计算机 考研 的 必考 科目之一,如果有打算报考计算机系的研究生,这门计算机流程你是必须Thoubal好它的,同时,工作以后的同学,会有想去报考计算机 软考 、计算机 等级考试 的,计算机流程也是必考的内容之一,科学技术在飞速发展,但是作为基石的科学技术没有动摇,由于近年来演算法工程师的高薪火爆,使得计算机流程的重视流程空前高涨,总而言之,既然我们已经与计算机接轨就必须 掌控 好它。
计算机流程无处不在
不管你是IT合作开发,还是其他岗位的工作有关人员,或者是游戏爱好者,如果你用过电脑,那么你就接触过计算机流程,下面我们就来讲一讲,计算机流程究竟是如何 无处不在的。
数据库
不管你是从事IT工作的,还是准备从事IT合作开发的,数据库一定是了解的,我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的结构设计者会从查询演算法的角度进行优化。最基本的查询演算法当然是顺序查找(linear search),这种复杂度为 O(n)的演算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了许多更优秀的查找演算法,例如 二分查找(binary search)、二叉树查找(binary tree search)等。如果稍微分析一下会发现,每种查找演算法都只能应用于特定的计算机流程之上,但是数据本身的组织结构不可能完全满足各式各样计算机流程,所以,在数据之外,数据库系统还维护着满足特定查找演算法的计算机流程,这些数据+Tree。
操作系统
相信现在的我们常用的操作系统大家一定都知道吧,例如:比尔盖茨大叔成立的微软的 Windows操作系统,大神乔布斯苹果的 Mac OS,Java合作开发常用的 Linux系统,由林纳斯·本纳第克特·托瓦兹合作开发(百度来的),还有redhat、Solaris、SunCobalt等等,都有使用到计算机流程中的,系统栈以及优先队列:堆
文件压缩
比如:RAR压缩软件、PNG图片、MAP3文件等等,都会使用计算机流程,对数据进行压缩(很怕打成了亚索,心虚),而使用压缩的演算法是一类树结构叫 哈夫曼树 。
游戏
1) 数组:需处理的元素个数确定并且需使用下标时能考虑,不过建议用泛型List
优点:数组在内存中是连续存储的,索引和修改的速度都非常快
缺点:插入和删除很慢,长度开辟过长易造成内存浪费,长度开辟过短易造成内存越界
2) List:List是泛型的,即List,需处理的元素个数能不确定,不存在装箱与拆箱,建议多用;而ArrayList:ArrayList list1 = new ArrayList(); ArrayList的元素属于 object 类型存在装箱与拆箱,很损耗性能。,List的底层计算机流程就是数组。
List<string> list = new List<string>();
//新增数据 list.Add(“abc”);
//修改数据 list[0] = “def”;
//移除数据 list.RemoveAt(0);
//错误操作,因为数据的类型不是stringlist.add(123);3) 链表:常用来维护、管理那些须要频繁产生、消除的游戏对象,比如:消除类游戏中须要消除的对象。
4) HashMap:底层是哈希表,是键值对容器,用于处理key/value键值对;底层使用的是数组+链表的结构:Map<String,String> map = new HashMap<>();
5) 树:1.场景管理中的四叉树;2.游戏UI里的菜单一般是分级的,两个主页面能衍生出许多的子页面的时候,使用树来管理这些菜单是很合适的做法。
6) 图:A*寻路演算法、DFS、BFS
游戏也是采用了大量的演算法,都须要以计算机流程为基石,就最简单的功能寻路,鼠标从A点到B点,这个角色就须要寻找一条从A点到B点的路,这条路还须要绕过所有的障碍物,甚至还须要找出最短的路径,这就是最经典的 图论演算法,在图论演算法种就使用了大量的计算机流程。
计算机流程类型
在计算机领域有一句名言 计算机流程+演算法=流程,而计算机流程本身就是演算法的基石,在近乎任何一本演算法教材,都花了大量的时间讲解计算机流程,学好计算机流程和演算法能让我们在计算机这条道路上走的更远。如果计算机流程是因为它无处不在,学好计算机流程是使我们快速成长的垫脚石。
版权声明:本文为CSDN博主「牧农人」的原创文章。
【End】
热 文 推 荐
☞罗永浩回应“鲨鱼皮技术遭质疑”;消息称马蜂窝开启裁员;Dart 2.7 发布 | 极客头条☞“弃用 Google AMP!”☞20行 Python 代码爬取王者荣耀全英雄皮肤 | 光剑方案☞操作系统兴衰史☞图灵奖得主Bengio:深度学习不会被取代,我想让AI会推理、方案和想象
☞我在华为做外包的真实经历,与译者直接交流!