自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (6)
  • 收藏
  • 关注

转载 Java泛型限制

参考:java核心技术一、Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)。Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会在编译

2016-10-21 19:01:26 2212

原创 算法:Flatten Binary Tree to Linked List

Given a binary tree, flatten it to a linked list in-place.For example,Given         1        / \       2   5      / \   \     3   4   6The flattened tree should look like:   

2016-09-13 11:05:03 520

原创 算法:Same Tree

Given two binary trees, write a function to check if they are equal or not.Two binary trees are considered equal if they are structurally identical and the nodes have the same value./** *

2016-09-13 11:02:46 593

原创 算法:Range Sum Query 2D - Immutable

Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).Given matrix = [  [3, 0, 1, 4, 2], 

2016-09-13 11:00:14 438

原创 算法:Binary Tree Level Order Traversal

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).For example:Given binary tree [3,9,20,null,null,15,7],    3   / \  9

2016-09-13 10:57:08 427

原创 算法:Reverse Bits

Reverse bits of a given 32 bits unsigned integer.For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 0011100

2016-09-13 10:52:52 568

原创 算法:Merge Sorted Array

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note:You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold add

2016-09-13 10:50:35 361

原创 Find The First Non Repeated Character In A String : Technical Interview Question

Logic As we know a non repeated character occurs only once in the string , so if we store the number of timeseach alphabet appears in the string , it would help us identifying which characters

2016-09-01 15:36:16 533

转载 开源图片加载工具Fresco使用详解

Fresco简单的使用—SimpleDraweeView百学须先立志—学前须知:在我们平时加载图片(不管是下载还是加载本地图片…..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该呈现正在加载时的图像,当图片加载失败时应该呈现图片加载时的图像,当我们重新加载这张图片时,应该呈现重试时图像,直到这张图片加载完成。这些繁琐并且重复的如果得不到简化的话,那将是一个开发

2016-04-08 11:01:40 2509 2

转载 Android MediaPlayer状态机 接口 方法解析

一. MediaPlayer 状态机 介绍Android MediaPlayer 状态即图例 : 1. Idle (闲置) 状态 和 End (结束) 状态MediaPlayer 对象声明周期 : 从 Idle 到 End 状态就是 MediaPlayer 整个生命周期;-- 生命周期开始 : 进入 Idle (闲置) 状态;

2016-03-30 10:52:34 1361

转载 Android MediaPlayer状态机

对播放音频/视频文件和流的控制是通过一个状态机来管理的。下图显示一个MediaPlayer对象被支持的播放控制操作驱动的生命周期和状态。椭圆代表MediaPlayer对象可能驻留的状态。弧线表示驱动MediaPlayer在各个状态之间迁移的播放控制操作。这里有两种类型的弧线。由一个箭头开始的弧代表同步的方法调用,而以双箭头开头的代表的弧线代表异步方法调用。 通过这张图,我们可以知道

2016-03-24 17:39:12 654

原创 Android自定义刮刮乐控件

Android刮刮乐控件可以利用Xfermode以及PorterDuff来实现,PorterDuff的16种参数效果如下:代码如下:public class GuaView extends View { private Paint mPaint=new Paint(); private Path mPath = new Path(); private B

2016-03-22 15:29:24 799

原创 ViewDragHelper使用介绍

一、概述在自定义ViewGroup中,很多效果都包含用户手指去拖动其内部的某个View(eg:侧滑菜单等),针对具体的需要去写好onInterceptTouchEvent和onTouchEvent这两个方法是一件很不容易的事,需要自己去处理:多手指的处理、加速度检测等等。 好在官方在v4的支持包中提供了ViewDragHelper这样一个类来帮助我们方便的编写自定义ViewGroup。

2016-03-21 12:59:24 499

转载 android坐标系详解

1 背景去年有很多人私信告诉我让说说自定义控件,其实通观网络上的很多博客都在讲各种自定义控件,但是大多数都是授之以鱼,却很少有较为系统性授之于渔的文章,同时由于自己也迟迟没有时间规划这一系列文章,最近想将这一系列文章重新提起来,所以就来先总结一下自定义控件的一个核心知识点——坐标系。很多人可能不屑一顾Android的坐标系,但是如果你想彻底学会自定义控件,我想说了解Android各

2016-03-21 10:20:13 3318

原创 快速排序的非递归实现

直接上代码,递归转换成为非递归主要依靠一个栈来实现。#include#include#include#include#includeusing namespace std;/**把数组分为两部分,轴pivot左边的部分都小于轴右边的部分**/templateint partition(vector& vec,int low,int high){ Comparable

2016-03-18 10:22:42 478

原创 单例模式的七种写法

第一种(懒汉,线程不安全): Java代码  public class Singleton {      private static Singleton instance;      private Singleton (){}        public static Singleton getInstance() {      if (instance == nu

2016-03-16 11:01:05 378

原创 二进制移位实现加减乘除

1. 题目描述如何使用位操作分别实现整数的加减乘除四种运算?2. 解决方案需要熟练掌握一些常见功能的位操作实现,具体为: 常用的等式:-n = ~(n-1) = ~n+1 获取整数n的二进制中最后一个1:n&(-n) 或者 n&~(n-1),如:n=010100,则-n=101100,n&(-n)=000100 去掉整数n的二进制中最后一个1

2016-03-10 00:41:56 14173 1

原创 java序列化

一、序列化和反序列化的概念  把对象转换为字节序列的过程称为对象的序列化。  把字节序列恢复为对象的过程称为对象的反序列化。  对象的序列化主要有两种用途:  1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;  2) 在网络上传送对象的字节序列。  在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服

2016-03-10 00:34:23 381

原创 多线程断点续传实现

设计的几个要点: 1. 把每个下载文件切成若干个块(Block),然后得到一个位图,用来标记每个块的下载情况,并保存到文件里,用于实现断点续传。2. HTTP Header里增加Range,如果服务器返回Cotent-Range 说明服务器支持文件定位,可以实现多线程下载。[c-sharp] view plain copy

2016-03-10 00:30:43 1356 1

转载 Java四种引用详解

从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。1.强引用本章前文介绍的引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就 类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异

2016-03-10 00:20:25 2280

转载 ListView优化总结

在整理前几篇文章的时候有朋友提出写一下ListView的性能优化方面的东西,这个问题也是小马在面试过程中被别人问到的…..今天小马就借此机会来整理下,网上类似的资料蛮多的,倒不如自己写一篇,记录在这个地方,供自己以后使用,不用再翻来翻去的找了,用自己写的…呵呵,不多讲其它了,说起优化我想大家第一反应跟小马一样吧?想到利用ViewHolder来优化ListView数据加载,仅仅就此一条吗?其实不是的

2016-03-02 13:53:21 707

原创 Android动画原理分析

最近在Android上做了一些动画效果,网上查了一些资料,有各种各样的使用方式,于是乘热打铁,想具体分析一下动画是如何实现的,Animation, Animator都有哪些区别等等。首先说Animation(android.view.animation.Animation)对象。无论是用纯java代码构建Animation对象,还是通过xml文件定义Animation,其实最终的结

2016-03-02 13:49:10 5364 8

转载 Java多线程八

1 Lock与ReadWriteLock1.1 Lockpublic interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long time, TimeUnit unit

2016-03-02 13:46:17 504

转载 Java多线程七

1 synchronized的缺陷参考:Java并发编程:Lock   synchronized是java中的一个关键字,也就是说是Java语言内置同步的特性。那么为什么会出现Lock呢?   如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况: 1.

2016-03-02 13:44:39 397

转载 Java多线程六

1 线程池的实现原理及基本类结构  合理利用线程池能够带来三个好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。  Executor线程池框架的最

2016-03-02 13:43:15 446

转载 Java多线程五

1 原子性、可见性和有序性的基本概念  1.原子性(Atomicity)  由Java内存模型来直接保证的原子性变量操作包括read、load、use、assign、store和write六个,大致可以认为基础数据类型的访问和读写是具备原子性的。如果应用场景需要一个更大范围的原子性保证,Java内存模型还提供了lock和unlock操作来满足这种需求,尽管虚拟机未把lock与unl

2016-03-02 13:41:01 395

转载 Java多线程四

1. Java内存模型  在java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享(本文使用“共享变量”这个术语代指实例域,静态域和数组元素)。局部变量(Local variables),方法定义参数(java语言规范称之为formal method parameters)和异常处理器参数(exception handler parameters)不会在线程之间共享,

2016-03-02 13:39:39 332

转载 Java多线程三

1. 基本概念  java.util.Timer:是一个实用工具类,该类用来调度一个线程(schedule a thread),使它可以在将来某一时刻执行。 Java的Timer类可以调度一个任务运行一次,或定期循环运行。 Timer tasks should complete quickly. 即定时器中的操作要尽可能花费短的时间。  java.util.TimerTask:是一

2016-03-02 13:38:31 348

转载 Java多线程二

1. 线程的状态回顾  线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:(原文更好理解,就不翻译了)New When we create a new Thread object using new operator, thread state is New Thread. At this point, thread is not alive and

2016-03-02 13:37:05 354

转载 Java多线程一

1. 基本概念1.1 ProcessA process is a self contained execution environment and it can be seen as a program or application. However a program itself contains multiple processes inside it. Java runti

2016-03-02 13:28:00 351

转载 Android Framework概述

Framework是什么    Framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常Framework都会隐藏main函数等应用程序必须的组件,开发人员只需把精力放在功能代码的实现上。Android Framework    Android Framew

2016-03-02 13:16:49 1259

原创 Activity启动模式(standard singleTop singleTask singleInstance)图文详解

Activity是安卓上最聪明的设计之一,优秀的内存管理让多任务完美运行在最流行的操作系统之上。并不是让Activity在屏幕上启动就完事了,其启动方式也是需要关注的。这个话题的内容很多,其中很重要的就是启动模式(launchMode)。这也是我们这篇博客要讨论的内容。因为不同的Activity有不同的目的。有些被设计成每发送一个intent都单独一个Activity工作,比如邮件客户端中撰写邮件

2016-03-02 13:11:42 502

转载 Android应用程序性能优化

1 背景其实有点不想写这篇文章的,但是又想写,有些矛盾。不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结、我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只给出啥啥啥不能用,啥啥啥该咋用等,却很少有较为系统的进行真正性能案例分析的,大多数都是嘴上喊喊或者死记住规则而已(当然了,这话我自己听着都有些刺耳,实在不好意思,其实关于性能优化的优质博文网上也

2016-02-29 19:26:19 2818

转载 如何保证Android Service在后台不被Kill,或者被Kill后重启

Service组件在android开发中经常遇到,其经常作为后台服务,需要始终保持运行,负责处理一些必要(见不得人)的任务。而一些安全软件,如360等,会有结束进程的功能,如果不做Service的保持,就会被其杀掉。在早些时候,我们可以通过在1. service中重写onStartCommand方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动

2016-02-29 17:52:56 4130

原创 Java线程同步简单总结

1、synchronized把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。1.1 原子性原子性意味着个时刻,只有一个线程能够执行一段代码,这段代码通过一个monitor object保护。从而防止多个线程在更新共享状态时相互冲突。1.2 可见性可见

2016-02-29 17:43:32 466

原创 Java容器类简单总结

1.java容器分类图  说明:左图为简化图(其中粗线部分是重点的容器),右图为完整容器分类图                          2.容器类接口和抽象容器类 2.1 说明  容器接口是容器的基础。使用接口可以将容器的实现与容器接口分开,因而可以使用相同的方法访问容器而不需关心容器具体的数据结构。  同理,Iterato

2016-02-29 17:40:51 813

原创 equals和hashCode的重写方法

1.何时需要重写equals()当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念)。2.设计equals()[1]使用instanceof操作符检查“实参是否为正确的类型”。[2]对于类中的每一个“关键域”,检查实参中的域与当前对象中对应的域值。[2.1]对于非float和double类型的原语类型域,使用==比较;[2.2]对于对象引用域,递归调用equals方

2016-02-29 17:38:02 420

转载 Android中ActivityManagerService与应用程序通信模型分析

今天主要分析下ActivityManagerService(服务端) 与应用程序(客户端)之间的通信模型,在介绍这个通信模型的基础上,再   简单介绍实现这个模型所需要数据类型。         本文所介绍内容基于android2.2版本。由于android版本的不同,本文所包含的一些类可能在命名等细节上做了一些更改,但   万变不离其宗,整个核心思想和通信流程依旧

2016-02-29 17:33:27 886

原创 Android Handler详解

Android的消息传递机制是另外一种形式的“事件处理”,这种机制主要是为了解决Android应用中多线程的问题,在Android中不允许Activity新启动的线程访问该Activity里的UI组件,这样会导致新启动的线程无法改变UI组件的属性值。但实际开发中,很多地方需要在工作线程中改变UI组件的属性值,比如下载网络图片、动画等等。本篇博客主要介绍Handler是如何发送与处理线程上传递来的消

2016-02-22 14:01:14 777

原创 为什么Html5那么强大,但是App更多的还是Native,而不是Html5?

首先,h5优势:1. 用h5做的页面迭代速度快,每次就更新服务器的文件用户那头就更新了,不用好像native那样各种提交app store审核,审核不过打回来然后还继续审,万一不小心有bug带出去了又要重新更新一个版本。这是h5的一个巨大的优势——迭代迅速2. h5现在已经能做越来越多的事,从地理位置获取到传感器获取到陀螺仪,h5的能力已经越来越大,并且相信会变得更大,这让开发者的

2016-02-04 20:22:45 2018

编译原理与实践

编译原理

2014-06-12

三维阀门模型文件

三维阀门模型文件

2014-06-12

解析Geodatabase中shp程序

解析Geodatabase中shp程序

2014-06-12

数据结构 C++语言版本

一个穿越“数据结构、算法和程序”这个抽象世界的特殊旅程,以解决现实生活中的许多难题

2014-06-12

C++指针精髓 笔记

C++指针精髓 笔记

2014-06-12

30天掌握C++精髓

C++快速入门教程 值得一看 主要讲述C++中各种知识点

2014-06-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除