<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[技术博客主页：http://my.youkuaiyun.com/u010321471]]></description><link>https://blog.youkuaiyun.com/fengsehng2000</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fengsehng2000]]></copyright><item><title><![CDATA[ubuntu安装qq]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84826347</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84826347</guid><author>fengsehng2000</author><pubDate>Sun, 13 Nov 2016 14:27:03 +0800</pubDate><description><![CDATA[安装的版本是国际版 ==## 1.安装依赖库 ##sudo apt-get install libgtk2.0-0:i386sudo apt-get install lib32ncurses5## 2.下载 ##下载链接：http://pan.baidu.com/s/1jIwKdXs http://linux.linuxidc.com/## 3.解压并安装wineqqintl ##定位到该路径，然...]]></description><category></category></item><item><title><![CDATA[Android的log日志知识点剖析]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84826000</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84826000</guid><author>fengsehng2000</author><pubDate>Thu, 10 Nov 2016 19:57:35 +0800</pubDate><description><![CDATA[
log类的继承结构
Log
public final class Log 
extends Object 

java.lang.Object
   ↳    android.util.Log

log日志的常用方法

分为6个级别 ，低级别包括高级别
V 详细（表示所有可能的日志，默认级别） D 调试（表示所有合理的调试用日志） I 信息（表示正常使用时的日志） W 警告（...]]></description><category></category></item><item><title><![CDATA[Hexo写博客]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84825856</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84825856</guid><author>fengsehng2000</author><pubDate>Thu, 10 Nov 2016 11:25:00 +0800</pubDate><description><![CDATA[
hexo配置github



Git

Install hexo-deployer-git.

$ npm install hexo-deployer-git –save



配置_config.yml文件

deploy: 
  type: git 
  repo: repository url 
  branch: [branch] 
  message: [message]



选项...]]></description><category></category></item><item><title><![CDATA[搭建属于自己的技术博客]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84825819</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84825819</guid><author>fengsehng2000</author><pubDate>Thu, 10 Nov 2016 09:27:00 +0800</pubDate><description><![CDATA[
每个程序员都需要自己的博客

本文的博客搭建采用了静态博客技术 。



技术框架是：github pages和hexo



hexo安装



hexo介绍

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown（或其他渲染引擎）解析文章，在几秒内，即可利用靓丽的主题生成静态网页。



安装hexo之前需要先安装git和node.js

参考网站：https://h...]]></description><category></category></item><item><title><![CDATA[Java程序员必须掌握的线程知识-Callable和Future]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84825611</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84825611</guid><author>fengsehng2000</author><pubDate>Tue, 08 Nov 2016 21:11:00 +0800</pubDate><description><![CDATA[
Callable和Future出现的原因

创建线程的2种方式，一种是直接继承Thread，另外一种就是实现Runnable接口。 
这2种方式都有一个缺陷就是：在执行完任务之后无法获取执行结果。 
如果需要获取执行结果，就必须通过共享变量或者使用线程通信的方式来达到效果，这样使用起来就比较麻烦。

而自从Java 1.5开始，就提供了Callable和Future，通过它们可以在任务执行完毕之...]]></description><category></category></item><item><title><![CDATA[Java程序员必备知识-多线程框架Executor详解]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84825573</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84825573</guid><author>fengsehng2000</author><pubDate>Tue, 08 Nov 2016 16:21:00 +0800</pubDate><description><![CDATA[
为什么引入Executor线程池框架



new Thread()的缺点

每次new Thread()耗费性能 
调用new Thread()创建的线程缺乏管理，被称为野线程，而且可以无限制创建，之间相互竞争，会导致过多占用系统资源导致系统瘫痪。 
不利于扩展，比如如定时执行、定期执行、线程中断



采用线程池的优点

重用存在的线程，减少对象创建、消亡的开销，性能佳 
可有效控制最大并发...]]></description><category></category></item><item><title><![CDATA[Java泛型详解]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84818945</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84818945</guid><author>fengsehng2000</author><pubDate>Sun, 25 Sep 2016 23:43:00 +0800</pubDate><description><![CDATA[
由于博客的特殊显示原因，尖括号用（）代替

泛型概述

Java泛型（generics）是JDK 5中引入的一个新特性，允许在定义类和接口的时候使用类型参数（type parameter）。声明的类型参数在使用时用具体的类型来替换。



优缺点

从好的方面来说，泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误，因为编译器可以在编译时刻就发现很多明显的错误。而从不好的...]]></description><category></category></item><item><title><![CDATA[Java程序员的必备知识-类加载机制详解]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84818924</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84818924</guid><author>fengsehng2000</author><pubDate>Sun, 25 Sep 2016 21:31:00 +0800</pubDate><description><![CDATA[
类加载器的概念



类加载器是一个用来加载类文件的类。

Java源代码通过javac编译器编译成类文件。然后JVM来执行类文件中的字节码来执行程序。类加载器负责加载文件系统、网络或其他来源的类文件。



JVM中类加载器的树状层次结构

Java 中的类加载器大致可以分成两类，一类是系统提供的，另外一类则是由 Java 应用开发人员编写的。



引导类加载器（bootstrap clas...]]></description><category></category></item><item><title><![CDATA[程序员必须搞清的概念-equals和=和hashcode的区别]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84818576</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84818576</guid><author>fengsehng2000</author><pubDate>Thu, 22 Sep 2016 23:56:00 +0800</pubDate><description><![CDATA[
1. 首先equals()和hashcode的介绍

equals 方法在非空对象引用上实现相等关系：

 * 自反性：对于任何非空引用值 x，x.equals(x) 都应返回 true。
 * 对称性：对于任何非空引用值 x 和 y，当且仅当 y.equals(x) 返回 true 时，x.equals(y) 才应返回 true。
 * 传递性：对于任何非空引用值 x、y 和 z，如果 x.e...]]></description><category></category></item><item><title><![CDATA[java内存垃圾回收模型]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84818572</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84818572</guid><author>fengsehng2000</author><pubDate>Thu, 22 Sep 2016 23:08:00 +0800</pubDate><description><![CDATA[
一.java的内存模型



介绍如下6个组成部分

1.程序计数器：一块较小内存区域，指向当前所执行的字节码。如果线程正在执行一个Java方法，这个计数器记录正在执行的虚拟机字节码指令的地址，如果执行的是Native方法，这个计算器值为空。

2.Java虚拟机栈：线程私有的，其生命周期和线程一致，每个方法执行时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。

3.本...]]></description><category></category></item><item><title><![CDATA[海量数据处理算法（top K问题）]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84818558</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84818558</guid><author>fengsehng2000</author><pubDate>Thu, 22 Sep 2016 20:20:00 +0800</pubDate><description><![CDATA[
举例

有一个1G大小的一个文件，里面每一行是一个词，词的大小不超过16字节，内存限制大小是1M。返回频数最高的100个词。



思路


首先把文件分开
针对每个文件hash遍历，统计每个词语的频率
使用堆进行遍历
把堆归并起来

具体的方案

1.分治： 
 顺序读文件中，对于每个词c，取hash(c)%2000，然后按照该值存到2000个小文件中。这样每个文件大概是500k左右。

注意...]]></description><category></category></item><item><title><![CDATA[ceil和floor函数的编程实践]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817803</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817803</guid><author>fengsehng2000</author><pubDate>Mon, 19 Sep 2016 11:04:00 +0800</pubDate><description><![CDATA[
ceil（）向上取整



floor向下取整

题目

在最近几场魔兽争霸赛中，赫柏对自己的表现都不满意。 
为了尽快提升战力，赫柏来到了雷鸣交易行并找到了幻兽师格丽，打算让格丽为自己的七阶幻兽升星。 
经过漫长的等待以后，幻兽顺利升到了满星，赫柏很满意，打算给格丽一些小费。



赫柏给小费是有原则的：

1.最终给格丽的钱必须是5的倍数； 
2.小费必须占最终支付费用的5%~10%之间（包...]]></description><category></category></item><item><title><![CDATA[程序员易混淆的10个基础概念]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817793</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817793</guid><author>fengsehng2000</author><pubDate>Mon, 19 Sep 2016 10:46:00 +0800</pubDate><description><![CDATA[
1.java初始化过程：


初始化父类中的静态成员变量和静态代码块 ； 
初始化子类中的静态成员变量和静态代码块 ； 

3.初始化父类的普通成员变量和代码块，再执行父类的构造方法；

4.初始化子类的普通成员变量和代码块，再执行子类的构造方法； 

2.instance是java的二元运算符，用来判断他左边的对象是否为右面类（接口，抽象类，父类）的实例

3.linux的启动过程文件

/s...]]></description><category></category></item><item><title><![CDATA[DFS（深度优先）算法编程实践]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817784</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817784</guid><author>fengsehng2000</author><pubDate>Mon, 19 Sep 2016 10:31:00 +0800</pubDate><description><![CDATA[
DFS定义

DFS（Depth-First-Search）深度优先搜索算法，是搜索算法的一种。是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点 。

特点

每次深度优先搜索的结果必然是图的一个连通分量。深度优先搜索可以从多点发起。如果将每个节点在深度优先搜索过程中的“结束时间”排序(具体做法是创建一个list,然后在每个节点的相邻节点都已被访问的情况下，将该节点加入li...]]></description><category></category></item><item><title><![CDATA[Android的四个基本概念（线程通信和GLSurfaceView）]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817606</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817606</guid><author>fengsehng2000</author><pubDate>Sun, 18 Sep 2016 12:27:00 +0800</pubDate><description><![CDATA[
GLSurfaceView提供了下列特性：

1&amp;gt; 管理一个surface，这个surface就是一块特殊的内存，能直接排版到android的视图view上。 
2&amp;gt; 管理一个EGL display，它能让opengl把内容渲染到上述的surface上。 
3&amp;gt; 用户自定义渲染器(render)。 
4&amp;gt; 让渲染器在独立的线程里运作，和UI线程分离。 
5&amp;gt; 支持按...]]></description><category></category></item><item><title><![CDATA[Java Math的 floor,round和ceil]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817603</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817603</guid><author>fengsehng2000</author><pubDate>Sun, 18 Sep 2016 12:21:00 +0800</pubDate><description><![CDATA[
floor 返回不大于的最大整数 

round 则是4舍5入的计算，入的时候是到大于它的整数

round方法，它表示“四舍五入”，算法为Math.floor(x+0.5)，即将原来的数字加上0.5后再向下取整，所以，Math.round(11.5)的结果为12，Math.round(-11.5)的结果为-11。

ceil 则是不小于他的最小整数

        &amp;lt;script t...]]></description><category></category></item><item><title><![CDATA[android自定义View-继承]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817591</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84817591</guid><author>fengsehng2000</author><pubDate>Sun, 18 Sep 2016 11:42:00 +0800</pubDate><description><![CDATA[
介绍anroid通过继承系统的控件自定义view

方法是通过对OnDraw（）方法进行复写来实现的

举例继承TextView

在textView的背景加上矩形的效果

代码实现



testView的代码

public class TestView extends TextView {

    public TestView(Context context) {
        su...]]></description><category></category></item><item><title><![CDATA[Android的oom详解]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84816795</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84816795</guid><author>fengsehng2000</author><pubDate>Sun, 11 Sep 2016 17:36:00 +0800</pubDate><description><![CDATA[
Android的oom原因



1.资源对象没关闭造成的内存泄露，try catch finally中将资源回收放到finally语句可以有效避免OOM。资源性对象比如：

1-1，Cursor 
1-2，调用registerReceiver后未调用unregisterReceiver() 
1-3，未关闭InputStream/OutputStream 
1-4，Bitmap使用后未调用re...]]></description><category></category></item><item><title><![CDATA[Android优化之ArrayMap]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84816783</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84816783</guid><author>fengsehng2000</author><pubDate>Sun, 11 Sep 2016 15:53:00 +0800</pubDate><description><![CDATA[
ArrayMap的介绍

官方对ArrayMap也有说明：它不是一个适应大数据的数据结构，相比传统的HashMap速度要慢，因为查找方法是二分法，并且当你删除或者添加数据时，会对空间重新调整，在使用大量数据时，效率并不明显，低于50%。

ArrayMap是牺牲时间换空间

ArrayMap和HashMap的区别

1.存储方式不同

HashMap内部有一个HashMapEntry

arra...]]></description><category></category></item><item><title><![CDATA[Android的ANR详解（原因和方案）]]></title><link>https://blog.youkuaiyun.com/fengsehng2000/article/details/84816686</link><guid>https://blog.youkuaiyun.com/fengsehng2000/article/details/84816686</guid><author>fengsehng2000</author><pubDate>Sat, 10 Sep 2016 12:50:00 +0800</pubDate><description><![CDATA[
ANR的定义

在Android上，如果你的应用程序有一段时间响应不够灵敏，系统会向用户显示一个对话框，这个对话框称作应用程序无响应（ANR：Application Not Responding）对话框。用户可以选择“等待”而让程序继续运行，也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr，而让用户每次都要处理这个对话框。因此，在程序里对响应性能的设计很重要，这样系统不会显示...]]></description><category></category></item></channel></rss>