<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Passion_V的小窝窝</title>
    <link>http://www.renyaowei.top</link>
    <description>任耀威,Android,Tale,Java</description>
    <language>zh-CN</language>
    <item>
      <title>ubuntu开启多个redis并安装服务</title>
      <link>http://www.renyaowei.top/article/46</link>
      <content:encoded>&lt;p&gt;复制/etc/redis/redis.conf或者别的conf文件
修改新的配置文件中的端口，有4个端口需要修改
pid  log   port   dbfilename
修改完了保存给权限
sudo chown redis:redis /etc/redis/redis6380.conf&lt;/p&gt;
&lt;p&gt;复制 /etc/init.d/redis-server文件为新的文件
修改里面的配置
也是修改4个地方
DAEMON_ARGS=/etc/redis/redis6380.conf&lt;/p&gt;
&lt;p&gt;NAME=redis-server6380&lt;/p&gt;
&lt;p&gt;DESC=redis-server6380&lt;/p&gt;
&lt;p&gt;RUNDIR=/var/run/redis&lt;/p&gt;
&lt;p&gt;PIDFILE=$RUNDIR/redis-server6380.pid&lt;/p&gt;
&lt;p&gt;修改完保存&lt;/p&gt;
&lt;p&gt;刷新 服务命令
sudo systemctl daemon-reload
然后启动&lt;/p&gt;
&lt;p&gt;sudo systemctl start redis-server6380&lt;/p&gt;
&lt;p&gt;如果报permission拒绝了 记得修改日志文件的权限
redis-cli -p 6380
auth XXXX&lt;/p&gt;</content:encoded>
      <pubDate>Sat, 06 May 2023 07:57:35 GMT</pubDate>
    </item>
    <item>
      <title>cocos加解密脚本</title>
      <link>http://www.renyaowei.top/article/45</link>
      <content:encoded>&lt;p&gt;&lt;a href="http://renyaowei.top/upload/2022/09/1f5s51m4a6inmr0v1o7vqt87h3.zip"&gt;下载地址&lt;/a&gt;&lt;/p&gt;</content:encoded>
      <pubDate>Wed, 21 Sep 2022 08:41:47 GMT</pubDate>
    </item>
    <item>
      <title>cocos加密解密工具</title>
      <link>http://www.renyaowei.top/article/44</link>
      <content:encoded>&lt;p&gt;&lt;a href="http://renyaowei.top/upload/2022/09/1f5s51m4a6inmr0v1o7vqt87h3.zip"&gt;下载地址&lt;/a&gt;&lt;/p&gt;</content:encoded>
      <pubDate>Wed, 21 Sep 2022 08:40:55 GMT</pubDate>
    </item>
    <item>
      <title>cocos加密解密工具</title>
      <link>http://www.renyaowei.top/article/43</link>
      <content:encoded>&lt;p&gt;&lt;a href="http://renyaowei.top/upload/2022/09/1f5s51m4a6inmr0v1o7vqt87h3.zip"&gt;下载地址&lt;/a&gt;&lt;/p&gt;</content:encoded>
      <pubDate>Wed, 21 Sep 2022 08:40:05 GMT</pubDate>
    </item>
    <item>
      <title>cocos密钥丢失</title>
      <link>http://www.renyaowei.top/article/42</link>
      <content:encoded>&lt;p&gt;nodepad++以16进制打开.so文件，搜索main.js&lt;br /&gt;
或者用ida pro打开
&lt;a href="http://renyaowei.top//upload/2022/09/1f5s51m4a6inmr0v1o7vqt87h3.zip"&gt;脚本附件加密解密&lt;/a&gt;&lt;/p&gt;</content:encoded>
      <pubDate>Tue, 20 Sep 2022 06:57:28 GMT</pubDate>
    </item>
    <item>
      <title>cocos密钥</title>
      <link>http://www.renyaowei.top/article/41</link>
      <content:encoded>&lt;p&gt;nodepad++以16进制打开.so文件，搜索main.js&lt;br /&gt;
或者用ida pro打开&lt;/p&gt;</content:encoded>
      <pubDate>Tue, 20 Sep 2022 06:57:01 GMT</pubDate>
    </item>
    <item>
      <title>cocos密钥</title>
      <link>http://www.renyaowei.top/article/40</link>
      <content:encoded>&lt;p&gt;nodepad++以16进制打开.so文件，搜索main.js&lt;br /&gt;
或者用ida pro打开&lt;/p&gt;</content:encoded>
      <pubDate>Tue, 20 Sep 2022 06:55:55 GMT</pubDate>
    </item>
    <item>
      <title>腾讯云升级ipv6</title>
      <link>http://www.renyaowei.top/article/39</link>
      <content:encoded>&lt;p&gt;&lt;a href="https://ipw.cn/doc/ipv6/server/tencent_cloud_cvm_ipv6.html#_4-%E4%B8%BA%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84-ipv6-%E5%9C%B0%E5%9D%80%E5%BC%80%E9%80%9A%E5%85%AC%E7%BD%91"&gt;按照如下地址配置&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在服务器上照着 &lt;a href="https://cloud.tencent.com/document/product/1142/47666#config_ipv6-.E5.B7.A5.E5.85.B7.E9.85.8D.E7.BD.AE.3Ca-id.3D.22open.22.3E.3C.2Fa.3E"&gt;官方文档&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果ping6 ipv6.ipw.cn  显示   connect: Network is unreachable&lt;/p&gt;
