<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[littlecolor]]></title><description><![CDATA[写给自己看]]></description><link>https://blog.youkuaiyun.com/wangyy130</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangyy130]]></copyright><item><title><![CDATA[Redis总结]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/135128109</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/135128109</guid><author>wangyy130</author><pubDate>Thu, 21 Dec 2023 12:49:32 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[Mysql总结]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/135094941</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/135094941</guid><author>wangyy130</author><pubDate>Tue, 19 Dec 2023 21:31:26 +0800</pubDate><description><![CDATA[还不太完整，后续会补充。]]></description><category></category></item><item><title><![CDATA[JAVA.JUC总结]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/135094781</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/135094781</guid><author>wangyy130</author><pubDate>Tue, 19 Dec 2023 21:24:21 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[2020这极为特殊的一年]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/112848212</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/112848212</guid><author>wangyy130</author><pubDate>Tue, 19 Jan 2021 17:56:01 +0800</pubDate><description><![CDATA[这是一篇流水账~~~
今年总在围绕一个词‘疫情’
疫情
2020刚开始就跟往常不太一样，因为武汉疫情风暴波及全国，2020春节，我们谁也没有出家门，宅在家里看电视，刷抖音，之前期盼的天天在家闲的没事的生活也经不起打磨，过不了几天大家就很闷，无聊，于是，2020的春节，大家开始在家学者各种烹饪技术，做凉皮，烤面包，学各种炒菜等等。
看看我们在疫情期间做的美味吧(哈哈)




