05 2017 档案

摘要:本文继续介绍23种设计模式系列之单例模式。 概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实 阅读全文
posted @ 2017-05-31 17:17 鸭子船长 阅读(199) 评论(0) 推荐(0) 编辑
摘要:1、htop 2、top 内容解释: PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程使用的共享内存 S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先 阅读全文
posted @ 2017-05-31 17:07 鸭子船长 阅读(1375) 评论(0) 推荐(0) 编辑
摘要:LInux命令只是和Kernel一起被编译进操作系统的存在于FS的ELF格式二进制文件,或者权限足够的脚本,或者一个软链 ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的 阅读全文
posted @ 2017-05-31 16:59 鸭子船长 阅读(7946) 评论(0) 推荐(0) 编辑
摘要:TCP的RTT算法 从前面的TCP的重传机制我们知道Timeout的设置对于重传非常重要, 设长了,重发就慢,没有效率,性能差; 设短了,重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。 而且,这个超时时间在不同的网络的情况下,有不同的时间,根本没有办法设置一个死的。只能动态地 阅读全文
posted @ 2017-05-27 18:12 鸭子船长 阅读(256) 评论(0) 推荐(0) 编辑
摘要:TCP协议的定义和丢包时的重传机制 废话少说,首先,我们需要知道TCP在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data Link层,在第二层上的数据,我们叫Frame,在第三层上的数据叫Packet,第四层的数据叫Segment。 阅读全文
posted @ 2017-05-27 16:19 鸭子船长 阅读(200) 评论(0) 推荐(0) 编辑
摘要:Camera视角:确定显示的视场及视角。 Game:显示的基类。静态单例模式。但是获取方式很奇怪。 Game::getInstance得到的是__gameInstance,但是__gameInstance是在Game()构造函数里=this。因此如果没有Game的实例,this就是NULL。 然而使 阅读全文
posted @ 2017-05-26 12:36 鸭子船长 阅读(648) 评论(0) 推荐(0) 编辑
摘要:一、回顾JVM内存分配 需要了解更多内存模式与内存分配的,请看 深入JVM系列(一)之内存模型与内存分配 1.1、内存分配: 1、对象优先在EDEN分配2、大对象直接进入老年代 3、长期存活的对象将进入老年代 4、适龄对象也可能进入老年代:动态对象年龄判断 动态对象年龄判断: 虚拟机并不总是要求对象 阅读全文
posted @ 2017-05-25 23:30 鸭子船长 阅读(904) 评论(0) 推荐(0) 编辑
摘要:大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解。 String很多实用的特性,比如说“不可变性”,是工程师精心设计的艺术品!艺术品易碎!用final就是拒绝继承,防止世界被熊孩子破坏,维护世界和平! 1 阅读全文
posted @ 2017-05-25 17:02 鸭子船长 阅读(318) 评论(1) 推荐(0) 编辑
摘要:同时加载编译多个jar包和java文件 在个人平常使用或者当我们把代码部署到linux服务器上的时候,我们经常需要通过命令行编译和运行java文件,网上关于这个的方法大多是通过 这种方法。但是加入在filepath文件夹下面有好几个jar包,在src文件夹中有好几个java文件的时候,这个方法就很笨 阅读全文
posted @ 2017-05-25 16:11 鸭子船长 阅读(2713) 评论(0) 推荐(0) 编辑
摘要:查看java字节码 1 javac –verbose查看运行类是加载了那些jar文件 HelloWorld演示: javac –verbose HelloWorld.java 可以看到虚拟机编译时做了那些事情…… java –verbose HelloWorld 可以看到虚拟机运行一个程序时加载的j 阅读全文
posted @ 2017-05-25 16:10 鸭子船长 阅读(15045) 评论(0) 推荐(0) 编辑
摘要:方法调用并不等于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。 在程序运行时,进行方法调用是最普遍、最频繁的操作,但是Class文件的编译过程不包括传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方 阅读全文
posted @ 2017-05-25 16:08 鸭子船长 阅读(295) 评论(0) 推荐(0) 编辑
摘要:1.重载(overload)方法 对重载方法的调用主要看静态类型,静态类型是什么类型,就调用什么类型的参数方法。 2.重写(override)方法 对重写方法的调用主要看实际类型。实际类型如果实现了该方法则直接调用该方法,如果没有实现,则在继承关系中从低到高搜索有无实现。 3. java文件的编译过 阅读全文
posted @ 2017-05-25 15:20 鸭子船长 阅读(1695) 评论(0) 推荐(1) 编辑
摘要:基于Android 6.0的源码剖析, 分析android Activity启动流程,相关源码: frameworks/base/services/core/java/com/android/server/am/ - ActivityManagerService.java - ActivitySta 阅读全文
posted @ 2017-05-20 23:03 鸭子船长 阅读(9817) 评论(0) 推荐(0) 编辑
摘要:一、概括 系统启动架构图: 上图在Android系统-开篇中有讲解,是从Android系统启动的角度来分析,本文是从进程/线程的视角来分析该问题。 1.1 父进程 在所有进程中,以父进程的姿态存在的进程(即图中的浅红色项),如下: kthreadd进程: 是所有内核进程的父进程 init进程 : 是 阅读全文
posted @ 2017-05-20 21:23 鸭子船长 阅读(893) 评论(0) 推荐(0) 编辑
摘要:/android/libcore/libart/src/main/java/java/lang/Thread.java /art/runtime/native/java_lang_Thread.cc /art/runtime/native/java_lang_Object.cc /art/runti 阅读全文
posted @ 2017-05-19 16:15 鸭子船长 阅读(3186) 评论(0) 推荐(0) 编辑
摘要:一.概述 1.1 引言 话说Android开源系统拥有着App不计其数,百家争鸣,都想在这“大争之世”寻得系统存活的一席之地。然则系统资源有限,如若都割据为王,再强劲的CPU也会忙不过来,再庞大的内存终会消耗殆尽,再大容量的电池续航终会昙花一现。 面对芸芸众生,无尽变数,系统以不变应万变,一招绝杀神 阅读全文
posted @ 2017-05-19 16:01 鸭子船长 阅读(4485) 评论(0) 推荐(0) 编辑
摘要:1 启动persistent应用 在Android系统中,有一种永久性应用。它们对应的AndroidManifest.xml文件里,会将persistent属性设为true,比如: 在系统启动之时,AMS的systemReady()会加载所有persistent为true的应用。 其中的STOCK_ 阅读全文
posted @ 2017-05-19 15:59 鸭子船长 阅读(404) 评论(0) 推荐(0) 编辑
摘要:一. 概述 Android系统将进程做得很友好的封装,对于上层app开发者来说进程几乎是透明的. 了解Android的朋友,一定知道Android四大组件,但对于进程可能会相对较陌生. 一个进程里面可以跑多个app(通过share uid的方式), 一个app也可以跑在多个进程里(通过配置Andro 阅读全文
posted @ 2017-05-19 15:36 鸭子船长 阅读(2674) 评论(0) 推荐(1) 编辑
摘要:大多数情况下,app都是单进程架构,对于多进程架构的app一般是通过在AndroidManifest.xml中android:process属性来实现的。 当android:process属性值以”:”开头,则代表该进程是私有的,只有该app可以使用,其他应用无法访问; 当android:proce 阅读全文
posted @ 2017-05-19 15:19 鸭子船长 阅读(1049) 评论(0) 推荐(0) 编辑
摘要:基于Android 6.0的源码剖析, 分析kill进程的实现原理,以及讲讲系统调用(syscall)过程,涉及源码: /framework/base/core/java/android/os/Process.java /framework/base/core/jni/android_util_Pr 阅读全文
posted @ 2017-05-18 22:22 鸭子船长 阅读(5191) 评论(0) 推荐(0) 编辑
摘要:一. 概述 当发生ANR(Application Not Response,对于Java进程可通过kill -3向目标进程发送信号SIGNAL_QUIT, 输出相应的traces信息保存到目录/data/anr/traces.txt;而对于Native进程可通过 debuggerd输出traces信 阅读全文
posted @ 2017-05-18 16:43 鸭子船长 阅读(2758) 评论(0) 推荐(0) 编辑
摘要:一、概述 Android 6.0系统采用的art虚拟机,所有的Java进程都运行在art之上,当应用发生ANR(Application Not Response,其中最终的一个环节便是向目标进程发送信号SIGNAL_QUIT, 传统的linux则是终止程序并输出core;而对于Android进程来说 阅读全文
posted @ 2017-05-18 16:36 鸭子船长 阅读(1109) 评论(0) 推荐(0) 编辑
摘要:一. 概述 当input事件处理得慢就会触发ANR,那ANR内部原理是什么,哪些场景会产生ANR呢。 “工欲善其事必先利其器”,为了理解input ANR原理,前面几篇文章疏通了整个input框架的处理流程,都是为了这篇文章而做铺垫。在正式开始分析ANR触发原理以及触发场景之前,先来回顾一下inpu 阅读全文
posted @ 2017-05-18 15:18 鸭子船长 阅读(9885) 评论(0) 推荐(1) 编辑
摘要:一、概述 ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。一般地,这时往往会弹出一个提示框,告知用户当前xxx未响应,用户可选择继续等待或 阅读全文
posted @ 2017-05-18 15:05 鸭子船长 阅读(946) 评论(0) 推荐(1) 编辑
摘要:/frameworks/base/core/java/com/android/internal/os/ - ZygoteInit.java - ZygoteConnection.java - RuntimeInit.java - Zygote.java /frameworks/base/core/j 阅读全文
posted @ 2017-05-17 15:56 鸭子船长 阅读(4045) 评论(0) 推荐(0) 编辑
摘要:转自:http://gityuan.com/2015/12/26/handler-message-framework/ 相关源码 framework/base/core/java/andorid/os/Handler.java framework/base/core/java/andorid/os/ 阅读全文
posted @ 2017-05-16 16:52 鸭子船长 阅读(834) 评论(0) 推荐(0) 编辑
摘要:一、Native层Binder 源码结构: ClientDemo.cpp: 客户端程序 ServerDemo.cpp:服务端程序 IMyService.h:自定义的MyService服务的头文件 IMyService.cpp:自定义的MyService服务 Android.mk:源码build文件 阅读全文
posted @ 2017-05-16 16:23 鸭子船长 阅读(395) 评论(0) 推荐(0) 编辑
摘要:PS:个人理解:当进程1通过Binder调用组件2时,会将进程1的pid及uid赋给组件2,并检测进程1的pid及uid是否有权限调用组件2.而后组件2需要调用组件3,此时组件2保存的pid及uid为进程1的,但是其实际运行在进程2中。此时调用clearCallingIdentity将组件2的保存的 阅读全文
posted @ 2017-05-16 10:59 鸭子船长 阅读(2998) 评论(0) 推荐(0) 编辑
摘要:__user宏简单告诉编译器(通过 noderef)不应该解除这个指针的引用(因为在当前地址空间中它是没有意义的)。 (void __user *)arg 指的是arg值是一个用户空间的地址,不能直接进行拷贝等,要使用例如copy_from_user,copy_to_user等函数。 默认是内核空间 阅读全文
posted @ 2017-05-12 15:30 鸭子船长 阅读(613) 评论(0) 推荐(0) 编辑
摘要:在Android的官方文档当中,对android:screenOrientation的说明如下: android:screenOrientationThe orientation of the activity's display on the device. The value can be an 阅读全文
posted @ 2017-05-10 14:48 鸭子船长 阅读(401) 评论(0) 推荐(0) 编辑
摘要:linux驱动程序一般工作在内核空间,但也可以工作在用户空间。下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们。Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚 阅读全文
posted @ 2017-05-09 17:15 鸭子船长 阅读(1159) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示