自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于OpenStack的私有云平台的设计与实现

1. 写在前面本系列博客主要讲解如何部署OpenStack,并在OpenStack的基础上实现高可用和集群。问题1:什么是OpenStack?openstack是实现云计算的一个项目,使用python语言开发,简言之,OpenStack类似于阿里云,使用OpenStack创建的云主机类似于在阿里云购买的服务器。问题2:什么是高可用?如果使用单个云主机作为服务器向外提供服务,当这台云主机死...

2019-01-21 22:36:01 5517

原创 Android系统四大组件源代码情景分析

在开发Android客户端的过程中经常会用到四大组件:Activity、Service、BroadCastReceiver、ContentProvider,四大组件的实现都是基于ActivityManagerService实现的,现在简单总结一下四大组件的实现原理1. ActivityActivity启动流程总结:IPC调用AMS.startActivity(),最终调用ActivitySt...

2018-11-11 20:34:11 650

原创 Android系统线程间通信的3种方式

Android应用程序开发过程中需要在子线程中刷新UI,但是刷新UI的工作只能在主线程中完成,如果强制在子线程刷新UI会导致崩溃,此时Handler机制很好地解决了这个问题Android系统有3种线程间通信的通信方式,分别为Handler、AsyncTask、runOnUiThread,其中AsyncTask、runOnUiThread从子线程切换到主线程刷新UI的原理是Handler机制1....

2018-10-08 20:07:32 3558

原创 Android系统之Binder源代码情景分析

看过很多大牛写的Binder详解,因为讲得太过晦涩难懂,所以对于新手好像不太友好,为了让新手对于Binder有一个大概的认识,故准备了半个月写了这篇博客,博客的大概流程应该是正确的,希望看过的新手能够有一些收获。本文主要讲解了三个部分:ServiceManager 启动流程、ServiceManager 注册服务过程、ServiceManager 获取服务过程

2018-06-06 17:28:13 3473 1

原创 Android系统之View事件分发机制

