自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张许平的博客

菩提本无树,明镜亦非台。 本来无一物,何处惹尘埃!

  • 博客(58)
  • 收藏
  • 关注

转载 ADB命令大全

此文章内容整合自网络,欢迎转载。 我相信做Android开发的朋友都用过ADB命令,但是也只是限于安装应用push文件和设备重启相关,更深的就不知道了,其实我们完全可以了解多一点,有一些不常用的场景我们至少应该知道它可以做到,比如,我们知道adb install 却不知道adb s...

2020-12-21 11:10:42 888

原创 职工管理系统(C++)

1、管理系统需求职工管理系统可以用来管理公司内所有员工的信息本教程主要利用C++来实现一个基于多态的职工管理系统公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责普通员工职责:完成经理交给的任务经理职责:完成老板交给的任务,并下发任务给员工老板职责:管理公司所有事务管理系统中需要实现的功能如下:退出管理程序:退出当前管理系统增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号显示职工信息:显示

2020-12-04 18:37:02 16905 5

原创 C++核心编程

本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓。1 内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程1.1 程序运行前​ 在程序编译后,生成了exe可执行程序,未

2020-11-30 19:56:02 1015

转载 通讯录管理系统(C++)

1、系统需求通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人显示联系人:显示通讯录中所有联系人信息删除联系人:按照姓名进行删除指定联系人查找联系人:按照姓名查看指定联系人信息修改联系人:按照姓名重新修改指定联系人清空联系人:清空通讯录中所有信息退出通讯录:退出当前使用的通讯录2、创建项目创建项目步骤如下:创建新项目

2020-11-18 11:23:11 31743 31

原创 C++基础入门教程

1 C++初识1.1 第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1 创建项目​ Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开1.1.2 创建文件右键源文件,选择添加->新建项给C++文件起个名称,然后点击添加即可。1.1.3 编写代码#include<iostream>using namespace std;int main() { cout <<

2020-11-17 11:20:13 38324 11

原创 Visual Studio下载、安装、运行教程

环境搭建步骤:下载软件安装软件运行软件1. 下载软件在百度搜索 visual studio,选择 如下图中的选项:进入Visual Studio 官网后,选择 下载Windows版,并选择Community 2019 社区版本进行下载保存软件到电脑中2. 安装软件双击运行下载的安装文件,弹出安装界面选择 使用C++的桌面开发 这一选项,如需其他,自行勾选。点击安装按钮开始安装安装时间会依据网速、电脑设备等因素会不固定。安装成功后提示重启,点击重启完成剩余配置3.

2020-11-11 17:08:11 15914 3

原创 vim入门教程

1. 移动光标H:左J:下K:上L:右2. 模式vim的模式有如下几种,但我们只需要掌握其中几个比较常见的模式即可。2.1 普通模式进入普通模式的方式:vi + fileName通过vi + fileName 打开文件时就是普通模式,通过hjkl移动光标查看文件。2.2 插入模式进入插入模式的几种方式:3. 退出3.1 不保存修改强制退出:q!3.2 保存修改并退出:wq 或者 shift + zz4. 删除在普通模式下,删除单个字符用x命令

2020-08-12 17:25:10 1112

原创 volatile的学习总结

1.volatile是Java虚拟机提供的轻量级的同步机制保证可见性不保证原子性禁止指令重排2. Java内存模型(JMM)JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过规范定义了程序中的各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式。JMM的同步规定:线程解锁前,必须把共享变量的值刷新回主内存线程加锁前,必须读取主内存的最新值到自己的工作内存加锁解锁是

2020-07-06 16:04:31 289

原创 gitHub搜索技巧总结

1. GitHub Trend 和 GitHub TopicGitHub Trend:总结每天/每周/每月的热门Repositories和Developers,可以查看某个周期时的热门开发项目和开发者。点击进入GitHub TrendGitHub Topic:展示最新和流行的讨论主题,你可以看到开发项目和一些开发技术的讨论主题。点击进入GitHub Topic2. GitHub常用词的含义watch:会持续受到该项目的动态fork:复制某个项目到自己的Github仓库中sta

