<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Programmer Jett]]></title><description><![CDATA[曾梦想仗剑走天涯，后来 bug 太多没去]]></description><link>https://blog.youkuaiyun.com/qq_45833729</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_45833729]]></copyright><item><title><![CDATA[web 相关概念]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/103515178</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/103515178</guid><author>qq_45833729</author><pubDate>Thu, 12 Dec 2019 19:46:06 +0800</pubDate><description><![CDATA[web 相关概念
文章目录web 相关概念软件架构资源定位服务器资源服务器软件web 容器MVC 设计模式
软件架构

B/S 结构

Browser/Server 结构
用户通过浏览器访问服务器获取资源
web 编程，是一种网站编程


C/S 结构

Client/Server 结构
用户使用特定的客服端访问服务器获取资源
多为 socket 编程，是一种网络编程



资源定位


网络通信...]]></description><category></category></item><item><title><![CDATA[类与对象]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/103430036</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/103430036</guid><author>qq_45833729</author><pubDate>Fri, 06 Dec 2019 21:37:37 +0800</pubDate><description><![CDATA[类与对象
文章目录类与对象数据类型基本数据类型引用数据类型枚举类型修饰符访问控制其他修饰符方法构造方法类方法对象方法变量类变量对象变量局部变量内部类非静态内部类静态内部类匿名内部类本地类
数据类型

变量就是申请内存来存储值。也就是说，当创建变量的时候，需要在内存中申请空间
内存管理系统根据变量的类型为变量分配存储空间，分配的空间只能用来储存该类型数据

基本数据类型

java 中有 8 种基本...]]></description><category></category></item><item><title><![CDATA[跳表]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/103178604</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/103178604</guid><author>qq_45833729</author><pubDate>Thu, 21 Nov 2019 10:58:42 +0800</pubDate><description><![CDATA[跳表
文章目录跳表跳表概念跳表结构跳表性能跳表的高度查找时间复杂度插入时间复杂度删除时间复杂度内存消耗索引动态更新
跳表概念


二分查找法依赖于数组的随机访问特性，只能用数组实现
跳表是基于链表实现类似于二分查找的算法


查找、插入、删除各方面性能都不错的动态数据结构，甚至可以替代红黑树


Redis 中的有序集合（Sorted Set）就是用跳表来实现的


跳表结构

对于一个有序的单链...]]></description><category></category></item><item><title><![CDATA[二叉树]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/103119622</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/103119622</guid><author>qq_45833729</author><pubDate>Mon, 18 Nov 2019 11:25:06 +0800</pubDate><description><![CDATA[树
文章目录树树基本概念链表、树和图二叉树数学性质满二叉树完全二叉树平衡二叉树二叉树操作创建二叉树遍历二叉树打印二叉树统计结点数目输出叶子结点统计叶子结点数目输出高度二叉搜索树红黑树
树
基本概念

结点： 包含一个数据元素及若干指向子树的分支
结点的度：含有孩子结点的个数
结点的层次：由根结点开始，根结点层次为 0
树的深度：由根结点开始，根结点深度为 0
树的高度：由叶子结点向根结点，取最大值...]]></description><category></category></item><item><title><![CDATA[字符串：3 无重复字符的最长子串]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/103104113</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/103104113</guid><author>qq_45833729</author><pubDate>Sat, 16 Nov 2019 22:48:14 +0800</pubDate><description><![CDATA[字符串：3无重复字符的最长子串
文章目录字符串：3无重复字符的最长子串滑动窗口穷举所有组合

给定一个字符串，请你找出其中不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc"，所以其长度为 3。

示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b"，所以其长度为 1。

示例...]]></description><category></category></item><item><title><![CDATA[数组：1 两数之和、15 三数之和、18 四数之和]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/103097435</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/103097435</guid><author>qq_45833729</author><pubDate>Sat, 16 Nov 2019 12:51:16 +0800</pubDate><description><![CDATA[数组：1两数之和、15三数之和、18四数之和
文章目录数组：1两数之和、15三数之和、18四数之和两数之和三数之和四数之和
两数之和

给定一个整数数组 nums 和一个目标值 target，请你在该数组中找出和为目标值的那 两个 整数，并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是，你不能重复利用这个数组中同样的元素
示例:
给定 nums = [2, 7, 11, 15], ...]]></description><category></category></item><item><title><![CDATA[jvm 垃圾回收]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102982035</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102982035</guid><author>qq_45833729</author><pubDate>Sat, 09 Nov 2019 00:17:34 +0800</pubDate><description><![CDATA[jvm垃圾回收
文章目录jvm垃圾回收引用类型垃圾辨别方法垃圾收集算法分代回收算法堆的分代分代收集回收过程gc类型垃圾收集器收集器分类常见收集器CMS 收集器
引用类型


强引用：发生 gc 的时候不会被回收


软引用：有用但不是必须的对象，在发生内存溢出之前会被回收


弱引用：有用但不是必须的对象，在下一次 GC 时会被回收


虚引用（幽灵引用/幻影引用）：无法通过虚引用获得对象
用 P...]]></description><category></category></item><item><title><![CDATA[jvm 内存结构]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102981654</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102981654</guid><author>qq_45833729</author><pubDate>Fri, 08 Nov 2019 23:20:08 +0800</pubDate><description><![CDATA[jvm内存结构
文章目录jvm内存结构运行时数据区虚拟机栈本地方法栈堆区方法区程序计数器执行引擎本地库接口类加载器系统
jvm类加载器系统运行时数据区本地库接口执行引擎虚拟机栈本地方法栈堆区方法区程序计数器
运行时数据区

从整个计算机内存中开辟一块内存存储 jvm 运行时需要用到的对象，变量等

虚拟机栈

线程私有
服务于方法
用于存储局部变量表、操作数栈、动态链接、方法出口等信息

本地方法...]]></description><category></category></item><item><title><![CDATA[并发与多线程]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102965128</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102965128</guid><author>qq_45833729</author><pubDate>Thu, 07 Nov 2019 23:40:34 +0800</pubDate><description><![CDATA[并发与多线程
文章目录并发与多线程基本概念并发与并行进程与线程线程创建线程ThreadRunnable匿名类Callable线程方法线程状态线程同步阻塞同步synchronizedReentrantLock非阻塞同步actomic 类无同步方案可重入代码线程本地存储死锁死锁条件Java死锁示例线程通信线程池线程安全类
基本概念
并发与并行

并发：指两个或多个事件在同一时间间隔内发生 。当有多个线...]]></description><category></category></item><item><title><![CDATA[集合与容器类]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102924549</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102924549</guid><author>qq_45833729</author><pubDate>Tue, 05 Nov 2019 21:07:46 +0800</pubDate><description><![CDATA[集合与容器类
文章目录集合与容器类体系接口CollectionMapListSet实现类List派生类Map派生类Set派生类传统类算法Collections迭代器比较器ArraysHashCode
体系
​	早在 Java 2 中之前，Java 就提供了特设类。比如：Dictionary, Vector, Stack 和 Properties 这些类用来存储和操作对象组。虽然这些类都非常有用，但...]]></description><category></category></item><item><title><![CDATA[java 内存模型]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102922630</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102922630</guid><author>qq_45833729</author><pubDate>Tue, 05 Nov 2019 19:27:46 +0800</pubDate><description><![CDATA[java内存模型
文章目录java内存模型计算机内存模型并发编程特性Java Memory ModelJMM的实现原子性可见性有序性
计算机内存模型


当程序在运行过程中，会将运算需要的数据从主存复制一份到 CPU 的高速缓存当中，那么 CPU 进行计算时就可以直接从它的高速缓存读取数据和向其中写入数据，当运算结束之后，再将高速缓存中的数据刷新到主存当中


当 CPU 要读取一个数据时，首先从...]]></description><category></category></item><item><title><![CDATA[语言特性]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102900697</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102900697</guid><author>qq_45833729</author><pubDate>Mon, 04 Nov 2019 17:13:37 +0800</pubDate><description><![CDATA[认识java语言
文章目录认识java语言显著特点解释和编译jdk、jrejvm
显著特点

一次编译，到处运行，通过 java 虚拟机获取跨平台性
垃圾回收，通过垃圾收集器回收内存

解释和编译

一般情况下，java 源文件经过编译后，得到 .class 字节码文件，再被 jvm 解释器解释执行
JIT，just in time compile，即时编译器，将频繁执行的代码（热点代码）直接编译...]]></description><category></category></item><item><title><![CDATA[栈]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102893518</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102893518</guid><author>qq_45833729</author><pubDate>Mon, 04 Nov 2019 11:26:18 +0800</pubDate><description><![CDATA[栈
文章目录栈栈的理解栈的实现顺序栈链式栈栈的应用函数调用栈表达式求值括号匹配
栈的理解

一种操作受限的线性表结构，只允许在一端插入删除数据
数组和链表可以在功能上代替栈，但是数组和链表过于灵活，暴露了太多操作接口，使用时比较不可控
当一个数据集合只涉及在一端插入删除数据，且满足先进后出特性，应该首选栈这种数据结构
入栈出栈的时间复杂度、空间复杂度都为 O(1)


空间复杂度是指除了原本的数据...]]></description><category></category></item><item><title><![CDATA[链表]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102893408</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102893408</guid><author>qq_45833729</author><pubDate>Mon, 04 Nov 2019 11:21:38 +0800</pubDate><description><![CDATA[链表
文章目录链表数组与链表单链表结构插入删除随机访问双向链表、循环链表链表实现 LRU 缓存如何手写链表
数组与链表

同为线性表存储结构
数组在一段连续的空间上，链表将分散的内存块连接起来使用

单链表

SinglyLinkedList

结构

结点：存储链表的每一个内存块
后继指针：每个结点除了存储数据外，还要记录下一个内存块的地址
头结点：第一个结点，记录基址
尾结点：最后一个结点，指...]]></description><category></category></item><item><title><![CDATA[数组]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102893392</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102893392</guid><author>qq_45833729</author><pubDate>Mon, 04 Nov 2019 11:20:56 +0800</pubDate><description><![CDATA[数组
文章目录数组随机访问低效的插入删除为何从 0 开始编号
随机访问

数组是一种线性表数据结构，用一组连续的内存空间，来存储同一类型的数据

线性表：数据排成线一样的结构，最多只有前和后两个方向
数据、栈、队列、链表都是线性表结构
堆、图、二叉树等数据之间不具有简单前后关系的结构，所以是非线性表结构


随机访问

在连续的地址空间存相同类型的数据。这两个限制使数组具有随机访问的特性，但是在插...]]></description><category></category></item><item><title><![CDATA[复杂度]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102893143</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102893143</guid><author>qq_45833729</author><pubDate>Mon, 04 Nov 2019 11:10:47 +0800</pubDate><description><![CDATA[复杂度
文章目录复杂度复杂度分析时间复杂度空间复杂度最好、最坏情况时间复杂度平均时间复杂度均摊时间复杂度
复杂度分析

数据结构和算法的目标：快、省，即执行效率和资源消耗。
“事后统计法”具有很大局限性，提前预估效率很重要。
复杂度分析是学习算法的精髓和分析算法的利器。

时间复杂度

假设每行代码执行时间意义，所有代码的执行时间 T(n) 和每行代码的执行次数 n 成正比。

T(n) = O ...]]></description><category></category></item><item><title><![CDATA[jvm 常量池]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102892929</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102892929</guid><author>qq_45833729</author><pubDate>Mon, 04 Nov 2019 11:02:14 +0800</pubDate><description><![CDATA[常量池
文章目录常量池方法区运行时常量池字符串常量池class 文件常量池
方法区

用于存储 jvm 加载的类的信息、常量、静态变量、编译后的代码
jdk7 及以往版本，方法区基于永久代实现，理论上是堆的一部分
jdk8 取消了永久代，在本地内存中划分区域-元空间，不属于 JVM 内存，方法区位于元空间中


jdk8

位于位于位于字符串常量池堆class文件常量池元空间运行时常量池

jdk...]]></description><category></category></item><item><title><![CDATA[值传递与对象拷贝]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102892426</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102892426</guid><author>qq_45833729</author><pubDate>Mon, 04 Nov 2019 10:40:21 +0800</pubDate><description><![CDATA[值传递与对象拷贝
文章目录值传递与对象拷贝值传递和引用传递两者区别java中的值传递对象拷贝含义5种方式
值传递和引用传递
调用一个有参函数的时候，会把实际参数传递给形式参数。但是，在程序语言中，这个传递过程中传递的两种情况，即值传递和引用传递
两者区别

值传递（pass by value）是指在调用函数时将实际参数复制一份传递到函数中，这样在函数中如果对参数进行修改，将不会影响到实际参数
引用...]]></description><category></category></item><item><title><![CDATA[类加载与实例化]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102892318</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102892318</guid><author>qq_45833729</author><pubDate>Mon, 04 Nov 2019 10:35:50 +0800</pubDate><description><![CDATA[类的加载
文章目录类的加载基本步骤加载过程示例分析类加载过程实例化过程类的主动与被动使用编译期常量变量初始化类加载器分类功能委派模式
基本步骤
类装载分为以下 5 个步骤：

加载：根据查找路径找到相应的 class 文件然后导入
检查：检查加载的 class 文件的正确性
准备：给类中的静态变量分配内存空间
解析：虚拟机将常量池中的符号引用替换成直接引用的过程。符号引用理解为一个标示，而直接引用...]]></description><category></category></item><item><title><![CDATA[反射]]></title><link>https://blog.youkuaiyun.com/qq_45833729/article/details/102892147</link><guid>https://blog.youkuaiyun.com/qq_45833729/article/details/102892147</guid><author>qq_45833729</author><pubDate>Mon, 04 Nov 2019 10:28:11 +0800</pubDate><description><![CDATA[反射
文章目录反射示例类类对象反射创建对象反射访问属性反射调用方法反射的作用
示例类

User 类：

class User
{
    String name;
    int id;
    
    public User()
    {
    
    }
    
    public User(String name, int id)
    {
        this.name...]]></description><category></category></item></channel></rss>