排序:
默认
按更新时间
按访问量

Java高级工程师常见面试题(七)-网络通信

1. http是无状态通信,http的请求方式有哪些,可以自己定义新的请求方式么。 HTTP是无状态的,它的底层协议是由状态的TCP,但是HTTP的一次完整协议动作,里面是使用有状态的TCP协议来完成的。而每次协议动作之间没有任何关系。例如:第7次请求HTTP协议包,并不知道,这个包是为了什么?...

2018-08-20 15:28:28

阅读数:74

评论数:0

分布式服务架构学习(十一):实现自己的序列化工具引擎(十)-序列化JBoss Marshalling实现

JBoss Marshalling是一个Java对象序列化包,兼容Java原生的序列化机制,对Java原生序列化机制做了优化,使其在性能上有很大提升。在保持跟java.io.Serializable接口兼容的同时增加了一些可调的参数和附加特性,这些参数和附加特性,可通过工厂类进行配置,对原生Jav...

2018-08-08 11:29:17

阅读数:29

评论数:0

分布式服务架构学习(十):实现自己的序列化工具引擎(九)-序列化Avro实现

Avro是一个数据序列化的项目,最开始是Hadoop的子项目之一,最后加入Apache成为独立的开元项目。Avro提供的功能类似于其他的编组系统,如Thrift、protobuf等。 Aro的主要不同之处在于:动态类型、无标记数据、不用手动分配字段ID。 另外,Avro支持两种序列化编码方式:...

2018-08-08 11:21:06

阅读数:21

评论数:0

分布式服务架构学习(九):实现自己的序列化工具引擎(八)-序列化Thrift实现

与protobuf类似,适用Thrift之前,需要编写以.thrift结尾的IDL文件,再适用Thrift提供的编译器生成对应的代码。对java而言,所生成的java bean都集成了类org.apache.thrift.TBase。 代码如下: package ares.remoting....

2018-08-08 11:11:00

阅读数:16

评论数:0

分布式服务架构学习(八):实现自己的序列化工具引擎(七)-序列化protostuff实现

protostuff基于Google protobuf,其中,protostuff-runtime实现了无需预编译的Java Bean进行protobuf序列化/反序列化的能力。 对于仅适用Java语言,且无需跨语言的适用场景,protostuff继承了Google protobuf的高性能的同...

2018-08-08 10:58:33

阅读数:28

评论数:0

分布式服务架构学习(七):实现自己的序列化工具引擎(六)-序列化protobuf实现

protobuf是Google的一种数据交换格式,它独立于语言,独立于平台。它是一个纯粹的展示层协议,可以和各种传输层协议一起使用,它的文档也非常完善。 protobuf具有广泛的用户基础,空间开销小及高解析性能是其亮点,非常适合于公司内部对性能要求高的RPC调用。由于其解析性能高,序列化后数据...

2018-08-07 19:56:10

阅读数:19

评论数:0

分布式服务架构学习(六):实现自己的序列化工具引擎(五)-序列化Hessian实现

Hession是一个支持跨语言传输的二进制序列化协议,相对于Java默认的序列化机制,Hessian具有更好的性能与易用性,而且支持多种不同的语言。其中,AbstractSerializerFactory、AbstractHessianOutput、AbstractSerializer、Abstr...

2018-08-07 19:34:33

阅读数:14

评论数:0

分布式服务架构学习(五):实现自己的序列化工具引擎(四)-序列化JSON实现

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。相比XML,JSON码流更小,而且保留了XML可读性好的优势。 JSON序列化常用的开元工具有如下几个: Jackson 阿里开源的fastjson Google开发的GSON 相比较而言,Jack...

2018-07-31 15:52:17

阅读数:43

评论数:0

分布式服务架构学习(四):实现自己的序列化工具引擎(三)-序列化XML实现

XML序列化反序列化我们使用XStream开源工具包,引入maven,代码如下: <!-- xml --> <dependency> <grou...

2018-07-27 11:09:51

阅读数:20

评论数:0

分布式服务架构学习(三):实现自己的序列化工具引擎(二)-序列化java实现

首先,为抽象出一个序列化/反序列化通用服务,定义接口ISerializer.java,代码如下: package ares.remoting.framework.serialization.serializer; /** * @author fuss created on 18/7/23....

2018-07-24 10:19:37

阅读数:27

评论数:0

Java高级工程师常见面试题-总结

《Java高级工程师常见面试题(一)-Java基础 》 《Java高级工程师常见面试题(二)-Java IO》 《Java高级工程师常见面试题(三)-Java Web》 《Java高级工程师常见面试题(四)-JVM》 《Java高级工程师常见面试题(五)-开源框架》 《Java高级工程师...

2018-07-23 10:03:43

阅读数:348

评论数:0

分布式服务架构学习(二):实现自己的序列化工具引擎(一)-引擎实现

分布式项目中,也许会用到不同的序列化方式,自己整理了常见的序列化方式,手写了一个序列化引擎。 引擎SerializerEngine.java代码如下: package ares.remoting.framework.serialization.engine; import ares.re...

2018-07-23 09:54:45

阅读数:75

评论数:0

分布式服务架构学习(一):实现自己的RPC框架(采用Java Socket)

RPC实现原理图: 1、Service API对应服务接口。 HelloService.java代码如下: package com.shan.rpc.service; public interface HelloService { public String sayHello(St...

2018-07-13 15:20:31

阅读数:63

评论数:0

详细介绍http

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。点击这里了解 http 1.0 vs 2.0 区别。 特点 简单快速:客户向服务器请求服务时,只需...

2018-09-29 11:05:04

阅读数:12

评论数:0

四次挥手

客户端先发送FIN,进入FIN_WAIT1状态 服务端收到FIN,发送ACK,进入CLOSE_WAIT状态,客户端收到这个ACK,进入FIN_WAIT2状态 服务端发送FIN,进入LAST_ACK状态 客户端收到FIN,发送ACK,进入TIME_WAIT状态,服务...

2018-09-27 17:09:22

阅读数:14

评论数:0

TCP粘包和拆包

产生的原因 应用程序写入数据的字节大小大于套接字发送缓冲区的大小 进行MSS大小的TCP分段。MSS是最大报文段长度的缩写。MSS是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。所以MSS并不是TCP报文段的最大长度,而是:MSS=TCP报文段长...

2018-09-26 14:14:31

阅读数:8

评论数:0

三次握手

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手...

2018-09-03 14:35:05

阅读数:8

评论数:0

dns使用的协议

既使用TCP又使用UDP 首先了解一下TCP与UDP传送字节的长度限制: UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。 区域传送时使用TCP...

2018-08-30 14:41:05

阅读数:26

评论数:0

solr学习-总结

《solr学习(一)-solr 7.2.1搭建(windows系统)》 《solr学习(二)-java调用solr 7.2.1》 《solr学习(三)-用jetty启动调用solr 7.2.1》 《solr学习(四)-solr 7.2.1 导入Mysql数据库,表数据》 项目要集成solr...

2018-07-23 10:10:33

阅读数:31

评论数:0

Spring Boot特性——改变Spring开发方式

Spring Boot提供了四个主要特性,能够改变开发Spring应用程序的的方式:Spring Boot Starter:它将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或者Gradle中;自动配置:Spring Boot的自动配置特性利用了Spring...

2018-07-07 12:08:06

阅读数:95

评论数:0

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