自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 Linux 内存管理内存统计信息类型 VSS/RSS/PSS/USS

PSS,与RSS不同,它按比例表示使用的共享库,例如:如果有三个进程都使用了同一个共享库,共占用了30页内存,那么PSS将认为每个进程分别占用该共享库10页的大小。PSS是非常有用的数据,因为系统中所有进程的PSS都相加的话,就刚好反映了系统中的全部内存占用。而当一个进程被销毁之后,其占用的共享库那部分比例的PSS,将会再次按比例分配给余下使用该库的进程。VSS,是一个进程总共可以访问的地址空间,其大小还包括了可能不在RAM中的内存(比如虽然malloc分配可空间,但尚未写入)。

2023-05-08 12:13:21 882 1

原创 [Android][Framework][智能指针]

智能指针简介智能指针是c++ 中的一个概念,因为c++ 本身不具备垃圾回收机制,而且指针也不具备构造函数和析构函数,所以为了实现内存( 动态存储区) 的安全回收,必须对指针进行一层封装,而这个封装就是智能指针,c++的智能指针有很多实现方式,有auto_ptr , unique_ptr , shared_ptr 三种,还有其他的。android 中的sp 句柄类实际上就是google 实现...

2019-05-06 21:13:12 228 1

原创 [软件架构] [MVVM模式]

一、从MVC到MVP到MVVMMVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。这种模式跟经典的MVP(Model-View-Presenter)模式很相似,除了你需要一个为View量身定制的model,这个model就是ViewModel。ViewModel包含所有...

2019-04-14 18:08:35 432

原创 [软件架构] [MVP模式] [MVP与MVC模式的区别]

一、MVP架构模式介绍简称:MVP全称:Model-View-PresenterMVP中的M代表Model,即数据层,V代表View,即界面层,P代表Presenter,负责关联Model和View,把Model层的数据显示到View。MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显...

2019-04-14 17:19:15 1232

原创 [软件架构] [MVC模式]

一、深入理解MVC概念,MVC模式是什么MVC即Model-View-Controller。M:逻辑模型,V:视图模型,C:控制器。  MVC模式下,系统框架的类库被划分为3种:模型(Model)、视图(View)、控制器(Controller)。模型对象负责建立数据结构和相应的行为操作处理。视图对象负责在屏幕上渲染出相应的图形信息展示给用户看。控制器对象负责截获用户的按键和屏幕触摸等事...

2019-04-12 16:07:40 1058

原创 [Android] [Android的视窗系统及显示机制][下] [底层显示子系统Surface与SurfaceFlinger]

目录一、Surface绘制的精简流程二、深入分析Surface与SurfaceFlinger2.1 Surface2.1.1 与Surface相关的基础知识介绍一、Surface绘制的精简流程二、深入分析Surface与SurfaceFlinger2.1 Surface2.1.1 与Surface相关的基础知识介绍显示层(Layer)和屏幕组成图8-10 屏幕组成示意...

2019-04-11 16:10:08 925

原创 [Android] [Android的视窗系统及显示机制][上]

概述一个大型嵌入式系统的视窗显示机制,通常包括两部分,窗口管理子系统、底层显示子系统,应用程序则是基于此之上,调用相关接口进行显示,并接受窗口管理。Android当中,特有的应用组件模型、系统服务模型的设计,让这两块系统看似(就是)错踪复杂,通过大量的梳理之后,依然可以清晰地看到这两个子系统的设计。还记得FrameWork那张大的架构图吗? 这里给出了清晰的视窗显示系统架构,明晰了应用程序与...

2019-04-03 12:27:59 547

原创 [Android][应用架构] [手机淘宝的架构演进-总结]

手机淘宝的架构演进-总结架构需求整体的架构需求隔离性:传统的移动 App 的开发和集成方式并不适合企业级开发。一个具备很好隔离性的模块化架构是大规模并行开发的基础。动态性:互联网追求唯快不破,从架构上将我们希望能够在富客户端时代同样也能保留 web 的轻盈和灵活。动态性是很重要的前提。极致的网络体验:全双工的接入平台保障了接入层的伸缩性和稳定体验,不管用户在何种网络环境下都能拥有顺...

2019-04-02 11:07:10 712

原创 [Android][应用架构] [微信Android客户端架构演进之路]

总结设计上简单到复杂早期,简单,复杂的分出去,后期,优化,分化,到支撑多功能多业务的复杂架构分层设计早期,简单的垂直三层(UI/支撑/网络及数据底层),MVC架构后期,依然分层,但轻重分离轻重进程分离技术上分层 + MVC架构进程分离优点,减少被杀的可能。 缺点,增加开启主进程时,应用界面启动缓慢性能上的变化,空闲时占用少,多进程开启时,占用系统资源变得比单进程更多解耦...

