自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lengyue309的博客

java 项目实战经验分享

  • 博客(24)
  • 资源 (15)
  • 收藏
  • 关注

转载 TCP滑动窗口控制流量的原理

TCP的滑动窗口机制       TCP这个协议是网络中使用的比较广泛,他是一个面向连接的可靠的传输协议。既然是一个可靠的传输协议就需要对数据进行确认。TCP协议里窗口机制有2种:一种是固定的窗口大小;一种是滑动的窗口。这个窗口大小就是我们一次传输几个数据。对所有数据帧按顺序赋予编号,发送方在发送过程中始终保持着一个发送窗口,只有落在发送窗口内的帧才允许被发送;同时接收方也维持着一个接收窗口,只有...

2018-04-28 14:27:30 390

转载 不惑JAVA之JAVA基础 - 锁 -synchronized、Lock解析

锁主要解决线程安全问题。而线程安全问题,即多个线程同时访问一个资源时,会导致程序运行结果并不是想看到的结果。synchronized先来了解一下互斥锁,顾名思义:能到达到互斥访问目的的锁。如果对临界资源加上互斥锁,当一个线程在访问该临界资源时,其他线程便只能等待。  在Java中,每一个对象都拥有一个锁标记(monitor),也称为监视器,多线程同时访问某个对象时,线程只有获取了该对象的锁才能访问...

2018-04-25 20:16:48 145

转载 Netty原理剖析

1. Netty简介Netty是一个高性能、异步事件驱动的NIO框架,基于JAVA NIO提供的API实现。它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通...

2018-04-24 10:07:16 138

转载 Netty4.0学习笔记系列之六:多种通讯协议支持

上文介绍了如何应用Netty开发自定义通讯协议,本文在此基础上进一步深化,研究如何同时支持不同的通讯协议。此处所谓的通讯协议,指的是把Netty通讯管道中的二进制流转换为对象、把对象转换成二进制流的过程。转换过程追根究底还是ChannelInboundHandler、ChannelOutboundHandler的实现类在进行处理。ChannelInboundHandler负责把二进制流转换为对象,...

2018-04-19 15:16:46 2158

转载 Netty4.0学习笔记系列之五:自定义通讯协议

Netty中,通讯的双方建立连接后,会把数据按照ByteBuf的方式进行传输,例如http协议中,就是通过HttpRequestDecoder对ByteBuf数据流进行处理,转换成http的对象。基于这个思路,我自定义一种通讯协议:Server和客户端直接传输java对象。实现的原理是通过Encoder把java对象转换成ByteBuf流进行传输,通过Decoder把ByteBuf转换成java对...

2018-04-19 15:11:44 268

转载 Netty4.0学习笔记系列之四:混合使用coder和handler

Handler如何使用在前面的例子中已经有了示范,那么同样是扩展自ChannelHandler的Encoder和Decoder,与Handler混合后又是如何使用的?本文将通过一个实际的小例子来展示它们的用法。该例子模拟一个Server和Client,两者之间通过http协议进行通讯,在Server内部通过一个自定义的StringDecoder把httprequest转换成String。Serve...

2018-04-19 14:32:46 133

转载 Netty4.0学习笔记系列之三:构建简单的http服务

本文主要介绍如何通过Netty构建一个简单的http服务。想要实现的目的是:1、Client向Server发送http请求。2、Server端对http请求进行解析。3、Server端向client发送http响应。4、Client对http响应进行解析。在该实例中,会涉及到http请求的编码、解码,http响应的编码、解码,幸运的是,Netty已经为我们提供了这些工具,整个实例的逻辑图如下所示:...

2018-04-19 14:24:32 159

转载 Netty4.0学习笔记系列之二:Handler的执行顺序

Handler在netty中,无疑占据着非常重要的地位。Handler与Servlet中的filter很像,通过Handler可以完成通讯报文的解码编码、拦截指定的报文、统一对日志错误进行处理、统一对请求进行计数、控制Handler执行与否。一句话,没有它做不到的只有你想不到的。Netty中的所有handler都实现自ChannelHandler接口。按照输出输出来分,分为ChannelInbou...

