cos

2019_BUAAOO_第一单元总结

北战南征 提交于 2020-04-29 22:25:27
前言   校历第五周,面向对象程序设计课程的第一单元告一段落。在第一单元的作业中,我们围绕着“表达式求导”的题目展开,从第一次作业的最简单的多项式求导,到第二次作业增加简单的三角函数求导,再到第三次作业增加复合函数嵌套求导……难度是在不断增加的,但是如果从一开始的第一次作业的设计就有着清晰的层次和逻辑,为后面的两次作业留下扩展的空间,那么在后续的作业中可谓是事半功倍。但是想必大多数人拿到新作业都是要对代码进行重构的,包括我本人。   完成第一单元的三次作业,回过头看,还是有很多值得分析和思考的地方的。这篇博客就将对本人在这三次作业中的代码进行分析,并简单给出自己的做题思路,若有不当之处,还请大家及时指出。 一、分析程序结构   1. 第一次作业(简单多项式求导)   在做第一次作业时,我还完全不理解面向对象是什么(虽然现在也只是一知半解……)。但是为了避免“一main到底”的情况出现,我还是象征性的建了一个类。   在Exp这个类中,有很多对表达式进行操作的方法,如判断合法,split分成一项一项,求导运算等等。以下是第一次作业的复杂度和行数统计。   由此得出在Exp.calculate()方法中的复杂度还是比较高的,也是后续可以优化的一个方面。在本次作业中,最主要的思路是用每一项的正则表达式去匹配,匹配到之后用substring将匹配的字符串取出并对其用 * 和 ^

【OO学习】OO第一单元作业总结

谁说我不能喝 提交于 2020-04-29 21:26:27
OO第一单元作业总结   在第一单元作业中,我们只做了一件事情:求导,对多项式求导,对带三角函数的表达式求导,对有括号嵌套的表达式求导。作业难度依次递增,让我们熟悉面向对象编程方法,开始从面向过程向面向对象转变。本文中,我将介绍我个人每一次作业的做法,以及三次作业的分析,互测时策略。 第一次作业   第一次作业由于只对多项式进行求导,求导的函数只有幂函数,项与项之间仅有和关系,因此处理起来比较简单,输入可以使用正则表达式提取数据,存储可以使用HashMap,这样可以很方便的实现合并同类项,输出也只需要判断几种省略条件。   结构上,我定义了一个Poly类和Term类分别来处理多项式和项。每个项有自己的指数和系数,一个多项式由项与项之间的和关系构成。多项式求导时,每个项求导后还是一项,求导后的项又可以构成一个新的多项式。输出时,多项式的输出是每个项输出的结合。整体结构非常简单,直观。 第二次作业   第二次作业中出现了sin(x), cos(x)因子,而且出现了乘积关系(常数因子、幂函数因子、三角函数因子),情况比第一作业复杂。但是常数因子可以合并为系数,幂函数因子也可以合并,两种三角函数因子也可以合并,因此我们可以得到每一项又一个四元组组成(系数,幂函数指数,sin(x)指数,cos(x)指数)。同样适用上一次HashMap的方法,将三种指数变成类似“x1s2c3”

面向对象程序设计第一单元总结(求导程序)

家住魔仙堡 提交于 2020-04-29 20:51:45
2019面向对象课程序设计第一单元总结 前言    对于像我这样的第一次接触面向对象编程的人来说,在写第一次作业的时候我就一直在思考,我的程序怎么样才能写的有面向对象思维,在翻阅了许多书籍以后,我也只是粗略地有个模糊印象,比如每个类里面的方法需要尽量地减少对其他类方法的依赖,做到尽量地独立。在分析问题的时候要先考虑问题中的元素能够抽象成什么样的对象,比如第三次作业设计的时候,我在看完指导书就有了一个架构的设计:通过表达式->项->因子->表达式构建一个树形结构来进行链式求导,因此对于求导问题就可以抽象为表达式、项、因子之间的交互,最终通过它们各自的求导规则来完成所要求的求导服务。因子又可以作为一个父类,三角函数、幂函数和常数作为它们的子类,对构造器和方法进行重写,再次使用它们各自的求导规则进行求导,通过第三次作业我也渐渐明白了面向对象的思想,希望能在下一个单元的学习中有更多的收获。 1.需求分析    本次作业总体目标是构建一个能判断输入是否合法、并且能对合法的输入表达式进行求导的程序。如果输入不合法,则输出WRONG FORMAT! 如果输入合法,则应当求出正确答案。 2.程序设计思路与结构分析    这部分我采用了IDEA的 Metrics插件 的Complexity mertics,对于这个插件有一些术语在这里需要解释一下: ev(G): 一个方法或者类的结构化复杂度

云函数如何做到 1 分钟创建 6000 台云服务器?