2019-04-01 20:13:53 549

原创 [Java] [Java并发] [Java并发时锁优化技巧及注意事项,常见错误]

Java锁优化技巧1、减少锁的持有时间持有时间越短,竞争越短,并发越多,越快2、减小锁的粒度类似1吧,切入点不同,作用对象、区域粒度越小,竞争时间越短,并发越快3、锁分离经典套路,读写锁分离,内存访问区域分离,避免扎堆4、锁粗化反向优化,合并过度细化的锁粒度5、锁消除编译期锁消除(如逃逸分析后锁优化),JVM运行期的锁优化,有偏向锁,轻量级锁,自旋锁6、ThreadLocal...

2019-03-31 17:15:17 132

原创 [Android] [Hybrid APP] [Weex开发简述]

WEEXWeex 是使用流行的 Web 开发体验来开发高性能原生应用的框架。Weex 致力于使开发者能基于通用跨平台的 Web 开发语言和开发经验,来构建 Android、iOS 和 Web 应用。简单来说,在集成了 WeexSDK 之后,你可以使用 JavaScript 语言和前端开发经验来开发移动应用。Weex 渲染引擎与 DSL 语法层是分开的,Weex 并不强依赖任何特定的前端框架。...

2019-03-28 17:36:05 291

原创 [Android] [Hybrid APP开发简述]

Hybrid APPHybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。Hybrid App同时使用网页语言与程序语言开发,通过应用商店区分移动操作系统分发,用户需要安装使用的移动应用”。总体特性更接近Native App但是和Web App区别较大。只是...

2019-03-28 16:54:49 600

原创 [Android] [RxJava详解] 【转载】

RxJava / RxAndroid 开源库在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github:https://github.com/ReactiveX/RxJavahttps://github.com/ReactiveX/RxAndroid引入依赖:compile ‘io.reactivex:rxjava:1.0.14’compile ‘i...

2019-03-27 14:39:50 139

原创 [Android] [ANR的原理、分析、实战] 【转载】

ANR定义及原理ANRApplication Not Responding, 即应用无响应 。原理由于Android有主线程设计,因此,凡系统向应用主线程发消息,让主线程去处理,超过时间,应用主线程未返回响应,就会导致ANR。系统会计时,规定时间内,主线程无消息返回,系统就认为是ANR,并做相应处理(弹窗,甚至杀掉进程)。(背景知识: Android中应用进程模型,线程模型,Activ...

2019-03-23 20:17:32 596

原创 [Android] [Android中有哪些基于Binder的IPC方式]

2019-03-19 16:09:44 393

原创 Binder [Android]

Binder简述Binder(这个东东)是Android中的一种跨进程通信(IPC)的一种方式。它的实现方式是创建了一种虚拟的物理设备,它的设备驱动是/dev/binder/。工作机制在Android系统的Binder机制中,有4种软件角色,是有Client,Service,ServiceManager,Binder驱动程序组成的。其中Client,service,Service Mana...

2019-03-19 12:06:47 196

原创 理解Java的多态机制

实现多态的步骤:1、继承父类2、覆盖父类方法(如fun2())3、使用父类声明对象,创建子类实际对象,即父类引用实际指向子类对象(堆中)4、调用被覆盖的方法(包括子类中某行代码调用被覆盖的方法fun2(),还是直接父类引用调用方法fun2(),如father_monther_fucker.fun2(); ),将实际动态执行子类的方法fun2(),而不是父类的fun2() )public ...

2019-03-14 17:26:10 127

转载 Java中的String,StringBuilder,StringBuffer三者的区别 【转载】

Java中的String,StringBuilder,StringBuffer三者的区别最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正。这三个类之间的区别主要是在...

2019-03-14 17:03:49 117

翻译 Android 如何查找最佳匹配资源

Android 如何查找最佳匹配资源(转)当您请求要为其提供备用资源的资源时,Android 会根据当前的设备配置选择要在运行时使用的备用资源。为演示 Android 如何选择备用资源,假设以下可绘制对象目录分别包含相同图像的不同版本:drawable/drawable-en/drawable-fr-rCA/drawable-en-port/drawable-en-notouch-12...

2019-03-13 16:38:22 270

转载 [转] 求求你们,别消费程序员了!