&lt;p&gt;执行命令 sudo ip -6 route add default dev eth0
添加路由。。。。。。 临门一脚
当前系统 是Ubuntu 16&lt;/p&gt;</content:encoded>
      <pubDate>Fri, 10 Dec 2021 01:12:06 GMT</pubDate>
    </item>
    <item>
      <title>cocoscreator自定义吐司</title>
      <link>http://www.renyaowei.top/article/38</link>
      <content:encoded>&lt;pre&gt;&lt;code&gt; createTips(str) {
        let spineNode = new cc.Node();
        spineNode.name = 'tipsNode';
        spineNode.setPosition(0, 0);
        // spineNode.parent = this.node;
        spineNode.parent = cc.find(&amp;quot;Canvas&amp;quot;);
        /*  let sprite = spineNode.addComponent(cc.Sprite);
          sprite.spriteFrame = this.tipsBg;*/
        let ctx = spineNode.addComponent(cc.Graphics);
        ctx.fillColor = new cc.Color().fromHEX('#00000066');
        let width = str.length * 50;
        if (width &amp;lt; 300) {
            width = 300;
        }
        ctx.rect(-(width / 2), -50, width, 100);
        ctx.fill();
        let node = new cc.Node;
        node.parent = spineNode;
        let label = node.addComponent(cc.Label);
        label.string = str;
        spineNode.opacity = 0;
        cc.tween(spineNode).by(0.5, {opacity: 255}).delay(0.5).to(0.5, {y: 50, opacity: 0}).call(() =&amp;gt; {
            console.log(&amp;quot;完事&amp;quot;)
            spineNode.removeFromParent(true);
        }).start();
        /*   spineNode.runAction(cc.sequence(cc.fadeIn(0.1), cc.delayTime(0.5), cc.spawn(cc.moveBy(0.5, 0, 50), cc.fadeOut(0.5)), cc.callFunc(() =&amp;gt; {
               spineNode.removeFromParent(true)
           })));*/

    },
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <pubDate>Tue, 02 Jun 2020 02:20:43 GMT</pubDate>
    </item>
    <item>
      <title>cocoscreator打包原生ios13锁屏切回来黑屏</title>
      <link>http://www.renyaowei.top/article/37</link>
      <content:encoded>&lt;p&gt;1、修改cocos2dlibs工程下platform-&amp;gt;ios-&amp;gt;CCEGALview-ios.mm文件
