<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[我爱吃果冻的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ji8281957024</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ji8281957024]]></copyright><item><title><![CDATA[spark的shuffle的write原理逻辑]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/120297778</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/120297778</guid><author>ji8281957024</author><pubDate>Tue, 14 Sep 2021 22:11:26 +0800</pubDate><description><![CDATA[1. shuffle 逻辑流程 





2. shuffleDependency是什么 





shuffleDependency是两个Stage中的连接属性。 

shuffleDependency即是上游Stage的一个参数。有是下游Stage的一个属性。 

3. shuffleDependency的Handler最优选择。 





shuffleDependency在注册shuffleManager的时候会调用registerShuffle。 

registerShuffle会选择..]]></description><category></category></item><item><title><![CDATA[redis理论]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691635</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691635</guid><author>ji8281957024</author><pubDate>Thu, 15 Apr 2021 13:22:41 +0800</pubDate><description><![CDATA[1.redis 的应用场景
会话缓存
消息队列(排行榜，计数)
发布订阅，消息通知
商品列表，评论列表

redis数据类型
String(字符串)，hash(哈希)，list(列表)，set(集合)，zset(有序集合)

redis的持久化方式
1. RDB(快照):每隔一段时间对数据进行快照存储。(会丢失最后一次的快照)
2. AOF:持久化的每次记录对服务器写的操作。当服务器重启的时候会执行这些命令来恢复数据。
    redis还会的文件进行后台重写。以至于AOF文件不会太大。(数据相对完整)
3]]></description><category></category></item><item><title><![CDATA[深度redis]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691663</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691663</guid><author>ji8281957024</author><pubDate>Thu, 15 Apr 2021 13:22:24 +0800</pubDate><description><![CDATA[1.关系型数据库
建表：必须给出schema
类型：字节宽度
存：倾向于行级存储
2.数据库表很大，性能下降怎么办
如果表有索引：
增删改查变慢；
查询速度
1.1个或者少量的查询依然很快
2.并发大的时候会受到硬盘带宽影响速度
3.memcached和redis 的不同
相同：都是key---value的形式
不同：memcached没有类型的概念，redis有类型的区分

4.为什么 Redis 中要使用 I/O 多路复用这种技术
首先，Redis 是跑在单线程中的，所有的操作都是按照顺序线性执行的，但]]></description><category></category></item><item><title><![CDATA[spring Boot启动流程]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691720</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691720</guid><author>ji8281957024</author><pubDate>Thu, 15 Apr 2021 13:21:58 +0800</pubDate><description><![CDATA[springBoot的启动流程
1.执行注解
1.@SpringBootconfiguration
2.@componetScan
3.@EnableAutoConfigruation

2.执行静态方法SpringApplication.run会初始化springApplication对象，加载资源。比如：springContextInit和ApplicationListener
3.执行springApplication对象的run方法。
4.初始化Envionment，执行Listeners.envi]]></description><category></category></item><item><title><![CDATA[mysql调优]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691558</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691558</guid><author>ji8281957024</author><pubDate>Wed, 14 Apr 2021 10:12:36 +0800</pubDate><description><![CDATA[1. show profile (查看SQL语句的性能)
1. show profile 查询近期执行的sql 语句（会返回近期执行的sql列表）
2. show profile for query 2  (查看近期列表的第二条sql)

all：显示所有性能信息 show profile all for query n
block io：显示块io操作的次数 show  profile block io for query n
context switches：显示上下文切换次数，被动和主动 show p]]></description><category></category></item><item><title><![CDATA[慢查询]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691546</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691546</guid><author>ji8281957024</author><pubDate>Wed, 14 Apr 2021 10:12:06 +0800</pubDate><description><![CDATA[Mysql 慢查询
用法

show global status;
 
show status like 'Com_%'


// 根据执行的sql语句（次数）
Com_select:查询
Com_update:修改次数
Com_insert:插入次数
Com_delete:删除的次数
 
// 此处是影响的行数（比如查询一次显示20行，那么行数增加20行）
InnoDB_rows_read:执行select操作的次数 
InnoDB_rows_updated:执行update的次数
InnoDB_rows]]></description><category></category></item><item><title><![CDATA[mysql深度]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691535</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691535</guid><author>ji8281957024</author><pubDate>Wed, 14 Apr 2021 10:11:35 +0800</pubDate><description><![CDATA[Mysql高级
mysql 分层

连接层
服务层
引擎层
存储层

索引优化的优劣势
优势:

提高索引效率，降低IO成本
降低数据排序成本，降低CPU的消耗


劣势

索引也要占用空间
索引会降低更新表的速度

Mysql 慢查询
能干什么:

表的读取顺序

id相同，执行顺序由上而下
id不同，id的序号会递增，id的值越大越先被执行。
id相同不同，同时存在。


数据读取操作的操作类型

simple（简单查询）
primary(包含任何的子查询，的最外层叫做primary）
subquery]]></description><category></category></item><item><title><![CDATA[mysql面试问题]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691518</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691518</guid><author>ji8281957024</author><pubDate>Wed, 14 Apr 2021 10:11:04 +0800</pubDate><description><![CDATA[1. 数据库事务的四个特性及含义(ACID)
原子性，一致性，隔离性，持久性

1、原子性：事务被认为不可分的一个工作单元，要么全部正常执行，要么全部不执行。

2、一致性：事务操作对数据库总是从一种一致性的状态转换成另外一种一致性状态。

3、隔离性：一个事务的操作结果在内部一致，可见，而对除自己以外的事务是不可见的。

4、永久性：事务在未提交前数据一般情况下可以回滚恢复数据，一旦提交(commit)数据的改变则变成永久(当然用update肯定还能修改)。

ps:MYSAM 引擎的数据库不支持事务，所]]></description><category></category></item><item><title><![CDATA[Mybatis解析]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691501</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691501</guid><author>ji8281957024</author><pubDate>Wed, 14 Apr 2021 10:10:35 +0800</pubDate><description><![CDATA[Mybatis 解析
1.创建SqlSessionFactory

第一步:解析Configuration.xml，讲xml配置文件转化为流的形式,(或者其他形式，主要是满足SqlSessionFactoryBuilder().build())
第二步:SqlSessionFactoryBuilder().build()来创建SqlSessionFactory从而的到SqlSession(可以和数据库沟通，Mybatis最总要的部分)
SqlSession的创建过程:
SqlSessionFactoryBu]]></description><category></category></item><item><title><![CDATA[线程池]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691472</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691472</guid><author>ji8281957024</author><pubDate>Wed, 14 Apr 2021 10:09:31 +0800</pubDate><description><![CDATA[ThreadPoolExecutor定义了七大核心属性
corePoolSize(int)：核心线程数量。默认情况下，在创建了线程池后，线程池中的线程数为0，当有任务来之后，就会创建一个线程去执行任务，当线程池中的线程数目达到corePoolSize后，就会把到达的任务放到任务队列当中。线程池将长期保证这些线程处于存活状态，即使线程已经处于闲置状态。除非配置了allowCoreThreadTimeOut=true，核心线程数的线程也将不再保证长期存活于线程池内，在空闲时间超过keepAliveTime后被销]]></description><category></category></item><item><title><![CDATA[juc]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691439</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691439</guid><author>ji8281957024</author><pubDate>Wed, 14 Apr 2021 10:08:28 +0800</pubDate><description><![CDATA[JUC提供的一些实现：
Atomic : AtomicInteger&nbsp; 原子操作类
Locks : Lock, Condition, ReadWriteLock&nbsp; 可重入读写锁
Collections : Queue, ConcurrentMap 并发集合
Executer : Future, Callable, Executor 线程执行池，异步Future等
Tools : CountDownLatch, CyclicBarrier, Semaphore 减数器，等待器，信号量
我个]]></description><category></category></item><item><title><![CDATA[concurrentHashMap]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691418</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691418</guid><author>ji8281957024</author><pubDate>Wed, 14 Apr 2021 10:07:48 +0800</pubDate><description><![CDATA[concurrentmap
1.concurrentHashmap是设计非阻塞的，在更新的时候会锁住局部部分数据。但不会把整个表都锁住。同步读取操作完全是非阻塞的。在保证合理同步的前提下效率很高。坏处不能保证反应最近的更新。例如线程A调用putAll大量写入数据，期间线程B调用get,则只能get到目前为止顺利插入的数据。
2.JDK1.8版本来看ConcurrentHashMap的数据结构已经趋近于hashmap，相对而言concurrentHashmap只是增加了同步的操作来控制并发。
JDK1.7 使]]></description><category></category></item><item><title><![CDATA[CAS]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/115691401</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/115691401</guid><author>ji8281957024</author><pubDate>Wed, 14 Apr 2021 10:07:20 +0800</pubDate><description><![CDATA[cas
cas是检查并替换。
原理: 两个线程同时访问主内存，这时主内存的共享变量是3，线程1拿取到3，但是这时开始GC，线程1挂起。这时线程2到来，线程二也在主内存中拿去到3，并对主内存的3进行修改，变成4。线程1这时结束挂起。再来主内存替换时，发现原值已经被替换。那么他会从头再来一次，拿取到4，进行操作。直到他拿到的值，在替换的时候和主内存的值相同时，才进行替换。只就是CAS原理
保证原子性
1.cas保证原子性，但是不能解决ABA的问题
2.Synchorized保证原子性: java还提供了lock]]></description><category></category></item><item><title><![CDATA[redis深度理论]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/110954205</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/110954205</guid><author>ji8281957024</author><pubDate>Thu, 10 Dec 2020 15:29:26 +0800</pubDate><description><![CDATA[1.关系型数据库
建表：必须给出schema
类型：字节宽度
存：倾向于行级存储
2.数据库表很大，性能下降怎么办
如果表有索引：
增删改查变慢；
查询速度
1.1个或者少量的查询依然很快
2.并发大的时候会受到硬盘带宽影响速度
3.memcached和redis 的不同
相同：都是key---value的形式
不同：memcached没有类型的概念，redis有类型的区分

4.为什么 Redis 中要使用 I/O 多路复用这种技术
首先，Redis 是跑在单线程中的，所有的操作都是按照顺序线性执行的，但]]></description><category></category></item><item><title><![CDATA[redis 的简单理论]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/110954177</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/110954177</guid><author>ji8281957024</author><pubDate>Thu, 10 Dec 2020 15:28:42 +0800</pubDate><description><![CDATA[1.redis 的应用场景
会话缓存
消息队列(排行榜，计数)
发布订阅，消息通知
商品列表，评论列表

redis数据类型
String(字符串)，hash(哈希)，list(列表)，set(集合)，zset(有序集合)

redis的持久化方式
1. RDB(快照):每隔一段时间对数据进行快照存储。(会丢失最后一次的快照)
2. AOF:持久化的每次记录对服务器写的操作。当服务器重启的时候会执行这些命令来恢复数据。
    redis还会的文件进行后台重写。以至于AOF文件不会太大。(数据相对完整)
3]]></description><category></category></item><item><title><![CDATA[线上排查故障]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/106488156</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/106488156</guid><author>ji8281957024</author><pubDate>Tue, 02 Jun 2020 08:57:36 +0800</pubDate><description><![CDATA[CPU
一般来讲我们首先会排查 CPU 方面的问题。CPU 异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁 gc 以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的，可以使用 jstack 来分析对应的堆栈情况。
使用 jstack 分析 CPU 问题
我们先用 ps 命令找到对应进程的 pid(如果你有好几个目标进程，可以先用 top 看一下哪个占用比较高)。
接着用top -H -p pid来找到 CPU 使用率比较高的一些线程

然后将占用最高的 pid 转换为 16 ]]></description><category></category></item><item><title><![CDATA[Spring IOC源码流程图]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/105861020</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/105861020</guid><author>ji8281957024</author><pubDate>Thu, 30 Apr 2020 14:25:05 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[什么是Http协议]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/103556709</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/103556709</guid><author>ji8281957024</author><pubDate>Mon, 16 Dec 2019 09:21:16 +0800</pubDate><description><![CDATA[什么是Http协议

http协议是建立在客户端和服务器之间的一个协议。客户端和服务器端需要数据的传输。而传输的时候，需要按照我们制定规则或者协议去传输数据。
Http协议建立在TCP/ip的基础上的一个网络协议。
HTTP协议属于网络七层结构最上层（应用层）的协议
Http协议是一个无状态的协议（不会记录访问时的信息）
Http是一个客户端和服务器端请求和应答的一个标准（TCP）.客户端是终端用...]]></description><category></category></item><item><title><![CDATA[适配器、命令、外观模式]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/102213337</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/102213337</guid><author>ji8281957024</author><pubDate>Sun, 06 Oct 2019 10:11:59 +0800</pubDate><description><![CDATA[外观模式
外观模式其实大家都不陌生，平时在写代码的时候多多少少都用到过。所谓外观模式，就是将常用的复杂的操作（复杂的接口序列）简化包装，暴露出一个新的接口，是非常自然常用的思想，个人以为几乎都不用将它当成一种模式看待，近似一种本能的行为。程序猿最大的美德不就是懒惰么？
定义
提供了一个统一的接口，用来访问子系统中的一群接口序列，外观定义了一个高层接口，让子系统更容易使用。
实现
可以为原有类添加新...]]></description><category></category></item><item><title><![CDATA[关于零拷贝的一些理解]]></title><link>https://blog.youkuaiyun.com/ji8281957024/article/details/98754899</link><guid>https://blog.youkuaiyun.com/ji8281957024/article/details/98754899</guid><author>ji8281957024</author><pubDate>Wed, 07 Aug 2019 15:59:43 +0800</pubDate><description><![CDATA[关于零拷贝的一些理解
零拷贝
"零拷贝"中的"拷贝"是操作系统在I/O操作中,将数据从一个内存区域复制到另外一个内存区域. 而"零"并不是指0次复制, 更多的是指在用户态和内核态之前的复制是0次.
CPU COPY
通过计算机的组成原理我们知道, 内存的读写操作是需要CPU的协调数据总线,地址总线和控制总线来完成的
因此在"拷贝"发生的时候,往往需要CPU暂停现有的处理逻辑,来协助内存的读写.这种...]]></description><category></category></item></channel></rss>