Netty 技术学习(一)

序言:

如果天空是黑暗的

那么我么就摸黑生存

 

如果发出声音是危险的

那我们就选择沉默

 

如果自觉无力发光

那我们就蜷伏于墙角

 

但不要习惯了黑暗

就为黑暗辩护

 

我们可以卑微如尘土

但不可扭曲如蛆虫

 

走下去

继续发着光

 

那些杀不死你的

都会使你变得更强大

 

 

Cast a cold eye, on life, on death

 

 

正文:

我认为学好一个技术十分重要,有利于自信的培养

不光可以开发服务端的,也可以开发客户端的,这一点十分重要。

Netty优越性很大,我们都认为快速,轻松与可维护性、性能并不矛盾,netty就很好的诠释了这个道理~

 

首先:客户端如何书写

package com.blackking.netty.firsttest;

/*只要我们书写代码,就会自动导入需要的包,但前提条件是要配置好~,开发人员懂得*/
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoop;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;

public class TestServer {
    public static void main(String[] args) throws Exception{
        /*下面我们定义两个事件循环组,铭记这个概念,是比较重要的~*/
     /*   NioEventLoopGroup其实就是一个死循环,这一点可以联系到tomcat
     * 所以我们要知道,对于服务器的编程,一定会存在一个死循环,这是不可避免的~~
     * 帅气,当然我们可以采用一些优雅退出的方式,使得循环可以终止
     * 有的人会问,为什么下面是用两个线程组,一个不行么,但是netty推荐使用两个,这就很尴尬~~*/
        EventLoopGroup bossGroup = new NioEventLoopGroup();
        EventLoopGroup workerGroup = new NioEventLoopGroup();
        try{  /* 下面这个是服务启动的语法,已经进行了封装,使得我们可以较为轻松的启动服务器端的代码~~*/
            ServerBootstrap serverBootstrap = new ServerBootstrap();
            /*  下面这种方法就是接受两个参数的,要学会~*/
//        用到一个管道~NioServerSocketChannel,这个也要认真学习一下
//        NioServerSocketChannel.class(这个有点意思)其实这个实类的创建是通过反射来创建的
            serverBootstrap.group(bossGroup,workerGroup).channel(NioServerSocketChannel.class).
                    childHandler(new TestServerinitializer());
//        子处理器childHandler,嘿嘿,我们先定义为一个null值~
// childHandler(new TestServerinitializer()) 原本里面是null,后来我们因为需求换了一下~~

            //最后我们开发人员需要绑定到某一个端口,这一点十分重要~~
            ChannelFuture  channelFuture =  serverBootstrap.bind(8899).sync();
            // 之后我们书写一个代码,进行关闭
            channelFuture.channel().closeFuture().sync();
     }finally {
               bossGroup.shutdownGracefully();
               workerGroup.shutdownGracefully();
        }
    }
}

Netty关注一个端口号,并且底层基于tcp的带链接的协议

 

 

 

精华部分:我的学习认识

  1. netty可以作为一个http的服务器,处理我们的请求和响应~
  2. 和我们用web框架编写一个web程序有点像
  3. 但是我们要记住netty并没有实现servelt标准~因为servelt是一种规范
  4. 我们可以获取请求当中所获取的参数~
  5. Springmvc也是对servelt的一种封装,比如说参数绑定之类的~,绑定请求响应的参数即可,但是netty完全不是这样的~
  6. 使用netty进行开发的时候,我们要忘掉springmvc,忘掉之前的所有东东,重新开始~

Netty是提供的自己的一种方式,而这种方式比起servelt更为底层~

因为他的高并发,所以对于量大的请求,处理起来更加游刃有余。

 

  1. Springmvc,tomcat这种开发效率很高的,因为底层的东东都已经写好了,我们只要写一类,然后”填坑就行了”,就像做选择题,把一些东西填进去~
  2. 可以说,netty对于请求路由都没有一个较为清楚的方式

猜你喜欢

转载自blog.csdn.net/weixin_41987706/article/details/84472716
今日推荐