自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【设计模式】构建者模式Builder

Builder模式介绍Builder模式是一步一步创建一个复杂对象的创建型模式,允许用户在不知道内部构建细节的情况下更加精细的控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件进行解耦,使得构建过程和部件的表示隔离开来。Builder的定义将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。Builder的使用场景相同的方法,不同的执行顺序,产生不同的...

2019-05-07 16:45:10 243

原创 【Android】EventBus源码解析(3.1.1)

文章目录零、Android消息机制一、EventBus中的概念讲解1、TheadMode线程模式2、Subscribe注解3、SubscriberMethod订阅者方法4、Subscription5、PostingThreadState发送事件线程状态的封装类二、getDefault:获取EventBus单例三、register(Object subscriber)注册1、寻找订阅方法集合Subs...

2019-04-21 15:46:47 377

原创 【Android】Android系统启动过程

  在手机泛滥和高速发展的时代,各种飙配置,秀功能,秀亮点的阶段,大屏+大电池已成为标配,同时手机也是最重要的社交工具的时候,大家的手机已经很少关机了,分秒必争的时候,大家都不想浪费那1分钟的开机时间,希望用手滑动那个指纹解锁图案或者触摸指纹识别器,用可爱帅气的面容就能解锁手机,直接使用。很多人似乎忘记了手机还可以开机关机呢。今天就先来聊聊Android手机开机系统启动的流程。一、Android...

2019-03-07 22:52:55 345

原创 【数据结构与算法】1、排序

一、排序  排序是对某一组数据进行递增或者递减的排列。  排序的稳定性:如果待排序的数据中,具有多个相同的关键字,经过排序后,上述关键字的相对顺序不变则称该排序为稳定排序,否则为不稳定排序。二、插入排序  每次将一个待排序的元素,按照其关键字大小插入到已经排好序的数据的适当位置,直至所有元素都有序。1. 直接插入排序  所有元素分为有序区和无序区,将无序区的第一个元素插入到有序区中适当...

2018-12-03 11:51:03 338

原创 【Android】IPC(进程间通信)

IPC是Inter-process communication的缩写,含义为进程间通信或者跨进程通信Android中的多进程模式1、开启多进程模式  在Android中使用多进程只有一种方法,就是给四大组件在AndroidMenifest中指定android:process属性。(有一种非常规的方法:通过JNI在native层中去fock一个新的进程。)如下代码所示:<activit...

2018-10-29 11:25:07 2408

原创 【Android】系统架构

Android系统架构图:  上述系统架构图一共分为5层:LinuxKernel、HAL、库、Java Api框架和系统应用层。1. Linux内核 Android平台的基础是Linux内核,例如,Android Runtime依靠Linux内核来执行底层功能,例如线程和低层内存管理。Linux内核主要负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。2. 硬件抽象层(HAL) ...

2018-10-29 11:07:48 435

原创 【MaterialDesign】CardView

  CardView是用于实现卡片式布局效果的重要控件,由appcompat-v7库提供。实际上CardView也是一个FrameLayout,只是额外提供圆角和阴影等效果。1、使用方法 在app的build.gradle文件中添加依赖。implementation 'com.android.support:appcompat-v7:26.1.0'implementation 'com.a...

2018-10-28 17:47:31 1194

原创 【设计模式】工厂模式

  在OO编程中,创建对象实例的方法一般都是通过new操作符,但是在某些情况下,new操作符直接生成对象会带来问题,比如对象的创造需要一系列的步骤;需要计算后才能得到对象的初始值;选择生成哪个子类对象。对于上述的情况,一个对象的创建就好像是一个过程,为了屏蔽复杂的创建过程,提出了工厂模式的设计思想。工厂模式主要是用来封装对象的创建,主要分为简单工厂、工厂方法和抽象工厂三种。简单工厂,虽然不是...

2018-09-07 16:25:58 227

