自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 ubuntu相关配置(持续补充。。。)

别名可以将别名配置在.bashrc中#查找文件alias fn='find . -name '#在头文件中搜索内容,一般用于查找类,结构体,函数声明alias hgrep='fn "*.h" | xargs grep -n --color '...

2018-09-29 18:18:57 188

原创 Linux命令:ifconfig

在windows系统下,有ipconfig工具,可以用来获取网络接口配置信息并修改。而在Linux下有个ifconfig工具,可以用来简单的获取网络接口信息并可以修改此信息命令格式 ifconfig - -helpUsage: ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>] [add <address>[/<prefixlen>

2017-10-26 13:52:45 407

原创 工厂模式(Factory)

工厂模式(Factory)属于创建型模式,为创建对象提供一个接口,以便将创建对象的具体过程屏蔽起来,达到提高灵活性的目的。

2017-10-17 15:08:36 319

原创 观察者模式(Observer)

观察者模式(Observer)属于行为型模式,其又被称为订阅–发布模式(Publish/Subscribe),用于当一个对象的状态发生改变时,所有依赖它的对象都能够得到通知并被自动更新。

2017-10-17 09:30:40 322

原创 装饰器模式(Decorator)

装饰器模式(Decorator)也叫包装器模式(Wrapper),属于结构型模式,用于动态的为对象添加功能。通常情况下给对象添加功能,要么直接修改对象,要么使用继承来扩展,也可以使用组合的方式。直接修改对象的方式显然是不合适的,如果使用继承的方式,极有可能会导致子类膨胀。在面向对象的设计中,一般使用组合的方式来扩展对象的功能。装饰器模式就是使用组合的方式来代替类继承的方式以扩展对象的功

2017-10-16 11:03:24 667

原创 迭代器模式(Iterator)

迭代器模式(Iterator)属于行为模式,提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类图实例Iterator对象interface Iterator<E>{ void remove(); E next(); boolean hasNext();}Aggregate 提供聚合的接口interface Aggregate{ pu

2017-09-25 22:02:55 286

原创 原型模式(Prototype)

原型模式(Prototype)属于创建型模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例,被复制的实例就是我们所称的原型,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例可以使程序运行更加高效,或者创建值相等,只是命名不一样的同类数据。

2017-09-25 18:39:42 332

原创 建造者模式(Builder)

建造者模式(Builder)属于创建型模式。一般用于复杂对象的创建,该模式可以将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。适合于一个具有较多零件(属性)的产品(对象)的创建过程。

2017-09-25 16:04:00 230

原创 外观模式(Facade)

Facade(外观)模式,是结构型模式,为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。当要为一个复杂子系统提供一个简单接口时,子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具有可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。

2017-09-22 18:04:48 199

原创 适配器模式(Adapter)

适配器模式(Adapter)是结构型模式,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能再一起工作的那些类可以一起工作。

2017-09-21 15:09:35 1799

原创 单例模式(SingleTon)

单例模式(Adapter)属于创建型模式,确保某个类只有一个实例,是最常见的设计模式之一。如日志对象,Android系统下面的XXXManager。

2017-09-21 10:35:23 400

原创 Android Uri

Android UriAndroid中的Uri类似于Java中的URI,即统一资源标志符,是Android中对URI的一种扩充。Uri的格式[scheme:]scheme-specific-part[#fragment] 主要由三部分组成:scheme,scheme-specific-part,fragment 其中scheme-specific-part简称ssp,可以细分为如下形式[schem

2017-08-10 17:33:58 444

原创 Android Intent匹配规则

Android Intent在整个Android系统使用非常广泛,如startActivity,startService,广播的发送等等都会用到Intent,以广播为例,广播的发送方sendBroadcast(Intent),那AMS是如何匹配对应的BroadcastReceiver的呢? 影响Intent匹配规则的有3个关键因素: 1.Action 2.Category 3.Data 广

2017-08-10 16:16:13 612

原创 Android PatternMatcher

Android PatternMatcher PatternMatcher的构造函数public PatternMatcher(String pattern, int type);pattern是模式字符串 type是匹配类型,共有如下三种 1.PATTERN_LITERAL 按照字面值匹配,忽略特殊字符,区分大小写 2.PATTERN_PREFIX 匹配前缀,即待匹配字串是以pattern为前

2017-08-10 11:32:46 1457

原创 Android广播总结

以前面几篇文章为基础,总结一下Android广播系统的一些知识Android广播分为有序广播和普通广播Android广播也可以分为前台广播和后台广播动态注册的广播接收器是非常驻型,一般是跟着Activity的生命周期走,所以在Activity结束前需要取消注册广播接收器;静态注册的广播是常驻型,即使应用未启动,当有相关的广播发出时,其会被系统调用自动运行当广播为有序广播时,优先级高的先接收(

2017-08-08 15:20:17 549

原创 Android广播的超时机制

在工作中偶遇到我们的Launcher在监听TIME_TICK广播超时,导致Launcher ANR问题,遂研究一下Android的广播超时机制。从前面ActivityManagerService分发广播一文可以看出AMS分发广播的关键函数processNextBroadcast,该函数首先是分发并行队列中的广播,然后依次分发串行队列中的广播。并行队列中的广播的分发是循环取出每一个广播,并直接分发,由

2017-08-08 15:11:01 7297

原创 ActivityManagerService分发广播

前文Android发送广播中,客户端通过Binder调用AMS发送广播后,会将广播和广播接收者构造成BroadcastRecord,然后根据广播和广播接收者的类型来决定加入队列: 1. 前台广播,放入前台广播队列 2. 后台广播,放入后台广播队列 3. 静态注册的广播接收器和有序广播对应的动态注册的广播接收器放入到前台或后台的串行数组(mOrderedBroadcasts)中 4. 普通广播

2017-08-08 10:54:04 1158

原创 Android 发送广播

发送广播各个APP可以通过binder调用AMS的广播发送接口,发送广播,各个APP是消息发布/订阅模型中的消息发布端使用实例广播按照处理的速度分为:前台广播和后台广播 广播按照AMS处理方式分为:普通广播和有序广播 同时还有黏性广播和非黏性广播(已经废弃,不做分析)普通广播的发送Intent intent = new Intent("Test");//这个flag表明接收该广播的receiv

2017-08-02 19:49:14 4380

原创 Android BroadcastReceiver的注册

广播接收器的注册广播接收器,是用来接收系统和应用发出的广播,常见的是开机广播,可以用于实现开机启动服务的功能,还有网络变化,电池电量变化等等均会发出相应的广播。Android系统中的广播设计的很好,对于开发者而言非常容易上手。静态注册不管该应用程序是否处于活动状态,都会进行监听,比如某个程序是监听内存的使用情况的,当在手机上安装好后,不管该应用程序是处于什么状态,都会执行该监听方法中的内容。静态注册

2017-08-02 17:12:23 475

原创 Android 广播系统

Android四大组件之一BroadcastReceiver,其主要用于异步接收广播。广播分为两个方面:广播发送者和广播接收者,BroadcastReceiver指的是广播接受者,客户端进程通过binder调用AMS发送广播。广播主要应用于Android组件间通信,可以应用于同一进程或不同进程组件间或组件内通信。其实现模型是观察者模式,基于消息的发布/订阅模型,因此将广播发送者和广播接收者解耦,使得

2017-08-02 17:09:45 261

原创 c++ const总结

一:const和变量1.一个非const对象的指针指向一个常量对象,即const对象的地址只能赋值给一个指向const对象的指针(非const对象的地址可以被赋值给指向const对象的指针)const int a = 10;int *b1 = &a; (错误)int * const b2 = &a; (错误)int const * b3 = &a; (正确)int *b1 = &a; 会报错

2017-06-28 17:08:17 382

原创 Android输入子系统之InputDispatcher分发键盘消息过程分析

InputDispatcher分发键盘消息过程分析在Android输入子系统之启动过程分析中,InputManagerService启动之后,会调用start函数,之后调用native层的nativeStart函数,然后调用InputManager::start函数,该函数会调用InputDispatcherThread的threadLoop函数,该函数会调用InputDispatcher的disp

2017-06-09 11:06:24 1833

原创 Android输入子系统之InputReader读取键盘消息过程分析

InputReader读取键盘消息过程分析在Android输入子系统之启动过程分析中,InputManagerService启动之后,会调用start函数,之后调用native层的nativeStart函数,然后调用InputManager::start函数,该函数会调用InputReaderThread的threadLoop函数,该函数会调用InputReader的loopOnce函数从Event

2017-06-09 10:17:29 2120 1

原创 Android输入子系统之应用程序注册消息监听过程分析

应用程序注册消息监听过程分析CPP层InputManagerService启动后就需要监听按键输入了,当InputManagerService监听到键盘输入的事件后就需要分发键盘事件,但是分发给谁呢?这里首先应该是分发给当前激活的Window窗口,但是当前激活的window窗口怎么才能接受到消息呢,window窗口需要注册一个键盘消息接收通道到InputManagerService中,那么如何注册的

2017-06-08 13:58:58 2240

原创 Android输入子系统之启动过程分析

Android输入子系统之启动过程分析平台:Android6.0 为了使整个流程更清晰,函数的代码只保留跟本文分析相关的部分,并且将一些错误判断相关的代码也去掉了,如有兴趣,可以查阅源码。Android的输入子系统是在InputManagerService中启动的,而InputManagerService是在system_server中启动的。我们先看下整个启动过程的序列图,然后根据序列图来一步步

2017-06-08 10:38:37 1019

原创 Android输入子系统概览

Android输入子系统概览平台:Android6.0由于工作是基于Android系统做智能电视,因此平常的工作中在输入系统这块接触的比较多的是KeyEvent事件,对于Android的KeyEvent也能熟练使用,如Activity重写onKeyDown,onKeyUp,View注册OnKeyListener这些都是常用的,但是这些api的调用顺序是怎样的,一直不太了解。另外我们知道Android

2017-06-08 10:07:25 1507

原创 Android按键分发流程之java层按键传递

Android按键分发流程之java层按键传递平台:Android6.0Android开发中在自定义Activity以及View时经常会重写onKeyDown,onKeyUp,dispatchKeyEvent,同时View还有setOnKeyListener等,当一个按键事件发生时,这些方法将会被回调,但是到底哪个先回调,哪个后回调呢,一直不是特别清楚,只知道个大概,下面将详细讲述按键在java层的

2017-06-06 13:55:40 4112

原创 责任链模式(Chain of Responsibility Pattern)

责任链模式(Iterator)概述责任链模式是行为模式。链是一系列节点的集合,链的节点可以任意拆分重组。将每个节点看做一个对象,每个对象都有不同的处理逻辑,将一个请求从链的头节点出发,沿着链的路径依次传递给每一个节点对象,直至有对象可以处理这个请求为止。

2017-06-02 18:07:36 314

原创 代理模式(Proxy)

代理模式(Proxy)概述代理模式也称委托模式,是一种结构型设计模式,代理类为真实对象提供一种代理以控制对这个对象的访问,以及为委托类提供消息的预处理和消息被委托类处理后的后续处理。为了保证客户端使用的透明性,代理对象和委托对象需要实现相同的接口。代理模式分为静态代理和动态代理。 静态代理是由程序员创建代理类再对其编译,即在编译期代理类的.class文件就已经存在了。 动态代理是在程序运行时运用

2017-06-02 16:07:11 388

原创 git别名

git 配置别名

2017-06-01 19:39:47 365

原创 Android本地程序的printf输出到logcat中

Android本地程序的printf输出到logcat中

2017-06-01 18:52:21 4703

转载 mysql分区功能详细介绍,以及实例

一,什么是数据库分区前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的,一个是myi存表索引的。如果一张表的数据量太大的话,那么myd,m

2015-04-12 12:53:47 313

转载 linux sort,uniq,cut,wc命令详解

sortsort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。sort语法[root@www ~]# sort [-fbMnrtuk] [file or stdin]选项与参数:-f :忽略大小写的差异,例如 A 与 a 视为编码相同;-b

2015-04-05 21:23:40 335

转载 Bash字符串处理(与Java对照) - 20.查找子串的位置

Bash字符串处理(与Java对照) - 20.查找子串的位置转载:http://codingstandards.iteye.com/blog/1199992   In JavaString.indexOf  int     indexOf(String str)          返回第一次出现的指定子字符串在此字符串中的索引。 int    

2015-04-05 13:28:15 456

转载 Bash Shell字符串操作小结

转载:http://www.cnblogs.com/frydsh/p/3261012.html1. 取长度1234str="abcd"expr length $str   # 4echo ${#str}       # 4expr "$str" :".*" # 4

2015-04-05 13:26:04 364

转载 bash下. : () {} [] [[]] (())的解释

分类: LINUX    bash下有很多像{}、[]等一些符号命令,下面是我对一些常用的符号命令的学习笔记,若有错误或纰漏望各位兄弟指正。一、.(source).(点)与source命令一样,从文件中读取并执行命令,无论该文件是否都有可执行权限都能够正确的执行。且是在当前shell下执行,而不是产生一个子shell来执行(我们通常使用“./filename.sh”去执行一个文

2015-04-02 18:00:47 202

转载 Java 理论与实践: 构建一个更好的 HashMap

在7月份的那期 Java理论与实践(“并发集合类”)中,我们简单地回顾了可伸缩性的瓶颈,并讨论了怎么用共享数据结构的方法获得更高的并发性和吞吐量。有时候学习的最好方法是分析专家的成果,所以这个月我们将分析 Doug Lea 的 util.concurrent 包中的 ConcurrentHashMap 的实现。JSR 133 将指定 ConcurrentHashMap 的一个版本,该版本针

2015-02-26 10:54:05 282

转载 java.util.concurrent介绍

java.util.concurrent介绍    java.util.concurrent 包含许多线程安全、测试良好、高性能的并发构建块。不客气地说,创建 java.util.concurrent 的目的就是要实现 Collection 框架对数据结构所执行的并发操作。通过提供一组可靠的、高性能并发构建块,开发人员可以提高并发类的线程安全、可伸缩性、性能、可读性和可靠性

2015-02-26 10:44:18 352

转载 jQuery中eq和get的区别

相信大部份人都会把这2个的用法搞错。仔细查看下API文档就可以知道。eq返回的是一个jquery对象,get返回的是一个html 对象数组。举个例子: style="color:yellow">绯雨使用eq来获得第一个p标签的color值:$("p").eq(0).css("color")  //因为eq(num)返回的是个jq对象,所以可以用jq的方法css使用get来获得第一个

2015-02-01 16:02:03 371

转载 System.getProperty()方法大全

System.getProperty()方法大全            System.out.println("java版本号:" + System.getProperty("java.version")); // java版本号            System.out.println("Java提供商名称:" + System.getProperty("java.vendor")

2015-02-01 13:41:01 200

自己动手写JVM

包含了三个资源:自己动手写JVM系列(go语言描述),Java虚拟机规范第8版英文版,Java编程语言规范第8版英文版。适合学习JVM基本原理,了解Java部分语法的实现原理。因虚拟机是用go语言所写,需要先简单了解下go语言的语法。

2018-04-13

空空如也

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

TA关注的人

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