<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[编程拾掇]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/rqf520</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; rqf520]]></copyright><item><title><![CDATA[完美解决 macos无法添加向日葵到屏幕录制]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/130533389</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/130533389</guid><author>rqf520</author><pubDate>Sat, 06 May 2023 18:29:42 +0800</pubDate><description><![CDATA[sudo /usr/bin/sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceScreenCapture','com.oray.sunlogin.macclient',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1585206926)";]]></description><category></category></item><item><title><![CDATA[linux环境变量修改]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/121164242</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/121164242</guid><author>rqf520</author><pubDate>Wed, 01 Feb 2023 15:13:56 +0800</pubDate><description><![CDATA[export OPT_LINUX=/home/r/桌面/ocr。使用自带文本编辑器打开环境变量文件。]]></description><category></category></item><item><title><![CDATA[右值引用与移动语义]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/121212854</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/121212854</guid><author>rqf520</author><pubDate>Wed, 01 Feb 2023 15:08:10 +0800</pubDate><description><![CDATA[c++中引入了右值引用和移动语义，可以避免无谓的复制，提高程序性能。有点难理解，于是花时间整理一下自己的理解。

左值、右值

C++中所有的值都必然属于左值、右值二者之一。左值是指表达式结束后依然存在的持久化对象，右值是指表达式结束时就不再存在的临时对象。所有的具名变量或者对象都是左值，而右值不具名。很难得到左值和右值的真正定义，但是有一个可以区分左值和右值的便捷方法：看能不能对表达式取地址，如果能，则为左值，否则为右值。

看见书上又将右值分为将亡值和纯右值。纯右值就是c++98标准中右值的概念，如非引]]></description><category></category></item><item><title><![CDATA[c++编辑注册表实现右键菜单]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/124944478</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/124944478</guid><author>rqf520</author><pubDate>Tue, 24 May 2022 12:15:24 +0800</pubDate><description><![CDATA[c++编辑注册表实现右键菜单]]></description><category></category></item><item><title><![CDATA[vs直接调试子进程]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/115250271</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/115250271</guid><author>rqf520</author><pubDate>Fri, 26 Mar 2021 16:48:48 +0800</pubDate><description><![CDATA[当一个线程要调用另一个线程的接口函数时，在调试的时候需要调试子线程，下面讲解两种调试方法：

所需工具：Microsoft Child Process Debugging Power Tool 这个从扩展工具里面获取

首先需要把子进程设置为调试子进程，在工具栏里选择调试-&gt;其他调试目标-&gt;Child Process Debugging-&gt;enable Child Process Debug-&gt;save。
调试的时候就可以直接调试子进程了。
...]]></description><category></category></item><item><title><![CDATA[c++工厂模式]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/114869058</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/114869058</guid><author>rqf520</author><pubDate>Tue, 16 Mar 2021 10:17:49 +0800</pubDate><description><![CDATA[介绍

前文初始篇C++ 深入浅出工厂模式（初始篇），主要阐述了简单工厂模式、工厂方法模式和抽象工厂模式的结构、特点和缺陷等。以上三种方式，在新增产品时，要么修改工厂类，要么需新增具体的工厂类，说明工厂类的封装性还不够好。

本文进阶篇，主要是将工厂类的封装性提高，达到新增产品时，也不需要修改工厂类，不需要新增具体的工厂类。封装性高的工厂类特点是扩展性高、复用性也高。

模板工厂

针对工厂方法模式封装成模板工厂类，那么这样在新增产品时，是不需要新增具体的工厂类，减少了代码的编写量。

UML图：



模]]></description><category></category></item><item><title><![CDATA[以追加的方式以二进制写入]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/114629994</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/114629994</guid><author>rqf520</author><pubDate>Wed, 10 Mar 2021 10:53:08 +0800</pubDate><description><![CDATA[1、二进制文本使用fopen函数的二进制模式“rb”就可以打开。对于程序来说，不管后缀名如何，文件分为两种类型：文本文件和二进制文件。 C语言里有一系列文件操作函数。区分文本和二进制文件，需要在打开文件时设置不同的控制符mode的变量即可。
2、fopen的函数原型：FILE * fopen(const char * path,const char * mode);
fopen函数的第一个参数是文件路径，第二个参数是打开方式，有以下几种方式：
r 以只读方式打开文件，该文件必须存在。
r+ 以可读写方式打开]]></description><category></category></item><item><title><![CDATA[免费的chk恢复工具]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/108854395</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/108854395</guid><author>rqf520</author><pubDate>Mon, 28 Sep 2020 17:46:02 +0800</pubDate><description><![CDATA[https://www.raymond.cc/blog/how-to-recover-chk-files-created-by-chkdsk-and-scandisk/
]]></description><category></category></item><item><title><![CDATA[chromium代码结构]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/106253911</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/106253911</guid><author>rqf520</author><pubDate>Thu, 21 May 2020 11:55:19 +0800</pubDate><description><![CDATA[chromium源代码结构

本篇文章翻译自chromium官方的源代码结果说明

http://www.chromium.org/developers/how-tos/getting-around-the-chrome-source-code

由于目前我对chromium的代码本身还没有特别深入的了解，只希望能尽可能还原原文的意思。

目录
1 总览
2 关于解决方案文件的简要说明
3 顶级工程目录
4 "content/"下目录树的简要说明
5 "chrome/"下目录树的简要说明
6 个人的学习计划]]></description><category></category></item><item><title><![CDATA[png动态SetIcon]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/105833916</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/105833916</guid><author>rqf520</author><pubDate>Wed, 29 Apr 2020 10:28:18 +0800</pubDate><description><![CDATA[#include "atlimage.h"
HICON ToIcon(const std::wstring wstrFile, std::wstring wstrSaveFile = L"")
{
 CImage img;
 img.Load(wstrFile.c_str());//可以是jpg,png,gif格式图片
 int w = img.GetWidth();
 i...]]></description><category></category></item><item><title><![CDATA[编译chromium笔记]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/104449839</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/104449839</guid><author>rqf520</author><pubDate>Sat, 22 Feb 2020 20:31:47 +0800</pubDate><description><![CDATA[最近成功编译了chromium，看网上很多人要么写得太复杂，要么是很久以前的了。自己编译成功后发现其实也就那么回事，没那么复杂。下面是个人成功编译的笔记，稍微整理。



有效参考：
https://www.cnblogs.com/kanego/p/4086686.html
https://blog.youkuaiyun.com/longji/article/details/80967225
http...]]></description><category></category></item><item><title><![CDATA[命令行连接mysql时出现Authentication plugin ‘caching_sha2_password‘ cannot be loaded: 找不到指定的模块]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/104040494</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/104040494</guid><author>rqf520</author><pubDate>Sun, 19 Jan 2020 14:43:49 +0800</pubDate><description><![CDATA[命令行连接mysql时出现Authentication plugin 'caching_sha2_password' cannot be loaded: 找不到指定的模块。

通过如下命令进入数据库

mysql -uroot -p


2.之后执行如下命令


ALTER USER 'root'@'localhost' IDENTIFIED BY 'abc@123' PASSWORD EXPIR...]]></description><category></category></item><item><title><![CDATA[_ASSERTE(_CrtIsValidHeapPointer(block))]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/104016711</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/104016711</guid><author>rqf520</author><pubDate>Fri, 17 Jan 2020 11:34:31 +0800</pubDate><description><![CDATA[在不同的模块分配的内存，释放的时候会出现此问题，而此问题，只在Debug模式会提示，Release模式不会提示。但不提示并不代表没有错误，一定要解决之。解决的方法是：在哪个模块分配的内存，就在哪个模块释放。



这个错误有两种可能：

一.释放的问题

1，内存不能跨模块分配和释放，模块分配的内存必须由该模块自己来释放。应该在DLL中再加一个方法，比如MemRelease，主程序调用这个方法来...]]></description><category></category></item><item><title><![CDATA[windows路径操作API函数]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/104001852</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/104001852</guid><author>rqf520</author><pubDate>Thu, 16 Jan 2020 11:33:00 +0800</pubDate><description><![CDATA[注意：有一些函数已经有了安全版本，下面这些函数使用前可msdn看一下


			路径截断与合并函数
			
			
			
			
		
			
			
			
			
			
		
			PathRemoveArgs
			
			
			去除路径的参数
			
		
			PathRemoveBackslash
			
			
			去除路径最后的反斜杠“\”
			
		
			...]]></description><category></category></item><item><title><![CDATA[mysql占大量磁盘空间]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/103780689</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/103780689</guid><author>rqf520</author><pubDate>Tue, 31 Dec 2019 12:31:58 +0800</pubDate><description><![CDATA[经历的是mysql安装在c盘，插入大量数据的时候导致c盘爆满，以下是解决办法：

1.删除日志：

查看日志文件，显示所有日志文件（包含文件名，和文件大小）：


show binary logs

查看当前正在使用的日志文件（这个文件无法被删除，即使在这里删除掉了，还会自动产生）：


show master status

删除日志：

注意这里的文件名，要改成上面查询到的文件名。

删除除 ...]]></description><category></category></item><item><title><![CDATA[curl+openssl编译]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/103067518</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/103067518</guid><author>rqf520</author><pubDate>Thu, 14 Nov 2019 14:59:53 +0800</pubDate><description><![CDATA[编译win32需要使用vs命令行x86,64需使用x64
pushd D:\curl+openssl\source_code\openssl-master
perl Configure VC-WIN32 no-asm no-shared --prefix="D:\curl+openssl\source_code\openssl_bulider"
这个时候如果返回 “警告被视为误错误，，没有生成ob...]]></description><category></category></item><item><title><![CDATA[设计模式——合成/聚合复用原则]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/103009788</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/103009788</guid><author>rqf520</author><pubDate>Mon, 11 Nov 2019 14:45:19 +0800</pubDate><description><![CDATA[一、什么是合成/聚合复用原则？
合成/聚合复用原则是在一个新的对象里面使用一些已有的对象，使之成为新对象的一部分；新的对象通过向这些对象的委派达到复用已有功能的目的。

简述为：要尽量使用合成/聚合，尽量不要使用继承。

二、合成和聚合的区别；依赖和关联
合成(Composition)和聚合(Aggregation)都是关联(Association)的特殊种类。用C语言来讲，合成是值的聚合(Agg...]]></description><category></category></item><item><title><![CDATA[设计模式——合成/聚合复用原则]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/103009724</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/103009724</guid><author>rqf520</author><pubDate>Mon, 11 Nov 2019 14:41:24 +0800</pubDate><description><![CDATA[一、什么是合成/聚合复用原则？
合成/聚合复用原则是在一个新的对象里面使用一些已有的对象，使之成为新对象的一部分；新的对象通过向这些对象的委派达到复用已有功能的目的。

简述为：要尽量使用合成/聚合，尽量不要使用继承。

二、合成和聚合的区别；依赖和关联
合成(Composition)和聚合(Aggregation)都是关联(Association)的特殊种类。用C语言来讲，合成是值的聚合(Agg...]]></description><category></category></item><item><title><![CDATA[windows appcrash 注册表配置 dump生成]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/102698796</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/102698796</guid><author>rqf520</author><pubDate>Wed, 23 Oct 2019 11:54:58 +0800</pubDate><description><![CDATA[一、生成Dump文件方式

1.1任务管理器

在程序崩溃后，先不关闭程序，在任务管理器中找到该程序对应的进程。右键—&gt;创建转储文件。





此时会在默认的目录下创建出一个dump文件。





可以看出，此种方法只适用于程序崩溃但没有立即自行退出的情况。倘若程序故障后自行退出，则此方法就难以应用。不过，我们可以在注册表中添加如下信息已确保系统在程序崩溃后自行保存一个dum...]]></description><category></category></item><item><title><![CDATA[curl openssl 访问https 返回 CURLE_PEER_FAILED_VERIFICATION]]></title><link>https://blog.youkuaiyun.com/rqf520/article/details/96453865</link><guid>https://blog.youkuaiyun.com/rqf520/article/details/96453865</guid><author>rqf520</author><pubDate>Thu, 18 Jul 2019 20:49:37 +0800</pubDate><description><![CDATA[用curl库访问https网页，先看下支不支持https协议，但是报这个error:CURLE_PEER_FAILED_VERIFICATION (51) – 远程服务器的 SSL 证书或 SSH md5 指纹不正确。

在网上搜罗了一番，找到这个链接：http://www.cnblogs.com/ainiaa/archive/2011/11/08/2241385.html；非常感谢作者，但是第二...]]></description><category></category></item></channel></rss>