电商网站开发语言/运营推广计划怎么写
设计模式之装饰模式
使用装饰模式来封装Nmea0183语句。
- 代码
#ifndef DATAPARSER_H
#define DATAPARSER_H#include <string>
#include <vector>class DataParser
{
public:DataParser();virtual std::string fieldAnalysis(std::vector<std::string> vecStr) = 0;
};#endif // DATAPARSER_H#include "dataparser.h"DataParser::DataParser()
{}
#ifndef NMEAHANDLE_H
#define NMEAHANDLE_H
#include "dataparser.h"class NmeaHandle : public DataParser
{
public:NmeaHandle();std::string fieldAnalysis(std::vector<std::string> vecStr) override;
};#endif // NMEAHANDLE_H#include "nmeahandle.h"NmeaHandle::NmeaHandle()
{}std::string NmeaHandle::fieldAnalysis(std::vector<std::string> vecStr)
{std::string stmt = "";if(vecStr.size() > 0){unsigned int i = 0;for(const auto& item : vecStr){stmt += item;if(i == (vecStr.size() - 1)){stmt += "*";}else{stmt += ",";}i++;}}return stmt;
}
#ifndef NMEADECORATOR_H
#define NMEADECORATOR_H
#include "dataparser.h"class NmeaDecorator : public DataParser
{
public:NmeaDecorator(DataParser* dp);std::string calcChecksum(const std::string& sentence);protected:DataParser* m_dataParser;
};#endif // NMEADECORATOR_H#include "nmeadecorator.h"
#include <sstream>
#include <iomanip>NmeaDecorator::NmeaDecorator(DataParser* dp) : m_dataParser(dp)
{}std::string NmeaDecorator::calcChecksum(const std::string &sentence)
{int checksum = 0;for (char c : sentence) {if (c == '$') {continue;} else if (c == '*') {break;}checksum ^= static_cast<int>(c);}std::stringstream ss;ss << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << checksum;return ss.str();
}
#ifndef ZDA_STATEMENT_H
#define ZDA_STATEMENT_H
#include "nmeadecorator.h"class ZDA_Statement : public NmeaDecorator
{
public:ZDA_Statement(DataParser* dp);std::string fieldAnalysis(std::vector<std::string> vecStr) override;
};#endif // GPS_STATEMENT_H#include "zda_statement.h"ZDA_Statement::ZDA_Statement(DataParser* dp) : NmeaDecorator(dp)
{}std::string ZDA_Statement::fieldAnalysis(std::vector<std::string> vecStr)
{std::string stmt = "$GPZDA,";stmt += m_dataParser->fieldAnalysis(vecStr);stmt += calcChecksum(stmt);stmt += "\r\n";return stmt;
}
#ifndef GGA_STATEMENT_H
#define GGA_STATEMENT_H
#include "nmeadecorator.h"class GGA_Statement : public NmeaDecorator
{
public:GGA_Statement(DataParser* dp);std::string fieldAnalysis(std::vector<std::string> vecStr) override;
};#endif // GGA_STATEMENT_H#include "gga_statement.h"GGA_Statement::GGA_Statement(DataParser* dp) : NmeaDecorator(dp)
{}std::string GGA_Statement::fieldAnalysis(std::vector<std::string> vecStr)
{std::string stmt = "$GPGGZ,";stmt += m_dataParser->fieldAnalysis(vecStr);stmt += calcChecksum(stmt);stmt += "\r\n";return stmt;
}
#include <iostream>
#include "nmeahandle.h"
#include "gga_statement.h"
#include "zda_statement.h"
using namespace std;int main()
{std::vector<std::string> vecStr;vecStr.push_back("110");vecStr.push_back("108");NmeaHandle nmeaHandle;cout << nmeaHandle.fieldAnalysis(vecStr) << endl;std::vector<std::string> vecZDAStr;vecZDAStr.push_back("202711.56");vecZDAStr.push_back("25");vecZDAStr.push_back("12");vecZDAStr.push_back("2023");vecZDAStr.push_back("00");vecZDAStr.push_back("00");ZDA_Statement zdaStmt(&nmeaHandle);cout << zdaStmt.fieldAnalysis(vecZDAStr) << endl;std::vector<std::string> vecGGAStr;vecGGAStr.push_back("202711.56");vecGGAStr.push_back("1111.22");vecGGAStr.push_back("N");vecGGAStr.push_back("123.22");vecGGAStr.push_back("E");vecGGAStr.push_back("1");vecGGAStr.push_back("3");vecGGAStr.push_back("8.8");vecGGAStr.push_back("100");vecGGAStr.push_back("M");vecGGAStr.push_back("0.0");vecGGAStr.push_back("M");vecGGAStr.push_back("0.0");vecGGAStr.push_back("6");GGA_Statement ggaStmt(&nmeaHandle);cout << ggaStmt.fieldAnalysis(vecGGAStr) << endl;return 0;
}
相关文章:

