自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白夜行

冗长的黑暗中,你是我唯一的光。

  • 博客(61)
  • 资源 (25)
  • 收藏
  • 关注

原创 【计网】HTTPS详解

引入之前介绍了HTTP协议,但它并不是完美的,因为它有以下几个缺点通信使用明文( 不加密) , 内容可能会被窃听不验证通信方的身份, 因此有可能遭遇伪装无法证明报文的完整性, 所以有可能已遭篡改无法确定请求发送至目标的 Web 服务器是否是按真实意图返回响应的那台服务器。有可能是已伪装的 Web 服务器。无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是已伪装的客户端

2017-06-30 12:48:53 511

原创 【计网】HTTP2.0新特性

引入HTTP 2.0 的主要目标是改进传输性能,实现低延迟和高吞吐量。从另一方面看,HTTP 的高层协议语义并不会因为这次版本升级而受影响。所有HTTP 首部、值,以及它们的使用场景都不会变HTTP1.1在使用时,header里携带的内容过大,在一定程度上增加了传输的成本,并且每次请求header基本不怎么变化,尤其在移动端增加用户流量。HTTP 2.0 致力于突破上一代标准众所周知的性能限制

2017-06-30 11:14:53 562

原创 【计网】HTTP与WebSocket的区别

WebSocket协议1.定义Websocket是html5提出的一个协议规范(2011年),参考rfc6455。websocket约定了一个通信的规范,通过一个握手的机制,客户端(浏览器)和服务器(webserver)之间能建立一个类似tcp的连接,从而方便c-s之间的通信。在websocket出现之前,web交互一般是基于http协议的短连接或者长连接。WebSocket他是为了解决客户端

2017-06-30 10:39:57 3880

转载 【计网】SSL/TLS 协议详解

1.概述TLS(Transport Layer Security)传输层安全,用于保证Web通信以及其他流行协议的安全TLS能够在应用程序内部或底层实现SSL(Secure Sockets Layer)安全套接字层,是TSL的前身2. 整体结构(1)SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下:SSL:(Secure Socket Layer,安全套接字层),为Ne

2017-06-29 20:40:19 743

原创 【计网】从输入 URL 到显示页面发生了什么?

一共分为以下几个过程输入网址, 浏览器分析超链指向页面的 URL浏览器向 DNS 请求解析出域名的 IP 地址 浏览器向服务器发送一个 HTTP 请求(建立 TCP 连接)服务器的永久重定向响应服务器处理请求服务器返回一个 HTTP 响应(TCP 连接释放)浏览器发送请求获取嵌入在 HTML 中的资源显示 HTML1.输入地址用户输入url,例如http://www.90sec.co

2017-06-29 19:46:42 676

原创 【计网】HTTP协议详解

HTTP概述HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传

2017-06-29 17:31:24 916

原创 【计网】应用层概述

域名系统 DNS1.域名系统概述许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。 因特网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。2.因特网的域名结构(1)定义

2017-06-29 12:54:38 1049

原创 【计网】TCP的三次握手及四次挥手详解

引入运输层连接有三个阶段连接建立(三次握手)数据传送连接释放(四次挥手)三次握手原理1.图解三次握手建立 TCP 连接的各状态 2.建立连接过程分析(1)第一次握手A 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。(2)第二次握手B 收到连接请求报文段后,同意A的请求,发回确认,B 在确认报文段中设置SY

2017-06-29 08:48:56 2594

原创 【计网】运输层概述

运输层协议概述1.进程之间的通信(1)定义运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层运输层为相互通信的应用进程提供了逻辑通信 (2)特点两个主机进行通信实际上就是两个主机中的应用进程互相通信应用进程之间的通信又称为端到端的通信复用和分用(3)运输层的主要功能 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)

2017-06-28 19:27:04 904

原创 【计网】网络层详解(下)

网际控制报文协议 ICMP1.定义为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP 不是高层协议,而是 IP 层的协议。ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去2.ICM

2017-06-28 13:44:26 1170

原创 【计网】网络层详解(上)