2018-04-19 14:19:22 338

转载 Netty4.0学习笔记系列之一:Server与Client的通讯

本文是学习Netty的第一篇文章,主要对Netty的Server和Client间的通讯机制进行验证。Server与Client建立连接后,会执行以下的步骤:1、Client向Server发送消息:Are you ok?2、Server接收客户端发送的消息,并打印出来。3、Server端向客户端发送消息:I am ok!4、Client接收Server端发送的消息,并打印出来,通讯结束。涉及到的类有...

2018-04-19 14:03:55 197

转载 通俗易懂地讲解TCP建立连接的三次握手和释放连接的四次挥手

TCP建立连接时,为什么要进行三次挥手?  每一次TCP连接都需要三个阶段:连接建立、数据传送和连接释放。三次握手就发生在连接建立阶段。 在谢希仁著《计算机网络》第四版中讲三次握手的目的是为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。在另一部经典的《计算机网络》一书中讲三次握手的目的是为了解决网络中存在延迟的重复分组的问题。   这两种不用的表述其实阐明的是同一个问题。  谢希...

2018-04-19 13:51:54 184

转载 Java并发编程:阻塞队列

在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。  使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了,它会对当前线程产生阻塞,比如一个线程从一个空...

2018-04-19 10:03:04 100

转载 UML系列——时序图(顺序图)

