一件平平无奇的事情,“打开手机,录制短视频,然后上传至社交账号,然后打电话给朋友让帮忙点赞”,但这整个过程涉及哪些科学技术呢?作为计算机科学或者通信工程专业的学生,是否能会想起哪些专业课上学到的知识,在这个稀松平常的过程中发挥着重要作用。

计算机或者通信本科专业的学生通常会在大一大二学习通识课程比如概率论,线性代数,以及关于程序设计和计算机基础架构的课程。大二下或者大三开始专业课,比如数据库,操作系统,编译原理,密码学,信息论,算法性能分析,信号与系统,通信原理,电子电路,离散数学等,但给人的感觉是学的很杂和很浅。到临近毕业找工作的时候,由于公司面试大多考察编程和软件开发的能力,同学们开始苦练代码编写,熟悉各种常用的开发工具与开发架构,那些深奥零散又没有太多实际用途的专业课知识,很快就被“忘却”。

但这是加上引号的“忘却”。我记得一个专业课老师说过,计算机科学或者通信工程的任何一门专业课都是一门绝世武学,可潜心修炼发扬光大,但是修学分的大学专业课,就像当年陈近南送给韦小宝的那边“武功秘籍目录”,只是一个目录而已。既然是目录,还未开始学习,何来的忘却。至于去不去学,专攻哪个方向完全凭个人兴趣。cs或者ee专业出身的同学,如果真能找到一个兴趣方向,愿意并且有条件花时间和精力去深究,那是一件很了不起的事情。

