<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Maya2000的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Maya2000</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Maya2000]]></copyright><item><title><![CDATA[数据处理工具：BufferTrigger使用]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/140657164</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/140657164</guid><author>Maya2000</author><pubDate>Wed, 24 Jul 2024 10:57:23 +0800</pubDate><description><![CDATA[/ 每隔n秒消费一次。]]></description><category></category></item><item><title><![CDATA[JVM GC相关概念]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/123925633</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/123925633</guid><author>Maya2000</author><pubDate>Sat, 02 Apr 2022 17:38:50 +0800</pubDate><description><![CDATA[目前Java中可以作为GC ROOT的对象有：
1、虚拟机栈中引用的对象（本地变量表）
2、方法区中静态属性引用的对象
3、方法区中常亮引用的对象
4、本地方法栈中引用的对象（Native对象）

回收算法：
复制算法，标记清除算法(空间碎片问题)，标记-整理算法；JVM为了优化内存的回收，使用了分代回收的方式，对于新生代内存的回收（Minor GC）主要采用复制算法。而对于老年代的回收（Major GC），大多采用标记-整理算法。

垃圾回收器简介：

 新生代串行回收器 Serial（-XX:+U...]]></description><category></category></item><item><title><![CDATA[Java 全排列算法]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/123872410</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/123872410</guid><author>Maya2000</author><pubDate>Thu, 31 Mar 2022 14:59:12 +0800</pubDate><description><![CDATA[public static void main(String[] args) {
    Integer l[] = {1,5,2};
    sort(l,0);
}

public static void sort(Integer[] l, int index) {
    if (index == l.length - 1) {
        System.out.println(Arrays.asList(l));
        return;
    }
    for (int i = i.]]></description><category></category></item><item><title><![CDATA[二种JAVA快速排序算法比较]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/121534163</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/121534163</guid><author>Maya2000</author><pubDate>Thu, 25 Nov 2021 11:37:44 +0800</pubDate><description><![CDATA[二种JAVA快速排序算法比较


public class QCTest {

    public static void main(String[] args) {
        List&lt;Integer&gt; l1 = Arrays.asList(45,671,9,5,3,7,0,12,2000,34,56,45,21);
        l1 = QCTest.seq1(l1);
        System.out.println(l1);

        Integer[] l = ]]></description><category></category></item><item><title><![CDATA[用guava的Queues.drain 解决 按数量和指定时间 弹出队列中的元素]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/115466808</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/115466808</guid><author>Maya2000</author><pubDate>Tue, 06 Apr 2021 17:58:17 +0800</pubDate><description><![CDATA[import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;

import com.google.common.collect.Queues;

public.]]></description><category></category></item><item><title><![CDATA[DDD 总结]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/108602735</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/108602735</guid><author>Maya2000</author><pubDate>Tue, 15 Sep 2020 16:38:35 +0800</pubDate><description><![CDATA[1战略层面

UL，领域划分，动名词提取，命名

2战术层面

分层架构，entity/DTO划分，specification提取，factory，Repository
]]></description><category></category></item><item><title><![CDATA[NIO Reactor模型 & Netty线程模型]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/105256938</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/105256938</guid><author>Maya2000</author><pubDate>Wed, 01 Apr 2020 22:02:32 +0800</pubDate><description><![CDATA[一、NIO Reactor模型

1、Reactor模式思想：分而治之+事件驱动

1）分而治之

一个连接里完整的网络处理过程一般分为accept、read、decode、process、encode、send这几步。

Reactor模式将每个步骤映射为一个Task，服务端线程执行的最小逻辑单元不再是一次完整的网络请求，而是Task，且采用非阻塞方式执行。

2）事件驱动

每个Task对应特...]]></description><category></category></item><item><title><![CDATA[偏向所锁，轻量级锁及重量级锁]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/105204192</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/105204192</guid><author>Maya2000</author><pubDate>Mon, 30 Mar 2020 17:32:42 +0800</pubDate><description><![CDATA[一个对象刚开始实例化的时候，没有任何线程来访问它的时候。它是可偏向的，意味着，它现在认为只可能有一个线程来访问它，所以当第一个线程来访问它的时候，它会偏向这个线程，此时，对象持有偏向锁。偏向第一个线程，这个线程在修改对象头成为偏向锁的时候使用CAS操作，并将对象头中的ThreadID改成自己的ID，之后再次访问这个对象时，只需要对比ID，不需要再使用CAS在进行操作。
  ...]]></description><category></category></item><item><title><![CDATA[mysql 索引选择算法/原理详解（rows估算）]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/102834939</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/102834939</guid><author>Maya2000</author><pubDate>Thu, 31 Oct 2019 11:41:56 +0800</pubDate><description><![CDATA[本文章假设读者已了解mysql的索引基础知识，如b+树，聚集索引，并对explain分析结果已了解。以下主要分析mysql的索引选择原理及算法。

Mysql InnoDB的查询一般基于explian所获取的最小rows来选择使用哪一个索引。Rows是一个estimate的值，其估计算法（规则）如下：

1.如果是select c from where a=***，a上有索引。Mysql大概率会使...]]></description><category></category></item><item><title><![CDATA[CPU的load和使用率傻傻分不清]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/96270499</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/96270499</guid><author>Maya2000</author><pubDate>Wed, 17 Jul 2019 09:01:36 +0800</pubDate><description><![CDATA[1. 什么是Cpu的Load





使用uptime、top或者查看/proc/loadavg都可以看到CPU的load统计，这里有三个值，分别代表1分钟、5分钟和15分钟的CPU Load情况。大部分人认为这三个数值越小说明比较好，如果越高说明系统可能存在问题或负载过高了。那这个值处于什么状态是好什么又是不好？什么时候需要关注并检查高的原因？
LOAD AVERAGE：一段时间内处于...]]></description><category></category></item><item><title><![CDATA[Java多线程：synchronized的可重入性]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/95317306</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/95317306</guid><author>Maya2000</author><pubDate>Wed, 10 Jul 2019 11:13:01 +0800</pubDate><description><![CDATA[从Java多线程：线程间通信之volatile与sychronized这篇文章中我们了解了synchronized的基本特性，知道了一旦有一个线程访问某个对象的synchronized修饰的方法或代码区域时，该线程则获取这个对象的锁，其他线程不能再调用该对象被synchronized影响的任何方法。那么，如果这个线程自己调用该对象的其他synchronized方法，Java是如何判定的？这就涉及到...]]></description><category></category></item><item><title><![CDATA[PROPAGATION_REQUIRED，PROPAGATN_REQUIRES_NEW，PROPAGATION_NESTED区别]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/81367761</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/81367761</guid><author>Maya2000</author><pubDate>Thu, 02 Aug 2018 21:19:10 +0800</pubDate><description><![CDATA[PROPAGATION_REQUIRED嵌套时，不管是否用try catch，只要里外二个事务有一个出错，都会因rollback。因为是同一个事务范围。

PROPAGATN_REQUIRES_NEW被嵌套时，外面的事务不会影响里面的事务。如果里面的事务用了try catch，那么出错外面不会rollback，里面rollback。如果没用，里面的抛出错，会导致里外的事务都rollback。

P...]]></description><category></category></item><item><title><![CDATA[自定义java.policy配置(如何让你的类禁止读写文件？禁止创建Socket对象？)]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/79789559</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/79789559</guid><author>Maya2000</author><pubDate>Mon, 02 Apr 2018 15:04:55 +0800</pubDate><description><![CDATA[最近做的项目有一个特殊的需求，由于系统是CS的，客户端需要自己编写JAVA类上传至服务器运行，整个流程如下：1.客户端编写JAVA类，并实现特定接口2.由客户端的JAVA编译器将其编译成class3.客户端通过socket将class文件上传至服务器4.服务器将class文件放至自己的classpath中，加载并执行问题出在最后一步上，服务器虽然由我们完全控制，客户端编写的类虽然需要实现特定的接口...]]></description><category></category></item><item><title><![CDATA[Docker 核心技术与实现原理]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/79708711</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/79708711</guid><author>Maya2000</author><pubDate>Tue, 27 Mar 2018 10:09:55 +0800</pubDate><description><![CDATA[提到虚拟化技术，我们首先想到的一定是 Docker，经过四年的快速发展 Docker 已经成为了很多公司的标配，也不再是一个只能在开发阶段使用的玩具了。作为在生产环境中广泛应用的产品，Docker 有着非常成熟的社区以及大量的使用者，代码库中的内容也变得非常庞大。同样，由于项目的发展、功能的拆分以及各种奇怪的改名 PR，让我们再次理解 Docker 的的整体架构变得更加困难。虽然 Docker 目...]]></description><category></category></item><item><title><![CDATA[LMAX Disruptor—多生产者多消费者中，消息复制分发的高性能实现]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/79228158</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/79228158</guid><author>Maya2000</author><pubDate>Thu, 01 Feb 2018 14:30:52 +0800</pubDate><description><![CDATA[解决的问题
当我们有多个消息的生产者线程，一个消费者线程时，他们之间如何进行高并发、线程安全的协调？
很简单，用一个队列。
 
当我们有多个消息的生产者线程，多个消费者线程，并且每一条消息需要被所有的消费者都消费一次（这就不是一般队列，只消费一次的语义了），该怎么做？
这时仍然需要一个队列。但是：
1. 每个消费者需要自己维护一个指针，知道自己消费了队列中多少数据。这样同一条消息，可以]]></description><category></category></item><item><title><![CDATA[sql limit 查询优化]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/79043597</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/79043597</guid><author>Maya2000</author><pubDate>Fri, 12 Jan 2018 14:39:53 +0800</pubDate><description><![CDATA[limit offset较大时，

select * from user limit 10000,10 和
select * from user limit 0,10 

执行效率差别较大。原因是limit10000,10的意思扫描满足条件的10010行，扔掉前面的10000行，返回最后的10行（全表扫描）。

优化：
select * from (
   select id f]]></description><category></category></item><item><title><![CDATA[包装类对象之间值的比较，全部使用 equals 方法比较]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/79038890</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/79038890</guid><author>Maya2000</author><pubDate>Thu, 11 Jan 2018 21:46:27 +0800</pubDate><description><![CDATA[所有的相同类型的包装类对象之间值的比较，全部使用 equals 方法比较。
说明： 对于 Integer var = ? 在-128 至 127 范围内的赋值， Integer 对象是在IntegerCache.cache 产生，会复用已有对象，这个区间内的 Integer 值可以直接使用==进行判断，但是这个区间之外的所有数据，都会在堆上产生，并不会复用已有对象，这是一个大坑，
推荐使用 e]]></description><category></category></item><item><title><![CDATA[Spring 获取方法参数名]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/78734330</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/78734330</guid><author>Maya2000</author><pubDate>Wed, 06 Dec 2017 19:43:52 +0800</pubDate><description><![CDATA[Spring 获取方法参数名]]></description><category></category></item><item><title><![CDATA[spring 多数据源事务]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/78722662</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/78722662</guid><author>Maya2000</author><pubDate>Tue, 05 Dec 2017 17:36:45 +0800</pubDate><description><![CDATA[spring 3对多数据源的事务管理可以不依赖JTA]]></description><category></category></item><item><title><![CDATA[面向对象里类方法归属问题处理]]></title><link>https://blog.youkuaiyun.com/Maya2000/article/details/78712766</link><guid>https://blog.youkuaiyun.com/Maya2000/article/details/78712766</guid><author>Maya2000</author><pubDate>Mon, 04 Dec 2017 19:25:18 +0800</pubDate><description><![CDATA[网上一篇文章《十年之后再看“面向对象”》
http://www.cnblogs.com/freeflying/p/7410167.html
里面有讲到：
我举一个例子：

现在有两个类，一个用户类（User），一个博客类（Blog），现在有一个发布博客的方法（Publish）。

那么，“发布博客”这个方法，究竟是应该放在用户的类里面，还是博客的类里面？即：究竟是User.Publish(B]]></description><category></category></item></channel></rss>