2024年Netty入门官方例子(1),java校招面试项目准备

最后

经过日积月累, 以下是小编归纳整理的深入了解Java虚拟机文档,希望可以帮助大家过关斩将顺利通过面试。
由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。







由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

@Override

public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)

throws Exception {

cause.printStackTrace();

ctx.close();

}

}

第二步编写DiscardServer:

package io.netty.example.discard;

import io.netty.bootstrap.ServerBootstrap;

import io.netty.channel.ChannelFuture;

import io.netty.channel.ChannelInitializer;

import io.netty.channel.ChannelOption;

import io.netty.channel.EventLoopGroup;

import io.netty.channel.nio.NioEventLoopGroup;

import io.netty.channel.socket.SocketChannel;

import io.netty.channel.socket.nio.NioServerSocketChannel;

public class DiscardServer {

private int port;

public DiscardServer(int port){

this.port = port;

}

public void run() throws Exception{

//Group:群组,Loop:循环,Event:事件,这几个东西联在一起,相比大家也大概明白它的用途了。

//Netty内部都是通过线程在处理各种数据,EventLoopGroup就是用来管理调度他们的,注册Channel,管理他们的生命周期。

//NioEventLoopGroup是一个处理I/O操作的多线程事件循环

//bossGroup作为boss,接收传入连接

//因为bossGroup仅接收客户端连接,不做复杂的逻辑处理,为了尽可能减少资源的占用,取值越小越好

EventLoopGroup bossGroup=new NioEventLoopGroup(1);

//workerGroup作为worker,处理boss接收的连接的流量和将接收的连接注册进入这个worker

EventLoopGroup workerGroup=new NioEventLoopGroup();

try {

//ServerBootstrap负责建立服务端

//你可以直接使用Channel去建立服务端,但是大多数情况下你无需做这种乏味的事情

ServerBootstrap b=new ServerBootstrap();

b.group(bossGroup, workerGroup)

//指定使用NioServerSocketChannel产生一个Channel用来接收连接

.channel(NioServerSocketChannel.class)

//ChannelInitializer用于配置一个新的Channel

//用于向你的Channel当中添加ChannelInboundHandler的实现

.childHandler(new ChannelInitializer() {

public void initChannel(SocketChannel ch) throws Exception {

//ChannelPipeline用于存放管理ChannelHandel

//ChannelHandler用于处理请求响应的业务逻辑相关代码

ch.pipeline().addLast(new DiscardServerHandler());

};

})

//对Channel进行一些配置

//注意以下是socket的标准参数

//BACKLOG用于构造服务端套接字ServerSocket对象,标识当服务器请求处理线程全满时,用于临时存放已完成三次握手的请求的队列的最大长度。如果未设置或所设置的值小于1,Java将使用默认值50。

//Option是为了NioServerSocketChannel设置的,用来接收传入连接的

.option(ChannelOption.SO_BACKLOG, 128)

//是否启用心跳保活机制。在双方TCP套接字建立连接后(即都进入ESTABLISHED状态)并且在两个小时左右上层没有任何数据传输的情况下,这套机制才会被激活。

//childOption是用来给父级ServerChannel之下的Channels设置参数的

.childOption(ChannelOption.SO_KEEPALIVE, true);

// Bind and start to accept incoming connections.

ChannelFuture f=b.bind(port).sync();

// Wait until the server socket is closed.

// In this example, this does not happen, but you can do that to gracefully

// shut down your server.

//sync()会同步等待连接操作结果,用户线程将在此wait(),直到连接操作完成之后,线程被notify(),用户代码继续执行

//closeFuture()当Channel关闭时返回一个ChannelFuture,用于链路检测

f.channel().closeFuture().sync();

}finally{

//资源优雅释放

bossGroup.shutdownGracefully();

workerGroup.shutdownGracefully();

}

}

public static void main(String[] args) {

int port=8088;

try {

new DiscardServer(port).run();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

三.测试


打开Window的命令行,输入telnet命令:telnet localhost 8088,如果能够正确连接就代表成功,在新打开的命令窗口随意输入字符,如果在myeclipse当中能够正确输出在console当中,就代表程序正常。

进入编辑状态

最后,附一张自己面试前准备的脑图:

image

面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典

  • Java核心知识整理

image

  • Spring全家桶(实战系列)

image.png

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

image

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

最后祝愿各位身体健康,顺利拿到心仪的offer!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

最后祝愿各位身体健康,顺利拿到心仪的offer!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值