回到上面的问题,打开手机,录制短视频,然后上传至社交账号,打电话给朋友让帮忙点赞,中间发生的哪些事情跟专业有关呢。为了清晰表述,课程的名字在下面会用粗体字表示

  • 当拿起手机的时候,你已经接触到计算机硬件了。那一部轻薄的手机里面包含着运算器(CPU),存储器和各类功能芯片,它们的本质都是集成电路设计或者说是数字电子技术的产物,把海量的晶体管,也就是“与或非门”这些基本运算单元集中到一个很小的区域,达到我们耳熟能详的14nm,7nm量级,等等。
  • 进一步来说,这么多芯片要发挥作用,通常会依附面板上获取电源并且实现互相通信,串并行总线,指令集架构(x86或者arm),通过一系列设计开发验证流程把它们装在一起。例如,各品牌的中高端手机会有专门的image processing unit来帮助快速处理照相机信号,把它处理成人类可以理解的图像数据,传递给cpu或其他芯片。这些知识会在计算机基础架构单片机微机原理的课堂上详细介绍。
  • 接下来应该是解锁界面。可以通过输入密码的方式判断你是不是手机的主人,密码可以是按钮也可以是一个图案,只要用户能够快速方便理解其含义并且做出正确操作,这就涉及人机交互了。当然,也可以通过指纹或者脸部识别解锁,这又就是模式识别技术的一个经典应用。
  • 密码验证通过,会(如果你手机没被流氓app劫持)进入一个操作系统,在华为,小米,ov,三星手机上是它们的定制android系统,在苹果手机上是iOS系统,但它们作为连接硬件和软件(app或者service)的桥梁,都要完成相似的任务,比如系统资源(内存)管理,并发任务协调和同步,防止死锁,文件管理,安全管理,在操作系统原理的课堂上会有详细的介绍。
  • 既然是手机,激活以后我们会下意识的看看周围有没有WiFi,如果没有,要查看信号强度。手机怎么跟周围的基站保持联系呢,为什么在高速行驶的列车上信号连接很可能不太好呢,你会担心自己的通话被无线电波劫持的方式干扰或者偷听吗,手机的通信频率是怎么确定的,军事上经常使用的跳频通信是怎么回事。这些问题会在通信原理无线通信系统高频电子线路等课程里面找到解答。
  • 接着你就会打开你的相机app了,一方面,这个app要确保成功的打开手机上的照相机(CCD/CMOS)硬件获取图像数据源,照相机会有焦距,畸变中心(principal point),光轴,distortion等一系列校准参数。另一方面要对raw数据进行处理,比如,美颜和修图是必不可少的。很多手机自带防抖功能确保高质量的视频录制。几乎所有手机都支持拍摄全景图(pano-view)。这些都涉及数字图像处理计算机视觉技术。
  • 手机拍摄的高清图片可以达到千万像素,视频可以达到60Hz,需要配套的视频编解码与压缩技术确保你的手机闪存可以放下尽可能多的内容,而不是拍完一段视频以后就报警存储不足。
  • 现在已经拍到满意的照片或者视频,接下来就要打开你的社交账号了,可以是微信,微博,qq,知乎,豆瓣等等。在你打开这些app的瞬间,都需要完成一个身份验证的功能,毕竟它们的服务器必须核实这是不是你本人的操作。第一次登录你会被要求输入密码,而后密码会缓存在手机上面,每次打开的时候传到服务器进行验证。然后,存放或者传输密码明文是很不安全的,所以由密码学与网络安全的知识来帮助你对密码加密,可以是对称密钥,也可以是公私密钥。
  • 连上服务器进入社交账号之后,服务器数据库会检索你的朋友列表,群列表,状态,最近会话,然后把这些信息以特定的方式显示在你的app里面。
  • 选好自己的照片或者视频,准备上传。这个选择过程其实是文件管理,是操作系统的一部分。进一步看,手机app作为客户端如何跟云端服务器建立连接呢,传输使用文件使用什么协议呢,大尺寸的文件怎么分割打包进行传输,如何确认文件是完整无修改的到达服务器呢,传输过程中要经过哪些路径和子网络呢,如果传输失败那应该怎么办呢,这些问题会在计算机网络的课程里面得到解答。
  • 当上传完成以后,社交网络会检查你是否上传了违规内容,早年的模式识别技术可以帮助过滤垃圾邮件,而新兴的机器学习可以更准确更精细的判断违规内容。通过审查之后,数据库会进行更新,让你的好友可以访问新的内容,也会按照你的要求让某部分好友无法访问。
  • 接下来当然是打电话告诉朋友们点赞啦,打电话和播放音乐是所有手机的必备功能,而它们都依赖模拟电子技术 来调制解调声音。当年我的学校还专门开设电工实习电子电路设计,分别用一个学期教会怎么从散装元器件开始焊接出一个充电器和一个扩音器。
  • 还有后续,BAT们得到你发在社交网络上的内容后,会据此推测你的年龄,喜好,收入和居住城市,然后向你定点推送广告,这里面当然就是机器学习,最近很流行深度学习网络把机器学习从实验室带到了工业界,就是把一个研究课题推广成为一份有影响力的产业。
  • 补充一点,作为用户,我们最关心的其实是整个开机拍照上传流程足够快,足够方便,并且不出错。而以上所有的数据和信息处理本质上都是计算,所以用户是希望这些计算尽可能的准确和高效,占用尽可能少的时间和空间资源。在开发过程中,有很多成熟通用的第三方标准库或者标准架构或者平台来屏蔽这些计算细节,是我们轻易获取这种稳定,精确和高效的结果。但计算机专业人士在实际工作中,肯定会遇到需要定制解决方案并且无法直接使用标准库的情况,这时候算法性能分析数值计算,和编译原理的知识会带来灵感。

