自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android developer.

艺术之旅

  • 博客(138)
  • 资源 (7)
  • 收藏
  • 关注

转载 Java native方法以及Mac上的JNI实践

前言今天看AndFix实现时,核心方法之ReplaceMethod方法是一个native方法,之前并没有遇到过,所以在此整理记录。native的作用总而言之:native是与C++联合开发的时候用的!使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。native 是用做java 和其他语言(如c++)...

2018-03-11 10:25:16 1348

转载 图文详解 Android Binder跨进程通信机制和原理

前言如果你接触过 跨进程通信 (IPC),那么你对Binder一定不陌生虽然 网上有很多介绍 Binder的文章,可是存在一些问题:浅显的讨论Binder机制 或 一味讲解 Binder源码、逻辑不清楚,最终导致的是读者们还是无法形成一个完整的Binder概念本文采用 清晰的图文讲解方式,按照 大角度 -> 小角度 去分析Binder,即: 先从 机制、模型的角度 去分析 整个Bi

2018-01-15 14:51:29 1163

原创 Kotlin Android UI利器之Anko Layouts

引言前段时间写了一篇Kotlin语法入门的文章,还没有看过的盆友请戳(这里),有的可能看完之后已经开始尝试用kotlin来写代码了。不过上篇体现的仅仅是针对于Kotlin相较于Java在用法上的扩展性以及写法上的简洁性,那么Android中还有另一个重要的组成部分,布局文件呢?接下来我们就继续看一下Anko(基于Kotlin的扩展库)对于Android传统布局文件XML做的改进及优化,以及工作原理。

2017-09-19 11:41:26 2702 1

原创 一句话解决的事何必说三句,Kotlin入坑指南

看到这个标题你可能觉得很奇怪,其实这里指的是Kotlin语言出色的简洁性,能比原有用Java代码实现的功能缩小三倍以上的代码量。不仅如此,这还不是Kotlin最出色的语言特性,不信你接着往下看。什么是Kotlin?Kotlin是JetBrains开发的基于JVM的语言。JetBrains是一家捷克的软件开发公司,该公司位于捷克的布拉格,研发了IntelliJ IDEA这款相对于Eclipse有较大

2017-07-09 22:11:45 726

原创 Android透明化/沉浸式状态栏实践及源码分析

何为透明状态栏?有人说透明状态栏就是沉浸式状态栏,这里不多解释,详见为什么在国内会有很多用户把「透明栏」(Translucent Bars)称作 「沉浸式顶栏」?。本文将对于透明状态栏设置方法做一个讲解,以及遇到的问题该怎么解决,来面对各种需求。本文所提到的透明状态栏其实指的是将顶部的导航栏延伸到状态栏,使之浑然一体(Google官方建议状态栏颜色比导航栏的颜色略深一点),并不代表一定不设置背景色

2017-07-09 22:10:07 1029 2

原创 Bacula虚拟机配置error:no route to host

今天在配置Bacula时遇到了不少问题,其中一个是在执行./bconsole时出现了no route to host,如下图 第一个想法是判断是否在一个子网内,确认在一个子网内之后,google了不少方法,最终把防火墙关了成功备份。 执行sudo iptables -F

2016-01-05 13:00:02 686

翻译 XMPP 协议工作流程详解

原文: http://ceit.uq.edu.au/content/how-xmpp-works-step-step XMPP 核心协议 http://xmpp.org/rfcs/rfc3920.htmlXMPP 要点.客户端(C) 和服务器端(S) 通过TCP连接5222端口进行全双工通信.XMPP 信息均包含在 XML streams中.一个XMPP会话, 开始于 标签, 并结束于标签.所

2015-10-24 20:17:19 719

原创 极光推送技术原理:移动无线网络长连接

移动互联网应用现状因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不一样,需要根据手机本身的特点,尽量的节省电量和流量,同时又要尽可能的保证数据能及时到达客户端。为了解决数据同步的问题,在手机平台上,常用的方法有2种。一种是定时去服务器上查询数据,也叫Polling,还有一种手机跟服务器之间维护一个 TCP 长连接,当服务器有数据时,实时推送到客户端,也就是我

2015-10-23 12:57:12 1076

原创 HashMap循环遍历方式及其性能对比

主要介绍HashMap的四种循环遍历方式,各种方式的性能测试对比,根据HashMap的源码实现分析性能结果,总结结论。1. Map的四种遍历方式 下面只是简单介绍各种遍历示例(以HashMap为例),各自优劣会在本文后面进行分析给出结论。 (1) for each map.entrySet()Map<String, String> map = new HashMap<String, String

