- 博客(43)
- 资源 (8)
- 收藏
- 关注
原创 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 6574 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 15018 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 21439 1
原创 MYSQL常用命令
1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;2:2、创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA;3:选择你所创建的数据库mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)4:查看现在的数据库中存在什么表m
2016-05-28 00:30:07 7605 4
原创 mysql下的加密解密函数
mysql下的加密函数有如下几个PASSWORD():创建一个经过加密的密码字符串,适合于插入到MySQL的安全系统。该加密过程不可逆,和unix密码加密过程使用不同的算法。主要用于MySQL的认证系统。ENCRYPT(,):使用UNIX crypt()系统加密字符串,ENCRYPT()函数接收要加密的字符串和(可选的)用于加密过程的salt(一个可以唯一确定口令的字符串,就像
2016-05-28 00:28:31 2125 4
原创 sqlite3中的数据类型
大多数的数据库引擎(到现在据我们所知的除了sqlite的每个sql数据库引擎)都使用静态的、刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列。Sqlite使用一个更一般的动态类型系统,sqlite中,值的数据类型跟值本身相关,而不是与它的容器相关。Sqlite的动态类型系统和其他数据库的更为一般的静态类型系统相兼容,但同时,sqlite中的动态类型允许它能做
2016-05-28 00:27:06 13138 1
原创 AndroidManifest详解
一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent
2016-05-27 22:22:29 6748
原创 Android原生Json解析
android的json解析部分都在包org.json下,主要有以下几个类: JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。它对外部(External: 应用toString()方法输出的数值)调用的响应体现为一个标准的字符串(例如:{"JSON": "Hello, World"},最外被
2016-05-26 22:31:22 4869
原创 Android自动测试之Monkey工具
一、 什么是MonkeyMonkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。 二、 Monkey的特征1、 测试的对象仅为应用程序包,有一定的局限性。2、 M
2016-05-26 20:33:17 2802
原创 Android Home按键的监听与屏蔽方式
在最新的Android系统中是不能直接屏蔽home按键的,但是还是可以监听到home按键这个事件。先说一下最彻底的方法,但是需要系统签名public void blockHomeKey(boolean block) { try { IWindowManager iWindowManager = IWindowManager.Stub. asInterface(Servic
2016-05-25 21:02:56 4817
原创 TextView文本效果
1、BackgroundColorSpan 背景色 2、ClickableSpan 文本可点击,有点击事件3、ForegroundColorSpan 文本颜色(前景色)4、MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)5、MetricAffectingSpan 父类,一般不用6、RasterizerSpa
2016-05-25 18:52:41 2064
原创 RxJava介绍
RxJava github地址 https://github.com/ReactiveX/RxJavaReactiveX 官网 http://reactivex.io/intro.htmlRxJava 是什么RxJava is a Java VM implementation of Reactive Extensions: a library for composing async
2016-05-25 17:50:44 2882
原创 StrictMode介绍
作为Android开发,日常的开发工作中或多或少要接触到性能问题,比如我的Android程序运行缓慢卡顿,并且常常出现ANR对话框等等问题。既然有性能问题,就需要进行性能优化。正所谓工欲善其事,必先利其器。一个好的工具,可以帮助我们发现并定位问题,进而有的放矢进行解决。本文主要介绍StrictMode 在Android 应用开发中的应用和一些问题。什么是StrictModeStrictMo
2016-05-18 20:56:12 5492
原创 http 头信息详解
HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码
2016-05-11 21:36:53 7584
原创 同步协议简单介绍
同步协议 同步协议必须有一种策略解决这样的冲突.在SyncML中,冲突策略是同步引擎的一个基本功能,通常是由同步引擎的同步服务器来解决版本冲突问题,也有可能有写客户端设备提供解决这一问题的解决方式.在同步描述协议提供了通过通知同步客户端冲突决定和状态码的通用解决方案.如果同步引擎的服务端确定一个冲突,服务端将使用状态码和通知功能通知同步客户端并定义解决方案.下面是一些常用的状态码和冲
2016-05-10 21:08:47 5783
原创 Android播放声音文体
android开发播放声音文件一、 MediaPlayer 播放音频的实现步骤:1. 调用MediaPlayer.create(context, R.raw.himi); 利用MediaPlayer类调用create方法并且传入通过id索引的资源音频文件,得到实例;2. 得到的实例就可以调用 MediaPlayer.star(); 此类适合播放较大文件,此类文件应该存储在SD卡
2016-05-09 22:54:59 2012
原创 SQLite 介绍
SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下 - 只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。如果您正在寻找一个嵌入式数据库项目或解决方案,SQLite是绝对值得考虑。1. 介绍SQLite
2016-05-09 21:41:33 1487
原创 Android账号管理机制
在android提供的sdk中,samples目录下有一个叫SampleSyncAdapter的示例,它是一个账号与同步的实例,比如Google原始的android手机可以使用Google账号进行数据的同步。具体的比如你想实时同步你的通讯录到服务端,这时候你就可以通过这个实例来了解android提供的同步机制,从而实现自己的同步功能。 本片博文先介绍一下账号的管理部分。至于账号管理的代码主要是
2016-05-09 15:18:55 6831 5
原创 Android.mk的使用
一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。例如,你不需要在你的Android.mk中列出头文件和依赖文件。NDK编译系统将会为你自动处理这些问题。这也意味着,
2016-05-08 20:57:33 3052
原创 强制结束Android进程
Android中,虽然有很多方法(API或者shell命令)杀死后台`service`,但是仍然有很多程序几秒内再次启动,导致无法真正的杀死。这里主要着重介绍如何像 360 一样杀死Android后台服务,而不会再次启动。kill 后台应用程序的方法* android.os.Process.killProcess(pid);* activityManager.killBackgroun...
2016-05-08 17:16:04 8201 5
原创 Android进程间通信
如果想要进行IPC通信,一般写一个AIDL接口,再写一个Service子类,然后实现AIDL接口 当做IBinder返回给Activity界面层。如果不想写AIDL接口文件,只是单线程中与Service进行通信 我们可以用Android写好的Messenger类来处理,一样能将消息传递给Service进行通信。什么是aidl:aidl是 Android Interface defini
2016-05-08 10:43:19 1301
原创 ContentProvider权限设置
SQLiteDatabase db= databaseHelper.getWritableDatabase();Cursor cursor = db.query("person", new String[]{"id,name,age"}, "name like ?", new String[]{"%robert%"},null,null, "id desc", "1,2");...
2016-05-07 22:59:02 14692
原创 Android的广播
一、Android广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者。广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间);2.同一app内部的不同组件之间的消息通信(单个进程);3.同一app具有多个进程的不同组件之间的消息通信;
2016-05-07 09:27:15 1839
原创 Okhttp的高效使用方式
OkHttp 是一个很重要的开源库。它的默认配置已经提供了很好的效果,我们还是采取了一些措施提高 OkHttp 的可用性和自我检查能力:1. 在文件系统中开启响应缓存有些响应消息通过包含Cache-Control HTTP首部字段允许缓存,但是默认情况下,OkHttp 并不会缓存这些响应消息。因此你的客户端可能会因为不断请求相同的资源而浪费时间和带宽,而不是简单地读取一下首次响应消息的缓存
2016-05-07 00:15:56 7034
原创 okhttp3与旧版本okhttp的区别分析
OkHttp的基本使用HTTP GETOkHttpClient client = new OkHttpClient();String doGet(String url) throws IOException { Request request = new Request.Builder().url(url).build(); Response response = cl
2016-05-06 17:01:54 14493 8
Android内核
2016-06-01
数据结构与算法分析_Java语言描述
2016-06-01
精通spring3电子版
2016-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人