2020-05-29 18:17:44 1683

原创 数据结构——顺序存储二叉树

因为从数据存储的角度来看,数组存储方式和树的存储方式是可以互相转换的,即数组可以转换为树,而树也可以转换成数组。八大排序算法中的堆排序,就会使用到顺序存储二叉树,后面在堆排序算法中会体现出来。1. 什么叫作顺序存储二叉树当一颗二叉树满足如下两个条件时,就是顺序存储二叉树:二叉树是以数组的方式存放数据的。如下图所示:在遍历数组时,仍然可以按照前序遍历、中序遍历和后序遍历的方式来完成节点的遍历2. 顺序存储二叉树的特点顺序二叉树通常只考虑完全二叉树第n个元素的左子节点在数组

2020-05-15 11:15:19 1877

原创 数据结构——树

1. 为什么需要树这种数据结构?数组存储方式的优缺点:优点:可以直接通过下标访问元素,速度快。当是有序数组的时候,还可以使用二分查找提高查询的速度。即读取效率较高。缺点:如果需要检索某个具体的值,或插入值的时候,数组会整体移动,这时候效率就较低。即存储效率较低链式存储方式的优缺点:优点:存储效率较高。例如在插入一个数值节点,只需要将插入节点链接到链表中就可以了,删除效率也较高。缺点:检索效率较低,例如当需要检索某个值的时候,需要从头节点开始遍历。即读取效率较低

2020-05-14 15:23:34 252

原创 自定义控件——轮播广告条

1. 效果图2. 布局文件<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android....

2020-03-29 23:21:57 229

原创 自定义控件——旋转菜单

1. 效果图2. 布局文件<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!--这里有个坑...

2020-03-27 22:07:38 543

原创 第一行代码学习笔记第十章——探究服务

知识点目录10.1 服务是什么10.2 Android多线程编程* 10.2.1 线程的基本用法* 10.2.2 在子线程中更新UI* 10.2.3 解析异步消息处理机制* 10.2.4 使用AsyncTask10.3 服务的基本用法* 10.3.1 定义一个服务* 10.3.2 启动和停止服务* 10.3.3 活动和服务进行通信10.4 服务的生...

2019-12-30 17:06:19 476 1

原创 第一行代码学习笔记第九章——使用网络技术

知识点目录9.1 WebView的用法9.2 使用HTTP协议访问网络* 9.2.1 使用HttpURLConnection* 9.2.2 使用OkHttp9.3 解析XML格式数据* 9.3.1 Pull解析方式* 9.3.2 SAX解析方式9.4 解析JSON格式数据* 9.4.1 使用JSONObject* 9.4.2 使用GSON9...

2019-12-24 17:33:37 543

原创 第一行代码学习笔记第八章——运用手机多媒体

知识点目录8.1 将程序运行到手机上8.2 使用通知* 8.2.1 通知的基本使用* 8.2.2 通知的进阶技巧* 8.2.3 通知的高级功能8.3 调用摄像头和相册* 8.3.1 调用摄像头拍照* 8.3.2 从相册中选择照片8.4 播放多媒体文件* 8.4.1 播放音频* 8.4.2 播放视频8.5 小结与点评知识点回顾8.1...

2019-12-18 17:29:07 489

原创 第一行代码学习笔记第七章——探究内容提供器

知识点目录7.1 内容提供器简介7.2 运行权限* 7.2.1 Android权限机制详解* 7.2.2 在程序运行时申请权限7.3 访问其他程序中的数据* 7.3.1 ContentResolver的基本用法* 7.3.2 读取系统联系人7.4 创建自己的内容提供器* 7.4.1 创建内容提供器的步骤* 7.4.2 实现跨程序数据共享7....

2019-12-13 17:43:12 302

原创 第一行代码学习笔记第六章——详解持久化技术

