<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zengkui198513的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zengkui198513</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zengkui198513]]></copyright><item><title><![CDATA[153. 寻找旋转排序数组中的最小值（leecode）]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/143084427</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/143084427</guid><author>zengkui198513</author><pubDate>Sat, 19 Oct 2024 21:38:32 +0800</pubDate><description><![CDATA[面对leecode 的这种题不行了，因为我们没有比较target ,就是无法判断break的情况，所以像上面的写法的作用最精妙的地方就在于。下面这个代码没有问题，但是他的场景就是返回我们找的到的数不？就是判断一个数是否在数组里面，因为这个代码最后的结局肯定是left =right;所以判断循环结束的条件。这道题对二分的代码编写有十分重要的影响（对于我来说）left<right 也可以退出啊；首先一般我们写的二分代码像下面这样。按道理说、left = right。但是有循环的可能，第一个测试用例。]]></description><category></category></item><item><title><![CDATA[函数栈帧调用]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/142259389</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/142259389</guid><author>zengkui198513</author><pubDate>Sat, 14 Sep 2024 15:17:00 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[C++ push_back和emplace_back的区别]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/142215210</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/142215210</guid><author>zengkui198513</author><pubDate>Fri, 13 Sep 2024 17:06:34 +0800</pubDate><description><![CDATA[但是再自定义类型的时候？emplace——back更高效，但是emplace_back 没有类型检查的安全；只有运行时候才会报错。直接再最后构造对象 ，然后push_back 先构造 ，再转移。基本类型情况西，两者几乎没什么区别。]]></description><category></category></item><item><title><![CDATA[非递归方式实现树的前序后序遍历]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/141114514</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/141114514</guid><author>zengkui198513</author><pubDate>Mon, 12 Aug 2024 00:07:12 +0800</pubDate><description><![CDATA[然后整体的结果不就是中右左了嘛 ，然后这时候对其进行反转，结果如何呢？左右中 卧槽 ，帧厉害。细节：前序遍历是中 左右 后续遍历时左 右 中。这里就是先把这两行代码替换一下。]]></description><category></category></item><item><title><![CDATA[C语言面试]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/140758367</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/140758367</guid><author>zengkui198513</author><pubDate>Sun, 28 Jul 2024 23:14:24 +0800</pubDate><description><![CDATA[/ 尽管在这里 打印出来的值 arr 和 & arr的值是一样的 ，但是arr的类型是 char * &arr的类型是char（*）[7] 这里同样解释了为什么&arr+1 会跳过7个元素了。// 运行注释的代码会报错。]]></description><category></category></item><item><title><![CDATA[Tcp解决分包和粘包的问题]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/140001573</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/140001573</guid><author>zengkui198513</author><pubDate>Thu, 27 Jun 2024 00:30:46 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[GDB使用]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/139756999</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/139756999</guid><author>zengkui198513</author><pubDate>Tue, 18 Jun 2024 00:06:02 +0800</pubDate><description><![CDATA[首先安装gdb工具。]]></description><category></category></item><item><title><![CDATA[非阻塞IO]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/139510813</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/139510813</guid><author>zengkui198513</author><pubDate>Thu, 06 Jun 2024 22:01:46 +0800</pubDate><description><![CDATA[我们怎么实现非阻塞io。]]></description><category></category></item><item><title><![CDATA[腾讯云ip问题]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/139013640</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/139013640</guid><author>zengkui198513</author><pubDate>Fri, 17 May 2024 21:49:46 +0800</pubDate><description><![CDATA[我们跨主机想使用upd进行通信的时候，用的是下面这个ip。但是我们登录腾讯云的ip地址跟这个完全不一样。这里有一个ip地址，是内网IP。我们查看 ifconfig。]]></description><category></category></item><item><title><![CDATA[计算机网络 1]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/138900476</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/138900476</guid><author>zengkui198513</author><pubDate>Wed, 15 May 2024 21:54:47 +0800</pubDate><description><![CDATA[上面的每一个问题是每一层都必须面对的也都必须要解决的。每一层而且必须要覆盖上面的信息！]]></description><category></category></item><item><title><![CDATA[linux线程池]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/138871160</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/138871160</guid><author>zengkui198513</author><pubDate>Tue, 14 May 2024 22:11:41 +0800</pubDate><description><![CDATA[这个类的解析：1 我们先定义一个函数类型申明一个返回值是void* 参数是void*的一个函数2 构造函数这个构造函数和之前写的构造函数不一样，这里构造函数只是为了初始化_name属性。Thread()3 start函数，我们把对线程的初始化放到了start函数里面并且通过传递this指针的方式，将本个类的属性传过去。//编译debug的方式发布的时候存在，release方式发布，assert就不存在了，n就是一个定义了，但是没有被使用的变量。]]></description><category></category></item><item><title><![CDATA[C++类型转换]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/138821703</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/138821703</guid><author>zengkui198513</author><pubDate>Tue, 14 May 2024 09:07:01 +0800</pubDate><description><![CDATA[这里编译器的值变为3了，但是我们终端输出的还是2 .因为这个const ,cp已经把值存在了寄存器了，系统认为你不需要改了，这是编译器优化。所以这里的值会变成3。dynamic_cast用于将一个父类对象的指针/引用转换为子类对象的指针或引用(动态转换)static_cast用于非多态类型的转换（静态转换），编译器隐式执行的任何类型转换都可用。向下转型：父类对象指针/引用->子类指针/引用(用dynamic_cast转型是安全的)向上转型：子类对象指针/引用->父类指针/引用(不需要转换，赋值兼容规则)]]></description><category></category></item><item><title><![CDATA[C++特殊类设计]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/138817558</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/138817558</guid><author>zengkui198513</author><pubDate>Mon, 13 May 2024 21:32:57 +0800</pubDate><description><![CDATA[这是我们之前学习的类的写法结果展示我们设计这个类可以吧拷贝构造设置为私有的。这样就涉及成功了C++11写法。]]></description><category></category></item><item><title><![CDATA[linux线程2]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/138544426</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/138544426</guid><author>zengkui198513</author><pubDate>Tue, 07 May 2024 21:17:46 +0800</pubDate><description><![CDATA[枷锁和解锁是多个线程串行执行的 ，程序变慢了。锁之规定互斥访问，没有规定必须让谁限制性锁就是真的就是让多个执行流竞争的结果。]]></description><category></category></item><item><title><![CDATA[linux线程]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/138483056</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/138483056</guid><author>zengkui198513</author><pubDate>Mon, 06 May 2024 21:22:38 +0800</pubDate><description><![CDATA[在一个程序里的一个执行路线就叫做线程（thread）。更准确的定义是：线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行，本质是在进程地址空间内运行在Linux系统中，在CPU眼中，看到的PCB都要比传统的进程更加轻量化透过进程虚拟地址空间，可以看到进程的大部分资源，将进程资源合理分配给每个执行流，就形成了线程执行流。多个task_struct 共享同一份虚拟内存。同时页表也没有这么简单，我们看看上面页表的属性。]]></description><category></category></item><item><title><![CDATA[linux信号]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/138136928</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/138136928</guid><author>zengkui198513</author><pubDate>Tue, 23 Apr 2024 20:29:01 +0800</pubDate><description><![CDATA[帮我在键盘中输入ctrl + c的时候。就会发现终止不了进程， 而是Ccatch a sig : 2 打印类似信息。我们的ctrl+c就是二号信号。]]></description><category></category></item><item><title><![CDATA[linux进程间通信]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/137994157</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/137994157</guid><author>zengkui198513</author><pubDate>Sat, 20 Apr 2024 11:39:53 +0800</pubDate><description><![CDATA[数据传输：一个进程需要将它的数据发送给另一个进程资源共享：多个进程之间共享同样的资源。通知事件：一个进程需要向另一个或一组进程发送消息，通知它（它们）发生了某种事件（如进程终止时要通知父进程）。进程控制：有些进程希望完全控制另一个进程的执行（如Debug进程），此时控制进程希望能够拦截另一个进程的所有陷入和异常，并能够及时知道它的状态改变。]]></description><category></category></item><item><title><![CDATA[静态库和动态库]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/137880540</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/137880540</guid><author>zengkui198513</author><pubDate>Wed, 17 Apr 2024 20:23:54 +0800</pubDate><description><![CDATA[2个小时之前。]]></description><category></category></item><item><title><![CDATA[C++智能指针]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/137842470</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/137842470</guid><author>zengkui198513</author><pubDate>Tue, 16 Apr 2024 23:10:24 +0800</pubDate><description><![CDATA[这里内存泄露的情况这里虽然能正常捕捉div的除0错误了，但是却不会执行后面的两个delete释放资源的操作。结果发现没有输出111，这里就造成了a1 和 a2的内存泄漏。]]></description><category></category></item><item><title><![CDATA[C++异常学习]]></title><link>https://blog.youkuaiyun.com/zengkui198513/article/details/137800248</link><guid>https://blog.youkuaiyun.com/zengkui198513/article/details/137800248</guid><author>zengkui198513</author><pubDate>Tue, 16 Apr 2024 00:34:08 +0800</pubDate><description><![CDATA[因此，在 catch 块中，你应该捕获 const char* 类型的异常而不是 std::string。如果你想要用 std::string 来捕获这个异常，你应该在抛出异常时使用 std::string 类型，像这样：throw std::string(“被除数不能为0”);出异常的代码，try 块中的代码被称为保护代码。7. 没有匹配的catch则退出当前函数栈，继续在调用函数的栈中进行查找匹配的catch。异常是一种处理错误的方式，当一个函数发现自己无法处理的错误时就可以抛出异常，让函数的。]]></description><category></category></item></channel></rss>