<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[梦付千秋星垂野]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chinese_coder</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chinese_coder]]></copyright><item><title><![CDATA[CMS收集器]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/121845581</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/121845581</guid><author>chinese_coder</author><pubDate>Thu, 09 Dec 2021 22:25:11 +0800</pubDate><description><![CDATA[Concurrent Mark Sweep，并发标记清除

CMS是一个关注停顿的垃圾回收器。同时CMS回收器在部分工作流程中，可以与用户程序同时运行，从而减少应用程序的停顿时间。


CPU资源敏感： 当CPU资源比较紧张时，应用系统的性能在垃圾回收可能会很糟糕


无法处理浮动垃圾： 并发清楚阶段用户线程还在运行，就会有新的垃圾产生，这一部分垃圾没有被标记，在本次GC中无法处理，只能等到下一次再处理。CMS垃圾收集阶段用户程序还要运行，所以他需要预留出一部分内存空间给用户线程使用，就不能跟其他收集器一样]]></description><category></category></item><item><title><![CDATA[数据库的事务与隔离级别]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/114546428</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/114546428</guid><author>chinese_coder</author><pubDate>Mon, 08 Mar 2021 20:30:18 +0800</pubDate><description><![CDATA[什么是数据库事务
事务（Transaction）是指构成单一逻辑工作单元的操作集合，要么完整地执行，要么完全不执行。

如果事务中有的操作没有成功完成，则事务中的所有操作都需要被回滚，回到事务执行前的状态（要么全执行，要么全都不执行）；
同时，该事务对数据库或者其他事务的执行无影响，所有的事务都好像在独立的运行。

经典的转账案例
假设A要转账100元给B，那么涉及到的数据库操作为

读取A的余额
将A的余额减去100后写回数据库
读取B的余额
将B的余额增加100后写回数据库

如果在执行以上操作的过程中]]></description><category></category></item><item><title><![CDATA[Mybatis缓存]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/114487310</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/114487310</guid><author>chinese_coder</author><pubDate>Sun, 07 Mar 2021 16:07:13 +0800</pubDate><description><![CDATA[文章目录Mybatis缓存一级缓存二级缓存使用Redis做二级缓存
Mybatis缓存
官方文档地址
https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#cache
一级缓存
一级缓存 Mybatis的一级缓存是指SQLSession，一级缓存的作用域是SQlSession, Mabits默认开启一级缓存。 在同一个SqlSession中，执行相同的SQL查询时；第一次会去查询数据库，并写在缓存中，第二次会直接从缓存中取。 当执行SQL时候两次查询中间发生了增删]]></description><category></category></item><item><title><![CDATA[MyBatis自定义类型转换器]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/114484253</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/114484253</guid><author>chinese_coder</author><pubDate>Sun, 07 Mar 2021 14:52:03 +0800</pubDate><description><![CDATA[文章目录自定义类型转换器实现步骤代码实现使用示例
自定义类型转换器
添加数据时将List类型存储成以 ,分割的varchar类型
例如：Arrays.asList(“篮球”, “足球”) → 足球，篮球
实现步骤

实现org.apache.ibatis.type.TypeHandler接口，指定入参类型
通过@MappedJdbcTypes和@MappedTypes注解指定互相映射的数据类型
实现接口方法（通过PreparedStatement和ResultSet进行参数类型转换）

代码实现
/**
 ]]></description><category></category></item><item><title><![CDATA[MyBatis查询结果映射]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/114461055</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/114461055</guid><author>chinese_coder</author><pubDate>Sat, 06 Mar 2021 22:41:27 +0800</pubDate><description><![CDATA[文章目录查询结果映射一对一一对多
查询结果映射
所用的数据结构如下
public class User {
    private int id;
    private String username;
    private String address;
    private List&lt;Book&gt; books;
    ......
}

public class Book {
    private int id;
    private String name;
    privat]]></description><category></category></item><item><title><![CDATA[垃圾收集器与内存分配策略]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/114395400</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/114395400</guid><author>chinese_coder</author><pubDate>Fri, 05 Mar 2021 14:28:11 +0800</pubDate><description><![CDATA[JVM：垃圾收集器与内存分配策略]]></description><category></category></item><item><title><![CDATA[运行时栈帧结构]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/114395184</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/114395184</guid><author>chinese_coder</author><pubDate>Fri, 05 Mar 2021 14:23:41 +0800</pubDate><description><![CDATA[【待完成】

]]></description><category></category></item><item><title><![CDATA[jvm运行时数据区域]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/114378527</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/114378527</guid><author>chinese_coder</author><pubDate>Fri, 05 Mar 2021 14:15:13 +0800</pubDate><description><![CDATA[文章目录概述线程共享区域程序计数器Java虚拟机栈本地方法栈线程隔离区域Java堆方法区
概述

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域，这些区域都有各自的用途，以及创建时间和销毁时间。
－－－－《深入理解Java虚拟机》

根据《Java虚拟机规范（JavaSE 7版）》的规定，Java虚拟机运行时数据区如下图所示
【图片】
线程共享区域
程序计数器
程序计数器是是一块较小的内存空间，可以看成是当前线程所执行的字节码的行号指示器。
Java虚拟机的多线程是通过]]></description><category></category></item><item><title><![CDATA[黄金矿工问题【动态规化】]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/114264223</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/114264223</guid><author>chinese_coder</author><pubDate>Mon, 01 Mar 2021 15:47:55 +0800</pubDate><description><![CDATA[黄金矿工

很久很久以前，有一位国王拥有5座金矿，每座金矿的黄金储量不同，需要参与挖掘的工人人数也不同。例如有的金矿储量是500kg黄金，需要5个工人来挖掘；有的金矿储量是200kg黄金，需要3个工人来挖掘…如果参与挖矿的工人的总数是10。每座金矿要么全挖，要么不挖，不能派出一半人挖取一半的金矿。要求用程序求出，要想得到尽可能多的黄金，应该选择挖取哪几座金矿？  《漫画算法》

解题思路
动态规划：
对于最后的金矿，都有挖或者不挖的选项：

对比两种情况的收益，最终可得到最大收益。
①400kg/5人②50]]></description><category></category></item><item><title><![CDATA[链表中的环]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/114136421</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/114136421</guid><author>chinese_coder</author><pubDate>Fri, 26 Feb 2021 16:31:37 +0800</pubDate><description><![CDATA[链表中的环判断链表中是否存在环若存在环，求环的长度若存在环，求环的入口KaTeX数学公式
判断链表中是否存在环
快慢指针，追及问题，若链表中存在环，快指针必定会在环中追上慢指针
 public static boolean isCycle(Node header) {
   if (header == null) {
        return false;
    }

    Node fast = header;
    Node slow = header;

    // 快指针不为空，慢指针必]]></description><category></category></item><item><title><![CDATA[ThreadLocal的原理和使用]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/113061618</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/113061618</guid><author>chinese_coder</author><pubDate>Sat, 23 Jan 2021 20:35:27 +0800</pubDate><description><![CDATA[ThreadLocal

ThreadLocal，即线程变量，是一个以ThreadLocal对象为键、任意对象为值的存储结构。这个结构被附带在线程上，也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。
----《Java并发编程的艺术》

文章目录ThreadLocal原理内存泄漏问题Hash冲突使用ThreadLocal进行登录验证
原理

在Thread类中维护了了一个ThreadLocalMap类型的对象
 // Thread.java
 ThreadLocal.T]]></description><category></category></item><item><title><![CDATA[Java创建线程的方法和区别]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/112829901</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/112829901</guid><author>chinese_coder</author><pubDate>Tue, 19 Jan 2021 14:34:37 +0800</pubDate><description><![CDATA[与创建线程有关的4种方法的实践与分析]]></description><category></category></item><item><title><![CDATA[自定义一个SpringBoot Starter]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/112447082</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/112447082</guid><author>chinese_coder</author><pubDate>Mon, 11 Jan 2021 21:35:14 +0800</pubDate><description><![CDATA[文章目录简介创建一个Maven项目
简介
官方文档中关于自定义starter的描述

4.29.5. Creating Your Own Starter
Concretely, a custom starter can contain the following:
• The autoconfigure module that contains the auto-configuration code for “acme”.
• The starter module that provides a depen]]></description><category></category></item><item><title><![CDATA[Java中的volatile关键字]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/112337185</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/112337185</guid><author>chinese_coder</author><pubDate>Thu, 07 Jan 2021 23:15:05 +0800</pubDate><description><![CDATA[文章目录volatile关键字是什么volatile的可见性JMM禁止指令重排volatile变量的内存语义及实现DCL中关于重排序的问题volatile不保证原子性验证非原子性非原子性的原因保证volatile线程安全的两个条件

并发编程三要素

原子性： 一个不可再被分割的颗粒。原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。
有序性： 程序执行的顺序按照代码的先后顺序执行
可见性： 一个线程对共享变量的修改,另一个线程能够立刻看到


volatile关键字是什么
volatile是ja]]></description><category></category></item><item><title><![CDATA[IDEA中scala生成变量自动勾选specify type]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/112172647</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/112172647</guid><author>chinese_coder</author><pubDate>Mon, 04 Jan 2021 13:06:47 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[回溯算法的原理和示例]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/111808624</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/111808624</guid><author>chinese_coder</author><pubDate>Sun, 27 Dec 2020 15:24:24 +0800</pubDate><description><![CDATA[文章目录回溯算法的代码模板组和总和八皇后问题黄金矿工
回溯算法实际上一个类似枚举的搜索尝试过程，主要是在搜索尝试过程中寻找问题的解，当发现已不满足求解条件时，就“回溯”返回，尝试别的路径。回溯法是一种选优搜索法，按选优条件向前搜索，以达到目标。但当探索到某一步时，发现原先选择并不优或达不到目标，就退回一步重新选择，这种走不通就退回再走的技术为回溯法，而满足回溯条件的某个状态的点称为“回溯点”。
回溯算法的代码模板
private void backtrack("原始参数") {
    //终止条件(递归必]]></description><category></category></item><item><title><![CDATA[Hadoop伪分布式安装]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/111805527</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/111805527</guid><author>chinese_coder</author><pubDate>Sun, 27 Dec 2020 15:07:58 +0800</pubDate><description><![CDATA[文章目录创建hadoop用户安装SSH、配置SSH无密码登陆安装hadoop配置环境变量伪分布式配置配置YARN启动
创建hadoop用户
sudo useradd -m hadoop -s /bin/bash
sudo passwd hadoop
# 为 hadoop 用户增加管理员权限，方便部署
visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
hadoop  ALL=(ALL)       ALL]]></description><category></category></item><item><title><![CDATA[Hadoop、Hive、Hbase、Zookeeper版本兼容]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/111801157</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/111801157</guid><author>chinese_coder</author><pubDate>Sun, 27 Dec 2020 14:40:09 +0800</pubDate><description><![CDATA[文章目录Hadoop - HbaseHadoop - Hivehive - hbasehbase - zookeeper
Hadoop - Hbase
http://hbase.apache.org/book.html#arch.overview

Ctrl+F搜索Hadoop version support matrix


Hadoop - Hive
http://hive.apache.org/downloads.html

hive - hbase
https://cwiki.apache.org/]]></description><category></category></item><item><title><![CDATA[sql在 not in 子查询有null值情况下结果为空]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/111798707</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/111798707</guid><author>chinese_coder</author><pubDate>Sun, 27 Dec 2020 14:26:47 +0800</pubDate><description><![CDATA[select *
from emp
where empno not in (select distinct mgr
                    from emp)

以下写法结果正常
select *
from emp
where empno not in (select distinct mgr
                    from emp
                    where mgr is not null);


原因：null不能参与比较运算符，即与任何数据比较]]></description><category></category></item><item><title><![CDATA[Mysql中删除某列小于最大值的所有数据【You can‘t specify target table ‘test_1226‘ for update in FROM clause】]]></title><link>https://blog.youkuaiyun.com/chinese_coder/article/details/111791724</link><guid>https://blog.youkuaiyun.com/chinese_coder/article/details/111791724</guid><author>chinese_coder</author><pubDate>Sun, 27 Dec 2020 14:07:48 +0800</pubDate><description><![CDATA[现有如下数据
+--+----+-------------------+
|id|name|time               |
+--+----+-------------------+
|1 |1   |2020-12-26 17:27:46|
|2 |2   |2020-12-26 17:27:46|
|1 |1   |2020-12-27 13:43:01|
|2 |2   |2020-12-27 13:43:01|
|1 |1   |2020-12-27 13:44:48|
|2 |2   |]]></description><category></category></item></channel></rss>