2015-10-15 21:29:30 1032

转载 一次完整的HTTP事务是怎样一个过程?

当我们在浏览器的地址栏输入 www.linux178.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢?以下过程仅是个人理解:域名解析 –> 发起TCP的3次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) –> 浏览器对页面进行渲染呈现给用户关于HTTP协

2015-10-12 11:31:54 564

原创 TCP滑动窗口与拥塞窗口

一、滑动窗口滑动窗口协议是传输层进行流控的一种措施,接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度,从而达到防止发送方发送速度过快而导致自己被淹没的目的。对ACK的再认识,ack通常被理解为收到数据后给出的一个确认ACK,ACK包含两个非常重要的信息: 一是期望接收到的下一字节的序号n,该n代表接收方已经接收到了前n-1字节数据,此时如果接收方收到第n+1字节数据而不是第n字节数据,

2015-10-09 20:09:03 2227

原创 TCP三次握手及其背后的缺陷

概述 总结一下TCP中3次握手过程,以及其原生的缺陷 引起的SYN Flood的介绍 【1】TCP三次握手 【2】SYN Flood1、TCP连接建立——三次握手几个概念: 【1】seq:序号,占4个字节,范围[0,4284967296],由于TCP是面向字节流的,在一个1个TCP连接中传送字节流中国的每一个字节都按照顺序编号,此外序号是循环使用的 【2】ACK: 仅当ACK=1时确认字段

2015-10-07 22:45:05 1175

转载 海量数据找中位数

腾讯一面问到了,用的算法导论中的Kth算法,期望时间复杂度为O(n)。后来想了想,万一数据多的来根本不能一次读入内存,这个时候该如何解决呢?题目如下: 只有2G内存的pc机,在一个存有10G个整数的文件,从中找到中位数,写一个算法。http://blog.sina.com.cn/s/blog_4a8aac970100093j.html~type=v5_one&label=rela_nextarti

2015-09-22 22:40:10 570

原创 从中序表达式到逆序表达式(逆波兰式)(四则运算表达式求值)

将运算对象写在前面,而把运算符号写在后面。用这种表示法表示的表达式也称做后缀式。逆波兰式的特点在于运算对象顺序不变,运算符号位置反映运算顺序。采用逆波兰式可以很好的表示简单算术表达式,其优点在于易于计算机处理表达式。(逆波兰式不需要使用括号) 本份代码出自:http://wenku.baidu.com/view/23a5b73031126edb6f1a10aa.html 本份代码需要两个栈。一个

2015-09-22 17:28:02 2093

转载 哈希表中线性探测再散列法及等概率条件下平均查找长度

最近复习了下数据结构中的哈希表,发现在计算等概率情况下查找不成功的平均查找长度时比较迷茫,不知道到底是怎么计算出来的。现在通过查阅资料终于知道如何计算了,所以记录下来以供以后查阅。 下面看下2010年2010年全国硕士研究生入学统一考试计算机科学与技术学科联考计算机学科专业基础综合试题中一个考哈希表的题。 Question1: 将关键字序列(7、8、30、11、18、9、14)散列存储到

2015-09-17 16:26:45 3224 1

转载 Java设计模式之Observer(观察者)模式

Java设计模式之Observer(观察者)模式1模式概述虽然设计模式并不是万能丹, 但确实是一个非常强大的工具,开发人员或架构师可使用它积极地参与任何项目。设计模式可确保通过熟知和公认的解决方案解决常见问题。模式存在的事实基础在 于:大多数问题,可能已经有其他个人或开发小组解决过了。因此,模式提供了一种在开发人员和组织之间共享可使用解决方案的形式。无论这些模式的出处是什 么,这些模式都利用了大家所

2015-09-13 12:43:58 670

原创 死锁的原因及处理方法

产生死锁的原因主要是: (1) 因为系统资源不足。 (2) 进程运行推进的顺序不合适。 (3) 资源分配不当等。 产生死锁的四个必要条件: (1)互斥条件:一个资源每次只能被一个进程使用。 (2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4)循环等待条件:若干进程之间形成一种头尾

2015-09-09 12:44:00 6720

原创 Java内存模型

1. 概述多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性由于计算机的存储设备与处理

2015-09-07 22:05:37 604

