自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

robert的专栏

Android开发,java编程

  • 博客(133)
  • 资源 (8)
  • 收藏
  • 关注

原创 JAVA之代码混淆proguard

官方网站用法http://proguard.sourceforge.net/index.html#/manual/examples.htmlproguard主要三部分功能缩减代码、优化代码、混淆代码。三部分功能都可以在配置文件里配置不启用此功能。#Shrink Options#不缩减代码-dontshrink#Optimization Options#优化代

2016-06-15 23:03:14 4375

原创 设计模式系列(三)工厂模式

工厂模式分类简单工厂模式(simple factory):类的创建模式,又叫静态工厂方法(static factory method)模式。简单工厂模式就是由一个工厂类根据传入的参数决定创建哪一种的产品类。工厂方法模式(Factory Method):一抽象产品类派生出多个具体产品类;一抽象工厂类派生出多个具体工厂类;每个具体工厂类只能创建一个具体产品类的实例。即定义一个创建对象的接口

2016-06-13 21:42:02 2653

原创 Android签名与风险分析

在Android 系统中,所有安装到系统的应用程序都必有一个数字证书,这个数字证书就是这个应用的签名。此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个 permission的protectionLevel为signature,那么就只有那些跟该permission所在的程序拥有同一个数字证书的应 用程序才能取得该权限。这个数字证书并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。的protectionLevel为signature,那么就只有那些跟该permissi

2016-06-13 19:21:12 4498

原创 ListView注意的问题和源码解析(上)

ListView中涉及的设计模式ListView源码分析,和常见的问题分析设置没有数据时显示的空布局显示失败listView中多种类型布局使用OnItemClickListener中获取获取点击的item数据

2016-06-13 18:04:50 2427

原创 CPU概念和调度算法

1、物理CPU、逻辑CPU、CPU核数(1) 一个物理CPU上有多个CPU核,如果采用了intel的超线程技术(HT), 就会再多出一倍的cpu核出来(2)一般情况下,逻辑cpu数=物理CPU*cpu核数(3)如果采用了超线程技术,则正常逻辑cpu数=物理CPU*cpu核数*2top看到的cpu个数以及java中的Runtime.getRuntime().availableProcessors()获得到的都是逻辑cpu数。top看到的cpu个数以及java中的Runtime.getRuntime

2016-06-12 09:18:03 5546 3

原创 Android WebView问题汇总以及解决方法

Android WebView常见问题解决方案汇总:1、Android webview背景设置为透明无效webview是一个使用方便、功能强大的控件,但由于webview的背景颜色默认是白色,在一些场合下会显得很突兀(比如背景是黑色)。此时就想到了要把webview的背景设置为透明,这样就可以与其背景融为一体。在2.X的平台下,一般设置webview背景为透明的方法如下:

2016-06-11 21:46:22 8673

翻译 android开源图表库MPAndroidChart文档翻译(下)

MPAndroidChart 是 Android 系统上一款开源的图表库。目前提供线图和饼图,支持选择、缩放和拖放。android开源图表库MPAndroidChar的githu地址:https://github.com/PhilJay/MPAndroidChart在 android开源图表库MPAndroidChart文档翻译(中) 介绍了设置数据,设置颜色,轴的格式化,图例,动态修改数据。这篇文章继续翻译MPAndroidChart文档剩余内容。

2016-06-11 16:32:58 4961

原创 Fragment和Activity生命周期以及横竖屏切换对生命周期的影响

Fragment生命周期图解,fragment和activity生命周期对比1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏

2016-06-11 10:04:37 5177

原创 算法系列(九)平衡二叉查找树AVL树

在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。一棵AVL树是其每个节点的左子树和右子树的高度最多差1的二叉查找树。高度为 h 的 AVL 树,节点数 N 最多2^h − 1; 最少N(h)=N(h− 1) +N(h− 2) + 1。

2016-06-10 18:27:01 3544

翻译 android开源图表库MPAndroidChart文档翻译(中)

在 android开源图表库MPAndroidChart文档翻译(上) 中,介绍了mpandroidchart的创建,回调方法,还有轴。这篇文章继续翻译剩余内容。MPAndroidChart数据显示,统一的数据的格式化,X轴上的数据格式化,Y轴上的数据格式化。具体图表设置

2016-06-09 21:12:24 8901 1

翻译 android开源图表库MPAndroidChart文档翻译(上)

MPAndroidChart 是 Android 系统上一款开源的图表库。目前提供线图和饼图,支持选择、缩放和拖放。android开源图表库MPAndroidChar的githu地址:https://github.com/PhilJay/MPAndroidChart文档地址:https://github.com/PhilJay/MPAndroidChart/wikiAPI地址:https://jitpack.io/com/github/PhilJay/MPAndroidChart/v2.2.5/ja