我们对屏幕的点击,滑动,抬起等一系的动作都会被封装成若干个MotionEvent对象。MotionEvent可以分为以下三种事件类型:a.ACTION_DOWN:手指刚接触屏幕,按下去的那一瞬间产生该事件b.ACTION_MOVE:手指在屏幕上移动时候产生该事件c.ACTION_UP:手指从屏幕上松开的瞬间产生该事件Android系统时如何将用户的输入事件MotionEvent分发给具体的View进行处理呢?1. Activity分发输入事件Activity.java (frameworks\b

2021-12-19 00:35:23 1733

原创 Android系统之ViewTree的创建与绘制

1. ViewTree的创建在分析Activity启动过程中:Activity启动流程会执行startSpecificActivityLocked ActivityThread.performLaunchActivity //onCreate -> onStart SetContentView创建DecorView(DecorView = ContentView(用户需要显示的组件) + 系统其它组件) ActivityThread.handleResumeActivity //on

2021-11-21 22:58:13 2331

原创 Android系统之Intent传递数据的类型

1. 基本数据类型存数据:Intent it = new Intent(this, SecondActivity.class);XXX value = xxx;it.putExtra("key", value);startActivity(it);取数据:int value = getIntent().getXXXExtra("key");例如:存数据:Intent it = new Intent(FirstActivity.this, SecondActivity.class);

2021-10-16 18:28:54 830

原创 Android系统之Serializable和Parcelable的区别

1. Serializable和Parcelable的定义1.1 Serializablepackage java.io;public interface Serializable {}实现示例:public class Person implements Serializable{ private String name; private int age; public void setName(String name) { this.name = name;

2021-10-16 18:23:38 492

原创 Android系统之EventBus用法及源码分析

1. EventBus简介EventBus是一款在Android开发中使用的发布/订阅事件总线框架,基于观察者模式,将事件的接收者和发送者分开,简化了组件之间的通信,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。使用简单、效率高、体积小!下边是官方的 EventBus 原理图:2. EventBus使用方法2.1 使用步骤a. 添加依赖库在项目对应的build.gradle文件添加compile 'org.greenrobot:eventbus:3.0.0'b.

2021-09-20 23:47:55 469

原创 Android系统之Bundle用法

1. Bundle概述Bundle在Android开发中非常常见,它的作用主要时用于传递数据。Bundle传递的数据包括:string、int、boolean、byte、float、long、double等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serialiable或Parcelable接口。Bundle所保存的数据是以key-value(键值对)的形式保存在ArrayMap中例如:Bundle args = new Bundle();a

2021-09-12 18:02:31 9087

原创 Android系统之Fragment用法

1. Fragment概述Fragment是一种可以嵌入在Activity中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间。Fragment不能够单独使用,需要嵌套在Activity中使用,一个Activity可以有多个Fragment一个Fragment可以被多个Activity重用,可以在Activity运行时动态地添加或删除Fragment1.1 Fragment生命周期生命周期方法说明onAttach()Fragment和Activity相关联时调用。可以通过

2021-09-12 13:13:14 1039

原创 Android系统之onSaveInstanceState用法及源码分析

1. onSaveInstanceState简介如果系统由于系统约束(而不是正常的应用程序行为)而破坏了Activity,那么尽管实际 Activity实例已经消失,但是系统还是会记住它已经存在,这样如果用户导航回到它,系统会创建一个新的实例的Activity使用一组保存的数据来描述Activity在被销毁时的状态。系统用于恢复以前状态的已保存数据称为“实例状态”,是存储在Bundle对象中的键值对的集合。1.1 onSaveInstanceState简介a. onSaveInstanceState(

2021-09-05 18:40:52 6015

转载 Android布局方式讲解

1. 线性布局LinearLayout所有包含在线性布局里的控件在线性方向上依次排列1.1 子控件的排列方式android:orientation="horizontal" //水平android:orientation="vertical" //垂直1.2 子控件的对齐方式android:gravity="center_horizontal" 子控件水平方向居中android:gravity="center_vertical" 子控件竖直方向居中android:gravity

2021-08-29 11:57:21 240

原创 Android系统之SharedPreferences用法及源码分析

1. SharedPreferences简介SharedPreferences用来进程间共享数据,它只能存储简单数据类型(int、boolean、String等),复杂数据类型建议使用文件、数据库等其他方式存储。2. SharedPreferences使用方法a. 进程A保存数据//实例化SharedPreferences对象(第一步)SharedPreferences sp = getSharedPreferences("test", Activity.MODE_PRIVATE); //数据保

2021-08-28 20:30:06 365

原创 Android系统之Binder源代码解析

1. ServiceManager的启动流程system\core\roodir\init.rc:service servicemanager /system/bin/servicemanager //可知孵化器的目录为servicemanager class core user system group system critical onrestart restart healthd onrestart restart zygote onre

2021-08-15 20:57:53 1322 1

原创 7. 应用到实例

1. 拷贝阿里云数据库到服务器//阿里云执行mysqldump -u root -p victory311 > victory311.sql将victory311.sql复制到master1和master2的root目录//server1执行mysql -u root -pcreate database victory311;use victory311;set names ...

2019-01-21 21:22:57 584

原创 6. server服务器配置

参考:https://blog.csdn.net/a944750471/article/details/82084041https://blog.csdn.net/cookily_liangzai/article/details/807461771. 安装jdk下载jdk:https://www.oracle.com/technetwork/java/javase/downloads/jdk...

2019-01-21 21:20:20 440

原创 5. lvs-tunnel集群

master1 — 192.168.111.5/172.16.0.131master2 — 192.168.111.6/172.16.0.132server1 — 192.168.111.7/172.16.0.133server2 — 192.168.111.8/172.16.0.134vip — 192.168.111.10/172.16.0.136参考:https://blog....

2019-01-21 21:18:34 340

原创 4. keepalived主备高可用

master1 — 192.168.111.5/172.16.0.131master2 — 192.168.111.6/172.16.0.132vip — 192.168.111.10/172.16.0.136//master1和master2分别安装编辑器yum install wgetyum install gccyum install gedit1. lvs集群以下三步参...

2019-01-21 21:14:44 1741

原创 3. server服务器安装数据库并实现主主同步

1. server1和server2离线安装数据库参考文章:https://blog.csdn.net/zz657114506/article/details/535538451.1 安装新版mysql前,需将系统自带的mariadb-lib卸载rpm -qa|grep mariadb打印:mariadb-libs-5.5.56-2.el7.x86_64rpm -e --nodeps m...

2019-01-21 21:07:35 328

原创 2. CentOS修改root密码

1. 关闭防火墙参考:https://www.cnblogs.com/silent2012/p/4682770.html2. 关闭SELINUXsudo suvi /etc/selinux/config将SELINUX=enforcing改为SELINUX=disabled ,设置后需要重启才能生效3. 修改root密码参考:https://blog.csdn.net/shanvla...

2019-01-21 20:53:40 645

原创 1. OpenStack安装

1. 下载最新版本的OpenStack Fuel安装包https://www.mirantis.com/software/openstack/download/thank-you/2. 配置虚拟机网络使用virtual box新建3张网卡,IP分别为:10.20.0.10、172.16.0.1、192.168.0.1右键无线网卡 - 属性 - 共享 - 允许其他网络用户通过此计算机的Int...

2019-01-21 20:03:10 2422 1

原创 Android系统四大组件源代码情景分析之Activity

1. 分析Activity的启动流程public class ReadFile extends AppCompatActivity { //AppCompatActivity最开始的父类为Activity ... Intent intent = new Intent(ReadFile.this, ActivityNew.class); startActivity(intent); ...

2018-11-11 20:13:24 229

原创 Android系统四大组件源代码情景分析之Service

1. Service用法好文:https://blog.csdn.net/sy755754582/article/details/53924642效果:后台播放音乐1.1 定义Servicepublic class MyService extends Service { MediaPlayer mediaPlayer; @Override public IBinde...

2018-11-11 20:09:22 490

原创 Android系统四大组件源代码情景分析之BroadCastRecerver

1. BroadCastRecerver用法参考:https://www.cnblogs.com/mukekeheart/p/5697260.html1.1 定义广播接收器 — 定义在public class内部,即为内部类private IntentFilter intentFilter ;private MyBroadcastReceiver myBroadcastReceiver ;...

2018-11-09 15:53:45 258

原创 Android系统四大组件源代码情景分析之ContentProvider

1. 几个重要概念1.1 什么是ContentProviderContentProvider为不同进程间的数据交互提供一系列的标准化接口1.2 什么是ContentResolver在ContentProvider的使用过程中,需要借用ContentResolver来控制ContentProvider所暴露处理的接口,作为代理来间接操作ContentProvider以获取数据1.3 什么是...

2018-11-09 15:24:00 237

原创 设计模式之装饰者模式

好文:https://www.cnblogs.com/chenxing818/p/4705919.html1. 一个示例 Person / \ Man Decorator / \ ManDecorator1 ManDecorator21.1 定义public interface Perso...

2018-11-08 21:35:22 661

原创 Android系统线程间通信方式之runOnUiThread机制

一篇比较好的博客:https://www.jianshu.com/p/5555d1138d00子线程执行:runOnUiThread(new Runnable(){ public void run(){ //执行更新ui的操作 }});源码分析:frameworks\base\core\java\android\app\Activity.java:public...

2018-10-08 20:00:25 1593

原创 Android系统线程间通信方式之AsyncTask机制

比较好的博客:https://blog.csdn.net/qq_30379689/article/details/53203556https://blog.csdn.net/guolin_blog/article/details/11711405AsyncTask是对Handler与线程池的封装,目的也是实现线程间的通信,子线程执行耗时操作发送消息到主线程更新UI,使用线程池的主要原因是避免...

2018-10-08 19:47:50 510

原创 Android系统线程间通信方式之Handler机制

一篇表较好的博文:好文:https://blog.csdn.net/Y_C_C/article/details/806055011. Handler的用法分析public class DownloadActivity extends AppCompatActivity implements View.OnClickListener { private TextView download...

2018-10-08 19:05:59 430

原创 二叉树遍历方式

遍历方式:前序遍历、中序遍历和后序遍历。这三种方式是以访问父节点的顺序来进行命名的 父节点是N,左节点是L,右节点是R 前序遍历 N->L->R 中序遍历 L->N->R 后序遍历 L->R->N二叉树特点 特性A,对于前序遍历,第一个肯定是根节点; 特性B,对于后序遍历,最后一个肯定是根节点; 特性C,利用前序或后序遍历,确...

2018-06-13 21:49:08 218

原创 Android系统的启动流程

每个系统都有一个引导文件,由引导文件去运行linux内核,内核程序开始启动的时候会加载各种驱动和数据结构,开始加载android应用层的第一个进程(init进程c代码(system\core\init目录) Init.c),由这个进程加载其它的进程开始启动,本节主讲从内核开始执行Init.c到启动完成锁屏的过程1. system\core\init\Init.cint main(int...

2018-06-13 20:28:06 434

原创 OpenStack快速部署

尝试过很多方法来部署OpenStack,失败过很多次,最终找到一种比较方便快捷的方法,熟练的话可以在三个小时内部署成功!现记录一下部署过程,如果还没有思路的同学,相信按照这篇博客能很快部署成功! 1. 安装如下软件,下载资源 安装VirtualBox、Xshell、Xftp、花生壳 下载MirantisOpenStack-5.0.iso、CentOS-7-x86_64-GenericClo...

2018-06-01 16:15:10 7199 5

原创 CentOS离线安装MySQL

离线安装MySQL安装新版mysql前,需将系统自带的mariadb-lib卸载 rpm -qa|grep mariadb 打印:mariadb-libs-5.5.56-2.el7.x86_64 rpm -e –nodeps mariadb-libs-5.5.56-2.el7.x86_64解压mysql tar -xvf mysql-5.7.18-1.el7.x86_64.rpm-...

2018-06-01 10:10:22 1388 1

转载 虚函数和纯虚函数的作用与区别

虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数! 纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数! 虚函数 引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。 class Cman { public: virtual void Eat(){……}; void Move(); pr...

2018-04-15 16:31:13 131

原创 VMware虚拟机模拟Ubuntu无法上网的解决办法

1. ubuntu使用无线网卡上网a. 虚拟机 - 设置 - 网络适配器 - 桥接模式(不选复制物理网络连接状态,下面的自定义可能选VMnet0桥接状态)b. 编辑 - 虚拟网络编辑器 - VMnet0桥接模式 - 桥接模式(桥接到:实际的无线网卡) - 应用 - 确定c. 打开终端d. ifconfig(若使用的网卡为eth0)e. sudo ifconfig eth0 19

2017-11-27 19:54:39 3544

原创 Linux命令行

在我们学习Linux的过程中,都会使用Linux命令行,如果能熟练地使用Linux命令行,将会使我们在开发的过程中事半功倍,现在就介绍一下我在学习Linux的过程中经常使用的命令行,希望能对初学Linux的同学有一些帮助。1. cdeg. cd /usr      cd /usr/      cd usr/      cd -说明:cd /usr和cd /usr/的功能相同

2017-11-27 19:51:11 644

原创 编写简单的Makefile

1. 什么是Makefile?相信大多数学过单片机的同学都用过各种IDE软件,例如visual c++、keil、IAR、eclipse、Visual Studio等等,这些软件为我们提供了很方便的工具,可以一键编译,最终得到我们想要的二进制文件。但是,这些软件屏蔽了太多编译过程,所以相信很多同学都不明白其编译过程。而MakeFile就完成了这个编译过程,程序的编译过程主要分为如下几步:1

2017-11-23 11:20:56 17218 2

空空如也

空空如也

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

TA关注的人

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