在swapBuffer方法中添加&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;  if ([EAGLContext currentContext] != _context) {
        if (![EAGLContext setCurrentContext:_context]) {
            NSLog(@&amp;quot;can not set current context&amp;quot;);
        }
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2、
在.h文件中添加变量&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;    BOOL                    _isBackground;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在该文件中添加方法&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;-(void) setIsBackground:(BOOL) flag
{
_isBackground = flag;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在layoutSubviews方法中判断&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;  if(_isBackground){
    return;
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在前后台方法中添加&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;- (void)applicationDidEnterBackground:(UIApplication *)application {
    /*
     Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
     If your application supports background execution, called instead of applicationWillTerminate: when the user quits.
     */
    [[SDKWrapper getInstance] applicationDidEnterBackground:application];
    app-&amp;gt;applicationDidEnterBackground();
//     [[TongJi getInstance]houtai];
    NSLog(@&amp;quot;launcing......houtai1111111&amp;quot;);

    auto glview = (__bridge CCEAGLView *)cocos2d::Application::getInstance()-&amp;gt;getView();
    [glview setIsBackground:YES];
    
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    /*
     Called as part of  transition from the background to the inactive state: here you can undo many of the changes made on entering the background.
     */
    [[SDKWrapper getInstance] applicationWillEnterForeground:application];
    app-&amp;gt;applicationWillEnterForeground();
//    [[TongJi getInstance]qiantai];
    NSLog(@&amp;quot;launcing......qiantai&amp;quot;);
    auto glview = (__bridge CCEAGLView *)cocos2d::Application::getInstance()-&amp;gt;getView();
    [glview setIsBackground:NO];
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;creator官方修改&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt; UIApplicationState state = [[UIApplication sharedApplication] applicationState];
    if (state == UIApplicationStateBackground)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;https://github.com/cocos-creator/cocos2d-x-lite/pull/1918&lt;/p&gt;</content:encoded>
      <pubDate>Mon, 02 Mar 2020 12:48:12 GMT</pubDate>
    </item>
    <item>
      <title>NodeJs之Express的Jwt</title>
      <link>http://www.renyaowei.top/article/36</link>
      <content:encoded>&lt;ol&gt;
&lt;li&gt;使用Jwt时用户更改密码或者退出时清除客户端存储的数据&lt;/li&gt;
&lt;li&gt;在后端可以比较请求来源的ip，需要将ip存储到jwt中&lt;/li&gt;
&lt;li&gt;维护一个数据库表，存储用户id和token，比较存储的token和用户请求时的token，当用户操作时更新该 表的数据&lt;/li&gt;
&lt;li&gt;将jwt过期时间设置短点&lt;/li&gt;
&lt;/ol&gt;</content:encoded>
      <pubDate>Thu, 28 Mar 2019 13:51:37 GMT</pubDate>
    </item>
    <item>
      <title>常用库</title>
      <link>http://www.renyaowei.top/article/35</link>
      <content:encoded>&lt;p&gt;com.gyf.barlibrary:barlibrary:2.3.0  状态栏&lt;/p&gt;</content:encoded>
      <pubDate>Fri, 08 Jun 2018 08:02:56 GMT</pubDate>
    </item>
    <item>
      <title>Redis安装需要注意的地方</title>
      <link>http://www.renyaowei.top/article/34</link>
      <content:encoded>&lt;ol&gt;
&lt;li&gt;配置绑定的ip，在配置文件中注释掉&lt;code&gt;bind 127.0.0.1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;protected-mode&lt;/code&gt;  设置为no，关闭保护模式&lt;/li&gt;
&lt;li&gt;&lt;code&gt;daemonize&lt;/code&gt;设置为yes  ，让程序后台运行&lt;/li&gt;
&lt;li&gt;服务器记得开放默认端口6379&lt;/li&gt;
&lt;li&gt;设置密码，在配置文件中添加&lt;code&gt;requirepass&lt;/code&gt; ，为服务器设置密码&lt;/li&gt;
&lt;li&gt;运行命令&lt;code&gt;./src/redis-server /usr/rywfile/redis-4.0.8/redis.conf&lt;/code&gt;  ，意思是记得运行时加上配置文件全路径&lt;/li&gt;
&lt;/ol&gt;</content:encoded>
      <pubDate>Mon, 19 Mar 2018 07:44:42 GMT</pubDate>
    </item>
    <item>
      <title>Centos7安装Redis</title>
      <link>http://www.renyaowei.top/article/33</link>
      <content:encoded>&lt;pre&gt;&lt;code&gt;$ wget http://download.redis.io/releases/redis-4.0.8.tar.gz
$ tar xzf redis-4.0.8.tar.gz
$ cd redis-4.0.8
$ make
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编译完成后是在src目录下，为避免出现一些稀奇古怪的问题，先修改redis.conf配置文件
注释掉 bind 127.0.0.1
把protected-mode 改为 protected-mode no  关闭保护模式
把daemonize no   改为 daemonize yes  使应用在后台运行
把requirepass   取消注释，后面加上你的密码
再启动使用以下命令，指定配置文件运行就好了&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;./redis-server ../redis.conf
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <pubDate>Thu, 01 Mar 2018 06:02:07 GMT</pubDate>
    </item>
    <item>
      <title>Guns添加分页加载更多</title>
      <link>http://www.renyaowei.top/article/32</link>
      <content:encoded>&lt;p&gt;为实现如下图的效果，特此记录一下。
&lt;img src="http://www.renyaowei.top/upload/2018/02/o36ehmktbchbrop4c2u12vv8kn.png" alt="alt" /&gt;
Guns内部自己包含了分页，就是自己动手应用一下。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Dao层接口，重点在参数&lt;strong&gt;page&lt;/strong&gt;，直接写上就好，在mapper中不需要操作，底层自动实现。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class="language-java"&gt;List&amp;lt;Project&amp;gt; selectMapsByConditions(@Param(&amp;quot;page&amp;quot;) Page&amp;lt;Project&amp;gt; page,@Param(&amp;quot;condition&amp;quot;) String condition, @Param(&amp;quot;status&amp;quot;) Integer status);
&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="2"&gt;
&lt;li&gt;如何使用，以下是直接在控制器中调用的。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class="language-java"&gt;Page&amp;lt;Project&amp;gt; page = new PageFactory&amp;lt;Project&amp;gt;().defaultPage(); 
page.setRecords((projectDao.selectMapsByConditions(page,condition, status), userMgrDao, protoempDao));
return super.packForBT(page);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;给控制器加上@ResponseBody注解，前端即可接收到Json数据。&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-json"&gt;{
	&amp;quot;rows&amp;quot;:[],
	&amp;quot;total&amp;quot;:&amp;quot;0&amp;quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3、请求时必要的参数，其中Project.*为定义的一些全局变量&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;  var pageInfo = {};
    pageInfo['limit'] = Project.defaultLimit;
    pageInfo['offset']=Project.defaultLimit*Project.nowPage;
    pageInfo['sort']='';
    pageInfo['order']='';
    
    ajax = new $ax(&amp;quot;url&amp;quot;, function (respdata) {
        var data=respdata.rows;
        Project.total=respdata.total;
        Project.countPage=Math.ceil(respdata.total/Project.defaultLimit);

        //当前页+1
        Project.nowPage++;
        if (Project.nowPage&amp;lt;Project.countPage){
            //还有下一页
        }else {
             //没有下一页          
        }

        $.each(data, function (index, item) {
       
            /*处理item数据*/

        })

    }, function (data) {
    });
    ajax.set(pageInfo);
    ajax.start();
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <pubDate>Wed, 28 Feb 2018 08:30:11 GMT</pubDate>
    </item>
    <item>
      <title>Centos7下firewalld使用</title>
      <link>http://www.renyaowei.top/article/31</link>
      <content:encoded>&lt;p&gt;1、firewalld的基本使用
启动： systemctl start firewalld
查看状态： systemctl status firewalld
停止： systemctl disable firewalld
禁用： systemctl stop firewalld&lt;/p&gt;
&lt;p&gt;2.systemctl是CentOS7的服务管理工具中主要的工具，它融合之前service和chkconfig的功能于一体。
启动一个服务：systemctl start firewalld.service
关闭一个服务：systemctl stop firewalld.service
重启一个服务：systemctl restart firewalld.service
显示一个服务的状态：systemctl status firewalld.service
在开机时启用一个服务：systemctl enable firewalld.service
在开机时禁用一个服务：systemctl disable firewalld.service
查看服务是否开机启动：systemctl is-enabled firewalld.service
查看已启动的服务列表：systemctl list-unit-files|grep enabled
查看启动失败的服务列表：systemctl --failed&lt;/p&gt;
&lt;p&gt;3.配置firewalld-cmd&lt;/p&gt;
&lt;p&gt;查看版本： firewall-cmd --version
查看帮助： firewall-cmd --help
显示状态： firewall-cmd --state
查看所有打开的端口： firewall-cmd --zone=public --list-ports
更新防火墙规则： firewall-cmd --reload
查看区域信息:  firewall-cmd --get-active-zones
查看指定接口所属区域： firewall-cmd --get-zone-of-interface=eth0
拒绝所有包：firewall-cmd --panic-on
取消拒绝状态： firewall-cmd --panic-off
查看是否拒绝： firewall-cmd --query-panic&lt;/p&gt;
&lt;p&gt;那怎么开启一个端口呢
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent    （--permanent永久生效，没有此参数重启后失效）
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent&lt;/p&gt;</content:encoded>
      <pubDate>Wed, 27 Sep 2017 12:54:08 GMT</pubDate>
    </item>
    <item>
      <title>Centos7下修改ssh登录端口</title>
      <link>http://www.renyaowei.top/article/30</link>
      <content:encoded>&lt;p&gt;http://blog.csdn.net/ausboyue/article/details/53691953&lt;/p&gt;</content:encoded>
      <pubDate>Tue, 26 Sep 2017 12:46:09 GMT</pubDate>
    </item>
    <item>
      <title>Centos7下安装Nginx遇到的一些问题</title>
      <link>http://www.renyaowei.top/article/29</link>
      <content:encoded>&lt;p&gt;首先从官网下载安装包（源码），解压到一个目录下。
进入存放的目录下执行&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;./configure
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可能会出现以下错误提示，没有编译模块&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;checking for OS
 + Linux 3.10.0-123.el7.x86_64 x86_64
checking for C compiler ... not found

./configure: error: C compiler cc is not found

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行命令安装编译模块&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;yum -y install gcc gcc-c++ autoconf automake make
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装完成会提示complete!
再次执行./configure，可能会出现以下提示&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=&amp;lt;path&amp;gt; option.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行命令&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;yum -y install pcre-devel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可能会出下以下提示&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=&amp;lt;path&amp;gt; option
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行命令&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt; yum -y install zlib-devel

&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <pubDate>Sat, 16 Sep 2017 01:45:42 GMT</pubDate>
    </item>
    <item>
      <title>Centos7下修改MySQL5.6用户密码</title>
      <link>http://www.renyaowei.top/article/28</link>
      <content:encoded>&lt;p&gt;&lt;img src="http://www.renyaowei.top/upload/2017/09/sn79sgc8eggm4pov54btkrh576.png" alt="alt" /&gt;&lt;/p&gt;</content:encoded>
      <pubDate>Mon, 11 Sep 2017 07:29:47 GMT</pubDate>
    </item>
    <item>
      <title>System.arraycopy()方法的使用</title>
      <link>http://www.renyaowei.top/article/26</link>
      <content:encoded>&lt;pre&gt;&lt;code class="language-javascript"&gt;public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;从指定源数组中复制一个数组，复制从指定的位置开始，到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的目标数组，数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPos 到 srcPos+length-1 之间的组件被分别复制到目标数组中的 destPos 到 destPos+length-1 位置。&lt;/p&gt;
&lt;p&gt;如果参数 src 和 dest 引用相同的数组对象，则复制的执行过程就好像首先将 srcPos 到 srcPos+length-1 位置的组件复制到一个带有 length 组件的临时数组，然后再将此临时数组的内容复制到目标数组的 destPos 到 destPos+length-1 位置一样。&lt;/p&gt;
&lt;p&gt;If 如果 dest 为 null，则抛出 NullPointerException 异常。&lt;/p&gt;
&lt;p&gt;如果 src 为 null, 则抛出 NullPointerException 异常，并且不会修改目标数组。&lt;/p&gt;
&lt;p&gt;否则，只要下列任何情况为真，则抛出 ArrayStoreException 异常并且不会修改目标数组：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;src 参数指的是非数组对象。&lt;/li&gt;
&lt;li&gt;dest 参数指的是非数组对象。&lt;/li&gt;
&lt;li&gt;src 参数和 dest 参数指的是那些其组件类型为不同基本类型的数组。&lt;/li&gt;
&lt;li&gt;src 参数指的是具有基本组件类型的数组且 dest 参数指的是具有引用组件类型的数组。&lt;/li&gt;
&lt;li&gt;src 参数指的是具有引用组件类型的数组且 dest 参数指的是具有基本组件类型的数组。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;否则，只要下列任何情况为真，则抛出 IndexOutOfBoundsException 异常，并且不会修改目标数组：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;srcPos 参数为负。&lt;/li&gt;
&lt;li&gt;destPos 参数为负。&lt;/li&gt;
&lt;li&gt;length 参数为负。&lt;/li&gt;
&lt;li&gt;srcPos+length 大于 src.length，即源数组的长度。&lt;/li&gt;
&lt;li&gt;destPos+length 大于 dest.length，即目标数组的长度。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;否则，如果源数组中 srcPos 到 srcPos+length-1 位置上的实际组件通过分配转换并不能转换成目标数组的组件类型，则抛出 ArrayStoreException 异常。在这种情况下，将 k 设置为比长度小的最小非负整数，这样就无法将 src[srcPos+k] 转换为目标数组的组件类型；当抛出异常时，从 srcPos 到 srcPos+k-1 位置上的源数组组件已经被复制到目标数组中的 destPos 到 destPos+k-1 位置，而目标数组中的其他位置不会被修改。（因为已经详细说明过的那些限制，只能将此段落有效地应用于两个数组都有引用类型的组件类型的情况。）&lt;/p&gt;
&lt;p&gt;参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;src - 源数组。&lt;/li&gt;
&lt;li&gt;srcPos - 源数组中的起始位置。&lt;/li&gt;
&lt;li&gt;dest - 目标数组。&lt;/li&gt;
&lt;li&gt;destPos - 目标数据中的起始位置。&lt;/li&gt;
&lt;li&gt;length - 要复制的数组元素的数量。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;抛出异常：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IndexOutOfBoundsException - 如果复制会导致对数组范围以外的数据的访问。&lt;/li&gt;
&lt;li&gt;ArrayStoreException - 如果因为类型不匹配而使得无法将 src 数组中的元素存储到 dest 数组中。&lt;/li&gt;
&lt;li&gt;NullPointerException - 如果 src 或 dest 为 null。&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <pubDate>Fri, 01 Sep 2017 01:28:12 GMT</pubDate>
    </item>
    <item>
      <title>记一次jenkins持续集成部署遇到的问题</title>
      <link>http://www.renyaowei.top/article/25</link>
      <content:encoded>&lt;p&gt;前提安装好jdk和tomcat环境，以后的步骤是按&lt;a href="http://www.cnblogs.com/jwrwst/p/6520114.html"&gt;这篇文章&lt;/a&gt;来的。&lt;/p&gt;
&lt;h4&gt;1、构建时报找不到pom.xml文件&lt;/h4&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;The goal you specified requires a project to execute but there is no POM in this directory (/root/.jenkins/jobs/ssmimg/workspace). Please verify you invoked Maven from the correct directory.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;解决办法：在项目配置中写完整工程名，可能有两个地方需要改
&lt;img src="http://www.renyaowei.top/upload/2017/08/49pvf4mg0gjpcpi7fshdh3ss4a.png" alt="" /&gt;&lt;/p&gt;
&lt;h4&gt;2.构建成功结果没有自动部署到容器&lt;/h4&gt;
&lt;p&gt;如下图所示
&lt;img src="http://www.renyaowei.top/upload/2017/08/q87d1b6cveg0nr4f4mnkt80p5n.png" alt="alt" /&gt;
部署成功如下图
&lt;img src="http://www.renyaowei.top/upload/2017/08/tajveln65siu4o5s3dei2g35rg.png" alt="alt" /&gt;
解决办法：在工程的pom文件中添加依赖&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;	&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.apache.tomcat.maven&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;tomcat7-maven-plugin&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;2.2&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
			&amp;lt;type&amp;gt;maven-plugin&amp;lt;/type&amp;gt;
		&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一定要特别注意&lt;strong&gt;scope&lt;/strong&gt;，否则的话，将出现以下的问题&lt;/p&gt;
&lt;h4&gt;3.Deploying失败并且tomcat的logs有如下异常&lt;/h4&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;Caused by: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以下是jenkins输出的异常&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;Deploying /root/.jenkins/jobs/ssmimg/workspace/ssmimg/target/ssmimg.war to container Tomcat 7.x Remote with context ssmimg
  Redeploying [/root/.jenkins/jobs/ssmimg/workspace/ssmimg/target/ssmimg.war]
  Undeploying [/root/.jenkins/jobs/ssmimg/workspace/ssmimg/target/ssmimg.war]
  Deploying [/root/.jenkins/jobs/ssmimg/workspace/ssmimg/target/ssmimg.war]
ERROR: Build step failed with exception
org.codehaus.cargo.container.ContainerException: Failed to deploy [/root/.jenkins/jobs/ssmimg/workspace/ssmimg/target/ssmimg.war]
	at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:106)
	at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:184)
	at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:77)
	at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147)
	at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117)
	at hudson.FilePath.act(FilePath.java:998)
	at hudson.FilePath.act(FilePath.java:976)
	at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114)
	at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93)
	at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64)
	at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:735)
	at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:676)
	at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072)
	at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:621)
	at hudson.model.Run.execute(Run.java:1760)
	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:542)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:405)
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The Tomcat Manager responded &amp;quot;FAIL - Deployed application at context path /ssmimg but context failed to start
&amp;quot; instead of the expected &amp;quot;OK&amp;quot; message
	at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:715)
	at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:761)
	at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:312)
	at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:101)
	... 18 more
