<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Jet_Green的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Jet_Green</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Jet_Green]]></copyright><item><title><![CDATA[大数据的处理算法——BitMap算法]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/83069449</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/83069449</guid><author>Jet_Green</author><pubDate>Tue, 16 Oct 2018 10:43:43 +0800</pubDate><description><![CDATA[大数据的处理算法——BitMap算法
首先我们来看一个问题：
如何判断一个整数是否在40亿个整数之中？
当时我看到这个问题首先想到的是利用一个map或者set进行存储（/笑哭）
但是一个整数4个字节，40亿个整数就是160亿个字节，需要16GB的内存（/惊讶）
如果分多次加载就需要利用到磁盘的IO，但是磁盘的IO读取速度远远低于内存的读取速度
所以是不可取的！！！
那么可以采用分布式的算法来实现，...]]></description><category></category></item><item><title><![CDATA[线程循环运行demo]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/83059272</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/83059272</guid><author>Jet_Green</author><pubDate>Mon, 15 Oct 2018 15:14:13 +0800</pubDate><description><![CDATA[线程循环运行demo
​														（用notify-wait实现线程通信的小demo总结）
Java在创建线程的时候，如果需要你去让一个线程循环执行10次你会怎么做？
for(int i = 0; i &amp;lt; 10; i++){
	thread.start();
}

第一次接触线程的人可能会这么去写，但是在Java中start方法只能执行一次。如果你这么写，将会发生这种错误。...]]></description><category></category></item><item><title><![CDATA[走进分布式Java开发（一）—Java NIO]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/82864624</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/82864624</guid><author>Jet_Green</author><pubDate>Thu, 27 Sep 2018 11:21:56 +0800</pubDate><description><![CDATA[走进分布式Java开发（一）—Java NIO
概述
何为NIO，百度百科上的解释为：
java.nio全称java non-blocking IO（实际上是 new io），是指jdk1.4 及以上版本里提供的新api（New IO） ，为所有的原始类型（boolean类型除外）提供缓存支持的数据容器，使用它可以提供非阻塞式的高伸缩性网络。
为所有的原始类型提供(Buffer)缓存支持。字符集编...]]></description><category></category></item><item><title><![CDATA[Java无锁的实现——原子变量]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/82621398</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/82621398</guid><author>Jet_Green</author><pubDate>Tue, 11 Sep 2018 10:09:00 +0800</pubDate><description><![CDATA[概述

对于并发控制来说，锁是一种悲观的策略。它总是假设每一次的临界区操作会产生冲突，因此，必须对每次操作都小心翼翼。如果有多个线程同时访问临界区资源，就宁可牺牲性能让线程进行等待，所以说锁会阻塞线程执行。 而无锁采用的是一种乐观的策略，它会假设对资源的访问是没有冲突的，既然没有冲突，所以不用等待。遇到冲突，无锁采用的策略是一种叫做CAS的技术来鉴别线程冲突。

CAS

CAS全称为compil...]]></description><category></category></item><item><title><![CDATA[Java并发模式—Future模式]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/82527999</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/82527999</guid><author>Jet_Green</author><pubDate>Sat, 08 Sep 2018 11:39:59 +0800</pubDate><description><![CDATA[Future



Future模式是多线程开发中非常常见的一种设计模式，它的核心思想是异步调用。当我们需要调用一个函数方法时，如果这个函数执行很慢，那么我们就要进行等待。但有时候，我们可能不急着要结果。因此，我们可以让被调者立即返回，让它在后台慢慢处理这个请求。对于调用者来说，则可以先处理一些其他任务，在真正需要数据的场合再去尝试获得需要的数据。

对于Future模式来说，虽然它无法立即给出你...]]></description><category></category></item><item><title><![CDATA[利用notify和wait方法实现suspend和resume（附带jstack和jps查看线程运行状态）]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/82286902</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/82286902</guid><author>Jet_Green</author><pubDate>Sat, 01 Sep 2018 14:27:09 +0800</pubDate><description><![CDATA[suspend和resume的废除

查阅java api 可以发现suspend和resume已经被标注为废弃方法。原因其实也不是很复杂，因为suspend在导致线程暂停的同时不会去释放任何资源，直到在对应线程上执行了resume操作，被挂起的线程才能继续，从而其他所有阻塞在相关锁的线程也可以继续执行，但是，如果resume操作意外的在suspend操作前就执行了，那么被挂起的线程很难再去执行。...]]></description><category></category></item><item><title><![CDATA[动态代理两种实现方式（jdk动态代理和CGLib动态代理）]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81874632</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81874632</guid><author>Jet_Green</author><pubDate>Mon, 20 Aug 2018 17:46:37 +0800</pubDate><description><![CDATA[前言

关于动态代理和静态代理，我这篇博文https://blog.youkuaiyun.com/Jet_Green/article/details/81198691中写的很详细，这里主要写jdk的动态代理和CGLib动态代理的区别和优化。



JDK动态代理

首先定义个hello接口：


public interface Hello {
    void say(String name);
}

然后...]]></description><category></category></item><item><title><![CDATA[ThreadLocal———存放线程的局部变量的容器]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81874258</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81874258</guid><author>Jet_Green</author><pubDate>Mon, 20 Aug 2018 17:07:13 +0800</pubDate><description><![CDATA[前言

ThreadLocal直译为“线程本地”或“本地线程”，如果真的这么认为，那就错了。其实它就是一个容器，用于存放线程的局部变量，应该叫ThreadLocalVariable(线程局部变量)才对。



定义

ThreadLocal，即线程变量，是一个以ThreadLocal对象为键、任意对象为值得存储结构。这个结构被附带在线程上，也就是说一个线程可以根据一个ThreadLocal对象查询...]]></description><category></category></item><item><title><![CDATA[Java设计模式-策略、委派、模板、原型模式总结]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81808580</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81808580</guid><author>Jet_Green</author><pubDate>Mon, 20 Aug 2018 09:46:11 +0800</pubDate><description><![CDATA[今天学习了下Java设计模式中的策略模式、委派模式、模板模式、原型模式。 
做一个学习小结。





委派模式：

委派模式和代理模式其实差不多。委派模式注重的结果而代理注重的是过程， 
例子

interface I {
     void f();
     void g();
 }

 class A implements I {
     public void f() { System...]]></description><category></category></item><item><title><![CDATA[计算机网络小结]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81699506</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81699506</guid><author>Jet_Green</author><pubDate>Wed, 15 Aug 2018 14:30:42 +0800</pubDate><description><![CDATA[一.网络层次划分

 


1. 物理层 
 激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说，物理层确保原始数据可在各种物理媒体上传输。物理层记住两个重要的设备名称：中继器和集线器 
 2. 数据链路层 
 　数据链路层在物理层提供的服务的基础上向网络层提供服务，其最基本的服务是将源自网络层来的数据可靠地传输到相邻...]]></description><category></category></item><item><title><![CDATA[Java中的锁]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81671396</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81671396</guid><author>Jet_Green</author><pubDate>Tue, 14 Aug 2018 17:42:41 +0800</pubDate><description><![CDATA[Java中的锁



Lock锁



Lock锁介绍

JavaSE 5之后，并发包中新增了Lock**接口（以及相关实现类）锁功能，它提供了与synchronized关键字类似的同步功能，只是在使用时需要显式地获取和释放锁，虽然它缺少了(通过synchronized块或者方法所提供的)隐式获取释放锁的编写性，但是却拥有了锁获取与释放的可操作性、可中断性以及超时获取锁**等多种synchroni...]]></description><category></category></item><item><title><![CDATA[算法之动态规划（爬楼梯）]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81631028</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81631028</guid><author>Jet_Green</author><pubDate>Mon, 13 Aug 2018 15:39:35 +0800</pubDate><description><![CDATA[动态规划的概念

通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。



动态规划的基本思想

若要解一个给定问题，我们需要解其不同部分（即子问题），再合并子问题的解以得出原问题的解。 通常许多子问题非常相似，为此动态规划法试图仅仅解决每个子问题一次，从而减少计算量： 一旦某个给定子问题的解已经算出，则将其记忆化存储，以便下次需要同...]]></description><category></category></item><item><title><![CDATA[手写实现Spring AOP]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81539597</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81539597</guid><author>Jet_Green</author><pubDate>Thu, 09 Aug 2018 16:58:10 +0800</pubDate><description><![CDATA[Spring IOC、AOP可谓是spring中两大王牌 
上次我们手写了IOC，那么今天我们来手写一下AOP 
感谢这篇博主的手写AOP博文（https://blog.youkuaiyun.com/qq_35704236/article/details/79997182） 
我是学习他的写法，然后将一些我不懂的代码进行了注释解释，应该可以更加适合小白学习吧。

一.准备

首先我们都知道Spring AOP...]]></description><category></category></item><item><title><![CDATA[手写实现Spring IOC]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81514347</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81514347</guid><author>Jet_Green</author><pubDate>Wed, 08 Aug 2018 19:48:23 +0800</pubDate><description><![CDATA[Spring中有两大核心内容： 
一.IOC 
二.AOP 
今天我手写实现了IOC，来总结一下IOC的原理和实现方式

首先IOC底层所用到的技术 
1&amp;gt;xml配置文件 
2&amp;gt;dom4j解析xml 
3&amp;gt;工厂设计模式 
4&amp;gt;反射 
5&amp;gt;内省 
首先看一下IOC demo的流程图 
 
运行环境 
1.jdk1.8，IntelliJ IDEA 
ps（如果报错报找不到...]]></description><category></category></item><item><title><![CDATA[手写mybatis（适合初学者）]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81487392</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81487392</guid><author>Jet_Green</author><pubDate>Tue, 07 Aug 2018 19:53:52 +0800</pubDate><description><![CDATA[近期学习了如何手写简易的mybatis，网上的博客的代码多多少少有些问题，运行不起来，本篇博文保证你百分百能运行和理解mybaits。 
首先我觉得这张图用来理解mybatis很易懂。 
 
然后是本次demo的流程图 
 
demo运行环境 
IntelliJ IDEA，jdk1.8，mysql 
运行代码步骤 
1.创建user数据库（主键id，name属性） 
2.修改SimpleExcut...]]></description><category></category></item><item><title><![CDATA[Spring boot学习demo（持续跟新）]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81457244</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81457244</guid><author>Jet_Green</author><pubDate>Mon, 06 Aug 2018 16:59:15 +0800</pubDate><description><![CDATA[最近在学习Spring boot，平常写的demo都分享在这里面，有需要的人可以去下载学习。

这个代码仓库主要保存的是springboot学习中的一些demo

mybaitsdemo 是springboot+mybaits

pagingdemo是通用Mapper与分页插件的集成

redisdemo是springboot+redis

springboot-restful是spring bo...]]></description><category></category></item><item><title><![CDATA[Java反射和内省机制的区别]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81454464</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81454464</guid><author>Jet_Green</author><pubDate>Mon, 06 Aug 2018 15:02:01 +0800</pubDate><description><![CDATA[很多人了解Java发射机制，但是今天我在学习springIOC（依赖注入）的原理的时候，注意到了一个词叫做内省机制 
那么我就在想这个内省机制是什么呢？ 
WiKi上的解释是：



在计算机科学中，内省是指计算机程序在运行时（Run time）检查对象（Object）类型的一种能力，
通常也可以称作运行时类型检查。 
不应该将内省和反射混淆。
相对于内省，反射更进一步，
是指计算机程序在运行时（...]]></description><category></category></item><item><title><![CDATA[Java设计模式——观察者模式]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81393834</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81393834</guid><author>Jet_Green</author><pubDate>Fri, 03 Aug 2018 20:16:33 +0800</pubDate><description><![CDATA[观察者模式是Java开发中常用的一种开发模式 
我前面一篇关于RXjava的博文，同是也是理解观察者模式的一篇博文。 
观察者模式在事件监听，事件总线是最关键的一种设计模式。 
观察者模式可以用这张图简单理解下： 
 
UML关系图： 
 
下面通过一个demo来介绍的实现观察者模式 
首先是被观察者接口：



/**
 *  被观察者的抽象
 * @author Jet
 *
 */
publ...]]></description><category></category></item><item><title><![CDATA[Java设计模式——责任链模式]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81383474</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81383474</guid><author>Jet_Green</author><pubDate>Fri, 03 Aug 2018 10:51:23 +0800</pubDate><description><![CDATA[今天总结谈一谈java设计模式中的责任链模式。 
应用场景： 
servlet中的filter 
dubbo中的filter 
mybatis中的plugin  
这3个框架在实现责任链方式不尽相同 
UML图 
 
实现的简单demo，这里用公司请假来实例。 
Jet请假，首先由主任审批，不在主任审批范围内就交给上级一直到符合为止。 
请假类：



public class LeaveRequ...]]></description><category></category></item><item><title><![CDATA[子类继承父类各自静态区和非静态区和构造方法的执行顺序]]></title><link>https://blog.youkuaiyun.com/Jet_Green/article/details/81381771</link><guid>https://blog.youkuaiyun.com/Jet_Green/article/details/81381771</guid><author>Jet_Green</author><pubDate>Fri, 03 Aug 2018 09:50:39 +0800</pubDate><description><![CDATA[首先引入一个问题： 
子类在继承父类的时候，父类的静态区，非静态区，构造方法，子类的静态区，非静态区，构造方法的执行顺序是怎么样的。 
写一个简单的demo来验证一下： 
父类：

public class Father {
    static{
        System.out.println(&quot;这是父类静态区&quot;);
    }
    {
        System.out.print...]]></description><category></category></item></channel></rss>