<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mengxin1995的博客]]></title><description><![CDATA[心有多大，舞台就有多大。]]></description><link>https://blog.youkuaiyun.com/mengxin1995</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mengxin1995]]></copyright><item><title><![CDATA[Fresco内部诟病引起的初次从网络加载PNG图片失败]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/79293115</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/79293115</guid><author>mengxin1995</author><pubDate>Thu, 08 Feb 2018 19:45:12 +0800</pubDate><description><![CDATA[如题描述，这个问题在项目中存在已久，今天由于自己的功能在首页，初次启动的体验极其糟糕，所以硬下头皮把这个问题解决了。 
 
先来描述一下怎么样一个差的体验吧。就是当我第一次加载网络PNG（当时并不知道是由于这个原因引起的）的时候，就一直显示的是默认的图片，本来按照Fresco的机制是，先显示默认图片，然后去网络加载图片，当图片下载下来就会替换掉原来的默认图片。感谢https://github.co]]></description><category></category></item><item><title><![CDATA[定制阿里代码检查，实现你自己的代码规范检查]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/79142809</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/79142809</guid><author>mengxin1995</author><pubDate>Tue, 23 Jan 2018 17:59:43 +0800</pubDate><description><![CDATA[几个月前，阿里开源了p3c，我也接到了老大交给我的技术改造。是这样的，app是老项目了，半年前接入了ARouter，由于Activity繁多，就没有去全局支持ARouter，这不，技术改造来了，就是定义一个规则，全局的在项目里面搜一遍，所有Activity如果没有@Route(）注解，就把它揪出来。那么来吧。

