自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (9)
  • 收藏
  • 关注

原创 Android7.0之后 FileProvider配置报错android.content.pm.ProviderInfo.loadXmlMetaData问题

Android7.0之后 FileProvider配置报错android.content.pm.ProviderInfo.loadXmlMetaData问题工程结构里依赖了一个moudle,因此项目里除了app主模块,还有一个library.直接替换包名就好了,将library中的FileProvider.getUriForFile(this, “com.app.app.fileprovide...

2019-06-14 16:15:03 1597 1

原创 Dalvik和ART运行时环境的区别

在此,我并没有打算深入的学习Dalvik和ART两种方式的实现原理,只是想知道他俩的区别。之前,也是零零散散的看过,并没有总结成文字。在此,总结下。DalvikDalvik虚拟机,是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即“Dalvik Executable”)格式的Java应用程序的运行。.dex格式是专为Dalvik设计的一种压缩格

2017-12-22 15:58:12 651

转载 Android 你应该知道的的应用冷启动过程分析和优化方案

你有没有发现,点击安卓手机桌面上的App图标时,有时候应用马上进入主界面,有时候要经历好几秒甚至更久的白屏(也可能是黑屏)时间才能进入主界面呢?这其实是安卓应用常见的冷热启动问题。本文就和大家一起聊聊冷热启动方式和启动页的体验优化方案。启动方式安卓应用的启动方式分为三种:冷启动、暖启动、热启动,不同的启动方式决定了应用UI对用户可见所需要花费的时间长短。顾名思义,冷启动消耗的时间最长。基于冷启动方式

2017-12-22 15:07:12 717

转载 Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

要完全彻底理解这个问题,需要准备以下4方面的知识:Process/ThreadAndroid Binder IPC,Handler/Looper/MessageQueue消息机制,Linux pipe/epoll机制。总结一下主要有3个疑惑的地方:Android中为什么主线程不会因为Looper.loop()里的死循环卡死?没看见哪里有相关代码为这个死循环准备了一个新线程去运转?Ac

2017-12-13 16:45:32 838

原创 csdn java创建线程的三种方式及其对比

Java中创建线程主要有三种方式:继承Thread类创建线程类 通过Runnable接口创建线程类 通过Callable和Future创建线程一、继承Thread类创建线程类定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。创建Thread子类的实例,即创建了线程对象。调用线程对象的start()方法来

2017-12-07 14:29:51 583

转载 一个APP从启动到主页面显示经历了哪些过程?(App启动流程,从点击桌面开始)

本文以图文并茂的形式简单介绍一个APP从启动到主页面显示经历了哪些流程,以及实现的原理。不介绍具体源码,仅仅构建一个大体框架。原地址链接:http://www.jianshu.com/p/a72c5ccbd150一、流程概述启动流程:①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;②system_server进程接

2017-10-12 19:49:48 6567 1

转载 Java并发编程:volatile关键字解析

原文链接volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先

2017-04-26 17:04:37 305

转载 热修复实现:ClassLoader 方式的实现

在之前的文章 热修复入门:Android 中的 ClassLoader中,讲解了 Android 中的 ClassLoader 工作原理和通过 ClassLoader 实现热修复的可能性。本文结合 Nuva 项目,来讲讲基于 ClassLoader 方式如何具体实现热修复,阅读本文之前建议先通过前面提到的文章了解下 Android 的 ClassLoader。实现的几个关键点在讲解实现思路之前,先

2017-04-06 16:41:23 1084

转载 热修复入门:Android 中的 ClassLoader