org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The Tomcat Manager responded &amp;quot;FAIL - Deployed application at context path /ssmimg but context failed to start
&amp;quot; instead of the expected &amp;quot;OK&amp;quot; message
	at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:715)
	at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:761)
	at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:312)
	at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:101)
	at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:184)
	at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:77)
	at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147)
	at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117)
	at hudson.FilePath.act(FilePath.java:998)
	at hudson.FilePath.act(FilePath.java:976)
	at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114)
	at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93)
	at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64)
	at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:735)
	at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:676)
	at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072)
	at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:621)
	at hudson.model.Run.execute(Run.java:1760)
	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:542)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:405)
Build step 'Deploy war/ear to a container' marked build as failure
Finished: FAILURE
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;解决方法：查看上一步的scope。&lt;/p&gt;
&lt;p&gt;问题解决后一切正常
&lt;img src="http://www.renyaowei.top/upload/2017/08/tajveln65siu4o5s3dei2g35rg.png" alt="alt" /&gt;&lt;/p&gt;</content:encoded>
      <pubDate>Mon, 28 Aug 2017 08:47:35 GMT</pubDate>
    </item>
    <item>
      <title>jenkins</title>
      <link>http://www.renyaowei.top/article/24</link>
      <content:encoded>&lt;p&gt;http://www.cnblogs.com/jwrwst/p/6520114.html&lt;/p&gt;</content:encoded>
      <pubDate>Sun, 27 Aug 2017 14:03:38 GMT</pubDate>
    </item>
    <item>
      <title>centos下tomcat的命令</title>
      <link>http://www.renyaowei.top/article/23</link>
      <content:encoded>&lt;p&gt;开启tomcat&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;/usr/tomcat/tomcat7.0/bin/startup.sh

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;关闭tomcat&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt; /usr/tomcat/tomcat7.0/bin/shutdown.sh

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看log， 进入logs目录&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;tail -f catalina.out