余生颓废 提交于 2020-04-29 15:48:39
解密背后承担云服务器创建任务的 CBS 云硬盘快照服务 云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助用户在无需购买和管理服务器的情况下运行代码。而随着方便快捷的云原生服务愈发受人青睐,业务量与日俱增,作为提供云函数 SCF 底层支持的云服务器,也承受着越来越大的压力。鲜为人知的是,承担云服务器创建任务的,是 CBS 云硬盘快照服务。当云函数 SCF 团队需要业务扩容或版本变更,云服务器创建并发量会增长为平常业务系统的数十倍。 通过不断优化服务,在云函数 SCF 业务高峰期,云硬盘快照系统扛住了 1 分钟内并发创建 6000 台云服务器的压力。 那么,云硬盘快照是如何做到的? 一、SCF 与 CBS 的协作之路 由于CVM云服务器和CBS云硬盘在弹性扩容、资源管理工作中便捷性突出,云函数SCF团队逐步使用CVM云服务器和CBS云硬盘搭建底层系统。当云函数SCF云函数需要发布新版本时,会使用新版本的系统镜像批量创建云服务器,逐步替换旧版本镜像云服务器。云硬盘团队和云函数SCF团队反复协商沟通,在不影响现网其他用户的正常业务,初步的整体目标为:1分钟内并发创建6000台CVM,且服务器启动后IO延时抖动稳定。 二、云服务器创建 当说到云服务器创建,就不得不提CBS云硬盘快照服务,它是云硬盘某个时刻的数据备份

云函数如何做到 1 分钟创建 6000 台云服务器?

痴心易碎 提交于 2020-04-29 15:10:25
解密背后承担云服务器创建任务的 CBS 云硬盘快照服务 云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助用户在无需购买和管理服务器的情况下运行代码。而随着方便快捷的云原生服务愈发受人青睐,业务量与日俱增,作为提供云函数 SCF 底层支持的云服务器,也承受着越来越大的压力。鲜为人知的是,承担云服务器创建任务的,是 CBS 云硬盘快照服务。当云函数 SCF 团队需要业务扩容或版本变更,云服务器创建并发量会增长为平常业务系统的数十倍。 通过不断优化服务,在云函数 SCF 业务高峰期,云硬盘快照系统扛住了 1 分钟内并发创建 6000 台云服务器的压力。 那么,云硬盘快照是如何做到的? 一、SCF 与 CBS 的协作之路 由于CVM云服务器和CBS云硬盘在弹性扩容、资源管理工作中便捷性突出,云函数SCF团队逐步使用CVM云服务器和CBS云硬盘搭建底层系统。当云函数SCF云函数需要发布新版本时,会使用新版本的系统镜像批量创建云服务器,逐步替换旧版本镜像云服务器。云硬盘团队和云函数SCF团队反复协商沟通,在不影响现网其他用户的正常业务,初步的整体目标为:1分钟内并发创建6000台CVM,且服务器启动后IO延时抖动稳定。 二、云服务器创建 当说到云服务器创建,就不得不提CBS云硬盘快照服务,它是云硬盘某个时刻的数据备份

云函数如何做到 1 分钟创建 6000 台云服务器?

百般思念 提交于 2020-04-28 20:34:44
解密背后承担云服务器创建任务的 CBS 云硬盘快照服务 云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助用户在无需购买和管理服务器的情况下运行代码。而随着方便快捷的云原生服务愈发受人青睐,业务量与日俱增,作为提供云函数 SCF 底层支持的云服务器,也承受着越来越大的压力。鲜为人知的是,承担云服务器创建任务的,是 CBS 云硬盘快照服务。当云函数 SCF 团队需要业务扩容或版本变更,云服务器创建并发量会增长为平常业务系统的数十倍。 通过不断优化服务,在云函数 SCF 业务高峰期,云硬盘快照系统扛住了 1 分钟内并发创建 6000 台云服务器的压力。 那么,云硬盘快照是如何做到的? 一、SCF 与 CBS 的协作之路 由于CVM云服务器和CBS云硬盘在弹性扩容、资源管理工作中便捷性突出,云函数SCF团队逐步使用CVM云服务器和CBS云硬盘搭建底层系统。当云函数SCF云函数需要发布新版本时,会使用新版本的系统镜像批量创建云服务器,逐步替换旧版本镜像云服务器。云硬盘团队和云函数SCF团队反复协商沟通,在不影响现网其他用户的正常业务,初步的整体目标为:1分钟内并发创建6000台CVM,且服务器启动后IO延时抖动稳定。 二、云服务器创建 当说到云服务器创建,就不得不提CBS云硬盘快照服务,它是云硬盘某个时刻的数据备份

FFT IP核调用与仿真之FFT数学分析

