java网络原理
今天是新年第一篇文章,先祝各位读者新年快乐,虎虎生威!
从今年开始我会陆续讲解服务器开发各部分的知识和技巧(只是个人见解与相关资料的整合,如有错误还希望各位网友指出)。首先来讲下Java网络,网络技术是Java语言中很重要的一部内容,因为Java的语言产生的核心思想:网络与安全。
而且目前的很多的软件的开发也与网络紧密的联系在一起,Java为了使开发者更简单使用网络技术,基本上已经将很多层都封装起来了。提供给开发者可以看到是运输层代码的使用。在了解之前,介绍下网络分层,如表所示:
应用层
应用层
表示层
会话层
运输层
运输层
网络层
网络层
链路层
链路层
物理层
物理层
表格的左边是因特网协议栈,表格右边是ISO/OSI参考模型。
所谓协议分层(这是一个软件设计的体系部分),分层的原则要求是下层为其相邻的上层提供服务,而上层不能直接调用与其不相邻层的服务,或者下层去调用相邻上层的服务(但是在有些特殊场景下,是可以打破这个原则的)。为什么需要分层呢?这是因为对于大而复杂且需要不断更新的系统,改变服务的实现而不影响该系统其他部分的能力是分层的优点之一。
另外各层对分组的命名都是不同的,如:
应用层对应用分组称为报文。
运输层对运输分组称为报文段。
网络层对网络分组称为数据报。
链路层对链路分组称为帧。
在网络传输过程中会有时延、丢包和吞吐量等因素的考虑。
网络时延分为节点处理时延、排队时延、传输时延和传播时延,这些时延总体累加起来就是节点总时延。
节点处理时延包括检查分组首部、决定分组导向何处、检查比特差错等处理的时间。
排队时延主要是分组在链路等待传输这个时间。
传输时延主要是将所有分组的比特推向链路所需要的时间。
传播时延主要是从该链路的起点到终点传播所需要的时间。
这里需要注意下的是传输时延与传播时延是有区别的,前者与分组长度有关,后者与两个节点的距离有关。
丢包是因为路由器的排队容量有限,当流量强度接近于1时到达分组将发现一个满队列。由于没有地方可以存储这个分组,路由器将丢弃该分组,即该分组将会丢失。
关于吞吐量是一个网络性能测试必不可少。简单的说就是如果该文件由F比特组成,而主机接收到所有F比特用了T秒,那么文件传输的平均吞吐量为F/Tbps(比特/秒)。
我将从应用层到物理层进行相关描述。
应用层应该是我们Java程序员接触最多的,因为这里涉及到了大量的应用层协议如:HTTP协议、
相关文档:
一、
什么是
EL
?为什么要使用
EL
?
EL
,即
JSP
表达式语言(
expression_r_r Language
),它允许我们使用更简洁、更易读懂的语法来取代难以维护的
Java
脚本以及笨拙的
jsp:userBean,jsp:getProperty
,他让在
JSP
中完全消除了
Java
代码。
EL
的使用能够让
JSP
页面更有可读性,输出的嵌套的 ......
public class Test {
public static void main(String aa[]) {
if (System.getProperty("os.name").equals("Linux")) {
System.out.println("linux");
} else if (System.getProperty("os.name").equals("Windows XP")) {
System.out.println("win ......
java for foreach while循环的比较
关键字: java
在java中究竟是一般的for循环,还是for的增强型foreach,或是while的执行效率比较快呢,我用了一个简单的程序来分析3种循环
public static void main(String[] args) {
List<Integer> map = new ArrayList<Integer>();
for (int i = 0; i < ......
1、 继承和实现区别
Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。
2、 线程安全不同
HashTable的方法是同步的,HashMap是未同步,所以在多线程场合要手动同步HashMap。
3、 对null的处理不同
HashTable不允许null值(key和value都不可以),HashMap允许n ......
这是我个人的理解,加上以前看的一些帖子,有不对的地方,请高人指点。
1.作为java参数传递给一个函数的对象,除了很简单的如int或者boolean等简单的以外,传递的都是这个对象的引用。
当在接收函数中改变这个对象的时候,原来的对象即被改变。
2.在初始化一个对象的时候,有时候我们希望用一个已经存在的对象来给另外一 ......