<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Doub1's Blog]]></title><description><![CDATA[真正的大师，永远怀着一颗学徒的心]]></description><link>https://blog.youkuaiyun.com/slslslyxz</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; slslslyxz]]></copyright><item><title><![CDATA[Istio 自动注入原理及复现一个简单的自动注入]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/145526762</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/145526762</guid><author>slslslyxz</author><pubDate>Sun, 09 Feb 2025 04:27:48 +0800</pubDate><description><![CDATA[Istio  自动注入原理, mutatingwebhookconfiguration,复现简单的自动注入]]></description><category></category></item><item><title><![CDATA[一篇文章理解堆栈溢出]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/130036473</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/130036473</guid><author>slslslyxz</author><pubDate>Mon, 01 Jul 2024 00:07:29 +0800</pubDate><description><![CDATA[向后合并是指如果前一个区块没有被使用，将自身指针指向前一个区块，并且将大小合并，向前合并则相反。向前合并和向后合并，并不是说对于当前区块来说，合并到前一个或合并到后一个，而是正好相反。这是一个简单的堆溢出题，我将其中的函数都重命名了，在IDA中你能知道这些函数时做什么的。，但是我们也仅仅是指修改了一个内存地址，而不是像栈溢出那样修改了它的执行流程。在进入需要call的函数后，如果我们从栈的低地址一直覆盖内容到高地址，就可以。的第二处出现了栈溢出，但是我们发现溢出的大小实在是太小了，我们无法写入。]]></description><category></category></item><item><title><![CDATA[PLT、GOT ELF重定位流程新手入门(详细到爆炸)]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/128893789</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/128893789</guid><author>slslslyxz</author><pubDate>Sun, 05 Feb 2023 21:25:27 +0800</pubDate><description><![CDATA[如果你使用当前rip+0x2fe2你会得到一个错误的地址，因为x64下的RIP相对寻址需要跳过当前RIP，也就是其实是下一条指令的地址+0x2fe2。让它进行跳转，但是这样你就不会理解为什么汇编代码没有变跳转的地址却不同，新手兄弟们可以跟着我一步一步计算，我们首先看看这个jmp是。这就很奇怪了，网上的文章明明说这是索引，确实是这样，其实这里传入的是。我们注意一下.got.plt的地址，由于关闭了pie，我们可以看到地址了，是。是不是很好玩，此时存的内容就是它的下一条指令地址，看图。]]></description><category></category></item><item><title><![CDATA[Java Apache Commons Collection3.2.1 理解Transformer 接口]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/125454643</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/125454643</guid><author>slslslyxz</author><pubDate>Sat, 25 Jun 2022 01:44:29 +0800</pubDate><description><![CDATA[接口开始分析

Transforms the input object (leaving it unchanged) into some output object.

@param input  the object to be , should be left unchanged
@return a transformed object