知识点目录6.1 持久化技术简介6.2 文件存储* 6.2.1 将数据存储到文件中* 6.2.2 从文件中读取数据6.3 SharedPreferences存储* 6.3.1 将数据存储到SharedPreferences中* 6.3.2 从SharedPreferences中读取数据* 6.3.3 实现记住密码功能6.4 SQLite数据库存储*...

2019-12-11 18:36:51 532

原创 第一行代码学习笔记第五章——详解广播机制

知识点目录5.1 广播机制5.2 接收系统广播* 5.2.1 动态注册监听网络变化* 5.2.2 静态注册实现开机广播5.3 发送自定义广播* 5.3.1 发送标准广播* 5.3.2 发送有序广播5.4 使用本地广播5.5 广播的最佳实践——实现强制下线功能5.6 Git时间——初识版本控制工具* 5.6.1 安装Git* 5.6...

2019-12-06 17:17:54 513

原创 第一行代码学习笔记第四章——探究碎片

知识点目录4.1 碎片是什么4.2 碎片的使用方式* 4.2.1 碎片的简单用法* 4.2.2 动态添加碎片* 4.2.3 在碎片中模拟返回栈* 4.2.4 碎片和活动之间进行通信4.3 碎片的生命周期* 4.3.1 碎片的状态和回调* 4.3.2 体验碎片的生命周期4.4 动态加载布局的技巧* 4.4.1 使用限定符* 4.4.2 使用最小宽度...

2019-11-26 15:46:14 352

原创 网络请求工具

最近在对以前写的代码进行总结,为了方便以后的使用和查看,所以对自己负责模块的通用代码进行总结。在我负责的应用管控中,网络请求用的是HttpURLConnection,并没有用OkHttp。网络请求一般就Get和Post请求。1. 工具类定义import java.io.BufferedReader;import java.io.IOException;import java.io.In...

2019-11-21 16:11:58 843

原创 第一行代码学习笔记第三章——UI开发的点点滴滴

知识点目录3.1 如何编写程序界面3.2 常用控件的使用方法* 3.2.1 TextView* 3.2.2 Button* 3.2.3 EditText* 3.2.4 ImageView* 3.2.5 ProgressBar* 3.2.6 AlertDialog* 3.2.7 ProgressDialog3.3 详解4中基本布局* 3.3.1 线性布局*...

2019-11-13 22:54:19 431

原创 冒泡排序、插入排序、选择排序

在平时的项目中,我们遇到最多的算法应该就是排序了。其中最经典、最常用的算法有:冒泡排序、插入排序、选择排序、快速排序、归并排序、基数排序等。1. 评判排序算法的标准排序算法有很多种,那么我们该如何评判一个排序算法呢?一般情况下,我们可以从排序算法的执行效率、排序算法的内存消耗和排序算法的稳定性去考虑。1.1 执行效率1. 最好情况、最坏情况、平均情况时间复杂度在要排序的数据中,执行效率与...

2019-10-24 19:16:07 364

原创 生成和合入patch的两种方式

在平时有代码移植或合入芯片厂商或板卡商的代码时,我们就可能要用到打补丁技术。1. 两种补丁方案Git提供了两种补丁方案,分别patch和diff。diffgit diff 生成的是UNIX标准补丁.diff文件。只会记录文件改变的内容,不会带有commit记录信息,多个commit可以合并成一个diff文件。patchgit format-patch生成的是Git专用.patch文件。...

2019-07-23 18:11:24 20932

原创 屏蔽Crash 提示框的两种方式

在Android应用开发的过程中,有时候我们总觉得自己写的代码天衣无缝,根本不会有bug。。。(一切都是幻觉),但在后期的版本迭代中总会让你猝不及防的报各种crash,我们称之为“崩溃”。出错的原因一般都千奇百怪。在《结合源码深入理解Android Crash处理流程》中可知:当发生crash时,系统会kill掉正在执行的程序,并弹一个crash提示框给用户去选择。在继续写之前,先说下前提:我...