转载 Android Universal Image Loader 学习笔记(三)

4.2.19 ProcessAndDisplayImageTask.java处理并显示图片的Task,实现了Runnable接口。 主要函数: (1) run()主要通过 imageLoadingInfo 得到BitmapProcessor处理图片,并用处理后的图片和配置新建一个DisplayBitmapTask在ImageAware中显示图片。 4.2.20 LoadAndDisplayIm

2015-09-07 18:11:42 543

转载 Android Universal Image Loader 学习笔记(二)

4.2 核心类功能介绍4.2.1 ImageLoader.java图片加载器,对外的主要 API,采取了单例模式,用于图片的加载和显示。 主要函数: (1). getInstance()得到ImageLoader的单例。通过双层是否为 null 判断提高性能。 (2). init(ImageLoaderConfiguration configuration)初始化配置参数,参数configur

2015-09-07 18:03:50 514

原创 计算机网络各层对应协议

上图:

2015-09-07 11:58:19 1434

转载 外排序(磁盘排序)之多路归并排序的简单实现(转)

摘要:本文简要介绍了当数据量大到不适合在内存中排序时,利用磁盘进行排序的多路归并算法。关键字:外排序,磁盘排序,多路归并 下面以一个包含很多个整数的大文件为例,来说明多路归并的外排序算法基本思想。假设文件中整数个数为N(N是亿级的),整数之间用空格分开。首先分多次从该文件中读取M(十万级)个整数,每次将M个文件在内存中使用快排序之后存入临时文件,然后使用多路归并将临时文件中的数据牌号序存

2015-09-07 11:50:50 1637

原创 剑指offer——反转链表

