commonUtils

netty server解决

半腔热情 提交于 2021-01-12 01:04:04
1、什么是粘包/拆包 ​ 一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据。TCP通讯为何存在粘包呢?主要原因是TCP是以流的方式来处理数据,再加上网络上MTU的往往小于在应用处理的消息数据,所以就会引发一次接收的数据无法满足消息的需要,导致粘包的存在。处理粘包的唯一方法就是制定应用层的数据通讯协议,通过协议来规范现有接收的数据是否满足消息数据的需要。 2、解决办法 2.1、 消息定长 ,报文大小固定长度,不够空格补全,发送和接收方遵循相同的约定,这样即使粘包了通过接收方编程实现获取定长报文也能区分。 2.2、 包尾添加特殊分隔符 ,例如每条报文结束都添加回车换行符(例如FTP协议)或者指定特殊字符作为报文分隔符,接收方通过特殊分隔符切分报文区分。 2.3、 将消息分为消息头和消息体 ,消息头中包含表示信息的总长度(或者消息体长度)的字段 3、netty server端设置特殊分隔符 注意:分隔符一定要在数据处理的handler之前指定 @Component public class NettyServer { @Value("${netty.server.port}") private int port; /** * 启动 netty server * @throws InterruptedException */ public void start() {

Java写的第一个小游戏(一)

戏子无情 提交于 2020-11-19 11:52:44
实现思路 1.如何分析? 第一步:发现类(对象) 人物-小丑(敌方-友方) 子弹-帽子 墙体 爆炸物 第二步:发现属性 小丑: 宽高 , 位置(x y), 移动速度 帽子: 宽高 , 位置(x y), 移动速度 墙体: 宽高 , 位置(x y) 爆炸物:宽高 , 位置(x y) 第三步:发现方法 小丑: 移动 , 攻击 , 人物撞边界 , 子弹: 移动 , 子弹撞墙 , 子弹撞边界 , 墙体: 静止不动 爆炸物: 爆炸物消失 2.难点在哪里? 1 如何将图片加载到窗体里 背景图片加载 人物-小丑加载 发射物-帽子加载 Missile 墙体-加载 Wall 爆炸物-加载 Explode 2 如何创建窗体 3 如何发射子弹(如何使用键盘触发事件) 3.二期版本 接入网络,多人作战 第一天的实现 1.创建一个项目(ylm) 2.导入需要使用到的图片文件到Java 3.在项目的src(源代码)中创建游戏包(com.ytzl.ylm) 4.在游戏包(com.ytzl.ylm)下创建客户端类GameClient并继承Farme类 public class GameClient extends Frame { } 关于Farme类: 1.Farme类是Java自带的一个系统类 2.Farme类的作用是可以制作出带有标题和边框的顶层窗口 5.实现游戏窗口的显示 public void start

使用IDEA制作Java面向对象小游戏《原谅帽大作战》

蓝咒 提交于 2020-11-14 11:14:20
成果展示 制作思路 第1步:发现类(对象) 人物-小丑: Buffoon 子弹-帽子:Missile 墙体:Wall 爆炸物:Explode 第2步:发现属性 小丑:宽和高,位置(x,y),移动速度 帽子:宽和高,位置(x,y),移动速度 墙体:宽和高,位置(x,y) 爆炸物:宽和高,位置(x,y) 第3步:发现方法 小丑:移动、攻击、人物撞边界 子弹:移动、子弹撞墙、子弹撞边界 爆炸物:消失 重难点分析 窗体如何创建 public class GameClient extends Frame 通过继承Frame类实现Java窗体 public class Frame extends Window implements MenuContainer Frame类继承了Window类和MenuContainer接口 如何将图片加载到窗体里 步骤1:创建常用工具类CommonUtils,新建getImage方法实现将图片资源转换为Java对象 public class CommonUtils { /** * 读取图片资源, 转变为Java对象 Image * @param imgPath 图片路径 * @return Image对象 */ public static Image getImage ( String imgPath ) { ImageIcon imageIcon = new

cas客户端流程详解(源码解析)--单点登录

久未见 提交于 2020-10-09 18:52:28
博主之前一直使用了cas客户端进行用户的单点登录操作,决定进行源码分析来看cas的整个流程,以便以后出现了问题还不知道是什么原因导致的 cas主要的形式就是通过过滤器的形式来实现的,来,贴上示例配置: 1 < listener > 2 < listener-class > org.jasig.cas.client.session.SingleSignOutHttpSessionListener </ listener-class > 3 </ listener > 4 5 < filter > 6 < filter-name > SSO Logout Filter </ filter-name > 7 < filter-class > org.jasig.cas.client.session.SingleSignOutFilter </ filter-class > 8 </ filter > 9 10 < filter-mapping > 11 < filter-name > SSO Logout Filter </ filter-name > 12 < url-pattern > /* </ url-pattern > 13 </ filter-mapping > 14 15 <!-- SSO单点登录认证filter --> 16 < filter > 17 < filter

cas客户端流程详解(源码解析)--单点登录

天大地大妈咪最大 提交于 2020-08-13 11:51:21
博主之前一直使用了cas客户端进行用户的单点登录操作,决定进行源码分析来看cas的整个流程,以便以后出现了问题还不知道是什么原因导致的 cas主要的形式就是通过过滤器的形式来实现的,来,贴上示例配置: 1 < listener > 2 < listener-class > org.jasig.cas.client.session.SingleSignOutHttpSessionListener </ listener-class > 3 </ listener > 4 5 < filter > 6 < filter-name > SSO Logout Filter </ filter-name > 7 < filter-class > org.jasig.cas.client.session.SingleSignOutFilter </ filter-class > 8 </ filter > 9 10 < filter-mapping > 11 < filter-name > SSO Logout Filter </ filter-name > 12 < url-pattern > /* </ url-pattern > 13 </ filter-mapping > 14 15 <!-- SSO单点登录认证filter --> 16 < filter > 17 < filter

spring 上下文异步事件驱动模型

倖福魔咒の 提交于 2020-08-05 11:22:25
1:定义一个事件对象继承ApplicationEvent抽象类 public class TableChangeEvent extends ApplicationEvent { private Long Id; private String tableName; private Integer opType; private String createTime; private Long orgId; /** * Create a new ApplicationEvent. * * @param source the object on which the event initially occurred (never { @code null}) */ public TableChangeEvent(Object source) { super(source); } public Long getOrgId() { return orgId; } public void setOrgId(Long orgId) { this.orgId = orgId; } public Integer getOpType() { return opType; } public void setOpType(Integer opType) { this.opType = opType; }

关于Java中excel表格导出的总结(Java程序导出模板和Java根据模板导出表格两种实现方式)

大兔子大兔子 提交于 2020-05-08 03:24:35
导出excel通用模板(程序定义模板导出) 转载原文: https://www.jianshu.com/p/5c7b359a159c 如下代码,本方法主要用于程序定义模板格式,并导出文件。该方法将定义和创建分离,达到了一定解耦合,降低了开发复杂度。但是依然是程序定义模板,对模板的样式需要程序控制,没有达到将数据和样式分离的目的。 改良版,关于添加依赖之类的之前一篇文章里面有。 这篇是把之前的方法抽成通用模板。 一、添加一个实体类 package com .lencity .securitymanagementplatform .data .entity ; import java .util . List ; public class XlsData { public static final int DATA_TYPE_INTEGER = 0 ; public static final int DATA_TYPE_STRING = 1 ; private List < String > titles ; //表头 private List < Integer > types ; //数据类型 private List < List < Object > > values ;存表数据 public List < Integer > getTypes ( ) { return

common-master项目

烈酒焚心 提交于 2020-03-24 20:33:49
3 月,跳不动了?>>> 在eclipse建立一个common-master项目,类型为pom类型 把common-master拷贝出来代码管理目录,把当前项目删除 先用初始化git管理地址等信息 建common-entity、common-dao、common-utils等模块项目,父项目是common-master 来源: oschina 链接: https://my.oschina.net/u/4198095/blog/3210366

Flutter Weekly Issue 45

做~自己de王妃 提交于 2020-03-04 08:50:48
教程/Articles 闲鱼Flutter互动引擎系列——骨骼动画篇 插件/Librays flutter-vibrate A flutter plugin for device vibration and haptic feedback. Flutter-Neumorphic This project is a starting point for a Dart package, a library module containing code that can be shared easily across multiple Flutter or Dart projects. just_audio A Flutter plugin to play audio from URLs, files, assets and DASH/HLS streams. flutter_jscore JavaScriptCore for Flutter. The plugin provides the ability to evaluate JavaScript programs from within dart. auto_localization Dynamically translate text EzLocalization Localize your flutter