FP通信框架入门使用

        一个自己倒腾的简单的通信框架(目前只是基于请求响应模式),集成底层的API,目的在于提高通信层的开发效率。该通信框架包括如下几个功能:

        1.服务端采用NIO模式,提高通信速率

        2.内部提供可选连接池方式,尽可能的将连接重用,提高开发效率。

        3.提供过滤器自定义

        4.业务处理层自定义

        5.提供负载均衡

        6.连接选择器与消息选择器分离

        7.客户端采用连接池模式,具有自动识别服务端是否存活的功能。

 

       下面给出一个小的Demo,采用MINA官方的时间服务器示例来做,其主要功能是客户端向服务端发送一个简单的请求,服务端打印客户端的请求,并返回给客户端当前的请求时间。

        先写服务端,业务对象的定义需要实现通信框架的FPHandler接口。FPHandler接口当中定义了如下几个方法

        messRecv(FPSession session, byte[] mess)   当信道当中接收消息时触发该方法

        messSend(FPSession session, byte[] mess)  当信道当中有消息发送时触发该方法

        sessionClosed(FPSession session)  当信道关闭时触发

        sessionCreated(FPSession session) 当新连接产生时出发该方法

 

 

        自定义服务端TestHandler:

 

public class TestHandler implements FPHandler{

	@Override
	public void messRecv(FPSession session, byte[] mess) {
		try {
			if(mess != null){
				String Message = new String(mess,"UTF-8");
				// 打印客户端信息
				System.out.println("Client:" + Message);
				// 构造发送给客户端的时间信息
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				// 向客户端发送信息
				session.write(("Server4328:"+sdf.format(new Date())).getBytes("UTF-8"));
			}else{
				session.write("b".getBytes("UTF-8"));
			}
		} catch (IOException e) {
			e.printStackTrace();
			return;
		}
	}

	@Override
	public void messSend(FPSession session, byte[] mess) {
		
	}

	@Override
	public void sessionClosed(FPSession session) {
		
	}

	@Override
	public void sessionCreated(FPSession session) {
		session.setPool(true);
	}

}

 

 编写启动服务端的类,用于启动服务端

 

