<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[believe_chen的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/believe_chen</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; believe_chen]]></copyright><item><title><![CDATA[为什么很多编程语言都用0开始编号呢]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/103927994</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/103927994</guid><author>believe_chen</author><pubDate>Fri, 10 Jan 2020 17:18:52 +0800</pubDate><description><![CDATA[我觉得主要原因是有两个：

1.从数组存储的内存模型上来看

“下标”最确切的定义应该是“偏移（offset）”。如果用 a 来表示数组的首地址，a[0] 就是偏移为 0 的位置，也就是首地址，a[k] 就表示偏移 k 个 type_size 的位置，所以计算 a[k] 的内存地址只需要用这个公式：



a[k]_address = base_address + k * type_size

但...]]></description><category></category></item><item><title><![CDATA[JVM 的标记清除垃圾回收算法]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/103927501</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/103927501</guid><author>believe_chen</author><pubDate>Fri, 10 Jan 2020 16:59:37 +0800</pubDate><description><![CDATA[标记-清楚（Mark-Sweep）算法，分为“标记”和“清除”两个阶段：首先标记出所有需要回收的对象，在标记完成后统一回收掉所有被标记的对象。之所以说它是最基础的收集算法，是因为后续的收集算法都是基于这种思路并对其缺点进行改进而得到的。大多数主流虚拟机采用可达性分析算法来判断对象是否存活，在标记阶段，会遍历所有 GC ROOTS，将所有 GC ROOTS 可达的对象标记为存活。只有当标记工作完成后...]]></description><category></category></item><item><title><![CDATA[为什么每个人都要学产品创新]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/103891278</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/103891278</guid><author>believe_chen</author><pubDate>Wed, 08 Jan 2020 14:53:10 +0800</pubDate><description><![CDATA[这一讲我来跟你聊聊“为什么每个人都要学产品创新课”。其实，“产品创新”早就已经深入到我们的日常生活当中了。打个比方，如果把我们的时间倒推十几年，你无法便捷地购买远方的特色产品；无法随随便便叫一份外卖到家里；无法用手机远程控制智能家居；无法在出门时任意选择飞机、高铁、自驾……当你还不关注这一切的时候，它们就已经悄无声息地进入你的生活。当然，如果你只是这些产品的使用者，你只要知道它们是否好用、有用就够...]]></description><category></category></item><item><title><![CDATA[产品的学习（一） -- 人人都是产品经理吗？]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/103889974</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/103889974</guid><author>believe_chen</author><pubDate>Wed, 08 Jan 2020 14:14:42 +0800</pubDate><description><![CDATA[做了几年开发后，觉得如果人生仅仅局限于代码上，或者说某些技术上的执着后会发现，自己的生活和未来少了很多大方向的规划，或者说，一旦有了家庭，一旦超过了某个年龄段，也许这种局限就会越来越大。也是因为自己为了以后的工作规划，我觉得产品的道理，会更适合我。因为我喜欢沟通和交流，我喜欢与不同的技术人员打交道，喜欢各种新产品的使用。。。不说废话了，下面是我学习苏杰老师的一些课程，所获得的一些体悟，希望在这...]]></description><category></category></item><item><title><![CDATA[拼接字符串的简单类]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/103804192</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/103804192</guid><author>believe_chen</author><pubDate>Thu, 02 Jan 2020 14:48:10 +0800</pubDate><description><![CDATA[现在google guava库出了一个joiner类去进行字符串的拼接，大大的节省了拼接时间。

我这里简单的写了一个方法去拼接：


public static String getStringWithSymbol(String symbol, String... txt) {
        List&lt;String&gt; strList = new ArrayList&lt;&gt;(...]]></description><category></category></item><item><title><![CDATA[Recycleview横向滑动，当前显示的item居中且高亮显示]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/103803375</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/103803375</guid><author>believe_chen</author><pubDate>Thu, 02 Jan 2020 14:27:54 +0800</pubDate><description><![CDATA[公司项目最近的一个要求是，显示一系列数据，横向滑动排列，滑到居中位置，就高亮显示，两边半透明。图如下（如红圈所示。整个图画是整个设计，采用的是自定义的recycleview嵌套里面多个recycleview组成的，如果有小伙伴感兴趣的，欢迎私信。当然，后续有时间，我也会继续添加到这里的。）：



横向列表很简单实现，就是使用


RecyclerView的layoutmanager的横向设置...]]></description><category></category></item><item><title><![CDATA[发送朋友圈的popupWindow]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/102777064</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/102777064</guid><author>believe_chen</author><pubDate>Mon, 28 Oct 2019 10:39:46 +0800</pubDate><description><![CDATA[在我们做分享功能的时候，经常会需要自定义一些视图去实现分享，下面是根据公司的要求，写的一个popupwindow，如有不妥的地方，欢迎大家给出意见。


package com.chen.demo;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Bitma...]]></description><category></category></item><item><title><![CDATA[Gallery与ImageSwitcher的结合构建滑动图片]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/102776968</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/102776968</guid><author>believe_chen</author><pubDate>Mon, 28 Oct 2019 10:36:16 +0800</pubDate><description><![CDATA[package com.chen.demo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.os.Bundle;
import android.util....]]></description><category></category></item><item><title><![CDATA[Configuration响应系统设置事件]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/102776923</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/102776923</guid><author>believe_chen</author><pubDate>Mon, 28 Oct 2019 10:33:35 +0800</pubDate><description><![CDATA[以下是对手机切换横竖屏时的响应事件，在此用代码进行简单的演示。


package com.chen.demo.thing;

import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.Menu;
import androi...]]></description><category></category></item><item><title><![CDATA[正则表达式之判断某些link是否为有效的url]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/94014830</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/94014830</guid><author>believe_chen</author><pubDate>Fri, 28 Jun 2019 16:29:11 +0800</pubDate><description><![CDATA[通常android有自己的sdk库判断web url是否为有效的url，


Patterns.WEB_URL.matcher(str).matches()。

这个是对url进行通用的判断，最近根据产品需求，需要添加一些social media link，并验证这些link是否有效且正确。

下面是对各种社交的link进行的一些正则判断：


//判断是否为weibo的网址
private St...]]></description><category></category></item><item><title><![CDATA[emv处理流程]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/90693603</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/90693603</guid><author>believe_chen</author><pubDate>Thu, 30 May 2019 11:08:38 +0800</pubDate><description><![CDATA[1，初始化应用（ Initiate Application），进行应用选择后的第一个过程

这个过程需要进行TSI（ TransactionStatusInformation），TVR（ TerminalVerificationResults），PDOOL（ ProcessingOptionsDataObjectList） DataspecifiedinPDOL，

输出A...]]></description><category></category></item><item><title><![CDATA[emv 认证规范]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/90693551</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/90693551</guid><author>believe_chen</author><pubDate>Thu, 30 May 2019 11:06:55 +0800</pubDate><description><![CDATA[EMV标准是由国际三大银行卡组织--Europay(欧陆卡，已被万事达收购）、MasterCard（万事达卡）和Visa（维萨）共同发起制定的银行卡从磁条卡向智能IC卡转移的技术标准，是基于IC卡的金融支付标准，已成为公认的全球统一标准。

1999年2月，当时的国际三大卡组织共同成立了EMVCo组织，用来管理、维护和完善EMV智能（芯片）卡的规格标准。

EMVCo组织提供EMV LEVEL 1...]]></description><category></category></item><item><title><![CDATA[数据的压缩与解压缩]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/90693313</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/90693313</guid><author>believe_chen</author><pubDate>Thu, 30 May 2019 10:58:59 +0800</pubDate><description><![CDATA[package chen.test;
import chen.util.util;
public class Compress {
    protected static int compress(byte[] src, byte[] dst, int len){
        byte current_byte;
        int dst_len = 0;
        byte ...]]></description><category></category></item><item><title><![CDATA[SHA1-Hash算法原理]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/90693282</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/90693282</guid><author>believe_chen</author><pubDate>Thu, 30 May 2019 10:56:16 +0800</pubDate><description><![CDATA[http://www.burtleburtle.net/bob/hash/doobs.html这个页面提供了对几种流行Hash算法的评价。我们对Hash函数的建议如下：

1.字符串的Hash。最简单可以使用基本的乘法Hash，当乘数为33时，对于英文单词有很好的散列效果（小于6个的小写形式可以保证没有冲突）。复杂一点可以使用FNV算法（及其改进形式），它对于比较长的字符串，在速度和效果...]]></description><category></category></item><item><title><![CDATA[安全加密dukpt]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/90693203</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/90693203</guid><author>believe_chen</author><pubDate>Thu, 30 May 2019 10:54:46 +0800</pubDate><description><![CDATA[DUKPT:(derived unique key per Transaction)每笔交易衍生单玥管理方法

是一种非常安全的密钥管理技术，主要应用于对称密钥加密MAC,PIN等安全数据方面.

主要思想:

 保证每一次交易流程使用唯一的密钥，采用一种不可逆的密钥转换算法，使得无法从当前交易数据信息破解上一次交易密钥。



应用：要求收单行和终端必须是同步支持该密钥管理技术。...]]></description><category></category></item><item><title><![CDATA[android7.0出现android.os.FileUriExposedException: file:///storage/...exposed beyond app through Intent]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/90443565</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/90443565</guid><author>believe_chen</author><pubDate>Wed, 22 May 2019 14:40:04 +0800</pubDate><description><![CDATA[项目中出现这个问题是因为android 7.0版本在打开文件时，会出现该bug，在7.0以上的版本需要特殊的uri。

1.在AndroidManifest.xml中添加provider，如下


 &lt;!-- file provider --&gt;
        &lt;provider
            android:name="android.support.v4.conte...]]></description><category></category></item><item><title><![CDATA[当textview的hint长度大于text长度时的占位]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/90033959</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/90033959</guid><author>believe_chen</author><pubDate>Thu, 09 May 2019 14:40:49 +0800</pubDate><description><![CDATA[如果textview的hint设置了两行，但是text显示时只有两个字符，那么它的下面就会空出一行。

所以只能自定义textview，代码如下：


public class SmartHintTextView extends android.support.v7.widget.AppCompatTextView {

    private CharSequence mSmartHint;
 ...]]></description><category></category></item><item><title><![CDATA[Radiobutton 点击切换取消选中状态]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/89514400</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/89514400</guid><author>believe_chen</author><pubDate>Thu, 25 Apr 2019 15:22:34 +0800</pubDate><description><![CDATA[Radiobutton是一种单选按钮，是由于RadioGroup管理下的一组按钮，所以一旦其中的一个button选中，再点击，就不能取消，想要取消调用Radiobutton的setchecked（boolean isChecked）的方法。

但是连续点击当前的radiobutton的话，只能选中一次和取消选中一次，不能再点击了，因为当把当前的radiobutton取消点击后，其radiogrou...]]></description><category></category></item><item><title><![CDATA[b[n] & 0XFF原因]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/88226602</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/88226602</guid><author>believe_chen</author><pubDate>Wed, 06 Mar 2019 11:37:13 +0800</pubDate><description><![CDATA[在32位的电脑中数字都是以32格式存放的，如果是一个byte(8位)类型的数字，他的高24位里面都是随机数字，低8位

才是实际的数据。java.lang.Integer.toHexString() 方法的参数是int(32位)类型，如果输入一个byte(8位)类型的数字，这个方法会把这个数字的高24为也看作有效位，这就必然导致错误，使用&amp;amp; 0XFF操作，可以把高24位置0以避免这样错误的...]]></description><category></category></item><item><title><![CDATA[Lokalise的使用]]></title><link>https://blog.youkuaiyun.com/believe_chen/article/details/88057904</link><guid>https://blog.youkuaiyun.com/believe_chen/article/details/88057904</guid><author>believe_chen</author><pubDate>Wed, 06 Mar 2019 11:08:40 +0800</pubDate><description><![CDATA[因为我们公司项目已经到后期，所以算是很庞大了。现在需要做优化和重载，其中涉及到多语言适配化方面，不可能将几千个单词再同时翻译成其他各个国家的吧，那任务量太重了。所以我们就使用了Lokalise这个工具，帮助我们适配，但是集成他们的sdk是需要付费的，但确实挺好用的，如果公司能接受，可以推荐。

   官网：https://lokalise.co/

   注册账号后...]]></description><category></category></item></channel></rss>