<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zzy7075的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/zzy7075</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; zzy7075]]></copyright><item><title><![CDATA[Mybatis Log Plugin打印日志，会导致CPU升高卡死]]></title><link>https://blog.csdn.net/zzy7075/article/details/151328053</link><guid>https://blog.csdn.net/zzy7075/article/details/151328053</guid><author>zzy7075</author><pubDate>Mon, 08 Sep 2025 17:35:19 +0800</pubDate><description><![CDATA[发现罪魁祸首是 MyBatis Log Plugin（帮助你SQL参数自动注入的插件），大量的SQL打出，大量插入语句需要SQL参数注入，导致idea卡顿，目前没有发现关闭这个插件的方式。：如果将日志级别设置为 DEBUG 或 TRACE，MyBatis 会输出非常详细的日志信息，这会增加日志处理的开销，进而影响性能。如果不需要实时查看 SQL 日志，可以在开发过程中关闭 MyBatis Log Plugin，以避免其对性能的影响。重装后导入配置文件，但是idea一些插件还是需要自己重新安装。]]></description><category></category></item><item><title><![CDATA[Java反射和new效率对比，差距有多大？]]></title><link>https://blog.csdn.net/zzy7075/article/details/147060614</link><guid>https://blog.csdn.net/zzy7075/article/details/147060614</guid><author>zzy7075</author><pubDate>Tue, 08 Apr 2025 10:05:54 +0800</pubDate><description><![CDATA[其中JIT在程序运行期会对程序进行优化，但是反射是通过动态解析的方式，因此可能无法执行某些java虚拟机的优化。但是随着我们技术的不断提升，我们也学习到了，可以通过反射技术实现对象的创建。1.new的对象无法访问其中的私有属性，反射出来的可以通过设置setAccessible()方法来省略访问权限符。​ 接下来，程序运行期间，可能会通过一个JIT，即时编译器将字节码文件转换为计算机认识的机器码文件。​ 可是，你有没有想一下，什么时候我们改用new创建对象，什么时候我们改用反射创建对象呢？]]></description><category></category></item><item><title><![CDATA[Vue 中的Store状态管理]]></title><link>https://blog.csdn.net/zzy7075/article/details/146535355</link><guid>https://blog.csdn.net/zzy7075/article/details/146535355</guid><author>zzy7075</author><pubDate>Wed, 26 Mar 2025 17:01:05 +0800</pubDate><description><![CDATA[在简单的 Vue 应用里，我们可以通过 props 把数据从父组件传递到子组件，也能用事件把数据从子组件传递回父组件。比如，一个深埋在组件层级深处的组件需要获取一个跟它隔了好几层的组件的数据，这时候用 props 一层一层往下传就很不方便。Vue 的 Store 是一个非常强大的工具，它可以帮助我们轻松地管理应用的状态。在这个仓库里，存放着应用中各种各样的数据，这些数据就是应用的状态。比如说，你正在做一个电商网站的前端，Store 里就可以存放购物车里的商品数量、用户的登录状态、商品的分类信息等等。]]></description><category></category></item><item><title><![CDATA[Linux 系统不同分类的操作命令区别]]></title><link>https://blog.csdn.net/zzy7075/article/details/146035335</link><guid>https://blog.csdn.net/zzy7075/article/details/146035335</guid><author>zzy7075</author><pubDate>Wed, 05 Mar 2025 10:07:39 +0800</pubDate><description><![CDATA[基于 Red Hat 的发行版：使用yum或dnf进行包管理，systemctl进行服务管理。基于 Debian 的发行版：使用apt-get进行包管理，systemctl进行服务管理。基于 Arch 的发行版：使用pacman进行包管理，systemctl进行服务管理。：使用apk进行包管理，rc-service进行服务管理。]]></description><category></category></item><item><title><![CDATA[在Logback中拦截和修改日志]]></title><link>https://blog.csdn.net/zzy7075/article/details/145759217</link><guid>https://blog.csdn.net/zzy7075/article/details/145759217</guid><author>zzy7075</author><pubDate>Thu, 20 Feb 2025 17:39:46 +0800</pubDate><description><![CDATA[假设你记录了某个用户的某个id号数百次，它分散在整个应用程序中，现在你有了一个新的要求，要求你必须加密这个id号。当然，你足够聪明，可以为此任务编写一个拦截器，而不是手动查找和更改必要的日志。在这里，为了简单起见，我使用info作为日志级别，但如果你不想更改日志级别，你可以很容易地检查即将到来的日志具有哪个级别并使用该级别。事实上，Logback并没有提供修改日志的直接方法，但有一种解决方法可以通过使用过滤器来实现我们的目标，即使它看起来有点黑客。DENY，然后使用更改的对象重新登录。]]></description><category></category></item><item><title><![CDATA[linux系统awk命令使用详解]]></title><link>https://blog.csdn.net/zzy7075/article/details/145686402</link><guid>https://blog.csdn.net/zzy7075/article/details/145686402</guid><author>zzy7075</author><pubDate>Mon, 17 Feb 2025 16:41:01 +0800</pubDate><description><![CDATA[Pattern是Awk命令的匹配模式，用于匹配输入数据中的文本。如果Pattern匹配成功，则执行Action，Action是Awk命令的动作，用于处理输入数据。如果没有指定文件名，则Awk命令会读取标准输入流中的数据。在本篇文章中，我们将详细讲解Awk的使用方法，帮助读者了解这个工具的基本原理和常见用法。Awk命令还支持使用变量。例如，我们可以定义一个变量，然后在命令中使用它。例如，以下命令将定义一个名为num的变量，并将其设置为10。这个命令会输出filename文件中的第二列数据，以逗号作为分隔符。]]></description><category></category></item><item><title><![CDATA[数据库覆盖索引和回表]]></title><link>https://blog.csdn.net/zzy7075/article/details/145564315</link><guid>https://blog.csdn.net/zzy7075/article/details/145564315</guid><author>zzy7075</author><pubDate>Tue, 11 Feb 2025 09:42:05 +0800</pubDate><description><![CDATA[索引是高效找到行的一个方法，但是一般数据库也能使用索引找到一个列的数据，因此它 不必读取整个行。毕竟索引叶子节点存储了它们索引的数据；当能通过读取索引就可以得到想要的数 据，那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。非聚簇复合索引的一种形式，它包括在查询里的SELECTJOIN和WHERE子句用到的所有列 （即建索引的字段正好是覆盖查询条件中所涉及的字段）。简单说就是， 索引列+主键 包含SELECT到FROM之间查询的列。覆盖索引长什么样子。索引列+主键#斯降之前的索引。]]></description><category></category></item><item><title><![CDATA[@TransactionalEventListener的使用和实现原理]]></title><link>https://blog.csdn.net/zzy7075/article/details/145534873</link><guid>https://blog.csdn.net/zzy7075/article/details/145534873</guid><author>zzy7075</author><pubDate>Sun, 09 Feb 2025 18:00:19 +0800</pubDate><description><![CDATA[很明显，这里的TransactionSynchronization接口只是抽象了一些行为，用于事务事件发生时触发，这些行为在Spring事务中提供了内在支持，即在相应的事务事件时，其会获取当前所有注册的TransactionSynchronization对象，然后调用其相应的方法。平时我们在完成某些数据的入库后，发布了一个异步事件，此时使用的是@EventListener，然后在这个事件中，又去对刚才入库的数据进行查询，从而完成后续的操作。等时候才去进行Event的处理，来达到事务同步的目的。]]></description><category></category></item><item><title><![CDATA[索引优化全攻略：提升排序、GROUP BY与分页性能]]></title><link>https://blog.csdn.net/zzy7075/article/details/145529119</link><guid>https://blog.csdn.net/zzy7075/article/details/145529119</guid><author>zzy7075</author><pubDate>Sun, 09 Feb 2025 10:48:39 +0800</pubDate><description><![CDATA[索引是高效找到行的一个方法，但是一般数据库也能使用索引找到一个列的数据，因此它 不必读取整个行。毕竟索引叶子节点存储了它们索引的数据；当能通过读取索引就可以得到想要的数 据，那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。非聚簇复合索引的一种形式，它包括在查询里的SELECTJOIN和WHERE子句用到的所有列 （即建索引的字段正好是覆盖查询条件中所涉及的字段）。简单说就是， 索引列+主键 包含SELECT到FROM之间查询的列。覆盖索引长什么样子。索引列+主键#斯降之前的索引。]]></description><category></category></item><item><title><![CDATA[typescript .d.ts 中 interface用法]]></title><link>https://blog.csdn.net/zzy7075/article/details/145308469</link><guid>https://blog.csdn.net/zzy7075/article/details/145308469</guid><author>zzy7075</author><pubDate>Wed, 22 Jan 2025 18:02:16 +0800</pubDate><description><![CDATA[通过定义接口，可以确保对象的结构符合预期，同时提高代码的可读性和可维护性。），可以为JavaScript代码或第三方库提供清晰的类型信息，从而增强代码的可读性和可维护性。：如果第三方库没有自带类型声明，可以通过接口来定义其API的类型。：接口可以被扩展，也可以与其他类型结合使用，提供了强大的灵活性。：通过接口，可以确保对象的结构符合预期，避免类型错误。如果对象的属性是动态的，可以使用索引签名来定义接口。：如果对象的属性是动态的，可以使用索引签名来定义。：接口可以定义对象的结构，包括属性和方法的类型。]]></description><category></category></item><item><title><![CDATA[typescript 书写.d.ts文件]]></title><link>https://blog.csdn.net/zzy7075/article/details/145308307</link><guid>https://blog.csdn.net/zzy7075/article/details/145308307</guid><author>zzy7075</author><pubDate>Wed, 22 Jan 2025 17:53:31 +0800</pubDate><description><![CDATA[文件是一种特殊的声明文件，用于定义类型信息，帮助TypeScript编译器理解JavaScript代码或其他库的类型结构。这些文件通常用于为没有类型信息的JavaScript代码或第三方库提供类型声明，从而让TypeScript能够进行类型检查和提供更好的代码提示。文件，可以为JavaScript代码或第三方库补充类型信息，从而让TypeScript更好地理解代码结构，提供类型检查和代码提示。文件是TypeScript中用于提供类型声明的重要工具。文件，可以扩展或覆盖现有的类型声明。]]></description><category></category></item><item><title><![CDATA[Vue中使用debugger在chrome谷歌浏览器中失效问题]]></title><link>https://blog.csdn.net/zzy7075/article/details/144736277</link><guid>https://blog.csdn.net/zzy7075/article/details/144736277</guid><author>zzy7075</author><pubDate>Thu, 26 Dec 2024 10:29:33 +0800</pubDate><description><![CDATA[问题描述：我在vscode或idea的vue代码中，加入debugger代码调式，始终不生效，烦得很，清理浏览器缓存，重启项目和电脑，都没啥用，最终找到了解决办法。这两种办法本人都试过，都是可行的。这个在浏览器上设置也是可行的，我个人比较建议这个办法，谷歌浏览器-更多工具-开发者工具-设置-Ignoer List-取消勾选/node_modules/|/bower_components/即可。3）找到Ignoer List-取消勾选/node_modules/|/bower_components/即可。]]></description><category></category></item><item><title><![CDATA[Java实现inputstream流的复制]]></title><link>https://blog.csdn.net/zzy7075/article/details/143689095</link><guid>https://blog.csdn.net/zzy7075/article/details/143689095</guid><author>zzy7075</author><pubDate>Mon, 11 Nov 2024 16:30:44 +0800</pubDate><description><![CDATA[在 Java 中，通常情况下不建议对同一个InputStream对象直接使用两次，因为InputStream是一次性读取的流，读取一次后，流中的位置指针会移动到末尾，再次读取可能无法获取到预期的数据。“InputStream就类比成一个杯子，杯子里的水就像InputStream里的数据，你把杯子里的水拿出来了，杯子的水就没有了，InputStream也是同样的道理。其实像FileInputStream这样的文件流，要实现重复使用可能也并不是很难，利用缓存什么的应该能做到（大文件读取就悲剧了，呵呵呵）。]]></description><category></category></item><item><title><![CDATA[解决：Loading class `com.mysql.jdbc.Driver‘. This is deprecated]]></title><link>https://blog.csdn.net/zzy7075/article/details/143599774</link><guid>https://blog.csdn.net/zzy7075/article/details/143599774</guid><author>zzy7075</author><pubDate>Thu, 07 Nov 2024 16:40:34 +0800</pubDate><description><![CDATA[问题：Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.]]></description><category></category></item><item><title><![CDATA[Java的ZipFile报错：Caused by: java.util.zip.ZipException: invalid CEN header (bad entry name)]]></title><link>https://blog.csdn.net/zzy7075/article/details/143573552</link><guid>https://blog.csdn.net/zzy7075/article/details/143573552</guid><author>zzy7075</author><pubDate>Wed, 06 Nov 2024 16:25:09 +0800</pubDate><description><![CDATA[Windows系统上跑Java的ZipFile报错：Caused by: java.util.zip.ZipException: invalid CEN header (bad entry name)]]></description><category></category></item><item><title><![CDATA[springmvc配置allowMultiQueries批量执行多个SQL，解决multi-statement not allow问题]]></title><link>https://blog.csdn.net/zzy7075/article/details/142870698</link><guid>https://blog.csdn.net/zzy7075/article/details/142870698</guid><author>zzy7075</author><pubDate>Sat, 12 Oct 2024 10:08:16 +0800</pubDate><description><![CDATA[今天尝试使用springmvc使用mybatis一次执行多个SQL，首先在jdbc的url中配置了allowMultiQueries=true，但是报错multi-statement not allow。废话不多说，直接上配置-- 1. 主库数据源 : DriverManagerDataSource -->-- 超过时间限制是否回收，这块也能测试出未关闭连接的时候报错位置 -->-- 超时时间；单位为秒。180秒=3分钟 -->]]></description><category></category></item><item><title><![CDATA[常用TS学习总结]]></title><link>https://blog.csdn.net/zzy7075/article/details/142333058</link><guid>https://blog.csdn.net/zzy7075/article/details/142333058</guid><author>zzy7075</author><pubDate>Wed, 18 Sep 2024 14:45:40 +0800</pubDate><description><![CDATA[/------------ 断言成string类型。//---------- jsx中使用as语法。// 类似 for...in循环属性名，然后用索引访问操作符得到---属性的类型。//---------------------- 是一个any类型。if ((<Fish>pet2).swim) { //---------------- 断言成Fish类型，就肯定有 swim 属性。if (pet.swim) {   //-------------------- 报错，因为pet可能没有swim属性。]]></description><category></category></item><item><title><![CDATA[SpringBoot源码解读与原理分析(四十一)SpringBoot 2.3新特性：优雅停机]]></title><link>https://blog.csdn.net/zzy7075/article/details/142098595</link><guid>https://blog.csdn.net/zzy7075/article/details/142098595</guid><author>zzy7075</author><pubDate>Tue, 10 Sep 2024 14:41:02 +0800</pubDate><description><![CDATA[随后该方法会提取出嵌入式Tomcat中所有Engine中的所有Container，每隔50s检查一次Container是否停止，当所有Context中的线程全部执行完毕，即Context全部停止时，优雅停机流程执行完毕。“优雅停机”的新特性，是指在SpringBoot应用被关闭时（注意此处的关闭可以是kill -2，但不能是kill -9），会预留一小段时间，使应用内部的业务线程执行完毕。通过示例展示了如何配置和测试优雅停机，并详细剖析了嵌入式Tomcat的优雅停机实现过程。]]></description><category></category></item><item><title><![CDATA[Typescript类静态部分与实例部分的区别-详解]]></title><link>https://blog.csdn.net/zzy7075/article/details/141852199</link><guid>https://blog.csdn.net/zzy7075/article/details/141852199</guid><author>zzy7075</author><pubDate>Tue, 03 Sep 2024 09:53:59 +0800</pubDate><description><![CDATA[因此我们假设这么一个简单的应用场景：我们作为一个老师，要录入每个学生的id（id）和年龄（age）（即创建大量的 student对象，对象中有id和age两个字段），现在我们手上已有的条件是：班级id（classId），学生学号（code），学生年龄（age），且学生id的生成规则为：班级id后接学生学号。因此在使用class的时候，我们不仅仅是要约束最终创建的实例，更重要的是要约束类中的constructor构造器，也就是 类的静态部分。constructor存在于类的静态部分，所以不在检查的范围内。]]></description><category></category></item><item><title><![CDATA[TypeScript(一)TypeScript下载安装，编译运行的三种方式：tsc命令行/webpack搭建环境/tsc-node库]]></title><link>https://blog.csdn.net/zzy7075/article/details/141636604</link><guid>https://blog.csdn.net/zzy7075/article/details/141636604</guid><author>zzy7075</author><pubDate>Wed, 28 Aug 2024 11:38:02 +0800</pubDate><description><![CDATA[文章介绍了TypeScript作为JavaScript的超集，提供类型系统，并演示了如何搭建TypeScript环境，包括使用tsc编译器、通过Webpack自动化构建流程，以及配置ts-node直接运行TypeScript代码。-y 的含义：yes的意思，在init的时候省去了敲回车的步骤，生成的默认的package.json。在进行TypeScript开发时，我们会针对TypeScript进行相关的配置，而这些配置信息是存放在一个tsconfig.json文件中的。]]></description><category></category></item></channel></rss>