2016-06-09 12:19:44 18031 15

原创 算法系列(八)数据结构之二叉查找树

在算法系列(七)数据结构之树的基本结构和二叉树的遍历 中介绍了基本的树结构,二叉树的实现和遍历。这篇文章重点学习一下二叉查找树。概述二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree)二叉搜索树。二叉查找树(BST)是二叉树的一个重要的应用,它在二叉树的基础上加上了这样的一个性质:对于树中的每一个节点来说,如果有左儿子的话

2016-06-09 01:03:14 3534

原创 设计模式系列(二)原型模式

在设计模式系列(一)单例模式 中详细介绍了单例设计模式,下面一起来看一下原型模式。一、概述原型模式是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例, 因为这种情况下,复制一个已经存在的实例可以使程序运行更高效,或者创建值相等,只是命名不一样的同类数据。二、

2016-06-08 00:35:15 2545

翻译 gson用户指南(下)

上篇文章gson用户指南翻译到了10、序列化和反序列化有任意类型对象的collection,我们继续11、内置的序列化器和反序列化器Gson内置的常用的默认序列化器和反序列化器的类可能不合适有时候默认表示不是你想要的。通常情况下在处理库类(DateTime等)会遇到这种情况。Gson允许注册你的自定义的序列化器和反序列化器。主要需要定义两个部分:Json序列化器:自定义对象的序列化Json反序列化器:为一个类型自定义反序列化

2016-06-07 13:32:02 1823

原创 算法系列(七)数据结构之树的基本结构和二叉树的遍历

一、概述在算法系列(六)数据结构之表队列和栈 一文中介绍了数据结构中的基本线性数据结构。对于大量的数据,链表访问时间太慢,而数组插入删除时间太慢。我们讨论一下数据结构树。 树结构大部分操作平均运行时间都为O(logN)二、树的定义树是由n(n>=1)个有限节点组成一个具有层次关系的集合。每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根

2016-06-06 22:55:21 3793

翻译 gson用户指南(上)

一、官方地址https://github.com/google/gson/blob/master/UserGuide.md#TOC-InstanceCreator-for-a-Parameterized-Typeapi地址http://www.javadoc.io/doc/com.google.code.gson/gson/2.6.2二、概述gson是一个用来将JAVA对象

2016-06-06 18:59:03 2307

原创 有效避免OOM--合理使用软引用和弱引用

在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用

2016-06-05 23:17:02 6395

原创 设计模式系列(一)单例模式

一、简单介绍单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。《设计模式》书中对单例模式动机的介绍对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如在Win

2016-06-05 11:00:42 6860 1

原创 算法系列(六)数据结构之表队列和栈

在http://blog.csdn.net/robertcpp/article/details/51559333一文中,我们讲了排序,这一章来介绍一下基本数据结构:表、队列、栈和它们的简单实现一、表ADT1、数组实现顺序表通过对数组操作,来直接对表进行增删查改操作,这种线性表查找某个位置的元素花费的时间为O(1),但是插入删除元素花费的时间为O(n),如果对表的操作更多的是访问操作,那

2016-06-04 07:50:41 3327 2

原创 svn,git的对比以及常用命令

总结的git优点1、分支管理非常方便2、回退,查看历史更加方便,支持命令更多3、速度更快4、可以离线提交到本地库,可以离线查看log5....GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。,如果被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支,等。对一些人来说,这好像没多大用处,但当突然遇到

2016-06-02 06:56:13 6145

原创 算法系列(五)排序算法下篇--如何超越排序算法下界

概述在算法系列(四)排序算法中篇--归并排序和快速排序一文中,我们介绍了归并排序和快速排序,最坏的情况下,最快的排序算法的时间复杂度是O(nlogn),是否有更好的算法呢?到目前为止,没有特殊的规则,O(nlogn)已经是最好的排序算法了,也就是说通用排序算法的时间复杂度下界就是O(nlogn)。如果限定一些规则,是可以打破这个下界的。下面说一下尽在O(n)时间内就能实现对数组排序的算法。

2016-06-01 23:57:56 5362

原创 Android依赖注入Dagger的使用和源码解析(上篇)

依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。 Dagger1是Android上最流行的依赖注入框架。它是由Square公司受到Guice启发创建的。Dagger2是Dagger1的分支,由谷歌公司接手开发,目前的版本是2.2。Dagger2是受到AutoValue项目的启发