&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <pubDate>Sun, 27 Aug 2017 13:24:38 GMT</pubDate>
    </item>
    <item>
      <title>centos安装jdk</title>
      <link>http://www.renyaowei.top/article/22</link>
      <content:encoded>&lt;p&gt;将安装包解压到/usr/java目录下，设置环境变量 vi /etc/profile，  在pscriptrofile中添加以下内容&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-java"&gt;JAVA_HOME=/usr/java/jdk1.8.0_144（对应解压的目录）
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;，然后保存，使用命令让配置生效&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;source /etc/profile

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检验jdk的有效性&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;java -version

&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <pubDate>Sun, 27 Aug 2017 11:47:55 GMT</pubDate>
    </item>
    <item>
      <title>linux命令</title>
      <link>http://www.renyaowei.top/article/21</link>
      <content:encoded>&lt;p&gt;查看系统是多少位的&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;sudo uname --m

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下载文件到指定目录&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;wget  /usr/local/rywfile url
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <pubDate>Sun, 27 Aug 2017 09:40:36 GMT</pubDate>
    </item>
    <item>
      <title>adb命令 查看真机data目录</title>
      <link>http://www.renyaowei.top/article/20</link>
      <content:encoded>&lt;p&gt;&lt;img src="http://www.renyaowei.top/upload/2017/08/pag4467ibog01r1d6fl9gt4fhn.png" style="width: 674px;"&gt;&lt;br&gt;&lt;/p&gt;</content:encoded>
      <pubDate>Sun, 13 Aug 2017 13:49:06 GMT</pubDate>
    </item>
    <item>
      <title>Eclipse下安装MyBatis Generator并自动生成相关文件</title>
      <link>http://www.renyaowei.top/article/19</link>
      <content:encoded>&lt;h1&gt;Eclipse下安装MyBatis Generator并自动生成Dao、Model、Mapping相关文件。&lt;/h1&gt;
