<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sinat_30552885的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sinat_30552885</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sinat_30552885]]></copyright><item><title><![CDATA[Handler 内存泄漏]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/95623500</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/95623500</guid><author>sinat_30552885</author><pubDate>Sat, 13 Jul 2019 21:39:22 +0800</pubDate><description><![CDATA[内存泄漏
当系统运行到某一时刻，某些占用着一定内存空间的操作或对象在之后都不会使用了，所以此时系统理应将这些内存空间给释放掉给接下来的系统运行使用，但是因为一些特殊的原因，从而导致这部分的内存空间一直无法释放，而这些无法释放的内存空间就会一直无法有效的被系统利用，俗称占着茅坑不拉屎，这一现象称之为内存泄漏。
危害：一次内存泄漏并不会导致太大的问题，但如果不断累积多次内存泄漏，那么系统内存空间中的不...]]></description><category></category></item><item><title><![CDATA[Java 强引用、软引用、弱引用、虚引用]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/95609880</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/95609880</guid><author>sinat_30552885</author><pubDate>Fri, 12 Jul 2019 15:14:43 +0800</pubDate><description><![CDATA[在我的理解中，强引用、软引用、弱引用、虚引用四种引用分别是对象被引用时的状态，在加上一个未引用的状态，总过五种状态，如此当JVM启动GC时，会根据对象的此时引用状态列表(因为一个对象有可能被引用多次)，来决定是否需要将对象进程回收
未引用
只创建了对象，但没有对该对象进行任何引用，当JVM启动GC时，会直接将这个对象进行回收。
例子：
// 此处的代码只是创建了一个Object类型的对象，
// ...]]></description><category></category></item><item><title><![CDATA[绑定服务]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/95454343</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/95454343</guid><author>sinat_30552885</author><pubDate>Thu, 11 Jul 2019 10:48:20 +0800</pubDate><description><![CDATA[定义可绑定式使用的服务
public class LocalService extends Service {

    private final IBinder mBinder = new LocalBinder();

    /**
     * 自定义了一个继承Binder类的类
     */
    public class LocalBinder extends Binder {
...]]></description><category></category></item><item><title><![CDATA[密码散列函数]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/93178016</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/93178016</guid><author>sinat_30552885</author><pubDate>Fri, 21 Jun 2019 11:40:24 +0800</pubDate><description><![CDATA[import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class HashTool {

    /**
     * 给密码散列函数的输入值加一些额外的数据，这些数据称之为盐
  ...]]></description><category></category></item><item><title><![CDATA[RSA 密钥对生成 加密解密 签名验签]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/93069114</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/93069114</guid><author>sinat_30552885</author><pubDate>Thu, 20 Jun 2019 17:15:47 +0800</pubDate><description><![CDATA[import java.security.InvalidKeyException;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAl...]]></description><category></category></item><item><title><![CDATA[Base64编码解码]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/92400909</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/92400909</guid><author>sinat_30552885</author><pubDate>Mon, 17 Jun 2019 14:16:16 +0800</pubDate><description><![CDATA[private static final int SIXTEENBIT = 16;
    private static final int FOURBYTE = 4;
    /**
     * Decodes Base data into octects
     *
     * @param encoded
     *            string containing...]]></description><category></category></item><item><title><![CDATA[AES 密钥生成 加密解密]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/92092293</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/92092293</guid><author>sinat_30552885</author><pubDate>Sat, 15 Jun 2019 15:49:04 +0800</pubDate><description><![CDATA[/**
     * 方法描述：一重解密
     *
     * @param keySeed 字节数组类型的密钥种子的字节
     * @param decryptData 字节数组类型的待解密的数据
     * @return 返回解密结果
     */
    public byte[] decrypt(byte[] keySeed,byte[] decryptData){...]]></description><category></category></item><item><title><![CDATA[DES 密钥生成 加密解密]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/92086475</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/92086475</guid><author>sinat_30552885</author><pubDate>Sat, 15 Jun 2019 14:48:38 +0800</pubDate><description><![CDATA[/**
     * 方法描述：一重解密
     *
     * @param keySeed 字节数组类型的密钥种子的字节
     * @param decryptData 字节数组类型的待解密的数据
     * @return 返回解密结果
     */
    public byte[] decrypt(byte[] keySeed,byte[] decryptData){...]]></description><category></category></item><item><title><![CDATA[ES6 Generator函数 深入应用]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/85680190</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/85680190</guid><author>sinat_30552885</author><pubDate>Fri, 11 Jan 2019 10:06:50 +0800</pubDate><description><![CDATA[前提
异步与同步
通俗的来讲同步就是一段代码会按照顺序不断的执行完，异步则是一段代码分为两部分，先执行一部分，然后会等待一段不确定的时间后，再去执行另外一部分代码。
同步代码：
	var settings = {
  		&amp;amp;amp;amp;amp;amp;amp;amp;quot;async&amp;amp;amp;amp;amp;amp;amp;amp;quot;: true,
  		&amp;amp;amp;amp;amp;amp;amp;amp;quot;crossDomain&am]]></description><category></category></item><item><title><![CDATA[ES6 Generator函数 语法 深入理解]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/85247120</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/85247120</guid><author>sinat_30552885</author><pubDate>Fri, 28 Dec 2018 11:12:58 +0800</pubDate><description><![CDATA[a

]]></description><category></category></item><item><title><![CDATA[ES6 Promise深入理解]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/84895084</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/84895084</guid><author>sinat_30552885</author><pubDate>Fri, 14 Dec 2018 14:02:36 +0800</pubDate><description><![CDATA[Promise

Promise的主要作用是作为一个存储 状态 和 结果 的容器。

Promise类的实例对象有两个内部属性变量（就是不能通过任何方式获取或者赋值的变量）：
1、用于存储执行状态的变量，其固定只有三种值，代表三种不同的状态。本文称为PromiseStatus变量	(Google浏览器控制台上显示的属性变量名)
	a、pending	代表进行中的状态，PromiseStatus变量...]]></description><category></category></item><item><title><![CDATA[ES6 变量解构赋值]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/81588823</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/81588823</guid><author>sinat_30552885</author><pubDate>Tue, 14 Aug 2018 14:56:05 +0800</pubDate><description><![CDATA[公共：解构赋值的规则是，只要等号右边的值不是对象或数组，就先将其转为对象。由于undefined和null无法转为对象，所以对它们进行解构赋值，都会报错。 
公共：解构赋值的本质目的是，在调用解构赋值的区域内声明赋值一个变量出来，即使是函数参数的解构赋值也一样，是在函数内部声明赋值一个变量出来。 
公共：如果解构赋值失败了，且没有默认值，那么变量赋值为undefined 
公共：解构赋值中的等号左...]]></description><category></category></item><item><title><![CDATA[ES6 let和const]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/81532081</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/81532081</guid><author>sinat_30552885</author><pubDate>Sat, 11 Aug 2018 13:19:05 +0800</pubDate><description><![CDATA[前提说明

var a = 1;
let b = 2;
const c = 3;

上面的代码中，每一行代码都可以理解为是对一个变量的初始化，而在我的理解中，一个变量的初始化过程可以分为两个步骤，第一步是声明变量，第二步是给声明好的变量进行赋值。

其中声明变量的步骤就是解释器对代码中 var a  let b  const c  的执行。而给声明的变量进行赋值就是解释器对 = 运算符的执行，将 ...]]></description><category></category></item><item><title><![CDATA[ECMAScript 作用域链]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/81025863</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/81025863</guid><author>sinat_30552885</author><pubDate>Fri, 13 Jul 2018 15:25:14 +0800</pubDate><description><![CDATA[知识点


作用域链是一个对象列表或者链表。该列表或者链表，第一个添加的对象是最后一个被查找，最新添加的对象是最先被查找。
作用域链上的对象有两种。第一种就是全局对象。第二种就是活动对象(activation object)，活动对象中存储着：a、调用函数时传递的参数所组成的类数组对象(arguments)。b、所调用函数中的局部变量。
当JavaScript查找某个变量时，是从作用域链上最新添加...]]></description><category></category></item><item><title><![CDATA[Unicode，UTF-32，UTF-16，UTF-8]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/80770137</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/80770137</guid><author>sinat_30552885</author><pubDate>Mon, 25 Jun 2018 12:18:02 +0800</pubDate><description><![CDATA[欢迎使用Markdown编辑器写博客

本Markdown编辑器使用StackEdit修改而来，用它写博客，将会带来全新的体验哦：


Markdown和扩展Markdown简洁的语法
代码块高亮
图片链接和图片上传
LaTex数学公式
UML序列图和流程图
离线写博客
导入导出Markdown文件
丰富的快捷键






快捷键


加粗    Ctrl + B 
斜体    Ctrl + I...]]></description><category></category></item><item><title><![CDATA[用java语言讲述设计模式---状态模式]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/54971494</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/54971494</guid><author>sinat_30552885</author><pubDate>Fri, 10 Feb 2017 16:10:10 +0800</pubDate><description><![CDATA[状态模式的使用场景
一个对象的行为方法取决于它的状态，并且它必须在运行的时候根据状态改变为它对应的状态的行为
状态模式的重心状态模式的重心不是如何实现各个状态对应的行为方法，而是如何组织、调用、判断这些行为方法对应状态，从而让程序结构更灵活，具有更好的维护性和扩展性。状态模式的简单代码/**
 * 同一个用户可以一直投票，但是会记录其投票总字数，不同的次数对应不同的状体，不同的状态有不同的行为
 *]]></description><category></category></item><item><title><![CDATA[用java语言讲述设计模式---策略与模式]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/54971244</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/54971244</guid><author>sinat_30552885</author><pubDate>Fri, 10 Feb 2017 15:51:20 +0800</pubDate><description><![CDATA[遗留问题
策略模式与缺点（2）的解决
对比Java设计模式编程中的状态模式和策略模式
策略模式使用场景
针对同一种类型的问题处理方法上，只是具体的行为有一定的差别（通过不同的算法来实现同一类型的问题）
对客户隐藏具体策略(算法)的实现细节,彼此完全独立
策略模式的重心
  策略模式的重心不是如何实现算法，而是如何组织、调用这些算法，从而让程序结构更灵活，具有更好的维护性和扩展性。
运行时策略的唯一性]]></description><category></category></item><item><title><![CDATA[Markdown语法使用和对应效果]]></title><link>https://blog.youkuaiyun.com/sinat_30552885/article/details/54966149</link><guid>https://blog.youkuaiyun.com/sinat_30552885/article/details/54966149</guid><author>sinat_30552885</author><pubDate>Fri, 10 Feb 2017 11:32:58 +0800</pubDate><description><![CDATA[输入[TOC]来生成目录：
快捷键
标题
列表
引用
粗体斜体
链接与图片
代码块
分割线与删除线
代码块与语法高亮
表格
脚注
数学公式
UML 图
离线写博客-----------------------------------------I am halving line-----------------------------------------快捷键
加粗    Ctrl + B 
斜]]></description><category></category></item></channel></rss>