自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Java并发之取消和关闭

1 任务取消—协作方式:当需要停止时,它们首先会清除当前正在执行的工作。—如果外部代码能在某个操作正常完成之前将其置入“完成”状态,那么这个操作就可以称为可取消的。—取消某个操作的原因包括:· 用户请求取消。· 有时间限制的操作。· 应用程序事件。· 错误。· 关闭。—一个可取消的任务必须拥有取消策略,该策略详细地定义了取消操作的:· How:即其他代码如何请求取消该任务;·...

2019-01-22 17:31:39 265

原创 对String的总结

1 Java中常量池的区分(1)全局字符串池(string pool)—全局字符串池里的内容是在类加载完成,经过验证、准备阶段之后在堆中生成字符串对象实例,然后将该字符串对象实例的引用值存到string pool中。—字符串常量池中存的是引用值而不是具体的实例对象,具体的实例对象是在堆中开辟的一块空间中存放的。—在HotSpot VM里实现string pool功能的是一个StringTa...

2019-01-22 17:29:40 190

原创 Java并发之任务执行

1 单个线程中串行地执行任务—缺点:服务器的响应慢、吞吐量低、资源利用率低。(I/O阻塞、网络拥塞等问题造成)—适合于任务数量很少且执行时间很长,或者当服务器只为单个用户提供服务而该用户每次只发出一个请求的情况。2 为每个请求创建一个新的线程来提供服务— 优点:· 带来更快的响应性:将任务处理过程从主线程中分离出来,使得程序在完成前面的请求之前可以接受新的请求,从而提高响应性。· 更高...

2019-01-21 16:28:06 449

原创 Java并发之基础构建模块

1 同步容器类—同步容器类包括如Vector、Hashtable以及一些由Collections.synchronizedXxx等工厂方法创建的同步的封装器类。—同步容器类实现线程安全的方式是:将它们的状态封装起来,并对每个公有方法都进行同步,使得每次只有一个线程能访问容器的状态。(1)同步容器类的问题—同步容器类的问题:同步容器类都是线程安全的,但在某些情况下可能需要额外的客户端加锁来保...

2019-01-21 16:25:34 105

原创 Java并发之对象的组合

1 设计线程安全的类—在设计线程安全类的过程中,需要包含以下三个基本要素:· 找出构成对象状态的所有变量。· 找出约束状态变量的不变性条件。· 建立对象状态的并发访问管理策略。—对象的状态:如果对象中所有的域都是基本类型的变量,那么这些域将构成对象的全部状态;如果在对象的域中引用了其他对象,那么该对象的状态将包含被引用对象的域。—同步策略定义了如何在不违背对象不变条件和后验条件的情况下...

2019-01-17 15:58:15 664

原创 Java并发之对象的共享

