<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[吾志所往，所向披靡]]></title><description><![CDATA[生我何用？不能欢笑，灭我何用，不减狂骄。从何而来？同生世上，齐乐而歌，行遍大道。]]></description><link>https://blog.csdn.net/qq525003138</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; qq525003138]]></copyright><item><title><![CDATA[【编译错误记录】]]></title><link>https://blog.csdn.net/qq525003138/article/details/131175601</link><guid>https://blog.csdn.net/qq525003138/article/details/131175601</guid><author>qq525003138</author><pubDate>Mon, 12 Jun 2023 19:52:20 +0800</pubDate><description><![CDATA[错误原因：源码路径中有中文,或者路径中(文件夹名称)带有“(”或“)”.这里的错误就是黄色标注框——L(PROTOCOL_LIB)。Makefile语法错误，这里PROTOCOL_LIB为变量，前面应该加$。错误原因：高版本gcc和g++编译检查比较严格，无法if语句的范围，对if执行语句加上{}即可。一、【错误现象】：make时报错 /bin/sh: 1: Syntax error: "(" unexpected。解决办法：L(PROTOCOL_LIB)改为L$(PROTOCOL_LIB),即可编译过。]]></description><category></category></item><item><title><![CDATA[Linux查看端口被进程占用的方法]]></title><link>https://blog.csdn.net/qq525003138/article/details/130229666</link><guid>https://blog.csdn.net/qq525003138/article/details/130229666</guid><author>qq525003138</author><pubDate>Wed, 19 Apr 2023 10:30:31 +0800</pubDate><description><![CDATA[具体的命令为：sudo ls -l /proc/$(sudo lsof -t -i:端口号) | grep exe，其中端口号为需要查询的端口号。可以使用ps命令结合grep命令来查找某个进程，然后再查看该进程打开的网络端口。具体的命令为：sudo netstat -tlnp | grep 端口号，其中端口号为需要查询的端口号。具体的命令为：sudo ss -tlnp | grep 端口号，其中端口号为需要查询的端口号。具体的命令为：sudo lsof -i :端口号，其中端口号为需要查询的端口号。]]></description><category></category></item><item><title><![CDATA[Ubuntu 22.04 安装开源5G核心网（Open5GS）]]></title><link>https://blog.csdn.net/qq525003138/article/details/129702948</link><guid>https://blog.csdn.net/qq525003138/article/details/129702948</guid><author>qq525003138</author><pubDate>Wed, 22 Mar 2023 11:20:14 +0800</pubDate><description><![CDATA[安装Mongodb这里是个大坑，大部分会失败，原因是Mongodb版本和Ubuntu版本有一定对应关系，但没有明确官方说明（曾在Ubuntu16.04安装最新Mongodb失败，但是安装4.x版本却成功，但是后面安装open5gs又失败，怀疑是需要最新Ubuntu版本，于是最终选择了Ubuntu22.04），尤其是最新的Ubuntu使用的是openssl 3.0,而mongodb需要1.1版本的，需要强行安装1.1版本的（目前官方并没有文档支持22.04的ubuntu的安装方式，按照文档安装也会报错）。]]></description><category></category></item><item><title><![CDATA[【C++】关于std::ostream的构造函数]]></title><link>https://blog.csdn.net/qq525003138/article/details/122427367</link><guid>https://blog.csdn.net/qq525003138/article/details/122427367</guid><author>qq525003138</author><pubDate>Tue, 11 Jan 2022 11:38:18 +0800</pubDate><description><![CDATA[参考博客：https://blog.csdn.net/e21105834/article/details/115859154

一、问题

写了一段代码相对输出流std::osteam进行操作，可是却一直报错，代码如下：


#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;string&gt;

using namespace std;

int main(int argc, char* argv[]) 
{
    ostre]]></description><category></category></item><item><title><![CDATA[安装 g++ 遇到的问题Depends: g++-4.8 (＞= 4.8.2-5~) but it is not going to be installed]]></title><link>https://blog.csdn.net/qq525003138/article/details/121511499</link><guid>https://blog.csdn.net/qq525003138/article/details/121511499</guid><author>qq525003138</author><pubDate>Wed, 24 Nov 2021 11:36:49 +0800</pubDate><description><![CDATA[使用Win10自带的Linux子系统时，在Ubuntu18.04上安装g++出现错误如下：