是不是看着还不错，所以因为今年的疫情我涨了10斤肉肉哈哈哈哈。
今年的春节假期也格外长，因为疫情，国家统一推迟了假期到20月10号，公]]></description><category></category></item><item><title><![CDATA[【算法+数据结构】多种方法实现二叉树遍历]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/110925517</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/110925517</guid><author>wangyy130</author><pubDate>Fri, 11 Dec 2020 10:35:19 +0800</pubDate><description><![CDATA[二叉树遍历也是面试中经常碰到的题目，这篇文章主要总结一下有关二叉树遍历的相关问题。
二叉树结构
 public static class Node{
 		//左子节点
        public Node left;
        //右子节点
        public Node right;
        public int value;

        public Node(int v){
            value = v;
        }
    }

二叉树的遍历

]]></description><category></category></item><item><title><![CDATA[【算法+数据结构】矩阵相乘]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/110194796</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/110194796</guid><author>wangyy130</author><pubDate>Thu, 26 Nov 2020 16:43:56 +0800</pubDate><description><![CDATA[矩阵相乘特别容易搞晕。其实理解了矩阵相乘的来源也就没有那么难理解了。不过在此之前，要记住一个，矩阵相乘只有在第一个矩阵的列和第二个矩阵的行数相等时才有效哦。
对于普通的二元一次方程
2x + 4y = 10;
x  + 3y  = 7;
我们用矩阵可以表示为:

这个属于第一个矩阵是多行，第二个矩阵为单列的情况。

当第一个矩阵为多行，第二个矩阵为多列时例如：
2x + 4y = 10;
x + 3y  = 7;
2k + 4m = 10;
k + 3m = 7;
这样的表达式表示成矩阵如下：

那么根据上]]></description><category></category></item><item><title><![CDATA[【JVM】对象的创建过程和对象的内存布局和对象的分配过程]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/109390226</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/109390226</guid><author>wangyy130</author><pubDate>Mon, 02 Nov 2020 10:48:21 +0800</pubDate><description><![CDATA[说起对象的创建过程，就必须要先从类的初始化开始，只有先将类加载进内存进行初始化后，才能创建对象。
类的初始化过程：
1、加载 Loading
将类.class文件加载进内存（存放于内存中的class静态常量池中）

2、连接 Linking
a、验证
	验证.class文件的格式
b、准备
	给类的**静态变量**赋默认值
c、解析
	将符号引用转换为直接引用

3、初始化
先执行静态代码块，再给静态的成员变量赋真实的值


...]]></description><category></category></item><item><title><![CDATA[【操作系统】进程的状态转换及其调度策略]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/109165695</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/109165695</guid><author>wangyy130</author><pubDate>Tue, 20 Oct 2020 15:09:46 +0800</pubDate><description><![CDATA[进程和线程的基本概念
进程：进程是一个程序运行起来的状态，是资源分配和管理的基本单位
线程：线程是进程中不同的执行路径，是执行调度的基本单位
区别：
不同的进程会拥有自己独立的内存空间，而线程共享进程的内存空间，没有自己独立的内存空间。
在linux操作系统中，一个进程只包含一个线程。内核通过一个唯一的进程标识值或PID来标识每个进程。
进程的状态切换


...]]></description><category></category></item><item><title><![CDATA[【JVM】JAVA的运行时数据区]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/108992392</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/108992392</guid><author>wangyy130</author><pubDate>Mon, 12 Oct 2020 15:00:27 +0800</pubDate><description><![CDATA[JVM ： JAVA VIRTUAL MACHINE ,是一种虚构出来的机器。是虚拟的CPU，其中的很多组建都是模拟了CPU的功能。
运行时数据区及其主要功能

分布介绍一下不同区域的主要功能。


PC： Program Counter 程序计数器。存放指令的位置。在虚拟机运行中，CPU会从PC中获取将要执行的指令的地址，去该地址执行该指令，完成后，PC会继续下移到下一个指令的位置。


JVM Stack：线程栈，栈中存放栈帧，每个线程拥有自己的私有的线程栈空间，线程栈由栈帧构成，每个方法会形成一个栈帧]]></description><category></category></item><item><title><![CDATA[【并发编程】AQS源码分析(四)通过ReentrantReadWriteLock来查看读写锁的源码实现]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/108054129</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/108054129</guid><author>wangyy130</author><pubDate>Thu, 10 Sep 2020 15:39:32 +0800</pubDate><description><![CDATA[前几篇文章分别介绍了AQS的基本的加锁解锁流程，Condition，CountDownLatch共享锁等。这篇文章继续介绍关于ReentrantReadWriteLock相关的原理。

]]></description><category></category></item><item><title><![CDATA[【并发编程】AQS源码分析(三) 通过CountDownLatch查看共享锁实现]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/107952027</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/107952027</guid><author>wangyy130</author><pubDate>Thu, 13 Aug 2020 17:03:33 +0800</pubDate><description><![CDATA[之前说的ReentrantLock都是从独占锁的角度去探究Lock的具体实现，所以这篇专门来研究一下共享锁与独占锁的区别。
要想了解CountDownLatch的具体使用和多线程之间通信的事例，可以先阅读:
【多线程】四种种方案实现多线程之间相互协作的通信
如果没有AQS基本原理基础可以先看
【并发编程】AQS源码分析(一) 从ReentrantLock来看AQS的基本数据结构和主要执行流程
【并发编程】AQS源码分析(二)通过生产者和消费者模式理解ReentrantLock的Condition
之后再看这]]></description><category></category></item><item><title><![CDATA[【并发编程】AQS源码分析(二)通过生产者和消费者模式理解ReentrantLock的Condition]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/107906070</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/107906070</guid><author>wangyy130</author><pubDate>Tue, 11 Aug 2020 14:59:15 +0800</pubDate><description><![CDATA[生产者和消费者模式是并发编程中最常见的需要加锁的场景，既可以通过synchronized + 对象本身的监视器方法wait()、notify()、notifyAll()来实现等待/通知的机制，也可以通过ReentrantLock实现，而ReentrantLock方式可以结合Condition来实现等待/通知的机制。
建议：看这篇之前一定要先读懂第一篇，这样理解会容易的多
【并发编程】AQS源码分析(一) 从ReentrantLock来看AQS的基本数据结构和主要执行流程
下面生产者+消费者代码(Reentr]]></description><category></category></item><item><title><![CDATA[【并发编程】AQS源码分析(一) 从ReentrantLock来看AQS的基本数据结构和主要执行流程]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/107839310</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/107839310</guid><author>wangyy130</author><pubDate>Fri, 07 Aug 2020 16:24:28 +0800</pubDate><description><![CDATA[在并发编程中AQS属于必知必会的内容了。AQS全称 AbstractQueuedSynchronizer抽象队列同步器。"抽象"就可以看出他是一个抽象类，我们在用时需要对他进行重写来自定义我们自己的同步器。
基本原理
既然是同步器，AQS就是在模拟加锁的过程，主要通过CAS原子的去更新变量的状态来达到加锁的效果。当CAS更新失败时，则会构造一个新的节点加入到一个双向链表中（queue）我们称这个双向链表为阻塞队列，节点加入到阻塞队列的对尾，当符合一定的条件后，再去更新变量的状态去获取锁的过程。
AQS数据结]]></description><category></category></item><item><title><![CDATA[【多线程高并发】线程池初始化过程、线程池中的阻塞队列]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/107768899</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/107768899</guid><author>wangyy130</author><pubDate>Tue, 04 Aug 2020 15:35:49 +0800</pubDate><description><![CDATA[多线程高并发一定少不了线程池技术。
作用


提升性能
 线程的创建和销毁都会消耗一定的性能，通过线程池可以减少线程
 的创建和销毁带来的性能消耗。



便于管理
 方便对线程进行统一的维护管理，比如定时开启，周期执行，并发数控制等



参数及含义


corePoolSize
 核心线程数，队列没满时，线程最大的并发数



maximumPoolSize
 线程池最大线程数，队列满时，线程最大并发数



keepAliveTime
 空闲线程的最大存活时间，系统默认只回收非核心线程，核心线程可以通]]></description><category></category></item><item><title><![CDATA[【工具】charles代理抓包配置]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/107554938</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/107554938</guid><author>wangyy130</author><pubDate>Fri, 24 Jul 2020 10:52:48 +0800</pubDate><description><![CDATA[像这种工具的使用，通常是固定的配置步骤，但是长时间不用吧，再回来使用的时候总是忘记他的配置步骤，还得再重新琢磨，于是，这次我决定把chales的配置步骤记录下来，方便下次查看。
【手机系统】
IOS 用的苹果13的系统
配置步骤
1、先安装好chales工具
2、安装电脑端证书

2、配置手机端代理
Help —&gt; SSL Proxying ----&gt;  install chales Root Certificate on Mobile Device Or Remote Browser

点击上]]></description><category></category></item><item><title><![CDATA[【算法+数据结构】位运算常识]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/107364986</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/107364986</guid><author>wangyy130</author><pubDate>Wed, 15 Jul 2020 19:19:42 +0800</pubDate><description><![CDATA[程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。了解位运算，不仅可以在一些情况下让程序运行效率更高，而且位运算也是学习算法必备的知识之一。
位运算都是基于二进制数进行的。
逻辑与 &amp;
两个位置都为1才为1，否则为0.
比如 12的二进制位为 ：1100,
14 的二进制位为 :  1110，
那么与运算的结果为 ： 1100.
这里不太好记忆，容易与其他位运算混淆，可以想象成java中的逻辑与运算
1为true，0为false，只有都为true才]]></description><category></category></item><item><title><![CDATA[【高并发】JAVA集合之队列----- (一)概览]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/107023350</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/107023350</guid><author>wangyy130</author><pubDate>Tue, 30 Jun 2020 16:58:04 +0800</pubDate><description><![CDATA[说起JAVA中的阻塞队列，就不得不提到JAVA中的集合，队列Queue继承了Collection的所有的方法,也是一种集合的表现形式。

]]></description><category></category></item><item><title><![CDATA[【多线程高并发】volatile关键字作用和实现原理]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/106557244</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/106557244</guid><author>wangyy130</author><pubDate>Tue, 23 Jun 2020 11:02:58 +0800</pubDate><description><![CDATA[在java中多线程为了实现共享变量能够被准备的更新除了可以使用加排他锁的方式，还有一种更加简单的方式就是对共享变量进行volatile声明。
关键字作用

保持内存可见性
防止指令重排序

JMM模型
内存可见性
指令重排序
volatile实现原理

...]]></description><category></category></item><item><title><![CDATA[【多线程高并发】synchronized锁升级过程及其实现原理]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/106495180</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/106495180</guid><author>wangyy130</author><pubDate>Wed, 03 Jun 2020 15:42:53 +0800</pubDate><description><![CDATA[问：为什么会有锁升级的过程呢？
答：在java6以前synchronized锁实现都是重量级锁的形式，效率低下，为了提升效率进行了优化，所以出现了锁升级的过程。
问：我们通常说synchronized锁是重量级锁，那么为什么叫他重量级锁？
答：因为synchronized执行效率太低。在java1.6以前每次调用synchronized加锁时都需要进行系统调用，系统调用会涉及到用户态和内核态的切换，系统调用会经过0x80中断，经过内核调用后再返回用户态。此过程比较复杂时间比较长所以通常叫synchroniz]]></description><category></category></item><item><title><![CDATA[【mysql】B+树结构在各个索引类型中的表现形式]]></title><link>https://blog.youkuaiyun.com/wangyy130/article/details/106075103</link><guid>https://blog.youkuaiyun.com/wangyy130/article/details/106075103</guid><author>wangyy130</author><pubDate>Wed, 13 May 2020 15:01:47 +0800</pubDate><description><![CDATA[B+树索引是目前关系型数据库系统中查找最为常用和最为有效的索引。
B+树索引并不能找到一个给定键的具体行，B+树索引能找到的只是被查找数据行所在的页，然后数据库通过把页读入到内存，再在内存中进行查找，最后得到要查找的数据。
B+树
由二叉树演变而来是B树的变种。
在B+树中，所有记录节点都是按键值的大小顺序存放在同一层的叶子节点上，由各叶子节点指针进行连接。

不同索引中的B+树结构
聚集索引
如上图所示的B+树结构，在mysql数据库中，对于聚集索引的B+树结构，在Index page中存放的就是表中的主]]></description><category></category></item></channel></rss>