
关于程序员
xianxjm
这个作者很懒,什么都没留下…
展开
-
快速排序及其优化
void Quick_Sort(int *arr, int begin, int end){ if(begin > end) return; int tmp = arr[begin]; int i = begin; int j = end; while(i != j){ while(arr[j] >= tmp && j > i) j--; while(arr[i]原创 2021-05-06 09:45:38 · 578 阅读 · 0 评论 -
c++中赋值构造函数的返回值有什么用?
1.可不可以没有返回值?可以的2.返回值有什么用?可以支持对象进行链式操作a=b=c原创 2021-03-13 22:18:36 · 277 阅读 · 0 评论 -
反转链表和部分反转
ListNode* reverseList(ListNode* head) { if(head==nullptr) { return head; } if(head->next==nullptr){ return head; } ListNode* p = head; ListNode* q = p->next; ListNode* r = n...原创 2021-03-07 23:46:39 · 366 阅读 · 0 评论 -
迭代方差方法
public class Accumulator { private: double m; double s; int N; public: void addDateValue(double x) { N++; s=s+1.0*(N-1)/N*(x-m)*(x-m); m=m+(x-m)/N; } double mean() .原创 2021-01-07 15:57:54 · 702 阅读 · 0 评论 -
upd整理
https://www.zhetenga.com/view/UDP%E6%95%B0%E6%8D%AE%E5%8C%85%E5%85%81%E8%AE%B8%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E6%8D%AE%E9%95%BF%E5%BA%A6-dfcc42137.htmlhttps://www.cloudflare.com/zh-cn/learning/network-layer/what-is-mtu/原创 2021-01-06 22:35:26 · 168 阅读 · 1 评论 -
VSCode调试docker中的程序(C++) 和离线安装VSCode插件的方法
最新的remote-containers有bug经常会stuck(卡住) ,这里提供老版的链接remote-containers old version,下载完成后需要用离线的方法安装vscode插件。离线安装VSCode插件1.打开VSCode的软件,选择左侧Extension2.点击“…”,选择“从VSIX安装”,选择离线下载的VSCode插件进行安装。...原创 2021-01-05 19:07:28 · 3642 阅读 · 0 评论 -
上下位机同步控制周期的一种思路
问题下位(arm 单片机)在控制电机时要求有比较精准的周期而上位机(linux kernel)线程受操作系统负载和调度方式的影响无法精准控制,两者之间要如何同步?解决思路利用下位可以反馈精确的控制时间这一点来缓解上位机时间不准的问题。具体方法1.在下位机上设置指令缓存,一次从上位机接收一定数量的指令,假设为N,减少上位机时间不准时带来影响;2.制定通信协议,下位机按固定周期(30ms)往上位机发送状态数据,数据包里包含下位机的时间信息或是这是第几个包,上位机收到这两种信息之后(任意一种),都能确原创 2021-01-03 09:27:18 · 1166 阅读 · 1 评论 -
Vim 日常操作积累
高亮指令含义(作用)gd选中并高亮:noh消除高亮括号间内容的操作先选中括号之间的内容(包括各种括号和单引号,双引号)指令含义(作用)vi+符号 ( 如:(,’,",{,[,)选中括号之间的内容(包括各种括号和单引号,双引号)yi+符号 ( 如:(,’,",{,[,)复制括号之间的内容(包括各种括号和单引号,双引号)di+符号 ( 如:(,’,",{,[,)删除括号之间的内容(包括各种括号和单引号,双引号)翻页翻整页原创 2020-09-22 21:43:29 · 174 阅读 · 0 评论 -
docker相关操作
列出所有的容器 IDdocker ps -aq停止所有的容器docker stop $(docker ps -aq)删除所有的容器docker rm $(docker ps -aq)删除所有的镜像docker rmi $(docker images -q)复制文件docker cp mycontainer:/opt/file.txt /opt/local/docker cp /opt/local/file.txt mycontainer:/opt/docker image prune原创 2020-08-31 15:35:57 · 129 阅读 · 0 评论 -
GDB 调试总结
GDB 调试总结调试带参数的程序gdb --args ./testprg arg1 arg2原创 2020-08-20 15:34:17 · 133 阅读 · 0 评论 -
Git使用方法总结
向远程仓库推送一个新的分支思路是在本地仓库新建一个分支(此分支的名称要跟远程一致),然后再将这个分支推到远程仓库git checkout -b my-test //在当前分支下创建my-test的本地分支分支git push origin my-test //将my-test分支推送到远程git branch --set-upstream-to=origin/my-test //将本地...原创 2020-04-23 19:18:29 · 322 阅读 · 0 评论 -
清理docker中的缓存以及宿主与docker互传数据
清理docker中的缓存操作docker,/目录很容易就会被写满需要进行一些docker清理工作:docker system prune此操作删除已停止的容器,未被任何容器使用的卷,未被任何容器所关联的网络和所有悬空的镜像。docker volume prune此操作删除无用的卷。宿主与docker互传数据从docker上拷:docker cp dev-container:/...原创 2020-04-23 18:15:33 · 725 阅读 · 0 评论 -
ubuntu 下Vscode 编译运行c++ 程序环境搭建
2.关于编译C++过程 安装c/c++编译插件 编写C++代码,helloword.cpp #include<iostream> #include<stdio.h> using namespace std; int main() { cout<<"hello VS Code"<...原创 2020-02-18 22:27:12 · 1369 阅读 · 0 评论 -
C++中两种参数传递方式 :值传递和传指针
值传递和传指针是c++中老生常谈的问题,新人必须要掌握的东西无论是在实际的开发过程中还是面试中都会经常用到。今天就花一点时间 ,结合自己在工作中遇到的实际例子再次总结一下。 首先来看一个经典的例子:void GetMemory(char *p){ p=(char *)malloc(100); } void Test(void){ char *str=null; GetMem原创 2017-06-19 10:16:31 · 1048 阅读 · 0 评论 -
Socket 网络编程 同步异步、阻塞非阻塞
同步异步、阻塞非阻塞 个人认为同步和异步是更抽象的概念,是相对的任务而言的。而阻塞和非阻塞就就字面的意思是对当前的进程或线程而言的。 概念之间的区别同步与异步 同步与异步在不同的场景下有不同的概念,在IO模型中的同步异步,主要区别在当任务A调用任务B的过程中,进程A是否继续进行。 如果A等待B的结果,则为同步; 如果A不等待B的结果,则为异...翻译 2018-04-10 18:41:21 · 2025 阅读 · 0 评论 -
Ubuntu 恢复默认中文字体
在系统切换成中文之后,ubuntu会自动更新和安装一些字体。安装完成后,显示的字体比较丑,这时给出恢复默认中文字体的办法:卸载掉当前的难看字体:sudo apt-get purge fonts-arphic-ukaisudo apt-get purge fonts-arphic-uming安装回默认字体:sudoapt-get install fonts-wqy-microhei...原创 2018-04-11 14:19:15 · 3966 阅读 · 0 评论 -
QtCreator下一款好漂亮的Text Editor Scheme
<?xml version="1.0" encoding="UTF-8"?><style-scheme version="1.0" name="Enjoy"> <style name="Text" foreground="#ffffff" background="#282a36"/>原创 2018-05-08 17:12:17 · 997 阅读 · 0 评论 -
双系统造成的windows时间错误
先在ubuntu下更新一下时间,确保时间无误:sudo apt install ntpdatesudo ntpdate time.windows.com然后将时间更新到硬件上sudo hwclock --localtime --systohc原创 2018-09-03 15:43:23 · 2143 阅读 · 1 评论 -
ubuntu 禁止开机时的系统错误提示
# 禁止开机时的系统错误提示$ sudo vim /etc/default/apportenabled改为0原创 2018-09-03 16:10:07 · 411 阅读 · 0 评论 -
TCP 用select 监听带外数据(MSG_OOB)
select 监听带外数据时,OOB数据会出现在exceptionSet中,但是如果设置了SO_OOBINLINE,OOB数据会出现在readSet中。 OOB消息不会因为流量控制而影响它的传输,但是带外数据会。如果在select中用exceptionSet去监听OOB_data,只有等到带外数据到了,才会触发select exceptionSet返回。这样实际上丢失带了OO原创 2017-09-06 13:57:16 · 978 阅读 · 0 评论 -
Socket 中Select(I/O复用)使用中应注意的地方
最近在写进程间通信的模块,其中用到Select。它的好处在于可以在一个线程之内监听若干个socket或文件描述符的可读写或异常状态,在监听数量不多的情况下有不错的效率。函数接口如下: int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *fd_set *exceptfds, struct timeval原创 2017-09-04 15:22:22 · 365 阅读 · 0 评论 -
Tinyxml2 实现xml文件的增删改查
初识tinyxml2,记录一下其常 用操作。参考网址:https://shilohjames.wordpress.com/2014/04/27/tinyxml2-tutorial/#XML-SaveXMLDocument创建一xml文件:XMLDocument iXmlDoc;iXmlDoc.SaveFile("test.xml");XMLDocument类型的实体类似于一个句柄原创 2017-06-19 10:16:45 · 4499 阅读 · 0 评论 -
C++ 中引用参数类型不匹配造成的编译问题
Ros里有个函数,接口是这样的:void ros::init(int &argc, char **argv, const std::string& name, uint32_t options = 0); 当按如下方式调用时:int StartRos(long long argc,char ** argv){ ros::init((int)argc,(char **)argv,"ewayos原创 2017-06-19 10:16:42 · 3485 阅读 · 0 评论 -
最近关于调试一些心得,和离奇的案例
调试的时候一定要保持思路清晰,要知道自己在干什么,通过各种方式。。。 空指针是很常见的问题c++中经常出现这种问题 1.在return之前都是正确的,但出了函数之后就不对了,这时候你要去查一下指针是不是飞了. 2.要查看每一个与bug相关的指针是不是为空,先看大框架是不是对,再去纠结小的细节,比如ifesle是否合理,case之后是不有个break类似的事情 3.加断点的时候codeblo原创 2017-06-19 10:16:39 · 270 阅读 · 0 评论 -
机器人软件平台ROS
最近在写Ros的接口,接触了一段时间总结一下其中的心得。 Ros中publish或是subscriber多个Topic消息可以用一个RosHandle. subscriber的回调函数可以不是静态的!最后一个参数是实体的的指针, 如: subscribe("VisionFace",1000,&CTest1::FarkerMsgCallback,&iTest1原创 2017-06-19 10:16:37 · 665 阅读 · 0 评论 -
C++中含参构造函数的类对象做成员变量的方法
如果一个类的构造函数是含参的如:class A{public: A(int a) { b=a; }; ~A(){};private: int b;};如果类B想用A的对象做成员变量;class B{public: B(){}; ~B(){};private: A a(5);};这样是不行的,编译不过。。不知道为啥,还在研究中。怎么办呢,这样做:class B{public: B原创 2017-06-19 10:16:33 · 2113 阅读 · 0 评论 -
关于C++中的局部变量
以前在面试软件工程师的时候,面试官经常会问关于c++中不同变量生成和释放的过程,即内存和堆栈管理。当时花了很多时间死记了一些这方面的知识,也不太明白为什么面试官会对这个问题这么青睐。后来在真正参与软件研发后才深刻理解这个问题的重要性。 这里不一一介绍所有变量的存放位置和生命周期,只说几讲在最近开发过程中遇到的关开局部变量的问题。看如下的代码:CTicTacToc::CTicTacToc(原创 2017-06-19 10:16:28 · 849 阅读 · 0 评论 -
C++ 中字节对齐以及字节对齐的意义
c++编译器会默认以字节对齐方式为结构体或类分配内存空间,所以sizeof得出的长度,跟成员累加的长度不一样。编译器的这种做法是有意思的,可以提高cpu存问内存的效率。对下面的类: class B{ public: int m_a; short int m_b;原创 2017-06-19 10:16:25 · 521 阅读 · 0 评论 -
C++中内存写超的Bug分析
void CBaseFunction::NewParamData(eint nMsgCode,eint8** ppParam,eint nLen){ VisionBingoMessage* psBingoData = NULL; EASSERT(sizeof(VisionBingoMessage)==nLen); psBingoDa原创 2017-06-19 10:16:22 · 448 阅读 · 0 评论 -
编译错误 jump to case label [-fpermissive]
switch case 语句中,在case里定义变量就会出现这种编译错误;原因是编译器认为这种写法会错过变量的定义,就报错;解决方法:将变量的定义移出switch case;总结:不要在if或case下定义变量;原创 2017-06-19 10:16:16 · 57961 阅读 · 12 评论 -
Ubuntu 创建下自启动脚本
color: #00000a; text-align: left; orphans: 0; direction: ltr; color: #00000a; line-height: 120%; text-align: left; orphans: 0; font-size: 12pt; font-size: 12pt; font-size: 12pt; so-language: hi-IN }原创 2017-06-19 10:16:48 · 324 阅读 · 0 评论 -
ROS中编译已存在的Package
一个机器上创建好的Ros Package要拷贝到另一个机器上,容易出现找不到包的情况。为了解决这个问题,做了很多方面的尝试,得出一些结论。 首先环境变量要设置的对,Ros package必须要放在环境变量所在路径下,Ros才有可能找到这个Package。用下面这种方式可以弃置环境变量 :export ROS_PACKAGE_PATH="$ROS_PACKAGE_PATH:/home/usernam原创 2017-06-19 10:16:54 · 6545 阅读 · 2 评论 -
C++ 中宏(macro)#,##,和...(可变参数宏variadic macros)
#是将传入的变量字符串化#define PRINTCLASS(ClassName) printout(#ClassName) 在宏中入在是一个类名,但函数printout需要传入的参数是一个字符串,这时候就需要把传入的变量 转化成字符串。PRINTCLASS(ClassName); 相当于:printout("ClassName");## 在宏中是连接两个单元 有时候定义一个变量,这个变量的名字要原创 2017-06-19 10:16:57 · 3693 阅读 · 0 评论 -
vim 使用技巧
全选:ggVG gg让光标移到首行 V是进入Visual(可视)模式G光标移到最后一行操作括号之间的内容选中括号之间的内容(包括各种括号和单引号,双引号)vi+符号 ( 如:(,',",{,[,)复制括号之间的内容(包括各种括号和单引号,双引号)yi+符号 ( 如:(,',",{,[,)删除括号之间的内容(包括各种括号和单引号,双引号)di原创 2017-06-22 17:42:21 · 1296 阅读 · 0 评论 -
使用 QtCreator 编译调试Ros 教程
1,编写RosNode,编译通过后,用QtCreator重新创建工程,在.pro中添加默认包含的文件和链接的so;2,用在QtCreator编译RosNode,编译成功后,在~/.bashrc中添加: export ROS_MASTER_URI=http://localhost:11311保存后。有两种方式可以使用QT调试程序:A. 在终端中打开QT cd /opt/Qt原创 2017-07-12 11:10:39 · 3611 阅读 · 2 评论 -
C++ 跨线程传输数据
eint CSensorInfo::OnGetFeatureReply(eint nIPCID,FeatureStatusMessage* psFeatureStatusMsg,eint nDataLen,eint8** ppReply,eint nMsgCode){ FeatureStatusMessage* psFeatureData = NULL; IPCBaseStr* psC原创 2017-06-19 10:16:19 · 682 阅读 · 0 评论 -
Qt5.5在ubuntu下解决 GL/gl.h: No such file or directory 与 cannot find -lGL
1、缺少头文件error: GL/gl.h: No such file or directory解决方式:sudo apt-get install mesa-common-dev2、编译出现如下错误提示:/usr/bin/ld: cannot find -lGL解决方式:sudo apt-get install libgl1-mesa-dev libglu1-mesa-de转载 2017-06-22 17:47:47 · 3143 阅读 · 0 评论 -
Ubuntu下FTP配置过程
1)先安装vsftpdsudo apt-get install vsftpd2)修改配置文件sudo vim /etc/vsfpd.conf修改以下内容:listen=YESanonymous_enable=NO (关系到匿名用户是否能登陆)write_enable=YES(关系到能否上传文件,这一行默认是注释掉的,去掉前面的#号)pam_service_name=原创 2017-06-22 17:46:13 · 513 阅读 · 0 评论 -
链接选项-I,-l,-L,-Wl:rpath
首先这几个命令一般用在gcc/g++或makefile中,但是一般的IDE里也会涉及。只是在IDE里的配置方式会不同,有的是配置文件如QtCreator,有的是图形化界面,如CodeBlocks。无论是什么样的方式其本质都是一样的,尤其是配一个工程的时候,这些都是必不可少的。-I,添加包含路径-I 在编译时用,告诉编译器去哪个路径下找文件如:-I /home/hello/inc原创 2017-06-22 17:44:52 · 10436 阅读 · 0 评论 -
Qt进度条用法总结
QProgressDialong是Qt提供的用于显示各类耗时较长的操作进度,而不至于让程序看上去假死了一样,它继承自QDialog。下面给出例子:QProgressDialog *progressDlg=new QProgressDialog(this);//其实这一步就已经开始显示进度条了progressDlg->setWindowModality(Qt::WindowModal);原创 2017-06-22 17:39:58 · 17560 阅读 · 1 评论