2019-07-04 20:53:41 1669

原创 结合源码深入理解Android Crash处理流程

应用程序crash在开发过程中还是很常见的,本文主要是从源码的角度去跟踪下Android对于crash的处理流程。App crash的全称:Application crash。而Crash又分为:native crash和framework crash(包含App Crash)。我们在平时开发的时候对于可能有异常的地方,一般都是用try-catch语句去catch 异常信息,但当没有有效的catc...

2019-07-03 21:32:05 1909

原创 从源码角度看Android系统Launcher在开机时的启动过程

Launcher是Android所有应用的入口,用来显示系统中已经安装的应用程序图标。Launcher本身也是一个App,一个提供桌面显示的App,但它与普通App有如下不同:Launcher是所有应用的入口,可以管理应用Launcher是在Android系统启动后就要显示给用户的应用Launcher是顶部App,即任何应用返回后都是到Launcher,不能再继续返回La...

2019-06-25 18:30:39 1014

原创 从源码角度看Android系统SystemServer进程启动过程

SystemServer进程是由Zygote进程fork生成,进程名为system_server,主要用于创建系统服务。备注:本文将结合Android8.0的源码看SystemServer进程的启动过程以及SystemServer进程做了哪些重要工作。1. SystemServer进程启动的起点从《从源码角度看Android系统Zygote进程启动过程》一文中可知:Zygote进程启动过程中...

2019-06-21 17:27:33 1985

原创 从源码角度看Android系统Zygote进程启动过程

在Android系统中,DVM、ART、应用程序进程和SystemServer进程都是由Zygote进程创建的,因此Zygote又称为“孵化器”。它是通过fork的形式来创建应用程序进程和SystemServer进程,由于Zygote进程在启动时会创建一个DVM或者ART,因此通过fork而创建的应用程序进程和SystemServer进程可以在内部获取一个DVM或ART的实例副本。备注:本文将结...

2019-06-19 21:18:32 924

原创 谈谈Android中的persistent属性

在我们开发系统级的App时,很有可能就会用persistent属性。当在AndroidManifest.xml中将persistent属性设置为true时,那么该App就会具有如下两个特性:在系统刚起来的时候,该App也会被启动起来该App被强制杀掉后,系统会重启该App。这种情况只针对系统内置的App,第三方安装的App不会被重启。1. persistent属性的定义pers...

2019-06-02 18:36:17 36094 3

原创 递归

递归是一种应用非常广泛的算法(或者编程技巧)。也是很多数据结构和算法编码实现的基础。比如DFS深度优先搜索、前中后序二叉树遍历等等,所以搞懂递归是学习后面复杂的数据结构和算法的前提条件。1. 理解递归递归在我们的生活中也是很常见的:在电影院里,在漆黑的时候,我们没法直接知道自己是第几排,于是我们就可以问前一排的人他是第几排,我们只要在前一个人的基础加一,但前面一排的人也看不清楚,所以他也要...

2019-05-04 22:44:12 204

原创 数据结构——队列

队列也是一种数据结构,今天我们主要学习几种基本的队列,然后学习下队列在线程池中的应用。1. 什么是队列?队列具有“先进先出,后进后出”的特点。支持操作的也有限,最基本的操作也只有两种:入队enqueue():放一个数据到队列尾部出队dequeue():从队列头部取出一个元素从上图可以看出,队列和栈一样,都是操作受限的线性表数据结构。队列作为一种非常基础的数据结构,应用...

2019-04-30 20:39:05 347

原创 数据结构——栈

栈是一种数据结构,今天我们先来理解下栈的定义,然后再看几个在现实开发中运用到的实例。1. 什么是栈?栈是一个具有“先进后出、后进先出”这种特点的数据结构。从栈的结构图中可以看出,栈是一种“操作受限”的线性表,只允许在一端插入或删除数据。从功能上来说,数组或链表可以替代栈,但特定的数据结构是对应特定场景的抽象。当某个数据集合只涉及在一端插入和删除数据,并且满足先进后出、后进先出的特性时...

