自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lin20080410的专栏

从站在巨人的肩上,向成为巨人迈进... 互相学习!

  • 博客(18)
  • 资源 (10)
  • 收藏
  • 关注

原创 Android进程-zygote进程

一,zygote进程zygote进程的父进程是init,zygote也是所有应用的父进程,也是system_server进程的父进程。 1.1  Zygote系统源码组成1)     Zygote.java(frameworks/base/core/java/com/android/internal/os/)提供访问vm的zygote接口,主要是包装Linux系统的fork,以

2018-01-31 17:49:32 470

原创 Android中的线程模型(十一)

转 如何优雅的停止线程:http://www.cnblogs.com/l2rf/p/5566895.htmlAndroid规定只有ui线程,也就是主线程才可以刷新UI,这样的规定的原因是UI操作是非线程安全的,如果允许多个线程同时执行ui操作,就必要加同步,而同步机制会影响执行性能,因为在同步中去wait或notify一个线程,通常都要借助操作系统来完成,所以存在用户线程跟内核线程之间的切换,这个...

2018-01-29 09:11:14 338

原创 多线程编程-线程中异常的处理(十)

1,对指定的线程对象设置默认的异常处理: setUncaughtExceptionHandler()。测试代码:public class MyThread extends Thread{ @Override public void run() { String user = null; System.out.println("--"+user.hashCode());

2018-01-22 15:15:46 262

原创 多线程编程-单例模式的实现方式(九)

1,饿汉式,也叫立即加载,就是使用类的时候已经将对象创建完毕,常用的方法是直接new实例化。public class SingletonObject { private static SingletonObject sObj = new SingletonObject(); private SingletonObject(){ } public static SingletonOb

2018-01-22 11:29:15 212

原创 多线程编程-ReentrantReadWriteLock(八)

ReentrantReadWriteLock类1,ReentrantLock类具有完全互斥排他的效果,即同一时刻只有一个线程在执行ReentrantLock().lock()方法后面的代码。这样做虽然保证了实例变量的线程安全性,到时效率较低。ReentrantReadWriteLock类,包括两个锁,一个是读操作相关的锁,也称共享锁;另一个是写操作相关的锁,也称排他锁。多个读锁之间不互斥,读锁和写

2018-01-19 15:50:53 198

原创 多线程编程-ReentrantLock(八)

1,在java多线程中,可以使用synchronized关键字实现线程间同步互斥,也可以使用ReentrantLock达到同样的效果。ReentrantLock拥有一些扩展功能,如:等待可中断,可实现公平锁,锁可以绑定多个条件,尝试锁定等。测试代码:public class MyService { private Lock lock = new ReentrantLock(); public

2018-01-19 10:50:48 266

原创 多线程编程-线程间通信-ThreadLocal(七)

1,ThreadLocal类主要解决的是每个线程绑定自己的值,这里存储的是每个线程私有的数据,解决了变量在不同线程间的隔离性。测试代码:public class Tools { public static ThreadLocal tl = new ThreadLocal();}public class ThreadA extends Thread { @Override public v

2018-01-18 10:16:02 818

原创 多线程编程-线程间通信-join方法的使用(六)

方法join的使用1,主线程启动子线程后,如果主线程项等子线程执行完成后再结束,就要用到join()方法了。测试代码:public class JoinThread extends Thread{ @Override public void run() { try { int value = (int)(Math.random()*10000); System.out.pri

2018-01-17 17:30:59 256

原创 多线程编程-线程间通信.管道(五)

通过管道进行线程间通信:字节流(PipedOutputStream,PipedInputStream)在Java中提供了各种各样的输入/输出流Stream,其中管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。使用管道实现线程间的通信,不需要借助类似临时文件之类的东西。测试代码:public class

2018-01-17 14:58:50 676

原创 多线程编程-线程间通信.wait/notify(四)

多个线程通过共同访问一个变量的方式,也可以实现线程间通信,通过这种方式,线程要主动去读取一个共享变量,一方面需要加同步,另一方面花费了读取变量的时间,但是读取到的值是不是要想要的,并不能确定。而等待/通知机制,可以更好解决线程间数据读取时机的问题。1,不使用等待/通知机制的线程间通信测试代码:public class MyList { private List list = new ArrayL

2018-01-16 17:36:27 419

原创 多线程编程-volatile关键字(三)

2.3 volatile关键字Volatile关键字的主要作用是使变量的多个线程间可见。还有一点就是禁止指令重排序。 使用volatile关键字增加了实例变量在多个线程之间的可见性,但是volatile不能保证原子性。关键synchronized和volatile的比较:1)volatile是线程同步的轻量级实现,所以volatile性能比synchronized要好,并且vo

2018-01-15 16:00:26 290

原创 Java的内存分配和管理

Java的内存分配和管理Java内存分配时涉及的区域:寄存器:在程序中无法控制;栈:存放基本类型的数据和对象的引用,但是对象本身不存放在栈中,而是存放在堆中;堆:存放用new产生的数据;静态域:存放在对象中用static定义的静态成员;常量池:存放常量。内存分配中的栈和堆1.栈在函数中定义的一些基本类型的变量数据,还有对象的引用变量都在函数的栈内存中分配。...

2018-01-14 22:46:13 6167 1

原创 Android 虚拟机的进程管理

一Android 虚拟机的进程管理Android 虚拟机进程管理是依赖linux的进程体系结构的,要为应用程序创建一个进程,它会使用linux的fork机制来复制一个进程(复制进程比创建进程更高效) 。执行这个操作的就是zygote。zygote是一个虚拟机进程,也是一个虚拟机实例的孵化器。当一个应用程序启动时,会通过socket发出请求,zygote在收到请求后会fork一个新的应用程序

2018-01-13 22:47:50 2026

原创 多线程编程-synchronized语句块(二)

2.2 synchronized 同步语句块2.2.1 使用synchronized同步方法时,如果一个线程调用同步方法执行一个长时间的任务,那么其他线程必须等待很长时间,这时用同步语句块可提高执行效率。同步方法耗时测试代码:public class Task { private String getData1; private String getData2; publ

2018-01-12 14:36:57 230

原创 多线程编程-Synchronized同步方法(二)

2.1 synchronized 同步方法    “非线程安全”会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”,也就是读到的数据其实是被更改过的。    “线程安全”就是获取的实例变量的值是经过同步处理的,不会出现脏读的现象。 2.1.1 方法内的变量是线程安全的    “非线程安全”的问题存在于“实例变量”中,如果是方法内部的私有变量,就是“线

2018-01-10 15:40:28 328

原创 多线程编程-Java线程概述(一)

一,Java多线程技能1.1进程和多线程的概念可以把一个正在操作系统中运行的程序理解为一个“进程”。进程是受操作系统管理的基本运行单元。线程可以理解为在进程中独立运行的子任务。当打开浏览器,下载文件的同时,还可以打开看视频,这些功能就对应了多个线程在后台运行。使用多线程就是在使用异步,因为每个线程被调用的时机是随机的。1.2继承Thread类,实现Runnable接口。实现多线程的方式...

2018-01-09 10:12:25 230

原创 Android GUI系统-ViewTree的绘图遍历(六)

ViewTree的绘图遍历绘图遍历也就是ViewTree遍历过程的最后一步。这个过程有3个核心的步骤:1)canvas= mSurface.lockCanvas(dirty);2)mView.draw(canvas);3)surface.unlockCanvasAndPost(canvas);和View直接交互的是canvas,可以认为是作画的工具集。应用程序跟surf

2018-01-07 20:48:50 406

转载 基于android6.0版本的SELinux文件访问安全策略

转自:http://blog.chinaunix.net/uid-7213935-id-5750899.html 在android6.0以后的版本,google采用了SELinux的文件访问安全策略,想比较以前,绝对提高了文件的安全,不像以前那样,对文件访问可以是无条件的。本篇文章就分享下常用的一些安全策略。1. linux传统 设备文件访问控制方法 传统的 Linux设备文件

2018-01-02 16:41:52 323

simple-ffmpeg-player.zip

基于ffmpge实现的简单的播放器.仅包含音视频处理相关代码,不涉及UI.主要作为学习ffmpeg的笔记记录.适合小白,大牛请绕行哈...

2020-03-13

simplePlayer.zip

基于ffmpge实现的简单的播放器.仅包含音视频处理相关代码,不涉及UI.主要作为学习ffmpeg的笔记记录.适合小白,大牛请绕行哈...

2020-03-13

jetty-libs-9.4.zip

jetty-client-9.4.24.v20191120, jetty-continuation-9.4.24.v20191120 jetty-http-9.4.24.v20191120 jetty-io-9.4.24.v20191120 jetty-security-9.4.24.v20191120 jetty-server-9.4.24.v20191120 jetty-servlet-9.4.24.v20191120 jetty-util-9.4.24.v20191120

2019-11-26

Gif文件的解码

Gif图片文件的解码过程

2018-02-14

android studio3.1匹配的gradle版本最新4.4

android studio3.1匹配的gradle版本最新4.4,gradle-4.4-20171031235950+0000-all.zip

2017-12-25

release3.1

cglib/cglib/3.1 Code Generation Library maven依赖 &lt;!-- https://mvnrepository.com/artifact/cglib/cglib --&gt; <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.1</version> </dependency>

2017-11-21

android make 介绍

android make 介绍 Make 文件说明 整个 Build 系统的入口文件是源码树根目录下名称为“Makefile”的文件,当在源代码根目录上调用 make 命令 时,make 命令首先将读取该文件。 Makefile 文件的内容只有一行:“include build/core/main.mk”。该行代码的作用很明显:包含 build/core/main.mk 文 件。在 main.mk 文件中又会包含其他的文件,其他文件中又会包含更多的文件,这样就引入了整个 Build 系统。 这些 Make 文件间的包含关系是相当复杂的,图 3 描述了这种关系,该图中黄色标记的文件(且除了 $开头的文件) 都位于 build/core/ 目录下。 Android 源码中包含了许多的模块,模块的类型有很多种,例如:Java 库,C/C++ 库,APK 应用,以及可执行文件 等 。并且,Java 或者 C/C++ 库还可以分为静态的或者动态的,库或可执行文件既可能是针对设备(本文的“设备”指 的是 Android 系统将被安装的设备,例如某个型号的手机或平板)的也可能是针对主机(本文的“主机”指的是开发 Android 系统的机器,例如装有 Ubuntu 操作系统的 PC 机或装有 MacOS 的 iMac 或 Macbook)的。不同类型的模块 的编译步骤和方法是不一样,为了能够一致且方便的执行各种类型模块的编译,在 config.mk 中定义了许多的常量, 这其中的每个常量描述了一种类型模块的编译方式,这些常量有: BUILD_HOST_STATIC_LIBRARY:= $(BUILD_SYSTEM)/host_static_library.mk BUILD_HOST_SHARED_LIBRARY:= $(BUILD_SYSTEM)/host_shared_library.mk BUILD_STATIC_LIBRARY:= $(BUILD_SYSTEM)/static_library.mk BUILD_RAW_STATIC_LIBRARY := $(BUILD_SYSTEM)/raw_static_library.mk BUILD_SHARED_LIBRARY:= $(BUILD_SYSTEM)/shared_library.mk BUILD_EXECUTABLE:= $(BUILD_SYSTEM)/executable.mk BUILD_RAW_EXECUTABLE:= $(BUILD_SYSTEM)/raw_executable.mk BUILD_HOST_EXECUTABLE:= $(BUILD_SYSTEM)/host_executable.mk BUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mk BUILD_PHONY_PACKAGE:= $(BUILD_SYSTEM)/phony_package.mk BUILD_HOST_PREBUILT:= $(BUILD_SYSTEM)/host_prebuilt.mk BUILD_PREBUILT:= $(BUILD_SYSTEM)/prebuilt.mk BUILD_MULTI_PREBUILT:= $(BUILD_SYSTEM)/multi_prebuilt.mk BUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mk BUILD_STATIC_JAVA_LIBRARY:= $(BUILD_SYSTEM)/static_java_library.mk BUILD_HOST_

2017-11-16

如何分析JAVA crash

如何分析JAVA crash 为什么程序会Crash? 什么是异常? 如何分析JAVA Crash 程序执行时发生了无法处理的异常 崩溃分为 Java Crash 和 Native Crash

2017-11-16

Arm公司培训资料

ARM7总线接口,ARM_THUMB指令,ARM编程技巧,ARM架构,ARM嵌入式开发,ARM处理器内核介绍

2013-12-20

ADB的安装卸载及使用

adb的使用介绍,包括adb的安装,adb的卸载,以及adb的常用的命令

2013-09-27

空空如也

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

TA关注的人

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