看了很多办法，缺少依赖包，修复内核等等，都没有效果。最终，还是源的问题，换了好几个源，最终是更换为网易源可以使用，解决该问题。

以下是解决步骤：

1.进入/etc/apt目录下，将原有的源备份sudocp sources.list sources.list.bak





2.删除sources.list,使用vim新建sources.list，然后在编辑模式下复制以下内容（网易源）,最后一定记得要保..]]></description><category></category></item><item><title><![CDATA[表驱动优化if-else[c++]]]></title><link>https://blog.csdn.net/qq525003138/article/details/121374565</link><guid>https://blog.csdn.net/qq525003138/article/details/121374565</guid><author>qq525003138</author><pubDate>Wed, 17 Nov 2021 16:54:30 +0800</pubDate><description><![CDATA[一、表驱动是什么？

表驱动是一种编程模式，是一种将输入变量作为索引在表里查找直接的结果或者处理函数，而不是用很多的逻辑语句来进行判断(比如if-sle||switch_case).索引表可以是个数组、map或者其他高效率查找的数据结构。

二、表驱动实现方式

下面通过加减乘除来实现一个简易计算器，先用未优化的switch-case来实现：


#include &lt;iostream&gt;
#include &lt;time.h&gt;

int add(int a, int b)
{
	retur]]></description><category></category></item><item><title><![CDATA[map 自定义键值类型【c++】]]></title><link>https://blog.csdn.net/qq525003138/article/details/121306663</link><guid>https://blog.csdn.net/qq525003138/article/details/121306663</guid><author>qq525003138</author><pubDate>Sat, 13 Nov 2021 20:43:34 +0800</pubDate><description><![CDATA[众所周知，map底层是一棵RBTree,主要是通过key值比较来插入。同时，map在STL中也是一个模板类，key值可以是任意类型。但是key值是自定义类型，该如何比较。

首先，看下map的定义：


template &lt; class Key,                                   //map::key_tpe
           class T,                                     //map::mapped_type
     ]]></description><category></category></item><item><title><![CDATA[快速排序的函数模板方法实现（c++）]]></title><link>https://blog.csdn.net/qq525003138/article/details/121238585</link><guid>https://blog.csdn.net/qq525003138/article/details/121238585</guid><author>qq525003138</author><pubDate>Tue, 09 Nov 2021 23:17:34 +0800</pubDate><description><![CDATA[快速排序是比较常用的排序方法，算法的时间复杂度最好为O(nlogn)，最坏时能达到O(n²)，是一种不稳定的排序方法。

快排的基本思想
1.选取一个基准
2.将比它”小”的放在它前面，比他“大”的放在后面
3.递归处理基准位置前后的两个子区间

实现步骤
函数传入的是指向第一个元素的位置和指向最后一个元素的位置，还可以传入一个比较函数(compare)

1.选定一个基准值
我们选择中间位置的元素的值作为排序的基准值，然后将第一个指针指向开始位置，将第二个指针指向结束位置

2.比较基准值，将所有元素除去]]></description><category></category></item><item><title><![CDATA[[]c++】10个练手项目]]></title><link>https://blog.csdn.net/qq525003138/article/details/110037798</link><guid>https://blog.csdn.net/qq525003138/article/details/110037798</guid><author>qq525003138</author><pubDate>Tue, 24 Nov 2020 07:54:44 +0800</pubDate><description><![CDATA[1.写一个Json库

链接：
https://github.com/miloyip/json-tutorial/blob/master/tutorial01/tutorial01.md
2.写一个红黑树

链接：
https://github.com/william-zk/RB_Tree
写一个STL

链接：
https://github.com/Alinshans/MyTinySTL
4.写一个NoSQL

链接:
https://www.lanqiao.cn/courses/1341

写一个高..]]></description><category></category></item><item><title><![CDATA[【C++】小技巧笔记]]></title><link>https://blog.csdn.net/qq525003138/article/details/108953092</link><guid>https://blog.csdn.net/qq525003138/article/details/108953092</guid><author>qq525003138</author><pubDate>Wed, 07 Oct 2020 17:22:35 +0800</pubDate><description><![CDATA[一、一个函数获得容器中最大/最小值
方法:使用max_element(A, A+N)，此外min_element(A, A+N)可以用来找最小的元素。
以下只举了数组的例子，当然对vector、string这样的对象也是可以进行操作的，但这里不再演示。
#include &lt;stdio.h&gt;
#include &lt;algorithm&gt;
using namespace std;