public static void main(String[] args) {
		try {
			// 使用NIO的方式开始连接
			FPAcceptor accept = new FPNIOAcceptor();
			// 设置业务处理对象
			accept.setHandlerClass(TestHandler.class);
			// 设置过滤器(可增加多条过滤器)
//			accept.getFilterList().add(TestFilter.class);
			// 设置负载均衡服务器地址
//			accept.setLbServer(new InetSocketAddress("192.168.7.26", 4323));
			// 设置服务器端监听端口
			accept.setPort(4327);
			// 开启服务,这里是阻塞方式。
			accept.startServer();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

 

        好了,这里服务端编写完毕,下面写客户端,客户端负责向服务端发送信息,并接收服务端返回的消息,客户端调用方式很简单;示例代码如下

 

FPIOConnector con = new FPIOConnector(true,new FPInetAddress("192.168.7.26",4327));
 // true:表示使用连接池模式,第二个参数用于定义服务端地址与端口
byte[] rebytes = con.request(line.trim().getBytes("UTF-8"));
System.out.println(new String(rebytes,"UTF-8")+"耗时:"+(end-start)+"毫秒");

 

 

      下面来写一个完整的客户端实现TestC.java,用户从键盘获取输入,并向服务端发送请求,并接收服务端的请求。

 

public class Test_C {
	/**
	 * @date created on Aug 6, 2010 
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException{
		
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String line = "";
		while((line = br.readLine()) != null){
			long start = System.currentTimeMillis();
			// true:设置连接池模式
			// FPInetAddress 服务器地址,端口号
			FPIOConnector con = new FPIOConnector(true,new FPInetAddress("192.168.7.26",4327));
			try {
				// 向服务端请求
				byte[] rebytes = con.request(line.trim().getBytes("UTF-8"));
				long end = System.currentTimeMillis();
				System.out.println(new String(rebytes,"UTF-8")+"耗时:"+(end-start)+"毫秒");
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			} catch (FPComException e) {
				e.printStackTrace();
			}
		}
	}
}

 

     下面来看下运行结果吧:首先启动服务器,接着启动客户端,在客户端任意输入字符串,将返回服务端的当前时间:如下所示

 

>hello fpclient
Server4328:2010-10-09 14:24:32耗时:3毫秒
>hahahahha
Server4328:2010-10-09 14:24:44耗时:3毫秒
>你好
Server4328:2010-10-09 14:24:48耗时:1毫秒
 

 

Client:hello fpclient
Client:hahahahha
Client:你好

 


 

 

松下FP系列PLC以太网升级方案:BCNet-FP模块与C# TCP通信 6连接实测 本文详细介绍了松下FP系列PLC通过BCNet-FP模块实现以太网升级的方案,并提供了基于C#的高并发TCP通信系统实现指南。内容涵盖硬件选型、ET-LAN协议解析、C#通信框架设计及多连接管理策略,帮助开发者快速构建工业自动化通信系统,提升PLC与MES系统集成效率。 阅读详情

相关推荐

什么是FP8混合精度?

FP8混合精度训练是一种高效、经济的深度学习训练方法,通过降低数据精度来提升计算效率和减少资源消耗。尽管存在一些挑战,但随着技术的不断优化和硬件的支持,FP8混合精度有望在未来的深度学习实践中发挥更大的作用。

kcarly的专栏 4609

Flask框架优势体现:M2FP Web服务轻量级高可用

通过本次 M2FP 多人人体解析服务的实践,我们验证了Flask 在 AI 模型服务化中的独特优势轻量可控:没有冗余组件,便于定制和调试快速集成:几行代码即可暴露模型为 Web 接口双模支持:既能做 API 服务,也能搭 Web 前端生态成熟:配合 Gunicorn、Nginx 可轻松应对生产环境资源友好:内存占用低,特别适合 CPU 部署更重要的是,该项目解决了长期困扰社区的PyTorch 与 MMCV 兼容性问题,提供了开箱即用的稳定运行环境,真正实现了“一次构建,处处运行”。

weixin_42596246的博客 1040

OKI与川崎微电子共同推出支持FP-LVDS传输方式的T-CON芯片..

日本冲电气工业株式会社(OKI)与川崎微电子株式会社日前达成了合作伙伴关系,共同为市场提供能与OKI于今年1月开发成功的13位源极驱动器(SOURCE DRIVER)“MT3100”的数据传输方式FP-LVDS(平板低电平差分信号)相连的时序控制器(T-CON)。从而形成了向市场供应以FP-LVDS为基础,实现高精细LCD液晶显示屏的OKI源极驱动器及相应T-CON的供应体系。今后,OKI将与川崎微电子共同合作,积极普及和推广FP-LVDS传输方式。目前,川崎微电子已经开始了T-CON的开发。       时序控制器(T-CON)是接收到图像处理器的信号后,能按示元器件正确显示图像、色彩的格式

C#与PLC通信开发之松下FP系列PLC

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

云峰上位机软件开发的博客 1万+

Wireshark教程:解密HTTPS流量

Wireshark教程:如何解密HTTPS流量

nuan444979的博客 1万+

从编解码芯片看Tesla T4的隐藏实力:双NVDEC如何实现70路1080P解码?

本文深入剖析了英伟达Tesla T4显卡的隐藏实力,重点解读其独特的双NVDEC硬件解码器设计如何突破性能瓶颈。通过分析Turing架构、对比HEVC/H.264解码差异,并结合驱动与SDK优化,揭示了实现高达70路1080P视频流并发解码的原理与实战配置,为云游戏、直播转码等高并发场景提供高效解决方案。

weixin_29209801的博客 485

FP分数规划在无线通信中的应用

forall k\in\mathcal{K}_{i}\).对于约束\(\sum_{m=1}^{M}\Vert\mathbf{v}_{im}\Vert_{2}^{2}\leq P_{\max}\),可写为\(\sum_{m=1}^{M}\mathbf{v}_{im}^{\dagger}\mathbf{v}_{im}-P_{\max}\leq0\),即\(\mathrm{tr}\{\mathbf{V}_{i}^{\dagger}\mathbf{V}_{i}\}-P_{\max}\leq0\),

weixin_55010563的博客 938

服务器能效测试工具BenchSEE使用方法简介

BenchSEE是由中国标准化研究院开发的一款针对服务器产品能效测试的基准软件。BenchSEE基准的设计参考了全球众多服务器厂家、芯片厂家、能效认证机构和IT节能领域科研机构的意见,旨在满足服务器市场应用对能效测评的需求。BenchSEE基准负载工具支持的服务器类型包括:机架服务器、刀片服务器多节点服务器和机柜服务器等,服务器可以配的最大外理器个数包括:1P,2P和4P等。测试基准涵盖服务器关键部件:CPU,内存和存储介质三大基础部件。

MQWYY3的博客 4219

万字综述:全面梳理 FP8 训练和推理技术 -- 附录

Transformer 模型中最主要的操作就是矩阵乘,也就是 Linear Layer,如下图所示(来自 [2309.17224] Training and inference of large language models using 8-bit floating point)为一个 Linear 操作的伪代码,其核心思路就是在 FP8 矩阵乘之前需要转换的 Tensor 转换为 FP8 类型,如下图红框所示;然而由于篇幅的原因,部分内容并没有具体展开,这篇文章中我们对其补充,并结合代码来介绍。

具身机器人和通用AI 2601

影像组学分析流程中,图像分割前要做的事(图像预处理)

在InputVolume中无法找到自己想要重采样的序列,这时可以检查一下序列的Volume type是不是MRMLMulti。这时,Volume type将由MRMLMulti改为Scaler,随后即可在3D slicer中完成Resample Scaler Volume。2.1、重采样:通过3Dslicer中的Resample Scaler Volume实现。具体设置参数:spacing(1,1,1),Interpolation选择Bspline。2、图像预处理:重采样和标准化。

weixin_45011313的博客 3724

ThingsBoard - 设备接入

设备接入笔记

qq_53839898的博客 1454

DeepGEMM如何实现FP8通用矩阵乘法

(还是从DeepSeek-V3技术报告那窜出来的一个小课题)在技术报告中作者提出一种细粒度混合精度的训练框架,来看看它是怎么高效实现FP8通用矩阵乘法的。;(ง •_•)ง虽说低精度训练很有前景,但对激活值、权重、梯度中异常值很敏感。虽说在推理过程进行量化的研究已有不少成果,但将低精度技术成功应用到LLM预训练过程中的研究还是少。为了解决这些挑战并对FP8数据格式的动态范围进行有效扩展,作者推出一个细粒度量化策略:分成的小块(tile-wise grouping)或。

m0_56695799的博客 1793

MATLAB与图像处理(一):图像中结构张量的求法(Structure Tensor)

1.结构张量的作用:       能够区分图像中的平坦区域,边缘,角点; 2.图像中的结构张量的定义    1)是一个矩阵;    2)与图像的水平,垂直梯度有关,定义如下: 在MATLAB中,可以用如下语句求解:[Ix,Iy]=gradient(Image); 3)求出结构张量矩阵的行列式,和迹(矩阵对角线之和)   行列式:K=det(E);   迹:  

wenyusuran的专栏 5242

大模型训练开销还能更小!微软推出首个FP4训练框架,训练效果与BF16相当

来了,来自微软研究院!在相同超参数的设置下,可以达到。这意味着。用这种方法训练的模型规模最高可达130亿参数规模,训练Tokens数量也达到千亿级别。而且用的还不是真·FP4,而是通过FP8来模拟,如果采用真的FP4,效果还能进一步提升。(注:研究开展时,尚未有原生支持FP4的硬件,故作者通过在FP8的TensorCore上模拟实现)网友评论说,效率更高质量却没什么损失,FP4真的是个game changer。还有人说,如果这一发现广为人知,恐怕老黄的股价又要跌了。

m0_59164304的博客 1156

Qt版Dalsa线扫相机的采集Demo

Qt Dalsa

追赶时代的博客 605

基于深度学习的柠檬等级检测系统 —— YOLOv8 + UI界面 + 数据集

本项目的目标是构建一个柠檬等级检测系统,通过深度学习模型自动检测柠檬的等级。自动检测柠檬等级:通过图像中的柠檬特征,自动判断其成熟度和质量。实时视频检测:通过摄像头实时监控柠檬的质量等级。用户友好的UI界面:为用户提供简洁直观的操作界面,支持图像上传、实时视频检测等功能。本项目展示了如何基于YOLOv8模型开发一个柠檬等级检测系统,结合PyQt5实现了用户友好的UI界面。通过该系统,用户可以快速上传柠檬图像并自动识别其等级,极大提升了检测效率和准确性。数据集的扩展。

YOLO 1112

FP8训练支持上线:拥抱最新国际标准,降低通信开销

FP8以仅1字节的存储实现显存与通信的双重优化,ms-swift率先在国内实现全链路支持。通过E4M3/E5M2格式分工,兼顾权重与梯度精度,在H100上单次同步数据减少56%,训练吞吐提升近四成。兼容QLoRA、DPO等主流方法,真正实现“训推一体”,并在ZeRO-3、FSDP等分布式策略中透明集成。

weixin_33480380的博客 674

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

swift混合精度训练:FP16/FP8如何平衡精度与性能

在深度学习模型训练过程中,精度与性能的平衡一直是算法工程师面临的核心挑战。随着模型参数量从数十亿到数千亿的爆炸式增长(如GPT-4的1.8万亿参数),传统的32位浮点(FP32)训练模式面临着内存瓶颈和计算效率的双重限制。混合精度训练技术通过结合不同精度的数值格式(如FP16/FP8),在保持模型精度损失在可接受范围内的同时,显著提升训练速度并降低显存占用。 **痛点直击**:你是否遇到过以下场...

gitblog_00941的博客 1248

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

大模型中设计的精度(FP8,FP16,FP32,混合精度训练,精度量化)相关总结

不同的浮点数精度在大模型的训练和推理中各有优劣。FP32提供了较高的计算精度和较大的表示范围,适用于需要高精度计算的场景;FP16在内存占用和计算效率上具有优势,适用于大多数深度学习任务;FP8则在极端计算效率和低内存占用的场景下表现出色,适用于对精度要求不高的应用。混合精度训练是一种有效的深度学习训练技术,通过在不同阶段使用不同精度的数据类型,可以显著提高训练效率、减少内存占用和降低计算开销。尽管存在一些挑战,但随着硬件和软件的不断发展,混合精度训练在大规模深度学习模型训练中的应用前景广阔。

艾勇-sjtu的blog 5761

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

fp8部署deepseek

FP8部署DeepSeek是一种高效、低成本的模型部署方式,适用于大规模AI模型的训练和推理。通过硬件适配、权重转换和推理框架优化,开发者可以在NVIDIA、AMD、华为昇腾等平台上实现FP8模型的快速部署。未来,随着硬件技术的进步和国产算力的崛起,FP8部署将成为AI模型部署的重要方向。

weixin_40941102的博客 4341

FP32/FP6/BF6

本文探讨了浮点数精度对深度学习训练的影响。FP32、FP16和BF16三种浮点格式的核心差异在于指数位和尾数位的分配:FP16易数值溢出但相对误差小,BF16动态范围大但精度较低。训练中的数值风险主要来自矩阵运算、归约操作和反向传播,FP16需要loss scaling防下溢,BF16则依赖FP32进行关键累加。混合精度训练通过分工(权重FP32、矩阵运算低精度、敏感操作FP32)平衡效率与稳定性。硬件支持需覆盖完整训练链路(前向/反向/通信),推理卡常因省略训练所需功能(FP32吞吐、显存带宽、通信能力)

weixin_61704900的博客 676

读取HG-S/HG-T测量值 EtherCAT通信 FP7

本文介绍通信案例,FP7通过通信模块SC-HG1-ETC读取HG-T、HG-S测量值。HG-T使用主机HG-TC101,HG-S使用子机HG-SC111,介绍了如何通过SC-HG1-ETC写入/读取主机、子机中的测量结果。FP7为PLC的CPU模块,需要借助运动控制模块MC上的EtherCAT接口完成。SC-HG1-ETCEtherCAT通信模块SC-HG1-ETC提供EtherCAT接口。HG-T/HG-S系列产品通过SC-HG1-ETC完成EtherCAT通信。

weixin_52004777的博客 1147

PyTorch 原生FP8训练进展

float8训练格式是由NVIDIA、ARM和Intel在2022年的一篇论文(https://arxiv.org/abs/2209.05433)中提出的,该论文证明了使用更低精度float8进行训练的可行性,且不会牺牲模型质量。随着NVIDIA Hopper系列等新型GPU的推出,由于原生float8张量核心支持,FP8训练变得可行,有望实现超过2倍的训练吞吐量提升。实现这一承诺面临一些挑战:(i) 在float8中启用核心模型操作如matmul和attention, (ii) 在分布式框架中启用。

zengxiaojian2的博客 1608

FP分数规划在无线通信中的应用(I)

在数学优化中,分数规划是线性分式规划的推广。分数规划中的目标函数是两个函数的比值,这两个函数通常是非线性的。要优化的比值通常描述系统的某种效率。

Louis___Zhang的博客 1354
上一篇: 一个正在往终点爬行的乌龟,虽然慢点,不过只要有目标,肯定可以到达终点...
下一篇: 自己倒腾的一个小的HTTP小工具
refactaar
博客等级 码龄17年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值