<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[a415171995的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/a415171995</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a415171995]]></copyright><item><title><![CDATA[设计模式-行为型模式]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/141813823</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/141813823</guid><author>a415171995</author><pubDate>Mon, 02 Sep 2024 21:27:24 +0800</pubDate><description><![CDATA[需要将数据结构与不常用的操作进行分离的时候。比如，扫描文件内容这个动作通常不是文件常用的操作，但是对于文件夹和文件来说，和数据结构本身没有太大关系（树形结构的遍历操作），扫描是一个额外的动作，如果给每个文件都添加一个扫描操作会太过于重复，这时采用访问者模式是非常合适的，能够很好分离文件自身的遍历操作和外部的扫描操作。观察者模式的应用场景非常广泛，小到代码层面的解耦，大到架构层面的系统解耦，再或者 一些产品的设计思路，都有这种模式的影子.现在我们常说的基于事件驱动的架构，其实也是观察者模式的一种最佳实践。]]></description><category></category></item><item><title><![CDATA[设计模式-结构型模式(7种)]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/141783608</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/141783608</guid><author>a415171995</author><pubDate>Sun, 01 Sep 2024 14:01:31 +0800</pubDate><description><![CDATA[在软件开发中由于一些原因客户端不想或不能直接访问一个对象此时可以通过一个称为"代理的第三者来实现间接访问该方案对应的设计模式被称为代理模式.代理模式原始定义是：让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问，并允许将请求提交给对象前后进行一些处理。现实生活中的代理。]]></description><category></category></item><item><title><![CDATA[设计模式-创建型模式]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/141752718</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/141752718</guid><author>a415171995</author><pubDate>Sat, 31 Aug 2024 19:54:40 +0800</pubDate><description><![CDATA[建造者模式除了上面的用途外，在开发中还有一个常用的使用方式，就是当一个类构造器需要传入很多参数时，如果创建这个类的实例，代码可读性会非常差，而且很容易引入错误，此时就可以利用建造者模式进行重构。使用建造者模式可以有效的封装变化，在使用建造者模式的场景中，一般产品类和建造者类是比较稳定的，因此，将主要的业务逻辑封装在指挥者类中对整体而言可以取得比较好的稳定性。建造者模式所创建的产品一般具有较多的共同点，其组成部分相似，如果产品之间的差异性很大，则不适合使用建造者模式，因此其使用范围受到一定的限制。]]></description><category></category></item><item><title><![CDATA[六大设计原则]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/141729823</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/141729823</guid><author>a415171995</author><pubDate>Sat, 31 Aug 2024 00:35:52 +0800</pubDate><description><![CDATA[这里没有一个具体的金科玉律，但从实际代码开发经验上，有一些可执行性的。开闭原则规定软件中的对象、类、模块和函数对扩展应该是开放的，但对于修。在不了解派生类的情况下，仅通过接口或基类的方法，即可清楚的知道方法的。由具体实现对象进行赋值，实现变化的多样性，完成代码对修改的封闭，扩展。的，内存条只能是金士顿的，硬盘只能是希捷的，这对用户肯定是不友好的，开闭原则是保证代码可扩展性的重要指导原则，是对代码扩展性的具体解读。很多设计模式诞生的初衷都是为了提高代码的扩展性，都是以满足开闭原则为。]]></description><category></category></item><item><title><![CDATA[JAVA IO 专题]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/141439640</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/141439640</guid><author>a415171995</author><pubDate>Thu, 22 Aug 2024 22:36:30 +0800</pubDate><description><![CDATA[BIO同步并阻塞，服务器实现一个连接一个线程，即客户端有连接请求时服务器端就需要启动一个线程进行处理，没处理完之前此线程不能做其他操作（如果是单线程的情况下，我传输的文件很大呢？），当然可以通过线程池机制改善。BIO方式适用于连接数目比较小且固定的架构，这种方式对服务器资源要求比较高，并发局限于应用中JDK1.4以前的唯一选择，但程序直观简单易理解。NIO同步非阻塞，服务器实现一个连接一个线程，即客户端发送的连接请求都会注册到多路复用器上，多复用器轮询到连接有I/O请求时才启动一个线程进行处理。]]></description><category></category></item><item><title><![CDATA[多线程专题]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/141438870</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/141438870</guid><author>a415171995</author><pubDate>Thu, 22 Aug 2024 22:08:46 +0800</pubDate><description><![CDATA[start方法是我们开启一个新的线程的方法，但是并不是直接开启，而是告诉CPU我已经准备好了，快点运行我，这是启动一个线程的唯一入口。// 导致此线程开始执行;Java虚拟机调用此线程的run方法。生命周期：对象从创建到销毁的全过程线程的生命周期：线程对象(Thread)从开始到销毁的全过程创建 Thread对象就绪状态 执行start方法后线程进入可运行的状态运行状态 CPU运行阻塞状态 运行过程中被中断(等待阻塞，对象锁阻塞，其他阻塞)终止状态 线程执行完成。]]></description><category></category></item><item><title><![CDATA[Spring框架]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/133742891</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/133742891</guid><author>a415171995</author><pubDate>Tue, 10 Oct 2023 11:17:14 +0800</pubDate><description><![CDATA[控制反转（IoC）是Spring框架的核心概念，它指的是将对象的创建和管理责任交给Spring容器，而不是由开发人员手动创建对象。切面（Aspect）是Spring框架中的一个模块，用于处理横切关注点（cross-cutting concerns），例如日志记录、性能监控、安全性等。切面是由切点（Pointcut）和通知（Advice）组成的。面向切面编程（AOP）是Spring框架的一个核心概念，用于处理横切关注点（cross-cutting concerns），例如日志记录、性能监控、安全性等。]]></description><category></category></item><item><title><![CDATA[MyBatis]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/133742876</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/133742876</guid><author>a415171995</author><pubDate>Tue, 10 Oct 2023 11:16:35 +0800</pubDate><description><![CDATA[一级缓存存储了在同一个会话中执行的查询结果，当同一个会话中的多次查询命中一级缓存时，不会再次访问数据库，提高了查询性能。一级缓存是在会话（SqlSession）级别的，二级缓存是跨会话的；一级缓存是在会话级别的，二级缓存是跨会话的、一级缓存是默认开启的，二级缓存需要手动配置开启、一级缓存是基于内存的，二级缓存可以配置为基于文件或分布式缓存。一级缓存是在会话级别的，二级缓存是跨会话的、一级缓存是默认开启的，二级缓存需要手动配置开启、一级缓存是基于内存的，二级缓存可以配置为基于文件或分布式缓存。]]></description><category></category></item><item><title><![CDATA[MySQL的执行原理]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/133636556</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/133636556</guid><author>a415171995</author><pubDate>Sat, 07 Oct 2023 12:23:15 +0800</pubDate><description><![CDATA[MySQL在一般情况下执行一个查询时最多会用到单个二级索引，但是存在有特殊情况，在这些特殊情况下也可能在一个查询中使用多个二级索引，MySQL中这种使用到多个索引来完成一次查询的执行方法称之为：索引合并/index merge。从FILE -> 内存 部分数据(10%)，再和驱动表 多条(100)的匹配(减少 磁盘 加载驱动表的代价)。连接查询，申请一块固定大小的内存，若干(1000条)驱动表的数据。每遍历一次被驱动表。把之前的内存清理掉，从FILE -> 内存 部分数据(10%)，再和驱动表做一次匹配。]]></description><category></category></item><item><title><![CDATA[MySQL中的系统库]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/133636552</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/133636552</guid><author>a415171995</author><pubDate>Sat, 07 Oct 2023 12:22:30 +0800</pubDate><description><![CDATA[select * from schema_statistics_with_buffer\G -增删查改的消耗。performance_schema: 运行在比较低的级别的 用于监控MySQL 运行过程中的资源消耗。代码中SQL--> MySQL系统库。]]></description><category></category></item><item><title><![CDATA[MySql 8新特性]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/132844018</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/132844018</guid><author>a415171995</author><pubDate>Wed, 13 Sep 2023 01:05:29 +0800</pubDate><description><![CDATA[2、灰度发布(线上测试，加隐藏索引、删除)通过一些设置，在查询优化器执行SQL，把索引生效(针对你的测试)，发现这个索引没问题，改成正是索引，生产环境生效。产看系统参数：select @@optimizer_switch\G(use_invisible_indexes=off -> 默认看不见索引)当前会话设置(测试的时候)：set session optimizer_switch='use_invisible_indexes=on';password_history | 0 (0:可以修改相同密码;]]></description><category></category></item><item><title><![CDATA[MySql中的锁]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/132797992</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/132797992</guid><author>a415171995</author><pubDate>Mon, 11 Sep 2023 00:44:33 +0800</pubDate><description><![CDATA[2、修改前后发生变化(1024->100),B+tree定位到这条数据位置，获取X锁，该条记录彻底删除，插入一条心记录(100),100位置获取X锁。- delete：B+tree 读这条记录 取一下这条记录的 X锁 delete记录。1、要去该的记录A，（1024），所在的存储空间，修改前后没有发生变化，获取X锁。- 事务：某条记录 加 共享锁的时候，先在表的级别 一个IS锁。- 定位删除的记录 B+树的过程，获取X锁定读。- X排他锁 X-X不兼容 X-S不兼容。事务1->读取一条记录，X锁。]]></description><category></category></item><item><title><![CDATA[事务和事务隔离级别]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/132795282</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/132795282</guid><author>a415171995</author><pubDate>Sun, 10 Sep 2023 21:14:47 +0800</pubDate><description><![CDATA[READ UNCOMMITTED:未提交读。- READ UNCOMMITED: 未提交读。- REPEATABLE READ: 可重复读。- REPEATABLE READ:可重复读。- READ COMMITTED: 已提交读。- READ COMMITTED:已提交读。- 一致性(consistency)- 原子性(atomicity)- 隔离性(isolation)- 脏读 (读取后其他事务回滚)- 不可重复读 (update)- 幻读 (insert)- 脏读>不可重复读>幻读。]]></description><category></category></item><item><title><![CDATA[MYSQL索引]]></title><link>https://blog.youkuaiyun.com/a415171995/article/details/132768673</link><guid>https://blog.youkuaiyun.com/a415171995/article/details/132768673</guid><author>a415171995</author><pubDate>Fri, 08 Sep 2023 22:40:54 +0800</pubDate><description><![CDATA[InnoDB表都有一个称为聚集索引的特殊索引（默认主键，没有则选择唯一索引,都没有则西安则隐式的rowid建）1.一个索引就是一个B+树，索引让我们的查询可以快速定位和扫描到我们需要的数据记录上，加快查询的速度。索引的选择性/离散性：不重复的索引值和数据表的记录总数（N）的壁纸（范围1/N到1）越高查询效率越高。联合索引/复合索引 --（多个列+主键） ->覆盖索引 （不是索引）这不是一种索引，指的这种场景：“查询语句所需的列，被包含在查询条件中的索引列里面”]]></description><category></category></item></channel></rss>