int main()
{
    char ch[5] = {'a','b','c','e','f'};
  ]]></description><category></category></item><item><title><![CDATA[计数排序笔记]]></title><link>https://blog.csdn.net/qq525003138/article/details/108952635</link><guid>https://blog.csdn.net/qq525003138/article/details/108952635</guid><author>qq525003138</author><pubDate>Wed, 07 Oct 2020 17:11:54 +0800</pubDate><description><![CDATA[计数排序
提示：这里可以添加系列文章的所有文章的目录，目录需要自己手动添加
例如：第一章 Python 机器学习入门之pandas的使用

提示：写完文章后，目录可以自动生成，如何生成可参考右边的帮助文档
文章目录计数排序一、什么是计数排序？二、算法思想三、代码四、局限性
一、什么是计数排序？
计数排序是一个非基于比较的排序算法，该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时，它的复杂度为Ο(n+k)（其中k是整数的范围），快于任何比较排序算法。当然这是]]></description><category></category></item><item><title><![CDATA[【leetcode 每日一题】]]></title><link>https://blog.csdn.net/qq525003138/article/details/108894384</link><guid>https://blog.csdn.net/qq525003138/article/details/108894384</guid><author>qq525003138</author><pubDate>Thu, 01 Oct 2020 12:26:07 +0800</pubDate><description><![CDATA[【题目：】LCP 19. 秋叶收藏集
小扣出去秋游，途中收集了一些红叶和黄叶，他利用这些叶子初步整理了一份秋叶收藏集 leaves， 字符串 leaves 仅包含小写字符 r 和 y， 其中字符 r 表示一片红叶，字符 y 表示一片黄叶。
出于美观整齐的考虑，小扣想要将收藏集中树叶的排列调整成「红、黄、红」三部分。每部分树叶数量可以不相等，但均需大于等于 1。每次调整操作，小扣可以将一片红叶替换成黄叶或者将一片黄叶替换成红叶。请问小扣最少需要多少次调整操作才能将秋叶收藏集调整完毕。
示例 1：
输入：lea]]></description><category></category></item><item><title><![CDATA[【c++】生产者与消费者问题]]></title><link>https://blog.csdn.net/qq525003138/article/details/108304530</link><guid>https://blog.csdn.net/qq525003138/article/details/108304530</guid><author>qq525003138</author><pubDate>Sun, 30 Aug 2020 15:22:47 +0800</pubDate><description><![CDATA[单个生产者和单个消费者
#include &lt;iostream&gt;
#include &lt;mutex&gt;
#include &lt;condition_variable&gt;
#include &lt;Windows.h&gt;

using namespace std;

const int ITEMREPOSITORY_MAXSIZE = 10;
const int ITEMTOPRODUCE_COUNT = 100;

//使用环形队列
struct ItemRepository
{]]></description><category></category></item><item><title><![CDATA[【WINDOWS核心编程】windows获取路径的方法]]></title><link>https://blog.csdn.net/qq525003138/article/details/108175840</link><guid>https://blog.csdn.net/qq525003138/article/details/108175840</guid><author>qq525003138</author><pubDate>Sat, 22 Aug 2020 22:50:00 +0800</pubDate><description><![CDATA[【一】GetCurrentDirectory获取当前进程的当前目录（避免使用）

DWORD GetCurrentDirectory(

DWORD nBufferLength,//sizeofdirectorybuffer
LPTSTR lpBuffer//directorybuffer
);

参数说明
nBufferLength 缓冲区的长度
lpBuffer 指定一个预定义字串，用于装载当前目录
返回值
调用成功 返回装载到lpBuffer的字节数。
使用GetLastError函数可获得错...]]></description><category></category></item><item><title><![CDATA[【WINDOWS核心编程】获取系统变量值]]></title><link>https://blog.csdn.net/qq525003138/article/details/108164197</link><guid>https://blog.csdn.net/qq525003138/article/details/108164197</guid><author>qq525003138</author><pubDate>Sat, 22 Aug 2020 09:52:42 +0800</pubDate><description><![CDATA[GetEnvironmentVariable是一个从调用该函数的进程的环境变量中返回指定的变量名值的函数，主要参数有lpName、lpBuffer等。

GetEnvironmentVariable函数从调用该函数的进程的环境变量中,返回指定的变量名的值,该值是一个以零结尾的字符串指针.