引言用例图、类图、活动图、时序图之间是什么关系?时序图有什么作用?      先来模拟一下三国演义的赤壁之战的时序图,先知道它到底长什么样子,再深入介绍: 小伙伴惊呆了,这样画战略图,一目了然,原来著名的战役是这么回事。这样看三国演义再也不会睡着了......再看看各个大人物的主要操作:代码模拟各任务操作: 1 public class 关羽 2 { 3 Public void 防守荊州...

2018-04-18 15:06:52 5466

转载 那些提升开发人员工作效率的在线工具

作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中要经常使用到的。Hollis偏爱使用在线工具,因为个人觉得这样比较方便。本文就总结了一下我常用的在线工具。欢迎纠正及补充。Java源代码搜索http://grepcode.com/Grepcode是一个面向于Java开发人员的网站,在这里你可以通过Java的projec...

2018-04-18 11:23:26 226

转载 Java之——使用JMX监控Tomcat

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/515474082016年5月的最后一天,今天我将和大家分享Java中如何使用JMX来监控Tomcat的各种状态。好了,不多说了,我们直接进入主题一、激活Tomcat的JMX远程配置要通过JMX远程监控Tomcat,首先需要激活Tomcat的JMX远程配置。① 修改脚本先修改Tomca...

2018-04-17 17:25:17 173

转载 Netty 线程模型

1 Proactor和ReactorProactor和Reactor是两种经典的多路复用I/O模型,主要用于在高并发、高吞吐量的环境中进行I/O处理。I/O多路复用机制都依赖于一个事件分发器,事件分离器把接收到的客户事件分发到不同的事件处理器中,如下图:1.1 select,poll,epoll在操作系统级别select,poll,epoll是3个常用的I/O多路复用机制,简单了解一下将有助于我们...

2018-04-14 18:31:44 192

转载 使用spring-boot-admin对spring-boot服务进行监控

spring-boot-admin,简称SBA,是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。他可以:在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。官网:https://github.com/codec...

2018-04-12 11:17:33 1910

转载 Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失(二)

前言上篇文章《Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失》我们对ThreadLocal数据丢失进行了详细的分析,并通过代码的方式复现了这个问题。在上篇文章的末尾我也说了思路给大家提供了,如果需要能够在Hystrix 为线程隔离模式也能正确传递数据的话,需要我们自己去修改。我这边以Zuul中自定义负载均衡策略来进行讲解,在Zuul中需要实现灰度发布的功能,需...

2018-04-08 18:14:59 608

转载 Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失(一)

在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离。在使用线程隔离的时候,有个问题是必须要解决的,那就是在某些业务场景下通过ThreadLocal来在线程里传递数据,用信号量是没问题的,从请求进来,但后续的流程都是通一个线程。当隔离模式为线程时,Hystrix会将请求放入Hystrix的线...

2018-04-08 18:13:52 983

转载 Java子线程中的异常处理

在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了。那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相应的处理呢?也许有人会觉得,很简单嘛,直接在父线程启动子线程的地方try ... catch一把就可以了,其实这是不对的。让我们回忆一下Runnable接口的run方法的完整签名,因为没有标识thro...

2018-04-08 17:02:17 302

转载 JVM内存结构

所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问题,以便于快速的解决生产故障。先看一张图,这张图能很清晰的说明JVM内存结构布局。JVM内存结构主要...

2018-04-03 11:25:00 124

转载 java 内存模型的理解

之前一直在实习,博客停写了一段时间,现在秋招开始了,所以辞职回来专心看书,同时将每天的收获以博客的形式记录下来。最近在看jvm相关的书籍,下面对面试中问得最多的部分--java 内存模型进行简单总结。本篇博客大概由一下几个部分组成:1、程序在真实物理世界的内存模型2、java的内存模型3、java中的volatile与线程安全4、happen-before原则与加锁。 一、程序在物理世界中是怎样运...

2018-04-03 10:35:30 146

转载 关于Jvm知识看这一篇就够了

2016年左右的时候读了周志明《深入理解Java虚拟机:JVM高级特性与最佳实践》,读完之后受益匪浅,让我对Java虚拟机有了一个完整的认识,这是Jvm书籍中最好的读物之一。后来结合实际工作中遇到的问题,写了一系列关于Jvm的文章,其中开篇的几篇内容大部分参考于此书,后期加入自己一些实战的理解,转载了几篇高质量的文章,就形成了此系列读物。在金三银四的跳槽季中,很多小伙伴们都已经蠢蠢欲动,将此系列文...

2018-04-03 10:34:26 7279 3

转载 Java中的锁原理、锁优化、CAS、AQS

一、为什么要用锁?锁-是为了解决并发操作引起的脏读、数据不一致的问题。二、锁实现的基本原理2.1、volatileJava编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。volatile在多处理器开发中保证了共享变量的“ 可见性”。可见性的意思是当一个线程修改一个共享变量时...

2018-04-03 10:33:45 152

转载 深入理解 Java 多线程核心知识:跳槽面试必备

多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲。在平时工作中如若使用不当会出现数据错乱、执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关重要。本文从基础概念开始到最后的并发模型由浅入深,讲解下线程方面的知识。概念梳理本节我将带大家了解多线程中几大基础概念。并发与并行并行,表示两个线程同时做事情。并发,表示一会做这个事情,一会做另一个事...

2018-04-03 10:32:16 119

精通 EJB3.0

精通 EJB3.0精通 EJB3.0

2007-09-07

EJB3.0第五版

EJB3.0第五版EJB3.0第五版EJB3.0第五版

2007-09-07

企业级EJB3.0

企业级EJB3.0企业级EJB3.0

2007-09-07

实战EJB

实战EJB实战EJB实战EJB实战EJB

2007-09-06

DOM文档对象中文手册

DOM文档对象中文手册 CHM格式

2007-09-04

CSS中文手册

CSS中文手册- CHM格式

2007-09-04

JavaScript语言参考手册

JavaScript语言参考手册 CHM格式

2007-09-04

Hibernate参考文档

Hibernate参考文档 CHM格式

2007-09-04

Hibernate_api

Hibernate_api CHM格式,想学习Hibernate必须要有的参考资料.

2007-09-04

HTML中文帮助指南

HTML中文帮助指南 CHM格式

2007-09-04

JAVA设计模式

JAVA设计模式 CHM格式 好电子书,不要错过哦

2007-09-04

EJB基础

EJB基础 CHM格式 好书啊

2007-09-04

在线投票系统详细设计(JSP)

在线投票系统详细设计(JSP)

2007-06-16

struts+hibernate+spring网上书店1

struts+hibernate+spring网上书店1

2007-06-16

PDG好软件

PDG软件.软件超级好,大小只有几K是我见到的最好的软件

2007-06-15

空空如也

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

TA关注的人

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