题目描述输入一个链表,反转链表后,输出链表的所有元素。public class ReverseList { public static ListNode ReverseList(ListNode head) { if(head==null||head.next==null){ return head; } Lis

2015-09-03 23:20:38 441

原创 剑指offer——链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。要求只遍历一次链表思路:当第一个指针forward走到k-1位置的时候,第二个开始一起右移,直到结束。public class FindKthNode { public static ListNode FindKthToTail(ListNode head,int k) { if(head==null||k==0){

2015-09-02 13:09:54 398

原创 剑指offer13:在O(1)时间删除链表结点

问题: 给定链表的头指针和一个节点指针,在O(1)平均时间删除该节点。public class DeleteListNode { public static void deleteNode(ListNode head,ListNode target){ //如果参数为空 if(head==null||target==null){

2015-09-01 21:57:28 457

转载 理解Fragment生命周期

官网帮助文档链接: http://developer.android.com/guide/components/fragments.html 主要看两张图,和跑代码 一,Fragment的生命周 二,与Activity生命周期的对比 场景演示 : 切换到该Fragment 11-29 14:26:35.095: D/AppListFragment(7649): onAttach 11-

2015-08-27 13:04:12 320

转载 java中四种引用类型

今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混。后来在网上查资料,感觉收获颇多,现记录如下。对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JD

2015-08-27 11:42:50 2177

转载 设计模式——组合模式

一、引子在大学的数据结构这门课上,树是最重要的章节之一。还记得树是怎么定义的吗?树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件: (1) 有且仅有一个特定的称为根(Root)的结点; (2) 其余的结点可分为m(m≥0)个互不相交的子集Tl,T2,…,Tm,其中每个子集本身又是一棵树,并称其为根的子树(SubTree)。 上面给出的递归定义刻画

2015-08-27 11:14:57 571

转载 设计模式——代理模式

1. 简介代理模式(Proxy Pattern)是GoF 23种Java常用设计模式之一。代理模式的定义:Provide a surrogate or placeholder for another object to controlaccess to it(为其他对象提供一种代理以控制对这个对象的访问)。使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对象、创建开销大的

2015-08-27 10:06:46 405

原创 LRU算法

LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的,是根据页面调入内存后的使用情况进行决策了。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU算法就是将最近最久未使用的页面予以淘汰。 可以用一个特殊的栈来保存当前正在使用的各个页面的页面号。当一个新的进程访问某页面时,便将该页面号压入栈顶,其他的

2015-08-27 10:00:54 610

原创 Java中Exception的种类

通常来讲,Java中的异常会被分为三种: Error: 这种异常被设计成不被捕获,因为这种异常产生于JVM自身。 Runtime Exception: 运行时异常往往与环境有关,编译时无法检查,并且可能发生的情况太广泛,所以系统会去处理,程序不需要捕获。 普通异常: 常见的异常大多属于此类。 这里的Java异常指直接继承java.lang.Throwable的异常类,他们的结构如下图: j

2015-08-27 08:20:16 1565

转载 Android_APP级异常捕获实现方式

描述:App级异常捕获,并记录下CrashLog到文件。以下,代码。在Application的,onCreate中,初始化自定义的CrashHandlerimport android.app.Application;import com.tjd.appexceptioncatch.exception.CrashHandler;public class MyApplication extends Ap

2015-08-26 23:43:09 1255

原创 Android开发之如何保证Service不被杀掉(broadcast+system/app)

序言最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作,都要保证service不被kill,这可真是一个难题。参考了现今各种定制版的系统和安全厂商牛虻软件,如何能保证自己的Service不被杀死呢? 其实除了常规的手段,我们可以参考一下微信和360,设置-程序-正在运行,可以看到微信是同时开启了两个进程和服务: 【有兴趣可以研究一下 守护进程 和

2015-08-26 23:06:05 802

转载 Android Universal Image Loader 学习笔记(一)

1. 功能介绍1.1 Android Universal Image LoaderAndroid Universal Image Loader 是一个强大的、可高度定制的图片缓存,本文简称为UIL。 简单的说 UIL 就做了一件事——获取图片并显示在相应的控件上。 1.2 基本使用1.2.1 初始化添加完依赖后在Application或Activity中初始化ImageLoader,如下: p

2015-08-25 22:30:58 535

原创 剑指offer——数值的整数次方

题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。下面来看代码:public class PowerSolution { public static double Power(double base, int exponent) { //当底数为0,指数小于0,则为非法情况。 if (equal(base,0.

2015-08-25 15:57:07 579

转载 Android中View绘制优化之一---- 优化布局层次

译序最近一直在做锁屏界面,之前也写过关于锁屏界面的一些简单原理,未曾想自己真正去深入理解锁屏时,才 发觉锁屏框架真是又大又复杂,主要体现在如下两个方面:1、界面的组成以及更新机制; 2、对电源管理的控制,在锁屏界面会禁用系统的电源管理,自己接管屏幕亮度的控制。当然还有更多的逻辑细节处理,只能耐着性子去研究了。。通过对本次锁屏界面的处理,才发现自己对View绘制还是不熟透,很多东西也没有去潜心研

2015-08-24 18:11:51 1464

原创 设计模式——单例模式

单例模式(Singleton)首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了,比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个,这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中我只有一个打印程序的实例。简单说来,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(

2015-08-24 16:22:27 580

原创 JAVA线程池的分析和使用

1. 引言 合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。2. 线程

2015-08-24 16:00:56 620

原创 Android广播机制

1.Android广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下: 1.同一app内部的同一组件内的消息通信(单个或多个线程之间);2.同一app内部的不同组件之间的消息通信(单个进程);3.同一app具有多个进程的不同组件之间的消息通信;

2015-08-23 22:56:46 716

原创 磁盘缓存和内存缓存的区别

内存缓存高速缓存(英语:cache,英语发音:/kæʃ/ kash [1][2][3],简称缓存),其原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。原理 Cache一词来源于1967年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义,用于电脑工程领域

2015-08-23 22:49:50 19871 1

HTTP权威指南中文高清(pdf)

HTTP权威指南高清pdf中文版,在Retina屏幕下依然清晰

2015-11-19

微信公众平台开发教程4

微信公众平台开发教程,适合初学者了解入门,用的是php语言,简单易懂,欢迎下载

2014-10-21

微信公众平台开发教程3

微信公众平台开发教程,适合初学者了解入门,用的是php语言,简单易懂,欢迎下载

2014-10-21

微信公众平台开发教程2

微信公众平台开发教程,适合初学者了解入门,用的是php语言,简单易懂,欢迎下载

2014-10-21

微信公众平台开发教程

微信公众平台开发教程,适合初学者了解入门,用的是php语言,简单易懂,欢迎下载。

2014-10-21

安卓平台记账软件源代码JAVA

基于安卓平台上的记账软件,能帮用户分类记账,便于用户管理账目。

2014-04-30

用java编的一个放背景音乐的小程序

用java写的一个可以放背景音乐的小程序,可以添加到你原有的java代码中,带来趣味性的效果,不过音乐格式必须是wav

2013-06-18

空空如也

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

TA关注的人

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