2019-03-21 21:36:13 3822

原创 从源码角度看Android系统init进程启动过程

init进程是Linux系统中用户空间的第一个进程,进程号为1。Kernel启动后,在用户空间启动init进程,并调用/system/core/init.cpp中的main方法执行一些重要的工作。备注:本文将结合Android8.0的源码看init进程的启动过程以及init进程做了哪些重要工作。1. init进程启动前系统的启动流程在引入init进程前,我们需要大致了解系统是如何走到init...

2019-03-18 20:38:15 843

原创 数据结构——链表

链表也是一种数据结构,相比较于数组,略显复杂。链表和数组都是非常基础、非常常用的数据结构。1. 数组与链表的区别从底层的存储结构上看,二者申请的内存空间不一样:数组需要一块连续的内存空间来存储,对内存要求较高。链表不需要一块连续的内存空间,它通过"指针"将一组零散的内存块串联起来。例如,当我们申请一个100MB大小的数组,当内存空间中没有连续的、足够大的存储空间时,即便内存的...

2019-03-17 23:45:59 451

原创 数据结构与算法书籍推荐

学习数据结构与算法,还是很有必要看几本相关的书籍,但根据不同基础的人,合适看的书也不一样,因此,针对不同层次、不同语言的人,推荐几本市面上口碑不错的书。1. 入门级针对刚入门的同学,建议不要急着去看那些经典书,像《算法导论》、《算法》这些比较经典、权威的书。虽然书很好,但看起来很费劲,如果看不完,效果会很不好。所以建议先看两本入门级的趣味书:《大话数据结构》《算法图解》大话数据结构...

2019-03-16 18:49:31 64430 23

原创 数据结构——数组

数组不仅是编程语言中的一种数据类型,也是最基础的数据结构。1. 数组的基本概念数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。1.1 线性表线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前、后两个方向。除了数组之外,队列、栈、链表等都是线性表结构。1.2 非线性表非线性表中的数据不是简单的前后关系。二叉树、堆、图是非线...

2019-03-15 20:34:45 1211

原创 复杂度分析

知识点目录1.为什么需要复杂度分析2.大O复杂度表示法2.1 三种常用的时间复杂度分析法只计算执行次数最多的那一段代码加法法则乘法法则3.常见的几种时间复杂度3.1 常量阶O(1)3.2 对数阶O(logn)3.3 O(m+n)、O(mn)4.空间复杂度分析5.最好、最坏情况时间复杂度6.平均情况时间复杂度7.均摊时间复杂度8.复杂度总结复杂度分析...

2019-03-14 13:55:11 999

原创 《18成长,19蜕变》

光阴似箭,岁月如梭。又到了快要过年的时候,马上就可以回到养育了20多年的家乡,很兴奋,很激动。但回家之前,想先好好对18年做个总结,顺便对19年做个简单的规划,希望未来的一年能更好的成长。17年年度总结时,对18年的期望词是:前行。但现在回想起来,我更想用“成长”去描述。犹记得16年那个炎热的夏天,带着赤子之心从南京来到向往已久的魔都。时至今日,已完整的走过了两个春夏秋冬,从16年的憧憬,到17年...

2019-02-01 17:12:34 444

原创 从Jenkins或Gerrit上获取拉代码和编译命令

从Jenkins或Gerrit上获取拉代码和编译命令在解一个新平台的bug时,有时候我们需要去拉新平台的代码和知道编译命令,这时候我们一般是去找对应的release manager或去问SPM,这其中就会增加沟通成本,这时候如果我们能自己去公司的Jenkins或Gerrit上获取这些信息,就会达到高效、快速的效果。1. 从Jenkins上去寻找前提:到Jenkins上去找对应项目的这些信息,...

2019-01-31 10:52:59 4174 1

空空如也

空空如也

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

TA关注的人

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