【计算专业】由“打开手机 录制短视频 上传至社交账号”说计算机科学到底学什么相关推荐

  1. java短视频上传阿里云流程_短视频上传

    启动上传前需要设置上传回调,需要实现VODSVideoUploadCallback回调:vodsVideoUploadClient.uploadWithVideoAndImg(vodSessionCr ...

  2. iOS 阿里云短视频上传

    之前维护一个项目用到VODUpload上传头像,因为太忙,并没有深入研究,在此先记录一下简单的使用. 1.官方连接demo连接 安装SDK: pod 'VODUpload' 导入头文件 #import ...

  3. 各个平台短视频上传入口

    1.抖音 https://creator.douyin.com/ 2.快手 https://cp.kuaishou.com/profile 3.小红书 https://creator.xiaohong ...

  4. 安卓手机纯H5视频上传非常慢的问题解决

    原代码 //非常慢 10M传个一两分钟都不一定上传成功 var formData = new FormData(); formData.append('file', file); $.ajax({ty ...

  5. 抖音实战~实现App端视频上传、发布、落库

    文章目录 一.API阅读 1. 选择或拍摄视频 2. 云函数API~文件上传 3. 视频截帧 二.App端视频上传流程 2.1. 上传流程图 2.2. 流程简述 三.前端源码实战 3.1. 选择/拍摄 ...

  6. 华为手机录制屏幕视频的详细操作

    在众多国产手机中,华为手机是排在榜首的,不管是性能还是拍照,更别说信号,是其它手机无法相比的,但是华为手机可以录制手机屏幕吗?怎么操作华为手机录制屏幕视频呢? 使用工具: 手机 操作方法: 1.总的来 ...

  7. Android 仿微信录制短视频(不使用 FFmpeg)

    转载请标明出处与作者:https://blog.csdn.net/u011133887/article/details/83654724 项目中原本就有录制短视频的功能,使用的是 # qdrzwd/V ...

  8. 怎么用手机剪辑短视频

    现在有越来越多的人开始尝试自己剪辑短视频,可说到剪辑短视频很多人第一反应就是用电脑,其实手机一样可以剪辑短视频.下面以"清爽视频编辑器"来为大家演示怎么用手机剪辑短视频. 具体步骤 ...

  9. Android 仿秒拍,微信录制短视频

    Android 仿秒拍,微信录制短视频 之前看了别人写的代码,但是结果自己运行时出现了这种异常.一下是自己整理后的代码: -1.首先是自定义view :MovieRecorderView.class. ...

最新文章

  1. Memcached安装以及PHP的调用
  2. Linux下用汇编输出Hello, world
  3. 阿里开源富容器引擎 PouchContainer 的 network 连接机制
  4. 快速构建Windows 8风格应用13-SearchContract构建
  5. java 网络传输中发送byte[]和接收到的不一致_为什么JAVA对象需要实现序列化?
  6. 谁能给我提供一个类似下面的网站模板,先谢了
  7. 前端学习(175):弹窗
  8. ff14拆区后哪个服务器人最多,FF14拆区可以转服吗 拆区期间转服教程
  9. HDFS NameNode重启优化
  10. UGUI直接修改Image的Color和用unity自带的UI Shadr修改_Color属性的区别
  11. C语言程序设计题(函数题中15道)
  12. 知识图谱—知识存储—仅用neo4j搭建简单的金融知识图谱
  13. 如何用计算机if函数,Excel IF函数怎么用
  14. 银行账户管理程序(二)
  15. Java 中文件之魔数
  16. TODO List—2018今日头条校招
  17. 拾色器 插件 Farbtastic
  18. 【划词翻译】Ubuntu 实现划词翻译
  19. 程序设计大作业---超长正整数的减法
  20. C# MethodInvoker委托的使用

热门文章

  1. 故障排查:ArcGIS Data Store升级失败(Attempt to configure data store failed)
  2. 抽象类和接口的深度解析
  3. 长轮询和短轮询的详细介绍
  4. Ubuntu 18.04 安装WPS
  5. python句子反转_Python自定义句子反转函数
  6. Python绘制多因子柱状图到底有多简单
  7. CentOS 8 重启网络服务nmcli
  8. Rhino 倒角失败的原因
  9. C# 线程锁和单多线程简单使用
  10. easyui combotree(树形下拉框)使用收获总结