Design patterns--装饰模式
设计模式之装饰模式 使用装饰模式来封装Nmea0183语句。 代码 #ifndef DATAPARSER_H #define DATAPARSER_H#include <string> #include <vector>class DataParser { public:DataParser();virtual std::string fieldAnalysis(std::vector<std::string> vecSt…...

卷积神经网络 反向传播
误差的计算 softmax 经过softmax处理后所有输出节点概率和为1 损失(激活函数) 多分类问题:输出只可能归于某一个类别,不可能同时归于多个类别。 误差的反向传播 求w的误差梯度 权值的更新...

java面试题20
Java中的类加载机制可继续通过自定义类加载器来实现热部署、插件化和动态加载等功能,使得应用程序能够在运行时加载未知的类和资源。 什么是Java中的多线程(Multithreading)?它有什么作用? 答案:多线程是一…...

【Java面试题】redis的过期策略有哪些
redis通过设置过期时间来控制键值对的存活时长,过期时间可以通过expire , pexpire expireat , pexpireat 等命令设置,String 类型数据可以通过setex命令设置过期时间。 以下介绍三种redis的过期策略: 1. 定时删除 在设置键值对的过期时…...

for参数 命令语句 变量
for 参数f skip命令语句 命令说明: 跳过文本内容(行):skip 例子: for /f "skip1" %%i in(2.txt) do echo %%i for 参数f eol命令语句 命令说明: 怱略指定字符的文本内容(文本首部…...

CentOS 8的新特性
CentOS 8在2019年发布,带来了比CentOS 7更多的新特性和改进。以下是一些主要的变化和优化: 软件包更新:CentOS 8提供了更新的软件包和程序,包括但不限于Python 3、MySQL 8、PHP 7.2、Ruby 2.5、PostgreSQL 10等。 应用流…...

vue2、vue3状态管理之vuex、pinia
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、状态管理之vuex1.1 State调用:1.2 Mutation在vuex中定义:在组件中使用: 1.3 Action在vuex中定义:将上面的减…...

axios进行图片上传组件封装
文章目录 前言图片上传接口(axios通信)图片上传使用upload上传头像效果展示总结 前言 node项目使用 axios 库进行简单文件上传的模块封装。 图片上传接口(axios通信) 新建upload.js文件,定义一个函数,该函数接受一个上传路径和一…...

2312llvm,用匹配器构建clang工具
原文 用LibTooling和LibASTMatchers构建工具 这里展示如何基于Clang的LibTooling构建有用的源到源翻译工具.基础 步骤0:取Clang 因为Clang是LLVM项目的一部分,因此你需要先下载LLVM的源码.Clang和LLVM都在同一个git仓库中,在不同的目录下.更多见入门指南. cd ~/clang-llvm…...

12.26ARM作业
三个按键中断,控制对应灯亮灭 main.c #include "key_it.h"void delay(int ms){int i,j;for(i0;i<ms;i){for(j0;j<2000;j);}}int main(){all_led_init();key1_it_config();key2_it_config();key3_it_config();while(1){printf("do main...\n&…...

Objectiv-C设计模式笔记
文章目录 通用知识点对象创建原型模式定义适用场景示例 工厂方法定义适用场景示例 抽象工厂定义适用场景示例 生成器模式定义适用场景示例 单例模式定义适用场景示例 接口适配适配器定义适用场景示例 桥接定义适用场景示例 外观模式定义适用场景示例 对象去耦中介者定义适用场景…...

AI安全综述
1、引言 AI安全这个话题,通常会引伸出来图像识别领域的对抗样本攻击。下面这张把“熊猫”变“猴子”的攻击样例应该都不陌生,包括很多照片/视频过人脸的演示也很多。 对抗样本的研究领域已经具备了一定的成熟性,有一系列的理论来论述对抗样本…...

计算机网络概述(下)——“计算机网络”
各位CSDN的uu们你们好呀,今天继续计算机网络概述的学习,下面,让我们一起进入计算机网络概述的世界吧!!! 计算机网络体系结构 数据传输流程 计算机网络性能指标 计算机网络体系结构 两个计算机系统必须高度…...

anaconda创建环境时安装默认的第三方库
感谢阅读 写作原因首先要有python解释器加入每次创建环境都需要的python库查看所有的默认安装库还原方法 写作原因 近期由于多个项目在多头并举,出现了每次安装环境都要重新打一遍指令的麻烦问题,出于节约时间从而提高工作效率的目的。我尝试了很多方法…...

STM32 cubeMX 光敏电阻AD转化实验
文章代码使用 HAL 库。 文章目录 前言一、光敏电阻介绍二、光敏电阻原理图解析三、ADC采样介绍1. 工作原理:2. ADC精度: 四、STM32 cubeMX配置ADC采样五、代码编写总结 前言 实验开发板:STM32F051K8。所需软件:keil5 ,…...

AutoSAR(基础入门篇)3.2-Autosar中RTE的Ports【S/R】与【C/S】
目录 一、RTE的Ports【S/R】 1、特征 1.1、扮演SWCs和BSW的交流途径 1.2、其他特征...

安装kafka
静态文件安装(单机) 解压到指定目录(解压到 /usr) tar -zxf kafka_2.11-2.2.0.tgz -C /usr/ 到指定的解压目录下 cd /usr/kafka_2.11-2.2.0/ 配置主机名 查看是否配置了HOSTNAME vim /etc/sysconfig/network 没有就新增 HOSTNA…...

[MySQL] MySQL 高级(进阶) SQL 语句
一、高效查询方式 1.1 指定指字段进行查看 事先准备好两张表 select 字段1,字段2 from 表名; 1.2 对字段进行去重查看 SELECT DISTINCT "字段" FROM "表名"; 1.3 where条件查询 SELECT "字段" FROM 表名" WHERE "条件…...

创建springboot项目
SpringBoot 就相当于不需要配置文件的SpringSpringMVC。 常用的框架和第三方库都已经配置好了。 maven安装配置 管理项目依赖库的 maven的安装教程网上有很多,这里简单记录一下。 官网下载maven后并解压。 在其目录下添加一个目录repository 然后在conf目录下…...

“双十一、二” 业务高峰如何扛住?韵达快递选择 TDengine
小 T 导读: 为了有效处理每日亿级的数据量,早在 2021 年,韵达就选择用 TDengine 替代了 MySQL,并在三台服务器上成功部署和上线了 TDengine 2.0 集群。如今,随着 TDengine 3.0 版本的逐渐成熟,韵达决定将现…...

STM32L432+LIS3DH【加速度传感器】:端侧AI
一、搜集芯片资料 1.LIS3DHTR:加速度传感器 查找链接: https://www.st.com/zh/mems-and-sensors/lis3dh.html 2. NUCLEO-L432KC:芯片 查找连接: https://www.st.com/zh/evaluation-tools/nucleo-l432kc.html#cad-resources 1.原理图 引…...

VCG Mesh刚性旋转(变换矩阵)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 旋转矩阵如果从线性空间的角度来看,它类似于一个投影过程。假设坐标 P ( x 1 , y 1 , z 1 ) P(x_1,y_1,z_1)...

R语言【base】——system.file() 在软件包等中查找文件的完整文件名。
Package base version 4.3.2 Parameters system.file(..., package "base", lib.loc NULL,mustWork FALSE) 参数【...】:字符向量,指定某个软件包中的子目录和文件。默认情况下,没有值则返回软件包的根目录。不支持通配符。 …...

HTML制作暴雨特效
🎀效果展示 🎀代码展示 <body> <!-- partial:index.partial.html --> <canvas id="canvas-club">...

cesium实现区域贴图及加载多个gif动图
1、cesium加载多个gif动图 Cesium的Billboard支持单帧纹理贴图,如果能够将gif动图进行解析,获得时间序列对应的每帧图片,然后按照时间序列动态更新Billboard的纹理,即可实现动图纹理效果。为此也找到了相对于好一点的第三方库libg…...

blackbox黑盒监控部署(k8s内)tensuns专用
一、前言 部署在k8s中需要用到deployment、configmap、service服务 二、部署 创建存放yaml的目录 mkdir /opt/blackbox-exporter && cd /opt/blackbox-exporter 编辑blackbox配置文件,使用configmap挂在这 vi configmap.yaml apiVersion: v1 kind: Confi…...

“C语言“——scanf()、getchar() 、putchar()、之间的关系
scanf函数说明 scanf函数是对来自于标准输入流的输入数据作格式转换,并将转换结果保存至format后面的实参所指向的对象。 而const char*format 指向的字符串为格式控制字符串,它指定了可输入的字符串以及赋值时转换方法。 简单来说给一个打印格式(输入…...

Spring Boot3 Web开发技术
前期回顾 springboot项目常见的配置文件类型有哪些?哪种类型的优先级最高 yml properties yaml 读取配置文件里的数据用什么注解? value restful风格 RESTful 风格与传统的 HTTP 请求方式相比,更加简洁,安全,能隐…...

学习笔记:数据挖掘与机器学习
文章目录 一、数据挖掘、机器学习、深度学习的区别(一)数据挖掘(二)机器学习(三)深度学习(四)总结 二、数据挖掘体系三、数据挖掘的流程四、典型的数据挖掘系统 一、数据挖掘、机器学…...

highcharts的甘特图设置滚动时表头固定,让其他内容跟随滚动
效果图:最左侧的分类列是跟随甘特图滚动的,因为这一列如果需要自定义,比如表格的话可能会存在行合并的情况,这个时候甘特图是没有办法做的,然后甘特图的表头又需要做滚动时固定,所以设置了甘特图滚动时&…...