<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HelloNiGeSB的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/HelloNiGeSB</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; HelloNiGeSB]]></copyright><item><title><![CDATA[Windows一个进程启动或者激活其他任意一个桌面进程]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/131641240</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/131641240</guid><author>HelloNiGeSB</author><pubDate>Mon, 10 Jul 2023 16:58:10 +0800</pubDate><description><![CDATA[先描述本文解决了什么问题：类似一个辅助进程，可以控制目标进程的启动、如果目标进程已经启动那么激活到桌面最前端的功能。本文解决的问题：1、一个进程已当前登录用户启动目标进程，这么做是由于，当辅助进程如果以管理员权限打开，启动另一个进程的时候，默认是以管理员权限启动的，这会导致程序中获取的路径不对，影响功能的正常执行，以及其他位置问题。2、一个进程激活Windows桌面进程，主要解决的是Windows安全机制导致的很多场景，无法完成对目标进程的激活3、如果目标进程最小化，该如何激活。]]></description><category></category></item><item><title><![CDATA[Windows 程序开机自启动速度优化，为什么腾讯会议自启动速度那么高？]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/130405263</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/130405263</guid><author>HelloNiGeSB</author><pubDate>Thu, 27 Apr 2023 14:48:01 +0800</pubDate><description><![CDATA[这两天有个优化项需要做个技术调研，就是我们项目的开机启动时间比较长，大概20多秒，但对比腾讯会议Rooms，这款软件的自启动就异常的快，用户登录几秒就可以看到程序界面。拿到任务了，开干吧！！！！！！]]></description><category></category></item><item><title><![CDATA[breakpad编译指南（Windows）]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/130260704</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/130260704</guid><author>HelloNiGeSB</author><pubDate>Thu, 20 Apr 2023 12:17:38 +0800</pubDate><description><![CDATA[在编译breakpad时候，遇到各种各样的问题，做些记录，以便后续参考Windows下编译（注：安装参考文档中设置环境变量只添加的C:\Python27，尽量把C:\Python27\Scripts也加入到环境变量中）]]></description><category></category></item><item><title><![CDATA[右值引用-移动构造详解]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/124224989</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/124224989</guid><author>HelloNiGeSB</author><pubDate>Sun, 17 Apr 2022 10:19:29 +0800</pubDate><description><![CDATA[先理解右值引用，要理解右值引用先要回顾左值引用，要理解左值引用先回顾下右值和左值

定义：左值与右值的定义在于一个赋值等号，赋值等号左边成为左值，等号右边成为右值

左值（L-value）：表示存储在计算机内存的对象，可寻址，相当于地址值

右值（R-value）：代表的为真实值，可读，即数据值

左值引用，是一种数据类型，他是对一个左值的引用，同理右值引用，也是一种数据类型，他是对优质的引用

左值引用常用的场景是函数参数的传递，相当于扩展了左值的作用域到函数中

那么在来说说右值引用，普通的右值引用好理]]></description><category></category></item><item><title><![CDATA[详解单例模式]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/124135788</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/124135788</guid><author>HelloNiGeSB</author><pubDate>Tue, 12 Apr 2022 22:59:14 +0800</pubDate><description><![CDATA[定义 

保证一个类仅有一个实例，并提供一个该实例的全局访问点。 ——《设计模式》GoF 



版本一



class Singleton
{
public: static Singleton * GetInstance()
    {
        if (_instance == nullptr)
        {
            _instance = new Singleton();
        }
        return _instance;
    }

private]]></description><category></category></item><item><title><![CDATA[布隆过滤器学习梳理]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/124047112</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/124047112</guid><author>HelloNiGeSB</author><pubDate>Fri, 08 Apr 2022 18:30:55 +0800</pubDate><description><![CDATA[感觉要理解布隆过滤器，需要从二叉树说起

平衡二叉树的性质：可以已logn的速度进行搜索，但由于二叉树是要保存key和value，及时使用set，也是需要保存key的，那么如果数据量巨大的时候，比如上亿的数据量，这时候如果在查询的时候，用二叉搜索树，就需要将其都加载到内存中，内存就会爆掉

布隆过滤器就解决了上述问题，可以不用那么多的内存空间，实现数据的查询，但他的查询是有一定局限性的，只能在指定的场景下使用：如果要经常判断 1 个元素是否存在

它是一个空间效率高的概率型数据结构，可以用来告诉你：一个元素]]></description><category></category></item><item><title><![CDATA[B树学习梳理]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/123957040</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/123957040</guid><author>HelloNiGeSB</author><pubDate>Wed, 06 Apr 2022 15:23:05 +0800</pubDate><description><![CDATA[一颗M阶B树T，满足以下条件 

1. 每个结点至多拥有M课子树 

2. 根结点至少拥有两颗子树 

3. 除了根结点以外，其余每个分支结点至少拥有M/2课子树 

4. 所有的叶结点都在同一层上 

5. 有k课子树的分支结点则存在k-1个关键字，关键字按照递增顺序进行排序 

6. 关键字数量满足ceil(M/2)-1 &lt;= n &lt;= M-1



B树和二叉树一样，也属于搜索树，是多叉搜索树，M阶的意思是只每个节点做多可以有M个子树



B树的搜索：

1.先在节点内部从小到大开始搜.]]></description><category></category></item><item><title><![CDATA[红黑树学习整理]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/123918016</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/123918016</guid><author>HelloNiGeSB</author><pubDate>Sat, 02 Apr 2022 19:18:38 +0800</pubDate><description><![CDATA[定义：

1.每个节点不是红色就是黑色；

2.根节点是黑色

3.如果一个节点是红色，则他的两个孩子节点是黑色（从每个叶子到跟的所有路径不能有两个连续的红色节点）

4.对于每个节点，从该节点到其所有后代节点的简单路径上，均包含相同数目的黑色节点

5.每个叶子节点都是黑色的（此处的叶子节点是值空节点如下图解释，看似24是叶子节点，但对于红黑树来说，最后的两个空子节点才是叶子节点）



二叉树节点和二叉树的代码定义


typedef struct _rbtree_node {
    unsigned]]></description><category></category></item><item><title><![CDATA[error C2062: 意外的类型“__int64”]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/111630610</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/111630610</guid><author>HelloNiGeSB</author><pubDate>Thu, 24 Dec 2020 14:58:25 +0800</pubDate><description><![CDATA[今天升级了一下公司的项目 vs2013 qt5.9.0 osg 3.4.1 升级到 vs2017 qt5.12.10 osg3.6.5，升级后编译的时候报错

error C2062: 意外的类型“__int64”

error C3805: “类型”: 意外标记，应输入“}”或者“,”

error C2039: “UNDEFINED”: 不是“osg::Uniform”的成员



点击后发现是在Uniform 文件的一个枚举INT64 对比老版本的文件发现没有此枚举

所以考虑可能有些文件和这个枚举.]]></description><category></category></item><item><title><![CDATA[错误 The inferior stopped because it received a signal from the Operating System]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/103677802</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/103677802</guid><author>HelloNiGeSB</author><pubDate>Tue, 24 Dec 2019 09:55:04 +0800</pubDate><description><![CDATA[接手了前同事的一个烂摊子，用的mingW的编译器，试图给其切换到msvc编译器，但编译问题，加上各种库的依赖，导致耗时严重，领导又不给时间，所以就在现有基础上接着搞吧。

一开始很不习惯mingW，感觉调试不好调试，编译器检测还不严格，各种坑，就比如说这个错误，搞得我一头雾水，后来网上说是野指针，但是翻了几遍代码，也没发现有野指针，后来想了一下，mingW在编译的时候，如果不主动return，是能...]]></description><category></category></item><item><title><![CDATA[C++编译错误 error LNK2019: 无法解析的外部符号]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/82054544</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/82054544</guid><author>HelloNiGeSB</author><pubDate>Sat, 25 Aug 2018 19:48:34 +0800</pubDate><description><![CDATA[今天在整理代码时候，出现这个错误，一开始感觉很奇葩，因为怎么看都不应该出现这个问题，后来冷静下来分析原因，发现没找到对应CPP的obj文件，所以在链接时候肯定链接不到，然后就很郁闷，为什么这个CPP没有编译呢？后来我看了一下此CPP属性（vs 2017 中找到对应CPP右键属性即可），发现它的文件属性是C/C++ 标头，原来我的CPP文件是从.h拷贝过来的，导致该CPP的属性还是头文件，解决办法，...]]></description><category></category></item><item><title><![CDATA[读书笔记（C++ Primer 6.2.4数组形参）]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/81983085</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/81983085</guid><author>HelloNiGeSB</author><pubDate>Thu, 23 Aug 2018 18:40:55 +0800</pubDate><description><![CDATA[感觉这一小节有三点是我之前一直不太清楚的，或者是不曾注意的

1、不允许拷贝数组（之前没注意这个知识点），这个特性直接导致了第二点（数组传参会转换成指针）

2、为函数传递一个数组是，实际上传递的是指向数组的首元素的指针

3、数组引用参数 void print(int (&amp;amp;arr)[10]);

 

1、针对第一点比较简单，例如下面写法是不会被编译通过的


	int a[] = { ...]]></description><category></category></item><item><title><![CDATA[MD5 标准C++实现]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/75646351</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/75646351</guid><author>HelloNiGeSB</author><pubDate>Fri, 21 Jul 2017 20:32:23 +0800</pubDate><description><![CDATA[工作中需要用到MD5进行加密，在网上搜的一个代码，亲测可用，留作以后需要
#ifndef MD5_H
#define MD5_H

// Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
// rights reserved.

// License to copy and use this software is g]]></description><category></category></item><item><title><![CDATA[qt信号槽深度剖析]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/74724242</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/74724242</guid><author>HelloNiGeSB</author><pubDate>Fri, 07 Jul 2017 15:37:02 +0800</pubDate><description><![CDATA[本文转载自http://blog.csdn.net/oowgsoo/article/details/1529411
好文一定要留下来，以备之后学习参考，耐心看完，会对理解qt有帮助的



Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的
说法,简单点说就是如何在一个类的]]></description><category></category></item><item><title><![CDATA[算法学习-所有括号匹配的字符串]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/53857038</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/53857038</guid><author>HelloNiGeSB</author><pubDate>Sat, 24 Dec 2016 11:20:47 +0800</pubDate><description><![CDATA[题目：


N对括号能够得到的有效括号序列有哪些？
如N=3时，有效括号串共5个，分别为：
1：（）（）（）
2：（）（（））
3：（（））（）
4：（（）（））
5：（（（）））



问题分析：


任何一个括号，都可以写成形式A（B）




A、B都是若干括号对形成的合法串（可为空串）





若N=0，括号序列为空。]]></description><category></category></item><item><title><![CDATA[算法学习-二叉树的翻转]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/53856771</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/53856771</guid><author>HelloNiGeSB</author><pubDate>Sat, 24 Dec 2016 10:37:27 +0800</pubDate><description><![CDATA[题目


给定一颗二叉树，将其左右翻转。
如下图

代码如下

void CBinaryTree::Reverse()
{
	_Reverse(m_pRoot);
}

void CBinaryTree::_Reverse(STreeNode* pRoot)
{
	if (pRoot)
	{
		swap(pRoot->pLeft, pRoot->pRight);
		_Rever]]></description><category></category></item><item><title><![CDATA[算法学习-求最大二查搜索子树]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/53856483</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/53856483</guid><author>HelloNiGeSB</author><pubDate>Sat, 24 Dec 2016 10:09:35 +0800</pubDate><description><![CDATA[题目：


给定某二叉树，计算它的最大二查搜索子树。返回该最大二查搜索子树的根节点。
规定：如果某子树拥有更多的节点，则该子树更大。一颗树的子树，指以某节点为根的所有节点。
如下图的二叉树，返回81.



题目解析：



若某节点的左右子树都是二查搜索树，且能够计算该节点左子树的最大值max和右子树的最小值min，记该节点的值为value
若value>max且va]]></description><category></category></item><item><title><![CDATA[算法学习-Huffman编码]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/53725587</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/53725587</guid><author>HelloNiGeSB</author><pubDate>Sun, 18 Dec 2016 18:05:26 +0800</pubDate><description><![CDATA[Huffman编码是一种无损压缩编码方案。
思想：根据源字符出现的（估算）概率对字符编码，概率搞的字符使用较短的编码，概率低的使用较长的编码，从而使得编码后的字符串长度期望最小。
Huffman编码是一种贪心算法：每次总选择两个最小概率的字符结点结合。


称字符出现的次数为频数，则概率约等于频数初一字符总长，因此，概率可以用频数代替。

算法演示]]></description><category></category></item><item><title><![CDATA[算法学习-Cantor数组]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/53487817</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/53487817</guid><author>HelloNiGeSB</author><pubDate>Tue, 06 Dec 2016 16:21:02 +0800</pubDate><description><![CDATA[题目


已知数组A[0...N-1]乱序着前N个正整数，现统计后缀数组A[i+1...N-1]中小于元素A[i]的数目，并存放在数组C[i]中。如给定数组A={4,6,2,5,3,1},得到数组C={3,4,1,2,1,0}。
问：给定数组C={3,4,1,2,1,0},如何恢复数组A？
我们称A为原数组，C为Cantor数组。

求Cantor数组代码如下

void Can]]></description><category></category></item><item><title><![CDATA[算法学习-数组的最大间隔]]></title><link>https://blog.csdn.net/HelloNiGeSB/article/details/53486384</link><guid>https://blog.csdn.net/HelloNiGeSB/article/details/53486384</guid><author>HelloNiGeSB</author><pubDate>Tue, 06 Dec 2016 15:33:26 +0800</pubDate><description><![CDATA[题目


给定整数数组A[0...N-1]，求这N个数排序后最大间隔。如1，7，14，9，4，13的最大减个为4。
排序后：1，4，7，9，13，14，最大间隔是13-9=4
显然，对原来数组排序，然后求后项减前项的最大值，即为解，但还有更好的方法。

分析



假定N个数的最大最小之为max，min，则这N个数形成N-1个间隔，最大间隔的最小值是（max-min）/（N-]]></description><category></category></item></channel></rss>