从开始学习通信基础到现在,自己一直有点疑惑,通信到底是什么,一个ServerSocket对象+一个Socket对象+通信协议吗?要是是这样,那么自己又卡在哪了?通过这几天的学习与老师的讲解,回想基础阶段的一些困惑,逐步有了自己对通信学习的一些看法。
1、用底层的眼光去看程序——追本溯源
记得以前基础阶段在学习IO的时候自己倍感纠结,什么文件流啊,数据流,缓冲流等等都绕在一起,其实现在看来无非是自己的一个观念转变不过来而已,就拿画板来说,我们熟悉的是一条直线(Line类的对象),一个圆(Oval类的对象),这些在人地惯性思维里是一个具体的概念,所以操作起来很是直观方便。但是到了画板保存的时候就变成了一个一个枯燥的字节了,另人索然无味。
程序是由数据+算法构成的,因此,上述的什么直线呀,圆呀,就其根本来说都是由一个一个字节组成的,所以当我们看到这些基本的单位时,或许就很不适应了吧,以为难度大了,殊不知我们只是去操作更基本的东西,而就操作的对象来说要求是降低了,因为只需要面对一个一个最基本的字节,但是难在哪里?我个人认为,难是难在,首先如何将这些字节组织起来的方法,换句话说,我们怕的只是一些看起来比较复杂的规则而已;其次,我们总想把东西具体化了,一条线,一个圆。缺乏一种抽象的思维,当这些东西变成字节后我们便不适应了,认不出了。
2、对通信学习的看法——才始送春归,又送君归去
为什么这么说呢?一开始在学习通信的时候感觉比较疑惑,因为新的东西并不多啊,就是多要创建两个对象ServerSocket和Socket,书上的代码看着也淋漓精致,但是除了羡慕与赞叹老师程序框架的合理性以及设计的严谨性之外,自己却无所作为。通信的关键到底在什么地方?这个阶段自己到底应该学些什么东西呢?
记得上面所说的画图板的保存吧,最多的感念就是流,而通信里面也离不开流(这里声明是TCP/IP通信协议),所以仔细一想,两者其实有很大的相同之处的。通信其实就是沟通消息,且不论是文本消息还是文件消息,只要想通过计算机来进行传输,那么的话就必须以基本的单位字节来传输。因此,我们其实完全可以将对文本文件这些具体的感念的操作转换成为对字节这一单位的操作,而流就是操作这些字节的工具,但是通信学习又难在哪里?还是那句话,难在规则上,你怎么定义自己的一套规则去传输这些字节,怎么定义一套规则让别人也能够理解,并且按照这个规则能够读出要传送的东西,这其实是很关键的一个问题,拿到现在学习的阶段来说是什么呢?就是通信协议。所以说通信的过程就是制定规则,坚守规则,执行规则的一个过程。
其实想到这里,自己以前的一些困惑也能够得到解答,学会看清数据的本质,将外界的一些具体的东西能够拆分成一个一个字节,然后从简单的创建对象、调用函数到有些难度自定规则、控制字节,这应该是通信学习与基础学习的一个差别吧。往往这些问题,老师只能够提出来,根本上还是需要自身去学习、去提高,毕竟这是能力的一个体现,这也需要自己潜下心去修炼、去体会,不放过每一个细节。
3、这是一个最好的阶段,也是一个最坏的阶段
其实我现在倒觉得通信的学习是最考验人的,首先从客观上来讲,它需要的不仅是去通过协议来组织操作一系列的字节,更重要的是要求我们去转换一种思维模式,从依赖别人的制定的规则去遵守,到自己去定义规则然后去遵守,对我来说,这的确是一个挑战。
为什么说我觉得这是一个最好的阶段?首先,它的基础技术点并不多,让你有充足的时间与精力去对付学习;其次,对于有想法的人来说,这个阶段可发散、可扩展的方向很多,UDP控制传输的实现、组播的实现、对一些软件消息格式的解析、深入学习TCP/IP协议的原理与应用,略举几例,都是很令人热血沸腾的知识。
但是为什么又说是一个最坏的阶段呢?对我来说,需要学会把握知识点与项目之间的关系,最好的当然是做到相互促进。不过我认为,在这一阶段的学习中,需要注意的问题是如何使得项目的含金量更高,换句话说,项目最好是能够展示出自己比较牢固的基础,而不是去掩饰自己知识技能的千疮百孔。所以说,能否把握学习的重点,如何真正的学会自己对一些问题具有学习能力应该是我在通信阶段需要时刻注意的。
外界事物的影响很多,不可能做到与世隔绝,不去受外界的影响,只能是坚定自己认为是值得去做的一些事情,并且坚定不移的做下去。
分享到:
相关推荐
【FPGA学习心得体会】 在深入理解FPGA的过程中,首先需要明确FPGA的含义。FPGA,全称为Field-...无论是初识FPGA的茫然,还是逐步深入后的豁然开朗,每一个阶段的学习心得都将是对未来工作和学习的巨大财富。
### nRF24L01经典编程心得 在本文中,我们将深入探讨nRF24L01无线芯片的编程技巧及其应用。nRF24L01是一款工作在2.4GHz ISM频段的单片收发器,具有低功耗、低成本的特点,在无线通信领域得到了广泛应用。下面将通过...
### 初识NS2_给NS2的初学者 #### NS2是什么? NS2,全称为Network Simulator version 2,是一款广泛应用于网络研究领域的开源网络仿真软件。它由美国加州大学伯克利分校(UC Berkeley)开发,旨在帮助研究人员理解...
【Java学习心得】 Java作为一门广泛使用的编程语言,学习它是一项既有挑战又有乐趣的过程。从初识语法到熟练掌握各种框架和技术,每一步都需要扎实的基础和不断的实践。 首先,Java学习的基础是掌握基本语法和核心...
此外,文档作者分享了自己学习Go语言的心得与历程,从初识到深入,伴随了该语言的发展历程。作者提到自己基于对C语言和汇编语言的理解,能够深入探索Go语言的底层细节,这为理解和剖析Go源码提供了扎实的基础。 书...
【计算机认识实习实训报告任务书】是一份针对计算机相关专业学生的实践教学文件,旨在帮助学生初识计算机,掌握计算机基础知识和基本操作技能。实训的主要目的是培养学生严谨、科学的工作态度,并为未来从事计算机...
标题《十年单片机》传达了作者从单片机学习者成长为单片机工程师的历程,涵盖了作者十年间在单片机开发领域的实践经验与心得体会。描述中提到文章主要关注的是编程的思想,这表明文章不仅仅会分享技术细节,更重要的...
#### 第一章:初识ARM与LPC2138 **1. ARM公司介绍** - ARM是一家英国公司,专注于RISC(精简指令集计算机)架构的设计与授权。 - 公司自身不直接制造芯片,而是将芯片设计方案授权给其他半导体制造商。 - 全球...
- **计划概述**:该实习计划详细地列出了从初识Java基础到完成个人项目的全过程,旨在通过系统的培训使实习生掌握Java开发的核心技能。 - **第一阶段**(7月10日至7月26日):重点在于熟悉Java基础,包括编程环境...
【标题】"djangotrip:记录我的Django历程"是一个个人项目,旨在分享作者在学习和使用Django框架过程中的经验与心得。这个项目可能是通过一系列博客文章、代码示例或者教程的形式来呈现,帮助其他开发者理解Django并...
- **串口通讯**:通过串行通信协议实现PC机与实验箱之间的数据交换。 - **监控程序**:提供了一系列命令,如R命令显示/修改寄存器内容、D命令显示存储内容、E命令修改存储内容等。 **实验内容概述:** - 学习使用...
- **6.5 多个Activity之间的通信** - 如何在不同Activity之间共享数据。 - **6.6 玄德有话说** - 总结Activity的相关知识点,分享学习心得。 通过上述知识点的梳理,读者可以对Android开发有一个全面的认识,从...
本章节作者回顾了自己的学习历程,并分享了学习单片机的一些经验和心得。作者强调了网络资源对于初学者的重要性,但也指出了随着学习的深入,网络上能提供的高级资料变得稀缺。因此,对于想要成为专业单片机工程师的...
本书许多内容都来源于程序员圈子里的非正式交流,或源于某些成功的案例与作者的经验、心得,但这些东西对新手来说,是很难自学到的。作者从事了多年的软件开发和培训教学,非常清楚那些容易使新手困惑的问题,在学习...
##### 1.1 初识FreeRTOS **1.1.1 什么是FreeRTOS?** FreeRTOS(Free Real-Time Operating System)是一款免费的实时操作系统内核,由Richard Barry开发并维护。它提供了基础的实时操作系统功能,如任务调度、任务...
此外,还有可能涉及到了DOM操作、事件处理、AJAX异步通信、ES6新特性,甚至可能包括React、Vue或Angular等前端框架的应用实例。 在"Code-Samples-master"这个压缩包中,我们可以期待找到一系列组织有序的子文件夹,...
第9章分析了Vold和Rild,其中Vold负责Android平台中外部存储设备的管理,而Rild负责与射频通信有关的工作。本章的拓展思考部分介绍了嵌入式系统中与存储有关的知识,还探讨了 Rild和Phone设计优化方面的问题。 ...