<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[FBeetle的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hit0803107</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hit0803107]]></copyright><item><title><![CDATA[学习笔记：3个学习AI路上反复看到的概念：RAG，Langchain，Agent]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/148355548</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/148355548</guid><author>hit0803107</author><pubDate>Sat, 31 May 2025 20:35:56 +0800</pubDate><description><![CDATA[RAG的能力核心是有效结合了检索和生成两种方法。基本思路是把私有数据进行切片，向量化后通过向量检索进行召回，再作为上下文输入到通用大模型，模型再进行分析和回答。同时，AI Agent也可以利用RAG技术来提高其在特定任务（如问答或对话系统）中的性能，尤其是在需要外部知识来支持决策时。RAG可以作为LangChain（如果它是一个语言处理工具）的一部分，用于提供更加丰富和准确的语言生成能力。AI Agent可能使用LangChain来处理自然语言的任务，比如理解用户输入和生成响应。]]></description><category></category></item><item><title><![CDATA[深度学习笔记：特征抽取]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/125798581</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/125798581</guid><author>hit0803107</author><pubDate>Sat, 30 Jul 2022 23:46:46 +0800</pubDate><description><![CDATA[简单来说，深度模型的输入只能数字类型，现实中的数据则不尽相同，如性别，年龄，商品价格等。例如可以将性别作为特征，男性设置为0，女性设置为1；也可以将年龄和性别组合后作为一个特征，大于18岁的男为3，小于18岁的女为4。数字代表模型输入的特征值。因此，特征抽取就是将这些具体的原始数据通过规则转化为模型可识别的数字(或数组)的过程。本文重点介绍特征分类、特征抽取的过程、特征抽取实现方法、在线特征服务架构。......]]></description><category></category></item><item><title><![CDATA[深度学习笔记：推理服务]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/125951019</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/125951019</guid><author>hit0803107</author><pubDate>Sun, 24 Jul 2022 11:23:18 +0800</pubDate><description><![CDATA[深度学习工业领域，算法人员通过对具问题建模解决一个场景的业务问题，工程人员通过平台化的方式解决一类模型训练/推理问题。因此互联网公司里，算法人员居多，工程人员偏少，大部分人对工程方面知识了解较少，本文希望通过通俗易懂的方式记录下少为人知的算法工程技术知识...]]></description><category></category></item><item><title><![CDATA[grpc编译问题：“C++ versions less than C++11 are not supported.]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/118441830</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/118441830</guid><author>hit0803107</author><pubDate>Sat, 03 Jul 2021 16:35:19 +0800</pubDate><description><![CDATA[# 官方教程https://grpc.io/docs/languages/cpp/quickstart/

# mac编译问题

"C++ versions less than C++11 are not supported."

```


# 编译abseil时需要添加-DCMAKE_CXX_STANDARD=11，否则会编译报错

$ mkdir -p third_party/abseil-cpp/cmake/build
$ pushd third_party/abseil-cpp/cmake/bu.]]></description><category></category></item><item><title><![CDATA[template用法]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/98539321</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/98539321</guid><author>hit0803107</author><pubDate>Tue, 06 Aug 2019 00:05:04 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;

template &lt;typename T, typename H&gt;
class A {
    public:
        A() {}
        ~A() {}

    public:
        void setA(T a) {
            _a = a; 
        }
        T g...]]></description><category></category></item><item><title><![CDATA[私有静态成员理解(C++)]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/98531978</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/98531978</guid><author>hit0803107</author><pubDate>Mon, 05 Aug 2019 23:46:20 +0800</pubDate><description><![CDATA[先上代码，运行分析结合注释说明，自然会明白，后面给出总结
#include &lt;iostream&gt;

class A {
    public:
        A() {}
        ~A() {}

    public:                          //公有静态成员函数
    static void setA1(int val) {
        A...]]></description><category></category></item><item><title><![CDATA[embedding_lookup_sparse学习笔记]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/98454310</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/98454310</guid><author>hit0803107</author><pubDate>Sun, 04 Aug 2019 12:15:45 +0800</pubDate><description><![CDATA[api
 embedding_lookup_sparse
tf.nn.embedding_lookup_sparse(
params,
sp_ids,
sp_weights,
partition_strategy='mod',
name=None,
combiner=None,
max_norm=None
)

params embedding使用的lookup table.
sp_ids 查找l...]]></description><category></category></item><item><title><![CDATA[embedding_lookup的学习笔记]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/98377030</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/98377030</guid><author>hit0803107</author><pubDate>Sun, 04 Aug 2019 11:08:14 +0800</pubDate><description><![CDATA[背景
最近从事做算法平台开发，之前对tensorflow和深度学习有所了解，但是面对全新的在线系统仍然一脸懵逼。。。
其中，对embedding的概念刚开始一直不够清晰，看到关于embedding_lookup的单测也只能根据结果猜测计算过程，经过一顿查阅资料，终于对embedding的原理和使用有所了解，因此记录下来
one_hot编码
首先，了解下什么是one_hot编码，直接举例子如下：
词...]]></description><category></category></item><item><title><![CDATA[tensorflow serving踩坑记录]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/84433496</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/84433496</guid><author>hit0803107</author><pubDate>Sun, 23 Dec 2018 22:15:45 +0800</pubDate><description><![CDATA[参考：https://blog.youkuaiyun.com/luoyexuge/article/details/79821668
clone代码
git clone --recurse-submodules https://github.com/tensorflow/serving
cd serving
创建tensorflow_serving
bazel build tensorflow_serving/...]]></description><category></category></item><item><title><![CDATA[C++虚表结构详解]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/84996374</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/84996374</guid><author>hit0803107</author><pubDate>Fri, 14 Dec 2018 00:06:03 +0800</pubDate><description><![CDATA[原文地址：https://www.learncpp.com/cpp-tutorial/125-the-virtual-table/

为了实现虚函数，C++使用动态绑定方式，称为虚表。

虚表是一个包含函数的查找表，该查找表用于动态绑定方式解决函数调用问题，虚表有时候被称为“vtable”，&quot;虚函数表&quot;，“虚方法表”，“分派表”。

虚表虽然用语言描述有点复杂，实际上非常简单。

首先，每个包含虚...]]></description><category></category></item><item><title><![CDATA[如何在运行时加载C＋＋函数和类]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/84996364</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/84996364</guid><author>hit0803107</author><pubDate>Thu, 13 Dec 2018 22:57:00 +0800</pubDate><description><![CDATA[转载自：https://blog.youkuaiyun.com/wzhg0508/article/details/46282973

Problem
有些时候你想在运行时加载一个lib或者function or class，这种事情经常发生在你开发一个plugin或者module时遇到。

在C语言里，你可以轻松的利用dlopen, dlsym, dlclose来做到，但是在C++的世界里却没那么简单了。困难...]]></description><category></category></item><item><title><![CDATA[合并两个git仓库]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/84976801</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/84976801</guid><author>hit0803107</author><pubDate>Wed, 12 Dec 2018 17:46:08 +0800</pubDate><description><![CDATA[转载自：https://blog.youkuaiyun.com/gouboft/article/details/8450696

描述下case如下：

有2个git仓库：repo1、repo2；
	想将repo1中的文件移入repo2；
	repo1的历史日志要保留；
首先，快速创建2个仓库。


			
mkdir repo1
cd repo1
git init
echo &quot;repo1.txt&quot; &amp;gt;...]]></description><category></category></item><item><title><![CDATA[git lg 使用]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/84963556</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/84963556</guid><author>hit0803107</author><pubDate>Tue, 11 Dec 2018 23:28:54 +0800</pubDate><description><![CDATA[转载自：https://luolei.org//better-git-log/#comments



Git是一个强大的版本管理器，建议每一个开发者或者开发团队都可以使用git。想当初，自己code的时候还是用evernote来保存一些代码片段，以免写烂，自从用上git后，妈妈再也不用担心code shit了。

git log  命令是查看全部提交日志

git log -2  查看最近2次的...]]></description><category></category></item><item><title><![CDATA[C++ assert用法详解]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/84960579</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/84960579</guid><author>hit0803107</author><pubDate>Tue, 11 Dec 2018 19:41:00 +0800</pubDate><description><![CDATA[转自：http://www.cnblogs.com/Mr-Wenyan/p/7213809.html

头文件&amp;lt;assert.h&amp;gt;

头文件&amp;lt;assert.h&amp;gt;的目的就是提供宏assert的定义。在程序中可以用这个宏来断言，如果断言是真，则继续执行。如果断言为假，则在标准输入流中输出一条提示信息，并执行终止异常。

通过宏DEBUG控制断言是否有效：如果程序中包含&amp;lt;a...]]></description><category></category></item><item><title><![CDATA[C++的new/delete操作符]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/84865635</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/84865635</guid><author>hit0803107</author><pubDate>Thu, 06 Dec 2018 21:35:44 +0800</pubDate><description><![CDATA[new的基本和高级用法

1、new 的基本用法


int *a = new int[5];
class A {...}   //声明一个类 A
A *obj = new A();  //使用 new 创建对象
delete []a;
delete obj;


这里我们注意，new int[5] 仅仅分配了空间， 但是 new A()，不仅仅为对象obj在队上分配了空间， 而且还调用了 A的构...]]></description><category></category></item><item><title><![CDATA[tensorboard使用]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/84672284</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/84672284</guid><author>hit0803107</author><pubDate>Sat, 01 Dec 2018 12:06:06 +0800</pubDate><description><![CDATA[
import tensorflow as tf


sess = tf.InteractiveSession()

a = tf.Variable(0, name=&quot;a&quot;)
b = tf.Variable(1, name=&quot;b&quot;)
c = tf.add(a,b)


sess.run(tf.global_variables_initializer())
summary_writer = tf.s...]]></description><category></category></item><item><title><![CDATA[GDB查看STL容器数据]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/84196659</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/84196659</guid><author>hit0803107</author><pubDate>Sun, 18 Nov 2018 11:07:27 +0800</pubDate><description><![CDATA[转载自：http://blog.chinaunix.net/uid-20594049-id-1620139.html

1. 下载 http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt

2. #cat dbinit_stl_views-1.03.txt &amp;gt;&amp;gt; ~/.gdbinit

3. 若正处于gdb中，运行命...]]></description><category></category></item><item><title><![CDATA[深入浅出RPC原理]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/84189492</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/84189492</guid><author>hit0803107</author><pubDate>Sat, 17 Nov 2018 15:45:11 +0800</pubDate><description><![CDATA[转自：https://ketao1989.github.io/2016/12/10/rpc-theory-in-action/

 

深入浅出RPC原理


远程过程调用(Remote Procedure Call，简称RPC)，在微服务大行其道的今天，得到了广泛的应用。因此，在分布式系统服务群中开发应用，了解RPC一些原理和实现架构，还是很有必要的。本文，将从大的框架层面来聊聊RPC原理和实现...]]></description><category></category></item><item><title><![CDATA[zsh用法整理]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/84189315</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/84189315</guid><author>hit0803107</author><pubDate>Sat, 17 Nov 2018 15:30:23 +0800</pubDate><description><![CDATA[https://github.com/robbyrussell/oh-my-zsh

按照如下步骤，即可自动完成终端配置，非常方便

Manual Installation

1. Clone the repository:


git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

2. Optionally, ...]]></description><category></category></item><item><title><![CDATA[基于grpc快速搭建rpc服务实例]]></title><link>https://blog.youkuaiyun.com/hit0803107/article/details/83934839</link><guid>https://blog.youkuaiyun.com/hit0803107/article/details/83934839</guid><author>hit0803107</author><pubDate>Sun, 11 Nov 2018 00:59:09 +0800</pubDate><description><![CDATA[第1步：安装protobuf


https://github.com/protocolbuffers/protobuf/releases 下载最新版本protobuf-cpp-3.6.1.tar.gz
tar -zxvf protobuf-cpp-3.6.1.tar.gz
cd protobuf-3.6.1/
./autogen.sh &amp;amp;&amp;amp; ./configure
make &amp;a...]]></description><category></category></item></channel></rss>