网络层提供的两种服务1.网络负责可靠交付面向连接的通信方式 建立虚电路(Virtual Circuit),以保证双方通信所需的一切网络资源。 如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点2.虚电路服务3.数据报服务4.虚电路服务与数据报服务的比较网际协议 IP1.与 IP 协议配套使用的三个协议地址解析协议 ARP(Address Resolution Protoco

2017-06-28 11:23:50 1526

原创 【计网】数据链路层详解

数据链路层使用的信道1.点对点信道使用一对一的点对点通信方式。2.广播信道使用一对多的广播通信方式,过程较复杂。3.数据链路层的简单模型使用点对点信道的数据链路层1.数据链路和帧链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路2

2017-06-28 10:26:49 1321

原创 【计网】物理层详解

物理层的基本概念1.定义物理层的主要任务描述为确定与传输媒体的接口的一些特性2.特性机械特性 指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等等。电气特性 指明在接口电缆的各条线上出现的电压的范围。功能特性 指明某条线上出现的某一电平的电压表示何种意义。过程特性 指明对于不同功能的各种可能事件的出现顺序。 数据通信1.术语的解释数据(data)——

2017-06-28 09:44:03 1035

原创 【计网】概述

因特网1.概述网络(network)由若干结点(node)和连接这些结点的链路(link)组成互联网是“网络的网络”(network of networks)连接在因特网上的计算机都称为主机(host)。 图解:2.Internet 和 Internet 的区别internet(互联网或互连网)是一个通用名词,它泛指由多个计算机网络互连而成的网络。 Internet(因特网)则是一个专用

2017-06-28 09:12:45 539

转载 【JVM】JVM源码分析之Metaspace解密

概述metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所致,看到大家讨论来讨论去,看得出很多人对metaspace还是模棱两可,不是很了解它,因此我觉得有必要写篇文章来介绍一下它,解开它神秘的面纱,当我们再次碰到它的相关问题的时候不会再感到束手无策。为什么会有meta

2017-06-26 20:01:35 1242

转载 【JVM】G1垃圾收集器的关键技术

前言G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,相信熟悉JVM的同学们都不会对它感到陌生。在JDK 9中,G1被提议设置为默认垃圾收集器(JEP 248)。在官网中,是这样描述G1的: The Garbage-First (G1) collec

2017-06-26 18:33:49 13378 2

原创 【JVM】字节码执行引擎

引入class文件就是字节码文件,是由虚拟机执行的文件。也就是java语言和C & C++语言的区别就是,整个编译执行过程多了一个虚拟机这一步。这个在 类文件结构 中已经解释。上一节讲了虚拟机是如何加载一个class的,这一节就讲解虚拟机是如何执行class文件的。运行时栈帧结构1.定义栈是每个线程独有的内存。栈帧存储了局部变量表,操作数栈,动态连接,和返回地址等。每一个方法的执行 对应的

2017-06-26 16:54:22 381

原创 【JVM】类文件结构

Class文件的定义一组以8字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在class文件中,中间没有任何分隔符,这使得class文件中存储的内容几乎是全部程序运行的程序。注:Java虚拟机规范规定,Class文件格式采用类似C语言结构体的伪结构来存储数据,这种结构只有两种数据类型:无符号数和表。无符号数属于基本数据类型,主要可以用来描述数字、索引符号、数量值或者按照UTF-8编

2017-06-26 13:41:34 369

原创 【JVM】线程安全与锁优化

线程安全1.定义当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果2.分类(1)不可变不可变的对象一定是线程安全的,只要一个不可变对象被正确地构建出来(没有发生this引用逃逸情况),那其外部的可见状态永远也不会改变 ,永远也不会看到它在多个线程之中处于不一致的状态。如Inte

2017-06-26 11:07:36 876

原创 【JVM】Java内存模型

引入硬件的效率与一致性我们都知道现在计算机的内存与处理器的运算能力有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(cache)来作为内存与处理器之间的缓冲,这引入了一个新的问题:缓存一致性(Cache Coherence)。在多处理器系统中,每个处理器都有自己的高速缓存,而他们又共享同一主存,多个处理器运算任务都涉及同一块主存,需要一种协议可以保

2017-06-26 10:17:21 317

原创 【JVM】JDK命令行工具

1.在JDK/bin目录下我发现了许多命令行工具这些命令有哪些作用呢,接下来我就来详细介绍一下2.常用JDK命令行工具 命令名称 全称 用途 jstat JVM Statistics Monitoring Tool 用于收集Hotspot虚拟机各方面的运行数据 jps JVM Process Status Tool 显示指定系统内所有的HotSpot虚拟机进程

2017-06-24 21:38:35 434

原创 【JVM】自定义类加载器

1.ClassLoader类介绍(1) 作用:根据一个指定类的名称,找到或者生成其对应的字节代码,从这些代码中定义出一个Java类。即Java.long.Class类的一个实例,还加载Java应用所需的资源,如图像文件、配置文件等。(2) 常用方法:getParent() 返回该类加载器的父类加载器loadClass(String name) 负责加载指定的类,首先会从已加载的类中去寻找,若

2017-06-24 20:34:42 356

原创 【JVM】类加载机制

什么是类的加载将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类的生命周期类的生命周期是从被加载到虚拟机内存中开始,到卸载出内存结束。

2017-06-24 20:15:21 317

原创 【JVM】常用虚拟机参数及实例

常用参数表 参数 描述 -XX:+PrintGC 启动java虚拟机后,只要遇到gc,就打印日志 -XX:+PrintGCDetails gc发生时,打印更详细的日志 -XX:+PrintHeapAtGC 每一次GC后,都打印堆信息 -XX:+PrintGCTimeStamps gc发生时,额外打印gc时间,该时间为虚拟机启动到现在的时间偏移量 -XX:+P

2017-06-24 18:49:44 1395

原创 【JVM】GC算法与垃圾收集器

引入java 语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考虑内存管理。由于有个垃圾回收机制,可以有效的防止内存泄露,有效的使用空闲的内存;内存泄露:指该内存空间使用完毕后未回收,在不涉及复杂数据结构的一般情况下,java的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度Java虚拟机的内

2017-06-24 17:11:30 699

原创 【JVM】Java内存区域与OOM

引入Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。Java虚拟机运行时数据区如图所示1.程序计数器(线程私有)作用 记录当前线程所执行到的字节码的行号。字节码解释器工作的时候就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。意义 JVM的多线程是通过线程轮流切换并分配处理器来实现的,对于我们来说的并行事实上一个处理

2017-06-24 13:54:03 1762

原创 【JVM】JVM概述

1.JVM定义JVM 是Java Virtual Machine(JVM )的缩写,Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令进行执行,这样实现了Java“一次编译,到处运行”。2.JVM组成JVM由三大部分组成:类加载器(ClassLoader subsystem),执行引擎(Execution Engine),内存区(Runtime data areas)。 3. JVM执

2017-06-24 10:22:04 408

原创 【Java多线程】ForkJoinPool

1.定义Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架2.与线程池的区别(1)采用工作窃取模式(work-stealing):某个线程从其他队列里窃取任务来执行。为了减少窃取任务线程和被 窃取任务线程之间的竞争,通常会使用双端队列,被窃取任务线程永远从自己双端队列的头部拿 任务执行,而窃取任务的线

2017-06-20 18:27:03 882

原创 【Java多线程】线程池的工作原理详解(下)

接着上篇文章,我接下来继续介绍线程池的工作原理,如果你还没有看上篇,我建议最好浏览一下:线程池的工作原理详解(上)Executors 工具类 1.定义Executors是java线程池的工厂类,通过它可以快速初始化一个符合业务需求的线程池。2.常用方法(1) newFixedThreadPool方法 :创建固定大小的线程池适用于为了满足资源管理的需求,而需要限制当前线程数量的应用场景,即负载比较

2017-06-20 17:27:56 1423

原创 【Java多线程】线程池的工作原理详解(上)

为什么使用线程池线程池为线程生命周期开销问题和资源不足问题提供了解决方案,因为线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控;多线程技术可以解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力;什么时候使用线程池需要大量的线程来完成任务,且完成任务的时间比较短,如WEB服

2017-06-20 17:18:23 2456 1

原创 【Java多线程】并发容器Collections

1.迭代器与ConcurrentModificationException使用Iterator迭代容器或使用使用for-each遍历容器,在迭代过程中修改容器会抛出ConcurrentModificationException异常。想要避免出现ConcurrentModificationException,就必须在迭代过程持有容器的锁。但是若容器较大,则迭代的时间也会较长。那么需要访问该容器的其他线

2017-06-20 10:04:47 620

原创 【Java多线程】ReentrantReadWriteLock详解

1.定义ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。只要没有writer,读取锁可以由多个reader 线程同时保持。写入锁是独占的。2.适用性ReadWriteLock 读取操作通常不会改变共享资源,但执行写入操作时,必须独占方式来获取锁。对于读取操作占多数的数据结构。ReadWriteLock 能提供比独占锁更高的并发性。而对于只读的数据结构,其中包含

2017-06-19 20:57:15 312

原创 【java多线程】CountDownLatch与CyclicBarrier

CountDownLatch 闭锁1.引入Java 5.0 在java.util.concurrent 包中提供了多种并发容器类来改进同步容器的性能。2.定义CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。3.闭锁可以延迟线程的进度直到其到达终止状态,闭锁可以用来确保某些活动直到其他活动都完成才继续执行:(1)确保某个计算在其需要的

2017-06-19 20:29:14 452

原创 【Java多线程】ReentrantLock与Condition详解

ReentrantLock 与synchronized异同1.引入经过之前的学习,你肯定知道锁就用synchronized,但今天我再介绍一种锁-Lock2.底层实现synchronized是基于JVM层面实现的,而Lock是基于JDK层面实现的3.使用lock不仅要上锁还要释放锁,如果忘记释放锁就会产生死锁的问题,所以,通常需要在finally中进行锁的释放。但是synchronized的使用十分

2017-06-19 19:56:38 444

原创 【Java多线程】原子类

1.定义java.util.concurrent.atomic这个包里面提供了一组原子类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM从等待队列中选择一个另一个线程进入,这只是一种逻辑上的理解。实际上是借助硬件的相关指令(CAS)来实现

2017-06-19 18:54:04 438

原创 【Java多线程】CAS算法

1.引入(1)在JDK1.5之前。Java主要靠synchronized这个关键字保证同步,已解决多线程下的线程不安全问题,但是这会导致锁的发生,会引发一些个性能问题。(2)锁主要存在一下问题在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。一个线程持有锁会导致其它所有需要此锁的线程挂起。如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风

2017-06-19 17:22:12 484

原创 【Java多线程】Volatile关键字详解

预备知识1..内存模型通过缓存一致性协议来保证一致性。最出名的就是Intel 的MESI协议,MESI协议保证了每个缓存中使用的共享变量的副本是一致的。它核心的思想是:当CPU写数据时,如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发出信号通知其他CPU将该变量的缓存行置为无效状态,因此当其他CPU需要读取这个变量时,发现自己缓存中缓存该变量的缓存行是无效的,那么它就会从内存重

2017-06-19 16:39:52 499

原创 【Java多线程】生产者消费者模式

定义生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。图解:实例public class ProductorAndConsumerTest { pub

2017-06-19 15:12:56 413

原创 【Java多线程】死锁范例及解决办法

1.定义两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行2.产生的原因系统资源的竞争系统资源的竞争导致系统资源不足,以及资源分配不当,导致死锁。进

2017-06-19 14:43:49 783

原创 【Java多线程】Synchronized详解

引入我们先来看一个小例子public class CreatRunnable { public static void main(String[] args) { //定义售票窗口 TicketWindow ticket = new TicketWindow(); Thread t1 = new Thread(tic

2017-06-19 12:50:06 914

《剑指Offer》题目及代码(修订版4).pdf

《剑指offer》的Java版代码实现(修订版4),有题目和解题思路,对部分代码重新排版,解决了部分代码消失的问题。

2019-06-16

《剑指Offer》题目及代码(修订版2).pdf

《剑指offer》的Java版代码实现(修订版2),有题目和解题思路,修改了部分题目的代码和解题思路。

2019-06-16

《剑指Offer》题目及Java版代码(带目录)

最全的《剑指offer》Java版代码实现,带目录高清完整版,保证正确性,全都在OJ上测试AC了。

2019-03-03

《剑指offer》Java版代码

最全的《剑指offer》Java版代码实现,保证正确性,全都在OJ上测试AC了。

2017-11-02

技术之瞳 阿里巴巴技术笔试心得.pdf

2017-04-11

高性能Linux服务器构建实战:运维监控、性能调优与集群应用.pdf

2017-04-11

GNULINUX初学之旅.pdf

2017-04-11

2017各大互联网公司校招要求.docx

2017-04-11

MySQL面试题.pdf

2017-04-11

progit2-中文版

2017-04-11

mysql 驱动 .jar

2017-04-11

netty jar包

netty jar包

2017-04-11

struts2.jar

2017-04-11

MySQL 5.1 参考手册

2017-04-11

linux 2 参考手册

2017-04-11

java 8 API 英文原版

2017-04-11

dom4j参考手册

2017-04-11

HTML参考手册-日常使用

HTML参考手册-日常使用

2017-04-11

java开发手册

介绍了Java的命名规约!

2017-04-11

空空如也

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

TA关注的人

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