DWORD GetEnvironmentVariable(

LPCTSTR lpName, // address of environment variable name

LPTSTR lpBuffer, // ad]]></description><category></category></item><item><title><![CDATA[【leetcode每日一题】20. 有效的括号]]></title><link>https://blog.csdn.net/qq525003138/article/details/108013257</link><guid>https://blog.csdn.net/qq525003138/article/details/108013257</guid><author>qq525003138</author><pubDate>Fri, 14 Aug 2020 20:41:58 +0800</pubDate><description><![CDATA[【题目：】20. 有效的括号
给定一个只包括 '('，')'，'{'，'}'，'['，']'的字符串，判断字符串是否有效。

有效字符串需满足：

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true
示例2:

输入: "()[]{}"
输出: true
示例3:

输入: "(]"
输出: false
示例4:

输入: "([)]"
输出: false
示例5:

输入: "{[]}"
输出:...]]></description><category></category></item><item><title><![CDATA[【leetcode每日一题】面试题 16.11. 跳水板]]></title><link>https://blog.csdn.net/qq525003138/article/details/107214715</link><guid>https://blog.csdn.net/qq525003138/article/details/107214715</guid><author>qq525003138</author><pubDate>Wed, 08 Jul 2020 21:06:23 +0800</pubDate><description><![CDATA[【题目：】面试题 16.11. 跳水板

你正在使用一堆木板建造跳水板。有两种类型的木板，其中长度较短的木板长度为shorter，长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法，生成跳水板所有可能的长度。
返回的长度需要从小到大排列。
示例：
输入：
shorter = 1
longer = 2
k = 3
输出： {3,4,5,6}
提示：
0 &lt; shorter &lt;= longer
0 &lt;= k &lt;= 100000

【感受：】题很简单，但思维方式的不同决]]></description><category></category></item><item><title><![CDATA[【leetcode每日一题】112. 路径总和]]></title><link>https://blog.csdn.net/qq525003138/article/details/107192911</link><guid>https://blog.csdn.net/qq525003138/article/details/107192911</guid><author>qq525003138</author><pubDate>Tue, 07 Jul 2020 23:05:50 +0800</pubDate><description><![CDATA[【题目：】112. 路径总和

给定一个二叉树和一个目标和，判断该树中是否存在根节点到叶子节点的路径，这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树，以及目标和 sum = 22，

       5
      / \
      4  8
     /  / \
     11 13 4
    / \   \
    7  2   1

返回...]]></description><category></category></item><item><title><![CDATA[【leetcode每日一题】44. 通配符匹配]]></title><link>https://blog.csdn.net/qq525003138/article/details/107140959</link><guid>https://blog.csdn.net/qq525003138/article/details/107140959</guid><author>qq525003138</author><pubDate>Sun, 05 Jul 2020 17:51:37 +0800</pubDate><description><![CDATA[【题目：】44. 通配符匹配

给定一个字符串 (s) 和一个字符模式 (p) ，实现一个支持 '?' 和 '*' 的通配符匹配。

'?' 可以匹配任何单个字符。
'*' 可以匹配任意字符串（包括空字符串）。


两个字符串完全匹配才算匹配成功。

说明:
 s 可能为空，且只包含从 a-z 的小写字母。
 p 可能为空，且只包含从 a-z 的小写字母，以及字符 ? 和 *。

示例 1:
输入:
s = "aa"
p = "a"
输出: false
解释: "a" 无法匹配 "aa" 整个字...]]></description><category></category></item><item><title><![CDATA[【leetcode每日一题】108. 将有序数组转换为二叉搜索树]]></title><link>https://blog.csdn.net/qq525003138/article/details/107117284</link><guid>https://blog.csdn.net/qq525003138/article/details/107117284</guid><author>qq525003138</author><pubDate>Fri, 03 Jul 2020 23:25:34 +0800</pubDate><description><![CDATA[【题目：】108. 将有序数组转换为二叉搜索树

将一个按照升序排列的有序数组，转换为一棵高度平衡二叉搜索树。

本题中，一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

示例:

给定有序数组: [-10,-3,0,5,9],

一个可能的答案是：[0,-3,9,-10,null,5]，它可以表示下面这个高度平衡二叉搜索树：

   0
  / \
 -3  9
 /  /
-10 5

【思路】：先想二叉搜索树的定义和特性：

二叉查找树...]]></description><category></category></item></channel></rss>