<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[isbn0123的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/isbn0123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; isbn0123]]></copyright><item><title><![CDATA[关于mysql认识1.1]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119333290</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119333290</guid><author>isbn0123</author><pubDate>Mon, 02 Aug 2021 20:23:55 +0800</pubDate><description><![CDATA[本文主要是关于mysql的一些个人理解，如果文中用词或者理解方面出现问题，欢迎指出。此文旨在分享我对于mysql的整一些个人理解，对于细节方面不会去深究，若有名词或者理解方面的问题，欢迎指出
Mysql
须知：在此是默认读者熟悉了sql的一些概念，在此只是记录平时经常用到的一些sql以及背后的原理
mysql的执行顺序
select[distinct]
from
join（如left join）
on
where
group by
having
union
order by
limit
Mysql的执行顺序]]></description><category></category></item><item><title><![CDATA[记一次SSLHandshakeException报错记录]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119216428</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119216428</guid><author>isbn0123</author><pubDate>Sat, 31 Jul 2021 18:30:57 +0800</pubDate><description><![CDATA[在启动项目的时候报错
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

原因是引入了druid数据源启动的时候没错，访问项目的时候报错
记录以下解决办法：


找到自己JAVA文件位置进入jre/lib/security，编辑java.security


find jdk.tls.disabledAlgorithms
]]></description><category></category></item><item><title><![CDATA[分布式理论]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119216523</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119216523</guid><author>isbn0123</author><pubDate>Sat, 31 Jul 2021 18:30:08 +0800</pubDate><description><![CDATA[分布式理论
CAP 理论
CAP 也就是 Consistency（一致性）、Availability（可用性）、Partition Tolerance（分区容错性） 这三个单词首字母组合。
CAP，由于分布式实际上不可能保证分区容错性，也就是说会有网络波动或者服务宕机的可能，所以P必须选择，那么就不可能保证P的情况下去保证CA，所以如果业务要求强一致就选CP等等
BASE 理论
BASE 是 Basically Available（基本可用） 、Soft-state（软状态） 和 Eventually Co]]></description><category></category></item><item><title><![CDATA[什么是CAS机制]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119216547</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119216547</guid><author>isbn0123</author><pubDate>Fri, 30 Jul 2021 14:56:13 +0800</pubDate><description><![CDATA[什么是CAS机制
我们先看一段代码：
启动两个线程，每个线程中让静态变量count循环累加100次。

最终输出的count结果一定是200吗？因为这段代码是非线程安全的，所以最终的自增结果很可能会小于200。我们再加上synchronized同步锁，再来看一下。

加了同步锁之后，count自增的操作变成了原子性操作，所以最终输出一定是count=200，代码实现了线程安全。虽然synchronized确保了线程安全，但是在某些情况下，这并不是一个最有的选择。
关键在于性能问题。
synchronized]]></description><category></category></item><item><title><![CDATA[SpringBoot自动配置]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119216269</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119216269</guid><author>isbn0123</author><pubDate>Fri, 30 Jul 2021 14:54:55 +0800</pubDate><description><![CDATA[SpringBoot自动配置
通过启动类的
@SpringBootApplication–&gt;@EnableAutoConfiguration–&gt;@Import({AutoConfigurationImportSelector.class})
–&gt;
selectImports()    List configurations = this.getCandidateConfigurations(annotationMetadata, attributes)–&gt;
getCandidateC]]></description><category></category></item><item><title><![CDATA[SpringBoot启动分析]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119216210</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119216210</guid><author>isbn0123</author><pubDate>Fri, 30 Jul 2021 14:54:28 +0800</pubDate><description><![CDATA[SpringBoot启动分析
1）IOC之容器启动阶段
这个阶段主要会进行：加载配置文件并解析，然后将解析后的数据封装为BeanDefinition实例，最后把这些保存了bean定义的BeanDefinition，注册到相应的BeanDefinitionRegistry，这样容器的启动工作就完成了。
配置文件:类似的有xml配置文件还有自动配置类
2）IOC之容器实例化阶段
当某个请求通过BeanFactory的getBean方法请求某个对象，或者因为依赖关系容器需要隐式的调用getBean时，就会触发第二]]></description><category></category></item><item><title><![CDATA[线程池详解]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119216540</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119216540</guid><author>isbn0123</author><pubDate>Fri, 30 Jul 2021 14:52:48 +0800</pubDate><description><![CDATA[线程池
为什么要使用线程池？

池化技术相比大家已经屡见不鲜了，线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗，提高对资源的利用率。

线程池提供了一种限制和管理资源（包括执行一个任务）。 每个线程池还维护一些基本统计信息，例如已完成任务的数量。
这里借用《Java 并发编程的艺术》提到的来说一下使用线程池的好处：

降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
提高响应速度。当任务到达时，任务可以不需要的等到线程创建就]]></description><category></category></item><item><title><![CDATA[redis解析]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119192318</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119192318</guid><author>isbn0123</author><pubDate>Fri, 30 Jul 2021 14:51:14 +0800</pubDate><description><![CDATA[redis
redis是单线程执行的IO多路复用模型
具体实现是redis基于Reactor 开发了文件事件处理器,
文件事件处理器:

Redis6.0 引入多线程主要是为了提高网络 IO 读写性能，因为这个算是 Redis 中的一个性能瓶颈（Redis 的瓶颈主要受限于内存和网络）。
redis是怎么知道哪个数据过期了的,redis保存了一个map，key是redis中的某个键,value是过期时间。
数据过期了怎么淘汰:
惰性删除 ：只会在取出 key 的时候才对数据进行过期检查。这样对 CPU 最友]]></description><category></category></item><item><title><![CDATA[AQS详解]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119192237</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119192237</guid><author>isbn0123</author><pubDate>Fri, 30 Jul 2021 14:48:49 +0800</pubDate><description><![CDATA[Atomic 是指一个操作是不可中断的。原子性指的是即使是在多个线程一起执行的时候，一个操作一旦开始，就不会被其他线程干扰。
AQS 的全称为 AbstractQueuedSynchronizer ，翻译过来的意思就是抽象队列同步器
一、概述
谈到并发，不得不谈ReentrantLock；而谈到ReentrantLock，不得不谈AbstractQueuedSynchronizer（AQS）！
类如其名，抽象的队列式的同步器，AQS定义了一套多线程访问共享资源的同步器框架，许多同步类实现都依赖于它，如常用的]]></description><category></category></item><item><title><![CDATA[关于多线程的认识]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119216477</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119216477</guid><author>isbn0123</author><pubDate>Fri, 30 Jul 2021 14:46:40 +0800</pubDate><description><![CDATA[多线程
进程与线程
进程
定义
进程是获得资源后的正在执行的程序的统称
流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FSccki1D-1627550799964)(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.kanzhun.com%2Fimages%2Fseo%2Fmianshiti%2F20191125%2Fd67314c2cc0644bee5b25197e593fd73.jpg&amp;ref]]></description><category></category></item><item><title><![CDATA[undo log实现事务的原子性以及MVCC解析]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119216421</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119216421</guid><author>isbn0123</author><pubDate>Fri, 30 Jul 2021 14:43:29 +0800</pubDate><description><![CDATA[undo log实现事务的原子性以及MVCC解析
事务并发带来的问题
事务并发往往会带来一些不可预知的问题，一般可以包括**「脏读」、「幻读」、「不可重复读」和「丢失更新」**。
脏读
脏读是指事务A未提交的数据被事务B读取，事务A回滚，事务B读到的数据是脏数据。
幻读
幻读是指事务A查询一次数据后，事务B增加或减少了几条数据，事务A再次查询发现和之前查到的数据条数不一致，就好像出现了幻觉一样。
不可重复读
不可重复读是事务A两次查询期间事务B修改了数据，导致事务A两次读取的数据不一致。
丢失更新
丢失更新]]></description><category></category></item><item><title><![CDATA[关于Mysql的认识]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119216110</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119216110</guid><author>isbn0123</author><pubDate>Fri, 30 Jul 2021 14:42:26 +0800</pubDate><description><![CDATA[本文主要是关于mysql的一些个人理解，如果文中用词或者理解方面出现问题，欢迎指出。此文旨在分享我对于mysql的整一些个人理解，对于细节方面不会去深究，若有名词或者理解方面的问题，欢迎指出
Mysql
须知：在此是默认读者熟悉了sql的一些概念，在此只是记录平时经常用到的一些sql以及背后的原理
mysql的执行顺序
select[distinct]
from
join（如left join）
on
where
group by
having
union
order by
limit
Mysql的执行顺序]]></description><category></category></item><item><title><![CDATA[SQL试题总结]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119247301</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119247301</guid><author>isbn0123</author><pubDate>Fri, 30 Jul 2021 14:40:06 +0800</pubDate><description><![CDATA[SQL 练习题及答案
1.查询没学过“谌燕”老师课的同学，显示（学号、姓名）（7分）
				
SELECT
	hs.STUDENT_NO,hs.STUDENT_NAME
FROM
	test_student hs
WHERE
	 NOT EXISTS(
		SELECT
			'A'
		FROM
			test_course hc LEFT JOIN test_teacher ht
		ON	
			hc.teacher_no = ht.teacher_no
		LEFT JOIN test_stude]]></description><category></category></item><item><title><![CDATA[JavaIO详解]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119215929</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119215929</guid><author>isbn0123</author><pubDate>Thu, 29 Jul 2021 17:11:09 +0800</pubDate><description><![CDATA[IO/NIO/BIO
简介
无论是Socket的读写还是文件的读写，在Java层面的应用开发或者是linux系统底层开发，都属于输入input和输出output的处理，简称为IO读写。在原理上和处理流程上，都是一致的。区别在于参数的不同。
用户程序进行IO的读写，基本上会用到read&amp;write两大系统调用。可能不同操作系统，名称不完全一样，但是功能是一样的。
先强调一个基础知识：read系统调用，并不是把数据直接从物理设备，读数据到内存。write系统调用，也不是直接把数据，写入到物理设备。
re]]></description><category></category></item><item><title><![CDATA[关于git的笔记]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119215881</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119215881</guid><author>isbn0123</author><pubDate>Thu, 29 Jul 2021 17:09:05 +0800</pubDate><description><![CDATA[git
git怎么提交本地项目到github上
下载git
提交模式选择
这是将本地仓库推送到远程仓库时要选择的验证方式

通常的账户，密码
ssh密匙对

HTTP方式
先登录github
找到http登录的地址，这就是要推送的地址。PS：没有在github上创建仓库的先创建一个仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9BYsdcR5-1627549674064)(C:\Users\Administrator\Pictures\git\githttp.png)]]]></description><category></category></item><item><title><![CDATA[TCP解析]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119215770</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119215770</guid><author>isbn0123</author><pubDate>Thu, 29 Jul 2021 17:04:56 +0800</pubDate><description><![CDATA[TCP协议
首部格式
图释:

各个段位说明:


源端口和目的端口:　　各占 2 字节.端口是传输层与应用层的服务接口.传输层的复用和分用功能都要通过端口才能实现，源端口号，主机该报文段是来自哪里；目标端口号，要传给哪个上层协议或应用程序


序号:　　占 4 字节.TCP 连接中传送的数据流中的每一个字节都编上一个序号.序号字段的值则指的是本报文段所发送的数据的第一个字节的序号


确认号:　　占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号，用作对另一方发送的tcp报文段的响应。其值]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119215706</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119215706</guid><author>isbn0123</author><pubDate>Thu, 29 Jul 2021 17:02:42 +0800</pubDate><description><![CDATA[ConcurrentHashMap
JDK8中ConcurrentHashMap参考了JDK8 HashMap的实现，采用了数组+链表+红黑树的实现方式来设计，内部大量采用CAS操作
JDK8中彻底放弃了Segment转而采用的是Node，其设计思想也不再是JDK1.7中的分段锁思想。
Node：保存key，value及key的hash值的数据结构。其中value和next都用volatile修饰，保证并发的可见性。
&lt;strong&gt;class Node&lt;K,V&gt; implement]]></description><category></category></item><item><title><![CDATA[HashMap]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119215667</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119215667</guid><author>isbn0123</author><pubDate>Thu, 29 Jul 2021 17:01:09 +0800</pubDate><description><![CDATA[HashMap
HashMap 简介
HashMap 主要用来存放键值对，它基于哈希表的 Map 接口实现，是常用的 Java 集合之一，是非线程安全的。
HashMap 可以存储 null 的 key 和 value，但 null 作为键只能有一个，null 作为值可以有多个
JDK1.8 之前 HashMap 由 数组+链表 组成的，数组是 HashMap 的主体，链表则是主要为了解决哈希冲突而存在的（“拉链法”解决冲突）。 JDK1.8 以后的 HashMap 在解决哈希冲突时有了较大的变化，当链表长]]></description><category></category></item><item><title><![CDATA[Arraylist]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119215538</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119215538</guid><author>isbn0123</author><pubDate>Thu, 29 Jul 2021 16:58:05 +0800</pubDate><description><![CDATA[数据结构

ArrayList
ArrayList 的底层是数组队列，相当于动态数组。与 Java 中的数组相比，它的容量能动态增长。在添加大量元素前，应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。
ArrayList继承于 AbstractList ，实现了 RandomAccess
public class ArrayList&lt;E&gt; extends AbstractList&lt;E&gt;
        implem]]></description><category></category></item><item><title><![CDATA[Seata]]></title><link>https://blog.youkuaiyun.com/isbn0123/article/details/119214581</link><guid>https://blog.youkuaiyun.com/isbn0123/article/details/119214581</guid><author>isbn0123</author><pubDate>Thu, 29 Jul 2021 16:52:28 +0800</pubDate><description><![CDATA[seata
如下图所示，Seata 中有三大模块，分别是 TM、RM 和 TC。 其中 TM 和 RM 是作为 Seata 的客户端与业务系统集成在一起，TC 作为 Seata 的服务端独立部署。

在 Seata 中，分布式事务的执行流程：

TM 开启分布式事务（TM 向 TC 注册全局事务记录）；
按业务场景，编排数据库、服务等事务内资源（RM 向 TC 汇报资源准备状态 ）；
TM 结束分布式事务，事务一阶段结束（TM 通知 TC 提交/回滚分布式事务）；
TC 汇总事务信息，决定分布式事务是提交还]]></description><category></category></item></channel></rss>