网络编程7步
1、Java网络编程基本概念——主机的网络层
主机网络层定义特定网络接口(如以太网或WiFi天线)如何通过物理连接将IP数据报发送到本地网络或世界其他地方。在主机网络层中,连接不同计算机的硬件部分(电缆、光纤、无线电波或烟雾信号)有时被称为网络的物理层。Java程序员不需要担心这一层,除非出现错误,例如计算机后面的插头脱落或有人切断了您与外部世界之间的T-1线。换句话说,Java将永远看不到物理层。
2、Java网络编程基本概念——网络层
Internet层的下一层是主机网络层,这是Java程序员需要考虑的第一层。因特网层协议定义了数据位和字节如何组织成更大的组,称为包,也定义了不同计算机互相查找的寻址机制。Internet Protocol (IP)是世界上使用最广泛的Internet层协议,也是Java唯一了解的Internet层协议。
因特网协议基本上是两种协议:IPV4使用32位地址,IPV6使用128位地址,并增加了技术特性来帮助路由。这是两种完全不同的网络协议,如果没有特殊的网关/隧道协议,它们甚至不能在同一网络上互操作,但是Java向您隐藏了几乎所有这些差异。
除了路由和寻址之外,因特网层的第二个作用是使不同类型的主机网络层能够彼此对话。因特网路由器在WiFi和以太网、以太网和DSL、DSL和光纤往返协议之间进行交换。没有因特网层或类似的分层,每台计算机只能与同一类型网络上的其他计算机通信。因特网层负责使用适当的协议将异类网络彼此连接起来。
3、Java网络编程基本概念——传输层
原始数据报有一些缺点。最明显的缺点是无法保证可靠的传输,即使可以保证,也可能在传输过程中被损坏。头检查只能检测头中的损坏,而不能检测数据报的数据部分。最后,即使数据报没有损坏地到达了它的目的地,它也可能不能按照发送的顺序到达。
传输层负责确保按发送的顺序接收数据包,确保没有数据丢失或销毁。如果数据包丢失,传输层要求发送方重新传输该数据包。为此,IP网络向每个数据报添加了一个额外的头,其中包含更多信息。
这个级别有两个主要协议。第一个是传输控制协议(TCP),这是一个昂贵的协议,允许丢失或损坏的数据按照发送顺序重新传输。第二个协议是用户数据报协议(User Datagram Protocol, UDP),它允许接收方检测损坏的数据包,而不保证它们按照正确的顺序发送(或者根本不发送)。然而,UDP通常比TCP快。TCP被称为可靠协议。UDP是不可靠的。
4、Java网络编程基本概念——应用程序层
向用户交付数据的层称为应用层。以下三个层定义如何将数据从一台计算机传输到另一台计算机。应用层决定数据传输后的操作。有HTTP为用户Web, SMTP, POP, IMAP为用户电子邮件;FSP, TFTP用于文件传输,NFS用于文件访问;文件共享使用Gnutella和BitTorrent;会话发起协议(SIP)和Skype用于语音通信。此外,您的程序可以在必要时定义自己的应用程序级协议。(页面)
5、Java网络编程基本概念——IP、TCP、UDP
IP被设计成允许任意两点之间有多条路由,绕过损坏的路由器来路由数据包。由于两点之间有多条路由,而且由于网络流量或其他因素,它们之间的最短路径可能会随着时间而变化,因此构成特定数据流的数据包可能不会走同一条路由。即使它们全部到达,也可能不是按照它们被发送的顺序到达的。为了改进这一基本机制,TCP被放置在IP上,以便连接的两端可以确认收到的IP数据包,并请求重传丢失或损坏的数据包。此外,TCP允许接收端上的数据包按照发送的顺序重新分组。
然而,TCP有很多开销。因此,如果单个数据包的丢失不会完全破坏数据,那么可以使用UDP发送数据包,而不需要TCP提供的保证。UDP是一种不可靠的协议。它不能保证信息包将到达它们的目的地,或者它们将以它们被发送的相同顺序到达。
6、Java网络编程基本概念——IP地址和域名
IPv4网络上的每台计算机都有一个4字节的数字ID。通常在一个点上以四段格式写,比如192.1.32.90,每个数字是一个无符号字节,范围从0到255。IPv4网络上的每台计算机都有一个唯一的四段地址。当数据通过网络传输时,包的报头包括要发送到的机器的地址(目的地址)和要发送到的机器的地址(源地址)。路由上的路由器通过检查目的地址来选择发送包的最佳路径。包含源地址是为了让收件人知道该对谁进行回复。
虽然计算机可以很容易地处理数字,但人类并不擅长记住它们。因此,域名系统(DNS)被开发出来,用来将容易记住的主机名(如www.12345.com)转换成数字互联网地址(如208.201.243.99)。当Java程序访问网络时,它们需要同时处理数字地址和相应的主机名。这些方法由java.net.InetAddress类提供。
7、Java网络编程基本概念——港口
如果每台计算机一次只做一件事,地址就足够了。但是现代计算机同时做许多不同的事情。电子邮件需要与FTP请求分开,而FTP请求也需要与Web通信分开。这是通过端口完成的。具有IP地址的每台计算机有数千个逻辑端口(确切地说,每个传输层协议有65,535个端口)。这些只是计算机内存中的抽象,不代表任何物理对象,不像USB端口。每个端口在1到65535之间进行数字标识。每个端口可以分配给一个特定的服务。
8、Java网络编程基本概念——一个防火墙
在互联网上有一些顽皮的人。要排除它们,通常需要在本地网络上设置一个接入点,并检查进出该接入点的所有流量。位于因特网和本地网络之间的一些硬件和软件会检查所有输入和输出的数据,以确保它是防火墙。防火墙通常是路由器的一部分,它将本地网络连接到更大的因特网,并可以执行其他任务,如网络地址转换。另外,防火墙可以是单独的机器。防火墙仍然主要负责检查进出其网络接口的数据包,根据一组规则接收或拒绝数据包。
本篇《什么是Java网络编程基本概念?看完这篇文章你一定可以明白》到这里就已经结束了,小编一直认为,某一个编程软件受欢迎是有一定原因的,首先吸引人的一定是其功能,环球网校的小编祝您java学习之路顺利,如果你还想知道更多java知识,也可以点击本站的其他文章进行学习。
2. 如何成为一名程序员 6种方法来成为一名程序员
目录方法1:网络编程1、了解网络编程的含义。2、浏览不同的网站,了解它们的外观。3、学习至少一种头脑风暴技术/方法,并学习一个用来实现头脑风暴的软件。4、熟悉网站结构。5、赶紧学一门图形设计的课程。6、了解网络下部构造的基本情况。7、学习HTML和CSS语言。8、学习XML及其相关技术,比如XSL和XPath(不是必需,仅作推荐)。9、先建立简单的静态网站,直至你熟悉并习惯HTML语言。10、学习客户端脚本语言。11、熟悉你所学的客户端脚本语言。12、学习至少一种服务器端脚本语言。13、学完服务器端编程语言之后就开始创建一个试验项目。14、获得你的网站,开始用你自己的网页实验。方法2:桌面软件编程1、弄清楚桌面软件编程是怎么回事。2、了解不同的电脑硬件结构。3、学习一种入门级(小孩子学的那种)编程语言。4、学习程序化、面向对象、函数设序设计规范的入门。5、学习一种程序化程式设计语言的入门课程。6、学习至少一种高级建模技术,比如UML 或ORM。7、开始编写一些小的主控台应用程式或类似的应用程式。8、学习一门你选择的编程语言的更高级课程。9、应用你所10、至少再学习一门编程语言规范的入门课程。11、试着比较你所学的两门编程语言。12、利用你学过的一种语言来学习可视化编程概念。13、开始把你所学的知识运用到你设计的软件小工程中。14、创建一个虚拟的"毕业工程"。15、通过学习更高级的课程、更加注意细节以及在网上学习搭建架构的技巧,来加深对你学过的可视化架构/库/包的理解。16、搜索其他含可视化元素的包/库并学习它们。17、学习图形学课程(而非图形设计)。18、成为游戏程序员(不是必须的)。方法3:分布式程序设计1、处理分布式应用编程。2、快速了解通信系统及其硬件。3、熟悉网络硬件结构和设备,比如集线器、接线台和路由器。4、学习网络协议的课程。5、学习XML 语言,并熟悉它。6、开始学习一门shell脚本语言。7、开始时用上你学的脚本知识,只运用程序化程式设计。8、使用你所学的脚本语言,写出实现机器之间通信的脚本。9、转移到桌面脚本/编程语言。10、专注于语言的核心部分,尤其hi那些支持网络。11、学习分布式应用设计与结构的课程。12、使用你所学的编程语言来了解服务部分建构和服务。13、学习如下技术中一种或更多。方法4:库/平台/框架/核心编程1、了解什么是核心编程。2、学习一门支持创建可重复使用内容/包的编程语言,如果你还没学过的话。3、学习一门UML 和ORM的高级课程。4、学习软件工程的课程。5、学习至少一个模块,基于内容的、面对对象的和 事件驱动编程技术和概念。6、进一步了解不同的操作系统及其支持的编程架构。7、集中学习独立平台架构、编程语言和技术。8、如果到目前为止你学习的编程语言具有ANSI/ISO/EEE/W3C标准版本,那么掌握这些标准。9、尝试模拟简单的、已经建立的库,尤其是开源的库。10、在你的编程领域内寻找开源的包。11、学习不同方法。方法5:系统编程1、了解系统编程的定义。2、跟着"桌面应用程序员"的前三个步骤。3、学习线性代数的入门课程。4、学习微积分课程。5、学习逻辑学和/或离散数学课程。6、了解不同的"准操作系统"。7、学习计算机硬件结构的课程(或者作为替代,看看书)。8、深入理解不同的计算机硬件平台。9、初步熟悉你所选择的硬件平台/操作系统的汇编语言。10、学习ANSI C 和 C++ 语言,还有程序化程式设计的一些概念。11、在你选择的平台上理解并实践C/C++标准库。12、搜索网络资源、书籍和课程来理解你的平台独特的C风格。13、用C/C++练习编写高级代码。14、学习更高级的Assembly。15、学习操作系统设计的课程。16、寻找并阅读你所选择的平台的相关文章。17、练习你已经掌握的知识。18、以最有益的顺序学习语言。方法6:编程科学1、了解编程科学家是做什么的。2、累积和四年制计算机科学学历同等多的科学知识。3、选择特定的领域。4、考虑获取更高级的学历。5、了解你选择的编程领域的相关技术和编程语言。成为程序员是一个日积月累的过程,需要日复一日年复一年的技能增长。编程本身是有趣的,并且有回报(脑力层面、精神层面、经济层面)。这份指南不能保证你轻松当上程序员。不要神化下面这些步骤,从中你大概能了解在现今编程界如何成为一名程序员。
方法1:网络编程
1、了解网络编程的含义。网络应用是指设计在网络结构顶层的软件部分。这就意味着这些应用是通过诸如火狐或IE之类的浏览器来处理的。架构于网络结构的顶层并不一定要连接到网络。这就是说网络应用建立在如下标准网络技术的顶层:HTTP
FTP
POP3
SMTP
TCP
IP协议
HTML
XML
Coldfusion
ASP
JSP
php
ASP.NET
2、浏览不同的网站,了解它们的外观。(右击,选择"查看源"或按F12。)寻找网站类型/内容的多样性,而非数量。通常你需要访问以下网站类型中至少一种: 团体网站(商业公司,非营利机构/组织,政府组织)
网络索引引擎(搜索引擎,meta搜索网站,专业化搜索引擎,目录)
数据挖掘网站
个人网站
信息/网络全书式网页(维基,数据单,技术规格,人工列表目录,博客和日志,新闻和新闻机构网站,黄页,等等。)
社交网站(社交门户,书签网站,记录笔记网站)
合作网站(这包含了上面提及的目录,比如维基和博客)
3、学习至少一种头脑风暴技术/方法,并学习一个用来实现头脑风暴的软件。例如:头脑风暴图和微软Visio。
4、熟悉网站结构。指的是创建概念化网络范式、网络地图和导航结构。
5、赶紧学一门图形设计的课程。尽量学习至少一个图形编辑/操作软件包(不是必须的,但强烈推荐)
6、了解网络下部构造的基本情况。包括了解以下: 基本网络服务协议(HTTP,FTP, SMTP和POP3或IMAP4)
网络服务器软件(最好其中一个就是你以后主要工作的平台)
网络浏览软件
邮件服务器和客户端软件
7、学习HTML和CSS语言。或许你还想要"所见即所得"软件包来编辑HTML。
8、学习XML及其相关技术,比如XSL和XPath(不是必需,仅作推荐)。
9、先建立简单的静态网站,直至你熟悉并习惯HTML语言。
10、学习客户端脚本语言。多数人要么学Java,要么学VB,但也有一些人学习Perl和DHTML。
11、熟悉你所学的客户端脚本语言。潜意识里提醒自己只用你学的那个语言。只有在你熟悉你的客户端脚本语言之后才能进入下个步骤。
12、学习至少一种服务器端脚本语言。如果你只用一种服务器软件,那就学其中一种编程语言。否则,你得每个服务器软件都学至少一种编程语言。
13、学完服务器端编程语言之后就开始创建一个试验项目。
14、获得你的网站,开始用你自己的网页实验。
方法2:桌面软件编程
1、弄清楚桌面软件编程是怎么回事。多数桌面软件程序员都是编写商务需要的代码,所以好好了解一下商业及其组织和经济结构将对节省时间、提高效率大有裨益。
2、了解不同的电脑硬件结构。看看数字电路设计和电脑结构的入门级课程,但是也有人认为这对于刚起步来说太超前了,所以看两三篇说明的文章(比如 这一篇 和 这一篇)就够了。学完第一种编程语言后你可以再返回这个步骤。
3、学习一种入门级(小孩子学的那种)编程语言。不要因为你不是个小孩子就不好意思去学。这些入门级语言能大大减轻你正式学习第一门编程语言时的痛苦和压力。然而这一步也不是必须的。你也可以在上一步之前完成。
4、学习程序化、面向对象、函数设序设计规范的入门。
5、学习一种程序化程式设计语言的入门课程。无论你以后选择何种编程语言,在某种程度上它都要求程序化程式设计。此外,据多数程序员反映,程序化程式设计总的来说是了解编程的一个很好的切入点。
6、学习至少一种高级建模技术,比如UML 或ORM。
7、开始编写一些小的主控台应用程式或类似的应用程式。你可以利用编程书中的常见小练习。选择一个工具,用你所学的编程语言编写程序。
8、学习一门你选择的编程语言的更高级课程。确保进展之前先理解下列概念,并能熟练运用。对程序用户输入输出信息。
程式化设计语言写成的程序中的逻辑流程和执行流程。
声明、分配和比较变量
编程结构分支,比如if..then..else 和 select/switch..case.
循环结构,比如while..do, do..while/until, for..next.
创建、调用程序与函数的编程句法
数据类型及如何操控
用户定义数据类型(records/structs/units)及其使用
如果你的语言支持超载函数,理解它。
你选择的语言的内存处理方式(指针,变量窥视,等等。)
如果你的语言支持运营商超载,理解它。
如果你的语言支持delegates/函数指针,理解它。
9、应用你所学的高级技能 面向对象的规范
10、至少再学习一门编程语言规范的入门课程。推荐学习每种范式的编程语言,多数高级程序员确实是这么做的,然而,通常你开始时只学一种,应用所学知识训练了一段时间,获得了编程的鲜活经验,然后接着学习另一种。试试下面的语言: 逻辑编程范式
函数编程范式
面向对象的范式
11、试着比较你所学的两门编程语言。评估各自利弊。通常可按以下方法完成拿出你在学习第一门编程语言时编写的简单范例,现在用第二门语言重新编写。
创建一个工程,尽量用上两种语言完成它。有时取决于你选择的工程和语言,你可能仅用一门语言还无法完成这个工程呢!
写一份两种语言之间相似结构和独特之处对比的速查表或一览表。
尽量使用另一门语言找到模仿这两门语言中独特之处的办法。
12、利用你学过的一种语言来学习可视化编程概念。几乎所有的编程语言都具有支持可视化编程和其他支持控制台或类似控制台编程的版本/库。同时进行的包括: 初步了解事件驱动编程。在某种程度上,多数可视化编程依赖事件及事件处理(用上你选择的语言)。
尽可能多的尝试桌面软件,理解软件是做什么的。多数软件开发公司会提供产品的测试版,你可以拿来测试软件。在完善用户界面方面保持更新。
阅读关于图形用户界面的文章或教程。
13、开始把你所学的知识运用到你设计的软件小工程中。尽量把你的编程专业知识运用到你日常生活中的问题上。比如,编写程序,批量重命名文件,视觉上比较文本文件,复制目录里的文件名到内存/文本文件之类的东西。刚开始简单一点。
14、创建一个虚拟的"毕业工程"。把这个放到最后完成,用上你到目前为止学到的可视化编程技术。
15、通过学习更高级的课程、更加注意细节以及在网上学习搭建架构的技巧,来加深对你学过的可视化架构/库/包的理解。
16、搜索其他含可视化元素的包/库并学习它们。
17、学习图形学课程(而非图形设计)。对于想要写出吸引人的用户界面元素的程序员来说,这将大有裨益。
18、成为游戏程序员(不是必须的)。很大程度上游戏编程是被当作桌面编程的。如果你想成为游戏程序员,完成这些步骤后你需要进一步学习游戏编程。对于游戏程序员而言,图形学课程是必须的,后续步骤中第二门语言应该选择逻辑/函数编程语言(最好是Prolog或Lisp)。
方法3:分布式程序设计
1、处理分布式应用编程。分布式应用编程被许多人认为是最难学的一种,它要求计算机和通信技术中的不同知识。
2、快速了解通信系统及其硬件。这个步骤不是必须的,但是对于理解网络拓扑结构很有用。
3、熟悉网络硬件结构和设备,比如集线器、接线台和路由器。
4、学习网络协议的课程。在你开始分布式应用编程之前,你需要好好理解"开放系统互联 (OSI) "模型、以太、IP、TCP、UDP和HTTP 。
5、学习XML 语言,并熟悉它。
6、开始学习一门shell脚本语言。对基于Windows的编程,可以是任何能与Windows脚本宿主兼容的脚本。对基于linux的编程,Bash脚本和 Perl就够了。对这两个平台都强烈推荐Java,原因如下: 几乎所有操作系统的都支持脚本宿主(Windows 脚本宿主默认支持java ,大多数Linux发行版都有支持java脚本控制的包)。
许多开发者认为它很容易学。
当你需要学第二门编程语言(C,C++,C#,Java和J#都有ALGOL开源句法)时,它拥有的ALGLO开源句法就能使你熟悉更多编程语言
通过学习java,你会熟悉网页的客户端脚本,这可谓一大福利!
7、开始时用上你学的脚本知识,只运用程序化程式设计。之后,根据你的脚本语言和它所支持的,你可以用上更高级的编程技巧和范式。所有的脚本语言在某种程度上都有程序化程式设计的一些方面。
8、使用你所学的脚本语言,写出实现机器之间通信的脚本。学习完成这个所必需的东西。简单的通信就足够了。
9、转移到桌面脚本/编程语言。一个比较好的是多范式语言,比如Python。简单了解第二门语言。有许多理由让多数程序员选择java。然而,在这个领域内C#正在获得多数优势。Java和C#被青睐的原因如下:它们是面向对象的编程语言,使大量程序员免遭实现细节之苦,因为它们都支持组成部分(代码单元、预编译,它们可以执行特定任务,并被用到其他程序中)。
它们支持事件驱动编程,在某种程度上还支持OO和程式化程序设计。
建立语言的架构按属性分布(比如Java)。
有许多现成的包来处理。社交网络同时作为开源代码和架构内置包,这使得程序员继续其他人工作更加容易。
10、专注于语言的核心部分,尤其hi那些支持网络。少注意用户界面元素,比如输出,窗口设计和技术等。
11、学习分布式应用设计与结构的课程。可以通过书本、网上教程或学术课程来完成。然而,十分有必要理解分布式应用的结构及其概念。
12、使用你所学的编程语言来了解服务部分建构和服务。
13、学习如下技术中一种或更多。推荐你每一种都了解以下。多数分布式应用程序员不会止于一两门编程语言,他们会每个操作系统各学至少一种语言。这是因为如果你希望你的应用"分布式",你应该至少为每个主要的操作系统各提供一个版本。公共对象访问代理体系结构(CORBA)
简单对象访问协议(SOAP)
异步JavaScript和XML(AJAX)
分布式组建对象模型(DCOM)
.NET远程处理
XML 网络服务
方法4:库/平台/框架/核心编程
1、了解什么是核心编程。核心程序员几乎都是高级程序员,已经从编写应用转变为给其他程序员编写代码汇编。
2、学习一门支持创建可重复使用内容/包的编程语言,如果你还没学过的话。
3、学习一门UML 和ORM的高级课程。多数库开发者使用其中一种,或两种都用。
4、学习软件工程的课程。
5、学习至少一个模块,基于内容的、面对对象的和 事件驱动编程技术和概念。你所学覆盖越多编程范式和语言,你就能成为越成功的库/包程序员。
6、进一步了解不同的操作系统及其支持的编程架构。
7、集中学习独立平台架构、编程语言和技术。
8、如果到目前为止你学习的编程语言具有ANSI/ISO/EEE/W3C标准版本,那么掌握这些标准。无论何时尽可能使用标准代码。
9、尝试模拟简单的、已经建立的库,尤其是开源的库。这在成为库/包程序员的早期阶段十分有用。从简单的包开始,比如单位转换和中间科学计算包。如果你是大学生,利用你的非编程课程,尝试把这些课程的方程式与核心科学用作库。
10、在你的编程领域内寻找开源的包。首先下载包的二进制/可执行文件。尽量去用,并发现它的利弊。之后,下载源,尽量弄明白它是怎么完成的。尝试再创造这些库或其部分。刚开始,看完代码再做;之后,先做再看代码。后期阶段,尝试完善那些库。
11、学习不同方法。给程序员分发、配送内容。通常,库/包程序员倾向于以递归和/或迭代的思想来思考他们面临的所有问题 。尽量把每个问题当作一个小问题的汇编(一系列更小的任务)或一个重复的不断缩小问题范围直至把这些更小的范围彼此堆到一起的处理过程去思考。
库/包程序员倾向于概括化。也就是说,当面临一个特定的简单的问题时,他们通常会想到一个更为概括的问题,并努力解决这个更概括的问题,如此,小问题便不攻自破。
方法5:系统编程
1、了解系统编程的定义。系统编程处理的是编程的"科学",而不是具体的编程实现。不要把你自己栓到特定平台上。
2、跟着"桌面应用程序员"的前三个步骤。
3、学习线性代数的入门课程。
4、学习微积分课程。
5、学习逻辑学和/或离散数学课程。
6、了解不同的"准操作系统"。这可以通过以下途径完成:了解操作系统是如何安装的。
了解在一台PC上如何安装不同的操作系统(不是必须的,但作为推荐)
安装不止一种操作系统。不要在系统中安装任何辅助包,相反,仅利用操作系统本身提供的函数。
7、学习计算机硬件结构的课程(或者作为替代,看看书)。
8、深入理解不同的计算机硬件平台。
9、初步熟悉你所选择的硬件平台/操作系统的汇编语言。稍后你会学习其他平台/系统的汇编。
10、学习ANSI C 和 C++ 语言,还有程序化程式设计的一些概念。
11、在你选择的平台上理解并实践C/C++标准库。尤其注意标准模板库(STL)和活动模板库(ATL)。
12、搜索网络资源、书籍和课程来理解你的平台独特的C风格。
13、用C/C++练习编写高级代码。
14、学习更高级的Assembly。
15、学习操作系统设计的课程。
16、寻找并阅读你所选择的平台的相关文章。如果你选的是基于Unix的操作系统就会容易得多。充分理解你今后将要用来工作的系统。
17、练习你已经掌握的知识。首先创建小的系统软件。如下通常很有用: 试着重创你系统中已有的小工具。
试着把其他系统中的应用移植到你的系统里。
18、以最有益的顺序学习语言。此处是唯一强调第一门编程语言的地方。首先学习ANSI C 而不是 C++、C#、Java 、D。然后学习 C++。限制你第一门语言仅为C是因为系统编程要求程序员熟悉如下概念:源代码真实、完全的编译
低级对象输出文件
链接二进制
低级机器语言/汇编编程。C语言被某些人认为是伪饰过的/更容易学习的汇编语言。只要你愿意,它还支持插入汇编语言代码,并且它只是程序化的(像汇编)。
方法6:编程科学
1、了解编程科学家是做什么的。编程科学家是十分高级的程序员,他们不开发程序,但他们研究计算科学,比如密码学、编程语言和数据挖掘算法。没有深入的学术研究是很难达到这个水准的。
2、累积和四年制计算机科学学历同等多的科学知识。可通过如下其中一种完成: 获得真实的学术学历(这也是通常情况)。
从现代大学中获得该学历要求的课程大纲,自学课程或 分开一门门学。理论上这样做也可以,但还是推荐第一种做法。
3、选择特定的领域。越具体越好。这取决于你的偏好。但是这里给出计算机编程领域中一些主要的课题:算法设计(例如搜索、分类、密码、解码、错误检测 等)
编程语言/编译器设计/最优化
人工智能领域(模式识别,语音识别,自然语言处理,神经网络)
机器人技术
科学编程
超级计算
计算机辅助设计/模式(CAD/CAM)
虚拟现实
计算机图形学(计算机图形学通常和图形设计或图形用户界面设计混淆,计算机图形学是研究如何表示和操控计算机系统中的图形的领域)
4、考虑获取更高级的学历。或许你想追求硕士学历或博士学历。
5、了解你选择的编程领域的相关技术和编程语言。
小提示不管你想尝试哪种编程,不管你想达到何种水平,考虑去学校或本地社区大学上课。不要被诸如“计算机科学”一类的术语吓到。你参加的任何不需要预备课程的课程都应该集中教一些编程的基础知识。在上课之前先咨询一下老师或客服,确保这门课是你想要的,像“计算机文化”这样的课很有可能更多地集中在教你更熟悉办公应用之类。
3. java网络编程的基本内容有哪些其特点和优势如何请进行论述。
1.用Java编写网络程序是非常简单的——至少比在现有其他编程环境下要简单得多。本书的新版本带给开发者的是Java发展的最新特性。一旦开始使用Java的网络API进行网络编程,我们能做到可以想象到的一切事情。 本书对开发网络程序进行了非常完整的介绍(从应用程序和applet两方面),它包括了从网络基础到远程方法调用(RMI)的所有内容。本书的章节涵盖了TCP和UDP套接字、组播、内容和协议处理器以及两个新的API:JSSE(SSL实现)和JavaMail API。扩充了I/O和多线程等基础知识。还讲述了在不直接编写网络代码时你所能够实现的内容,例如如何用URL实现自己的目标、applet的基本功能以及如何用Swing处理HTML。无论是有经验的网络程序员还是只想随意看一看的初学者,都会发现本书对于Java的网络程序类的学习是相当完整的。本书内容涵盖了:1、Java 2(JDK 1.2和1.3)和Java1.1。2、许多完整的程序(可在线获取)。3、网络编程基础的所有方面。4、一些高级专题,包括RMI和组播。5、许多重要的API,有JSSE、JavaMail以及Swing中的HTML解析器。Elliotte Rusty Harold是着名的Java网站Cafe Au Lait的作者(http://metalab.unc.e/javafaq),国际知名的计算机专家。他是《Java I/O》以及其他一些Java和XML技术图书的作者。 “直到找到这本书之后,我才开始真正理解Java网络编程。”——Bruce Eckel,《Java编程思想》的作者.
2.JAVA的特点§ 1.2 Java的特点
Java是一个广泛使用的网络编程语言 ,它是一种新的计算概念。
首先 ,作为一种程序设计语言 ,它简单、面向对象、不依赖于机器的结构、
具有可移植性、鲁棒性、安全性、并且提供了并发的机制、具有很高的性能。其
次 ,它最大限度地利用了网络 ,Java的小应用程序 (applet)可在网络上传输而
不受 CPU和环境的限制。另外 ,Java还提供了丰富的类库 ,使程序设计者可以很
方便地建立自己的系统。
下面我们分别从这三个方面来讨论 Java的特点 ,然后通过把 Java与 C,
C++相比进一步指出它所具有的优点。
一、 Java语言
Java语言有下面一些特点 :简单、面向对象、分布式、解释执行、鲁棒、
安全、体系结构中立、可移植、高性能、多线程以及动态性。
:1.简单性
Java语言是一种面向对象的语言 ,它通过提供最基本的方法来完成指定的
任务 ,只需理解一些基本的概念 ,就可以用它编写出适合于各种情况的应用程
序。 Java略去了运算符重载、多重继承等模糊的概念 ,并且通过实现自动垃圾
收集大大简化了程序设计者的内存管理工作。另外 ,Java也适合于在小型机上运
行 ,它的基本解释器及类的支持只有 40KB左右 ,加上标准类库和线程的支持也
只有 215KB左右。库和线程的支持也只有 215KB左右。
2.面向对象
Java语言的设计集中于对象及其接口 ,它提供了简单的类机制以及动态的
接口模型。对象中封装了它的状态变量以及相应的方法 ,实现了模块化和信息
隐藏 ;而类则提供了一类对象的原型 ,并且通过继承机制 ,子类可以使用父类
所提供的方法 ,实现了代码的复用。
3.分布性
Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议 ,用户
可以通过 URL地址在网络上很方便地访问其它对象。
4.鲁棒性
Java在编译和运行程序时 ,都要对可能出现的问题进行检查 ,以消除错误
的产生。它提供自动垃圾收集来进行内存管理 ,防止程序员在管理内存时容易
产生的错误。通过集成的面向对象的例外处理机制 ,在编译时,Java提示出可能
出现但未被处理的例外 ,帮助程序员正确地进行选择以防止系统的崩溃。另外,
Java在编译时还可捕获类型声明中的许多常见错误 ,防止动态运行时不匹配问题
的出现。
5.安全性
用于网络、分布环境下的 Java必须要防止病毒的入侵。 Java不支持指针,
一切对内存的访问都必须通过对象的实例变量来实现 ,这样就防止程序员使用
"特洛伊 "木马等欺骗手段访问对象的私有成员 ,同时也避免了指针操作中容易
产生的错误。
6.体系结构中立
Java解释器生成与体系结构无关的字节码指令 ,只要安装了 Java运行时
系统 ,Java程序就可在任意的处理器上运行。这些字节码指令对应于 Java虚拟
机中的表示 ,Java解释器得到字节码后 ,对它进行转换 ,使之能够在不同的平
台运行。
7.可移植性
与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。
同时 ,Java的类库中也实现了与不同平台的接口 ,使这些类库可以移植。另外,
Java编译器是由 Java语言实现的 ,Java运行时系统由标准 C实现 ,这使得Java
系统本身也具有可移植性。
8.解释执行
Java解释器直接对 Java字节码进行解释执行。字节码本身携带了许多
编译时信息 ,使得连接过程更加简单。
9.高性能
和其它解释执行的语言如 BASIC、 TCL不同 ,Java字节码的设计使之能
很容易地直接转换成对应于特定CPU的机器码 ,从而得到较高的性能。
10.多线程
多线程机制使应用程序能够并行执行 ,而且同步机制保证了对共享数据
的正确操作。通过使用 多线程 ,程序设计者可以分别用不同的线程完成特定
的行为 ,而不需要采用全局的事件循环机制 ,这样就很容易地实现网络上的实
时交互行为。
11.动态性
Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入
新的方法和实例变量而不会影响用户程序的执行。并且 Java通过接口来支持
多重继承 ,使之比严格的类继承具有更灵活的方式和扩展性。
参考资料:http://chat.xwsy.com/wangshangjiaocheng/java/Java.htm
3.Java已用动态的交互应用软件使Web栩栩如生。它使开发人员
具有‘编写一次到处运行TM”的巨大能力。而且,借助其JavaAPI
及其编程语言上的Java虚拟机,它已产生一种分布信息的崭新模式。
这种模式叫做Java企业计算,正在帮助各企业以各种不同的方法取
得竞争优势。网管和控制已大大简化。软件分配基本上是免费的,
而且立即可实现。电子贸易已获得。占有成本大幅度降低。信息和
应用软件到处可存取。
Java建立在简单的前提基础上,即所有微处理器都应讲同一种
语言——所有内部采用芯片的产品都应能一起工作,无缝而方便地
共享信息。它已经改变企业和个人同Internet大交道的方式。现在,
它正在对消费类产品产生明显的影响,而且从总体上更加深刻地影
响企业计算。
借助Java,您可自由自在地使用您已拥有的硬件和软件。这是因
为Java是独立于平台的。它还可使您超越企业计算,使应用软件在便
携式计算机、信息亭、电视、蜂窝电话和其他大量设备上运行。
全世界的公司都已发现Java数不胜数的用途。所有用途可从其无
可比拟的能力,即提高可靠性、安全性和简化各种不同计算产品和
环境的能力中受益非浅,而且节省的时间和费用十分可观。
Java无处不在。它已拥有几百万个用户,其发展速度要快于在它
以前的其他任何一种计算机产品。它可位于任何地方,而且能到处运
行。Java正在迅速被用做传播信息的事实上标准,这是因为它既可给
企业,也可给最终用户带来似乎数不清的好处。
4. 学网络编程需要学习那些课程
这是网络编程的全部课程,要是感兴趣的话可以了解一下:
第一阶段
1、计算机操作基础
2、Office办公自动化
3、计算机组装与维护
4、C语言
第二阶段
1、SQL Server2005数据库设计
2、和高级查询
3、数据结构
4、C#面向对象程序设计
5、HTML5与CSS3开发
6、JavaScript
7、jQuery高级编程
8、PHP开发
第三阶段
APP Development
1、JavaScript特效制作
2、jQuery应用开发
3、HTML5与CSS3开发
4、Java面向对象程序设计
第四阶段
JAVAWEB Development
1、产品流程应用
2、移动平台界面设计
3、Oracle数据库开发
4、JavaWeb应用开发
Mobile APP Development
1、实训一:WEB前端设计与开发
2、实训二:J2EE项目开发
5. Python网络编程7-对Telnet流量进行解码分析与拦截
Telnet命令通常用来远程登录。Telnet程序是基于TELNET协议的远程登录客户端程序。提供了在本地计算机上完成远程主机工作的 能力,在终端使用者的电脑上使用telnet程序,用它连接到服务器,终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet会话,必须输入用户名和密码来登录服务器。
Telnet因为采用明文传送报文,安全性不好。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的。telnet命令还可做别的用途:
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议。Telnet协议的目的是提供一个相对通用的,双向的,面向八位字节的通信方法,允许界面终端设备和面向终端的过程能通过一个标准过程进行互相交互。
为理解Telnet工作过程与使用Python来分析流量,搭建如下环境:
在R2上启用Telnet作为服务端,在linux主机上安装Telnet程序作为客户端,同时通Wirshark远程捕获Linux 主机在接口流量,在Linux主机上运行Python脚本来分析Telnet流量。
使用如下Python脚本来捕获Telnet流量,并对Telnet交互命令进行解码。
使用如下Python脚本对Telnet流量进行嗅探,发现Telnet流量之后发送TCP Reset对Telnet会话进行阻断。
在Linux 主机上先运行Python脚本,在运行Telnet程序。
发现此时无法连接到主机。
查看脚本运行脚本,可见一铺货到Telnet流量就会给双方发送TCP Reset。
在Wirshark上查看数据包交换如下
6. 新手如何学习编程
熟悉以下关键东西,可以边学边做,定期训练,经常思考,长期积累:
1、语法。
2、基础理论(数学、数据结构、算法等)。
3、设计方法(编程原则、设计模式、框架设计等)。
4、库(核心、基础、UI、扩展、游戏引擎等)。
5、计算机相关(操作系统、网络、图形学等)。
6、领域知识(游戏设计、网站设计等)。
7、开发工具(编辑器、IDE、自动部署等)。
8、项目管理(进度管理、分工协作、Bug管理、版本控制等)。
最普遍也是最重要的能力:创造力。努力分析并理解好做什么以及怎么做。要知道上面那些东西一开始都是不存在的。
具体方法包括:
1、快速阅读入门教程和书籍,适合学习语言和基础库。比如我学Java读的《Java编程思想》,练习题做过一点,然后学ActionScript就没读过书,只读过Adobe官方文档《ActionScript 3.0编程》。
2、阅读库的文档、实例、源码。比如Flash、Flex开发,熟悉官方API很重要,很多细节要具体使用时才注意到,这时候最好做个笔记,虽然我从没看过我的笔记。
3、做一个自己感兴趣或熟悉的小项目,比如我就以黑白棋游戏作为多个语言的试水项目,一样的逻辑,便于把关注点放在语言特点上。
4、自己动手丰衣足食。厨师有菜谱,程序员可没菜谱。比如我做游戏,最关键的游戏编程知识全部是动手学出来的,很少有专门针对某个业务领域(如游戏)的编程书籍,要么是入门书,要么是模式书(如算法)、理论书(图形学),很少有书籍教你如何开发一个45度角地图系统加编辑器的,全靠自己思考,以及看前人的代码,需要时找些网络资料。关键是,可以培养最重要的创造力。
对于算法和设计模式,可以研读下,但是关键还是靠平时如何使用了。新手勉强不来的。
项目管理方面的,就得靠工作经验了,多思考多提意见不要只走流程。
7. 学习计算机网络编程应该学些什么
如果想学习计算机网络编程(即:网络 socket 编程),那么必须至少需要学好:计算机操作系统原理、数据结构、计算机网络原理(包括必须要熟练掌握各种网络协议的帧格式)。
因为不同的网络协议(例如:TCP、IP、ICMP、UDP),其帧格式的详细定义是不一样的。若想要在这方面的编程有较大的进步,那么首先必须要有两台联网的电脑,并安装好编程环境(最好安装 Linux系统)。同时参考《TCP/IP 详解》一套教材,以便进行编程上的体会。
8. 网页编程入门应该首先学些什么
网页编程入门应该首先学html和asp这两种语言代码。
1、html相关知识
①据了解,html属于静态代码,是网页编程的基础。至于静态代码,因服务器不需要解析而只用于布局效果;
②还有javascript、css这两种静态代码,前者用于实现某些特效,而后者则是样式语言;
③以上三种语言组合起来,可以设计出美妙的网页效果。
2、asp相关知识
①另外,asp属于动态代码,是为了能快速入门的。至于动态代码,因服务器需要解析而可用于数据库操作;
②还有php、jsp这两种动态代码,和html有着很好的兼容性,基本学会掌握以后就可以去找工作了;
③当然,开发工具、数据库和服务器这三个部分得根据学的动态语言来选择,比如动态语言和数据库可以选择asp和access或php和mySQL等。
(8)网络编程7步扩展阅读
网页编程的相关原理
1、网络模型(网络结构原理和工作原理的描述)
①OSI参考模型:七层;
②Internet网络模型:四层;
③网络协议:指定层上进行数据交换的规则;
④Internet的网络层协议:IP协议、DNS协议(辅助协议);
⑤Internet的传输层协议:TCP协议、UDP协议。
2、套接字(应用程序和网络协议的接口)
①Java Sockets:Java应用程序和网络协议的接口,提供若干个类的定义。Java应用程序利用这些类继承网络协议的行为,实现网络通信;
②TCP Sockets:使用TCP协议实现可靠的网络通信;
③UDP Sockets:使用UDP协议实现效率较高的网络通信。
3、数据包(按照一定规则整合的数据集合)
①组包:指按照协议把零散的数据或报文按照组合起来,实际应用中,比如在C++编程中,往往定义一种新的数据类型用来存储数据包的结构;
②数据包传送:指数据包的电气物理传输;
③解包:指接收端对接收的数据进行解析,获得有用信息和数据。
9. 新手入门c#.net网络编程的问题。
首先肯定的说看书是一个好习惯~
我个人建议你从理论入手,先了解下C#和C#的一些基础(或者如果讨厌看那些烦乱的理论的话,可以直接从一些介绍C#的小程序入手)
期间注意使用好程序自带的MSDN(帮助文档),我听过一句话:MSDN的使用水平直接可以看出一个人的技术水平~不要过多的依赖Internet(虽然找起很快很多,不过都是大同小意的,一旦没有了网,编写代码时你就很容易成为一个无头苍蝇)
网站开发是很博大精深的~C#属于后台语言~我个人以前的方法是这样的:
从小程序开始,或者从熟悉每个控件的应用开始,编写的过程中穿插理论知识...这是我的方法,实践是最好的老师(喜欢看代码的话可以找一以代码为基础理论为辅助的书,喜欢从控件入手,可以找以控件应用的介绍为基本的书,潜移默化中就你会慢慢了解C#,我以前有一个朋友看一本理论为主代码为辅助的书来来回回看了七遍~内容的代码编写了七遍~~~结果如何我不得而知了~,不过我很欣赏他这精神)
没有必要特别关注于这书那书的..到最后你就会发现,其实他们都是一个意思,只是每个人的说法不同罢了~
等你熟悉了这些基础知道或者基础控件的应用之后你就可以试着去做一个留言本了,留言本我可以告诉你个最简单的方法~,显示用一个"GridView控件"就可以了,在模板类里面放个"自定义控件"(自定认控件就是你每个留言显示的格式和小界面的制定)基本上论坛你也可以这么写~,至于分页方面,如果你数据库不错的话,建议用数据库分页..当然用GridView自带的分页也行,只是速度会慢一些
(备注:很多种方法都可以做出来~,比较深入或者复杂一点的的需要你了解了程序理念后自已体会了,我不一项项列出了)
有问题可以给我发邮件:[email protected]