最近一段时间,微博、朋友圈都被程序员刷屏了。先是微博上充斥着各种程序员格子衫的段子,紧接着又有各种程序员穿搭指南被刷屏了,虽然比较幽默,但是幽默中暗示程序员没品、秃头,然后再加上邋遢、情商低、没女朋友等等都跟程序员联系在一起,被各个行业津津乐道,不了解的还以为程序员是这个世界奇葩的物种一样,今天我得好好说道说道。真的,程序员哪有那么神秘、那么奇葩,我们不过就是普通人而已,如果非要说有什么特别的...

2018-10-24 16:23:22 172

原创 [Java][Java虚拟机][类加载器、双亲委派模型、自定义类加载器]

Java自定义类加载器与双亲委派模型类加载机制当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化三个步骤来对该类进行初始化。JVM把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是JVM的类加载机制。双亲委派模型1.1 什么是双亲委派模型?首先,先要知道什么是类加载器。简...

2018-10-24 15:51:18 143

原创 [Java][Java虚拟机][Java虚拟机中的对象引用]

我们从Java中最常见的一句代码说起。Object obj = new Object();这句代码分两部分,1、“new Object()”这部分的语义将会反映到Java 堆中,形成一块存储了Object 类型所有实例数据值(Instance Data,对象中各个实例字段的数据)的结构化内存,根据具体类型以及虚拟机实现的对象内存布局(Object Memory Layout)的不同,这块内存...

2018-10-12 16:51:47 187

原创 [Java] [设计模式] [行为型模式] [适配器模式]

适配器模式定义把一个类的接口变换成客户端所期待的另一个接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。模型结构适配器模式的分类1、类适配器模式类适配器简单的 UML总结一下就是:适配器「Adapter」继承源类「Src」并且实现目标「Dst」接口,来实现 Src–>Dst 的转换2、对象适配器模式对象适配器简单的 UML总结一下就是:适配器...

2018-10-12 15:05:24 211

原创 [Java] [设计模式] [行为型模式] [装饰模式]

定义动态的给一个对象添加额外的职责,就增加功能来说,装饰模式比子类继承的方式更灵活。我们通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。使用Decorator的理由是:这些功能需要由用户动态决定加入的方式和时机。Decorator提供了”即...

2018-10-12 14:54:37 202

原创 [Java] [设计模式] [行为型模式] [代理模式]

定义给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式有几种,虚拟代理,计数代理,远程代理,动态代理。主要分为两类,静态代理和动态代理。一、静态代理定义静态代理比较简单,是由程序员编写的代理类,并在程序运行前就编译好的,而不是由程序动态产生代理类,这就是所谓的静态。可以通过聚合和继承两种方式实现,继承方式不够灵活,所以只介绍聚合的方式示例interface Subje...

2018-10-12 14:52:02 304

原创 [Java] [设计模式] [行为型模式] [外观模式/门面模式]

定义要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。举个例子,我们在启动计算机时,只需按一下开关键,无需关系里面的磁盘、内存、cpu、电源等等这些如何工作,我们只关心他们帮我启动好了就行。实际上,由于里面的线路太复杂,我们也没办法去具体了解内部电路如何工作。主机提供唯一一个接口“开关键”给用户就好。模式结构示例/** * cpu子系统类 */public class...

2018-10-12 14:44:52 162

原创 [Java] [设计模式] [行为型模式] [模板方法模式]

