自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜到怀疑人生的博客

能躺会喊666,国家一级保护废物,博客主要总结个人理解的知识,如有错误,欢迎指出

  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java基本数据类型与其封装类问题

基本数据类型与其封装类的关系如下:     基本数据类型           封装类            boolean            Boolean            char                 Character            byte                  Byte            short                Short  ...

2018-01-31 20:12:09 324 3

转载 Class文件中的常量池详解(下)

附上上一篇转载的博客地址:Class文件中的常量池详解(上)NO9.类中引用到的field字段在常量池中是怎样描述的?(CONSTANT_Fieldref_info, CONSTANT_Name_Type_info)     一般而言,我们在定义类的过程中会定义一些 field 字段,然后会在这个类的其他地方(如方法中)使用到它。有可能我们在类的方法中只使用field字段一次,也有

2018-01-31 09:28:27 486

转载 Class文件中的常量池详解(上)

NO1.常量池在class文件的什么位置?          我的上一篇文章《Java虚拟机原理图解》 1、class文件基本组织结构中已经提到了class的文件结构,在class文件中的魔数、副版本号、主版本之后,紧接着就是常量池的数据区域了,如下图用红线包括的位置:       知道了常量池的位置后,然后让我们来揭秘常量池里究竟有什么东西吧~     

2018-01-31 09:26:25 939 3

原创 JVM中的常量池的GC

位于常量池中的常量也可以被GC,常量GC的条件和实例对象类似,当没有一个引用指向该常量时,此时若发生内存回收,则可能被GC,常量池中的类或接口、方法、字段的符号引用也是如此

2018-01-31 09:21:35 1677 1

原创 常量在什么时候被放入常量池?

先来了解一下常量池,常量池分为方法区中的运行时常量池和class文件中的常量池,class文件中的常量池在编译时确定,其中包括符号引用和字面量(文本字符串,被声明为final的变量的值),运行时,JVM从中读取数据到方法区的运行时常量池,运行时常量池可以在运行时添加常量,常量可以在运行时或编译时被放入常量池,编译期放入到类文件的常量池中,运行时放入到方法区的运行时常量池中,JDK1.7后运行时常量

2018-01-30 16:57:13 4245 6

原创 java非静态实名内部类加载顺序问题

2018-01-29 16:46:38 483

原创 JVM的方法区以及JVM运行java文件的过程

本文整合自http://blog.csdn.net/tuhuolong/article/details/5951589JVM中的方法区主要存放类的信息等,JVM中的类信息也会被GC,满足以下条件的类就会被GC:1、该类的堆中所有的实例都被回收。2、加载该类的类加载器都被回收。3、该类所对应的java.lang.Class对象没有任何地方被引用,无法在任何地方通过反射机制访问该类的方

2018-01-29 09:17:57 612

原创 简单说说<init>和<clinit>

<clinit>:在初始化时执行,从上到下的收集有初始值的静态成员域或static块的值,进行赋值,执行本类的<clinit>函数时,父类的<clinit>函数已经执行完毕,若本类不具有静态成员域或static块,则JVM不会为该类产生<clinit>函数。<init>:其实就是构造函数,在生成class文件时,编译器会在构造函数中添加一...

2018-01-28 10:31:55 1940

原创 java非静态实名内部类中的static final问题

简单来说,一、static final修饰的只能是在常量池有字面量的数据类型,二、不能是引用类型,从设计者角度来说,为什么当初一可以通过,二不行?     一可行,最主要是为了提高程序的执行速度,因为static final在方法区中具有唯一性,只需要加载一次,在new对象时不需要分配堆内存,假设我们把static去掉,则每次new都需要分配堆内存,而final修饰在常量池中有字面量的

2018-01-28 10:00:39 530 1

原创 IP“碎片化”

当IP层接收到报文时,首先决定转发接口,接着询问转发接口的MTU(即最大可以发送多大的报文),IP会比较MTU和报文的大小,接着决定是否要“碎片化”(即把一个大的报文分成几个小的报文)。碎片化的IP报文在到达最终目的地后才会重组,重组信息由IP头部提供(有些网络层协议的“碎片”在下一跳路由器重组),接下来填之前IP头部报文字段的坑。标识字段唯一的标识了一个IP报文,同一IP

2018-01-27 19:58:53 1373

原创 java中的getBytes()问题

