<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小黄鸭会发光 的博客]]></title><description><![CDATA[所有的梦想都会因为努力不期而遇]]></description><link>https://blog.youkuaiyun.com/zf1228</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zf1228]]></copyright><item><title><![CDATA[原码, 反码, 补码 详解]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/78715503</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/78715503</guid><author>zf1228</author><pubDate>Tue, 05 Dec 2017 00:42:39 +0800</pubDate><description><![CDATA[本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助!     一. 机器数和真值  在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.  1、机器数  一个数在计算机中的二进制表示形式,  叫做这个数的机器]]></description><category></category></item><item><title><![CDATA[链式二叉树]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/77073277</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/77073277</guid><author>zf1228</author><pubDate>Thu, 10 Aug 2017 20:37:56 +0800</pubDate><description><![CDATA[关于二叉树的基本性质和结构特征，在此不做详细说明，因为网上的文章非常多，可以查阅
本文主要以泛型实现链式二叉树的基本方法，包括：1. 添加结点 
2. 查找结点 
3. 计算深度 
4. 清空子树 
5. 前序遍历 
6. 中序遍历 
7. 后序遍历
结构示意图结点类 — Node.javapackage tree;/**
 * Created by noonbiteun
 * Date: 2017]]></description><category></category></item><item><title><![CDATA[排序算法---合并排序（Merge Sort）]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/76576097</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/76576097</guid><author>zf1228</author><pubDate>Wed, 02 Aug 2017 13:24:30 +0800</pubDate><description><![CDATA[合并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。合并排序法是将两个（或两个以上）有序表合并成一个新的有序表，即把待排序序列分为若干个子序列，每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 
将已有序的子序列合并，得到完全有序的序列；即先使每个子序列有序，再使子序列段间有序。若将两个有序表合并成一个有序表，称为2-路归并。合并排序也叫归并排序。]]></description><category></category></item><item><title><![CDATA[排序算法---堆排序（Heap Sort）]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/76474403</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/76474403</guid><author>zf1228</author><pubDate>Tue, 01 Aug 2017 01:13:33 +0800</pubDate><description><![CDATA[堆排序算法，基于选择排序的思想，利用堆结构的性质来完成对数据的排序。
  前提准备：
  
  
  什么是堆结构： 
  堆数据结构是一种数组对象，它可以被视为一科完全二叉树结构。它的特点是父结点的值大于（小于）两个子结点的值（分别称为大顶堆和小顶堆） 
  
  堆结构的性质： 
对于第n个结点而言 — 它的父结点下标 i = （n-1）/ 2，左子结点 left = 2n+1，右子结点 rig]]></description><category></category></item><item><title><![CDATA[排序算法---快速排序（Quick Sort）]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/76472291</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/76472291</guid><author>zf1228</author><pubDate>Mon, 31 Jul 2017 21:00:11 +0800</pubDate><description><![CDATA[快速排序和冒泡排序类似，都是基于交换的思想，快速排序对冒泡排序进行了优化，从而更加快速高效（从名字就可以看出应该很牛批…）算法基本思想：
首先选取一个基准值，然后根据这个基准将数组分为了左右两部分
将这左右两个部分中的数据，和基准值做比较，大于基准值的放在右边，小于基准值的放在左边
此时对于基准值而言，已经 “排序 ” 完成，即“比我小的全在我左边，比我大的全在我右边”
然后再对左右两部循环进行同样]]></description><category></category></item><item><title><![CDATA[排序算法---希尔排序（Shell Sort）]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/76472037</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/76472037</guid><author>zf1228</author><pubDate>Mon, 31 Jul 2017 20:58:53 +0800</pubDate><description><![CDATA[前面一口气写了冒泡、选择、插入三个排序算法，感觉今天和他们死磕上了。。。 
  就不该十一点多还看了几眼。。。然后又掉坑里了，大半夜果然的效率低，看个希尔排序然后居然写了1个小时。。。哇，难受
抄起键盘一顿梭，就是干
  严格来说，希尔排序是基于插入排序的思想的，稍后在代码里可以看出，希尔排序又称缩小增量排序，是简单插入排序的增强版本，于1959年由Donald Shell提出。
算法基本思想：
将]]></description><category></category></item><item><title><![CDATA[排序算法---插入排序（Insertion Sort）]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/76341694</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/76341694</guid><author>zf1228</author><pubDate>Sat, 29 Jul 2017 17:28:37 +0800</pubDate><description><![CDATA[查看原文：这里写链接内容算法基本思想：插入排序（Insertion Sort）算法通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。排序流程：
首先对数组的前两个数据进行从小到大排序
然后将第三个数据与前面排好的数据进行比较，把第三个数插入合适的位置
然后将第四个数据插入到前三个数据中
重复此步骤，直到最后一个数插入合适的位置为止，到此排序完成
代码实现import java.util.Ar]]></description><category></category></item><item><title><![CDATA[排序算法---选择排序（Selection Sort）]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/76341372</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/76341372</guid><author>zf1228</author><pubDate>Sat, 29 Jul 2017 17:26:41 +0800</pubDate><description><![CDATA[查看原文：简书地址刚刚写完了冒泡排序，激动的我停不下来，然后马上看了选择排序。 
发现果然踩过前面的坑之后，现在自己学起来会快很多。 
所以各位学习的童鞋，你们对于数据结构和算法方面的学习一定要持之以恒，相信终有一天会练成传说中的无敌神功。哈哈，毕竟这么迟钝的我也在慢慢努力。但是我坚信：“所有的梦想都会因努力而不期而遇”！算法基本思想：从所有序列中先找到最小的，然后放到第一个位置。之后再看剩余元素中]]></description><category></category></item><item><title><![CDATA[排序算法---冒泡排序（Bubble Sort）]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/76340435</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/76340435</guid><author>zf1228</author><pubDate>Sat, 29 Jul 2017 17:19:24 +0800</pubDate><description><![CDATA[这篇博客是我在简书上写的一篇文章，直接从markdown文本拷过来的 
简书地址书上说：“冒泡排序算法是所有排序算法中最简单、最基本的一种”。。。？！ 
哇。。。讲真我花了一个小时才完全领悟（发现自己好蠢呐，也可能是太久没碰算法和数据结构之类的东西了）不多BB，进入正题算法基本思想：对相邻的元素进行两两比较，顺序相反则进行交换，这样，每一趟会将最小或最大的元素“浮”到顶端，最终达到完全有序。就好像一]]></description><category></category></item><item><title><![CDATA[Ajax概述]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/76187103</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/76187103</guid><author>zf1228</author><pubDate>Thu, 27 Jul 2017 14:06:44 +0800</pubDate><description><![CDATA[1、什么是AjaxAjax（Asynchronous JavaScript And XML）翻译成中文就是“异步JavaScript和XML”。即使用JavaScript语言与服务器进行异步交互，传输的数据为XML（当然，传输的数据不只是XML）。Ajax还有一个最大的特点就是，当服务器响应时，不用刷新整个浏览器页面，而是可以局部刷新。这一特点给用户的感受是在不知不觉中完成请求和响应过程。
与服务器]]></description><category></category></item><item><title><![CDATA[单例模式]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/74859616</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/74859616</guid><author>zf1228</author><pubDate>Sun, 09 Jul 2017 13:35:47 +0800</pubDate><description><![CDATA[单例（Singleton）模式是Java中最简单的设计模式之一。这种类型的设计模式属于创建模式，因为此模式提供了创建对象的最佳方法之一。这种模式涉及一个类，它负责创建一个对象，同时确保只创建一个对象。这个类提供了一种方法来访问它的唯一对象，可以直接访问，而不需要实例化类的对象。实现实例我们将创建一个单一对象类 - SingleObject。单个对象（SingleObject）类的构造函数是私有的，并]]></description><category></category></item><item><title><![CDATA[抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/74858520</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/74858520</guid><author>zf1228</author><pubDate>Sun, 09 Jul 2017 12:40:43 +0800</pubDate><description><![CDATA[抽象工厂模式是一个超级工厂，用来创建其他工厂。 这个工厂也被称为工厂的工厂。 这种类型的设计模式属于创建模式，因为此模式提供了创建对象的最佳方法之一。在抽象工厂模式中，接口负责创建相关对象的工厂，而不明确指定它们的类。 每个生成的工厂可以按照工厂模式提供对象。实现实例 
我们将创建一个Shape和Color接口并实现这些接口的具体类。在下一步中，将创建一个抽象工厂类AbstractFactory。在]]></description><category></category></item><item><title><![CDATA[工厂模式]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/74858445</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/74858445</guid><author>zf1228</author><pubDate>Sun, 09 Jul 2017 12:22:30 +0800</pubDate><description><![CDATA[工厂模式是Java中最常用的设计模式之一。 这种类型的设计模式属于创建模式，因为此模式提供了创建对象的最佳方法之一。在工厂模式中，我们没有创建逻辑暴露给客户端创建对象，并使用一个通用的接口引用新创建的对象。 实现方法我们将创建一个Shape接口和实现Shape接口的具体类。 一个工厂类ShapeFactory会在下一步中定义。 
FactoryPatternDemo这是一个演示类，将使用ShapeF]]></description><category></category></item><item><title><![CDATA[设计模式概述]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/74853180</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/74853180</guid><author>zf1228</author><pubDate>Sat, 08 Jul 2017 21:36:00 +0800</pubDate><description><![CDATA[设计模式代表有经验的面向对象软件开发人员使用的最佳实践。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。 这些解决方案是由许多软件开发人员在相当长的时间内通过试错获得的。设计模式四人帮(GOF)是什么?1994年，有四位作者:Erich Gamma，Richard Helm，Ralph Johnson和John Vlissides发表了一本题为《设计模式 - 可重用的面向对象软件元]]></description><category></category></item><item><title><![CDATA[Java实现二维码的生成与识别]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/73106917</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/73106917</guid><author>zf1228</author><pubDate>Mon, 12 Jun 2017 14:54:30 +0800</pubDate><description><![CDATA[二维条形码最早发明于日本，它是用某种特定的几何图形按一定规律在平面（二维方向上）分布的黑白相间的图形记录数据符号信息的，在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念，使用若干个与二进制相对应的几何形体来表示文字数值信息，通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。
所需要的jar包 
QRcode.jar二维码图片类 QrcodeImg.javapackag]]></description><category></category></item><item><title><![CDATA[秒懂Java回调函数]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/72969772</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/72969772</guid><author>zf1228</author><pubDate>Sat, 10 Jun 2017 01:13:38 +0800</pubDate><description><![CDATA[最近写android的蓝牙扫描功能的时候用到回调函数
虽然以前也接触过（如鼠标点击事件之类的），但是一直没太注意，今天决定研究一波。


先说说自己对回调函数的理解，打个比方：
现在有两个人，小问和小答。小问有个数学题不知道怎么算，但是小答的数学很厉害，然后小问准备去请教小答。

小问去问小答“99+1=？”；小答说“我先算一算，算好了我再用短信发给你”；小答算完后，给小问发短信“答]]></description><category></category></item><item><title><![CDATA[Android 通过ADB模拟按键、点击、滑动等事件]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/72847350</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/72847350</guid><author>zf1228</author><pubDate>Fri, 02 Jun 2017 20:18:29 +0800</pubDate><description><![CDATA[这些模拟事件都是通过ADB工具输入input命令实现的
使用说明：（输入文本，键盘事件，点击事件，滑动事件）


 input text  input keyevent  input tap   input swipe    
一：键盘事件
keyevent指的是Android对应的keycode，比如home键的keycode=3，back键的keycode=4


然后使用的]]></description><category></category></item><item><title><![CDATA[Android—java实现apk的静默安装、普通安装]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/72847294</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/72847294</guid><author>zf1228</author><pubDate>Fri, 02 Jun 2017 19:53:40 +0800</pubDate><description><![CDATA[执行静默安装，正常状态下，前台无任何反应，APP在后台完成安装。该功能一般也被称为“后台安装”，实现该功能需要ROOT
执行普通安装，将会弹出确认安装的提示框，与在文件管理器中打开APK文件实现安装
静默安装private void silentInstall(final String path) {
        new Thread(new Runnable() {
            @]]></description><category></category></item><item><title><![CDATA[Java位运算]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/70616992</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/70616992</guid><author>zf1228</author><pubDate>Mon, 24 Apr 2017 17:16:50 +0800</pubDate><description><![CDATA[Java提供的位运算符有：左移( << )、右移( >> ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ )，除了位非( ~ )是一元操作符外，其它的都是二元操作符。]]></description><category></category></item><item><title><![CDATA[线程中断]]></title><link>https://blog.youkuaiyun.com/zf1228/article/details/70471045</link><guid>https://blog.youkuaiyun.com/zf1228/article/details/70471045</guid><author>zf1228</author><pubDate>Sat, 22 Apr 2017 17:29:42 +0800</pubDate><description><![CDATA[使用interrupt（）中断线程
    当一个线程运行时，另一个线程可以调用对应的Thread对象的interrupt（）方法来中断它，该方法只是在目标线程中设置一个标志，表示它已经被中断，并立即返回。这里需要注意的是，如果只是单纯的调用interrupt（）方法，线程并没有实际被中断，会继续往下执行。
    下面一段代码演示了休眠线程的中断:[java] view plain copy pr]]></description><category></category></item></channel></rss>