<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[www.iokay.cn]]></title><description><![CDATA[小小geek一下，比较花心爱好广泛，但妹子只有一个ヽ(￣▽￣)ﾉ]]></description><link>https://blog.youkuaiyun.com/Ryice</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Ryice]]></copyright><item><title><![CDATA[GOF23-桥接模式]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/88415162</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/88415162</guid><author>Ryice</author><pubDate>Tue, 12 Mar 2019 10:43:52 +0800</pubDate><description><![CDATA[一、桥接模式

定义：将抽象化和实现化脱耦，使得二者可以可以独立的变化。

其中有三个关键字抽象化、实现化、脱耦。

抽象化：一组对象能够有相同的概念联系，那么我们可以使用一个类来描述，如果一些类具有相同的概念联系，那么我们可以使用一个抽象类来描述这就是抽象化，如果更复杂我们可以使用继承用父子来描述。
	实现化：一个类的实例就是这个类的实现化，也是这个类的父类的实现化。
	脱耦：强耦合在编译时就确...]]></description><category></category></item><item><title><![CDATA[GOF23-代理模式]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/88242727</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/88242727</guid><author>Ryice</author><pubDate>Wed, 06 Mar 2019 18:28:38 +0800</pubDate><description><![CDATA[一、初识代理模式

代理模式：控制目标对象的访问。可以详细的控制方法的前置，后置等附加功能。由代理对象引用或者调用目标类。客户端不直接与目标类联系。

举个例子：在Spring aop中事物管理就是一个典型的代理例子，当把单个数据源事物交给spring管理时，我们对数据库的增删改操作时不会写数据库事物的开启、提交和回滚。当我们获取一个Service时是获取的一个代理对象，使用方法时，会做一个前置通...]]></description><category></category></item><item><title><![CDATA[GOF23-适配器模式]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/88187484</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/88187484</guid><author>Ryice</author><pubDate>Tue, 05 Mar 2019 17:08:54 +0800</pubDate><description><![CDATA[适配器模式（wrapper包装者模式）：将一个接口转换成用户所需要的接口，使相互不兼容的接口一起工作。

例子：笔记本、笔记本电源适配器、交流电。 在各个国家的交流电有些是不相同的，如220V、110V，而笔记本电脑充电电压基本为20V（以我的Y7000为例），是不能直接接入充电的，因此笔记本都配置了一个电源适配器。这就用到了适配器模式

适配器模式中常用的角色

Target（目标角色，笔记本...]]></description><category></category></item><item><title><![CDATA[GOF23-原型模式]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/88168092</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/88168092</guid><author>Ryice</author><pubDate>Tue, 05 Mar 2019 10:28:54 +0800</pubDate><description><![CDATA[原型模式：以现有对象为原型，克隆新的一模一样的对象。减少通过构造方法新建对象时分配属性、方法的权限时间。

原型方法实现方式：实现Cloneable接口（标记接口）和Object.clone()方法、序列化实现复制。

一、实现Cloneable接口（标记接口）和Object.clone()方法（在破解单例模式中使用过）

通过java提供的Cloneable接口方式实现原型模式，分为浅克隆和深克...]]></description><category></category></item><item><title><![CDATA[GOF23-建造者模式]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/88087270</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/88087270</guid><author>Ryice</author><pubDate>Sun, 03 Mar 2019 14:29:11 +0800</pubDate><description><![CDATA[建造者模式定义：建造者模式分离了对象子组件的构造（由builder构造）和装配（由director装配）。从而可以构造出复杂的对象。

适用环境：某个对象构建过程比较复杂。实现对象的创建和装配解耦，让客户端使用者只需要关心自己得到的产品而不是关心产品时怎样具体产生的（这一点类似工厂模式。）

一、工厂模式与建造者模式区别及其联系

1.区别

   工厂模式：产生的一个产品是一个整体。 比...]]></description><category></category></item><item><title><![CDATA[GOF23-工厂模式]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/88049278</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/88049278</guid><author>Ryice</author><pubDate>Fri, 01 Mar 2019 17:51:11 +0800</pubDate><description><![CDATA[引申复习面向对象的设计的六大原则，一些设计模式中就体现了这类原则


	单一职责：一个合理的类功能应该只有一个，消除耦合减少需求变化对代码的修改
	
	
	开闭原则：一个类应该对扩展开启，对修改关闭。降低程序模块之间的耦合度，增加扩展性
	
	
	里氏替换原则：子类应该能替换基类。 能够很好的实现功能的调整和升级，并且不影响客户端调用
	
	
	依赖倒换原则：设计依赖于抽象而不是依赖于具体化。
	...]]></description><category></category></item><item><title><![CDATA[GOF23-单例模式]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/88028331</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/88028331</guid><author>Ryice</author><pubDate>Thu, 28 Feb 2019 15:45:58 +0800</pubDate><description><![CDATA[单例模式：在一个应用中一个类对应的对象只有一个。

常见的单例应用：spring中默认bean为单例，JavaWeb中Application对象。在程序中有些类只需要一个对象，比如全局配置信息，公共服务对象。 单例模式能减少资源的浪费，减少程序配置的复杂度。学习了下各个实现单例的思想。

理想的单例默认应有的特性：线程安全，多线程调用效率高，能延迟加载。

一、单例模式实现方式

1.恶汉式


...]]></description><category></category></item><item><title><![CDATA[Java try finally return 执行顺序及其注意事项]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/87608851</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/87608851</guid><author>Ryice</author><pubDate>Mon, 18 Feb 2019 11:52:25 +0800</pubDate><description><![CDATA[在Java异常处理和return嵌套使用时，执行顺序的测试

1.当在try中放置return 

代码：


public class T2 {
    public static void main(String[] args) {
        T3 t3 = new T3();
        t3.say();

    }
}

class T3{
    public String...]]></description><category></category></item><item><title><![CDATA[JAVA基础知识补漏 位运算]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/84445788</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/84445788</guid><author>Ryice</author><pubDate>Sat, 24 Nov 2018 17:37:48 +0800</pubDate><description><![CDATA[今天看HashMap源码的时候看着这么一句return (key == null) ? 0 : (h = key.hashCode()) ^ (h &amp;gt;&amp;gt;&amp;gt; 16); 有点忘了，毕竟现在一直写业务代码，很少遇到这种代码。  这里复习一下位运算。 （这句的意思是 key为null 直接返回 0  不为null 先取hashcode  然后计算 ^ 右边的值 h无符号右移16位。 然后...]]></description><category></category></item><item><title><![CDATA[zookeeper基础及搭建环境]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/82670182</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/82670182</guid><author>Ryice</author><pubDate>Sat, 29 Sep 2018 14:36:01 +0800</pubDate><description><![CDATA[zookeeper是一个分布式协调服务，主要为分布式程序提供协调服务。

zookeeper为分布式程序服务那么自己本身也要高可用，所以zookeeper本身就是分布式程序，只要半数节点存活那么zookeeper就可以提供正常服务，那么推荐部署奇数台机器
	zookeeper基本提供主从协调、动态感知服务节点上下线，统一配置管理，分布式共享锁等。这么多功能总结起来就两点，管理用户程序提交过来的数据...]]></description><category></category></item><item><title><![CDATA[echarts 前端轻量级封装插件echelper]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/81611168</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/81611168</guid><author>Ryice</author><pubDate>Sun, 12 Aug 2018 22:15:05 +0800</pubDate><description><![CDATA[Echarts官网http://echarts.baidu.com/

Echarts为百度开源的图形展示js插件，丰富的图表，齐全的api文档。使得上手非常的快。因为提供的 功能非常丰富所以相应的配置文件便很多， 当一个界面有多个图表时，option配置便显得臃肿不利于维护和快速开发。这个插件的初衷是为了快速生成图形，并且图形风格统一，增强echarts的工具栏等。可以做到前后端分离，后端提供相...]]></description><category></category></item><item><title><![CDATA[RequireJS认识及使用]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/80378988</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/80378988</guid><author>Ryice</author><pubDate>Sun, 27 May 2018 12:56:52 +0800</pubDate><description><![CDATA[    最近在写前端这个坑，因为使用大量的框架并且自己的写的工具js也需要引入导致界面臃肿并且稍不注意就会出现冲突。所以使用requirejs来解决这个问题。    AMD规范：全称是Asynchronous Module Definition，即异步模块加载机制。从它的规范描述页面看，AMD很短也很简单，但它却完整描述了模块的定义，依赖关系，引用关系以及加载机制。requirejs就实现了这个规...]]></description><category></category></item><item><title><![CDATA[jquery常用api及其例子]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/79493124</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/79493124</guid><author>Ryice</author><pubDate>Thu, 10 May 2018 11:52:58 +0800</pubDate><description><![CDATA[$(window).resize(); window窗口改变检测函数； var _width = document.documentElement.clientWidth; var _height = document.documentElement.clientHeight; jq得到窗口大小 不是屏幕大小hovertypeof 查看js类型网上大多数文章都提供的方法都是无效的，建议使用方法二：...]]></description><category></category></item><item><title><![CDATA[Mondrian学习（3）：整合到spring web项目中]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/80185905</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/80185905</guid><author>Ryice</author><pubDate>Thu, 03 May 2018 21:23:24 +0800</pubDate><description><![CDATA[    前面讲了通过类似jdbc编程的方式来使用mondrian多维分析工具，显然有很多弊端。    1.这种方式通过字符串中的key-value把数据库连接，模型文件，数据库驱动都写死了。并且每次获取一个连接都要getconnetion一次。    2.一般的java web项目通过spring管理各种bean 包括数据源。这里得到连接的方法不能很好的与spring连起来    3.项目中有多个...]]></description><category></category></item><item><title><![CDATA[Mondrian学习（2）：什么是mondrian]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/80113650</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/80113650</guid><author>Ryice</author><pubDate>Fri, 27 Apr 2018 23:23:37 +0800</pubDate><description><![CDATA[    mondrian是一个开放源码的Rolap服务器，使用java技术开发。它实现了xmla和jolap规范。并且支持由Microsoft，Hypeion等公司研究的多维查询表达式MDX(类似于sql)。    到目前关于Mondrian的资料还是相对较少。多数就是对官网上的demo基础的使用并没有具体在项目中的具体集成和使用。    Mondrian下载：https://sourceforg...]]></description><category></category></item><item><title><![CDATA[Mondrian学习（1）：了解Olap]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/80109326</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/80109326</guid><author>Ryice</author><pubDate>Fri, 27 Apr 2018 18:37:54 +0800</pubDate><description><![CDATA[    前言：一直对大数据相关的东西比较感兴趣，但是又没有太多的时间系统学习，之前又一直在补JAVA的基础知识（谁叫大学耍hi了，都学得不咋样，所以欠下的都是要还的！！！）。这段时间负责的一个项目正好要用相关的技术，可以在公司明目张胆的给自己点技能树了。        联机实时分析（Olap，OnlineAnalytical Processing）是一种多维分析的解决方案。    多维分析是一种数...]]></description><category></category></item><item><title><![CDATA[java socket基本理解 聊天室demo]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/80007320</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/80007320</guid><author>Ryice</author><pubDate>Thu, 19 Apr 2018 17:57:18 +0800</pubDate><description><![CDATA[项目demo 点击打开链接TCP三次握手的过程如下：(1)客户端发送SYN（SEQ=x）报文给服务器端，进入SYN_SEND状态。(2)服务器端收到SYN报文，回应一个SYN （SEQ=y）ACK(ACK=x+1）报文，进入SYN_RECV状态。(3)客户端收到服务器端的SYN报文，回应一个ACK(ACK=y+1）报文，进入Established状态。TCP四次挥手(1) 某个应用进程首先调用cl...]]></description><category></category></item><item><title><![CDATA[weblogic12  javassit  hibernate 踩坑实践]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/79931083</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/79931083</guid><author>Ryice</author><pubDate>Fri, 13 Apr 2018 17:14:06 +0800</pubDate><description><![CDATA[    今天接到通知需要给某个地方上系统，对方的环境以及搭建好了weblogic12c ，本地开发测试是11g 10g和tomcat，所以需要拿到12c环境上测试一些。 果不其然报错了    HHH000142: java.lang.ClassCastException: Xxxxxxxxxxxxxxxxxxxxxxxxx.Org_$$_javassist_111 cannot be cast t...]]></description><category></category></item><item><title><![CDATA[Java简单分析程序运行内存]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/79894454</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/79894454</guid><author>Ryice</author><pubDate>Wed, 11 Apr 2018 17:57:27 +0800</pubDate><description><![CDATA[    先来随便拿一个Userinfo对象package com.yanghs.test.clone;

import com.yanghs.common.entity.hbm.UserRole;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Collection;

/**
 * @author...]]></description><category></category></item><item><title><![CDATA[Collection和Map常用类和特征，及其特点]]></title><link>https://blog.youkuaiyun.com/Ryice/article/details/79888118</link><guid>https://blog.youkuaiyun.com/Ryice/article/details/79888118</guid><author>Ryice</author><pubDate>Tue, 10 Apr 2018 21:50:44 +0800</pubDate><description><![CDATA[1.ArrayList    底层实现为数组，默认初始化话大小为10（1.7是在add的时候默认初始化的） ，扩容为原来的两倍，所以若果知道所要存的大概的大小就初始化时给个初始化大小，避免数组扩容损失性能，具备数组的特点，查找添加数据快，删除插入数据慢private static final int DEFAULT_CAPACITY = 10;2.LikedList    底层实现为双向链表，具备...]]></description><category></category></item></channel></rss>