杂记

1.

&是位运算,即按位与运算

&&是逻辑运算符,表示逻辑与and


2.

get方法会在IE地址栏里显示表示你提交时候所带的值
post方法不会 
service由Servlet引擎运行。当有http请求来的时候,Servlet引擎会将请求包装成HttpServletRequest并以其为参数调用相应servlet的service方法。在servlet的父类HttpServlet中实现了service方法,对不同的http请求(get/post/put...)调用不同的do方法,所以一般情况下程序员不需要实现service方法。

3.

response.sendRedirect(url) -- 重定向到指定URL 
request.getRequestDispatcher(url).forward(request,response) -- 请求转发到指定URL

比如说有人打电话给公司前台找小王,这时候,公司的前台会有两种选择
一:通过转接的方式把电话转到小王那里(forward)
二:通过告诉对方小王的电话号码的方式让对方打给小王(sendRedirect)

涉及到电话挂断不挂断的问题
就像程序里面一样,请求是否有中断,决定参数是否能传递

response.sendRedirect(url)跳转到指定的URL地址,产生一个新的request,所以要传递参数只有在url后加参数,如: 
url?id=1
request.getRequestDispatcher(url).forward(request,response)是直接将请求转发到指定URL,所以该请求能够直接获得上一个请求的数据,也就是说采用请求转发,request对象始终存在,不会重新创建。而sendRedirect()会新建request对象,所以上一个request中的数据会丢失。

redirect 会首先发一个response给浏览器, 然后浏览器收到这个response后再发一个requeset给服务器, 然后服务器发新的response给浏览器. 这时页面收到的request是一个新从浏览器发来的.

forward 发生在服务器内部, 在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来了,可能己经放了数据。

4.

按说:ServletContext对象的作用域比ServletConfig作用域大,为什么要从ServletConfig中到得
ServletContext对象呢?我个人认为:容器保存了很多个ServletContext对象,请求时容器到底取哪一个给你呢?那就取其中包含ServletConfig信息的那个给你,就是说取ServletConfig对象的父级对象。就好象HttpSession要从requset中取得一样,就是取那个包含当前request对象的session对象给你,这只是我的个人想法,还没有来得及看具体实现。


5.

fetch first from bookinfor

回游标中的第一行并将其作为当前行。

fetch last from bookinfor

返回游标中的最后一行并将其作为当前行

fetch absolute 2 from bookinfor

返回从游标头开始的第 2行,并将返回的行变成新的当前行。

fetch absolute -6 from bookinfor

返回游标尾之前的第 6 行并将返回的行变成新的当前行

fetch relative 4 from bookinfor

返回当前行之后的第 4 行并将返回的行变成新的当前行

fetch relative -3 from bookinfor

返回当前行之前的第 3 行并将返回的行变成新的当前行

fetch next from bookinfor

返回紧跟当前行之后的结果行,并且当前行递增为结果行。第一次 为第一行



6.

inerHTML是html标签的属性,成对出现的标签大多数都有这个属性
是开始标签和结束标签之间的字符,不包括标签本身
比如

<p id="pp">aaaaaaaaaa<span id="ss">bbbbbbbb</span> </p>

这里的p标签和span标签嵌套在一起
那么pp.innerHTML的内容就是
aaaaaaaaaa<span id="ss">bbbbbbbb</span>

ss.innerHTML的内容就是

bbbbbbbb

=========================
类似的一个属性是outerHTML

那么pp.innerHTML的内容就是
<p id="pp">aaaaaaaaaa<span id="ss">bbbbbbbb</span> </p>

ss.innerHTML的内容就是

<span id="ss">bbbbbbbb</span>

7.

SPAN标记有一个重要而实用的特性,即它什么事也不会做,它的唯一目的就是围绕你的HTML代码中的其它元素,这样你就可以为它们指定样式了。
   SPAN元素被加入到HTML中以允许网页制作者给出样式但无须附加在一个HTML的结构元素上。SPAN在样式表中作为一个选择符使用,而且它也能接受STYLE、CLASS和ID属性。

SPAN是一个内联元素,所以它可以作为HTML中的元素如EM和STRONG使用。最重要的差别在于虽然EM和STRONG带有结构的意义,但SPAN就没有这样的意义。它的存在纯粹是应用样式,所以当样式表失效时它就没有任何的作用。
 
8.

网关(Gateway)就是一个网络连接到另一个网络的“关口”。在Internet网中,网关是一种连接内部网与Internet上其它网的中间设备,也称“路由器”。网关地址是可以理解为内部网与Internet网信息传输的通道地址。按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在这里我们所讲的“网关”均指TCP/IP协议下的网关。

    那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。

    所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。

9.
一块网卡就对应一个mac,这个mac全球任何一块网卡都不同。

 既然每个以太网设备在出厂时都有一个唯一的MAC地址了,那为什么还需要为每台主机再分配一个IP地址呢?或者说为什么每台主机都分配唯一的IP地址了,为什么还要在网络设备(如网卡,集线器,路由器等)生产时内嵌一个唯一的MAC地址呢?主要原因有以下几点:(1)IP地址的分配是根据网络的拓朴结构,而不是根据谁制造了网络设置。若将高效的路由选择方案建立在设备制造商的基础上而不是网络所处的拓朴位置基础上,这种方案是不可行的。(2)当存在一个附加层的地址寻址时,设备更易于移动和维修。例如,如果一个以太网卡坏了,可以被更换,而无须取得一个新的IP地址。如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡。(3)无论是局域网,还是广域网中的计算机之间的通信,最终都表现为将数据包从某种形式的链路上的初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的移动都是由ARP(Address Resolution Protocol:地址解析协议)负责将IP地址映射到MAC地址上来完成的。下面我们来通过一个例子看看IP地址和MAC地址是怎样结合来传送数据包的。 