从去年下半年开始,热修复技术在 Android 技术社区热了一阵子,这种不用发布新版本就可以修复线上 bug 的技术确实有很大的需求,最近正好在研究一些开源的热修复方案,本文就其中常用的 ClassLoader 方式实现的热修复方案中的 ClassLoader 机制作一个简单的介绍。ClassLoader 简介对于 Java 程序来说,编写程序就是编写类,运行程序也就是运行类(编译得到的 class

2017-04-05 17:54:29 528

转载 View的生命周期方法和Activity生命周期方法关系

View 是在Activity 中使用到的,所以在自定义View的时候,我们需要了解Activity 生命周期方法和View的生命周期方法调用先后顺序。 见如下图(1) 在Activity onCreate方法中初始化了View , 调用了View 的onFinishInflate (2) 在执行完 Activity的 onPostResume方法之后(第一次onResume之后)才真正开始了V

2017-03-31 16:21:14 3190

转载 如何判断应用被强杀以及解决出现的空指针问题

原文链接判断应用被强杀在Application中定义一个静态变量,给一个初始值,然后在闪屏页面为这个变量重新赋值,接下来闪屏页面会跳转到主页面,我们在主页面对这个值进行判断,如果变量的值是初始值,则说明应用被强杀了,接下来看看相关代码public class MyApp extends Application { public static int CODE = -1; publi

2017-03-26 15:47:19 479

原创 Handler.postDelayed(new Runnable)是否运行在主线程

知识点 postDelayed(new Runnable())是否运行在主线程中? 答案 是的。 这个 new Runnable() 依附于创建Handler的线程, 代码如下 在绝对的UI线程中打印线程ID:System.out.println("UI Thread = " + Thread.currentThread().getId()); 下面在posdelayed中打印运行线程的

2017-03-26 13:20:49 9798

转载 Android安全加密:消息摘要Message Digest

Android安全加密专题文章索引Android安全加密:对称加密Android安全加密:非对称加密Android安全加密:消息摘要Message DigestAndroid安全加密:数字签名和数字证书Android安全加密:Https编程1. 常见算法MD5、SHA、CRC 等2. 使用场景对用户密码进行md5 加密后保存到数据库里软件下载站使用消息摘要计算文件指纹,防止被篡改数

2017-03-24 15:14:53 318

转载 Android安全加密:非对称加密

Android安全加密专题文章索引Android安全加密:对称加密Android安全加密:非对称加密 Android安全加密:消息摘要Message Digest Android安全加密:数字签名和数字证书 Android安全加密:Https编程1. 介绍与对称加密算法不同,非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,如果用公钥

2017-03-24 13:57:16 386

转载 Android安全加密:对称加密

Android安全加密专题文章索引Android安全加密:对称加密Android安全加密:非对称加密Android安全加密:消息摘要Message DigestAndroid安全加密:数字签名和数字证书Android安全加密:Https编程一、凯撒密码1.概述凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文

2017-03-24 11:34:08 451

转载 Android App整体架构设计的思考

本文是对我在知乎一个回答的整理,其中的内容大多是对我平时的阅读和实践的总结,希望对Android的开发者有所帮助。但毕竟是个人的一些思考,难免有疏漏,也欢迎对本文的内容提出建议。1. 架构设计的目的对程序进行架构设计的原因,归根到底是为了提高生产力。通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合。这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率,并且更

2017-03-23 13:25:06 775

转载 Android Volley完全解析(四),带你从源码的角度理解Volley

Volley的官方文档中本身就附有了一张Volley的工作流程图,如下图所示。多数朋友突然看到一张这样的图,应该会和我一样,感觉一头雾水吧?没错,目前我们对Volley背后的工作原理还没有一个概念性的理解,直接就来看这张图自然会有些吃力。不过没关系,下面我们就去分析一下Volley的源码,之后再重新来看这张图就会好理解多了。说起分析源码,那么应该从哪儿开始看起呢?这就要回顾一下Volley的用法了,

2017-03-21 14:20:22 235

转载 序列化Serializable和Parcelable的理解和区别

一、android为什么要序列化?什么是序列化,怎么进行序列化why为什么要了解序列化?—— 进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。what什么是序列化 —— 序列化,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。how怎么

2017-03-17 11:00:55 286

原创 如何将一个Java对象写到文件里

import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;class Stude

2017-03-16 14:31:02 6578

原创 自定义Adapter中实现startActivityForResult的分析

最近几天在做文件上传的时候,想在自定义Adapter中启动activity时也返回Intent数据,于是想到了用startActivityForResult,可是用mContext怎么也调不出这个方法,只能调用startActivity这个方法,于是在网上搜一下,可以利用一个方式可以间接的解决这个问题,果断贴代码:Intent mIntent = new Intent(mContext,clazz)

2017-03-16 11:11:47 6493 4

转载 Android:学习AIDL,这一篇文章就够了

原文链接地址:http://www.jianshu.com/p/a8e43ad5d7d21、概述AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言。是的,首先我们知道的第一点就是:AIDL是一种语言。既然是一种语言,那么相应的就很自然的衍生出了一些问题:为什么要设计出这么一门语言?它有哪些语法?我们应该如何使用

2017-03-15 19:08:48 430

原创 如何在android面试中说清楚android中binder机制的实现过程

在进行Android面试时,面试官有时会问到binder机制,而大多数面试者只是大体了解binder的作用,而不能够说出binder机制的具体实现原理。那么可以从这几方面展开对binder机制的说明:Binder是Android系统中的一种IPC进程间通信结构。Binder的整个设计是C/S结构,客户端进程通过获取服务端进程的代理,并通过向这个代理接口方法中读写数据来完成进程间的数据通信。An

2017-03-15 16:08:45 2544

原创 Android中 IntentService 与 Service 的区别

Android中的Service是用于后台服务的,当应用程序被挂到后台的时候,问了保证应用某些组件仍然可以工作而引入了Service这个概念,那么这里面要强调的是Service不是独立的进程,也不是独立的线程,它是依赖于应用程序的主线程的,也就是说,在更多时候不建议在Service中编写耗时的逻辑和操作,否则会引起ANR。那么我们当我们编写的耗时逻辑,不得不被Service来管理的时候,就需要引入I

2017-03-15 15:09:00 576

原创 AsyncTask和Handler的优缺点比较

AsyncTask实现的原理和适用的优缺点AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.使用的优点:简单,快捷过程可控使用的缺点:在使用多个异步操作并需要进行Ui变更时,就变得复杂起来.Handler异步实现的原理和适用的优缺点在

2017-03-15 14:22:51 287

原创 ArrayList、Vector以及LinkList的区别

ArrayList:底层数据结构是数组结构,你就可以把它看成是一个可变大小的且只能装对象的数组。因为数组有索引(角标)所以ArrayList的查询速度快,而添加删除元素速度稍慢。因为,你每删除或者添加一个元素,你都要移动所添加或删除元素后面的所有数据,该集合是线程不同步的 LinkedList:底层数据结构是链表结构的。链表数据结构是没有索引的,当前元素只和他的前一个和后一个元素有关联就像一串珠子

2017-03-15 11:17:24 624

原创 Java中HashMap,LinkedHashMap,TreeMap的区别

Java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。HashMap:Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,

2017-03-15 11:05:46 389

转载 Hashtable 和 HashMap的区别

我们先看2个类的定义public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable public class HashMap extends AbstractMap implements Map, Cloneable, Serializ

2017-03-15 10:36:20 271

原创 Android 面试之 Android 篇

基本概念Android 的四大组件Acitivity、Service、BroadcastReceiver、ContentProviderActivity :应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。BroadcastReceiver广播接收器:应用程序可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络

2017-03-14 21:07:22 318

转载 hashCode()与equals()的区别与联系

一、equals方法的作用默认情况(没有覆盖equals方法)下equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)。要是类中覆盖了equals方法,那么就要根据具体的代码来确定equals方法的作用了,覆盖后一般都是通过对象的内容是否相等来判断对象是否相等。没有覆盖equals方法代码如下

2017-03-13 14:56:18 249

原创 Android面试之 Java篇

面向对象Java面向对象的三个特征与含义继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段。封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。

2017-03-13 10:50:12 384

转载 Android多线程断点续传下载

原理其实断点续传的原理很简单,从字面上理解,所谓断点续传就是从停止的地方重新下载。 断点:线程停止的位置。 续传:从停止的位置重新下载。 用代码解析就是: 断点 : 当前线程已经下载完成的数据长度。 续传 : 向服务器请求上次线程停止位置之后的数据。 原理知道了,功能实现起来也简单。每当线程停止时就把已下载的数据长度写入记录文件,当重新下载时,从记录文件读取已经下载了的长度。而这个长度就

2017-03-11 15:03:59 262

原创 Java内存管理分析

Java的内存管理就是对象的分配和释放问题。在 Java 中,程序员需要通过关键字 new 为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。另外,对象的释放是由 GC 决定和执行的。在 Java 中,内存的分配是由程序完成的,而内存的释放是由 GC 完成的,这种收支两条线的方法确实简化了程序员的工作。但同时,它也加重了JVM的工作。这也是 Java 程序运行速度较

2017-03-09 15:44:26 219

转载 增强for循环和普通for循环的区别

增强for循环亦为高级for循环。 增强for循环内部是使用的Iterator来遍历的,只能遍历数组和实现了Iterable接口的集合。优点是写法简便,无需获得数组、集合长度,也无需根据索引来访问元素。缺点是不能在循环里动态的删除元素和获取元素下标。 任何的增强for循环都可以改写为普通for循环。遍历集合所有元素的话用增强for循环更加简洁,如果是复杂的循环,还是用for循环比较好,for循环

2017-03-09 10:46:40 1289 1

转载 HashMap实现原理分析

1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表 链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表 那么我们能不能

2017-03-08 17:42:59 215

转载 深入剖析 Android中的 ArrayMap

数据集合在任何一门编程语言中都是很重要的一部分,在 Android 开发中,我们会实用到ArrayList, LinkedList, HashMap等。其中HashMap是用来处理键值对需求的常用集合。 而Android中引入了一个新的集合,叫做ArrayMap,为键值对存储需求增加了一种选择。ArrayMap是什么一个通用的key-value映射数据结构相比HashMap会占用更少的内存空间

2017-03-08 16:31:24 475

转载 如何在Android中避免创建不必要的对象

在编程开发中,内存的占用是我们经常要面对的现实,通常的内存调优的方向就是尽量减少内存的占用。这其中避免创建不必要的对象是一项重要的方面。Android设备不像PC那样有着足够大的内存,而且单个App占用的内存实际上是比较小的。所以避免创建不必要的对象对于Android开发尤为重要。本文会介绍一些常见的避免创建对象的场景和方法,其中有些属于微优化,有的属于编码技巧,当然也有确实能够起到显著效果的方法。

2017-03-08 15:17:24 237

转载 Android中Handler引起的内存泄露

在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用。通常我们的代码会这样实现。public class SampleActivity extends Activity { private final Handler mLeakyHandler = new Handler() { @Override public void handleMessage(

2017-03-07 19:41:33 256

原创 触摸事件与手势监听--Android GestureDetector详解

目录事件监听的方法GestureDetector类GestureDetector使用方法GesturetDetector.OnGestureListener 接口GesttureDetector.OnDoubleTapListener 接口GesttureDetector.SimpleOnGestureListener 类事件监听的方法在Android应用层上主要有两个层面的触摸事件监

2017-03-07 13:53:20 1056

转载 Android DiskLruCache完全解析,硬盘缓存的最佳方案

概述记得在很早之前,我有写过一篇文章Android高效加载大图、多图解决方案,有效避免程序OOM,这篇文章是翻译自Android Doc的,其中防止多图OOM的核心解决思路就是使用LruCache技术。但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次图片,这显然非常耗时。对此,Google又提供了一套硬盘缓存的解决方案:DiskLruCa

2017-03-04 16:26:30 339

转载 Android高效加载大图、多图解决方案,有效避免程序OOM

高效加载大图片我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状、不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小。比如说系统图片库里展示的图片大都是用手机摄像头拍出来的,这些图片的分辨率会比我们手机屏幕的分辨率高得多。大家应该知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常。我们可以通过

2017-03-03 19:42:34 260

艾薇播放器

艾薇播放器实现了Mp3播放器的大部分功能

2013-10-15

Java 五子棋 毕业设计 毕业论文 (全套)一个月的成果

】 五子棋是黑白双方或两个人之间的竞技活动,由于对黑白双方规则不同,黑棋 必须先行。一般采用猜先的方法来决定谁执黑先行,即双方各抓一种颜色的几枚棋子, 大数减小数,单数双方交换,偶数不换; 【2】 禁手示例: ┼●●┼┼ ┼┼┼┼┼ ┼●●X┼ ┼┼X┼┼ ┼┼●┼┼ ┼┼┼┼┼ ┼┼┼●┼ ┼●X●┼ ┼●┼┼┼ ┼┼●┼┼ ┼┼●┼┼ ●┼┼┼┼ ┼┼┼┼┼ ┼┼┼┼┼ ┼┼┼┼┼ X为三、三禁手 ┼┼┼┼┼ ┼┼●┼┼ X●●●┼ ┼┼┼┼┼ ┼●┼┼┼ ●●X●┼ X为四、四禁手 ┼┼●┼┼ ┼┼●┼┼ ┼┼┼●┼ ┼┼●┼┼ ┼┼┼┼┼ ┼┼┼┼┼ ┼┼┼┼┼┼┼┼ ┼●●X●●●┼ X为长连禁手 ┼┼┼┼┼┼┼┼ 【3】 黑方在落下关键的第五子即形成五连的同时,如又形成禁手,此时因黑方已经 成五,而“五”在五子棋中是至高无上的,故禁手失效,黑方胜; 【4】 所谓黑方形成禁手,是指黑方落下一子同时形成两个或两个以上的活三、冲四 及长连等。此时白方应立即指出,自然而胜。 专业连珠五子棋虽然对黑棋采取了种种限制,但是黑棋先行的优势依然很大。因此, 在高段位的专业比赛中,又出现了三种特殊的规定: 【1】“指定打法”:指比赛双方按照约定好的开局进行对弈。例如“斜月局”、 ”长星局”等。 【2】“三手可交换”:指黑棋下第二手棋〔盘面第三手棋〕之后,白方如感觉黑方 棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方〔此方法不适用于指定开 局打法,而用于随意开局〕。采用此规定以后,黑棋就不会再使用诸如“浦月”、“花 月”之类的必胜开局了。 【3】“五手两打”:指黑棋在下盘面上关键的第五手棋时,必须下两步棋,让白方 在这两步棋中任选一步,然后再继续下。 ┼┼┼┼┼ 如图所示,盘面已有四手棋,黑5选择A、B两点, ┼┼A┼┼ 让白棋任选一点后再继续对弈。白棋肯定选择对黑棋不 ┼┼○┼┼ 利的A点。采用这一规定以后,黑棋先行就再无优势可 ┼●○●┼ 言。 ┼┼B┼┼

2011-05-11

《计算机网络--自顶向下的方法和Internet特色》配套中文ppt及习题答案.rar

《计算机网络--自顶向下的方法和Internet特色》配套中文ppt及习题答案.rar 西安交通大学老师主讲的ppt及其课后答案 对学习网络通信及其结构协议有很好的帮助 《计算机网络--自顶向下的方法和Internet特色》配套中文ppt及习题答案.rar 西安交通大学老师主讲的ppt及其课后答案 对学习网络通信及其结构协议有很好的帮助

2009-09-24

delphi课程设计+汽车销售.rar

如果您是车迷 不妨用用看 保证您满意 很经典的呀 当时老师夸我做的不错 可以卖了 还行吧!!!!!!!!!!!!!!!!!!!!!!!

2009-06-08

DELPHI仓库管理系统源代码.rar

这个系统比较简单 适合于菜鸟级的学生 蒙混过关还是没问题的 内容比较详细 一看就会呵呵

2009-06-08

C++的课程设计 很多 很好

C++的课程设计 很多 很好 这是我们老师精心挑选的 经典!!!11

2009-05-31

操作系统习题 很好的

希望有助于大家,谢谢!! 很难找的呀!!!!!!!!!!!!!

2009-05-31

空空如也

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

TA关注的人

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