<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[【Dyson】的博客]]></title><description><![CDATA[神码都是浮云]]></description><link>https://blog.youkuaiyun.com/ds19980228</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ds19980228]]></copyright><item><title><![CDATA[2020-01-03]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/103816255</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/103816255</guid><author>ds19980228</author><pubDate>Fri, 03 Jan 2020 10:34:26 +0800</pubDate><description><![CDATA[注册、登陆

当进入一个网站时首先进行注册，注册时会提示输入手机号，利用阿里大鱼接口发送一条短信验证码到当前号码并将短信验证码保存到redis；注册时会提示输入邮箱账号，当点击注册时会给当前邮箱发送一条激活码给用户激活
注册成功后会跳转到登陆页面并同时会把验证码保存到session，当用户输入验证码时会与session中的做比较，如果相匹配则验证成功，如果session中没有则验证码失效，如果不...]]></description><category></category></item><item><title><![CDATA[Java虚拟机 -- 垃圾收集器]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/98059638</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/98059638</guid><author>ds19980228</author><pubDate>Thu, 01 Aug 2019 15:55:40 +0800</pubDate><description><![CDATA[介绍垃圾收集器之前先要了解三个知识点：

Stop-the-World

	JVM由于要执行GC而停止应用程序的执行
		任何一种GC算法中都会发生
		多数GC优化通过减少Stop-the-world发生的时间来提高程序性能
	
	Safepoint（安全点）：程序执行时并非在所有的地方都能停顿下来开始GC，只有在到达安全点时才可以停止GC。
	分析过程中对象引用关系不会发生变化的点
		产生...]]></description><category></category></item><item><title><![CDATA[Java虚拟机 -- 垃圾回收模块]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/98026659</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/98026659</guid><author>ds19980228</author><pubDate>Thu, 01 Aug 2019 11:21:27 +0800</pubDate><description><![CDATA[垃圾回收机制


当对象被判为垃圾的标准，即没有被其他对象引用时，才会被收回。


判断对象为垃圾的方法

引用计数法：

通过判断对象的引用数量来决定对象是否可以被回收
	每个对象实例都有一个引用计数器，被引用时+1，完成引用时-1
	任何引用计数为0的对象都有可以被当做垃圾进行回收

优点：执行效率高，程序执行所受的影响比较小

缺点：如果存在循环引用就会导致出现内存泄漏，就比如：父对象对子对...]]></description><category></category></item><item><title><![CDATA[Java虚拟机 -- JVM内存区域模块]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/97940385</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/97940385</guid><author>ds19980228</author><pubDate>Wed, 31 Jul 2019 20:00:24 +0800</pubDate><description><![CDATA[JVM内存模型 -- JDK8


线程私有

程序计数器

	当前线程所执行的字节码行号指示器
		通过改变计数器的值来选取下一条需要执行的字节码指示器（比如：循环，跳转，异常处理都需要依赖该计数器来完成）
		和线程是一对一的关系即“线程私有”
		不会发生内存泄露问题，程序计数器是逻辑计数器而非物理计数器
	
	虚拟机栈
	生命周期与线程相同
		每个方法在执行时都会创建一个栈帧，用于存...]]></description><category></category></item><item><title><![CDATA[Java虚拟机 -- 类加载模块]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/97908502</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/97908502</guid><author>ds19980228</author><pubDate>Wed, 31 Jul 2019 14:01:49 +0800</pubDate><description><![CDATA[Java平台无关性是如何实现的？

一次加载，到处执行，其实并不是Java语言实现了跨平台的特性，而是在任何的平台上都有JVM虚拟机，Java通过javac在编译时将.java文件生成字节码并存入到.class文件中，有了class文件才有了跨平台的基础，这样JVM才能解析，将字节码生成特定平台上的机器码
	Java源码首先被编译成字节码，再有不同平台的JVM进行解析，Java语言在不同的平台上运...]]></description><category></category></item><item><title><![CDATA[MySQL数据库 -- 索引模块]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/97896250</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/97896250</guid><author>ds19980228</author><pubDate>Wed, 31 Jul 2019 11:08:32 +0800</pubDate><description><![CDATA[首先介绍两种存储的数据结构：

B树

定义：（让每个索引块尽可能多的存储信息，然后查询过程中尽可能少的IO次数）

根节点至少包括两个孩子
	树中每个节点最多含有m个孩子（M&gt;=2）
	除根节点和叶子节点外，其他每个节点至少有ceil（m/2）个孩子（取上限）
	所有叶子节点都位于同一层




B+树

B+树和B树类似，但多了几条规则 ：

非叶子结点的子树指针个数与关键字（节...]]></description><category></category></item><item><title><![CDATA[谈谈Synchronized底层及其优化]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/89166022</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/89166022</guid><author>ds19980228</author><pubDate>Wed, 10 Apr 2019 00:03:42 +0800</pubDate><description><![CDATA[Synchronized的引出

同步问题的引出：由于多个线程对共享资源的操作而导致的同步问题

Synchronized是JDK1.0提供的一种同步手段，来处理同步问题
Synchronized保证了可见性与原子性


可见性：确保在锁被释放之前，对共享变量所做的修改，对于随后获得该锁的另一个线程可见（即获得锁就同时获得了最新共享变量的值）

原子性：保证在临界区中，只有一个线程去操控修改共享变...]]></description><category></category></item><item><title><![CDATA[Java线程生命周期详解]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/89098138</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/89098138</guid><author>ds19980228</author><pubDate>Mon, 08 Apr 2019 17:32:03 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[Java中的信号量（Semaphore）]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/89094882</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/89094882</guid><author>ds19980228</author><pubDate>Mon, 08 Apr 2019 17:27:19 +0800</pubDate><description><![CDATA[初识Semaphore

“信号量”，也可以称其为“信号灯”，它的存在就如同生活中的红绿灯一般，用来控制车辆的通行。在程序员眼中，线程就好比行驶的车辆，程序员就可以通过信号量去指定线程是否可以执行，并且可以指定访问临界区的线程数量；
信号量模型

信号量的模型很简单，有：一个计数器，一个等待队列，三个方法（init，down，up）。在该模型中，计数器与等待队列对外是透明的，只能去通过三个方法区访...]]></description><category></category></item><item><title><![CDATA[数据库基本语法使用]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/86527085</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/86527085</guid><author>ds19980228</author><pubDate>Thu, 17 Jan 2019 16:38:35 +0800</pubDate><description><![CDATA[SELECT语句

SELECT 列名 FROM 表明;   单行检索，多行检索
SELECT DATABASE();     显示当前使用数据库
检索不同的行：SELECT DISTINCT 列名 FROM 表明；    只返回不同的值
限制结果：SELECT 列名 FROM 表明 LIMIT 限制的行数；

指定开始行数和行数：`SELECT 列名 FROM 表明 LIMIT 5,5；

LI...]]></description><category></category></item><item><title><![CDATA[数据库基础笔记]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/85248923</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/85248923</guid><author>ds19980228</author><pubDate>Tue, 25 Dec 2018 15:38:38 +0800</pubDate><description><![CDATA[数据库基础

关于数据库

为了解决数据存储的安全性，方便数据的管理和查询，可以存储海量数据，从而设计出数据库。
数据库的引出就是为了更方便的对数据进行管理，它能更有效的管理数据
数据库存储的介质

磁盘
内存



主流数据库

SQL Sever：微软产品，.Net程序员的最爱，适合中大型项目
Oracle：甲骨文产品，安全性好，适合大型项目，复杂的业务逻辑
MySQL：并发性好，但不适合做复...]]></description><category></category></item><item><title><![CDATA[可中断获取锁与超时等待获取锁源码分析]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/84662015</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/84662015</guid><author>ds19980228</author><pubDate>Fri, 30 Nov 2018 17:11:01 +0800</pubDate><description><![CDATA[
可中断式获取锁


可响应中断式锁可调用方法lock.lockInterruptibly()；该方法的底层会调用AQS的acqireInterruptibly方法；

acquireInterruptibly()方法：
public final void acquireInterruptibly(int arg)
        throws InterruptedException {
   ...]]></description><category></category></item><item><title><![CDATA[深入理解AbstractQueuedSynchronizer（AQS）]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/84556519</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/84556519</guid><author>ds19980228</author><pubDate>Mon, 26 Nov 2018 21:21:01 +0800</pubDate><description><![CDATA[                                             AQS详解

在同步组件中，AQS是最核心部分，同步组件的实现依赖AQS提供的模板方法来实现同

步组件语义。

AQS实现了对同步状态的管理，以及对阻塞线程进行排队、等待通知等等底层实现。

AQS核心组成:同步队列、独占锁的获取与释放、共享锁的获取与释放、可中断锁、超时锁。

这一系列功能的实现依赖于AQ...]]></description><category></category></item><item><title><![CDATA[LeetCode --  3. 无重复字符的最长子串   java]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/84393932</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/84393932</guid><author>ds19980228</author><pubDate>Fri, 23 Nov 2018 15:36:41 +0800</pubDate><description><![CDATA[题目描述：



解题思路：可以String类的方法，用两层循环，第一层循环是不断从前往后走，用  i  遍历字符串，第二层循环则从第一层循环开始往后查找最长无重复子串。在第二层循环中，每次按照索引  j  将字符串拆分成子串，然后再从  i  开始查找该子串的位置，如果该位置就是索引  j  当前的位置，则继续往下寻找， 否则跳出循环，更新 max 


class Solution {
   ...]]></description><category></category></item><item><title><![CDATA[生产-消费者模型]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/84288804</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/84288804</guid><author>ds19980228</author><pubDate>Tue, 20 Nov 2018 12:33:59 +0800</pubDate><description><![CDATA[介绍生产消费者模型中所要用到的几个方法：

wait() 方法

public final void wait（）throws InterruptedException；

当调用wait（）方法后，线程会立刻停止，并将该线程从锁对象的同步队列提取到等待队列（WAIT）中，直到下次被notify（）方法唤醒，或者被中断为止。
	wait（）方法只能在同步代码块或同步方法中使用，必须为synchro...]]></description><category></category></item><item><title><![CDATA[每日一题--LeetCode 234（回文链表）java]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/84191952</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/84191952</guid><author>ds19980228</author><pubDate>Sat, 17 Nov 2018 19:54:41 +0800</pubDate><description><![CDATA[题目描述：

请判断一个链表是否为回文链表。

示例 1:


输入: 1-&amp;gt;2
输出: false

示例 2:


输入: 1-&amp;gt;2-&amp;gt;2-&amp;gt;1
输出: true


进阶：
你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题？

解题思路一：先使用快慢指针将链表划分，然后将划分出来的后半段链表逆置，这里使用额外的空间创建新的链表，再将两个链表从尾到头进行比...]]></description><category></category></item><item><title><![CDATA[java中的CAS操作以及锁机制详解]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/84189273</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/84189273</guid><author>ds19980228</author><pubDate>Sat, 17 Nov 2018 17:00:06 +0800</pubDate><description><![CDATA[关于CAS操作

CAS：Compare And Swap   --  乐观锁策略

CAS（无锁操作）：使用CAS叫做比较交换来判断是否出现冲突，出现冲突就重试当前操作直到不冲突为止。

悲观锁（JDK1.6之前的内建锁）：假设每一次执行同步代码块均会产生冲突，所以当线程获取锁成功，会阻塞其他尝试获取该锁的线程。

乐观锁（Lock机制）：假设所有线程访问共享资源时不会出现冲突，既然不会出现冲突...]]></description><category></category></item><item><title><![CDATA[每日一题--LeetCode 25 （k个一组翻转链表）java]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/84138335</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/84138335</guid><author>ds19980228</author><pubDate>Fri, 16 Nov 2018 14:21:26 +0800</pubDate><description><![CDATA[题目描述：

给出一个链表，每 k 个节点一组进行翻转，并返回翻转后的链表。

k 是一个正整数，它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍，那么将最后剩余节点保持原有顺序。

示例 :

给定这个链表：1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;5

当 k = 2 时，应当返回: 2-&amp;gt;1-&amp;gt;4-&amp;gt;3-&amp;gt;5

当 k = 3 时，应当返回: 3-&amp;g...]]></description><category></category></item><item><title><![CDATA[思维导图 --- 继承，封装，多态]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/84104682</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/84104682</guid><author>ds19980228</author><pubDate>Thu, 15 Nov 2018 15:12:28 +0800</pubDate><description><![CDATA[思维导图 — 继承，封装，多态

传送门: 继承、封装、多态.


]]></description><category></category></item><item><title><![CDATA[java学习笔记（十二）-- 线程同步与死锁]]></title><link>https://blog.youkuaiyun.com/ds19980228/article/details/84100084</link><guid>https://blog.youkuaiyun.com/ds19980228/article/details/84100084</guid><author>ds19980228</author><pubDate>Thu, 15 Nov 2018 10:53:06 +0800</pubDate><description><![CDATA[一 线程的同步   ***************

同步问题：每一个线程对象轮番抢占共享资源带来的问题

首先看一段代码：


class MyThread implements Runnable{
    private int ticket=10;
    @Override
    public void run() {
        while (this.ticket&amp;gt;0){
...]]></description><category></category></item></channel></rss>