假设网络上要将一个数据包(名为PAC)由北京的一台主机(名称为A,IP地址为IP_A,MAC地址为MAC_A)发送到华盛顿的一台主机(名称为B,IP地址为IP_B,MAC地址为MAC_B)。这两台主机之间不可能是直接连接起来的,因而数据包在传递时必然要经过许多中间节点(如路由器,服务器等等),我们假定在传输过程中要经过C1、C2、C3(其MAC地址分别为M1,M2,M3)三个节点。A在将PAC发出之前,先发送一个ARP请求,找到其要到达IP_B所必须经历的第一个中间节点C1的MAC地址M1,然后在其数据包中封装(Encapsulation)这些地址:IP_A、IP_B,MAC_A和M1。当PAC传到C1后,再由ARP根据其目的IP地址IP_B,找到其要经历的第二个中间节点C2的MAC地址M2,然后再将带有M2的数据包传送到C2。如此类推,直到最后找到带有IP地址为IP_B的B主机的地址MAC_B,最终传送给主机B。在传输过程中,IP_A、IP_B和MAC_A不变,而中间节点的MAC地址通过ARP在不断改变(M1,M2,M3),直至目的地址MAC_B。

MAC(Media Access Control, 介质访问控制)地址是识别LAN(局域网)节点的标识。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。

  交换机之所以能够直接对目的节点发送数据包,而不是像集线器一样以广播方式对所有节点发送数据包,最关键的技术就是交换机可以识别连在网络上的节点的网卡MAC地址,并把它们放到一个叫做MAC地址表的地方。这个MAC地址表存放于交换机的缓存中,并记住这些地址,这样一来当需要向目的地址发送数据时,交换机就可在MAC地址表中查找这个MAC地址的节点位置,然后直接向这个位置的节点发送。所谓MAC地址数量是指交换机的MAC地址表中可以最多存储的MAC地址数量,存储的MAC地址数量越多,那么数据转发的速度和效率也就就越高。

  但是不同档次的交换机每个端口所能够支持的MAC数量不同。在交换机的每个端口,都需要足够的缓存来记忆这些MAC地址,所以Buffer(缓存)容量的大小就决定了相应交换机所能记忆的MAC地址数多少。

10.

一、什么是ARP协议


  ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。


二、ARP协议的工作原理


  在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如附表所示。

附表:

  我们以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。


三、如何查看ARP缓存表

  ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容了,如附图所示。

  用“arp -d”命令可以删除ARP表中某一行的内容;用“arp -s”可以手动在ARP表中指定IP地址与MAC地址的对应。


11.

虚拟专用网络(Virtual Private Network ,简称VPN)指的是在公用网络上建立专用网络的技术。其之所以称为虚拟网,主要是因为整个VPN网络的任意两个节点之间的连接并没有传统专网所需的端到端的物理链路,而是架构在公用网络服务商所提供的网络平台,如Internet、ATM(异步传输模式〉、Frame Relay (帧中继)等之上的逻辑网络,用户数据在逻辑链路中传输。它涵盖了跨共享网络或公共网络的封装、加密和身份验证链接的专用网络的扩展。VPN主要采用了隧道技术、加解密技术、密钥管理技术和使用者与设备身份认证技术。

VPN属于远程访问技术,简单地说就是利用公网链路架设私有网络。例如公司员工出差到外地,他想访问企业内网的服务器资源,这种访问就属于远程访问。怎么才能让外地员工访问到内网资源呢?VPN的解决方法是在内网中架设一台VPN服务器,VPN服务器有两块网卡,一块连接内网,一块连接公网。外地员工在当地连上互联网后,通过互联网找到VPN服务器,然后利用VPN服务器作为跳板进入企业内网。为了保证数据安全,VPN服务器和客户机之间的通讯数据都进行了加密处理。有了数据加密,就可以认为数据是在一条专用的数据链路上进行安全传输,就如同专门架设了一个专用网络一样。但实际上VPN使用的是互联网上的公用链路,因此只能称为虚拟专用网。即:VPN实质上就是利用加密技术在公网上封装出一个数据通讯隧道。有了VPN技术,用户无论是在外地出差还是在家中办公,只要能上互联网就能利用VPN非常方便地访问内网资源,这就是为什么VPN在企业中应用得如此广泛。


12. 继承与代理

Inheritance is used to create a hierarchical-type code structure that tries to keep as much "common" code near the top of the hierarchy, so it can be reused by lower levels of the hierarchy. So, in this approach, classes get more specialized as you move toward the bottom of the hierarchy. In small, static systems, inheritance can be ok. But large inheritance chains can also lead to hard-to-maintain code. Read up on design patterns that favor composition over inheritance for more info when to use inheritance and when not to.

Delegation is simply passing a duty off to someone/something else. Here is a simple example:

Code:


public class Information
{
public String getTemperature()
{
return TempGetter.getTemperature();
}

public String getTime()
{
return TimeGetter.getTime();
}
}

In this example, I've got imaginary classes TimeGetter and TempGetter that have static methods for retrieving time and temperature. Rather than finding my own way to obtain these data, I use existing classes. Said another way, I delegate these tasks to these classes without knowing/caring about the details of how it gets done.


13.

JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度。首先,我们都知道,通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。在运行时JIT会把翻译过的机器码保存起来,以备下次使用,因此从理论上来说,采用该JIT技术可以,可以接近以前纯编译技术。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值