原创 观察者模式

 观察者模式定义了对象之间的一对多依赖,这样当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。  观察者模式中主题与观察者之间的关系:观察者依赖于主题,只要主题状态发生改变,就会通知观察者,因此定义了如下类图。 设计了一个主题接口、一个观察者接口和两个对应的实体类: 1. interface subject:主题接口,主要负责通知观察者更新数据、添加观察者和删除观察者。 2. ...

2018-09-03 16:36:46 177

原创 单例模式

单例模式要点:确保一个类只有一个对象实例提供一个全局访问点在java中实现单例模式需要私有的构造器、一个静态的方法和一个静态变量确定在性能和资源的限制上,选择合适的方案来实现单例模式若使用多个类加载器,可能会导致单例失效而产生多个实例。构建单例模式:将类的构造方法的访问权限设置为private,因此我们不能通过new操作符,在类的外部产生类的对象。由于该类的实例是在...

2018-09-01 18:25:07 217

原创 【Android】View的事件分发机制

一、MotionEvent事件手指接触屏幕后所产生的事件,主要有如下几种:  1、ACTION_DOWN:手指接触屏幕  2、ACTION_MOVE:手指在屏幕上移动  3、ACTION_UP:手指从屏幕上松开 通常有如下的一系列事件:  1、点击屏幕后离开松开,事件序列为DOWN->UP  2、点击屏幕滑动一会再松开,事件序列为DOWN->MOVE->MOVE-...

2018-08-18 17:13:35 1591

原创 【Android】线程与线程池

一、线程 在Android系统中,线程分为主线程与子线程,众所周知,主线程主要处理和UI相关的操作,而子线程则用于处理耗时的操作,除了Thread外,扮演线程角色的还有AsyncTask、IntentService和HandlerThread等。AsyncTask封装了线程池和Handler,主要是为了方便开发者在子线程中更新UI;HandlerThread是一个消息循环的线程,其内部可以使用...

2018-08-08 16:21:56 215

翻译 【Android】EventBus使用

 EventBus是一种用于Android的发布/订阅事件总线。能够简化各组件之间、组件与后台线程间的通信。可以实现如下需求:请求网络,网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信等。能有效分离事件发送方和接收方(解耦)。EventBus使用的三步骤1、定义事件 2、订阅事件 3、发布事件一、定义事件:任意的java...

2018-08-07 14:37:21 216

原创 【Android】Android的消息机制

 Android的消息机制主要是指Handler的运行机制,Handler的运行是需要底层的MessageQueue和Looper的支撑。在本消息机制中,主要有如下几个部分:1、Message  Message是在线程之间传递的消息,它可以在内部携带少量的信息,用于不同的线程之间交换数据。可以使用what字段、arg1、arg2携带一些整型数据,使用obj字段携带一个Object对象。 2...

2018-08-05 17:55:11 2140

原创 【Android】面试题及解析

1、下列哪些语句关于内存回收的说明是正确的?(B) A、程序员必须创建一个线程来释放内存  B、内存回收程序负责释放无用内存  C、内存回收程序允许程序员直接释放内存  D、内存回收程序可以在指定的时间释放内存对象解析:  Android是一款基于Linux内核、面向移动终端的操作系统。主要包含下面几个层次:  1. Application Framework Appli...

2018-08-03 21:32:26 334

原创 EIT造型

一、EIT介绍    高焕堂老师讲述的EIT造型是指:介于类与模式之间的一个代码构造,E是汽车的Engine,I是Interface,T是Tire,汽车中,设计好引擎和接口,就可以更换不同的轮胎,实现不同的使用方式。比如jeep车,可以更换越野轮胎,也可以更换公路轮胎。而在编程中,E是指基类,I指接口,T指的是子类,EIT造型广泛应用于代码中,同时也是IOC的一个实现方式。同时EIT也是构成设计模...

2018-07-06 18:40:28 907

原创 卡榫函数与IOC