1 可见性—synchronized既能用于实现原子性或者确定“临界区”,还能用于实现内存可见性。—加锁的含义不仅仅局限于互斥行为,还包括内存可见性。为了确保所有线程都能看到共享变量的最新值,所有执行读操作或者写操作的线程都必须在同一个锁上同步。2 发布和逸出—发布一个对象的意思是指,使对象能够在当前作用域之外的代码中使用。—逸出:某个不应该被发布的对象被发布。—发布的形式包括:(1...

2019-01-17 15:55:25 477

原创 Java并发之线程安全性

1 线程安全性—定义:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。—无状态的对象一定是线程完全的。—注:对象的状态是指存储在状态变量(例如实例和静态域)中的数据,对象的状态还可能包括其他依赖对象的域。例如,某个HashMap的状态不仅存储在HashMap对...

2019-01-16 11:43:04 92

原创 Java并发之简介

1 促使进程或线程出现的因素(1)资源利用率。如果程序在等待某个外部操作(如I/O操作)执行完成的同时可以运行另一个程序,那么可以提高资源的利用率。(2)公平性。不同的用户和程序对于计算机上的资源有着同等的使用权。(3)便利性。通常来说,在计算多个任务时,应该编写多个程序,每个程序执行一个任务并在必要时相互通信,这比只编写一个程序来计算所有任务更容易实现。2 线程的优势(1)如果使用得当...

2019-01-16 11:41:36 112

原创 TCP/IP详解卷一之传输控制协议(TCP)

1 TCP协议特点—TCP提供了一种面向连接的、可靠的字节流服务。—“面向连接的”是指使用TCP的两个应用程序必须在它们可交换数据之前,通过相互联系来建立一个TCP连接。—“字节流”的结果是没有由TCP自动插入的记录标志或消息边界。—“可靠性”:· TCP维持了一个强制的校验和,该校验和涉及它的头部、任何相关应用程序数据和IP头部的所有字段。· 当TCP发送一组报文段时,它通常设置一个...

2019-01-14 19:40:27 774

原创 TCP/IP详解卷一之名称解析和域名系统

1 DNS名称空间、名称服务器、缓存—DNS名称空间:DNS中使用的所有的名称集合。—DNS名称空间是划分为层次且大小写不敏感的。当前的DNS名称空间是一颗域名树,位于顶部的树根未命名,树的最高层是所谓的顶级域名。—负责管理部分有效DNS名称空间的个人应该至少安置两台名称服务器或DNS服务器来存储名称空间的相关信息。所有这些服务器都包含一个区域的完全相同的信息,如果一台服务器不能正常工作,至...

2019-01-14 19:31:53 329

原创 TCP/IP详解卷一之用户数据报协议(UDP)和IP分片

1 UDP协议特点—UDP是一种保留消息边界的简单的面向数据报的传输层协议。—UDP提供了一种无连接的、不可靠的服务。—UDP提供差错检测:端到端传输层校验和。—缺点:UDP不提供差错纠正、队列管理、重复消除、流量控制和拥塞控制。因此,它的应用程序需要自己实现这些保护功能。—优点:· 它比其他的传输协议使用更少的开销。· 应用程序可选择自己的重传单元的能力。—广播和组播更多直接使用...

2019-01-13 10:48:35 705

原创 TCP/IP详解卷一之广播和本地组播(IGMP和MLD)

1 引言—广播和组播为应用程序提供了两种服务:· 数据分组交付至多个目的地;· 通过客户端请求/发现服务器,如DHCP。—广播比较简单,但开销更高;组播比较复杂,但效率更高。—IPv4支持广播和组播;IPv6只支持组播,不支持广播。—一般来说,只有使用UDP传输协议的用户应用程序利用广播和组播;而使用TCP传输协议的用户应用程序使用单播和任播,不使用广播和组播。2 广播—广播是指将...

2019-01-13 10:45:44 736 1

转载 Java中的浅拷贝和深拷贝以及clone()方法

推荐这两个链接:https://blog.csdn.net/u014727260/article/details/55003402https://www.cnblogs.com/plokmju/p/7357205.html

2019-01-13 10:42:51 87

原创 TCP/IP详解卷一之ICMPv4和ICMPv6:Internet 控制报文协议

1 处理ICMP报文—一般来说,传入的信息类请求报文将被操作系统自动处理;而差错类报文传递给用户进程或传输层协议,如TCP。—处理传入的ICMPv6报文将应用以下规则:· 如果可能的话,未知的ICMPv6差错报文必须传递给上层产生差错报文的进程;· 未知的ICMPv6信息类报文被丢弃;· ICMPv6差错报文将会尽可能多地包含导致差错的原始(”违规“)IPv6报文,当然最终的差错报文大小...

2019-01-11 16:33:10 4532

原创 TCP/IP详解卷一之防火墙和网络地址转换

1 防火墙—代理防火墙和包过滤防火墙的主要区别是所操作的协议栈的层次以及由此决定的IP地址和端口号的使用。(1)包过滤防火墙— 包过滤防火墙是一个互联网路由器,能够丢弃符合(或不符合)特定条件的数据包。—最简单的包过滤防火墙是无状态的,它会单独处理每一个数据报。—更复杂的包过滤防火墙是有状态的,它能够通过关联已经或者即将到达的数据包来推断流或者数据报的信息,即那些属于同一个传输关联的数据...

2019-01-11 16:29:58 887

原创 TCP/IP详解卷一之DHCP和自动配置

1 主机或路由器的配置信息—配置信息包括:·“基本要素”:IP地址、子网掩码、DNS服务器的IP地址、路由器的IP地址。·“其他要素”:家乡代理、组播路由器、VPN网关等,取决于使用或提供的服务类型。2 Internet中客户端与服务器、路由器配置方式—配置方式:· 客户端主机中使用动态主机配置协议(DHCP)、IPv4和IPv6中的无状态地址自动配置。· 服务器和路由器常通过手工配...

2019-01-10 10:24:42 2456

原创 TCP/IP详解卷一之Internet 协议

1 IP提供了一种尽力而为、无连接的数据报交付服务—“尽力而为”的含义是不保证IP数据报能成功到达目的地。—“无连接”意味着IP不维护网络单元(即路由器)中数据报相关的任何链接状态信息,每个数据报独立于其他数据报来处理;也意味着IP数据报可不按顺序交付。·2 IPv4头部和IPv6头部—正常的IPv4头部大小为20字节,除非存在可选项;IPv6头部大小固定为40字节,无可任何可选项,但是...

2019-01-10 10:20:37 409

原创 TCP/IP详解卷一之地址解析协议(ARP)

1 概述—地址解析协议提供了一种在IPv4地址和各种网络技术使用的硬件地址之间的动态映射。—ARP仅用于IPv4(ARP也能用于IPv4以外的地址,但很少见),IPv6使用邻居发现协议,它被合并入ICMPv6。—ARP会自动执行和随时间变化,而不需要系统管理员重新配置,ARP操作通常与用户或系统管理员无关。2 直接交付和ARP—直接交付:发生在一个IP数据报被发送到一个与发送方具有相同I...

2019-01-08 15:17:57 327

原创 TCP/IP详解卷一之链路层

1 以太网帧格式 —前导字段:7字节,接收器电路用其确定一个帧的到达时间,并确定编码位之间的时间量,典型值是0xAA。—帧起始分隔符(SFD):1字节,接收器用其“恢复时钟”,固定值是0xAB。—目的地址(DST):6字节,也允许寻址到多个站点(广播或组播),广播功能用于ARP协议,组播功能用于ICMPv6协议。—源地址(SRC):6字节。—长度或类型字段:· 如果字段值大于或等于1...

2019-01-08 15:14:52 144

原创 TCP/IP详解卷一之 Internet地址结构

1 IP地址的表示(1)IPv4地址—地址长度为32位,通常采用点分四组(点分十进制)表示法,如165.195.130.107。—每个用点分隔的十进制数的范围为[0,255]。(2)IPv6地址—地址长度为128位,传统表示方法是采用称为块或字段的四个十六进制数,并且用冒号分隔这些块和字段。—IPv6地址简化表示:· 一个块中前导的0必须压缩。例如,2001:0db8::0022变成...

2019-01-07 15:16:38 241

原创 TCP/IP详解卷一之概述

1 体系结构—协议族:一系列相关协议的集合。—体系结构(参考模型):指定一个协议族中的各种协议之间的相互关系并划分需要完成的任务的设计。—TCP/IP是一个实现Internet体系结构的协议族。(1)分组、连接和数据报—分组交换优点:· 网络更有弹性;· 基于统计复用,可更好地利用网络链路和交换设备。—统计复用的优缺点:· 优点:简单而有效,如果网络带宽被使用和有流量通过,那么网...

2019-01-07 15:13:00 109

原创 线程完全与锁优化

1 Java语言中的线程完全—线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。—按照线程安全的“安全程度”,可以将Java语言中的共享数据分为以下5类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。(1)不可变—不可变...

2018-12-27 10:46:24 113

原创 Java内存模型与线程

1 Java内存模型—主要目标:定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。—此处的变量和Java中的变量有所区别,它包括类字段、实例字段和构成数组对象的元素,但不包括局部变量和方法参数。—Java内存模型规定:· 所有的变量都存储在主内存中;· 每条线程还有自己的工作内存,线程的工作内存中保存了被该线程使用到的变量的主内存副拷贝,线程对变...

2018-12-26 17:30:58 80

原创 晚期(运行期)优化

1 即时编译器(JIT编译器)—当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”,包括被多次调用的方法和被多次执行的循环体。—为了提高热点代码的执行效率,在运行时,虚拟机就会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(JIT编译器)。—即时编译器不是虚拟机必需的部分,虚拟机规范对其没有做任何规定,与具体的虚拟...

2018-12-25 16:22:04 81

原创 早期(编译期)优化

1 “编译期”的含义· 可能是指一个前端编译器把*.java文件转变成*.class文件的过程,前端编译器如:Sun的Javac、Eclipse JDT中的增量式编译器(ECJ);· 也可能是指虚拟机的后端运行期编译器(JIT编译器)把字节码转变成机器码的过程,JIT编译器如:HotSpot VM的C1、C2编译器;· 还可能是指使用静态提前编译器(AOT编译器)直接把*.java文件编译成...

2018-12-24 20:23:13 98

原创 虚拟机字节码执行引擎

1 运行时栈帧结构—栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,是虚拟机运行时数据区中的虚拟机栈的栈元素。—栈帧中存储了方法的局部变量表、操作数栈、动态连接、方法返回地址和一些附加信息。—每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机里面从入栈到出栈的过程。—在编译程序代码的时候,栈帧中需要多大的局部变量表、多深的操作数栈都已经完全确定了,并且写入到方法表的Cod...

2018-12-24 20:07:44 96

原创 虚拟机类加载机制

1 类加载机制—概念:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。—Java语言中,类型的加载、连接和初始化过程都是在程序运行期间完成的。—类的生命周期包括:加载、验证、准备、解析、初始化、使用、卸载,其中验证、准备、解析统称为连接。—加载、验证、准备、初始化和卸载这5个阶段的开始顺序是确定的,但是通常会在...

2018-12-22 11:33:27 140 2

原创 类文件结构

1 Java虚拟机的两种中立特性· 平台无关性· 语言无关性实现平台无关性和语言无关性的基础是虚拟机和字节码存储格式(Class文件)。2 Class类文件的结构—Class文件是一组以8位字节为基础单位的二进制流,当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。—“高位在前”:即最高位字节在地址最低位、最低位字节在地址最高位。—Clas...

2018-12-20 16:52:27 90

原创 垃圾收集器与内存分配策略

1 JVM中哪些内存需要回收?    JVM垃圾回收主要关注的是Java堆和方法区这两个区域;而程序计数器、虚拟机栈、本地方法栈这3个区域随线程而生,随线程而灭,随着方法结束或者线程结束内存自然跟随着回收了,因此不需要过多考虑内存分配和回收的问题。 2 判断对象是否存活的算法    (1)引用计数算法            基本思路:给对象添加一个引用计数器,每当有一个地方引用...

2018-12-19 22:38:54 84

原创 Java内存区域与HotSpot虚拟机对象

一 Java内存区域与HotSpot虚拟机对象1 Java技术体系、JDK、JRE?Java技术体系包括:· Java程序设计语言;· 各种硬件平台上的Java虚拟机;· Class文件格式;· Java API类库;· 来自商业机构或开源社区的第三方Java类库。JDK,即Java开发工具包,包括Java程序设计语言、Java虚拟机、Java API类库,是用于支持Java程序开...

2018-12-19 14:31:16 109

空空如也

空空如也

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

TA关注的人

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