`
sjsky
  • 浏览: 929460 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SNMP之JRobin画图

    博客分类:
  • SNMP
阅读更多
    blog迁移至:http://www.micmiu.com

本文主要记录下学习如何运用JRboin画图的一些测试代码。
本次测试画图用到的测试数据demo_flow.rrd文件,是来自之前写的SNMP系列之(一)JRobin Core学习中的方法生成的,可供大家参考。JRboin的画图主要从下面两方面:
  • 直接定义RrdGraphDef对象画图
  • 根据定义好的模板XML文件生成图片
先看下两中方法生成的图片效果图:






下面是我学习时生成图片的测试代码以及定义的模板文件:
package com.snmp.jrobin;

import java.awt.Color;
import java.awt.Font;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import org.jrobin.core.Util;
import org.jrobin.graph.RrdGraph;
import org.jrobin.graph.RrdGraphDef;
import org.jrobin.graph.RrdGraphDefTemplate;
import org.xml.sax.InputSource;

/**
 * @author Michael
 * 
 */
public class TestGraphCommon {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String rootPath = "d:/test/jrobin/";
        String imgFileName = "demo_graph_rrd.png";

        TestGraphCommon test = new TestGraphCommon();

        // 测试直接定义画图模板生成图片
        test.graphByGraphDef(rootPath, imgFileName);

        String tempName = "graph-def-template.xml";
        // 测试根据定义的XML模板文件生成图片
        test.graphByTemplate(rootPath, tempName);
    }

    /**
     * 直接定义画图模板生成图片
     * @param rootPath
     * @param imgFileName
     */
    private void graphByGraphDef(String rootPath, String imgFileName) {
        try {
            System.out.println("[rrd graph by RrdGraphDef start...]");
            // 2010-10-01:1285862400L 2010-11-01:1288540800L
            long startTime = Util.getTimestamp(2010, 10 - 1, 1);
            long endTime = Util.getTimestamp(2010, 10 - 1, 31);

            RrdGraphDef rgdef = new RrdGraphDef();
            // If the filename is set to '-' the image will be created only in
            // memory (no file will be created).
            // rgdef.setFilename("-");
            rgdef.setFilename(rootPath + imgFileName);

            // "PNG", "GIF" or "JPG"
            rgdef.setImageFormat("PNG");
            // rgdef.setTimeSpan(startTime, endTime);
            rgdef.setStartTime(startTime);
            rgdef.setEndTime(endTime);

            rgdef.setAntiAliasing(false);
            rgdef.setSmallFont(new Font("Monospaced", Font.PLAIN, 11));
            rgdef.setLargeFont(new Font("SansSerif", Font.BOLD, 14));

            rgdef.setTitle("JRobin graph by RrdGraphDef demo");
            // default 400
            rgdef.setWidth(500);
            // default 100
            rgdef.setHeight(200);

            // 一般不需要设置这个参数
            // rgdef.setStep(86400);

            rgdef.setVerticalLabel("transfer speed [bits/sec]");

            rgdef.datasource("in", rootPath + "demo_flow.rrd", "input",
                    "AVERAGE");
            rgdef.datasource("out", rootPath + "demo_flow.rrd", "output",
                    "AVERAGE");
            rgdef.datasource("in8", "in,8,*");
            rgdef.datasource("out8", "out,8,*");
            // PS:先画域的再画线的,否则线会被域遮盖
            rgdef.area("out8", new Color(0, 206, 0), "output traffic");
            rgdef.line("in8", Color.BLUE, "input traffic\\l");

            // \\l->左对齐 \\c->中间对齐 \\r->右对齐 \\j->自适应
            // \\s-> \\g->glue \\J->
            rgdef.gprint("in8", "MAX", "maxIn=%.2f %sbits/sec");
            rgdef.gprint("out8", "MAX", "maxOut=%.2f %sbits/sec\\l");
            rgdef.gprint("in8", "AVERAGE", "avgIn=%.2f %sbits/sec");
            rgdef.gprint("out8", "AVERAGE", "avgOut=%.2f %sbits/sec\\l");
            rgdef.gprint("in8", "TOTAL", "totalIn=%.2f %sbits/sec");
            rgdef.gprint("out8", "TOTAL", "totalOut=%.2f %sbits/sec\\s");
            rgdef.comment("画图测试");

            RrdGraph graph = new RrdGraph(rgdef);
            System.out.println("[rrd graph info:]"
                    + graph.getRrdGraphInfo().dump());
            // 如果filename没有设置,只是在内存中,可以调用下面的方法再次生成图片文件
            if ("-".equals(graph.getRrdGraphInfo().getFilename())) {
                createImgFile(graph, rootPath + imgFileName);
            }
            System.out.println("[rrd graph by RrdGraphDef success.]");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * ImageIO 生成图片文件
     */
    private void createImgFile(RrdGraph graph, String imgFileFullName) {

        try {
            BufferedImage image = new BufferedImage(graph.getRrdGraphInfo()
                    .getWidth(), graph.getRrdGraphInfo().getHeight(),
                    BufferedImage.TYPE_INT_RGB);
            graph.render(image.getGraphics());
            File imgFile = new File(imgFileFullName);
            ImageIO.write(image, "PNG", imgFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 根据定义的XML模板生成图片
     * @param rootPath
     * @param imgFileName
     */
    private void graphByTemplate(String rootPath, String tempName) {
        try {
            System.out.println("[rrd graph by xml template start...]");
            RrdGraphDefTemplate defTemplate = new RrdGraphDefTemplate(
                    new InputSource(rootPath + tempName));
            // setVariable 设置XML template的变量
            defTemplate.setVariable("startTime", "20101001 00:00");
            defTemplate.setVariable("endTime", "20101031 23:59");
            defTemplate.setVariable("in_rrd_file", rootPath + "demo_flow.rrd");
            defTemplate.setVariable("out_rrd_file", rootPath + "demo_flow.rrd");
            RrdGraph graph = new RrdGraph(defTemplate.getRrdGraphDef());

            BufferedImage image = new BufferedImage(graph.getRrdGraphInfo()
                    .getWidth(), graph.getRrdGraphInfo().getHeight(),
                    BufferedImage.TYPE_INT_RGB);
            graph.render(image.getGraphics());
            File imgFile = new File(rootPath + "demo_graph_tmp.PNG");
            ImageIO.write(image, "PNG", imgFile);//
            System.out.println("[rrd graph by xml template success.]");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

<?xml version="1.0" encoding="GB2312"?>
<rrd_graph_def>
    <span>
        <start>${startTime}</start>
        <end>${endTime}</end>
    </span>
    <filename>-</filename>
    <options>
        <anti_aliasing>off</anti_aliasing>
        <fonts>
					<small_font>
						<name>Monospaced</name>
						<style>PLAIN</style>
						<size>11</size>
					</small_font>
					<large_font>
						<name>SansSerif</name>
						<style>BOLD</style>
						<size>14</size>
					</large_font>
				</fonts>
				 <title>JRobin graph by xml template demo</title>
        <vertical_label>transfer speed [bits/sec]</vertical_label>
        <width>500</width>
        <height>200</height>
        <base>1024</base>
    </options>
    <datasources>
        <def>
            <name>in</name>
            <rrd>${in_rrd_file}</rrd>
            <source>input</source>
            <cf>AVERAGE</cf>
        </def>
        <def>
            <name>out</name>
            <rrd>${out_rrd_file}</rrd>
            <source>output</source>
            <cf>AVERAGE</cf>
        </def>
    </datasources>
    <graph>
        <area>
            <datasource>in</datasource>
            <color>#00ce00</color>
            <legend>入速率</legend>
        </area>
        <line>
            <datasource>out</datasource>
            <color>#0000FF</color>
            <legend>出速率\l</legend>
        </line>
        <gprint>
        	<datasource>in</datasource>
        	<cf>MAX</cf>
        	<format>入速率最大值:%7.2f %sbits/sec</format>
        </gprint>
        <gprint>
        	<datasource>out</datasource>
        	<cf>MAX</cf>
        	<format>出速率最大值:%7.2f %sbits/sec\l</format>
        </gprint>
       <gprint>
       		<datasource>in</datasource>
       		<cf>AVERAGE</cf>
       		<format>入速率平均值:%7.2f %sbits/sec</format>
       	</gprint>
       	<gprint>
       		<datasource>out</datasource>
       		<cf>AVERAGE</cf>
       		<format>出速率平均值:%7.2f %sbits/sec\l</format>
       	</gprint>     
       	<gprint>
       		<datasource>in</datasource>
       		<cf>TOTAL</cf>
       		<format>总入流量:%7.2f %sbits</format>
       	</gprint>
       	<gprint>
       		<datasource>out</datasource>
       		<cf>TOTAL</cf>
       		<format>总出流量:%7.2f %sbits\l</format>
       	</gprint>
       	<comment>测试画图\l</comment>
    </graph>
</rrd_graph_def> 
  • 大小: 15 KB
  • 大小: 15.3 KB
1
0
分享到:
评论
2 楼 sjsky 2011-01-18  
东方小猪仔 写道
你好,我也在用JRobin,不过我有时候画的图里边的数据没有负数,为什么作出的图居然出现负数呢?
我用的JRobin是1.5.9.希望您可以解答,谢谢。

注意你的rrd里的数据格式,能把你的rrd文件 给我看看不
1 楼 东方小猪仔 2011-01-17  
你好,我也在用JRobin,不过我有时候画的图里边的数据没有负数,为什么作出的图居然出现负数呢?
我用的JRobin是1.5.9.希望您可以解答,谢谢。

相关推荐

    snmp-tutorial:SNMP教程:Jrobin、SNMP4j

    Jrobin、SNMP4jsnmp4j-1x-demoSNMP4j实现同步和异步的GET的示例SNMP4j实现同步和异步的Walk的示例SNMP4j实现Trap的示例SNMP4j实现SET的示例SNMP4j实现GETBLUK的示例robin-demoJRobin Core学习JRobin基础画图JRobin...

    多类道路车辆目标检测数据集.zip

    数据集介绍:多类道路车辆目标检测数据集 一、基础信息 数据集名称:多类道路车辆目标检测数据集 图片数量: - 训练集:7,325张图片 - 验证集:355张图片 - 测试集:184张图片 总计:7,864张道路场景图片 分类类别: - Bus(公交车):城市道路与高速场景中的大型公共交通工具 - Cars(小型汽车):涵盖轿车、SUV等常见乘用车型 - Motorbike(摩托车):两轮机动车辆,含不同骑行姿态样本 - Truck(卡车):包含中型货运车辆与重型运输卡车 标注格式: YOLO格式标注,包含归一化坐标的边界框与类别标签,适配主流目标检测框架。 数据特性: 覆盖多种光照条件与道路场景,包含车辆密集分布与复杂背景样本。 二、适用场景 自动驾驶感知系统开发: 用于训练车辆识别模块,提升自动驾驶系统对道路参与者的实时检测与分类能力。 交通流量监控分析: 支持构建智能交通管理系统,实现道路车辆类型统计与密度分析。 智慧城市应用: 集成至城市级交通管理平台,优化信号灯控制与道路资源分配。 学术研究领域: 为计算机视觉算法研究提供标准化评测基准,支持多目标检测模型优化。 三、数据集优势 高场景覆盖率: 包含城市道路、高速公路等多种驾驶环境,覆盖车辆静止、行驶、遮挡等现实场景。 精细化标注体系: 采用YOLO标准格式标注,每张图片均经过双重质检,确保边界框与类别标签的精准对应。 类别平衡设计: 四类车辆样本量经科学配比,避免模型训练时的类别偏向问题。 工程适配性强: 可直接应用于YOLO系列模型训练,支持快速迁移至车载计算平台部署。 现实应用价值: 专注自动驾驶核心检测需求,为车辆感知模块开发提供高质量数据支撑。

    电镀车间智能化生产线:基于485与TCP双通道通信的绝对定位控制系统

    内容概要:本文详细介绍了电镀车间智能化生产线的设计与实现,重点在于五台双钩行车与一台三爪机械手的协调运作。系统采用485总线和TCP/IP双通道通信架构,结合Modbus-RTU协议确保底层设备间的稳定通信,而上位机则通过TCP/IP协议实现多屏数据同步。绝对定位系统使设备重启后无需回零,直接恢复作业。文中展示了Python、STL、JavaScript等多种编程语言的应用实例,涵盖通信中间件、状态机管理和HMI界面开发等方面。此外,还讨论了通信延迟、接地问题等实际调试过程中遇到的技术挑战及其解决方案。 适合人群:从事工业自动化、智能制造领域的工程师和技术人员,尤其是对通信协议、运动控制和人机交互感兴趣的读者。 使用场景及目标:适用于希望深入了解工业自动化生产线设计原理的专业人士。主要目标是掌握485/TCP混合通信架构、绝对定位技术和多屏协同控制的实际应用方法。 其他说明:文章不仅提供了理论知识,还包括大量实用代码示例,帮助读者更好地理解和实践相关技术。同时强调了硬件配置的重要性,如终端电阻匹配和接地处理等细节对于系统稳定性的影响。

    《DeepSeek+Mermaid:轻松实现可视化图表自动化生成》,DeepSeek与Mermaid结合实现自动化图表生成

    内容概要:本文介绍了DeepSeek与Mermaid结合实现可视化图表自动化生成的技术及其应用场景。DeepSeek是一款由杭州深度求索人工智能基础技术研究有限公司开发的大语言模型,具有强大的自然语言处理能力,能理解复杂的自然语言指令并生成对应的Mermaid代码。Mermaid是一款基于文本的开源图表绘制工具,能够将简洁的文本描述转化为精美的流程图、序列图、甘特图等。两者结合,通过DeepSeek将自然语言转化为Mermaid代码,再由Mermaid将代码渲染成直观的图表,极大提高了图表制作的效率和准确性。文章详细描述了DeepSeek的发展历程、技术架构及应用场景,Mermaid的基础语法和图表类型,并通过一个电商平台开发项目的实战演练展示了二者结合的具体应用过程。 适合人群:具备一定编程基础和技术理解能力的研发人员、项目经理、数据分析师等。 使用场景及目标:①需求分析阶段,快速生成业务流程图和功能关系图;②设计阶段,生成系统架构图和数据库设计图;③实现阶段,辅助代码编写,提高编码效率;④验证阶段,生成测试用例和测试报告图表,直观展示测试结果。 阅读建议:在学习和使用DeepSeek与Mermaid的过程中,建议读者结合具体项目需求,多实践生成图表和代码,熟悉两者的交互方式和使用技巧,充分利用官方文档和社区资源解决遇到的问题,逐步提高图表绘制和代码编写的准确性和效率。

    基于MPC模型预测控制的车辆轨迹跟踪仿真:四轮侧偏角软约束的影响分析

    内容概要:本文详细探讨了基于MPC(模型预测控制)的车辆轨迹跟踪控制方法,特别是在加入四轮侧偏角软约束前后的效果对比。文章首先介绍了MPC的基本原理及其在车辆控制中的应用背景,然后展示了不加侧偏角约束时MPC控制的表现,如车辆在高速过弯时出现的不稳定行为,包括侧偏角过大导致的轮胎非线性特性显现,以及由此引发的轨迹跟踪误差增大等问题。接着,文章深入分析了加入侧偏角软约束后的改进措施,包括优化目标函数、引入惩罚项等,使得控制器能够在保持较高跟踪精度的同时,有效避免轮胎进入非线性区,从而提高车辆的稳定性和安全性。最后,通过联合仿真(Simulink + CarSim)验证了加入侧偏角软约束的有效性,提供了详细的仿真数据和图表支持。 适合人群:从事自动驾驶、车辆工程、控制系统设计的研究人员和技术人员。 使用场景及目标:适用于需要深入了解MPC在车辆轨迹跟踪控制中的应用,尤其是关注车辆稳定性和轮胎特性的研究人员。目标是通过实例分析,展示如何通过合理的约束设计提升MPC控制性能。 其他说明:文中提供的仿真数据和代码有助于进一步理解和复现实验结果,建议结合相关文献进行深入学习。

    基于springboot+vue前后端分离,学生选课系统(源码+Mysql数据库+论文+PPT+教程),高分项目,开箱即用(毕业设计)(课堂设计)

    基于springboot+vue前后端分离,学生选课系统(源码+Mysql数据库+论文+PPT+教程),高分项目,开箱即用(毕业设计)(课堂设计) 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对学生选课信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用学生选课系统可以有效管理,使信息管理能够更加科学和规范。 学生选课系统在Eclipse环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,其管理员管理专业,教师,学生,课程,查看学生选课以及学生成绩信息。教师查询学生,查询课程,审核学生选课信息,为学生学习的课程进行成绩打分。学生参与课程选课,查询选课信息,查询已选课程的成绩信息。 总之,学生选课系统集中管理信息,有着保密性强,效率高,存储空间大,成本低等诸多优点。它可以降低信息管理成本,实现信息管理计算机化。

    thumbnailator-0.4.11.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    180nm工艺下三种不同结构LDO的设计与实现:超低功耗、三级放大器及应用

    内容概要:本文详细介绍了基于180nm工艺设计的三种不同结构的低压差线性稳压器(LDO),分别为超低功耗LDO、三级放大器LDO及其各自的特点和应用场景。文中不仅提供了理论解释,还附有具体的代码片段(如Verilog和Python)用于展示关键模块的控制逻辑和性能测试方法。此外,文章分享了工程文件,包括测试电路和性能测试结果,使读者可以直接应用于实际项目中。 适合人群:从事芯片设计、电源管理领域的工程师和技术研究人员。 使用场景及目标:帮助工程师理解和掌握180nm工艺下LDO的设计原理和实现细节,适用于便携式设备和其他对功耗要求严格的场合。同时,提供的工程文件可以作为实际项目的参考资料,加速产品开发进程。 其他说明:文章强调了180nm工艺的成本优势以及在特定应用场景下的性能表现,鼓励读者通过提供的工程文件进行进一步的研究和实践。

    光刻软件:Opal二次开发-(10).Opal二次开发案例分析.docx 光刻软件:Opal二次开发-(11).光刻工艺参数设置与调整.docx 光刻软件:Opal二次开发-(12).Opal二次开发

    光刻软件:Opal二次开发_(10).Opal二次开发案例分析.docx 光刻软件:Opal二次开发_(11).光刻工艺参数设置与调整.docx 光刻软件:Opal二次开发_(12).Opal二次开发工具与环境配置.docx 光刻软件:Opal二次开发_(13).Opal插件开发.docx 光刻软件:Opal二次开发_(14).Opal自动化脚本编写.docx 光刻软件:Opal二次开发_(15).Opal性能调优与故障排除.docx 光刻软件:Opal二次开发_(16).Opal二次开发最佳实践.docx 光刻软件:Opal二次开发_(17).Opal版本管理与更新.docx 光刻软件:Opal二次开发_(18).Opal二次开发项目管理.docx 光刻软件:Opal二次开发_(19).光刻软件Opal的未来发展趋势.docx 光刻软件:Opal二次开发_(1).Opal软件基础与操作.docx 光刻软件:Opal二次开发_(2).光刻技术概论.docx 光刻软件:Opal二次开发_(3).光刻软件Opal的架构与组件.docx 光刻软件:Opal二次开发_(4).Opal脚本语言基础.docx 光刻软件:Opal二次开发_(5).Opal图形界面开发.docx 光刻软件:Opal二次开发_(6).Opal数据处理与分析.docx 光刻软件:Opal二次开发_(7).Opal仿真与优化.docx 光刻软件:Opal二次开发_(8).Opal与外部软件接口.docx 光刻软件:Opal二次开发_(9).Opal高级功能与技巧.docx

    轮毂电机分布式驱动车辆状态估计:EKF与UKF的应用及比较

    内容概要:本文详细探讨了轮毂电机分布式驱动车辆的状态估计方法,主要集中在扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF)。文中介绍了整车7自由度模型,该模型综合考虑了车辆多个方向的运动特性,为状态估计提供了理论基础。接着分别阐述了EKF和UKF的工作原理及其Python代码实现,展示了两种滤波器在处理非线性问题上的异同。实验结果显示,UKF在高非线性条件下表现更好,但计算成本更高;EKF计算简单,但在某些情况下精度有限。最终,作者强调了这两种方法的选择应根据具体应用场景的需求。 适合人群:从事汽车工程、自动化控制、机器人技术等领域研究的专业人士和技术爱好者。 使用场景及目标:①研究和开发轮毂电机分布式驱动车辆的控制系统;②评估和优化车辆状态估计算法,如车速、质心侧偏角、横摆角速度等;③理解EKF和UKF在非线性系统中的应用特点。 其他说明:文章不仅提供了详细的数学推导和代码实现,还讨论了一些实际应用中的注意事项,如噪声处理、参数调整等。此外,文中提到的7自由度模型和滤波器实现可以作为进一步研究的基础。

    车辆目标检测数据集.zip

    数据集介绍:车辆目标检测数据集 一、基础信息 数据集名称:车辆目标检测数据集 图片数量: - 训练集:3,931张 - 验证集:1,126张 - 测试集:563张 - 总计:5,620张道路场景图片 分类类别: - Vehicle(车辆):覆盖多种道路场景下的机动车辆检测 标注格式: YOLO格式标注,包含归一化坐标的边界框信息,适用于目标检测任务 数据特性: 涵盖多角度、多光照条件的车辆目标,包含不同距离尺度的检测样本 二、适用场景 自动驾驶系统开发: 训练车载视觉系统实时检测周围车辆,提升环境感知能力 交通监控分析: 用于智慧城市系统统计道路车辆密度,优化交通流量管理 驾驶辅助系统研发: 集成至ADAS系统实现碰撞预警、车道保持等核心功能 计算机视觉研究: 为车辆检测算法研究提供标准化基准数据集 道路安全系统开发: 支持构建违规驾驶行为检测系统(如违规变道、跟车过近等) 三、数据集优势 专业场景覆盖: 数据采集自真实道路场景,包含城市道路、高速公路等多种环境 标注规范性强: 严格遵循YOLO标注标准,边界框与车辆位置高度吻合 多尺度检测支持: 包含近景特写与远景多目标场景,有效训练模型尺度适应性 算法适配性佳: 原生支持YOLO系列算法,可无缝衔接主流深度学习框架训练流程 工业应用价值: 直接服务于自动驾驶、智慧交通等前沿领域AI模型开发

    groovy-2.2.0-rc-3.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    【鸿蒙HarmonyOS网络开发】基于TCP协议的客户端开发指南:从基础原理到实战案例详解

    内容概要:本文详细介绍了鸿蒙HarmonyOS网络开发中TCP客户端的相关知识和技术实现。首先,文章讲解了TCP协议的基本原理,包括其可靠有序的传输特性、与UDP的区别、三次握手机制和滑动窗口机制。接着,文章阐述了HarmonyOS与TCP客户端的关系,特别是在物联网设备通信、即时通讯应用和数据传输安全方面的应用。随后,文章逐步引导读者搭建HarmonyOS开发环境,申请网络权限,并通过创建项目、导入模块、绑定端口、连接服务端、发送与接收消息等步骤,实现了TCP客户端的基本功能。最后,文章展示了通过一个具体的TCP通讯示例应用,从界面设计到功能实现的全过程,并讨论了常见问题及其解决方案。; 适合人群:具备一定编程基础,尤其是对网络编程和HarmonyOS开发感兴趣的开发者。; 使用场景及目标:①了解TCP协议的工作原理及其与UDP的区别;②掌握HarmonyOS开发环境的搭建和网络权限的申请;③学习TCP客户端的开发流程,包括创建项目、编写核心代码和实现消息收发功能;④解决开发过程中常见的连接失败和数据收发异常问题。; 其他说明:本文不仅提供了详细的理论知识,还通过实际案例帮助读者更好地理解和掌握TCP客户端开发的技术要点。对于希望深入了解HarmonyOS网络开发的开发者来说,本文是一份非常有价值的参考资料。

    flink-connector-jdbc_2.12-1.13.4.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    46页-泛东教育智慧校园建设方案.pdf

    踏入智慧校园的新时代,一场科技与教育的深度融合正在悄然上演。本方案以大数据、云计算、AI等前沿技术为基石,为校园管理带来前所未有的变革与便捷。 一、一键智控,校园管理轻松升级 想象一下,只需轻点手机,就能实现校园的全面智控。从教学教务到行政后勤,从师生考勤到校园安全,智慧校园解决方案一网打尽。通过构建统一的数据中台,实现各系统间的无缝对接与数据共享,让繁琐的管理工作变得轻松高效。智能排课、自动考勤、在线审批……一系列智能应用让校园管理如虎添翼,让校长和老师们从繁琐的事务中解放出来,专注于教学创新与质量提升。 二、寓教于乐,学习生活趣味无穷 智慧校园不仅让管理变得更简单,更让学习生活变得趣味无穷。AI赋能的教学系统能根据学生的学习习惯和能力,提供个性化的学习路径与资源推荐,让学习变得更加高效有趣。同时,丰富的课外活动与社团管理模块,让孩子们的课余生活也充满了欢声笑语。从智慧班牌到智能录播,从家校共育到虚拟实验室,智慧校园让每一个角落都充满了探索的乐趣与知识的光芒。 三、安全守护,校园生活无忧无虑 在智慧校园的守护下,校园生活变得更加安全无忧。通过高清视频监控、智能预警系统与人脸识别技术,校园安全得到了全方位保障。无论是外来人员的入侵还是学生的异常行为,都能被及时发现并处理。同时,智能化的健康管理系统还能实时监测师生的健康状况,为校园防疫工作提供有力支持。智慧校园,用科技的力量为每一位师生筑起了一道坚实的安全防线,让校园生活更加安心、舒心。

    基于西门子200Smart与威纶通触摸屏的电子凸轮相对运动控制系统实现

    内容概要:本文详细介绍了使用西门子200Smart PLC和威纶通触摸屏搭建电子凸轮相对运动控制系统的方法。主要内容涵盖硬件配置、PLC程序核心逻辑(如初始化脉冲输出、加减速曲线分段、方向控制)、触摸屏操作以及常见问题及其解决方案。文中还特别强调了调试过程中遇到的实际问题及解决方法,确保系统的稳定性和可靠性。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和电子凸轮控制有一定基础的人群。 使用场景及目标:适用于需要实现精确电机控制的应用场合,如生产线上的物料搬运、包装机械等。目标是帮助读者掌握如何利用现有硬件资源构建高效稳定的电子凸轮控制系统。 其他说明:文章提供了丰富的实战经验分享,包括硬件选型、软件编程技巧、故障排查等方面的内容,有助于提高读者的实际操作能力。

    Outlook新邮件到达时不显示通知

    Outlook新邮件到达时不显示通知

    flink-table-common-1.9.3.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    groovy-2.4.0-beta-3.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    LabVIEW图形化编程平台构建多功能万金油框架及其应用实例

    内容概要:本文详细介绍了如何利用LabVIEW图形化编程平台构建一个高度灵活、可扩展的“万金油”框架。主要内容涵盖框架的基本结构设计,如While循环、事件结构、队列处理和状态机的结合使用;具体的技术细节,如队列管理、状态机优化、动态加载VI、错误处理机制以及与外部系统的接口设计;并通过多个实际项目案例展示了该框架的强大适应性和高效性能。此外,还分享了一些实用的开发经验和避坑指南。 适合人群:熟悉LabVIEW编程的基础开发者,尤其是从事自动化测试、仪器控制领域的工程师。 使用场景及目标:适用于需要快速搭建、灵活调整的工程项目,特别是在面对客户需求频繁变更的情况下。目标是提高项目的开发效率、稳定性和可维护性。 其他说明:文中提供了丰富的代码片段和技术细节,帮助读者更好地理解和掌握LabVIEW框架的设计思路。同时强调了框架设计中的关键技术和最佳实践,如生产者/消费者模式、错误处理机制等。

Global site tag (gtag.js) - Google Analytics