&lt;h4&gt;当前所用的Eclipse版本为4.6，首先在Help菜单下打开Eclipse Marketplace。&lt;/h4&gt;
&lt;p&gt;并搜索关键字MyBatis Generator，出来的第一个结果就是，如下图，因我已经安装过了所以显示Installed
&lt;img src="http://www.renyaowei.top/upload/2017/07/ojp8tkh2fagjqqqaoeiii65tpg.png" alt="alt" /&gt;
点击右下角的Install进行安装过程，可能需要一点时间。&lt;/p&gt;
&lt;p&gt;安装完成之后会提示重启eclipse，重启即可。&lt;/p&gt;
&lt;p&gt;如果安装成功则在New对话框中显示如下，
&lt;img src="http://www.renyaowei.top/upload/2017/07/p20h5te6lshn1pg2frou11o4u8.png" alt="alt" /&gt;
这样就成功的安装了该插件。&lt;/p&gt;
&lt;h4&gt;以下的步骤才可以进行。&lt;/h4&gt;
&lt;p&gt;在你的工程里创建generatorConfig.xml文件，
&lt;img src="http://www.renyaowei.top/upload/2017/07/vj99idg7ruiptp2endsd501s39.png" alt="alt" /&gt;
创建成功之后如下
&lt;img src="http://www.renyaowei.top/upload/2017/07/vj99idg7ruiptp2endsd501s39.png" alt="alt" /&gt;
打开该文件之后开始配置&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;!DOCTYPE generatorConfiguration PUBLIC &amp;quot;-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN&amp;quot; &amp;quot;http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd&amp;quot;&amp;gt;
&amp;lt;generatorConfiguration&amp;gt;
	&amp;lt;!-- 数据库驱动 --&amp;gt;
	&amp;lt;classPathEntry
		location=&amp;quot;H:\MySql\mysql-connector-java-5.1.39\mysql-connector-java-5.1.39\mysql-connector-java-5.1.39-bin.jar&amp;quot; /&amp;gt;
	&amp;lt;context id=&amp;quot;context1&amp;quot; targetRuntime=&amp;quot;MyBatis3&amp;quot;&amp;gt;
		&amp;lt;commentGenerator&amp;gt;
			&amp;lt;property name=&amp;quot;suppressDate&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;
			&amp;lt;!-- 是否去除自动生成的注释 true：是 ： false:否 --&amp;gt;
			&amp;lt;property name=&amp;quot;suppressAllComments&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;
		&amp;lt;/commentGenerator&amp;gt;
		&amp;lt;!--数据库链接URL，用户名、密码 --&amp;gt;
		&amp;lt;jdbcConnection driverClass=&amp;quot;com.mysql.jdbc.Driver&amp;quot;
			connectionURL=&amp;quot;jdbc:mysql://localhost:3306/ssm&amp;quot; userId=&amp;quot;root&amp;quot;
			password=&amp;quot;root&amp;quot;&amp;gt;
		&amp;lt;/jdbcConnection&amp;gt;

		&amp;lt;javaTypeResolver&amp;gt;
			&amp;lt;property name=&amp;quot;forceBigDecimals&amp;quot; value=&amp;quot;false&amp;quot; /&amp;gt;
		&amp;lt;/javaTypeResolver&amp;gt;
		&amp;lt;!-- 生成模型的包名和位置 --&amp;gt;
		&amp;lt;javaModelGenerator targetPackage=&amp;quot;com.ryw.mavendemo.model&amp;quot;
			targetProject=&amp;quot;mavendemo/src/main/java&amp;quot;&amp;gt;

			&amp;lt;property name=&amp;quot;enableSubPackages&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;
			&amp;lt;property name=&amp;quot;trimStrings&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;

		&amp;lt;/javaModelGenerator&amp;gt;
		&amp;lt;!-- 生成映射文件的包名和位置 --&amp;gt;
		&amp;lt;sqlMapGenerator targetPackage=&amp;quot;com.ryw.mavendemo.mapping&amp;quot;
			targetProject=&amp;quot;mavendemo/src/main/java&amp;quot;&amp;gt;
			&amp;lt;property name=&amp;quot;enableSubPackages&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;
		&amp;lt;/sqlMapGenerator&amp;gt;
		&amp;lt;!-- 生成DAO的包名和位置 --&amp;gt;
		&amp;lt;javaClientGenerator type=&amp;quot;XMLMAPPER&amp;quot;
			targetPackage=&amp;quot;com.ryw.mavendemo.IDao&amp;quot; targetProject=&amp;quot;mavendemo/src/main/java&amp;quot;&amp;gt;
			&amp;lt;property name=&amp;quot;enableSubPackages&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;
		&amp;lt;/javaClientGenerator&amp;gt;



		&amp;lt;!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名 --&amp;gt;
		&amp;lt;table tableName=&amp;quot;user_t&amp;quot; domainObjectName=&amp;quot;User&amp;quot;
			enableCountByExample=&amp;quot;false&amp;quot; enableUpdateByExample=&amp;quot;false&amp;quot;
			enableDeleteByExample=&amp;quot;false&amp;quot; enableSelectByExample=&amp;quot;false&amp;quot;
			selectByExampleQueryId=&amp;quot;false&amp;quot;&amp;gt;&amp;lt;/table&amp;gt;
		&amp;lt;table tableName=&amp;quot;student_t&amp;quot; domainObjectName=&amp;quot;Student&amp;quot;
			enableCountByExample=&amp;quot;false&amp;quot; enableUpdateByExample=&amp;quot;false&amp;quot;
			enableDeleteByExample=&amp;quot;false&amp;quot; enableSelectByExample=&amp;quot;false&amp;quot;
			selectByExampleQueryId=&amp;quot;false&amp;quot;&amp;gt;&amp;lt;/table&amp;gt;
	&amp;lt;/context&amp;gt;
&amp;lt;/generatorConfiguration&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;特别要注意targetProject这个属性的值是 工程名/src/包名&lt;/p&gt;
&lt;p&gt;配置好之后在该xml文件上右击 Run As
&lt;img src="http://www.renyaowei.top/upload/2017/07/ob56n4h152iabosngdqbh8dre6.png" alt="alt" /&gt;
配置正确后即可在相应的包下看见生成的各个文件。
&lt;img src="http://www.renyaowei.top/upload/2017/07/3eitutmou6hr0rc1rj5h9hhr4g.png" alt="alt" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.renyaowei.top/upload/2017/07/3hr7uf1b1ai84rgjobj9vtkd9p.rar"&gt;完整工程下载   整合了Spring 、Spring MVC  和MyBatis3 &lt;/a&gt;工程名 mavendemo&lt;/p&gt;</content:encoded>
      <pubDate>Sun, 30 Jul 2017 09:19:00 GMT</pubDate>
    </item>
    <item>
      <title>配合Picasso使用的圆形图片</title>
      <link>http://www.renyaowei.top/article/18</link>
      <content:encoded>&lt;p&gt;利用Picasso的&lt;span style="font-family: 宋体; font-size: 12pt; line-height: 1.42857;"&gt;Transformation显示圆形图片，注意需要添加Picasso的依赖。&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 16px; line-height: 22.8571px;"&gt;package com.ryw.demo;
