info

ROS:从入门到放弃(三) 发布接收不同类型消息1

僤鯓⒐⒋嵵緔 提交于 2020-01-21 06:32:45
发布接收int类型消息 第一篇文章我们发布接收了string类型的消息.我们提到在ROS里发布的消息必须是在ROS中定义了的.就是如果你要发布一个string类型的消息,你不能直接发布一个std::string,你得发布一个std_msgs::String类型的消息.后者在ROS中才有定义.那么发布其他类型的消息我该怎么办呢?比如现在如果我想发布一个int8类型的消息,Int8是8位整型的消息,范围从-128到127.可以想象,代码在很大程度上应该和发布string类型的代码相似.咱们先直接贴上代码,然后来找不同.首先打开一个terminal.输入下面内容 cd ~ / catkin_ws / src / pub_sub_test / src touch pub_int8 . cpp touch sub_int8 . cpp 咱们创建了用来发布8位整型message的发布程序和接收程序.接着,打开pub_int8.cpp,把下面的代码粘贴进去,保存再退出. # include "ros/ros.h" # include "std_msgs/Int8.h" //#include "std_msgs/String.h" # include <sstream> int main ( int argc , char * * argv ) { ros :: init ( argc ,

PAT (Advanced Level) 1016 Phone Bills

可紊 提交于 2020-01-21 00:24:03
题解 模拟。注意美元和美分的转换。如果一个人没有完整的消费记录什么都别输出 (呕~~) :)。 代码 #include<bits/stdc++.h> using namespace std; struct node { string time,flag,other_time; int cost_sec,cost_money; node(string b,string c) {time=b;flag=c;} }; struct info { string name,time,flag; info(string a,string b,string c) {name=a;time=b;flag=c;} bool operator < (const info &n) const {return time<n.time;} }; void modify(string start_time,string end_time,int &sec,int &money); int change_time(string s); int cal_money(int d,int h,int m); int w_time[30]; map<string,vector<node> > smapv; vector<info> info_v; int main() { int i,n; string name

理解Stream(一)——串行与终止操作

拜拜、爱过 提交于 2020-01-20 22:09:57
Java 8 stream特性是一个能快速降低开发人员工作量的语法糖,用起来很简单,用好了很难。这里就通过一系列的博客对几个常见的错误进行解释说明,并给出替代方法。这里先说明串行和终止操作。 首先,给出IBM官网给出的介绍,请仔细阅读。 https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/ 流的操作类型分为两种: Intermediate :一个流可以后面跟随零个或多个 intermediate 操作。其目的主要是打开流,做出某种程度的数据映射/过滤,然后返回一个新的流,交给下一个操作使用。 这类操作都是惰性化的(lazy),就是说,仅仅调用到这类方法,并没有真正开始流的遍历。 Terminal :一个流只能有一个 terminal 操作,当这个操作执行后,流就被使用“光”了,无法再被操作。所以这必定是流的最后一个操作。 Terminal 操作的执行,才会真正开始流的遍历,并且会生成一个结果,或者一个 side effect。 在对于一个 Stream 进行多次转换操作 (Intermediate 操作),每次都对 Stream 的每个元素进行转换,而且是执行多次,这样时间复杂度就是 N(转换次数)个 for 循环里把所有操作都做掉的总和吗?其实不是这样的,转换操作都是 lazy 的,多个转换操作只会在

tomcat中的日志开关文件(logging.properties)介绍

孤街浪徒 提交于 2020-01-20 21:26:48
以tomcat-6.0.29为例: http://www.ossez.com/thread-18138-1-1.html #配置tomcat的日志输出方式,这里表示文件输出和控制台输出 .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler catalina.org.apache.juli.FileHandler.level = FINE #日志级别 例: 1catalina.org.apache.juli.FileHandler.level = FINE #设置 catalina 日志的级别为: FINE 1catalina.org.apache.juli.FileHandler.level = OFF #禁用 catalina 日志的输出 1catalina.org.apache.juli.FileHandler.level = ALL#输出 catalina 所有的日志消息均输出 catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs #日志输出目录,此设置表示tomcat日志输出到tomcat\logs目录下 catalina.org.apache.juli

CI项目本地部署