GMT检测语言世界语中文简体中文繁体丹麦语乌克兰语乌兹别克语乌尔都语亚美尼亚语伊博语俄语保加利亚语僧伽罗语克罗地亚语冰岛语加利西亚语加泰罗尼亚语匈牙利语南非祖鲁语卡纳达语印地语印尼巽他语印尼爪哇语印尼语古吉拉特语哈萨克语土耳其语塔吉克语塞尔维亚语塞索托语威尔士语孟加拉语宿务语尼泊尔语巴斯克语布尔语(南非荷兰语)希伯来语希腊语德语意大利语意第绪语拉丁语拉脱维亚语挪威语捷克语斯洛伐克语斯洛文尼亚语斯瓦...

2018-07-06 17:34:58 682

原创 【Android】ExpandableListView二级列表使用介绍

ExpandableListView是一个用于垂直滚动展示二级列表的视图,与ListView不同的是它可以展示二级列表,分组可以 单独展开子选项。这些选项数据是通过ExpandableListView关联的。创建布局文件<ExpandableListView android:layout_width="match_parent" ...

2018-05-22 11:14:41 2480

原创 【Android】四大组件

应用组件是android应用的基本构建基块。每个组件都是一个不同的点,系统可以通过它进入应用。并非所有组件都是用户的实际入口,有些组件相互依赖,但每个组件都以独立的实体形式存在,并发挥特定作用,每个组件都是唯一的构建基块,有助于定义应用的总体行为。四大组件分别是:activity、service、Broadcast Receiver(广播接受者)、Content Provider(内容提供者)一、...

2018-05-22 10:30:12 316

原创 【android】Activity启动模式

本文参考自:①《Android开发艺术探索》②Android Developers:https://developer.android.google.cn/guide/components/activities/tasks-and-back-stackAndroid Activity启动模式共有4种:standard(默认模式)、singleTop、singleTask和sin...

2018-05-20 15:27:05 247

原创 【Android】MVP模式

GMT检测语言世界语中文简体中文繁体丹麦语乌克兰语乌兹别克语乌尔都语亚美尼亚语伊博语俄语保加利亚语僧伽罗语克罗地亚语冰岛语加利西亚语加泰罗尼亚语匈牙利语南非祖鲁语卡纳达语印地语印尼巽他语印尼爪哇语印尼语古吉拉特语哈萨克语土耳其语塔吉克语塞尔维亚语塞索托语威尔士语孟加拉语宿务语尼泊尔语巴斯克语布尔语(南非荷兰语)希伯来语希腊语德语意大利语意第绪语拉丁语拉脱维亚语挪威语捷克语斯洛伐克语斯洛文尼亚语斯瓦...

2018-05-18 11:25:31 226

原创 spring boot 使用之No Spring Session store is configured

Spring boot 中Session是通过redis存储的,如果项目中不需要用到redis存储,则需要配置spring.session.store-type=none 否则会报如下错误Caused by: java.lang.IllegalArgumentException: No Spring Session store is configured: set the 'spring.sess...

2018-03-06 20:16:12 6467 1

原创 Android studio使用Gradle Project

在学习Retrofit2 demo时的Gradle project问题。demo如下:https://www.jianshu.com/p/0cd258eecf60  感谢作者提供的demo!1、导入gradle project2、在File->project structure中配置jdk版本,经过尝试后发现jdk版本为jdk1.8.0_161时能使用。3、在Gradle Project中刷...

2018-03-03 20:35:18 654

原创 【android】7、五大存储

SharePreferences是Android的一个轻量存储类,是XML文件的键值对存储数据,用于存储软件配置、部分用户信息等基础信息。其存储的数据在/data/data//shared_prefs/目录下。 1、有如下三种方式获得SharedPreferences对象: ①Context类:getSharedPreferences()方法   该方法有两个参数:第一个参数为文件名,第二个参

2017-11-24 19:32:18 363

原创 【android】6、ListView优化

ListView优化

2017-11-23 11:43:56 232

转载 【android】5、清单文件

清单文件

2017-11-23 10:31:39 528

转载 【android】4、启动组件

1、四种组件中的activity、服务和广播接收者都通过Intent的异步消息进行启动,Intent会在运行时去各个组件相互绑定(可以将Intent视为其他组件请求操作的信使。)无论组件属于自己应用还是其他应用,都可以进行绑定。2、Intent使用Intent对象创建,他定义的消息用于启动特定组件或者特定类型的组件,可以显式、隐式启动。3、对于Activity和服务,Intent定义要执行的操作,并