/**
 * Created by Mr_Shadow on 2017/7/27.
 * &amp;lt;p&amp;gt;
 * 配合Picasso裁剪圆形图片
 */
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
&lt;p&gt;import com.squareup.picasso.Transformation;&lt;/p&gt;
&lt;p&gt;public class CropCircleTransformation implements Transformation {&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@Override
public Bitmap transform(Bitmap source) {
    int size = Math.min(source.getWidth(), source.getHeight());

    int w = (source.getWidth() - size) / 2;
    int h = (source.getHeight() - size) / 2;

    Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(bitmap);
    Paint paint = new Paint();
    BitmapShader shader =
            new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
    if (w != 0 || h!= 0) {
        Matrix matrix = new Matrix();
        matrix.setTranslate(-w, -h);
        shader.setLocalMatrix(matrix);
    }
    paint.setShader(shader);
    paint.setAntiAlias(true);

    float r = size / 2f;
    canvas.drawCircle(r, r, r, paint);

    source.recycle();

    return bitmap;
}

@Override
public String key() {
    return &amp;quot;CropCircleTransformation&amp;quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}
&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;font face="宋体"&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="font-family: 宋体; font-size: 12pt; line-height: 1.42857;"&gt;使用方法&lt;/span&gt;&lt;/div&gt;&lt;pre&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 16px; line-height: 22.8571px;"&gt;ImageView iv = (ImageView) findViewById(R.id.iv);
Picasso.with(this).load("https://misc.360buyimg.com/mtd/pc/index/home/images/logo.v2.png") .transform(new CropCircleTransformation()).into(iv);&lt;/span&gt;&lt;span style="font-size: 12pt; line-height: 1.42857;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
                &lt;/font&gt;</content:encoded>
      <pubDate>Thu, 27 Jul 2017 05:38:23 GMT</pubDate>
    </item>
    <item>
      <title>安卓框架收集</title>
      <link>http://www.renyaowei.top/article/16</link>
      <content:encoded>&lt;p&gt;
                    &lt;a href="https://github.com/wasabeef/recyclerview-animators"&gt;Recyclerview条目的动画&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/wasabeef/picasso-transformations" target="_blank"&gt;Picasso中图片样式转换&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.renyaowei.top/article/17" target="_blank"&gt;下拉刷新与上拉加载&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/lsjwzh/MaterialLoadingProgressBar" target="_blank"&gt;圆形进度条带箭头带文字&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/mikepenz/Android-Iconics" target="_blank"&gt;安卓Icons图标库&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/afollestad/material-dialogs" target="_blank"&gt;material-dialogs&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/JoseeRen/Android-ImagesPickers" target="_blank"&gt;图片选择器&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/yushiwo/Universal-Image-Selector" target="_blank"&gt;图片选择器2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/martin90s/ImagePicker" target="_blank"&gt;图片选择器3&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://juejin.im/post/5981a02b6fb9a03c43007ff4"&gt;掘金的一篇文章&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</content:encoded>
      <pubDate>Wed, 26 Jul 2017 07:05:25 GMT</pubDate>
    </item>
    <item>
      <title>网络请求框架OkGo</title>
      <link>http://www.renyaowei.top/article/15</link>
      <content:encoded>&lt;p&gt;
                    &lt;br&gt;&lt;/p&gt;&lt;p&gt;OkGo&lt;span style="color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;"&gt;是封装了 OkHttp 的网络请求框架，比 Retrofit 更简单易用，支持 RxJava，RxJava2，支持自定义缓存，支持批量断点下载管理和批量上传管理功能(来自&lt;a href="https://github.com/jeasonlzy/okhttp-OkGo"&gt;官方简介&lt;/a&gt;)，这是&lt;a href="https://github.com/jeasonlzy/okhttp-OkGo/wiki" target="_blank"&gt;OkGo的wiki。&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;"&gt;&lt;/span&gt;首先添加依赖 &lt;span style="font-size:12.0pt;font-family:
宋体;mso-bidi-font-family:宋体;color:black;mso-font-kerning:0pt;mso-ansi-language:
EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA" lang="EN-US"&gt;compile &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:12.0pt;font-family:宋体;mso-bidi-font-family:宋体;
color:green;mso-font-kerning:0pt;mso-ansi-language:EN-US;mso-fareast-language:
ZH-CN;mso-bidi-language:AR-SA" lang="EN-US"&gt;'com.lzy.net:okgo:3.0.4'，&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.5pt;mso-bidi-font-size:11.0pt;
font-family:等线;mso-ascii-theme-font:minor-latin;mso-fareast-theme-font:minor-fareast;
mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;
mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:
ZH-CN;mso-bidi-language:AR-SA"&gt;新建&lt;span lang="EN-US"&gt;MyApplication类&lt;/span&gt;继承&lt;span lang="EN-US"&gt;Application&lt;/span&gt;，并且在清单文件中注册，在MyApplication的onCreate()方法中完成OkGo的初始化，其实也是对OkHttp的初始化。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;pre&gt;&lt;br&gt;OkHttpClient.Builder builder = &lt;span style="color:#000080;font-weight:bold;"&gt;new &lt;/span&gt;OkHttpClient.Builder();&lt;br&gt;&lt;span style="color:#808080;font-style:italic;"&gt;//配置log打印&lt;br&gt;&lt;/span&gt;HttpLoggingInterceptor loggingInterceptor = &lt;span style="color:#000080;font-weight:bold;"&gt;new &lt;/span&gt;HttpLoggingInterceptor(&lt;span style="color:#008000;font-weight:bold;"&gt;"OkGo"&lt;/span&gt;);&lt;br&gt;&lt;span style="color:#808080;font-style:italic;"&gt;//log打印级别，决定了log显示的详细程度&lt;br&gt;&lt;/span&gt;loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.&lt;span style="color:#660e7a;font-weight:bold;font-style:italic;"&gt;BODY&lt;/span&gt;);&lt;br&gt;&lt;span style="color:#808080;font-style:italic;"&gt;//log颜色级别，决定了log在控制台显示的颜色&lt;br&gt;&lt;/span&gt;loggingInterceptor.setColorLevel(Level.&lt;span style="color:#660e7a;font-weight:bold;font-style:italic;"&gt;INFO&lt;/span&gt;);&lt;br&gt;builder.addInterceptor(loggingInterceptor);&lt;br&gt;&lt;br&gt;&lt;span style="color:#808080;font-style:italic;"&gt;//配置cookie  配置到sp中&lt;br&gt;&lt;/span&gt;builder.cookieJar(&lt;span style="color:#000080;font-weight:bold;"&gt;new &lt;/span&gt;CookieJarImpl(&lt;span style="color:#000080;font-weight:bold;"&gt;new &lt;/span&gt;SPCookieStore(&lt;span style="color:#000080;font-weight:bold;"&gt;this&lt;/span&gt;)));&lt;br&gt;OkGo.&lt;span style="font-style:italic;"&gt;getInstance&lt;/span&gt;().init(&lt;span style="color:#000080;font-weight:bold;"&gt;this&lt;/span&gt;).setOkHttpClient(builder.build())&lt;br&gt;        .setCacheMode(CacheMode.&lt;span style="color:#660e7a;font-weight:bold;font-style:italic;"&gt;REQUEST_FAILED_READ_CACHE&lt;/span&gt;)&lt;br&gt;        .setCacheTime(CacheEntity.&lt;span style="color:#660e7a;font-weight:bold;font-style:italic;"&gt;CACHE_NEVER_EXPIRE&lt;/span&gt;)&lt;br&gt;        .setRetryCount(&lt;span style="color:#0000ff;"&gt;3&lt;/span&gt;);&lt;/pre&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-size:12.0pt;font-family:宋体;mso-bidi-font-family:宋体;
color:green;mso-font-kerning:0pt;mso-ansi-language:EN-US;mso-fareast-language:
ZH-CN;mso-bidi-language:AR-SA" lang="EN-US"&gt;进行GET网络请求&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-size:12.0pt;font-family:宋体;mso-bidi-font-family:宋体;
color:green;mso-font-kerning:0pt;mso-ansi-language:EN-US;mso-fareast-language:
ZH-CN;mso-bidi-language:AR-SA" lang="EN-US"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;pre&gt;OkGo.&amp;lt;String&amp;gt;&lt;span style="font-style:italic;"&gt;get&lt;/span&gt;(&lt;span style="color:#660e7a;font-weight:bold;"&gt;hostname&lt;/span&gt;).params(&lt;span style="color:#008000;font-weight:bold;"&gt;"action"&lt;/span&gt;, &lt;span style="color:#660e7a;font-weight:bold;"&gt;action&lt;/span&gt;).execute(&lt;span style="color:#000080;font-weight:bold;"&gt;new &lt;/span&gt;StringCallback() {&lt;br&gt;    &lt;span style="color:#808000;"&gt;@Override&lt;br&gt;&lt;/span&gt;&lt;span style="color:#808000;"&gt;    &lt;/span&gt;&lt;span style="color:#000080;font-weight:bold;"&gt;public void &lt;/span&gt;onSuccess(Response&amp;lt;String&amp;gt; response) {&lt;br&gt;        &lt;span style="color:#808080;font-style:italic;"&gt;//打印出请求成功的结果&lt;br&gt;&lt;/span&gt;&lt;span style="color:#808080;font-style:italic;"&gt;        &lt;/span&gt;Log.&lt;span style="font-style:italic;"&gt;e&lt;/span&gt;(&lt;span style="color:#660e7a;font-weight:bold;"&gt;TAG&lt;/span&gt;, &lt;span style="color:#008000;font-weight:bold;"&gt;"onSuccess: " &lt;/span&gt;+ response.body().toString());&lt;br&gt;    }&lt;br&gt;});&lt;/pre&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;"&gt;&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;
                &lt;br&gt;&lt;/p&gt;</content:encoded>
      <pubDate>Wed, 26 Jul 2017 06:59:42 GMT</pubDate>
    </item>
    <item>
      <title>Android开发中可用的延时操作</title>
      <link>http://www.renyaowei.top/article/9</link>
      <content:encoded>&lt;h2&gt;在Android的开发中，我们时常需要在一定时间后执行某些操作，比如从Splash页面跳转到主页面，这就需要做延时操作。本文收集常用的延时操作。&lt;/h2&gt;
&lt;p&gt;1、推荐使用&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-java"&gt;  new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //  Do Something
                // 延时2000ms后的操作  比如启动主页面。。。
                startActivity(new Intent(SplashActivity.this, MainActivity.class));
                finish();
            }
        },2000);
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;2、Java提供的Timer&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-java"&gt;  TimerTask task = new TimerTask() {

            @Override
            public void run() {
		// Do Something
            }
        };
        Timer timer = new Timer();
        timer.schedule(task,2000);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3、使用Thread&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-java"&gt; new Thread(new Runnable() {
          @Override
          public void run() {
              try {
                  Thread.sleep(2000);
                  
                   // Do Something
                   
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }

          }
      });
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <pubDate>Sun, 21 May 2017 01:01:39 GMT</pubDate>
    </item>
    <item>
      <title>AndroidStudio使用技巧收集</title>
      <link>http://www.renyaowei.top/article/8</link>
      <content:encoded>&lt;h2&gt;不定期更新的AndroidStudio使用技巧&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;1、当你在 **findViewById()** 的时候，试试按 **fbc** 三个字母
