<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[java_cG的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/java_cG</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; java_cG]]></copyright><item><title><![CDATA[HashMap1.8源码分析]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/108015320</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/108015320</guid><author>java_cG</author><pubDate>Fri, 14 Aug 2020 23:16:33 +0800</pubDate><description><![CDATA[HashMap数据结构
数组＋链表　 1.7
数组＋链表＋红黑树 1.8
HashMap为什么要用链表？
解决hash冲突
为什么要用红黑树？（查找接近二分查找）
方便查询（时间复杂度低）
HashMap的容量为什么要为2的次方数呢？
１．hash运算方便(在进行hash运算的时候可以通过位运算来进行，不必进行取模，提高效率)
２．在数组在扩容的时候，方便计算新的位置
hash函数
static final int hash(Object key) {
    int h;
    return (key ]]></description><category></category></item><item><title><![CDATA[Java简单计算器(栈实现)]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/107869670</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/107869670</guid><author>java_cG</author><pubDate>Fri, 07 Aug 2020 20:23:02 +0800</pubDate><description><![CDATA[最近在复习数据结构,就用栈实现了一个简单计算器,增加了AWT的图形界面.
例:输入一个字符串:3*2+1-2
解题思路:
定义两个栈,一个用来存放数字,另一个用来存放操作符.
遍历字符串,如果是数字,就放入数字栈,
如果是操作符,则分两种情况:

1.若字符栈为空,则直接入栈
2.字符栈不为空,需要比较当前要入栈的字符和字符栈顶的字符的优先级

如果前者优先级小于后者, 则需要进行计算(从数字栈取两个值,字符栈取一个值进行计算) ,计算完成之后将结果入数字栈, 再继续判断要入栈的字符和字符栈顶的字符的优先级]]></description><category></category></item><item><title><![CDATA[集合-LinkedList源码分析]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/107845095</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/107845095</guid><author>java_cG</author><pubDate>Thu, 06 Aug 2020 22:21:17 +0800</pubDate><description><![CDATA[LinkedList是集合框架的一种数据类型.
继承关系:
public class LinkedList&lt;E&gt;
    extends AbstractSequentialList&lt;E&gt;
    implements List&lt;E&gt;, 
    	Deque&lt;E&gt;, (双端队列)
    	    Cloneable, 
    	        java.io.Serializable
{

数据结构:
双向链表实现
特点:
优点: 增加和删除操作很快,不]]></description><category></category></item><item><title><![CDATA[集合-ArrayList源码分析]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/107826213</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/107826213</guid><author>java_cG</author><pubDate>Thu, 06 Aug 2020 16:23:43 +0800</pubDate><description><![CDATA[ArrayList分析继承关系:底层数据结构:特点:源码分析:构造方法:添加方法:删除操作:覆盖操作:获取方法清除操作:包含操作:是否为空:
ArrayList是Java集合框架中较为常用的一种数据结构.下面从不同层面来介绍它.
继承关系:
ArrayList继承了AbstractList,实现了List,RandomAccess(随机访问),Cloneable,Serializable接口
public class ArrayList&lt;E&gt; extends AbstractList&lt;E&]]></description><category></category></item><item><title><![CDATA[JVM-类的加载机制]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/107578591</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/107578591</guid><author>java_cG</author><pubDate>Sat, 25 Jul 2020 16:30:30 +0800</pubDate><description><![CDATA[类加载概述类加载时机：类加载过程：加载验证准备解析初始化类的加载方式(整个过程)隐式加载显式加载类加载器：双亲委派机制（安全）
概述
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始
化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。
类加载时机：
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载
(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化
(In]]></description><category></category></item><item><title><![CDATA[JVM-内存分配策略和垃圾回收策略]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/107568509</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/107568509</guid><author>java_cG</author><pubDate>Fri, 24 Jul 2020 20:29:59 +0800</pubDate><description><![CDATA[目录对什么区域进行垃圾回收？什么情况下回收？四种引用：JVM内存分配策略：1.对象优先在Eden分配2.大对象直接进入老年代3.动态对象年龄判断4.长期存活的对象将进入老年代5.空间分配担保垃圾回收算法：１．标记-清除算法２．复制算法３．标记-整理法４．分代回收算法什么是STW?精确式GC：savepoint :安全点抢先式中断：主动式中断：安全区:垃圾收集器Serial收集器(新生代收集器)ParNew收集器(新生代收集器)Parallel Scavenge收集器(新生代收集器)Serial Old收集器]]></description><category></category></item><item><title><![CDATA[Java对象在内存中存储结构]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/107436846</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/107436846</guid><author>java_cG</author><pubDate>Sat, 18 Jul 2020 22:55:08 +0800</pubDate><description><![CDATA[目录Java对象存储：(HOTSPOT虚拟机)什么是对象头,具体包括什么Mark Word分析 (64位)：Class Pointer (类型指针)array length(数组特有)实例数据(Instance)对其填充(padding)如何获取的元数据通过句柄访问对象(间接)通过Reference指针直接访问对象(直接)对象的基本存储方式：
Java对象存储：(HOTSPOT虚拟机)
一个Java对象可以分为三部分存储在内存中，分别是：

对象头Object Header
实例数据Instance
对齐填]]></description><category></category></item><item><title><![CDATA[设计模式-单例模式]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/107383706</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/107383706</guid><author>java_cG</author><pubDate>Thu, 16 Jul 2020 18:28:12 +0800</pubDate><description><![CDATA[单例模式是一种常见的设计模式，由于有的类我们只希望保留一个对象即可，不需要创建更多的对象，这种情况下就可以使用单例模式．
单例模式的特点：
1、单例模式只能有一个实例。
2、单例类必须创建自己的唯一实例。
3、单例类必须向其他对象提供这一实例。
如何实现：
一．　饿汉模式
代码实现

public class Single {
    private static final Single INSTANCE = new Single();

    private Single(){
    }

    ]]></description><category></category></item><item><title><![CDATA[MySQL数据库基本语法，数据库设计，事务，多表查询及练习题]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/107360877</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/107360877</guid><author>java_cG</author><pubDate>Wed, 15 Jul 2020 15:39:41 +0800</pubDate><description><![CDATA[Mysql注释：

单行注释：
show databases; 　–　(空格) 查询所有数据库
show databases;　 #查询所有数据库
多行注释：
show databases; /* 查询所有数据库*/

数据库类型：

int :整数类型  //age int
double :小数类型  //score double(5,2)
date :日期，只包含年月日,yyyy-MM-dd
datetime :日期,包含年月日时分秒,yyyy-MM-dd HH:mm:ss
timestamp :时间错]]></description><category></category></item><item><title><![CDATA[Stream流和函数式编程]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/107360561</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/107360561</guid><author>java_cG</author><pubDate>Wed, 15 Jul 2020 14:54:12 +0800</pubDate><description><![CDATA[Stream流

                 拼接流式模型

生产饮料 放瓶子　　　洗瓶子　　装饮料　　封口　　装箱

java中的Stream并不会存储任何数据，而是按需计算．
数据源： 流的来源，可以是集合，数组等.
Pipelining:中间的每一步操作都会返回流对象本身，这样的操作可以串联为一个管道，可以对操作进行优化，比如延迟执行和短路．
内部迭代:以前的方法都是先有集合，在进行迭代(外部迭代),流可以调用foreach()方法直接遍历.(内部迭代)
当使用流的时候，通常包括三个步骤:
获取]]></description><category></category></item><item><title><![CDATA[生产者消费者模型]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/87304262</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/87304262</guid><author>java_cG</author><pubDate>Wed, 15 Jul 2020 14:44:20 +0800</pubDate><description><![CDATA[import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;
@SuppressWarnings(“all”)
/**


描述:



@Author (fei)


@Date $(DATE)
*/
class Producer1 implements Runnable{
private HashM...]]></description><category></category></item><item><title><![CDATA[(三)Redi缓存配置,持久化,订阅发布,主从复制和缓存相关问题以及解决]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/106903245</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/106903245</guid><author>java_cG</author><pubDate>Mon, 22 Jun 2020 16:09:27 +0800</pubDate><description><![CDATA[注:笔记整理来源 B站UP主狂神说Java
Redis.conf详解
启动通过配置文件！
单位：
1k =&gt; 1000 bytes
#1kb =&gt; 1024 bytes
#1m =&gt; 1000000 bytes
1mb =&gt; 10241024 bytes
1g =&gt; 1000000000 bytes
1gb =&gt; 10241024*1024 bytes
#units are case insensitive so 1GB 1Gb 1gB are all the same.]]></description><category></category></item><item><title><![CDATA[(二)Redis数据类型,事务和Jedis操作Redis]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/106902187</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/106902187</guid><author>java_cG</author><pubDate>Mon, 22 Jun 2020 15:37:29 +0800</pubDate><description><![CDATA[Redis五大基本类型
注:笔记整理来源 B站UP主狂神说Java

官方文档：Redis 是一个开源（BSD许可）的，内存中的数据结构存储系统，它可以用作数据库、缓存和消息中间件。
它支持多种类型的数据结构，如 字符串（strings）， 散列（hashes）， 列表（lists）， 集合（sets），
有序集合（sorted sets） 与范围查询， bitmaps， hyperloglogs 和 地理空间（geospatial）
索引半径查询。 Redis 内置了 复制（replication），LU]]></description><category></category></item><item><title><![CDATA[(一)Redis介绍和Linux环境下安装]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/106901174</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/106901174</guid><author>java_cG</author><pubDate>Mon, 22 Jun 2020 15:02:38 +0800</pubDate><description><![CDATA[注:笔记整理来源 B站UP主狂神说Java
什么是NoSQL？
关系型数据库：列表，行，列　(POI：通过java查询exl表格)
非关系型数据库：NoSQL = not only SQL(不仅仅是SQL)
泛指非关系型数据库．随着web2.0互联网的诞生，传统的关系型数据库很难对付web2.0，尤其是超大规模的高并发社区.
NoSQL在大数据发展的十分迅速，Redis是发展最快的，是当下必须掌握的技术.
很多的数据类型用户的个人信息，社交网络，地理位置(数据的存数不需要固定的格式，不需要多余的操作就可以横]]></description><category></category></item><item><title><![CDATA[Spring IOC,AOP,事务和JDBC Template操作]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/104496672</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/104496672</guid><author>java_cG</author><pubDate>Tue, 25 Feb 2020 14:40:54 +0800</pubDate><description><![CDATA[框架(半成品软件)
高度抽取可重用代码的一种,高度的通用性;  多个可重用模块的集合,形成一个某个领域的整体解决方案.
Spring:
是一个java企业级应用的开源开发框架
Spring的好处:
1.轻量级
2.非侵入式(不依赖Spring中的API,不用知道其方法)                          
3.容器(可以管理所有的组件(类))框架
4.控制反转(IOC:Spring...]]></description><category></category></item><item><title><![CDATA[Mybatis环境搭建，CRUD，动态sql，缓存，延时加载]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/104496073</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/104496073</guid><author>java_cG</author><pubDate>Tue, 25 Feb 2020 14:09:00 +0800</pubDate><description><![CDATA[什么是框架?
他是我们软件开发中的一套解决方案,不同的框架解决不同的问题
使用框架的好处:
框架封装了很多的细节,使开发者可以使用极简的方法实现功能,大大提高开发效率
什么是三层架构?
表现层:  用于展示数据
业务层:  是处理业务需求
持久层:  和数据库进行交互
持久层技术解决方案
         JDBC技术:
                        Connection
   ...]]></description><category></category></item><item><title><![CDATA[SpringMVC简介(常用注解，拦截器，异常处理)]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/104495629</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/104495629</guid><author>java_cG</author><pubDate>Tue, 25 Feb 2020 13:30:45 +0800</pubDate><description><![CDATA[SpringMVC的基本概念
什么是MVC
是一种基于两种形式,一种是C/S架构,也就是客户端/服务器,
另一种是B/S架构,也就是浏览器/服务器. 在JavaEE中,几乎全是基于B/S架构的开发,
那么在B/S架构中,系统标准的三层架构包括:表现层,业务层,持久层.
什么是SpringMVC?
SpringMVC是一种基于java实现的MVC设计模型的请求驱动类型的轻量级WEB框架,为目前最主流...]]></description><category></category></item><item><title><![CDATA[银行家算法－java]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/103656408</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/103656408</guid><author>java_cG</author><pubDate>Sun, 22 Dec 2019 20:42:01 +0800</pubDate><description><![CDATA[银行家算法（Banker’s Algorithm）是一个避免死锁（Deadlock）的著名算法.
1.算法原理
操作系统是银行家，操作系统管理的资源相当于银行家管理的资金，进程向操作系统请求分配资源相当于用户向银行家贷款。
为保证资金的安全，银行家规定：
(1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客；（即request &lt;= available）
(2) 顾客可...]]></description><category></category></item><item><title><![CDATA[进程与线程]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/87303488</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/87303488</guid><author>java_cG</author><pubDate>Thu, 14 Feb 2019 22:21:15 +0800</pubDate><description><![CDATA[进程:是操作系统资源分配的最小单位  例:IO资源,内存资源
线程:是进行资源调度的单位,是实在的一条执行指令
Java内存模型
线程共享区：方法区 堆区
线程私有区： 虚拟机栈 本地方法栈 程序计数器
进程与线程的关系：
对应关系：一个进程可以对应多个线程
健壮性：进程与进程相互隔离，一个进程崩溃不会影响其他进程
一个线程崩溃导致整个进程崩溃
进程的健壮性要比线程强
资源：创建意味着开辟内存空间...]]></description><category></category></item><item><title><![CDATA[线程池的相关知识点(三大方法，七大参数，四种拒绝策略)]]></title><link>https://blog.youkuaiyun.com/java_cG/article/details/87302795</link><guid>https://blog.youkuaiyun.com/java_cG/article/details/87302795</guid><author>java_cG</author><pubDate>Thu, 14 Feb 2019 22:09:57 +0800</pubDate><description><![CDATA[多线程编码方式：
class MyTask implements Runnable{
    public void run(){}
}
public class Test{
    public static void main(String[] args){
        MyTask task = new MyTask();
        Thread thread = new Thre...]]></description><category></category></item></channel></rss>