2017-11-23 10:23:58 945

原创 【android】3、Toolbar

Toolbar包含ActionBar,是一个view。通常在activity的顶端,用于标题栏等。在使用Toolbar时,要将activity中原有的ActionBar隐藏掉,否则原有的actionBar和Toolbar会同时出现在顶端。隐藏ActionBar:使用Toolbar,布局文件如下:<android.support.v7.widget.Toolbar xml

2017-09-04 21:12:32 235

原创 【android】1、intent

android Intent意图介绍

2017-05-10 11:53:15 360

原创 【数据库】1数据库系统概述

数据库系统概述目录一、数据库系统的作用(一)数据与数据管理(二)数据管理技术的产生与发展(三)数据库应用二、数据模型(一)数据模型的分层(二)数据模型的组成要素(三)层次模型(四)网状模型(五)关系模型三、数据抽象与数据库三级模式四、数据库系统(一)数据库系统组成(二)数据库管理系统(三)数据库系统的相关人员

2016-12-27 17:10:39 1006

原创 【C++】学习小笔记系列-4-何时使用引用参数

使用引用参数的主要原因有两个:①程序员能够修改调用参数中的数据对象。②通过传递引用而不是整个数据对象,可以提高程序的运行速度。(如数据对象比较大,如结构和类对象)何时使用引用、指针和按值传递?1、使用按值传递而不作修改的函数:①如果对象很小,如内置数据类型或小型结构,则按值传递②如果数据对象是数组,则使用指针,因为这是唯一的选择,并将指针声明指向const的指针③如果数

2016-11-19 14:22:59 335

原创 【C++】学习小笔记系列-3-cctype中的字符函数

1、isalnum():如果参数是字母数字,即数字或者字母,该函数返回true;2、isalpha():如果参数是字母,该函数返回true;3、iscntrl():如果参数是控制字符,该函数返回true;4、isdigit():如果参数是数字(0~9),该函数返回true;5、isgraph():如果参数是除空格以外的打印字符,该函数返回ture;6、isslower():如果

2016-11-19 14:05:17 345

原创 在Cent OS7下写第一个QT程序:Hello World!

这一整天正是漫长,打算一边学习linux,一边学习QT5,于是在Cent OS7下配置QT开发环境。一开始在网上看到别人的QT5安装方式,然后就按照他的方式来做。(详情查看 http://blog.csdn.net/augusdi/article/details/38614827 )但是不幸的是,学校网络抽风,在获取QT creator linux安装包的时候,网速只有10+kb/s,上文中又说到

2016-11-16 22:47:32 792

原创 Cent OS 7命令积累(不定期更新)

1、Ctrl + alt +F1 ~ F6可以在图形界面和命令行界面之间相互转换。 2、su root转到获得root权限。 3、yum软件管理

2016-11-16 14:31:25 2645

原创 【C++】学习小笔记系列-2-插入排序和折半插入排序

插入排序: 在一组数据中,分为有序区和无序区,有序区初始为该组数据的第一个元素,然后对无序区的第一个元素开始,不断与有序区中的元素比较,移动元素,插入元素,直到无序区中所有元素都放到有序区中。 时间复杂度O(n²) 空间复杂度O(1) 稳定void InsertSort(RecType R[], int n){ int i, j; RecType tmp; for

2016-11-04 22:19:04 355

原创 【C++】学习小笔记系列-1-new和delete的实际过程。

本专题为本人学习《C++ primer plus》过程的一些小思考和小笔记。int* pa = new int; *pa = 123; 创建一个int型的内存空间,返回其内存块地址给pa(即pa指向该内存空间。),实际上pa在另一个int指针类型的内存块中。delete pa;这将释放pa指向的内存,但不会删除指针pa本身,也就是说可以将pa 重新指向一个新的内存块。

2016-11-04 22:15:40 279

空空如也

空空如也

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

TA关注的人

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