定义定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤。示例public abstract class BaseAdvertManager { public void loadAdvert(Context context, int type) { if (NetUtils.checkNetConnect...

2018-10-12 14:37:23 174

原创 [Java] [设计模式] [行为型模式] [ 观察者模式 ]

定义有时被称作发布/订阅模式,其定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。示例Java的Observable类和Observer接口就是实现了观察者模式。一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进...

2018-10-12 14:33:16 116

原创 [Java] [设计模式] [行为型模式] [ 责任链模式 ]

定义使多个对象都有机会处理请求,从而避免请求的发送者和接受者直接的耦合关系,将这些对象连成一条链,并沿这条链传递该请求,直到有对象处理它为止。示例/** * 抽象处理者 */public abstract class Handler { /** * 持有后继的责任对象 */ protected Handler successor; /** ...

2018-10-12 14:29:36 105

原创 [Java] [设计模式] [行为型模式] [ 状态模式 ]

定义状态模式中,行为是由状态来决定的,不同状态下有不同行为。状态模式和策略模式的结构几乎是一模一样的,主要是他们表达的目的和本质是不同。示例public interface TvState { public void nextChannel(); public void prevChannel(); public void turnUp()...

2018-10-12 14:24:48 136

原创 [Java] [设计模式] [行为型模式] [ 策略模式 ]

定义有一系列的算法,将每个算法封装起来(每个算法可以封装到不同的类中),各个算法之间可以替换,策略模式让算法独立于使用它的客户而独立变化。示例public abstract class BaseAdvertManager { protected abstract void doLoadAdvert();}public class FacebookAdvertManager ex...

2018-10-11 17:22:54 122

原创 [Java] [设计模式] [创建型模式] [ 工厂模式 ]

分类工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。工厂模式可以分为三类:1)简单工厂模式(Simple Factory)2)工厂方法模式(Factory Method)3)抽象工厂模式(Abstract Factory)一、简单工厂模式定义建立一个工厂(一个函数或一个类方法)来制造新的对象。示例public static Op...

2018-10-11 17:05:59 123

原创 [Java] [设计模式][ 创建型模式 ] [ 原型模式 ]

定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。可以在类的属性特别多,但是又要经常对类进行拷贝的时候可以用原型模式,这样代码比较简洁,而且比较方便。拷贝时要注意浅拷贝与深拷贝Java中的clone示例 private HashMap getClonePointMap(Map map) { HashMap clone = new HashMap<&...

2018-10-11 16:39:06 191

原创 [Java] [设计模式] [创建型模式] [ 建造者模式 - Builder模式 ]

定义将一个复杂对象的构造与它的表示分离,使得同样的构造过程可以创建不同的表示。主要是在创建某个对象时,需要设定很多的参数(通过setter方法),但是这些参数必须按照某个顺序设定,或者是设置步骤不同会得到不同结果。Android中的实例AlertDialog.Builer builder=new AlertDialog.Builder(context);builder.setIcon(R...

2018-10-11 16:29:07 105

原创 [Java] [设计模式] [创建型模式] [ 单例模式 ]

定义确保单例类只有一个实例,并且这个单例类提供一个函数接口让其他类获取到这个唯一的实例。如果某个类,创建时需要消耗很多资源,即new出这个类的代价很大;或者是这个类占用很多内存,如果创建太多这个类实例会导致内存占用太多。上述情况下就应该使用单例模式单例模式特点1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。单例模式保证了全局...

2018-10-11 16:25:35 91

原创 [Java] [设计模式] [ 设计模式的六大基本原则 ] 【转载】

六大原则单一职责原则单一原则很简单,就是将一组相关性很高的函数、数据封装到一个类中。换句话说,一个类应该有职责单一。开闭原则开闭原则理解起来也不复杂,就是一个类应该对于扩展是开放的,但是对于修改是封闭的。在一开始编写代码时,就应该注意尽量通过扩展的方式实现新的功能,而不是通过修改已有的代码实现,否则容易破坏原有的系统,也可能带来新的问题,如果发现没办法通过扩展来实现,应该考虑是否是代码结构...

2018-10-11 14:56:09 162

原创 [Java] [ 设计模式 ] [ 设计模式概述 ]

设计模式的分类1.根据目的准则分类    就是说,指定的模式用来完成什么样的工作。可分为三种:    (1) Creational (创建型):与对象创建有关。    (2) Structural (结构型):处理类或对象的组合。    (3) Behavioral (行为型):描述类或对象如何交互及如何分配职责。2.根据范围准则分类    即指定的模式用于类还是用于对象,分为两种...

2018-10-11 09:19:56 155

原创 [Java] [ Android ] [ 异常处理 ] [ 使用Thread.setDefaultUncaughtExceptionHandler处理未捕获异常 ]

Thread.setDefaultUncaughtExceptionHandlerThread类还有另一个方法可以处理未捕获到的异常,即静态方法setDefaultUncaughtExceptionHandler()。 这个方法在应用程序中为所有的线程对象创建了一个异常处理器。JVM的处理当线程抛出一个未捕获到的异常时,JVM将为异常寻找以下三种可能的处理器。 1、线程对象的未捕获...

2018-09-10 15:20:29 1279 1

原创 [Java] [ Android ] [ JNI ] [ C/C++访问Java类或方法 ]

Native层访问Java类成员Java层代码class StaticFielcdAccess { private static int si; private native void accessField(); public static void main(String args[]) { StaticFieldAccess c = new StaticField...

2018-09-06 19:31:58 166

原创 [Java] [ Android ] [ JNI ] [ 局部引用、全局引用、弱全局引用 ] [ NewObject等、NewGlobalRef、NewWeakGlobalRef ]

1、局部引用,NewObject等众多接口返回的引用下例以FindClass返回的引用,存储于全局变量中,或静态变量中。 第一次运行,创建,正常, 第二次之后,使用存储于全局变量的引用去操作,结果报异常#include <jni.h>#include <string>//// Created by luohy on 2018/9/4.///* Th...

2018-09-04 17:32:33 3428

空空如也

空空如也

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

TA关注的人

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