<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HITXJ的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/HITXJ</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; HITXJ]]></copyright><item><title><![CDATA[Matplotlib error: No such file or directory: ‘latex‘: ‘latex‘]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/123341567</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/123341567</guid><author>HITXJ</author><pubDate>Mon, 07 Mar 2022 22:22:57 +0800</pubDate><description><![CDATA[Matplotlib error: No such file or directory: ‘latex’: ‘latex’
sudo apt install texlive-fonts-recommended texlive-fonts-extra
sudo apt install dvipng

链接：Matplotlib error: No such file or directory: ‘latex’: ‘latex’


]]></description><category></category></item><item><title><![CDATA[deque insert()函数几种用法]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/113560262</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/113560262</guid><author>HITXJ</author><pubDate>Tue, 02 Feb 2021 15:33:59 +0800</pubDate><description><![CDATA[C++ deque insert()用法及代码示例

]]></description><category></category></item><item><title><![CDATA[用Ceres实现PnP]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/112803044</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/112803044</guid><author>HITXJ</author><pubDate>Tue, 19 Jan 2021 11:36:59 +0800</pubDate><description><![CDATA[在ceres中实现PnP优化（仅优化位姿）

]]></description><category></category></item><item><title><![CDATA[g2o编译报错]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/112718196</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/112718196</guid><author>HITXJ</author><pubDate>Sat, 16 Jan 2021 17:43:33 +0800</pubDate><description><![CDATA[视觉slam g2o 编译出现 Cmake Error：By not providing “FindG2O.cmake” in CMAKE_MODULE_PATH错误

]]></description><category></category></item><item><title><![CDATA[智能指针与构造函数调用]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/109304429</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/109304429</guid><author>HITXJ</author><pubDate>Tue, 27 Oct 2020 09:39:32 +0800</pubDate><description><![CDATA[#include &lt;memory&gt;

class FrontEndFlow
{
public:
    FrontEndFlow();
};

FrontEndFlow::FrontEndFlow()
{
    std::cout &lt;&lt; "调用了构造函数！" &lt;&lt; std::endl;
}

std::shared_ptr&lt;FrontEndFlow&gt; _front_end_flow_ptr;

int main(int argc,char** argv)
{]]></description><category></category></item><item><title><![CDATA[第十二节 std::async深入谈]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108624297</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108624297</guid><author>HITXJ</author><pubDate>Wed, 16 Sep 2020 17:45:19 +0800</pubDate><description><![CDATA[一、std::async深入谈
1.1 std::async参数详述
async用来创建一个异步任务
#include &lt;thread&gt;
#include &lt;future&gt;

int mythread()
{
    cout &lt;&lt; "mythread() start threadid = " &lt;&lt; std::this_thread::get_id() &lt;&lt; endl;
    return 1;
}

int main()
{
    cout ]]></description><category></category></item><item><title><![CDATA[第十一节std::atomic原子操作]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108615201</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108615201</guid><author>HITXJ</author><pubDate>Wed, 16 Sep 2020 09:38:04 +0800</pubDate><description><![CDATA[一、原子操作
1.1原子操作概念例子
互斥量：多线程编程中保护共享数据：锁，操作共享数据，开锁
有两个线程，对一个变量进行操作，这个线程读，另一个线程往变量中写值。
int atomvalue = 5;

读线程A：
int tmpvalue = atomvalue;//atomvalue代表的是多个线程之间要共享的变量

写线程B：
atomvalue = 6;

结果：读出一个不可预料的中间值
原子操作：
可以把原子操作理解为一种：不需要用到互斥量加锁（无锁）技术的多线程编程方式
多线程中不会被打断的程]]></description><category></category></item><item><title><![CDATA[第十节 future其他成员函数、shared_future、atomic]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108607903</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108607903</guid><author>HITXJ</author><pubDate>Wed, 16 Sep 2020 09:29:43 +0800</pubDate><description><![CDATA[一、std::future的其他成员函数
引言
#include &lt;thread&gt;
#include &lt;future&gt;

int mythread()
{
    cout &lt;&lt; "mythread() start" &lt;&lt; "threadid = " &lt;&lt; std::this_thread::get_id() &lt;&lt; endl;
    std::chrono::milliseconds dura(5000);
    std::this]]></description><category></category></item><item><title><![CDATA[async、future、packaged_task、promise]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108589645</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108589645</guid><author>HITXJ</author><pubDate>Mon, 14 Sep 2020 22:55:12 +0800</pubDate><description><![CDATA[一、std::async、std::future创建后台任务并返回值
希望线程返回一个结果；
std::async是个函数模板，用来启动一个异步任务，启动起来一个异步任务之后，返回一个std::future对象
“启动一个异步任务”：自动创建一个线程并开始执行对应的线程入口函数，它返回一个std::future对象，
这个future对象里边就有含有线程入口函数锁返回的结果（线程返回的结果），我们可以通过调用future对象的成员函数get()来获取结果；
“future”:将来的意思，有人也称呼std::]]></description><category></category></item><item><title><![CDATA[condition_variable、wait、notify_one、notify_all]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108580916</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108580916</guid><author>HITXJ</author><pubDate>Mon, 14 Sep 2020 21:01:54 +0800</pubDate><description><![CDATA[一、条件变量std::condition_variable、wait()、notify_one()
1.1 std::condition_variable
线程A中：等待一个条件满足，之后执行；
线程B中：线程B满足条件之后触发线程A。
std::condition_variable my_cond; //生成一个条件对象

class A
{
public:
	void inMsgRecvQueue()  // 线程B入口函数
	{
		for (int i = 0; i &lt; 100000; ++i]]></description><category></category></item><item><title><![CDATA[单例设计模式共享数据分析、解决、call_once]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108568414</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108568414</guid><author>HITXJ</author><pubDate>Sun, 13 Sep 2020 22:53:30 +0800</pubDate><description><![CDATA[引言
互斥量是最通用的保护共享数据的机制，用起来不难，而且特别好用。
当然也有其他保护共享数据的机制。
一、设计模式大概谈
“设计模式”：代码的一些写法（这些写法根常规写法不怎么一样）：程序灵活，维护起来很方便，但是别人接管、阅读代码都会很痛苦；
用“设计模式”理念写出来的代码是很晦涩的；
老外应付特别大的项目的时候，把项目的开发经验、模块划分经验，总结成设计模式（现有开发需求，后又理论总结和整理）
设计模式拿到中国来，不太一样，拿着一个程序（项目）往设计模式上套，一个小小的项目，非要弄几个设计模式进去，本]]></description><category></category></item><item><title><![CDATA[unique_lock详解]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108564320</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108564320</guid><author>HITXJ</author><pubDate>Sun, 13 Sep 2020 21:06:11 +0800</pubDate><description><![CDATA[一、unique_lock取代lock_guard
unique_lock是个类模板，工作中，一般lock_guard（推荐使用）；
lock_guard取代了mutex的lock()和unlock()。
unique_lock比lock_guard灵活很多灵活很多；效率上差一点，内存占用多一点。
std::lock_guard&lt;std::mutex&gt; sbguard(my_mutex);直接换成std::unique_lock&lt;std::mutex&gt; sbguard(my_mute]]></description><category></category></item><item><title><![CDATA[多线程共享数据的保护+互斥量概念、用法、死锁演示及解决详解(std::lock()、std::adopt_lock)]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108439190</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108439190</guid><author>HITXJ</author><pubDate>Wed, 09 Sep 2020 22:52:48 +0800</pubDate><description><![CDATA[#include &lt;list&gt;
#include &lt;thread&gt;

class A
{
public:
    //把收到的消息（玩家命令）入到一个队列的线程
    void inMsgRecvQueue()
    {
        for (int i = 0;i &lt; 100000;++i)
        {
            cout &lt;&lt; "inMsgRecvQueue()执行，插入一个元素" &lt;&lt; i &lt;&lt; endl;]]></description><category></category></item><item><title><![CDATA[阿波罗定位信息]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108208467</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108208467</guid><author>HITXJ</author><pubDate>Mon, 24 Aug 2020 23:29:31 +0800</pubDate><description><![CDATA[modules/common/proto/header.proto:
message Header {
  // Message publishing time in seconds.
  optional double timestamp_sec = 1;

  // Module name.
  optional string module_name = 2;

  // Sequence number for each message. Each module maintains its own co]]></description><category></category></item><item><title><![CDATA[读RTK数据遇到的一些问题]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108114535</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108114535</guid><author>HITXJ</author><pubDate>Thu, 20 Aug 2020 02:41:07 +0800</pubDate><description><![CDATA[ERROR: (08-19 16:25:32.010) /apollo/RS_SDK_V1.2/rs_read_RTK/BUILD:22:1: Linking of rule '//RS_SDK_V1.2/rs_read_RTK:read_RTK' failed (Exit 1).
bazel-out/local-fastbuild/bin/RS_SDK_V1.2/rs_read_RTK/_objs/read_RTK/RS_SDK_V1.2/rs_read_RTK/src/read_RTK.pic.o: I]]></description><category></category></item><item><title><![CDATA[Apollo下的Cyber RT通信]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108094065</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108094065</guid><author>HITXJ</author><pubDate>Wed, 19 Aug 2020 14:11:05 +0800</pubDate><description><![CDATA[目录结构： 
|-- BUILD
|-- proto
|   |-- BUILD
|   `-- examples.proto
`-- talker.cc

proto文件下：
BUILD
（bazel配置proto）
package(default_visibility = ["//visibility:public"])

#生成两种库，examples_cc_proto和examples_proto
#依赖中冒号是什么意思
cc_proto_library(
    name = "examples_]]></description><category></category></item><item><title><![CDATA[C++右值]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108060574</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108060574</guid><author>HITXJ</author><pubDate>Mon, 17 Aug 2020 17:33:47 +0800</pubDate><description><![CDATA[[c++11]我理解的右值引用、移动语义和完美转发

]]></description><category></category></item><item><title><![CDATA[bazel一些用法]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/108032351</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/108032351</guid><author>HITXJ</author><pubDate>Sun, 16 Aug 2020 16:05:35 +0800</pubDate><description><![CDATA[1.编译东西 要在根目录下，和WORKSPACE在同一级
例如，对于bazelbuild/examples
而BUILD文件一般与源文件并列
examples
└── cpp-tutorial
    ├──stage1
    │  └── main
    │      ├── BUILD
    │      ├── hello-world.cc
    │  └── WORKSPACE

进入到cpp-tutorial/stage1目录下(要进入到这个目录后可以直接看到WORKSPACE)，然后运行]]></description><category></category></item><item><title><![CDATA[如何从Gihub仓库中下载单个文件]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/107989960</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/107989960</guid><author>HITXJ</author><pubDate>Thu, 13 Aug 2020 19:54:55 +0800</pubDate><description><![CDATA[如何从 GitHub 上下载单个文件夹？
将 /tree/master/ 换成 /trunk/ .
svn checkout https://github.com/…

]]></description><category></category></item><item><title><![CDATA[阿波罗安装过程]]></title><link>https://blog.youkuaiyun.com/HITXJ/article/details/107985089</link><guid>https://blog.youkuaiyun.com/HITXJ/article/details/107985089</guid><author>HITXJ</author><pubDate>Thu, 13 Aug 2020 17:23:34 +0800</pubDate><description><![CDATA[Apollo快速安装视频教程

]]></description><category></category></item></channel></rss>