孤人 提交于 2020-01-20 19:58:46
nginx 配置 server { listen 80; server_name www.xxx.cn wwwcdn.xxx.cn; allow all; autoindex off; root /export/manager/OL/xxx; index index.php index.html index.htm; location ~ \.php($|/) { fastcgi_pass main_backend; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } if (!-e $request_filename) { #这样可以在链接中去掉index.php rewrite ^/(.*)$ /index.php/$1 last; break; } location ~ /\.ht { deny all; } } 项目更改: 来源: https://www.cnblogs.com/bandbandme/p/12219130

区块链

一笑奈何 提交于 2020-01-20 14:34:47
介绍区块链,搭建私链,智能合约以及开发DAPP。 概念 用人类的语言讲什么是区块链、挖矿、智能合约 区块链公有链和私有链、联盟链、许可链 区块链主流开源技术体系介绍 什么是区块链 广义: 区块链是分布式数据存储,点对点传输,共识机制,加密算法等计算机技术的新型应用模式。 狭义: 区块链是数据库的一种,它拥有大量的记录,并将这些记录全部存放在区块内,每个区块通过加密签名,链接到下一个区块。人们可以像使用账本一样使用区块链,可以共享,也可以被拥有适当权限的人查阅,通俗的说,区块链其实就是公开的分布式账簿系统。 挖矿 区块链需要存储记录,那么为什么要帮别人免费存储?——奖励 即参与记录的机器,当对信息进行加密时,满足一定的条件时,就会得到一定的奖励。这个加密计算的过程,叫做挖矿。而运行计算的程序,称为矿机。 智能合约 一个智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。一个合约由一组代码(合约的函数)和数据(合约的状态)组成,通常运行在以太坊虚拟机上。当满足一定的条件时,自动履行并通知用户。 以太坊 目前最大的区块链开发者平台 视频学习: 尚硅谷_区块链以太坊核心技术 geth搭建以太坊私链 private-network 搭建以太坊私有链笔记 以太坊私有链搭建 一台电脑上部署多个节点。 安装go-ethereum # 下载代码 git

观察者模式实现方法

家住魔仙堡 提交于 2020-01-20 13:51:17
class Program { static void Main(string[] args) { BankAccount account = new BankAccount(); account.name = "aladdin"; account.money = 200; account.AddInfo(new Mobile()); account.AddInfo(new Email()); account.WithDraw(100); Console.Read(); } } abstract class ISubject { ArrayList arrs = new ArrayList(); public void AddInfo(IUpdate update) { this.arrs.Add(update); } public void Notify(string info) { //取完之后要通知各组件对象 foreach (IUpdate i in arrs) { i.Update(info); } } } //银行帐户 class BankAccount : ISubject { public string name; public int money; //取钱 public void WithDraw(int money) { this.money -= money

如何利用Serilog的RequestLogging来精简ASP.NET Core的日志输出

我是研究僧i 提交于 2020-01-20 09:30:56
这是该系列的第一篇文章:在ASP.NET Core 3.0中使用Serilog.AspNetCore。 第1部分-使用 Serilog RequestLogging 来简化ASP.NET Core的日志输出(本篇文章) 第2部分-使用Serilog记录所选的端点名称[敬请期待] 第3部分-使用Serilog.AspNetCore记录MVC属性[敬请期待] 作者:依乐祝 译文地址: https://www.cnblogs.com/yilezhu/p/12215934.html 原文地址: https://andrewlock.net/using-serilog-aspnetcore-in-asp-net-core-3-reducing-log-verbosity/ 众所周知,ASP.NET Core的重要改变之一是把日志记录内置于框架中。这意味着您可以(如果需要)从自己的标准日志基础设施访问所有深层基础设施日志。缺点是有时您会收到 太多 的日志。 在这个简短的系列文章中,我将介绍如何使用 Serilog的ASP.NET Core请求日志记录功能 。在第一篇文章中,我将讲述如何将Serilog的 RequestLoggingMiddleware 添加到您的应用程序,以及它提供的好处。在后续文章中,我将描述如何进一步自定义行为。 我已经将这些帖子草拟了一段时间。从那时起,

logback-spring.xml 配置文件

安稳与你 提交于 2020-01-20 06:58:02
<?xml version="1.0" encoding="UTF-8"?> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 --> <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true --> <!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 --> <property name="APP_NAME" value="app" /> <!-- 上下文名称 --> <contextName>${APP_NAME}</contextName> <!-- 项目路径如下:D:

Python编程:从入门到实践

坚强是说给别人听的谎言 提交于 2020-01-20 04:55:59
Appendix 1.代码规范 1.1函数编写规范 函数名使用小写字母和单词之间下划线。应给函数指定描述性名称。模块命名也是 每个函数应有简要的DocStrings注释 每个函数都应包含简要地阐述其功能的注释,该注释应紧跟在函数定义后面,并采用文档字符串格式。 DocStrings 文档字符串 给形参指定默认值时,等号两边不要有空格,对于函数调用中的关键字实参,也应遵循这种约定: 在左括号后换行,是函数形参过长的处理办法。 每行代码长度不要超过这根竖线 1.2 类编写规范 类的名称每个单词首字母大写且不使用下划线,实例名和模块名都采用小写格式,并在单词之间加上下划线。 每个类紧跟定义后包含一个文档字符串描述类的功能 可使用一个空行来分隔方法;而在模块中,可使用两个空行来分隔类。 需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的import 语句,再添加一个空行,然后编写导入你自己编写的模块的import 语句。 1.3 测试类、测试函数编写规范 单元测试 是测试函数某一方面是否有问题 测试用例 是一组单元测试 全覆盖式测试 是一整套单元测试 类名包含字样Test 方法名必须以test_打头,这样它才会在我们运行test_name_function.py时自动运行。 1.4 通过空行,划分程序 要将程序的不同部分分开,可使用空行。你应该使用空行来组织程序文件