<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[KAI_KD的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/KAI_KD</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; KAI_KD]]></copyright><item><title><![CDATA[Linux]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/148285421</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/148285421</guid><author>KAI_KD</author><pubDate>Thu, 29 May 2025 11:10:16 +0800</pubDate><description><![CDATA[Linux安装是好久之前的了，这里我就不记录安装Linux步骤了，具体可以看其他人博客，总之就是先下虚拟机，然后下载Linux对应发行商文件，这里主要记录Linux的命令，软件安装，项目部署，内容基本来源黑马Linux课程。]]></description><category></category></item><item><title><![CDATA[Redis]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/148279255</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/148279255</guid><author>KAI_KD</author><pubDate>Wed, 28 May 2025 15:22:29 +0800</pubDate><description><![CDATA[从客户端查询数据库发现保存的key是乱码的，其实是因为RedisTemplate对key进行序列化，需要改变其默认的序列化方式。更改完后就可以通过get拿到key了，这里value值还是默认序列化后的，一般不做修改，java框架会自动在get时反序列化。LPush对应这里leftpush，要想存入多个key值，选择调用leftPushAll，range获取指定范围的元素。在Redis中，默认提供十六个数据库，默认是在0号数据库中，可以在Redis客户端中select 1来更改数据库。]]></description><category></category></item><item><title><![CDATA[关于git的使用]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/148254372</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/148254372</guid><author>KAI_KD</author><pubDate>Tue, 27 May 2025 21:14:07 +0800</pubDate><description><![CDATA[本文介绍了Git的安装、配置及基本使用流程。主要内容包括：1) Git的官网下载和安装方法；2) GitHub远程仓库创建；3) 常用Git指令如全局设置、仓库初始化、克隆等；4) 工作区修改、暂存区操作和本地提交；5) 远程仓库推送和拉取；6) 分支管理及冲突解决；7) 在IDEA中配置和使用Git的方法。重点讲解了从文件状态跟踪到提交推送的完整版本控制流程，包括本地和远程仓库操作，并提供了分支管理和冲突解决的实际操作建议。
]]></description><category></category></item><item><title><![CDATA[瑞吉外卖中关于短信校验代码的Session问题]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/148236348</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/148236348</guid><author>KAI_KD</author><pubDate>Mon, 26 May 2025 18:04:28 +0800</pubDate><description><![CDATA[这一段代码中为什么session.setAttribute(“user”,user.getId())可以直接保存到前端浏览器的session，不是说session是保存到服务器吗？错觉来源：因为浏览器保存了 JSESSIONID Cookie，使得后续请求能自动关联到服务器的 Session 数据。浏览器永远不会直接获取或存储 Session 数据，它只保存一个 Session ID（通常通过 Cookie）将用户ID 存储在服务器的 Session 对象中（键为 “user”，值为用户ID）]]></description><category></category></item><item><title><![CDATA[自定义JackSon配置]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/147594049</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/147594049</guid><author>KAI_KD</author><pubDate>Mon, 28 Apr 2025 19:31:28 +0800</pubDate><description><![CDATA[** 根据id修改员工信息*/return R.success("员工信息修改成功");这里由于要修改的员工信息的id是通过mp雪花算法得到的超长数字，js前端在访问这个数据的时候会出现精度损失，导致后端拿不到这个id，因此无法更新数据。]]></description><category></category></item><item><title><![CDATA[关于session的补充]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/147543435</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/147543435</guid><author>KAI_KD</author><pubDate>Sat, 26 Apr 2025 22:14:14 +0800</pubDate><description><![CDATA[前面虽然讲解了session和token的区别，大致了解了session的用法以及具体实现的流程但是在敲瑞吉外卖的时候还是有个问题和之前的代码是一样的，但是这里有个问题，如果有多个用户登录，可以都保存为key值是employee吗？是不是这个代码就不管用了，是不是要改成多个值，因为。每个浏览器（或者说每个用户）在访问服务器时，都会有自己独立的一份。，所以在这个 Session 里面放一个"employee"是没问题的。简单理解就是：A用户访问时，有自己的 Session，里面有自己的。]]></description><category></category></item><item><title><![CDATA[过滤器和拦截器的区别]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/147542414</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/147542414</guid><author>KAI_KD</author><pubDate>Sat, 26 Apr 2025 20:48:00 +0800</pubDate><description><![CDATA[学习完springmvc之后，初步了解了拦截器和过滤器，那么他们之间有什么区别呢，具体代码怎么实现？]]></description><category></category></item><item><title><![CDATA[关于leetcode232.用栈实现队列的算法解析题]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/138198635</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/138198635</guid><author>KAI_KD</author><pubDate>Sat, 26 Apr 2025 20:42:25 +0800</pubDate><description><![CDATA[两个栈，一个负责输入（inStack），一个负责输出（outStack只有在outStack为空时，才把inStack元素搬过去，保证顺序。栈的基本操作只有 push、pop、peek、empty，符合题目要求。push()时间复杂度是 O(1)，pop()和peek()最坏是 O(n)，但均摊下来是 O(1)。]]></description><category></category></item><item><title><![CDATA[关于登录校验，session和token的不同]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/147539105</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/147539105</guid><author>KAI_KD</author><pubDate>Sat, 26 Apr 2025 17:13:55 +0800</pubDate><description><![CDATA[Session认证：加密传输的是 SessionId（依赖 HTTPS 来安全传输，Session 本身一般没加密）。Token认证：Token本身就是一个加密过、签名过的字符串（通常用 非对称加密 签名，比如用私钥签名，服务器用公钥验证）。那 Session 是怎么存到服务器端的？🖥️登录时：用户登录成功，服务器生成一个唯一的 SessionId（通常是UUID）。服务器在内存（或Redis、数据库）里开一个小仓库，保存这个 Session。]]></description><category></category></item><item><title><![CDATA[关于Springboot3.x的版本整合mybatisplus会报找不到bean的错误怎么办]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/146375836</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/146375836</guid><author>KAI_KD</author><pubDate>Wed, 19 Mar 2025 17:23:19 +0800</pubDate><description><![CDATA[我用的是jdk17的版本，创建的springboot版本是3.4.3，加了druid依赖和mybatis依赖会报找不到bean的错误怎么办。我的解决方法是，首先启动类加上@MapperScan("com.xxx.dao")，这里xxx写上你的包名。还是不行试试用maven clean一下，以上是我都试过的方法。mybatis整合依赖改成这个加了boot3的，版本用最新版。然后依赖改一下，springboot改成3.0.5。]]></description><category></category></item><item><title><![CDATA[8080端口占用]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/146359837</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/146359837</guid><author>KAI_KD</author><pubDate>Wed, 19 Mar 2025 09:06:00 +0800</pubDate><description><![CDATA[从任务管理器看到虚拟机网络服务占用了端口，而且我每次想用springboot启动tomcat都会被占用，不想改tomcat端口号的就将这个服务改为手动或禁用。查看占用8080端口进程。]]></description><category></category></item><item><title><![CDATA[java.lang.UnsupportedClassVersionError怎么办]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/146282205</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/146282205</guid><author>KAI_KD</author><pubDate>Sat, 15 Mar 2025 17:14:11 +0800</pubDate><description><![CDATA[要么升级jdk为17，不想升级的可以给spring依赖降级，spring6不支持jdk8，所以我们把依赖都设为5.xx的版本。有时候编译时出现java.lang.UnsupportedClassVersionError。编译的，但你的 Java 运行环境只支持。，表示 Spring 的。]]></description><category></category></item><item><title><![CDATA[关于如何安装JDK，如何更改JDK版本？]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/146258648</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/146258648</guid><author>KAI_KD</author><pubDate>Fri, 14 Mar 2025 15:41:22 +0800</pubDate><description><![CDATA[jdk8安装会有两个文件夹，一个是jdk的文件，还有一个是jre文件，我就是只安装了jdk，导致后面测试不行！如果你没装好，需要去注册器表，win+r。找到javasoft文件删除对应版本jdk，如果你不确定建议全部删除，可能后续要需要把你原来的也要重新安装。因为我的jdk版本是17，我要用7版本的Tomcat，需要jdk8的版本，应该怎么改版本？接着去windows里把对应java版本卸载，控制面板=》卸载程序，找到对应文件删除。首先下载安装包，这里可以自行去找安装包下载，接着选择安装路径，最后安装。]]></description><category></category></item><item><title><![CDATA[关于idea提交git出现error: bad signature 0x00000000fatal: index file corrupt是什么问题？]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/146091652</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/146091652</guid><author>KAI_KD</author><pubDate>Fri, 07 Mar 2025 11:41:19 +0800</pubDate><description><![CDATA[笔者在写代码时发现error: bad signature 0x00000000 fatal: index file corrupt，且idea更改后的代码无法正确显示，也无法提交commit。）损坏，有可能是idea意外关闭，或者电脑磁盘出现问题，亦或者git版本变化导致文件损坏。解决办法：直接在idea中打开项目终端：输入代码，强制删除git索引文件并重新生成。此时重启一下idea看看更改的代码是否成功显示。文件（索引文件，位于。]]></description><category></category></item><item><title><![CDATA[关于动态代理]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/145994303</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/145994303</guid><author>KAI_KD</author><pubDate>Mon, 03 Mar 2025 17:36:02 +0800</pubDate><description><![CDATA[其中核心是Proxy.newProxyInstance(classLoader,interfaces,invocationHandler)，姑且理解为JDK已经帮我们实现动态代理的方法了，封装起来，我们直接使用即可。代理对象是 JDK 生成的类，它实现了 Calculator 接口，但方法内部并没有真正执行 add() 逻辑，而是调用 InvocationHandler.invoke() 方法。想要获得我们想要的代理对象，第一步，是不是应该传入我们原来实现类的对象，在代理类中通过构造器传入变量。]]></description><category></category></item><item><title><![CDATA[Spring6笔记]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/145994429</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/145994429</guid><author>KAI_KD</author><pubDate>Mon, 03 Mar 2025 17:35:15 +0800</pubDate><description><![CDATA[这里写一些关于学习spring中值得记录的知识点，之前直接学了项目那里入手的springboot，现在看回spring，才会知道原来是怎样运行的。]]></description><category></category></item><item><title><![CDATA[手写Ioc]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/145988570</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/145988570</guid><author>KAI_KD</author><pubDate>Mon, 03 Mar 2025 14:54:09 +0800</pubDate><description><![CDATA[接着我们要获取bean，在之前，我们是通过创建BeanFactory子类ApplicationContext，并通过getbean方法来获取bean的，所以我们还要自己写一个ApplicationContext，并定义方法，返回我们需要的bean对象。对于spring来说，Ioc绝对是其核心中的核心，管理bean，创建bean，bean的生命周期全都围绕着Ioc容器，那我们要想自己手写Ioc，就必须要先理解其原理。第一点，我们在注入属性时需要加入@Autowired代表我们要注入，这个属性一般是一个对象。]]></description><category></category></item><item><title><![CDATA[Spring如何实现自动注入]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/145988507</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/145988507</guid><author>KAI_KD</author><pubDate>Mon, 03 Mar 2025 14:49:28 +0800</pubDate><description><![CDATA[这里我们不需要再去一个个把bean写出来，只需要在controller，service，写相应的下一层类型属性，如controller中写service类型，并且写上其set方法，直接调用相应的方法，具体如下。这里写一些关于学习spring中值得记录的知识点，之前直接学了项目那里入手的springboot，现在看回spring，才会知道原来是怎样运行的。springboot中我们可以直接@AutoWired注解去实现自动注入，但是在spring中，我们通过xml配置实现自动注入。]]></description><category></category></item><item><title><![CDATA[java中线程安全问题分析及解决]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/142856289</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/142856289</guid><author>KAI_KD</author><pubDate>Sat, 12 Oct 2024 10:54:01 +0800</pubDate><description><![CDATA[学完线程之后，我们可以知道在java中我们是可以通过线程来同时去操作运行的，其应用范围非常广，但是由此引发了一个问题：假如有两个人同时去银行取钱，余额有一万元，两人通过不同平台同时取一万元。试想一下，此时程序判定取钱余额都是满足取钱金额的，因此返回ture，两个人同时取出钱，这不就出现bug了吗？这样我们岂不是可以同时取好多的钱出来？银行不就倒闭了？因此在这基础上有了锁的概念，这里顺便练习一下锁的知识还有复习线程的知识。]]></description><category></category></item><item><title><![CDATA[关于java学习总结练习]]></title><link>https://blog.youkuaiyun.com/KAI_KD/article/details/142125901</link><guid>https://blog.youkuaiyun.com/KAI_KD/article/details/142125901</guid><author>KAI_KD</author><pubDate>Wed, 11 Sep 2024 10:04:57 +0800</pubDate><description><![CDATA[首先100个人我们可以设立对象去操作，里面封装一些我们需要用到的数，比如位置信息，编号等，然后可以用集合去包装这些对象，方便我们做之后的处理，然后设立随机值，可以用random去解决，但是这里需要注意不能重复，所以我们还需要进行一个重复的判定。分完编号后我们开始去除奇数位置的人，这里是一个重点，假如我们从一开始正着去除，每次去掉第一个人后，位置都会发生改变，很是麻烦，因为我们没办法一次性去掉奇数位的人，只能一个一个循环去除，所以我们只好换一个思维。首先是再熟悉不过的people对象搞起来。]]></description><category></category></item></channel></rss>