2016-06-01 21:27:29 5263

原创 TCP/UDP简单介绍及JavaSocket的使用

概述在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。在客户机/服务器(C/S)结构中,通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提 出申请。服务

2016-05-31 08:44:16 2039

原创 Android 毛玻璃效果的实现

Android 毛玻璃效果,主要找到了3中实现方案,1、如果系统的api在16以上,可以使用系统提供的方法直接处理图片 if (Build.VERSION.SDK_INT > 16) { Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true); final RenderScript rs = RenderScript.

2016-05-31 08:05:21 2223

原创 Android获取view高度

getMeasuredHeight()与getHeight的区别实际上在当屏幕可以包裹内容的时候,他们的值相等,只有当view超出屏幕后,才能看出他们的区别:getMeasuredHeight()是实际View的大小,与屏幕无关,而getHeight的大小此时则是屏幕的大小。当超出屏幕后,getMeasuredHeight()等于getHeight()加上屏幕之外没有显示的

2016-05-30 23:17:14 6573 1

原创 算法系列(四)排序算法中篇--归并排序和快速排序

在算法系列(三)排序算法上篇 一文中,介绍了冒泡排序,插入排序和选择排序算法。这篇文章继续讲解排序算法。概述冒泡排序,插入排序和选择排序算法这些算法的时间复杂度都是O(N^2),是否有更高效的排序算法呢?当然有了,堆排序,归并排序,快速排序,它们的时间复杂度都是O(nlogn)。堆排序使用了树结构,到目我们前还没有介绍树相关的算法,这里先分析归并排序跟快速排序。归并排序基本原理

2016-05-30 23:04:57 8832

原创 Android里Service的bindService()和startService()混合使用深入分析

先讲讲怎么使用bindService()绑定服务应用组件(客户端)可以调用bindService()绑定到一个service.Android系统之后调用service的onBind()方法,它返回一个用来与service交互的IBinder绑定是异步的.bindService()会立即返回,它不会返回IBinder给客户端.要接收IBinder,客户端必须创建一个ServiceConnecti

2016-05-30 13:03:36 8428

原创 ThreadLocal介绍

