<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[阿七的博客]]></title><description><![CDATA[一名在街头放飞理想的有志青年]]></description><link>https://blog.youkuaiyun.com/weixin_53011574</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; weixin_53011574]]></copyright><item><title><![CDATA[SpringCloud总结（springcloud alibaba）]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/137940673</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/137940673</guid><author>weixin_53011574</author><pubDate>Fri, 14 Jun 2024 21:51:03 +0800</pubDate><description><![CDATA[这块主要是有注册中心和配置中心两个地方.那首先注册中心是什么我的理解是如果没有注册中心,那么每个服务直接都是直接访问各自的域名.这样有很大的缺陷,首先耦合度高,只有一个出现异常,其他的都异常.那么我们就需要一个东西去管理我们的服务.简单来说,就是将我们的服务都注册到一个地方,然后大家都调用该地方,该地方再返回相关信息,把直接调用改成间接调用.也会增加系统的安全性.那配置中心是什么每个服务都会配置信息,通常我们都是配置到各自的yml文件或者其他的.]]></description><category></category></item><item><title><![CDATA[Java设计模式(23种设计模式 重点介绍一些常用的)]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/139117577</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/139117577</guid><author>weixin_53011574</author><pubDate>Thu, 23 May 2024 14:37:25 +0800</pubDate><description><![CDATA[在不破坏封装的前提下，捕获一个对象的内部状态，并在该对象之外保存该状态，这样以后就可将该对象恢复到原先保存的状态。为子系统中的一组接口提供一个一致的界面，此模式定义了一个高层接口，该接口使得该子系统更加容易使用。定义了一种一堆多的关系，让多个观察者同时监听某个对象，该对象发生变化，会通知观察者对象去更新自己。将请求封装为对象，用不同的请求对客户进行参数化，对请求排队或记录请求日志，以及支持撤销的操作。定义了算法策略，分别封装起来，让他们可以互相替换，不会影响到使用算法的客户。]]></description><category></category></item><item><title><![CDATA[Springboot自动装配源码分析]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/138802268</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/138802268</guid><author>weixin_53011574</author><pubDate>Mon, 13 May 2024 15:03:31 +0800</pubDate><description><![CDATA[这个方法中this.getCandidateConfigurations(annotationMetadata, attributes)就是获取候选的配置类，接下来，我们就进入到getCandidateConfigurations这个方法中去查看SpringBoot是怎么获取这些候选的配置类。这一句就是获取自动装配类的核心代码，我们进入到getAutoConfigurationEntry这个方法中去看，它是怎么获取配置的。然后前面说这个类是@Import引入的。利用SPI机制去加载配置类。]]></description><category></category></item><item><title><![CDATA[SpringBoot启动流程源码分析]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/138792013</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/138792013</guid><author>weixin_53011574</author><pubDate>Mon, 13 May 2024 14:36:00 +0800</pubDate><description><![CDATA[反应式web应用，实际就是web客户端和后端会有一个管道，后端将改变数据不断的推送到客户端，而不是传统的WEB应用将后端数据获得后发送给客户端显示，这样前端就被阻塞必须等待后端数据处理完成才能显示，反应式编程是依据观察者和订阅者模式来实现的，这样缩短了客户端的响应时间，单因为客户端的不确定性，可能前端很容易就被后端推送的数据压垮，所以有了被压（back pressure）概念，直到Jdk 9才对reactive有了支持，spring 5的flux就是一个reactive框架。//加载之后,刷新之前。]]></description><category></category></item><item><title><![CDATA[java技术总结]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/138181911</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/138181911</guid><author>weixin_53011574</author><pubDate>Fri, 10 May 2024 22:58:38 +0800</pubDate><description><![CDATA[反射是java作为动态语言的重要标志，通过反射，可以动态修改类的状态，内容。线程池就是可以实现的线程复用的一种技术。可以节省线程反复创建关闭所造成的开销。有七种方式，分为两大类。一种是自定义线程池通过threadpoolexecutor实现另一种是通过executors实现其中又分为六种小模式newfixedthreadpool 固定数量的线程池newcachedthreadpool 有缓存的线程池newscheduledthreadpool 定时任务的线程池。]]></description><category></category></item><item><title><![CDATA[HashMap前世今生]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/138584399</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/138584399</guid><author>weixin_53011574</author><pubDate>Thu, 09 May 2024 20:23:57 +0800</pubDate><description><![CDATA[HashMap是我们常用的一种数据结构，他是一个key-value结构。我们来深入了解一下。1.8之前用的数组加链表1.8之后用的数组加链表加红黑树，当链表数量大于8时，将链表转为红黑树。当红黑书节点小于6又会转为链表。]]></description><category></category></item><item><title><![CDATA[Redis技术总结]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/138163111</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/138163111</guid><author>weixin_53011574</author><pubDate>Wed, 24 Apr 2024 17:29:10 +0800</pubDate><description><![CDATA[底层使用了SDS简单动态字符，string一共三种编码方式，int，embstr，rawint主要存储long型整数string有两个数据结构redisObject和SDSembstr和raw底层sds，主要区别是embstr的redisobject和sds连续存储在一起，而redisobject和sds通过指针相连，不连续。当int型时，大于19用embstr，大于44用raw浮点数，字符串默认embstr，大于44用raw主要用途是存储用户信息，token，分布式锁，计数器等。]]></description><category></category></item><item><title><![CDATA[Redis学习总结(基本数据类型 底层结构)]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/138136146</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/138136146</guid><author>weixin_53011574</author><pubDate>Wed, 24 Apr 2024 16:29:13 +0800</pubDate><description><![CDATA[基本用法SET存储字符串值。SETNX仅在键不存在的情况下存储字符串值。用于实现锁。GET检索字符串值。MGET在单个操作中检索多个字符串值。key - value键值对，底层数据结构是SDS简单动态字符。详细来说的话，底层有三种编码方式，int，embstr，raw其中int存储的是long型数据，其他两个都用sds，不过embstr编码的sds是最结构效率最快的。应用场景。??]]></description><category></category></item><item><title><![CDATA[Mysql 锁学习笔记]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/138116554</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/138116554</guid><author>weixin_53011574</author><pubDate>Tue, 23 Apr 2024 15:54:51 +0800</pubDate><description><![CDATA[事务隔离级别为可重复读(Repeated Read, RR)以主键或唯一索引作为查询条件，有存在值（记录）时是行锁，不存在值时触发间隙锁。普通索引作为查询条件，恒定间隙锁。索引作为查询条件，并以范围取值时，产生间隙锁。无索引时的普通检索，产生表锁。]]></description><category></category></item><item><title><![CDATA[Mysql技术总结]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/137811905</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/137811905</guid><author>weixin_53011574</author><pubDate>Tue, 16 Apr 2024 11:00:37 +0800</pubDate><description><![CDATA[mysql 5.5之前默认是myisam，之后是innodb。innodb支持表锁，行锁，间隙锁。myisam支持表锁。innodb是聚簇索引，索引和数据存储在一起。myisam是非聚簇索引，索引和数据分开存储。innodb支持事务，myisam不支持。innodb支持外键，myisam不支持。]]></description><category></category></item><item><title><![CDATA[Mysql总结复习]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/136164017</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/136164017</guid><author>weixin_53011574</author><pubDate>Mon, 19 Feb 2024 17:26:16 +0800</pubDate><description><![CDATA[1.B+树的数据都集中在叶子结点,分支只有索引,所以分支可以存放更多的索引,而B树的分支也有数据,所以B+树的层高会小于B树,因此读取数据产生的磁盘开销也会小于B树.2.B+树擅长范围查询,叶子结点存放的数据是按顺序存放的双向链表,而B树只能中序遍历.]]></description><category></category></item><item><title><![CDATA[VUE项目bug总结]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/132564874</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/132564874</guid><author>weixin_53011574</author><pubDate>Tue, 29 Aug 2023 17:14:45 +0800</pubDate><description><![CDATA[当遇到这种错误时一般有两种情况，一种就是你没有定义该变量在data中。还有一种就是就是我的情况，这里先上代码这种情况识别不到this.list变量，可以用let that=this或者注意：这里的数组一定要用push，千万别用list[index]=.....,经本人实验，这种方法初始化页面识别不到（数据倒是有）。]]></description><category></category></item><item><title><![CDATA[SQL力扣练习（十一）]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/132357766</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/132357766</guid><author>weixin_53011574</author><pubDate>Fri, 18 Aug 2023 12:04:46 +0800</pubDate><description><![CDATA[用case when,先判断是否根节点,然后根据一个内查询再区分是否叶节点,这个方法虽然简单点,但not in 较为损耗性能,总体速度与解法一差不多.首先根节点很好判断,先用一个flag 区分出根和非根,然后用p_id是否含有id,根据这个标准判断是否叶节点.使用left join和union实现 先改奇数id学生的名字，再改偶数id学生的名字，全改过来后，需要注意的是lag 取得是当前行之前的数据，lead 取的实当前行之后的数据。节点 1 是根节点，因为它的父节点为空，并且它有子节点 2 和 3。]]></description><category></category></item><item><title><![CDATA[SQL力扣练习（十）]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/132163364</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/132163364</guid><author>weixin_53011574</author><pubDate>Tue, 08 Aug 2023 14:20:53 +0800</pubDate><description><![CDATA[首先用自定义变量@count为大于等于100的排序，然后从第一步的表中筛选出数量大于三的，如下图，这里重点是从大到小排序。然后再筛选即可得到答案。]]></description><category></category></item><item><title><![CDATA[Git(丢失stash数据恢复）]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/132054110</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/132054110</guid><author>weixin_53011574</author><pubDate>Wed, 02 Aug 2023 08:53:56 +0800</pubDate><description><![CDATA[git fsck --no-reflog | awk '/dangling commit/ {print $3}' | xargs -L 1 git --no-pager show -s --format="%ci %H" | sort //找到最近的哈希码。然后查资料说代码还有在暂存区stash，我看了看有个人说用git stash pop就行，于是代码没回来，而且暂存区stash的也没了，雪上加霜。结果这时发生了代码冲突，我的代码全没了，直接吓我一大跳。git add . //将本地代码添加到暂存区。]]></description><category></category></item><item><title><![CDATA[SQL力扣练习（九）]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/132018506</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/132018506</guid><author>weixin_53011574</author><pubDate>Mon, 31 Jul 2023 11:33:00 +0800</pubDate><description><![CDATA[表:Orders在 SQL 中，Order_number是该表的主键。此表包含关于订单ID和客户ID的信息。查找下了的客户的。测试用例生成后，比任何其他客户下了更多的订单。查询结果格式如下所示。]]></description><category></category></item><item><title><![CDATA[SQL力扣练习（八）]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/131978330</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/131978330</guid><author>weixin_53011574</author><pubDate>Fri, 28 Jul 2023 14:06:39 +0800</pubDate><description><![CDATA[其 tiv_2015 与其他投保人不同，并且位置与第三条记录相同，这也导致了第三条记录不符合题目要求。tiv_2015 是该投保人在 2015 年的总投保金额，tiv_2016 是该投保人在 2016 年的总投保金额。因此，结果是第一条记录和最后一条记录的 tiv_2016 之和，即 45。tiv_2015 值为 10 与第三条和第四条记录相同，且其位置是唯一的。写一个查询语句，返回一个客户列表，列表中客户的推荐人的编号都。该表的每一行都表示雇员的名字、他们的部门和他们的经理的id。]]></description><category></category></item><item><title><![CDATA[力扣算法练习（四）]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/131973223</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/131973223</guid><author>weixin_53011574</author><pubDate>Fri, 28 Jul 2023 09:52:14 +0800</pubDate><description><![CDATA[给定一个长度为n的整数数组height。有n条垂线，第i条线的两个端点是(i, 0)和。找出其中的两条线，使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。你不能倾斜容器。]]></description><category></category></item><item><title><![CDATA[SQL力扣练习（七）]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/131910246</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/131910246</guid><author>weixin_53011574</author><pubDate>Tue, 25 Jul 2023 09:59:29 +0800</pubDate><description><![CDATA[Tripsid 是这张表的主键。这张表中存所有出租车的行程信息。每段行程有唯一 id ，其中 client_id 和 driver_id 是 Users 表中 users_id 的外键。status 是一个表示行程状态的枚举类型，枚举成员为(‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’)。Usersusers_id 是这张表的主键。]]></description><category></category></item><item><title><![CDATA[SQL力扣练习（六）]]></title><link>https://blog.youkuaiyun.com/weixin_53011574/article/details/131595834</link><guid>https://blog.youkuaiyun.com/weixin_53011574/article/details/131595834</guid><author>weixin_53011574</author><pubDate>Fri, 07 Jul 2023 15:31:44 +0800</pubDate><description><![CDATA[到现在，我对这个自定义函数的用法才稍微熟练了一点，这自定义函数的出现，可以让sql变的更加灵活。CASE这个意思是，如果@pre等于当前的DepartmentId则@rank加一，否则更新@pre的值且@rank=1。这个@rank的值命名为RANK字段。用这个进行排序的关键就是from 的表需要有序。FROM (## 自定义变量RANK, 查找出 每个部门工资前三的排名CASE(## (部门,薪水)去重,根据 部门(升),薪水(降) 排序)te)t。]]></description><category></category></item></channel></rss>