tag 标签: 基于

相关资源
  • 所需E币: 5
    时间: 2024-3-1 10:27
    大小: 14.03MB
    上传者: htwdb
    煤炭资源是我国的重要资源,煤矿安全是获取煤炭资源的重要前提和保证。影响我国煤矿安全生产的主要因素是人员的安全问题,矿井井口作为人员出入井下的唯一通道,需要对人员身份进行有效识别验证,因此对矿井人员识别技术进行研究,保证人员的安全有效管理是矿井生产安全的保障,具有研究价值和现实意义。  本文以矿井井口为研究对象,主要研究内容如下:  (1)在总结分析人脸识别技术和矿井人员识别系统国内外研究现状的基础上,对矿井特殊工况环境下人员识别特点、特征识别方法和识别技术问题进行分析研究,确定了系统的研究脉络与研究难点;  (2)针对矿井复杂环境人脸易受煤灰干扰等特点,利用CLAHE与伽马校正相结合的方法增强图像对比度,强化图像特征:  (3)采用优化MTCNN网络实现对矿井复杂工况环境下的人脸检测;为提高人脸识别性能,通过对ResNet网络的实验研究对比,选定并建立LF-ResNet特征网络对矿井人脸图像进行识别;  (4)根据门禁系统功能需求设计了矿井人员识别系统,利用C++语言搭建了门禁系统的上位界面,使用MySQL数据库完成相关数据表的设计,实现对矿井井口人员的身份验证。  本文通过对矿井人脸识别技术和矿井人员识别系统的研究,可实现对矿井出入井口人员的高效检测与稳定识别,能够对矿井人员的安全管理技术进行完善与补充,在一定程度上保证了矿井的安全生产,具有一定的理论研究和工程应用价值
  • 所需E币: 5
    时间: 2024-3-1 10:55
    大小: 14.02MB
    上传者: htwdb
        在实验室的环境下,针对挥发性有机化合物(VOC)气体的检测方法有采气袋法、低压气化法等,这些方法采集时间长且容易有残留导致实验数据不准确。本文采用加热蒸发的方法,挥发性有机化合物在高温的环境下能快速挥发并扩散到整个实验装置,从而解决其挥发慢、挥发不完全、气体浓度不均匀等问题。使用对VOC检测较为精确的半导体气体传感器阵列,提高检测的精确度。同时气体实验装置体积固定,可以通入标准气体对传感器进行标定和校准,为传感器性能检测提供了方法和途径。本文设计并制作了一套完整的数据采集系统,主要分为气体实验装置、硬件电路以及上位机三个主要部分。气体实验装置部分通过CAD设计,使用有机玻璃制作,内部包含蒸发器平台、传感器接口平台等,用于气体的收集和数据的采集。    硬件电路按照功能不同分为前端电路和后端电路,主要作用是将采集到的模拟信号转换为数字信号上传上位机识别和接收。前端电路主要包含传感器加热降压稳压电路、供电电路、R-V转换电路,针对半导体气体传感器阵列设计接口电路和检测电路,负责采集传感器输出的模拟信号,通过R-V转换电路将传感器的电阻信号转换成电压信号并输出;后端电路主要以AD7606和STM32F103为核心,将模拟信号转换为数字信号,通过串口通信电路将数据传送给上位机处理。上位机部分以C++语言进行开发,使用VisualStudio开发平台下的MFC框架,主要实现数据实时采集、显示和存储。同时还设计了实时曲线显示、传感器灵敏度计算、响应恢复时间计算、标准VOC气体浓度对应的液体体积计算等功能,将采集的数据以及传感器的性能指标反馈给用户。   本数据采集系统针对实验室环境实现了半导体气体传感器对有机化合物的挥发气体浓度的检测;实现了配置不同浓度的标准气体后对传感器进行校准和性能检测。
  • 所需E币: 5
    时间: 2024-3-1 11:13
    大小: 3.76MB
    上传者: htwdb
       计算机网络技术的发展影响并改善着人们的工作及生活方式,大多数的数据通过网络进行传输,但在一些特殊环境、恶劣环境下可能不适合有有线网络,甚至不能通过拍摄的方式采集图像信息,必须通过图像传感器采集图像,无线传输到上位机,最终实现对图像的分析和处理。传输的方式有多种,比如蓝牙,其缺点是传输速率过慢、效率太低,不利于精准的环境的监测;或者用WiFi组网,其缺点是成本太大。本文提出基于ZigBee网络的图像传输系统,准确、经济的将图像数据传输到上位机,为特殊环境的监测和图片的采集提供基础。    基于ZigBee网络的无线传感器传输图像系统,系统结构由上位机和下位机两部分组成。下位机包括图像的采集及转换处理,OV7670图像传感器采集图像数据并传送到STM32单片机,一片CC2530作为采集节点设备,收集来自STM32单片机中的图像数据,另一片CC2530作为协调器与上位机进行连接。两片CC2530模块采用自组网方式,由协调器创建网络,终端设备最后加入网络之中。这样采集的图像数据就从图像传感器传送到了协调器,协调器将图像信息再通过串口发送给上位机,在上位机可以看到协调器传输的数据,并且将图像数据进行保存。最后再对收到的图片进行增强处理,得出清晰,对比度高的图片,解决了传输过程中丢包的现象。   下位机使用C语言编写程序,上位机选用C#语言编写通信界面。组网通信部分安装编译环境IAREmbeddedWorkbenchforMCS-517.51A,编写Z-Stack协议完成组网设计,实现无线传输数据。为了解决图像在传输过程中出现的对比度较差以及传输过程中丢包的问题,研究了图像增强算法,并使用Matlab2018编写脚本程序实现。该系统的研究使得一些数据和图像在医疗领域,工业领域以及极端条件下可以稳定传输,并且可靠性良好,保证了设备的正常运行,减轻了工作人员的负担。为组建以ZigBee技术为核心的传感器网络提供了基础,具有一定的社会和经济价值。
  • 所需E币: 5
    时间: 2024-3-1 11:21
    大小: 3.8MB
    上传者: htwdb
    本文系统主要由三部分组成:数据采集、FPGA+ARM控制、上位机软件。数据采集部分包括电压电流信号调理电路、AD7606模数转换电路。数据处理模块基于ARM+FPGA双核心架构,通过FPGA控制,达到对电网三相电压、电流信号的同步采样,完成三相锁相环算法对频率进行同步跟踪,对电流信号的谐波分析采用深度为256的快速傅立叶变换,FPGA与ARM之间利用FSMC进行通信。在STM32上移植嵌入式实时操作系统FreeRTOS来进行任务调度,管理各种外设并进行数据计算和处理,通过串口通信将电能质量各项参数传输至数据分析软件。上位机软件是用C#语言在MicrosoftVisualStudio2013上完成,实现了电能质量指标和波形的显示。  最后使用信号发生器进行系统测试,利用代表性输入信号,测试系统的测量精度。测试结果表明本系统达到了电能质量分析的基本要求,具有应用价值。
  • 所需E币: 5
    时间: 2024-3-1 13:32
    大小: 5.61MB
    上传者: htwdb
    本文提出了一种基于深度学习的C语言代码缺陷定位方法。该方法不同于以往的利用缺陷报告或者以缺陷代码形成训练库的代码缺陷定位方法,而是基于OJ系统存在的大量正确代码形成检测模板,即将大量正确的代码作为训练数据通过深度学习技术进行训练构建代码模板库,通过找出与提交代码最相似的模扳代码,对缺陷代码进行缺陷定位。具体地,该方法将C语言代码表示为抽象语法树(AST)的形式,并对AST进行子树拆分,使用Word2vec词嵌入技术对代码进行编码,输入神经网络模型进行特征提取,构建代码模板库;在检测阶段将缺陷代码与代码模板库中的代码进行相似度计算,找出最相似的模板代码,通过逐句地词法分析找出缺陷语句,从而实现C语言代码的缺陷定位。通过对两个数据集以及相应测试集的构建来进行方法的有效性验证,结果表明本文的方法具有较好的缺陷定位效果。     其次,本文探索了该方法在C语言课程教学实验系统的应用,通过在实验代码提交页面添加“错误提示”功能,对代码的逻辑缺陷进行检测井反馈给学生,帮助学生更快地发现代码中可能存在的缺陷语句。最后,本文给出了针对该功能的可用性测试、性能测试、以及安全性测试结果,证明该方法在实际系统中的有效性
  • 所需E币: 1
    时间: 2024-2-27 21:10
    大小: 12.75MB
    上传者: zhusx123
    RT-Thread内核实现与应用开发实战—基于STM32
  • 所需E币: 5
    时间: 2024-1-25 15:24
    大小: 4.94MB
    上传者: 丙丁先生
    基于CW32实时时钟DS1302应用源码.zip
  • 所需E币: 5
    时间: 2024-1-25 15:24
    大小: 591.82KB
    上传者: 丙丁先生
    基于CW32的物联网应用源码.zip
  • 所需E币: 5
    时间: 2024-1-25 15:27
    大小: 590.74KB
    上传者: 丙丁先生
    基于CW32的RC522刷卡模块的应用源码.zip
  • 所需E币: 5
    时间: 2024-1-25 15:26
    大小: 5.79MB
    上传者: 丙丁先生
    基于CW32的超声波模块的应用源码.zip
  • 所需E币: 5
    时间: 2024-1-25 15:33
    大小: 5.37MB
    上传者: 丙丁先生
    基于CW32的L9110风扇模块的应用源码.zip
  • 所需E币: 5
    时间: 2024-1-25 15:30
    大小: 1.17MB
    上传者: 丙丁先生
    基于CW32的MPU6050姿态传感器的应用源码.zip
  • 所需E币: 5
    时间: 2024-1-25 15:35
    大小: 7.08MB
    上传者: 丙丁先生
    基于CW32的GY-33颜色识别模块的应用.zip
  • 所需E币: 5
    时间: 2024-1-25 15:47
    大小: 639.83KB
    上传者: 丙丁先生
    (终版)基于CW32的智能家居系统源码.zip
  • 所需E币: 5
    时间: 2024-1-25 15:29
    大小: 6MB
    上传者: 丙丁先生
    基于CW32的PID温度控制系统源码.zip
  • 所需E币: 5
    时间: 2024-1-25 15:31
    大小: 579.01KB
    上传者: 丙丁先生
    基于CW32的MAX4466麦克风模块的应用源码.zip
  • 所需E币: 5
    时间: 2024-1-25 15:36
    大小: 8.07MB
    上传者: 丙丁先生
    基于CW32的AS608指纹模块的应用模块资料与源码.zip
  • 所需E币: 0
    时间: 2024-1-5 14:07
    大小: 3.13KB
    Django是一个由Python编写的一个开放源代码的Web应用框架。Django是一个高级的PythonWeb框架,用于快速开发可维护和可扩展的Web应用程序。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。第一步,安装PythonWindows下安装Python非常简单,去Python官方网站找到Python3的下载地址,根据你的系统选择32位或者64位的安装包,下载好后双击安装即可。第二步,安装django强烈推荐在虚拟环境下进行django的开发。虚拟环境是一种Python工具,使用它可以创建一个独立的Python环境第三步,virtualenv创建和管理虚拟环境virtualenv的使用非常简单,首先安装virtualenv,打开命令行工具,输入下面的命令即可安装第四步,Django框架的View视图展示机制Django框架采用了MTV设计模式,在工作机制上自然也有些特别之处,其中最显著的就是V视图(View)部分。请读者再看一下图2中的描述,MTV模式中的V视图(View)是不负责处理用户输入的,这一点就是MTV模式特殊之处。第五步,Django框架的用户操作流程Django框架设计的MTV模式也是基于传统的MVC模式的,本质上也是为了各组件之间保持松耦合关系,只是定义上有些许不同。MVC模式之所以能够成为Web框架最流行的设计标准,也是因为其比较完美地契合了用户的操作流程。MVC模式是软件工程中的一种通用的软件架构模式,同样也适用于Web应用程序。MVC将Web框架分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),并以一种插件式的、松耦合的方式连接在一起。第六步,Django框架的主要特点这里给大家介绍Django框架的主要特点,其他一些小优点,读者在学习过程中会慢慢体会:基于Python语言及MVC模式,具有开发快捷、低耦合、部署方便、可重用性高和维护成本低等显著特点。通过一个URL分发器模块进行URL分派,分发器使用正则表达式来匹配URL,支持开发人员采用自定义URL方式,且没有框架的特定限定,使用起来非常灵活。可以方便地生成各种表单模型,实现表单的有效性检验,且支持从自定义的模型实例生成相应的表单。具有强大且可扩展的模板语言,支持分隔设计、内容和Python代码,并且具有可继承性。以Python类的形式定义数据模型,通过ORM(对象关系映射)将模型与关系数据库进行连接,开发人员将得到一个非常容易使用的数据库API,同时也支持在Django框架中直接使用原始SQL语句。内置国际化系统,支持开发多种语言的Web网站。缓存系统采用与memcached、Redis等缓存系统联用的方式,提高了页面的加载速度。内置了一个可视化的、自动化管理员界面(AdminSite),其类似于一个CMS系统(内容管理系统),开发人员可以方便快捷地通过该界面进行人员管理和内容更新等操作。第七步,创建Django项目安装了Django之后,我们就可以使用Django的管理工具------>django-admin了我们创建一个名称为loginweb的Django项目,命令如下:#1激活虚拟环境cdD:\djangotestdjangoenv\Scripts\activate#2创建一个loginweb的项目django-adminstartprojectloginweb或者python-mdjangostartprojectloginweb一般一个项目包含多个app应用程序(当然,通用的app也可以在多个项目中使用)下面我们为loginweb项目,创建login#1激活虚拟环境cdD:\djangotestdjangoenv\Scripts\activate#2切到django项目中cdloginweb#3创建一个叫login的应用django-adminstartapplogin在com.example.emos.wx.config.shiro中创建ThreadLocalToken类。packagecom.example.emos.wx.config.shiro;importorg.springframework.stereotype.Component;@ComponentpublicclassThreadLocalToken{  privateThreadLocallocal=newThreadLocal();  publicvoidsetToken(Stringtoken){    local.set(token);  }  publicStringgetToken(){    return(String)local.get();  }  publicvoidclear(){    local.remove();  }}之前我们测试sayHello()方法的时候,因为客户端提交的参数不正确,所以后端系统向客户端返回了大量的异常内容。这里我们要对返回的异常内容做一下精简。在com.example.emos.wx.config中,创建ExceptionAdvice类。packagecom.example.emos.wx.config;importcom.example.emos.wx.exception.EmosException;importlombok.extern.slf4j.Slf4j;importorg.springframework.http.HttpStatus;importorg.springframework.web.bind.MethodArgumentNotValidException;importorg.springframework.web.bind.annotation.ExceptionHandler;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.web.bind.annotation.ResponseStatus;importorg.springframework.web.bind.annotation.RestControllerAdvice;@Slf4j@RestControllerAdvicepublicclassExceptionAdvice{  @ResponseBody  @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)  @ExceptionHandler(Exception.class)  publicStringvalidExceptionHandler(Exceptione){    log.error("执行异常",e);    if(einstanceofMethodArgumentNotValidException){      MethodArgumentNotValidExceptionexception=(MethodArgumentNotValidException)e;      //将错误信息返回给前台      returnexception.getBindingResult().getFieldError().getDefaultMessage();    }    elseif(einstanceofEmosException){      EmosExceptionexception=(EmosException)e;      returnexception.getMsg();    }    elseif(einstanceofUnauthorizedException){      return"你不具有相关权限";    }    else{      return"后端执行异常";    }  }}本文到处结束,感谢大家的阅读,有不足的地方大家多多指正!!
  • 所需E币: 0
    时间: 2023-12-25 10:31
    大小: 2.57KB
    上传者: 开心就很好了
    今天我将给大家讲解基于C++的Linux高性能事件驱动网络编程框架的设计方法及技巧,我在文中采取渐进迭代的方式,配合C++11新特性的使用,以及网络编程理论的深度讲解,并手把手带着大家落地实现,助力在网络编程领域有更大的技术提升!Linux系统的性能是指操作系统完成任务的有效性、稳定性和响应速度。Linux系统管理员可能经常会遇到系统不稳定、响应速度慢等问题,例如在Linux上搭建了一个web服务,经常出现网页无法打开、打开速度慢等现象,而遇到这些问题,就有人会抱怨Linux系统不好,其实这些都是表面现象。Linux提供三个「点分十进制字符串表示的IPv4地址和用网络字节序整数表示的IPv4地址之间转换」的接口 publicGraceJSONResultdoLogin(HttpServletRequestrequest,                  HttpServletResponseresponse,                  RegisterLoginBOregisterLoginBO,                  BindingResultresult){  //判断BindingResult是否保存错误的验证信息,如果有,则直接return  if(result.hasErrors()){    Map<String,String>errorMap=getErrors(result);    returnGraceJSONResult.errorMap(errorMap);  }  //获得前端传来的基本信息  StringsmsCode=registerLoginBO.getSmsCode();  Stringmobile=registerLoginBO.getMobile();  //0.校验验证码是否匹配  StringredisSMSCode=redis.get(MOBILE_SMSCODE+mobile);  if(StringUtils.isBlank(redisSMSCode)||!redisSMSCode.equalsIgnoreCase(smsCode)){    returnGraceJSONResult.errorCustom(ResponseStatusEnum.SMS_CODE_ERROR);  }  returnGraceJSONResult.ok();}用户信息其实并不会经常发生变动,所以这块内容完全可以放入缓存,这么一来可以大大减少对数据库的压力。privateAppUsergetUser(StringuserId){  //1.查询redis中是否包含用户信息,如果包含则查询redis返回,如果不包含则查询数据库  StringuserJson=redis.get(REDIS_USER_INFO+":"+userId);  AppUseruser=null;  if(StringUtils.isNotBlank(userJson)){    user=JsonUtils.jsonToPojo(userJson,AppUser.class);  }else{    user=userService.getUser(userId);    //2.由于用户信息不怎么会变动,对于千万级别的网站,这类信息数据不会去查询数据库,完全可以把用户信息存入redis    //哪怕修改信息,也不会立马体现,这也是弱一致性,在这里有过期时间,比如1天以后,用户信息会更新到页面显示,或者缩短到1小时,都可以    //基本信息在新闻媒体类网站是属于数据一致性优先级比较低的,用户眼里看的主要以文章为主,至于文章是谁发的,一般来说不会过多关注    redis.set(REDIS_USER_INFO+":"+userId,JsonUtils.objectToJson(user),1);  }  returnuser;}虽然在表设计的时候把文章阅读数字段进行了设计,但是在大数据量下,文章阅读的累计并发是很高的,在这里我们也是采用redis的计数功能来进行实现。@OverridepublicGraceJSONResultlist(StringarticleId,Integerpage,IntegerpageSize){  if(page==null){    page=COMMON_START_PAGE;  }  if(pageSize==null){    pageSize=COMMON_PAGE_SIZE;  }  PagedGridResultgridResult=         commentPortalService.queryArticleComments(articleId,                           page,                           pageSize);  returnGraceJSONResult.ok(gridResult);}生成html的步骤分为以下几步:定义freemarker生成的html位置配置freemarker基本环境获得ftl模板获得动态数据融合ftl和动态数据,并输出到html@Value("${freemarker.html.target}")privateStringhtmlTarget;@GetMapping("/createHTML")@ResponseBodypublicStringcreateHTML(Modelmodel)throwsException{  //0.配置freemarker基本环境  Configurationcfg=newConfiguration(Configuration.getVersion());  //声明freemarker模板所需要加载的目录的位置  Stringclasspath=this.getClass().getResource("/").getPath();  cfg.setDirectoryForTemplateLoading(newFile(classpath+"templates"));//    System.out.println(htmlTarget);//    System.out.println(classpath+"templates");  //1.获得现有的模板ftl文件  Templatetemplate=cfg.getTemplate("stu.ftl","utf-8");  //2.获得动态数据  Stringstranger=;  model.addAttribute("there",stranger);  model=makeModel(model);  //3.融合动态数据和ftl,生成html  FiletempDic=newFile(htmlTarget);  if(!tempDic.exists()){    tempDic.mkdirs();  }  Writerout=newFileWriter(htmlTarget+File.separator+"10010"+".html");  template.process(model,out);  out.close();  return"ok";}
  • 所需E币: 0
    时间: 2023-12-25 11:06
    大小: 3.48KB
    LinuxSocket网络编程框架主要由3大模块组成:BSDSocketAPIsSocketAbstractionLayerVFSLayerTCP/IP协议在设计和实现上并没有客户端和服务器的概念,在通信过程中所有机器都是对等的。但由于资源(视频、新闻、软件等)都被数据提供者所垄断,所以几乎所有的网络应用程序都很自然地用了客户端/服务器模型,即所有客户端都通过访问服务器来获取所需的资源。BS和CS服务器架构(1)CS架构介绍(clientserver,客户端服务器架构)(2)BS架构介绍(broswerserver,浏览器服务器架构)TCP协议(1)建立连接需要三次握手(2)建立连接的条件:服务器listen时客户端主动发起connect(3)关闭连接需要四次握手(4)服务器或者客户端都可以主动发起关闭packagecom.example.emos.wx.controller.form;importio.swagger.annotations.ApiModel;importlombok.Data;importjavax.validation.constraints.NotBlank;importjavax.validation.constraints.Pattern;@Data@ApiModelpublicclassRegisterForm{  @NotBlank(message="注册码不能为空")  @Pattern(regexp="^[0-9]{6}$",message="注册码必须是6位数字")  privateStringregisterCode;  @NotBlank(message="微信临时授权不能为空")  privateStringcode;  @NotBlank(message="昵称不能为空")  privateStringnickname;  @NotBlank(message="头像不能为空")  privateStringphoto;}在UserController.java中创建login()方法。@PostMapping("/login")@ApiOperation("登陆系统")publicRlogin(@Valid@RequestBodyLoginFormform){intid=userService.login(form.getCode());  Stringtoken=jwtUtil.createToken(id);  Set<String>permsSet=userService.searchUserPermissions(id);  saveCacheToken(token,id);  returnR.ok("登陆成功").put("token",token).put("permission",permsSet);}在CheckinServiceImpl类中,实现抽象方法……publicclassCheckinServiceImplimplementsCheckinService{……publicvoidcreateFaceModel(intuserId,Stringpath){    HttpRequestrequest=HttpUtil.createPost(createFaceModelUrl);    request.form("photo",FileUtil.file(path));    HttpResponseresponse=request.execute();    Stringbody=response.body();    if("无法识别出人脸".equals(body)||"照片中存在多张人脸".equals(body)){      thrownewEmosException(body);    }else{      TbFaceModelentity=newTbFaceModel();      entity.setUserId(userId);      entity.setFaceModel(body);      faceModelDao.insert(entity);    }  }}在CheckinServiceImpl.java类中,实现三个抽象方法。publicclassCheckinServiceImplimplementsCheckinService{……@Override  publicHashMapsearchTodayCheckin(intuserId){    HashMapmap=checkinDao.searchTodayCheckin(userId);    returnmap;  }  @Override  publiclongsearchCheckinDays(intuserId){    longdays=checkinDao.searchCheckinDays(userId);    returndays;  }  @Override  publicArrayList<HashMap>searchWeekCheckin(HashMapparam){    ArrayList<HashMap>checkinList=checkinDao.searchWeekCheckin(param);    ArrayList<String>holidaysList=holidaysDao.searchHolidaysInRange(param);    ArrayList<String>workdayList=workdayDao.searchWorkdayInRange(param);    DateTimestartDate=DateUtil.parseDate(param.get("startDate").toString());    DateTimeendDate=DateUtil.parseDate(param.get("endDate").toString());    DateRangerange=DateUtil.range(startDate,endDate,DateField.DAY_OF_MONTH);    ArrayListlist=newArrayList();    range.forEach(one->{      Stringdate=one.toString("yyyy-MM-dd");      //查看今天是不是假期或者工作日      Stringtype="工作日";      if(one.isWeekend()){        type="节假日";      }      if(holidaysList!=null&&holidaysList.contains(date)){        type="节假日";      }elseif(workdayList!=null&&workdayList.contains(date)){        type="工作日";      }      Stringstatus="";      if(type.equals("工作日")&&DateUtil.compare(one,DateUtil.date())<=0){        status="缺勤";booleanflag=false;        for(HashMap<String,String>map:checkinList){          if(map.containsValue(date)){            status=map.get("status");flag=true;            break;          }        }DateTimeendTime=DateUtil.parse(DateUtil.today()+""+constants.attendanceEndTime);Stringtoday=DateUtil.today();if(date.equals(today)&&DateUtil.date().isBefore(endTime)&&flag==false){          status="";        }      }      HashMapmap=newHashMap();      map.put("date",date);      map.put("status",status);      map.put("type",type);      map.put("day",one.dayOfWeekEnum().toChinese("周"));      list.add(map);    });    returnlist;  }}在EmosWxApiApplicationTests.java类中提供了contextLoads()测试用例方法,我们把生成大量系统消息记录的代码写在其中,程序运行的时候这些消息记录就会写入到MongoDB里面。@SpringBootTestclassEmosWxApiApplicationTests{  @Autowired  privateMessageServicemessageService;  @Test  voidcontextLoads(){    for(inti=1;i<=100;i++){      MessageEntitymessage=newMessageEntity();      message.setUuid(IdUtil.simpleUUID());      message.setSenderId(0);      message.setSenderName("系统消息");      message.setMsg("这是第"+i+"条测试消息");      message.setSendTime(newDate());      Stringid=messageService.insertMessage(message);      MessageRefEntityref=newMessageRefEntity();      ref.setMessageId(id);      ref.setReceiverId(11);//注意:这是接收人ID      ref.setLastFlag(true);      ref.setReadFlag(false);      messageService.insertRef(ref);    }  }}在该页面的模型层里面声明静态数据。list数组保存的是后端Java返回的成员数据,内容上按照部门进行分组。members数组保存的是页面上选择的成员id。#include<stdio.h>#include<sys/socket.h>#include<sys/types.h>#include<stdlib.h>#include<arpa/inet.h>#include<unistd.h>#include<string.h> #defineBACKLOG5 intmain(intargc,char*argv[]){  intfd;  structsockaddr_inaddr;  charbuf[BUFSIZ]={};   if(argc<3){    fprintf(stderr,"%s<addr><port>\n",argv[0]);    exit(0);  }   /*创建套接字*/  fd=socket(AF_INET,SOCK_STREAM,0);  if(fd<0){    perror("socket");    exit(0);  }   addr.sin_family=AF_INET;  addr.sin_port=htons(atoi(argv[2]));  if(inet_aton(argv[1],&addr.sin_addr)==0){    fprintf(stderr,"Invalidaddress\n");    exit(EXIT_FAILURE);  }   /*向服务端发起连接请求*/  if(connect(fd,(structsockaddr*)&addr,sizeof(addr))==-1){    perror("connect");    exit(0);  }  while(1){    printf("Input->");    fgets(buf,BUFSIZ,stdin);    write(fd,buf,strlen(buf));  }  close(fd);  return0;}