一、概述ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是 threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量 (ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一

2016-05-30 07:17:39 1949

原创 算法系列(三)排序算法上篇--冒泡排序插入排序和选择排序

排序算法概述排序算法比较多,分两个篇幅来讲。由易道难。先总体看一下都有哪些排序算法冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序,计数排序,基数排序,希尔排序,桶排序。排序算法分类根据排序过程中待排序文件存放的位置不同,可以把排序分为内部和外部排序两大类。在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序;在排序过程中,只有部分数被调入内

2016-05-29 22:34:39 1821

原创 android 图片压缩

Android中最占内存的肯定是图片资源了,使用大图很容易造成OOM,就算是小图,使用不当也会造成很大的资源浪费。有一点需要明确一下,图片最终占内存跟图片大小本身没什么关系,比如说有一张1k的图片,还有一张1M的图片,两张图片加载到内存中设置的长宽一样,图片质量也一样,那么他们他们占的内存是一样大的。如何计算图片占内存大小呢?图片加载到内存中的长*图片加载到内存中的宽*一个像素点所占内存

2016-05-29 21:23:38 2162

原创 算法系列(二)查找算法--基本查找和二分查找

从n个元素中A0,A1....An-1中,找到要找到的元素x,最简单的方法是遍历n个元素,找到元素x则返回x的位置,这种算法的时间复杂度为O(n)。如果这n个元素是有序的,我们不需要从头到尾遍历一遍就可以找到要查找的元素,可以使用二分法。二分查找的时间复杂度是O(lgn)二分查找的前提是元素有序(一般是升序),基本思想是拿中间元素A[m]与要查找的元素x进行比较,如果相等,则已经找到,如果

2016-05-29 16:58:32 15015 1

原创 android开发播放声音文件

有两种播放音频形式,第一个:MediaPlayer 类 ;第二个:SoundPool 类MediaPlayer mediaPlayer01;mediaPlayer01 = MediaPlayer.create(YouActivity.this, R.raw.xxxx);mediaPlayer01.start(); 网上有很多介绍mp播放声音文件的几种方式就是:1.用R.ra

2016-05-29 15:06:49 17761

原创 算法系列(一)基本概念

一、什么是算法算法是完成一个任务所需的一系列步骤,计算机解决计算机问题,我们希望从一个计算机算法中获得两个结果,给定一个输入,它应该总能够产生该问题的正确输出结果,并且在运行该算法时,能够有效的利用资源。(出自《算法基础》)算法是为求解一个问题所需要遵循的、被清楚指定的简单指令集合。(出自《数据结构与算法分析》)二、数学基础1、如果存在常数c和n0,使得当N>=n0时,T(N)

2016-05-29 10:17:54 4937

原创 Java数据类型总结

Java数据类型总结 java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 1、整数:包括int,short,byte,long 2、浮点型:float,double 3、字符:char 4、布尔:boolean 基本型别大小最小值最大值

2016-05-29 00:03:03 5638 3

原创 ByteBuffer说明

概述ByteBuffer是NIO里用得最多的Buffer,它包含两个实现方式:HeapByteBuffer是基于Java堆的实现,而DirectByteBuffer则使用了unsafe的API进行了堆外的实现。这里只说HeapByteBuffer。使用ByteBuffer最核心的方法是put(byte)和get()。分别是往ByteBuffer里写一个字节,和读一个字节。值得注

2016-05-28 23:10:14 4029 2

原创 CompletionService 简介

当向Executor提交批处理任务时,并且希望在它们完成后获得结果,如果用FutureTask,你可以循环获取task,并用 future.get()去获取结果,但是如果这个task没有完成,你就得阻塞在这里,这个实效性不高,其实在很多场合,其实你拿第一个任务结果时,此 时结果并没有生成并阻塞,其实在阻塞在第一个任务时,第二个task的任务已经早就完成了,显然这种情况用future task不合适

2016-05-28 23:06:05 4056 1

原创 linux常用命令

linux 基本命令 ls     (list 显示当前目录下文件和目录 ls -l 详细显示 =ll )[root@linux ~]# ls [-aAdfFhilRS] 目录名称 [root@linux ~]# ls [--color={none,auto,always}] 目录名称 [root@linux ~]# ls [--full-time] 目录名称 参数: -a

2016-05-28 21:44:30 3231 2

原创 JNI签名与数据匹配

JNI为了扮演在c/c++和java之间的匹配工作,它首先需要做的就是既要认识java中的数据类型,也要认识c/c++中的数据类型。这 时,jni就相当于一个适配者了。好比,A与C两个人本来不认识,可是现在B认识A,B也认识C,那么通过C的指引和介绍,A和C就认识了!1、原始数据类型的匹配:其中jni中的本地类型都是以j开头,可以在c/c++中直接和c/C++类型互通互换! 2

2016-05-28 17:13:44 3785

原创 Filter 过滤器

一、结构    public abstract class Filter extends Object java.lang.Object     android.widget.Filter   二、概述    过滤器通过过滤模式来约束数据,通常由实现了Filterable接口的子类来生成。 过滤操作是通过调用 filter(CharSequence) 或者 filter

2016-05-28 09:18:19 3581

原创 Android - LayoutInflater和inflate方法的用法

在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如 Button、TextView等)。具体作用:1、对于一个没有被载入或者想要动态载入的界面,都需要使用Layo

2016-05-28 08:03:59 21436 1

Android内核

本书详细分析了Android内核的内部机制,包括窗口管理系统、Activity管理系统、输入法框架、编译系统等,为Android内核定制及高级应用程序开发提供技术参考。

2016-06-01

数据结构与算法分析_Java语言描述

“数据结构”是计算机专业的基础与核心课程之一,Java是现今一种热门的语言。本书在编写过程中特别考虑到了面向对象程序设计(OOP)的思想与Java语言的特性。它不是从基于另一种程序设计语言的数据结构教材简单地“改编”而来的,因此在数据结构的实现上更加“地道”地运用了Java语言,并且自始至终强调以面向对象的方式来思考、分析和解决问题。

2016-06-01

精通spring3电子版

本书是关于Spring 的权威教程,是Java/Java EE开发者必备的参考书。本书详尽、系统地介绍了Java EE的基础知识、Spring 的各种功能,以及Spring 的高级使用技巧和最佳实践。

2016-06-01

Android反编译

一键反编译andorid源码

2016-05-27

Android夜间护眼模式源码

Android夜间护眼模式源代码,可调节屏幕整体的亮度跟颜色。

2015-01-06

VC++使用ADO在数据库中访问记录

使用ado访问Access数据库。比较基本,适合初学者。

2012-04-22

MFC记事本vc6.0下开发

MFC下记事本程序,有一丁点BUG,偶尔会有乱码。功能很多,字体设置,背景颜色,状态栏也是自己设置的,同时还可以托盘

2011-08-29

MFC下udp网络聊天小程序

VC6.0下MFC编程,基于UDP的网络聊天程序

2011-08-28

空空如也

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

TA关注的人

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