雨燕双飞 提交于 2020-04-28 04:47:37
对于FFT这个IP核,我其实对它真的是又爱又恨,因为它真的耗费了我太多时间,但是随着研究的深入,遇到的问题一点点给消化解决,终于不用带着问题睡觉了,哈哈, 有时候真的挺佩服自己的,遇到不懂的,不了解的,真的不允许自己留一点疑惑,必须深挖到底,一点含糊都不留给自己,其实,不知道大家有没有这样的疑惑,现在不懂的,懒得去研究的,估计过不了多久这个知识点又会兜回来找你的。我有时候也会侥幸自己能逃过不会做的任务,但是真的过不了多久,我越是不会的东西就越是会来找我,感觉今天的话有点多,赶紧回到正题上来。 FFT是什么?我也曾经花了大半个月的时间去研究过它的原理,还手写代码不调用IP核去实现它的计算,这个实现过程还是挺复杂的,所以最简单易上手的还是好好学会调用IP核吧,这个IP核真的忒好用呢。 FFT其实本质上就是用来做频谱分析的,我给你一堆混杂的频谱,你知道里面有哪些频率吗?你不知道,但是FFT知道,它能帮你分析混杂频谱中有哪些频率成分。说得官方一点就是:FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域,有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了,这就是很多信号分析采用FFT变换的原因。 简单来说,FFT的作用就是对信号进行频谱分析 。 我们首先结合MATALB这个强大的数学分析软件来生动阐释下FFT这个概念,它可以拿来做什么

【GAMES101-现代计算机图形学课程笔记】Lecture 05 Rasterization 2 (Antialiasing and Z-Buffering)

两盒软妹~` 提交于 2020-04-27 11:27:47
1. 回顾和本节摘要 1.1 上一节内容回顾 Viewing View + Projection + Viewport(将cuboid变换到屏幕空间) Rasterizing triangles Point-in-triangle test Aliasing :像素引起的锯齿状失真。 1.2 本节内容概要: Antialiasing Sampling theory Antialiasing in practice Visibility / occlusion Z-buffering 下图给出了Alias(图像失真)的例子。最左边是计算出的在三角形内的像素中心点,中间是我们想要得到的效果,右边是实际效果。买家秀和卖家秀。。。这个现象的学名就叫 aliasing 。下面主要介绍如何防止失真走样。 2. Sampling Artifacts (SA) 在图形学里, artifacts 指的是Errors / Mistakes / Inaccuracies,泛指一些不准确或者与我们预期不一样的结果。 SA有如下几类: Jaggies – sampling in space Moire – undersampling images Wagon wheel effect – sampling in time [Many more] … 主要原因是因为信号变化太快,而采样太慢。 一种反走样

物联网时代-新基建-ThingsBoard调试环境搭建

混江龙づ霸主 提交于 2020-04-27 10:03:37
前言 2020开年之际,科比不幸离世、疫情当道、经济受到了严重的损失。人们都不幸的感慨: 2020年真是太不真实的一年,可以重新来过就好了!国家和政府出台了拯救经济和加速建设的利好消息。3月份最热的词是什么?价值50万亿投资额的"新基建"当之无愧。 这场声势浩大的新基建投资的主要战场,涵盖包括5G建设、特高压、城际高速铁路和城市轨道交通、新能源汽车充电桩、大数据中心、人工智能基础设施建设和工业互联网基础设施建设7个领域。其中5G建设直接放在了整个新基建列表的头名。而物联网又在7个领域中都有所或重要或涉及的部分。 为什么IoT? 如果说,"万物互联"的概念在前些年还模模糊糊让人无法感知,这次疫情让我们深刻感受到了数据的海量和终端的多样化能够多大程度保障社会的正常运转。正如中国移动董事长杨杰所说: 5G不是简单的4G+1G,而将进一步突破人和人、人和物、物和物连接的失控限制,实现人、物、资金、信息4流集中汇聚和高效协同,不断创造以智能化为核心的新业态和新模式。 从互联网到物联网,到万物互联,所有的东西、所有的事物,都可以实时接入网络。物联网已经成为信息社会的神经网络。 脱颖而出的ThingsBoard 在IoT平台中,ThingsBoard是一个备受瞩目的明星项目,其点赞数高达5K,其优秀的性能和高效的性能得到了广大开发者的认可。ThingsBoard是用于数据收集、处理

两个圆的公切线

混江龙づ霸主 提交于 2020-04-27 08:08:09
两个圆的公切线 圆上任意一点拥有唯一的圆心角 struct circle{ Point p; double r; // 通过圆心角求圆上某一点 Point point(double a){ return Point(p.x + cos(a) * r, c.y + sin(a) * r); } } 根据两个圆的位置关系来确定情况 两个圆内含,没有公共点,没有公切线 两圆内切,有一个条公切线 两圆完全重合,有无数条公切线 两圆相交。有2条公切线 两圆外切,有3条公切线 两圆相离,有4条公切线 1 与 3 什么都不求,情况 2 可以直接求出直线AB的极角进而转换为圆心角来求切点,连接切点和圆心,旋转90度即可得到切线。 情况 4 有两条外公切线,求出圆心距 \(d\) 以及 \(|AG|\) 即可求出 \(\alpha\) 的大小,根据 \(\vec{AB}\) 的极角进行旋转即可求出切点,进而得到切线 情况 5 的内切线类似情况2 情况 6 的外公切线与情况4完全一样 情况 6 的内切线也是先求出圆心角 \(\alpha\) ,如何求? \(\cos \alpha = \frac{A_r+B_r}{|AB|}\) // a[i] 存放第 i 条公切线与 圆A 的交点 int getTangents(circle A, circle B, Point*a, Point *b){ int