<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DLililiDengDaa~~]]></title><description><![CDATA[I don't wanna be a big man,Just wanna fight with everyone else!]]></description><link>https://blog.youkuaiyun.com/WJSZMD</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; WJSZMD]]></copyright><item><title><![CDATA[weakptr-void sharedptr-void知多少及智能指针的类型转换]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/106436008</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/106436008</guid><author>WJSZMD</author><pubDate>Sat, 30 May 2020 00:59:49 +0800</pubDate><description><![CDATA[void*裸指针的使用及转换
我们知道,在使用裸指针时,对于那些不确定的类型指针,我们可以用void*来进行指向.
真正知道了类型之后,需要进行转换.具体的转换方式有:
static_cast&lt;T*&gt;
const_cast&lt;T*&gt;
reinterpret_cast&lt;T*&gt;
dynamic_cast&lt;T*&gt;


static_cast:
显式转换,只要你知道要转换的类型,且不包含底层const都可以使用.这也是最常用的一个转换:
  double d = 2;
]]></description><category></category></item><item><title><![CDATA[POLLHUP vs POLLNVAL vs EPOLLHUP]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/106349009</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/106349009</guid><author>WJSZMD</author><pubDate>Tue, 26 May 2020 10:08:56 +0800</pubDate><description><![CDATA[POLLNVAL
POLLNVALis equivalent to EBADF: it means the file descriptor does not actually refer to any open file, i.e. it was closed or never open to begin with. This can never happen except as a result of a programming error or intentional attempt to query ]]></description><category></category></item><item><title><![CDATA[pthread_join(),pthread_exit(),pthread_detach()]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/106278798</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/106278798</guid><author>WJSZMD</author><pubDate>Fri, 22 May 2020 14:21:26 +0800</pubDate><description><![CDATA[简介

pthread有两种状态joinable状态(属性)和unjoinable状态，如果线程是joinable状态，当线程函数自己返回退出时或pthread_exit时都不会释放线程所占用堆栈和线程描述符。只有当你调用了pthread_join之后这些资源才会被释放。若是unjoinable状态的线程，这些资源在线程函数退出时或pthread_exit时自动会被释放。
unjoinable属性可以在pthread_create时指定，或在线程创建后在线程中pthread_detach自己, 如：pthr]]></description><category></category></item><item><title><![CDATA[Keras的自定义lambda层去reshape tensor张量时model保存出错的解决办法]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/103944393</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/103944393</guid><author>WJSZMD</author><pubDate>Sun, 12 Jan 2020 12:02:11 +0800</pubDate><description><![CDATA[背景
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 分割网络在进行上采样的时候我用的是双线性插值上采样的，而Keras里面并没有实现双线性插值的函数，所以要自己调用tensorflow里面的tf.image.resize_bilinear()函数来进行resize,如果直接用tf.image.resize_bilinear()函数对Keras张量进行resize的话，会报出...]]></description><category></category></item><item><title><![CDATA[使用GDB进行多线程调试的基本常用命令]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/103764204</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/103764204</guid><author>WJSZMD</author><pubDate>Mon, 30 Dec 2019 12:13:39 +0800</pubDate><description><![CDATA[1. 线程的查看
首先创建两个线程：
#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;
#include &lt;pthread.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

void* pthread_run1(void* arg)
{
    (void)arg;

  ...]]></description><category></category></item><item><title><![CDATA[VS2017+QT打包程序发布]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/100174105</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/100174105</guid><author>WJSZMD</author><pubDate>Sat, 31 Aug 2019 16:18:12 +0800</pubDate><description><![CDATA[https://www.cnblogs.com/doudou-1102/p/10266010.html

]]></description><category></category></item><item><title><![CDATA[海量数据处理算法—Bit-Map---面试题集锦]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/99613758</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/99613758</guid><author>WJSZMD</author><pubDate>Wed, 14 Aug 2019 21:55:21 +0800</pubDate><description><![CDATA[Bitmap算法简介:
https://blog.youkuaiyun.com/hguisu/article/details/7880288
面试题集锦:
https://blog.youkuaiyun.com/v_july_v/article/details/6685962

]]></description><category></category></item><item><title><![CDATA[java中的接口与C++的多继承]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/99318164</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/99318164</guid><author>WJSZMD</author><pubDate>Mon, 12 Aug 2019 17:59:23 +0800</pubDate><description><![CDATA[JAVA接口含义
https://www.runoob.com/java/java-interfaces.html
Java中接口的作用
问题: 例如我定义了一个接口，但是我在继承这个接口的类中还要写接口的实现方法，那我不如直接就在这个类中写实现方法岂不是更便捷，还省去了定义接口？
解答:
接口就是个招牌。比如说你今年放假出去杭州旅游，玩了一上午，你也有点饿了，突然看到前面有个店子，上面挂着KFC...]]></description><category></category></item><item><title><![CDATA[宏定义函数-普通函数-内联函数区别]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/94613709</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/94613709</guid><author>WJSZMD</author><pubDate>Thu, 04 Jul 2019 13:59:32 +0800</pubDate><description><![CDATA[宏定义函数VS普通函数VS内联函数
宏定义函数VS普通函数

宏定义函数



要点：变量都用括号括起来，防止出错，结尾不需要;。在实际编程中，不推荐把复杂的函数使用宏，不容易调试。多行用\


例子:
单行:
#define MAX(a, b) ((a) &gt; (b) ? (a):(b))
多行:
#define MALLOC(n, type) \
((type *) malloc((n)*...]]></description><category></category></item><item><title><![CDATA[CString,string,char*转换]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/92829791</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/92829791</guid><author>WJSZMD</author><pubDate>Wed, 19 Jun 2019 13:41:19 +0800</pubDate><description><![CDATA[CString,string,char*转换
首先假设这里CString是CStringA,之后再讨论CStringW的转换.

string=&gt; CString

string str;
CString cstr;
cstr.format("%s",str.c_str());


CString=&gt; string

CString cstr;
string str(cstr.GetB...]]></description><category></category></item><item><title><![CDATA[函数对象和函数指针]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/92434347</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/92434347</guid><author>WJSZMD</author><pubDate>Sun, 16 Jun 2019 22:08:16 +0800</pubDate><description><![CDATA[函数指针


函数指针：是指向函数的指针变量，在C编译时，每一个函数都有一个入口地址，那么这个指向这个函数的函数指针便指向这个地址。


用途：用作调用函数和做函数的参数。


声明方法：数据类型标志符 （指针变量名） （形参列表）
int (*func) (int x); 这里的(*func)不能去掉括号,去掉括号就是返回值为int指针的函数声明。


一般用typedef：
typedef i...]]></description><category></category></item><item><title><![CDATA[可变形参的函数]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/92434202</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/92434202</guid><author>WJSZMD</author><pubDate>Sun, 16 Jun 2019 22:06:30 +0800</pubDate><description><![CDATA[可变形参的函数
总共有三种方式:

initializer_list (c++11)
省略符形参
可变参数模板 (c++11)

initializer_list
这种只适用于全部实参类型相同,我们可用initializer_list类型的形参.
注意initializer_list也是模板类型,但与vector不同的是,initializer_list中的元素值永远是常量值,我们无法去改变它的元...]]></description><category></category></item><item><title><![CDATA[同步-异步-阻塞-非阻塞全面解析]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/90906059</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/90906059</guid><author>WJSZMD</author><pubDate>Wed, 05 Jun 2019 17:28:23 +0800</pubDate><description><![CDATA[阻塞/非阻塞/同步/异步
首先结论如下:
对于unix来说:

阻塞式I/O(默认)
非阻塞I/O(nonblock)
I/O复用(select/poll/epoll)

都是同步I/O,因为它们在数据由内核空间复制回进程缓冲区时都是阻塞的(不能干别的事)。

AIO异步I/O模型

它是异步I/O,因为异步I/O是这个含义:

数据准备完成
由内核空间拷贝回缓冲区后 并通知进程

在进程收到通知...]]></description><category></category></item><item><title><![CDATA[vscode配置c++环境 如何在windows上开发linux程序]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/90680501</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/90680501</guid><author>WJSZMD</author><pubDate>Wed, 29 May 2019 23:16:51 +0800</pubDate><description><![CDATA[VSCode(c/c++插件)配置C++环境
请看官方文档足够解决大部分问题.


如果您只想要一个轻量级工具来编辑C ++文件，Visual Studio Code是一个很好的选择。但是，如果您希望获得现有Visual C ++项目的最佳体验或在Windows上进行调试，建议使用Visual Studio IDE.


C/C++扩展不包括C ++编译器或调试器。
这里有几个编译器的选择:

C...]]></description><category></category></item><item><title><![CDATA[extern,extern C,头文件中可否定义变量,static,const等汇总]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/90216481</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/90216481</guid><author>WJSZMD</author><pubDate>Tue, 14 May 2019 22:15:50 +0800</pubDate><description><![CDATA[extern , extern “C” 作用, 该不该在头文件中定义全局变量? 以及C中的const static,C++中的static 和 const区别联系.
extern
首先说明extern,一般来说extern的作用是告诉编译器,我要引用别的模块定义的变量或者函数啦. 即extern xxx;只用来声明,而不定义.
一般用法如下:
对于extern 变量:
A.c
#include &...]]></description><category></category></item><item><title><![CDATA[strcpy的不安全之处]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/90044530</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/90044530</guid><author>WJSZMD</author><pubDate>Thu, 09 May 2019 17:47:58 +0800</pubDate><description><![CDATA[不安全的strcpy
strcpy
将src指向的以null结尾的字节字符串（包括null终止符）复制到dest指向其第一个元素的字符数组。
如果dest数组不够大，则行为未定义。 如果字符串重叠，则行为未定义。 如果dest不是指向字符数组的指针，或者src不是指向以null结尾的字节字符串的指针，则行为是未定义的。
strcpy,strncpy等函数都不安全.原因在于他们都不检查边界,极易造成...]]></description><category></category></item><item><title><![CDATA[SIGINT,SIGKILL,SIGTERM信号区别,各类信号总结]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/89331751</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/89331751</guid><author>WJSZMD</author><pubDate>Tue, 16 Apr 2019 13:43:24 +0800</pubDate><description><![CDATA[SIGINT,SIGKILL,SIGTERM
三者都是结束/终止进程运行.但略微有区别.
SIGINT

产生方式: 键盘Ctrl+C
产生结果: 只对当前前台进程,和他的所在的进程组的每个进程都发送SIGINT信号,之后这些进程会执行信号处理程序再终止.

SIGTERM

产生方式: 和任何控制字符无关,用kill函数发送
本质: 相当于shell&gt; kill不加-9时 pid.
产生结...]]></description><category></category></item><item><title><![CDATA[函数调用约定(cdecl,stdcall,thiscall...等区别)]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/89000293</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/89000293</guid><author>WJSZMD</author><pubDate>Wed, 03 Apr 2019 17:13:55 +0800</pubDate><description><![CDATA[X86函数调用约定(cdecl,stdcall,fastcall,thiscall…)
调用者清理堆栈的约定:
在这些约定中，调用者自己清理堆栈上的参数(arguments)，这样就允许了可变参数列表的实现，如printf()。
cdecl
cdecl(C declaration，即C声明)是源起C语言的一种调用约定，也是C语言的事实上的标准。在x86架构上，其内容包括：

函数实参在线程栈上按照...]]></description><category></category></item><item><title><![CDATA[[C++] 分析std::iterator和std::iterator_traits]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/81877451</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/81877451</guid><author>WJSZMD</author><pubDate>Mon, 20 Aug 2018 20:39:14 +0800</pubDate><description><![CDATA[std::iterator和std::iterator_traits



std::iterator

std::iterator是一个模板类，其声明为：  



template&amp;lt; 
    class Category,
    class T,
    class Distance = std::ptrdiff_t,
    class Pointer = T*,
    clas...]]></description><category></category></item><item><title><![CDATA[[LeetCode] 804. Unique Morse Code Words]]></title><link>https://blog.youkuaiyun.com/WJSZMD/article/details/80245973</link><guid>https://blog.youkuaiyun.com/WJSZMD/article/details/80245973</guid><author>WJSZMD</author><pubDate>Tue, 08 May 2018 21:16:26 +0800</pubDate><description><![CDATA[题目描述：

a-z都有对应的莫斯密码 
为： 
[“.-“,”-…”,”-.-.”,”-..”,”.”,”..-.”,”–.”,”….”,”..”,”.—”,”-.-“,”.-..”,”–”,”-.”,”—”,”.–.”,”–.-“,”.-.”,”…”,”-“,”..-“,”…-“,”.–”,”-..-“,”-.–”,”–..”]



Example:
Input: words = [&quot;gin...]]></description><category></category></item></channel></rss>