2、匿名内部类快速生成内部类，选中匿名内部类按 **Alt+R** 选择 **Convert Anonymous to Inner...**，在弹出的对话框填入类名，点击确定。
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <pubDate>Sun, 14 May 2017 01:20:14 GMT</pubDate>
    </item>
    <item>
      <title>nginx常用命令</title>
      <link>http://www.renyaowei.top/article/5</link>
      <content:encoded>&lt;h1&gt;因为服务器还需要做asp的测试，所以是windows的 -.-&lt;/h1&gt;
&lt;h2&gt;在nginx目录下，运行cmd&lt;/h2&gt;
&lt;h2&gt;开启 start nginx&lt;/h2&gt;
&lt;h2&gt;关闭 nginx -s stop    或者    nginx -s quit&lt;/h2&gt;
&lt;h3&gt;stop表示立即停止nginx,不保存相关信息&lt;/h3&gt;
&lt;h3&gt;quit表示正常退出nginx,并保存相关信息&lt;/h3&gt;
&lt;h2&gt;重启 nginx -s reload&lt;/h2&gt;</content:encoded>
      <pubDate>Fri, 12 May 2017 14:52:10 GMT</pubDate>
    </item>
    <item>
      <title>分享一下最近在听的音乐</title>
      <link>http://www.renyaowei.top/article/4</link>
      <content:encoded>&lt;p&gt;&lt;iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=350 height=106 src="//music.163.com/outchain/player?type=2&amp;id=28815250&amp;auto=0&amp;height=88"&gt;&lt;/iframe&gt;&lt;/p&gt;</content:encoded>
      <pubDate>Thu, 11 May 2017 12:21:03 GMT</pubDate>
    </item>
  </channel>
</rss>

