- 博客(64)
- 资源 (1)
- 收藏
- 关注
原创 Android实现MQTT客户端
在connect()方法中,设置MQTT客户端的各种参数,如服务器地址、客户端ID、保持连接的时间间隔、连接超时时间、是否清除会话等。在connectBtn的onClick()方法中,调用connect()方法连接MQTT服务器,并在连接成功后订阅主题。在disconnect()方法中,调用MQTT客户端的disconnect()方法断开与MQTT服务器的连接。在disconnect()方法中,调用MQTT客户端的disconnect()方法断开与MQTT服务器的连接。声明文件Manifest.xml。
2023-04-03 15:58:21 1414 1
原创 强化学习理解
比如在AlphaGo里面,如何去衡量每一步棋下的“好”与“坏”,并且最终量化,这是一个非常棘手的问题。实际应用时,部分场景这是一个十分庞大的数字,对于训练时长,算力开销是十分庞大的。网上经常有人截图爆出打游戏碰到了王者荣耀AI,明明此时推塔或者推水晶是最合理的行为,但是AI却去打小兵,因为AI采取的是一个局部最优的行为。策略梯度:策略梯度算法直接学习策略本身,通过参数sita,定义奖励函数为期望回报,算法的目标是最大化奖励函数。不需要模型,也不需要完整的样本,而是从每轮的经验中学习。,St 来求经验回报。
2023-03-28 16:31:20 701
原创 STM32外部中断详解(3个开关产生中断来控制LED灯)
STM32外部中断详解(3个开关产生中断来控制LED灯)GPIO不懂的看前面的8种模式
2022-06-26 16:27:31 6910 2
转载 安卓开发的一些关键要素(好文)
https://blog.csdn.net/qq_43536071/article/details/112406098?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultCTR
2022-04-25 20:44:54 131
原创 安卓运行机制
安卓运行机制安卓运行机制这篇文章介绍了安卓的四种基本功能组件:Activities、Services、Content providers、Broadcast receivers。
2022-04-24 12:31:37 324
原创 Android通过view的getId视图查找页面内的控件进行配对
android通过视图类View创建对象v,并通过v.getId)==R.id.***查找视图内的控件进行配对
2022-04-23 16:07:51 2689
原创 java抽象类和接口的区别
java 接口与抽象的区别抽象类是对事物的抽象,包括属性和行为。而接口只是对行为的抽象。比如鸟和飞机,都是会飞的事物,但是不能将他们将飞定义为一个类。此时fly()可以定义为一个接口。下面的代码就能说明这个问题,door是一个抽象类,alarm是一个接口。当想要描述一个响铃的门,就可以将抽象类和接口结合起来描述。interface Alram { void alarm();} abstract class Door { void open(); void close()
2021-11-11 20:07:40 341
原创 关于指针的理解
C语言指针理解int *p=&a;//其实最规范的写法应该是int* p=&a;就是说在定义的时候变量p是个指针变量,而此时的*并不是运算符,而是定义符,但是在我们赋值的时候指针符合*又变成了取值符合,这是关于指针最重要,也是最不容易理解的一点。...
2021-11-03 19:09:47 76
原创 加法乘法速算
乘法速算https://wenku.baidu.com/view/dc9fd7d63186bceb19e8bb5e.html加法速算https://wenku.baidu.com/view/4ddb7ea4988fcc22bcd126fff705cc1754275f16.html
2020-12-07 22:55:30 254
原创 matlab 画graph
1.官方说明https://blog.csdn.net/bushixiaofan/article/details/33322553?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7.con
2020-11-21 15:29:49 1074
原创 Linux U盘只能读不能写
Linux U盘只能读不能写https://blog.csdn.net/ITBigGod/article/details/79914534
2020-09-03 14:39:04 376
原创 解决迭代器失效
1.vector erase在删除时,删除后的地址赋给当前地址;i=q.erase(i);2.vector insert在插入时,插入后的地址赋给当前地址;i=q.insert(i,pos);
2020-09-01 11:45:51 159
原创 智能指针解决线程安全问题
不安全的使用(使用普通指针)#include <iostream>#include <memory>#include <thread>using namespace std;class A{public: A() { cout << "A()" << endl; } ~A() { cout << "~A()" << endl; } void funA() { cout << "A的一个非
2020-08-29 16:06:57 530 1
原创 TCP/IP send recv read write数据收发不完整
TCP/IPsend recv read write数据收发不完整解决方法:write和send1.write和send的返回值是读到的字节数。在send和write端检查send的返回值,若正确则发送,否则重发,send错误时返回-1,另一方使用正常方式关闭时返回02.write不负责把数据写完再返回read和recv1.read和recv返回值为读到的字节数。如果read和recv的返回值为0表示读到了末尾,也就是接收到EOF(end of file),返回-1时错误,可通过errno获取
2020-08-19 09:54:05 1121
原创 简单测试set与pair结合的使用效果
#include <iostream>#include <set>using namespace std;int main() { set<pair<int,int> >s; s.insert(pair<int,int>(3,4)); s.insert(pair<int,int>(4,5)); s.insert(pair<int,int>(5,6)); s.insert(pair
2020-08-08 16:22:01 248
原创 节点分配算法测试
// multimaptest.cpp : 此文件包含 “main” 函数。程序执行将在此处开始并结束。//#include #include #include #include #include using namespace std;typedef multimap<int, int> multim;//第一个int是节点号,第二个int是机器人号typedef pair<pair<int, int>, int > doublePair;int m
2020-08-07 12:32:21 334
原创 堆与栈的区别
栈:先进先出,存取速度快,容量有限(windows下约2M),系统会自动回收堆:先进后出,链表方式存储,存取速度慢,容量远大于栈(基本不受限),需要自己释放
2020-08-03 09:48:55 85
原创 数据位分配
数据位分配client接收必须有的数据:1.N个目标点的x,y可以添加的数据:1.N个目标点的z坐标,w朝向,时间戳timestamp(不使用ros的时间,使用系统的time函数,便于统一时间)2.到目标点时要求的速度vx,vyServer接收必须有的数据:1.机器人编号,机器人当前的位置x,y坐标,机器人状态(在线、离线),在线行进状态(正在执行,请求路径,到达终点)/离线行进状态(故障、静默)序号:客户端发送第0位暂时保留,第一位为机器人序号,第二位为机器人开启关闭标志位(Awa
2020-07-02 10:20:10 247
原创 Ubuntu16.04安装opencv3.4.10在clion下配置软件
https://blog.csdn.net/Ding_0110M/article/details/88083741?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase.
2020-06-11 14:02:33 183
原创 字符串转换例程
字符串转换例程#include <iostream>#include <string>#include <sstream>using namespace std;void test2(){ string s = "11112aaaa"; char ch[1024]={0}; int a = 52000; double b = 1.1314; string str; ostringstream oss; oss
2020-06-02 10:10:55 162
原创 C++动态创建变量名
用宏定义创建的变量名来创建类的新对象。#define NewVariable( x ) robot##x//宏定义//对象创建,类名为Robot,变量名为robot1,构造函数参数为start和goalRobot NewVariable(1)(start,goal);##符号会连接两个符号,从而产生新的符号(词法层次),例如: #define SIGN( x ) INT_##x int SIGN( 1 ); 宏被展开后将成为:int INT_1; (本人用的第一种成功)(第二种创建
2020-05-29 12:23:44 3127
原创 Clion编译运行Pthread出现对‘pthread_create’未定义的引用
只需要在CMakeList中加入set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")问题解决
2020-05-27 18:09:34 470
原创 Dijkstra搜索算法,邻接表搜索(增加了当遇到障碍物时的搜索功能,在第二种里面)
Dijkstra搜索算法,邻接表搜索,两种情况,第一种,直接搜索,搜索结果打印出来;第二种情况,增加了一点其他功能,当遇到要跳过的(或者认为是障碍物的时候)进行搜索。。皆在c++ vs2017下测试可用// Copyright srcmake.com 2018.// C++ Example Dijkstra Algorithm For Shortest Path (With PQ/Min-Heap)// Official webpage for this tutorial: https://www.s
2020-05-22 20:22:19 441
原创 Boost Graph library有权有向图节点增删
Boost Graph library通过创建有权有向图,并删除单条有向边,最后实现搜索#include <boost/graph/adjacency_list.hpp>#include <boost/graph/depth_first_search.hpp>#include <iostream>using namespace std;using namespace boost;typedef property<edge_weight_t, int>
2020-05-19 15:51:20 526
原创 Boost Graph Library基础用法说明
linux下安装Boost库apt-get install libboost-dev新建图(邻接表建图)#include <boost/graph/adjacency_list.hpp>using namespace boost;int main(){//1.新建无向图,使用邻接矩阵数据结构boost::adjacency_list<listS, vecS, undirectedS> g;//listS是每个顶点的链表,用于表示与该顶点相连的所有顶点//VecS是
2020-05-16 20:32:25 434
原创 c++ float转char数组
使用sprintf()转char型数组% 印出百分比符号,不转换。b 整数转成二进位。c 整数转成对应的 ASCII 字元。d 整数转成十进位。f 倍精确度数字转成浮点数。o 整数转成八进位。s 整数转成字串。x 整数转成小写十六进位。X 整数转成大写十六进位。#include <iostream>#include <string>using namespace std; int main() { int n = 30;
2020-05-13 20:12:03 4629
原创 TCP/IP linux下多线程通信(测试成功,客户端的接收和发送分别在两个线程)
经过多次尝试,终于测试成功linux环境下TCP/IP的多线程通信,与网上大多数代码的区别在于,网上的很多代码都是把发送或者接收的功能之一放在主线程中,这样就导致如果要在主线程撰写一些具体的操作就会造成卡死,或者响应不及时。查阅了资料,用了合适的方法把接收和发送分离在两个子线程。难点在于退出的时候如何结束线程,方法是在发送的线程里,接收到结束命令时,先把接收的线程结束掉pthread_cancle(),再自己结束掉线程pthread_exit(),然后在主线程里面通过pthread_join()等待子线程结
2020-05-13 15:23:07 2643 1
原创 多线程TCP/IP,收发线程分离如何处理
多线程TCP/IP,收发线程分离如何处理https://github.com/monmon-2007/Multithreaded-Bank-System/blob/master/client.c
2020-05-12 14:08:21 383
原创 备份
#include <ros/ros.h>#include <move_base_msgs/MoveBaseAction.h>#include <actionlib/client/simple_action_client.h>#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include
2020-05-12 09:15:22 192 1
原创 pthread终止线程(linux编程)
linux终止线程正常情况下,线程一旦创建便从指定函数开始执行直到该函数返回。一旦该函数返回,这些线程便自行终止。线程也可以在执行的途中通过调用pthread_exit()终止自己的执行。实际上,非初始线程(这里只main函数的线程)从开始函数返回是返回到线程库中,由线程库隐含地调用函数pthread_exit(),并用开始函数的返回值作为线程的出口状态。但是,初始线程则不然。初始线程如果也调用相同的开始函数,在这个函数没有明显调用pthread_exit()的情况下,它将正常返回到其调用点。线程终止并
2020-05-10 16:02:05 1439
原创 ROS多点巡航cpp文件
ROS多点巡航cpp文件(在网上常见的是基于python写的,有时候需要用到基于cpp的巡航文件,提供参考,亲测可行,具体方法见github)#include <ros/ros.h>#include <move_base_msgs/MoveBaseAction.h>#include <actionlib/client/simple_action_client.h...
2020-05-04 13:51:16 1943
原创 p_thread_creat传递多个参数(第4个参数)
p_thread_creat传递函数参数是第四个参数,如要传递多个参数需要把该参数变成结构体。方法如下,测试通过。https://www.cnblogs.com/jiu0821/p/5869516.html#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include &...
2020-05-04 11:48:39 766
原创 c++字符串处理
char* 转std::stringconst char* p = "Hello world";std::string str = p; // 可以对str直接赋值cout << str;//==>// hello worldstd::string转char*.data()using namesapce std;string str = "hello w...
2020-05-02 20:29:23 174
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人