- 博客(24)
- 收藏
- 关注
原创 项目实训(7) - 简易网关
文章目录前言FiltersLoadBalancerService前言简易网关实现。FiltersCorsFilter/** * 设置跨域 */@Order(0)@Component@WebFilter(filterName = "CorsFilter", urlPatterns = {"/*"})public class CorsFilter implements Filter { @Override public void doFilter(ServletRequ
2022-05-08 14:19:49 153
原创 项目实训(6) - 在线聊天2
文章目录前言WebSocketHandler.javahttp请求心跳前言springboot整合netty实现一对一聊天室。WebSocketHandler.java核心功能由WebSocketHandler实现,发来的消息反序列化为MessageVO对象,通过type判断不同的功能。package com.meeting.chatroom.handler;import com.alibaba.fastjson.JSON;import com.meeting.chatroom.entit
2022-05-02 20:48:06 324
原创 项目实训(5) - 在线聊天1
文章目录前言一、配置文件二、实体类三、NettyServer.class四前言使用springboot整合netty。一、配置文件<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId&
2022-04-24 14:32:41 376
原创 项目实训(4) - 用户头像
文章目录前言配置信息1、PictureUtil.java2、其它3、全局异常前言用户头像的上传与下载。配置信息file: # 文件保存地址 path: "/www/meeting"picture: # 文件格式,目前只允许jpg文件 pattern: .jpg1、PictureUtil.java@Componentpublic class PictureUtil { @Value("${file.path}") public String path;
2022-04-17 16:36:44 299
原创 项目实训(3)-邮件
文章目录前言邮箱配置servicecontroller前言经过商量,修改注册逻辑,用户首先填写用户名和邮箱字段,后端向用户邮箱发送验证码,用户再填写验证码和邮箱进行激活账号。邮箱配置在pom文件中,引入启动器。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId><
2022-04-13 11:15:30 253
原创 项目实训(2)- token等功能
文章目录前言一、JwtTokenUtil二、全局异常处理前言在之前的代码上,再加上token等其他功能。一、JwtTokenUtilimport com.meeting.entity.User;import io.jsonwebtoken.Claims;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import org.springframework.stereotype.Component;
2022-04-03 18:15:39 90
原创 项目实训(1)- 登录注册功能
文章目录前言一、UserController二、entity(实体)1. User2. Role(角色)2. UserRole三、mapper层1. UserMapper2. RoleMapper3. UserRoleMapper四、mapper层1. UserService前言项目实训,山大云会议。在本篇博客中,会展示登录注册功能的部分代码。yml文件和pom文件就不展示了一、UserControllerpackage com.meeting.login_register_simple.con
2022-03-27 14:38:14 210
原创 <2021SC@SDUSC>ByteToMessageDecoder
2021SC@SDUSC文章目录前言一、ByteToMessageDecoder二、callDecode三、channelRead四、总结前言在之前的几篇博客中,分析了几种netty内置的解码器,它们都继承了ByteToMessageDecoder类,也分析了它们对消息的解码过程,也就是decode方法。在本篇博客中,只会简单地介绍ByteToMessageDecoder类调用decode的过程。一、ByteToMessageDecoderByteToMessageDecoder类继承自Chann
2021-12-26 15:14:58 357
原创 <2021SC@SDUSC>netty常见编解码器(四)
2021SC@SDUSC文章目录前言一、LengthFieldBasedFrameDecoder类二、属性及构造函数三、例子四、decode方法五、总结前言在这一篇博客中,将会介绍netty的LengthFieldBasedFrameDecoder类,通过自定义长度解决TCP粘包拆包问题。一、LengthFieldBasedFrameDecoder类package io.netty.handler.codec;import static io.netty.util.internal.Objec
2021-12-19 14:44:13 181
原创 <2021SC@SDUSC>netty常见编解码器(三)
2021SC@SDUSC文章目录前言一、DelimiterBasedFrameDecoder.java二、属性三、decode四、总结前言在这一篇博客中,将会介绍netty的DelimiterBasedFrameDecoder类,以特殊字符作为结束消息的结束符,用以解决粘包拆包问题。一、DelimiterBasedFrameDecoder.javapackage io.netty.handler.codec;import static io.netty.util.internal.Object
2021-12-11 21:47:28 191
原创 <2021SC@SDUSC>netty常见编解码器(二)
2021SC@SDUSC文章目录前言一、FiexedLengthFrameDecoder二、分析三、使用四、总结前言在这一篇博客中,将会介绍netty的FixedLengthFrameDecoder类,实现了固定长度的解码,是解码器中最简单的一个,但是实用性不高,所以不常使用。一、FiexedLengthFrameDecoderpackage io.netty.handler.codec;import static io.netty.util.internal.ObjectUtil.check
2021-12-04 09:22:45 137
原创 <2021SC@SDUSC>netty常见编解码器(一)
2021SC@SDUSC文章目录前言一、LineBasedFrameDecoder二、分析三、总结前言从本篇博客开始,会介绍netty中已经实现的几种编码器和解码器。在本篇博客中,将会介绍netty的LineBasedFrameDecoder类,它是基于换行符\r\n将消息分割成不同的部分。一、LineBasedFrameDecoderpackage io.netty.handler.codec;import io.netty.buffer.ByteBuf;import io.netty.c
2021-11-27 14:50:54 122
原创 <2021SC@SDUSC>netty@Sharable
2021SC@SDUSC文章目录前言一、代码二、常见问题三、@Sharable的检查四、编解码器相关五、总结前言在继续阅读netty的编解码器相关的源码之前,先补充一下netty框架的@Sharable注解,通过该注解,可以在多个ChannelPipeline中共享同一个ChannelHandler。一、代码首先,修改部分之前写的示例代码,来体验Sharable注解的使用。新建TestSharableHandler类,采用单例模式。package com.homework.server_cli
2021-11-20 16:51:30 502
原创 <2021SC@SDUSC>netty编解码器
2021SC@SDUSC文章目录前言一、Encoder二、Decoder三、问题四、总结前言在之后的几篇博客中,将会主要介绍netty的编解码器,并且会介绍几种常见的编码器、解码器,以及它们的使用场合。编解码器的作用就是将原始的数据与目标数据的格式进行互相转换。在网络中,数据以bit流的形式来传输,encoder编码器负责将数据转换成适合传输的格式,而decoder解码器负责将传输的数据还原成原先的数据,在本篇博客中,将会看到,实际上,encoder、decoder都是ChannelHandler。
2021-11-13 11:16:47 266
原创 <2021SC@SDUSC>netty使用——简易聊天室实现
2021SC@SDUSC文章目录前言一、服务端1、Server2、ServerInitializer3、ServerHandler二、客户端1、Client2、ClientInitializer3、ClientHandler总结前言在之前的博客netty初步使用中,简单地编写了客户端与服务端的代码,实现了双向通信,这次,在上次的代码的基础上做了些改进,初步实现了聊天室的功能。一、服务端1、ServerServer类本身没有太多的变化,只是关于ServerInitializer的添加方式,由原本的
2021-11-06 11:07:01 120
原创 <2021SC@SDUSC>ServerBootstrap绑定端口(二)
2021SC@SDUSC文章目录一、前言二、initAndRegister三、doBind0四、pipeline的addLast方法五、总结一、前言在本篇博客中,会承接上一篇博客中对服务器端的端口绑定方法的分析,继续学习剩余的内容,包括initAndRegister和dobind0等方法。二、initAndRegister final ChannelFuture initAndRegister() { Channel channel = null; try {
2021-10-28 20:25:20 198
原创 <2021SC@SDUSC>ServerBootstrap绑定端口
2021SC@SDUSC文章目录一、前言二、ServerBootstrap类三、bind四、doBind五、总结一、前言在之前的博客中,大致分析了netty的NioEventLoopGroup的创建过程,在这篇博客中,将会分析ServerBootstrap的绑定方法,这是服务器端的方法。二、ServerBootstrap类ServerBootstrap是netty的服务器启动的引导类。public class ServerBootstrap extends AbstractBootstrap&l
2021-10-24 16:14:41 1021
原创 <2021SC@SDUSC>NioEventLoopGroup创建过程(二)
2021SC@SDUSC文章目录一、前言二、newChild(Executor executor, Object... args)三、失败后关闭线程四、其它五、总结一、前言在上一篇博客中,主要分析了NioEventLoopGroup创建过程中的大体过程。在本篇博客中,将会分析一些创建过程中的细节,包括NioEventLoopGroup类中的newChild()方法,创建失败后的关闭过程,以及一些其它的工作。二、newChild(Executor executor, Object… args)在上一
2021-10-17 19:06:38 120
原创 <2021SC@SDUSC>NioEventLoopGroup创建过程(一)
2021SC@SDUSC文章目录一、前言二、NioEventLoopGroup三、NioEventLoopGroup构造方法四、MultithreadEventLoopGroup构造方法五、MultithreadEventExecutorGroup构造方法六、总结一、前言本篇博客将会基于上一篇博客中服务端的代码,分析bossGroup和workerGroup在创建过程中,具体进行了什么操作。注意到,bossGroup和workerGroup其实都是NioEventLoopGroup类的实例。二、Ni
2021-10-09 20:09:41 127
原创 <2021SC@SDUSC>netty初步使用
<2021SC@SDUSC>文章目录一、前言二、服务端代码三、客户端代码四、总结一、前言在学习的第一个礼拜,先完成第二个目标,即使用netty编写服务端和客户端的程序,实现服务端和客户端的双向通信。当然,会在之后的学习过程中逐步完善。二、服务端代码import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;import io
2021-10-03 18:52:08 137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人