<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[stan_ko的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/stan_ko</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; stan_ko]]></copyright><item><title><![CDATA[JDK8+SpringBoot2.x 升级 JDK 17 + Spring Boot 3.x]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/156678349</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/156678349</guid><author>stan_ko</author><pubDate>Wed, 07 Jan 2026 10:38:04 +0800</pubDate><description><![CDATA[本文记录了从JDK8+SpringBoot2.x升级到JDK17+SpringBoot3.x的主要步骤和注意事项。关键修改包括：更新pom.xml中的Java版本为17；将SpringBoot父依赖升级到3.5.0；替换不兼容依赖如Swagger改为SpringDoc、MySQL驱动升级；调整Maven仓库地址；代码层面将javax包迁移到jakarta；集合类改用JDK原生实现；解决RedisUtils和SpringSecurity配置的兼容性问题。升级过程中需特别注意POI依赖结构调整、泛型严格检查等细]]></description><category></category></item><item><title><![CDATA[MYSQL慢查询优化-工作记录-ZFMES项目]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/148975828</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/148975828</guid><author>stan_ko</author><pubDate>Sat, 28 Jun 2025 16:09:58 +0800</pubDate><description><![CDATA[后来发现把create_time放在前面的话，因为它的条件不是等值，而是大于或小于，根据最左匹配原则，这条sql不走完整的索引。速度提升了很多，其中有的只走了20ms，扫描的行从上万降到了几百。原来的sql，未加索引前：5秒多。]]></description><category></category></item><item><title><![CDATA[MES系统生产节拍计算]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/147039505</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/147039505</guid><author>stan_ko</author><pubDate>Mon, 07 Apr 2025 11:53:35 +0800</pubDate><description><![CDATA[问题：没有剔除中间休息的时间。]]></description><category></category></item><item><title><![CDATA[设计模式七大原则-接口隔离原则InterfaceSegregation]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/139583127</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/139583127</guid><author>stan_ko</author><pubDate>Mon, 10 Jun 2024 22:24:16 +0800</pubDate><description><![CDATA[类A通过接口Interface1依赖类B，类C通过接口Interface1依赖类D，如果接口Interface1对于类A和类c来说不是最小接口，那么类B和类D必须去实现他们不需要的方法（造成浪费）。在项目中常见的业务类直接依赖另外一个业务类的时候往往也是违背接口隔离原则的，在实际项目中，出于开发速度、维护成本等原因，通常不会过于细化接口。按隔离原则应当这样处理:将接口Interface1拆分为独立的几个接口，类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。]]></description><category></category></item><item><title><![CDATA[设计模式七大原则-单一职责原则SingleResponsibility]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/139581933</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/139581933</guid><author>stan_ko</author><pubDate>Mon, 10 Jun 2024 21:22:38 +0800</pubDate><description><![CDATA[七大原则是在设计“设计模式”的时候需要用到的原则，它们的存在是为了保证设计模式达到以下几种目的：1.代码重用性2.可读性3.可拓展性4.可靠性（增加新的功能后，对原来的功能没有影响）5.使程序呈现高内聚、低耦合的特性。]]></description><category></category></item><item><title><![CDATA[BTC协议的设计【区块链学习笔记3】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/138219831</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/138219831</guid><author>stan_ko</author><pubDate>Sun, 28 Apr 2024 02:12:59 +0800</pubDate><description><![CDATA[比特币的共识机制是靠算力（hash rate）来投票的:hash rate--->决定了投票的权重--->sybil attack是依靠创建账户，但是创建账户并不会影响 hash rate，不会影响每秒算出nonce的数量。puzzle friendly性质保证了求解nonce值的过程没有捷径。hash rate越高，获得记账权，得到奖励的概率越高。]]></description><category></category></item><item><title><![CDATA[比特币中的数据结构【区块链学习笔记2】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/138204062</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/138204062</guid><author>stan_ko</author><pubDate>Fri, 26 Apr 2024 15:06:07 +0800</pubDate><description><![CDATA[重要概念：哈希指针 hash pointers普通的指针是存结构体的地址，哈希指针除了保存地址之外，还要保存这个结构体的哈希值。比特币中的两个数据结构：区块链、Merkle tree都用到了hash pointers。]]></description><category></category></item><item><title><![CDATA[比特币中用到的密码学功能【区块链学习笔记1】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136745768</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136745768</guid><author>stan_ko</author><pubDate>Fri, 26 Apr 2024 14:39:40 +0800</pubDate><description><![CDATA[【密码学相关内容，需要进行补充】 ，得到的哈希值即digest，用来检测这个message是否发生篡改，因为找不到一个H(m')=H(m)，即没有办法篡改内容而又不被检测出来。（比如我的名字是柯意，全国有11个叫柯意的人，也就是hash碰撞是客观存在的。输入我的身份证号111222199608260000可以得到我的名字，但凡改掉身份证号中的其中一个数字，都得不到相同的名字，但是如果想改掉身份号又要得到同一个名字：柯意，就要在14亿人口的身份证号里进行尝试，概率是14亿分之11，微乎其微！]]></description><category></category></item><item><title><![CDATA[第二章 面向对象的基本概念-04737-C++程序设计【自考笔记】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136926272</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136926272</guid><author>stan_ko</author><pubDate>Sat, 30 Mar 2024 06:55:40 +0800</pubDate><description><![CDATA[1.类的基本概念类是具有相同的属性和操作的一组对象的集合，它为属于该类的全部对象提供了统一的抽象描述，其内部包括属性(数据变量)和操作(成员函数)两个主要部分。类是一种用户自己构造的数据类型;类要先声明后使用、是具有唯一标识符的实体;]]></description><category></category></item><item><title><![CDATA[第一章 C++语言简介-04737-C++程序设计【自考笔记】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136843048</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136843048</guid><author>stan_ko</author><pubDate>Fri, 22 Mar 2024 03:20:13 +0800</pubDate><description><![CDATA[不能直接用“>>”和“<<”进入输入/输出,必须对“>>”和“<<”进行。]]></description><category></category></item><item><title><![CDATA[01 网络模型与协议【网络编程】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136872488</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136872488</guid><author>stan_ko</author><pubDate>Thu, 21 Mar 2024 16:44:21 +0800</pubDate><description><![CDATA[7层网络模型与TCP/UDP协议计算机间的网络现在计算机间的请求响应、分工协作都离不开网络网络硬件：电缆、光纤、交换机、路由器、卫星等信号数据载体：光、电、波为使不同国家不同的通信设备能够互相通信，以便在更大的范围内建立计算机网络，有必要建立一个国际范围的。]]></description><category></category></item><item><title><![CDATA[对IO流原理及、分类及IO模型的一个大概认识【Java基础题】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136717238</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136717238</guid><author>stan_ko</author><pubDate>Mon, 18 Mar 2024 15:17:51 +0800</pubDate><description><![CDATA[IO模型：IO模型决定了数据如何在应用程序和网络间传输。IO模型是系统底层的支持，不同语言和框架对这些模型的支持和实现方式可能会有所不同。虽然IO模型最初是针对网络IO操作来描述的，但它们的基本原则和方法同样适用于本地IO操作。BIO：BlockingIO，传统IO模型，同步阻塞IO--->可以大概对应的实现是java中java.io包应用程序执行IO操作时，如果数据未准备好，它将一直等待数据准备完毕。一旦数据准备好了，再将数据从内核空间拷贝到用户空间，此过程中应用程序是阻塞的。]]></description><category></category></item><item><title><![CDATA[谈谈在项目中用到的File类和处理文件的流【Java基础题】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136681687</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136681687</guid><author>stan_ko</author><pubDate>Wed, 13 Mar 2024 18:54:16 +0800</pubDate><description><![CDATA[这行代码通常用在`while`循环的条件部分，意味着“只要`readLine()`方法返回的不是`null`（即，只要没有到达文件末尾），就继续执行循环体内的操作”。= null`整个表达式的意思是，将`reader.readLine()`的返回值赋值给`line`，然后检查`line`是否不等于`null`。- `line = reader.readLine()`这部分将`readLine()`方法返回的字符串（可能是文件中的一行文本或者`null`）赋值给变量`line`。]]></description><category></category></item><item><title><![CDATA[简单聊一聊项目中用反射来做过啥【Java基础题】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136494613</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136494613</guid><author>stan_ko</author><pubDate>Wed, 13 Mar 2024 02:13:59 +0800</pubDate><description><![CDATA[反射允许(在运行时动态地)对封装类的字段、方法、构造函数的信息进行编程访问在我们的代码中，使用构造器直接生成对象、直接访问对象、对象的成员等方式，是清晰直观的。但在有些场景中，需要在运行时动态地操作这些成员，比如在运行时根据数据库中提供的类名或方法名，或者基于字符串变量，来动态实例化对象或调用方法时，直接访问的方式就不再适用了。反射机制恰好提供了解决这类需求的能力，其关键在于一个特殊的对象，我们称之为类对象--->。反射是Java编程中一个强大的工具，允许运行时的动态类型查询和操作。]]></description><category></category></item><item><title><![CDATA[static存在的主要意义【Java基础题】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136451827</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136451827</guid><author>stan_ko</author><pubDate>Tue, 05 Mar 2024 07:22:10 +0800</pubDate><description><![CDATA[这是一个对Redis实例管理（针对的是）的实现类，对RedisManager接口定义的一系列Redis实例管理操作的方法进行了实现。这是重要的，因为如果每个实例有自己的锁，那么同步控制将会失效，因为不同实例之间的锁不会相互影响。B. 枚举类的匹配方法：不依赖于枚举类型的任何特定实例，而是需要访问枚举类中定义的所有可能的实例。初始化的（因为这些流程基本上固定的，也就不需要各种不同的实例，但是它又分为正常与不正常两种情况，一个枚举类是列举不完的），该方法构造了两个。类是一个用于定义和管理投诉流程的类。]]></description><category></category></item><item><title><![CDATA[结合项目理解super关键字的用法【Java基础题】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136441702</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136441702</guid><author>stan_ko</author><pubDate>Mon, 04 Mar 2024 04:50:57 +0800</pubDate><description><![CDATA[通过为创建和更新操作定义不同的DTO类，可以明确区分这两种操作的数据要求。虽然在很多情况下，创建和更新操作所需的数据字段可能大致相同，但也可能存在一些差异，例如在更新操作中可能需要一个明确的ID，而创建操作则不需要。通过使用继承，可以在保持代码整洁的同时，灵活地为不同的操作定义不同的数据要求。这样的设计允许开发者清晰地分离和管理不同操作（如创建和更新）所需的数据结构，同时通过继承机制来实现代码复用和功能扩展。]]></description><category></category></item><item><title><![CDATA[通过业务加强对访问修饰符 public,private,protected,以及不写（默认）时的区别的应用与理解【Java基础题】]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136392502</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136392502</guid><author>stan_ko</author><pubDate>Mon, 04 Mar 2024 02:23:19 +0800</pubDate><description><![CDATA[私有成员对于同一包中的其他类是不可见的，更不用说其他包中的类了。最常见的，实体类是以public修饰的，但是其属性一般以private修饰的。因此在别的类中，我们需要使用这个某个类的私有属性时，不可以直接这个类的实例+点+属性，而是要调用对应的get与set方法（也就是为什么通常情况下get与set方法是public的）。]]></description><category></category></item><item><title><![CDATA[Math.round(11.5) 等于多少？Math.round(-11.5)等于多少？---业务中对数值精度的处理]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136384786</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136384786</guid><author>stan_ko</author><pubDate>Fri, 01 Mar 2024 10:21:46 +0800</pubDate><description><![CDATA[在数值计算中，经常需要对结果进行舍入以达到特定的精度要求，`RoundingMode` 枚举类提供了一组常见的舍入模式，用于指示如何进行舍入操作。与基本数据类型（如 `double` 或 `float`）不同，`BigDecimal` 可以表示任意大或小的数，而不会丢失精度。`compareTo` 是 Java 中 `BigDecimal` 类的方法之一，用于比较两个 `BigDecimal` 对象的大小关系。6. `HALF_DOWN`：向最接近的整数舍入，如果距离两个最接近的整数相等，则向下舍入。]]></description><category></category></item><item><title><![CDATA[用最有效率的方法计算 2 乘以 8---位移运算的使用扩展]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136361378</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136361378</guid><author>stan_ko</author><pubDate>Fri, 01 Mar 2024 02:07:32 +0800</pubDate><description><![CDATA[因此，对于任何正整数m，m乘以8（即m * 8）最快的运算方式是将m左移3位（即m << 3）。因此，3乘以8的最快运算方式也是将3左移3位，即3 << 3。（2）加密算法工具类中，结果往往要以十六进制字符串的形式来表示，能够提高数据的可读性、传输性和兼容性，使得加密结果更易于处理和使用。搜索了一下自己的项目里，业务中的处理直接用到了位移运算的好像没有看到，倒是在一些工具类中看到了位移运算的使用。答案：2 << 3（左移 3 位相当于乘以 2 的 3 次方，右移 3 位相当于除以 2 的 3 次方）]]></description><category></category></item><item><title><![CDATA[为了visa面签预约学习python爬虫-DAY4]]></title><link>https://blog.youkuaiyun.com/stan_ko/article/details/136335669</link><guid>https://blog.youkuaiyun.com/stan_ko/article/details/136335669</guid><author>stan_ko</author><pubDate>Wed, 28 Feb 2024 06:55:48 +0800</pubDate><description><![CDATA[感想：爬虫真的还是蛮麻烦的，首先对目标信息的有效定位就够麻烦了，还要为了应付各种反爬机制去集成各种第三方工具（验证码必不可少，有人说可以学神经网络OCR自己识别），也要集成一些换IP的工具，封IP也是常见操作了，代理IP的高效与否绝对影响着爬虫功能的效率。因为https/http协议的特性是无状态，服务器并不知道你的登录状态，但是用户不可能访问网站内每一个页面都需要登录，因此一些基本的信息如用户的登录信息等需要存储在cookie中。-透明：服务器知道该次请求使用了代理，也知道请求对应的真实ip。]]></description><category></category></item></channel></rss>