它说传入的对象会，并返回记住了，就是用来用的，在这里你可以先简单的当它是一个。实现此接口的类有下面这些：比如有一些有趣的，我们看看它们的方法
它将返回，其中和在其传入]]></description><category></category></item><item><title><![CDATA[Windows 驱动开发 新手入门（四）]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/125230137</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/125230137</guid><author>slslslyxz</author><pubDate>Tue, 21 Jun 2022 21:12:03 +0800</pubDate><description><![CDATA[本篇文章介绍一下设备对象，这是写驱动过滤的基础，比如键盘，串口等等的过滤。是的缩写，直译就是物理设备对象，一般来说，就是在就是的设备对象。 只能返回设备对象地址。


 指向包含 Unicode 字符串的缓冲区的指针，该字符串是设备对象的名称。 指定表示所需访问的。 通常 ，DesiredAccess指定FILE_READ_DATA。 不经常指定FILE_WRITE_DATA或FILE_ALL_ACCESS访问权限。 指向表示相应设备对象到用户模式代码的文件对象的指针（如果调用成功）。 指向表示命名逻辑、虚]]></description><category></category></item><item><title><![CDATA[Windows 驱动开发 新手入门（三）]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/125230186</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/125230186</guid><author>slslslyxz</author><pubDate>Sat, 11 Jun 2022 01:43:27 +0800</pubDate><description><![CDATA[之前的文章
Windows 驱动开发 新手入门（一）
Windows 驱动开发 新手入门（二）在之前我们大概知道驱动是什么，应用层如何和内核层通信后，我打算再补充一些知识。在第一篇文章中，为了好理解，我写过一句话，是，就是，在驱动中入口函数中打印，可以看见所属，也就是。我们知道在应用层开发时，通过Windows公开的API，我们可以在应用层去设置线程，进程的优先级，优先级越高，那么下次它获得CPU调度的机会就越大，此时我们可以通过SwitchToThread允许执行优先级较低的线程，或Sleep(0)立即重]]></description><category></category></item><item><title><![CDATA[Win10 x64 KeServiceDescriptorTable SSDT 偏移计算理解]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/121484438</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/121484438</guid><author>slslslyxz</author><pubDate>Tue, 23 Nov 2021 03:54:40 +0800</pubDate><description><![CDATA[Win10 x64 KeServiceDescriptorTable SSDT 偏移计算理解引言站在巨人的肩膀上实现代码通用的偏移计算方法
引言
很久没写博客了，水个博客，KeServiceDescriptorTable 和 KeServiceDescriptorTableShadow的原理我就不写了，百度很多，主要这篇写如何定位x64下未导出的KeServiceDescriptorTable。
站在巨人的肩膀上
前辈们在之前已经找到了一个计算公式，通过读取msr寄存器的0xC0000082读取到]]></description><category></category></item><item><title><![CDATA[浅谈serverless/云原生 及 IaaS PaaS SaaS Caas FaaS/BaaS 小白文理解]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/114505510</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/114505510</guid><author>slslslyxz</author><pubDate>Mon, 08 Mar 2021 04:29:03 +0800</pubDate><description><![CDATA[浅谈serverless/云原生 及 IaaS PaaS/SaaS FaaS引言云计算和云原生发展历史云计算云原生云原生中的Serverless写在最后
引言
浅谈一下serverless理念，然后说说发展历史，最后细说serverless，小白文给你讲透，不用奇葩的栗子举例，就白话文让你看懂。


serverless(无服务)，这里说的无服务并不是指微服务中的服务，而是说服务器(服务的基础设施层)。
serverless真的是没有服务器吗？
其实并不是，只是对于用户(我们对于提供商来说都是用户)来说，我]]></description><category></category></item><item><title><![CDATA[Java SocketChannel控制接收数据字节长度及复用ByteBuffer]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/114006711</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/114006711</guid><author>slslslyxz</author><pubDate>Wed, 24 Feb 2021 03:55:55 +0800</pubDate><description><![CDATA[Java SocketChannel控制接收数据字节长度及复用ByteBuffer
引言
混乱的数据结构
尝试读取固定大小数据
如何复用ByteBuffer
文件传输Buffer复用及减少使用用户层缓冲区]]></description><category></category></item><item><title><![CDATA[C# 我是如何理解async await的]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/113926117</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/113926117</guid><author>slslslyxz</author><pubDate>Mon, 22 Feb 2021 01:10:55 +0800</pubDate><description><![CDATA[C# 我是如何理解async await的引言理解设计初衷使用async await让代码看起来简洁
引言
写这篇文章的原因是网上关于C# async关键字和await关键字的文章很多，但是在我看来写的有些绕了，其实这俩关键字很容易理解，需要注意的是：这和ES7中的async、await有很大区别，如果你理所当然的用ES7中的理解，那么你已经走歪了。
设计初衷
async/await关键字设计的初衷：
是为了让Task.ContinueWith之后或嵌套Task之后，return新的Task的代码变的简洁。]]></description><category></category></item><item><title><![CDATA[Spring Cloud 2020 + Nacos + spring-cloud-loadbalancer + gateway 实现灰度发布]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/113798724</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/113798724</guid><author>slslslyxz</author><pubDate>Sat, 13 Feb 2021 06:54:15 +0800</pubDate><description><![CDATA[Spring Cloud 2020 + Nacos + spring-cloud-loadbalancer + gateway 实现灰度发布引言Nacos Server 1.4.1Producerpom.xmlControllerapplication.propertiesConsumerpom.xmlControllerGatewaypom.xmlapplication.ymlspring-cloud-loadbalancer 实现灰度发布原理
引言
Spri]]></description><category></category></item><item><title><![CDATA[Windows 驱动开发 新手入门（二）]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/113796268</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/113796268</guid><author>slslslyxz</author><pubDate>Fri, 12 Feb 2021 19:28:07 +0800</pubDate><description><![CDATA[Windows 驱动开发 新手入门（二）引言创建NT式驱动关于提示无法找到证书代码分解DEVICE_EXTENSIONPsSetCreateProcessNotifyRoutineIRP_MJ_DEVICE_CONTROL派遣函数IO控制码 IoControlCode创建加载驱动程序
引言
之前的文章大概了解的驱动程序的结构和一些主要的函数，本篇我们写一个NT式驱动，用来监控进程的创建与销毁。
创建NT式驱动
由于VS2019中无法帮我们快速创建NT式驱动，我们使用上一篇文章的项目改造一下即可，删除cpp文]]></description><category></category></item><item><title><![CDATA[Windows 驱动开发 新手入门（一）]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/113795754</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/113795754</guid><author>slslslyxz</author><pubDate>Fri, 12 Feb 2021 18:37:22 +0800</pubDate><description><![CDATA[Windows 驱动开发 新手入门（一）引言驱动介绍Win10 WDK建立一个驱动项目建立MyDriver.cpp理论知识驱动入口派遣函数 MajorFunctionDevice和SymbolicLinkDeviceExtensionIRP
引言
本文是对Windows下的驱动开发有一个简单的介绍，我尽可能写的小白文一些，因为大多数的驱动开发书籍对新手来说还是过于难理解。
驱动介绍
在介绍驱动开发之前，先了解一下基础知识，驱动是什么的？

驱动这个词是由Driver直译的，这和平常开发中的测试驱动开发(TD]]></description><category></category></item><item><title><![CDATA[static变量 你真的了解吗]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/112856376</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/112856376</guid><author>slslslyxz</author><pubDate>Wed, 20 Jan 2021 01:15:38 +0800</pubDate><description><![CDATA[static 变量你真的了解吗引言static初始化猜测结论
引言
突然想到以前没事干去看编译器编译之后的switch，static之类的产生的汇编代码，觉得有趣，switch写过了，这次写static。
static初始化
所有人都知道在函数内定义static变量后只会初始化一次，就像下面这样：
#include &lt;iostream&gt;
using namespace std;

int test(){
	static int a = 10;
	if (a==10){
	    cout &lt]]></description><category></category></item><item><title><![CDATA[CRC 循环冗余校验]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/112788317</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/112788317</guid><author>slslslyxz</author><pubDate>Mon, 18 Jan 2021 16:44:58 +0800</pubDate><description><![CDATA[CRC 循环冗余校验引言多项式 Polynomical原数据填充CRC校验过程是否被篡改
引言
写点基础，CRC校验(循环冗余校验 Cyclic Redundancy Check)在有时候玩RFID的时候也许会用到，有些校验位使用简单的异或或相加，有些校验位使用CRC校验，实际上CRC也是使用和异或差不多的方式(模2除法)，只是多了一个CRC除数，CRC校验其实并不难。
多项式 Polynomical

我们先不管CRC标准中的多项式，仅仅对于在CRC中的作用来说，它就是模2除法的除数，这个除数由多项式中的]]></description><category></category></item><item><title><![CDATA[windows和linux下c/c++程序的退出事件/信号处理]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/112152573</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/112152573</guid><author>slslslyxz</author><pubDate>Sun, 03 Jan 2021 22:10:50 +0800</pubDate><description><![CDATA[windows和linux下c/c++程序的退出事件/信号处理引言atexitSetConsoleCtrlHandlerLinux 信号处理有哪些信号简单的signal捕捉信号集信号屏蔽字(block) &amp;&amp; 信号未决字(pending)屏蔽信号sigaction函数与sigaction结构体sigaction结构体：sigaction函数sigsuspend 信号暂停
引言
Linux的信号和Windows中的事件很像，朋友问我有没有办法让一个控制台程序退出前执行某些东西，所以就可以写在一]]></description><category></category></item><item><title><![CDATA[Windows 对象私有命名空间的使用]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/112154474</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/112154474</guid><author>slslslyxz</author><pubDate>Sun, 03 Jan 2021 20:59:22 +0800</pubDate><description><![CDATA[Windows 对象私有命名空间的使用，以前的笔记
#include "pch.h"
#include &lt;iostream&gt;
#include &lt;windows.h&gt;
#include &lt;Sddl.h&gt; // ConvertStringSecurityDescriptorToSecurityDescriptor
#include &lt;strsafe.h&gt; // StringCchPrintf
int main()
{]]></description><category></category></item><item><title><![CDATA[C/C++ 给 Java 通过Socket传输int问题]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/111870385</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/111870385</guid><author>slslslyxz</author><pubDate>Mon, 28 Dec 2020 17:21:39 +0800</pubDate><description><![CDATA[C/C++ 给 Java 通过Socket传输int问题引言int高低位乱序解决
引言
事情是这样的，朋友有个软件，但是是单机版本，他想实时向服务器传输生成出来的报告，算是服务器那边有个备份。
我先看了一下，软件是C/C++的，CRT也是版本齐全，而且那台电脑也不允许装什么其他环境了，我很自然的就用C/C++写了，而服务端使用JAVA写的，因为服务器那边本来就装了JAVA环境，但没有10以上版本的CRT，所以我就用了2个不同语言写了。
int高低位乱序
如果两边同时使用c/c++写，那么不会出现这个问题，因]]></description><category></category></item><item><title><![CDATA[OAuth2协议 白话理解+SpringCloud Security 栗子]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/111405554</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/111405554</guid><author>slslslyxz</author><pubDate>Sat, 19 Dec 2020 16:38:45 +0800</pubDate><description><![CDATA[OAuth2协议 白话理解+SpringCloud Security 栗子引言白话理解专业名词认证授权服务和资源服务scope作用域关于白话理解搭建认证授权服务引入依赖编写认证配置(SecurityConfig)配置授权服务基于内存Token的授权服务配置基于JwtToken的授权服务配置申请token简化模式申请token申请授权码根据授权码申请token密码模式申请token刷新token检查token搭建资源服务引入依赖配置资源服务远程调用认证授权服务的TokenService资源验证基于JWT的无状]]></description><category></category></item><item><title><![CDATA[SpringBoot 多数据源 指定数据源实现读写分离 手动实现和使用]]></title><link>https://blog.youkuaiyun.com/slslslyxz/article/details/111404825</link><guid>https://blog.youkuaiyun.com/slslslyxz/article/details/111404825</guid><author>slslslyxz</author><pubDate>Sat, 19 Dec 2020 15:20:49 +0800</pubDate><description><![CDATA[引言
本篇文章讲一下如何实现多数据源实现读写分离，不涉及JTA和微服务的分布式事务，如果需要了解分布式事务的可以在分布式专栏下找到相关文章。
使用dynamic-datasource-spring-boot-starter
pom 依赖
 		&lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-start]]></description><category></category></item></channel></rss>