我们知道java中的char编码方式为unicode,来看看下面的代码public class Try { public static void main(String[] args) { // TODO code application logic here String x="我"; byte[] a=x.getBytes();

2018-01-27 19:46:38 2500

原创 IP路由

之前的博客已经初步介绍了IP路由的步骤,《TCP/IP详解卷一》中花费了一章讲解,这一章提到了一些新的知识点,所以在此做一个总结。主机也可以被配置成路由器(操作系统中有相应的配置参数),否则,主机在接收到不属于自己的报文时会丢弃该报文,路由表的每隔30s更新一次,接收到ICMP重定向报文后会立刻更新,IP层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。这区别于选路策

2018-01-27 09:01:45 783

原创 机器学习——基本术语

令D={X1,X2,X3.......Xm},则D表示包含m个示例的数据集,每个示例由d个属性描述,则每个示例Xi=(Xi1;Xi2;....... Xid)是d维空间的一个向量,d维空间的每个坐标轴称为“属性”,属性的取值称为“属性值”,所形成的d维空间称为“属性空间”、“样本空间”、“输入空间”,d称为样本Xi的“维度”。从数据中学得的模型的过程称为“学习”或是“训练”,这个过程通

2018-01-26 16:37:13 352

原创 Traceroute程序

Traceroute程序允许我们记录到达某个主机的路由,虽然两个连续的IP报文到达同一个主机的路由可能不一样,但大部分时候是一样的,Traceroute程序提供了源路由选项。Traceroute与IP的RR选项的功能重合了,相对于IP的RR选项有什么优势?1、并不是所有的路由器都支持IP的RR选项。(Traceroute不需要什么特殊要求就可以在路由器上执行)2、最主要的原因:RR选项

2018-01-26 09:14:14 451

原创 Ping程序

作用:测试本机是否可达另一个主机。原理:向某个主机发送ICMP回送请求,若该主机接收到该报文,则会返回ICMP回送应答。Ping指令功能:1、测量RTT(默认显示),原理:Ping会在ICMP回送请求中的数据部分记录发送时间,当接收到回送应答时,会从中提取发送时间,并用现在的时间减去发送时间。2、IP路由记录3、时间戳Ping程序直接工作在内核,不是用户进程。ICMP回

2018-01-25 15:21:39 307

原创 ICMP

作用:将报文传输过程中的错误或是其他需要注意的情况通知给发送源。ICMP报文格式如下:类型:有15种不同的值,与代码区域共同指定该报文的意义。代码:其取值范围取决于类型的值。校验和:检查整个ICMP报文是否有错误,计算方式和IP头部的一样。类型和代码区域的最大值远远小于255,为什么还要用一个字节表示?谈谈我的理解,这与计算机处理数据的方式有关,计算机处理数据是以字

2018-01-25 10:44:56 1198

原创 RARP

RARP:将MAC地址转换为IP地址,该协议渐渐被BOOTP或DHCP所取代有盘系统在启动时,可以从配置文件中读取接口的IP地址,无盘系统通过广播RARP请求获取IP地址。RARP报文结构和ARP一样,RARP请求报文一般是广播,RARP回应报文为单播一般发送RARP的流程如下:发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的R

2018-01-24 21:46:29 3474

原创 ARP

ARP:将32位的IP地址转换为48位的物理地址。IP地址是网络层的地址,连上互联网的每一台主机的每一个接口都会有一个IP地址,每台主机的每个网卡均有唯一的物理地址,物理地址在生产时就已经定死,无法改变,而每个网卡的IP地址是可以改变的(例如连上不同的wifi,IP地址也会不同)。 为什么有了IP地址还要有MAC地址,有MAC地址还要有IP地址?首先要明白,物理网络是有许多结构的,...

2018-01-24 19:03:15 13394

原创 IP——互联网协议

IP工作在网络层,所有的TCP、UDP、ICMP、IGMP报文都会被封装成IP数据包,其具有如下特性:1、不可靠性例如路由器的缓冲区溢出,IP会将缓冲区中的所有数据包丢弃并发送ICMP错误报文给发送源,所有的可靠性(即重传操作等)都应该由上层(应用层、传输层)提供。2、无连接性IP不会保存任何之前发送报文的信息或状态。IP协议会用一个唯一的32位的IP地址来标识网络上每一台主机...

2018-01-24 08:50:58 402

原创 初步认识TCP协议——TCP的紧急状态

当URG位为1时,TCP头部节点的紧急指针位会记录一个偏移量,指向紧急数据的最后一位(也可以是紧急数据的下一位,两者都是标准),在读取到紧急指针所指向的位置之前,TCP的接受进程都处于紧急状态,当读取到紧急数据后一位时,回复到正常状态。从上面的特性可以看到,TCP无法告诉紧急数据从哪里开始,只能告诉紧急数据从哪里结束,URG位为1的TCP报文并不是带外数据。抄袭一段百度上的解释:传输层协议

2018-01-22 16:16:35 4099 1

原创 初步认识TCP协议——TCP的四种定时器

重传定时器解决的问题:由于ACK和报文有可能会在传输过程中丢失,当定时器到期还没有收到对应报文的ACK时,会重传相应报文。TCP重传定时器的值应该如何设置?由于路由可能会变,网络的拥塞程度会发生改变,所以一般情况下,我们希望重传定时器的值是变化的,通过测量往返时间(RTT),根据一定的算法来设置TCP重传定时器(RTO)的值。这些算法还没有研究,还不清楚为什么这么计算,若有人知道,欢迎

2018-01-22 09:56:35 339

原创 带宽时延乘积的理解以及拥塞发生的情况

带宽时延乘积=带宽(位/秒)*rtt(秒),带宽时延乘积单位为位,表示在任何特定时间该网络线路上的已发送但尚未确认的数据的最大位数。为什么带宽延迟乘积的物理意义是这个呢?以下是我的理解从公式的来看,表示的是在一个rtt时间里发送的数据位数,rtt表示发送一个报文到接收到报文的ACK所经过的时间,设时间为t,假设t=0时发出第一批报文且每秒发出总量为带宽大小的报文,当t小于rtt时,意味

2018-01-21 15:46:38 5640

原创 初步认识TCP协议——TCP的交互报文、成块报文、慢启动、拥塞避免、快速重传、快速恢复、滑动窗口、PUSH报文

TCP的报文可分为交互报文和成块报文,交互报文比较小,成块报文比较大。以下出现的滑动窗口和CWND均以字节作为单位,为了讨论方便,故每次都会将其称为报文。交互报文交互报文就和日常的对话一样,你一句我一句,常用在交互性高的应用,如Rlogin远程登录,由于发送报文非常的频繁,在局域网中可能没有什么问题,但在广域网中,频繁发送报文可能加剧网络拥塞,因此,TCP提供了两种策略。1、延

2018-01-21 15:14:16 1194

原创 初步认识TCP协议——TCP的reset报文

当本次TCP接收到不正确的TCP报文(即端口号与IP地址为本机,但对方的IP地址本机不认识,或是对应端口上没有TCP连接)时,会发送reset报文通知对方放弃连接。TCP连接是通过socket对来标识连接的(即本机与对方的IP地址加端口号)。发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区中的包,发送RST在如下情况会发送reset报文:1、发送连接请求到没有进程

2018-01-20 11:58:38 9496

原创 初步认识TCP协议——TCP状态转换图

状态转换图如上,CLOSED状态是假想的,不是真正的状态。建立ESTABLISHED状态后即可发送报文,当SYN_RCVD是由LISTEN状态转变过来时,从SYN_RCVD才能回退到LISTEN状态,为什么呢?以下是我的理解:LISTEN状态是被动打开的状态(属于服务器的状态),若SYN_RCVD状态是从SYN_SENT转换而来,意味着双方的应用程序都是主动打开的,都是客户端,而客户端是不存在

2018-01-20 10:06:57 348

原创 java实名内部类详解

实名内部类是个很神奇的东西,当有static修饰class时,可以具有静态成员域和静态成员方法,当没有static修饰时,不能具有静态成员方法和静态成员域,但却可以具有static final修饰的成员域(常量池中有字面量的成员域)。为什么?为什么非static修饰的实名内部类可以应用外部类的成员域和成员方法呢?为什么不可以具有静态成员函数?为什么不可以具有静态代码块?  先来说说实名...

2018-01-19 20:40:16 1006

原创 JVM类的加载

类加载的过程:加载、验证、准备、解析、初始化、使用、卸载,其中加载、验证、准备、初始化按顺序开始,但不需要等前一阶段完成后才开始,解析状态可以发生在初始化前也可以发生在初始化后。当类完成加载、验证、准备、解析后,才可以真正的被JVM执行。 以下的类变量均指静态变量 加载:jvm创建对象前,会先检查类是否加载,寻找类对应的class对象,若加载好,则不会再去加载过程:通过...

2018-01-18 16:24:32 302

原创 为什么"String a=“123”;String b=a+“234”;"中的b的字符串不在字符串常量池中

代码如下:public class Try { public static void main(String[] args) { String a="123"+"234"; String b="123"; String c=b +"234"; }}问题:String c的值不是相当于“123”+“234”吗?为什么

2018-01-18 10:45:18 1743

原创 JVM的字节码指令

先来看看什么是字节码指令上图的Code区域即为字节码指令。JVM的指令是由一个字节长度的、代表某种操作的数字(例如iconst_0,iconst_0前面的数据表示语句的顺序,可用于条件判断语句)以及跟在其后的0到多个操作数(或是操作数的索引)构成的(上图指令没有操作数),大多数指令都包含了其操作所对应的数据类型的信息,例如iload指令将int型数据从局部变量表加载到操作数栈中,由于JVM指令只有...

2018-01-18 09:15:28 836 1

原创 JVM的垃圾回收算法和堆的GC

之前说过JVM堆内存的划分与垃圾回收机制有关,现在来填坑,堆内存结构如下。怎样的对象才需要被回收?java课上老师是这么说的,当某个内存没有引用指向时,该内存就会被释放,那么如何判断一个内存是否有引用指向呢?sun的JVM采用根搜索方法,以一系列名为“GC Root”的对象为起点,从这些节点往下搜索,搜索走过的路径称为引用链,若一个内存没有和任何引用链相连,则被回收,需要GC的只有方法

2018-01-17 11:05:35 153

原创 初步认识TCP协议——TCP的三次握手与四次挥手

三次握手:       1、客户端发送SYN报文(即六位bool型中的SYN字段为1),指定想要连接的服务器的端口,指定初始序列号(ISN)。       2、服务器回应自己的SYN报文,指定接收方的初始序列号(ISN),指定确认号(即ACK)——为客户端的ISN+1,虽然SYN报文是没有数据部分的,但逻辑上它的数据占一位,为什么要在逻辑上占一位?我的理解是为了防止由于重传造成混乱,SYN

2018-01-17 09:06:54 217

原创 JVM的内存结构

整个JVM的内存区域包括方法区、本地方法栈、虚拟机栈、堆、程序计数器。       其中程序计数器与虚拟机栈为线程私有:       程序计数器:用来记录当前JVM执行字节码的地址,之所以为线程私有是因为Java的多线程会有线程的切换,假如A线程在执行过程中失去对资源的支配权,此刻A线程的执行状态就保存在程序计数器中,以便重新获得资源支配权时能继续之前的工作,如果线程正在执行一个java方法,则计

2018-01-16 22:58:18 163

原创 初步认识TCP协议——可靠性和TCP头部

TCP是可靠的协议,不支持组播和广播,可靠性是指尽可能的保证对方收到数据包,可靠性主要体现在以下方面:       1、数据会被TCP分割成适当的大小,防止数据包的大小大于对方缓冲区的大小,导致对方丢弃数据包,TCP提供一种机制保证接收方可以重组分割的数据包。              2、当TCP发送数据包时,会维持一个计数器,如果对方在给定时间内未回复确认收到信息,则会重新发送数据

2018-01-16 10:30:06 404 1

原创 java中的单体类

java中的单体类的设计非常巧妙,,所谓单体类就是希望该类只有一个实例对象,一个单体类的关键由下面三部分组成,三者的修饰词缺一不可:1、声明一个指向本类型的指针,同时让其指向一个实例对象,该指针的作用域修饰词为private和static。声明为private是防止在类外部改变该指针的值,虽然在类外部无法改变该指针的指向(由于构造函数为私有,所以无法在类外部申请实例对象),但可以将该指

2018-01-14 12:35:43 2064

原创 PageEncoding和ContentType的区别

博主只是学生,本博客的内容均为本人自己的理解,若有不正确的地方,希望大家指正,不胜感激            由于这两者涉及到编码,先来说说编码的一些问题,大多数人将编码和字符集两者搞混,例如平常常说的unicode,其实是一个字符集,所谓的字符集包括两个方面,一、字符的集合,二、编码方案,unicode字符集的编码方式有UTF-8,UTF-16,UTF-32,其中UTF-16又分

2018-01-05 22:49:02 1499

jdk文件,里面只有文件,无需安装

用于java开发的JDK..................................................................................................

2018-04-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除