于是到同性恋交友网站(github)上面，把阿里代码检查(这里附上链接https://]]></description><category></category></item><item><title><![CDATA[Android屏幕适配实战]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/78288648</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/78288648</guid><author>mengxin1995</author><pubDate>Thu, 19 Oct 2017 19:48:06 +0800</pubDate><description><![CDATA[说一下在项目里面遇到的一个问题，和解决思路。 
需求来源于运营小姐姐，她们希望在App的搜索关键字前面加上图片醒目效果图如下布局很简单左边一个SimpleDraweeView，右边一个TextView，图片来自于服务端。小姐姐们希望活动标高度写死，宽度服务端返多少大小的图片就显示多少大小。然后到了一年一度撕逼的时候，撕逼原因来自与SimpleDraweeView只支持宽度高度都写死。撕逼结果当然是]]></description><category></category></item><item><title><![CDATA[Java基础，写一个flat函数]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/77407793</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/77407793</guid><author>mengxin1995</author><pubDate>Sat, 19 Aug 2017 11:16:59 +0800</pubDate><description><![CDATA[有这样一个需求，在一个A类中，有个一对象C数组arr,,对象里面有一个字段叫做x；在一个B类中，有一个对象D数组arr，对象里面有一个字段叫做y；有点晕，我们来看看对应的JavaBean 
A.javapublic class A{
    public List<C> arr = new ArrayList<>();    static class C{
        public int x]]></description><category></category></item><item><title><![CDATA[Java重排序对多线程的影响]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/73380366</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/73380366</guid><author>mengxin1995</author><pubDate>Sat, 17 Jun 2017 14:53:58 +0800</pubDate><description><![CDATA[上一次的发文远在两个月前了，算是经历了一段低糜期，本来打算的更新一直断更到现在。还是好好学习吧，努力的人运气一定不会差的。这一篇文章来谈一谈Java虚拟机对代码优化带来的影响吧。我们知道无论什么语言，最后驱动计算机的那一定是汇编，Java代码编译后会变成一段字节码，通过Java虚拟机的类加载机制ClassLoader加载到虚拟机里面，最后便是把它转化成汇编指令。通过JMM(Java内存模型)实现内存]]></description><category></category></item><item><title><![CDATA[Java并发开篇]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/70980137</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/70980137</guid><author>mengxin1995</author><pubDate>Sat, 29 Apr 2017 17:48:28 +0800</pubDate><description><![CDATA[记得在一个月前的面试中被面试官问道,聊聊你对java并发的理解，当时我只说出了几个关键字，线程池，接着面试官问我volatile实现原理，我在半年前看过一篇博客讲过然而忘记了，很失败(所以一回去就去恶补了原理)，之后面试官问我，有用过concurrent包下的类吗？当时的我一脸懵逼。所以想写一个并发系列文章，主要还是内容的搜集吧。更新应该会挺慢的，慢慢来。1 . volatile关键字修饰变量，保证]]></description><category></category></item><item><title><![CDATA[门面模式]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/63279482</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/63279482</guid><author>mengxin1995</author><pubDate>Sat, 18 Mar 2017 21:02:12 +0800</pubDate><description><![CDATA[门面模式(Facade Pattern)定义：Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.（要求一个子系统的外部与其内部的通讯必须通过一个统一的对象进行。]]></description><category></category></item><item><title><![CDATA[观察者模式]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/62436240</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/62436240</guid><author>mengxin1995</author><pubDate>Thu, 16 Mar 2017 19:37:03 +0800</pubDate><description><![CDATA[定义:定义对象间一种一对多的依赖关系,是的每当一个对象改变状态,则所有依赖于他的对象都会得到通知并被自动更新. 
 我们先来解释一下观察者模式的几个角色名称：
Subject被观察者：定义被观察者必须实现的职责，它必须能够动态地增加、取消观察者。它一般是抽象类或者是实现类，仅仅完成作为被观察这必须实现的职责：管理观察者并通知观察者。
Observer观察者：观察者接收到消息后，机进行update(更]]></description><category></category></item><item><title><![CDATA[组合模式(树状结构)]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/62235820</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/62235820</guid><author>mengxin1995</author><pubDate>Wed, 15 Mar 2017 19:34:39 +0800</pubDate><description><![CDATA[定义:将对象组合成树型结构以表示”部分-整体”的层次结构,是的用户对单个对象的使用具有一致性.我们先来看看组合模式的通用类图 
  几个角色介绍下: 
 1. Component抽象构建角色, 定义参加组合对象的公共方法和属性,可以定义一些默认的行为或熟悉, 
 2. Leaf叶子构件2, 叶子对象,其下再也没有其他的分支,也就是遍历的最小单位. 
 3. ComPosite树枝构件, 它的作用是组]]></description><category></category></item><item><title><![CDATA[自定义View,继承View]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/61421380</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/61421380</guid><author>mengxin1995</author><pubDate>Sat, 11 Mar 2017 19:02:54 +0800</pubDate><description><![CDATA[在我们通常的写自定义View的时候,一定要注意如下几个点. 
1. 让View支持warp_content,通过在onMeasure中设置MeasureSpec来实现 
2. 如果有必要,让你的View支持padding,在onDraw中实现,如果是ViewGroup则要在onMeasure和onLayout中考虑自己的padding和子元素的margin的影响 
3. 尽量不要在View中使用Ha]]></description><category></category></item><item><title><![CDATA[IPC机制的AIDL进阶,结合观察者模式]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/60604802</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/60604802</guid><author>mengxin1995</author><pubDate>Mon, 06 Mar 2017 22:25:24 +0800</pubDate><description><![CDATA[好久没写博客了,最近确实挺忙的,感情也不顺利,一直萎靡着,就这样吧,进入主题了.在半年前写过篇AIDL的入门Demo,< IPC机制第二篇,AIDL实现> 这边的案例实现是,客户端只有去请求服务器,服务器才会返回结果,那假设有这样一个需求:用户不想时不时地去访问,而是希望当服务器有最新咨询的时候能够主动推送到客户端上来,这就是一种典型的观察者模式了,当然里面还有一些问题需要注意的我们等下来总结.1]]></description><category></category></item><item><title><![CDATA[适配器模式]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/54584682</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/54584682</guid><author>mengxin1995</author><pubDate>Tue, 17 Jan 2017 16:54:13 +0800</pubDate><description><![CDATA[定义：将一个类的接口变换成客户端所期待的另一种接口，从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。同样的我们先来看一个类图 
   
 这里主要涉及到三个角色： 
 1 . Target目标角色：该角色定义把其他类转换为何种接口，也就是我们的期望接口。 
 2 . Adaptee源角色：就是被适配的那个接口 
 3 . Adapter适配器角色：适配器模式中的核心角色，其他两个角色都]]></description><category></category></item><item><title><![CDATA[Android中Bitmap, Drawable, Byte,ID之间的转化]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/54581900</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/54581900</guid><author>mengxin1995</author><pubDate>Tue, 17 Jan 2017 12:15:44 +0800</pubDate><description><![CDATA[1 .  Bitmap 转化为 byteByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
byte[] array= out.toByteArray();2 . byte转化为bitmapBitmap bitmap = Bitma]]></description><category></category></item><item><title><![CDATA[策略模式]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/54430049</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/54430049</guid><author>mengxin1995</author><pubDate>Sat, 14 Jan 2017 23:19:24 +0800</pubDate><description><![CDATA[定义：定义一组算法，将每个算法都封装起来，并且使他们之间可以相互换。我们先来看一看他的类图 
  这里有三个角色我们一一来解释一下 
 1. Context 封装角色：它叫做上下文角色，起承上启下封装作用，屏蔽高层模块对策略、算法的直接访问，封装可能存在的变化。 
 2. Strategy抽象策略角色：策略、算法家族的抽象，通常为借口，定义每个策略或算法必须具有的方法和属性。 
 3. Concre]]></description><category></category></item><item><title><![CDATA[装饰模式]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/54019843</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/54019843</guid><author>mengxin1995</author><pubDate>Wed, 04 Jan 2017 15:22:51 +0800</pubDate><description><![CDATA[定义：动态的给一个对象添加一些额外的职责。就增加功能来说，装饰模式相比生成子类更为灵活。 
 我们先来看一下装饰模式的类图吧 
   
  这里有几个角色说明一下1 . Component抽象组件 
  Component是一个接口或者抽象类，就是定义我们最核心的对象，也就是原始对象 
  2 . ConcreteComponent具体组件 
   ConcreteComponent是最核心、最原始]]></description><category></category></item><item><title><![CDATA[责任链模式]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/53983062</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/53983062</guid><author>mengxin1995</author><pubDate>Mon, 02 Jan 2017 22:16:04 +0800</pubDate><description><![CDATA[定义：使多个对象都有机会处理请求，从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链，并沿着这条链传递该请求，知道有对象处理他为止。我们先来看一下类图 
  可以看到我们定义了一个操作接口（Handler），多个有机会处理同一个请求的操作去扩展这个操作接口，有点绕，我们来联系到现实生活中的一个例子就好理解了。比如我们要向公司请求一个福利，那我们可能会去和我们的项目经理说，然后项目经理]]></description><category></category></item><item><title><![CDATA[命令模式]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/53967850</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/53967850</guid><author>mengxin1995</author><pubDate>Sun, 01 Jan 2017 20:02:59 +0800</pubDate><description><![CDATA[定义：将一个请求封装成一个对象，从而让你使用不同的请求把客户端参数化，对请求排队或者记录请求日志，可以提供命令的撤销和恢复功能。我们先来看一下命令模式的一般类图 
  在该类图中，我们可以看到三个角色， 
 1. Receiver接受者角色，该角色就是落实到最后代码实际执行了部分 
 2. Command命令角色，这是命令模式的核心类，我们通过扩展该类来实现多个命令的解耦。把请求方（Invoker）]]></description><category></category></item><item><title><![CDATA[中介者模式]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/53908060</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/53908060</guid><author>mengxin1995</author><pubDate>Wed, 28 Dec 2016 14:08:47 +0800</pubDate><description><![CDATA[定义：用一个中介对象封装一系列的对象交互，中介者使各个对象不惜要显示地相互作用，从而使其耦合松散，而且可以独立的改变他们之间的交互。我们在实际开发中可能会遇到这样的网状的类间耦合关系，如图。 
    
  我们把各个节点想成各个类，连线，表示其耦合关系。那中介这模式其实借鉴了计算机网络中的路由结构，他就将上图关系转化成了，如图 
   
  中间这个节点，就是中介者，从图中可以看出他减少了类间的耦]]></description><category></category></item><item><title><![CDATA[记录在Ubuntu下搭建React Native踩过的坑]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/53814400</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/53814400</guid><author>mengxin1995</author><pubDate>Thu, 22 Dec 2016 14:58:49 +0800</pubDate><description><![CDATA[首先给出React Native中文官网，可想而知，如果真的这么轻松，可就不会来写这篇文章了。 
 第一个坑点，拿到官网第一个例子的时候，会报一个找不到SDK路径这样的错误，解决方法，在项目目录AwesomeProject，下的android文件夹下，新建一个文件，命名为local.properties，在文件里面加上，这样一句话。sdk.dir = /home/mengxin/Android/Sd]]></description><category></category></item><item><title><![CDATA[原型模式]]></title><link>https://blog.youkuaiyun.com/mengxin1995/article/details/53783422</link><guid>https://blog.youkuaiyun.com/mengxin1995/article/details/53783422</guid><author>mengxin1995</author><pubDate>Wed, 21 Dec 2016 13:35:04 +0800</pubDate><description><![CDATA[定义：用原型实例指定创建对象的种类，并且通过拷贝这些原型创建新的对象。我们知道产生一个对象，我们可以通过new关键字，但如果我们是通过对象复制来实现的产生一个对象，那么，这种模式叫做原型模式。 
 先来看一下原型模式的通用代码。public class PrototypeClass implements Cloneable {
    //覆写父类的Object方法
    @Override]]></description><category></category></item></channel></rss>