- 博客(37)
- 资源 (3)
- 收藏
- 关注
原创 SeLinux权限配置心得总结
SeLinux权限配置心得总结1、编译命令:make selinux_policy或者cd system/sepolicymm2、编译后生成策略文件的路径:需要替换验证的文件,替换后要修改读写执行权限跟之前一样:out\target\product\platform\root\plat_*out\target\product\platform\root\nonplat_*out\target\product\platform\vendor\etc\selinux\precompile
2021-02-20 20:11:38 4411
原创 JAVA数据结构及算法--解析算术表达式
JAVA数据结构及算法–解析算术表达式1、本章内容主要参考于《Java数据结构和算法第二版》这本书。平时说的算术表达式就是中缀表达式,对计算机的算法来说如果要直接求算术表达式的值是比较困难的,所以可以按下面两步来实现算法会更容易:将算术表达式转换成另一种形式:后缀表达式。可以参考《中缀表达式转后缀表达式》计算后缀表达式的值。会使用到栈的知识,可以参考《JAVA数据结构及算法–Stack应...
2020-04-27 15:59:58 1723
原创 JAVA数据结构及算法--Queue分析及应用
Queue翻译过来就是队列的意思,队列简单的理解就是像我们排队买车票,排在队伍最前面的会先买到票并离开买票的队伍,其他想买票的人会从队伍后面加进来。所以队列是先进先出(FIFO)的数据结构。本章内容主要参考于《Java数据结构和算法第二版》这本书。1、定义常用的队列接口package queue;/** * 队列的操作接口定义 * @param <E> 泛型,匹配各种数...
2020-04-24 16:39:18 258
原创 JAVA数据结构及算法--Android中Activity的四种启动模式
在《JAVA数据结构及算法--Stack分析》和《JAVA数据结构及算法--Stack应用》文章中分析了JAVA源码中栈的实现及实现自定义的栈及栈的简单应用(单词逆序和分隔符匹配),接下来介绍栈在Android中的应用。Android中Activity的四种启动模式分别是:standard,singleTop,singleTask,singleInstance。standard,singleTop...
2020-04-22 19:24:54 204
原创 JAVA数据结构及算法--Stack应用
在《JAVA数据结构及算法--Stack分析》这篇文章中分析了源码Stack是怎么实现的,接下来要分析怎么自己去实现栈,栈有那些应用。本章内容主要参考于《Java数据结构和算法第二版》这本书。1、通过基本数据类型long数组实现栈。package stack;/** * 通过long的数组实现自定义的栈 * */public class StackX { private in...
2020-04-21 16:06:02 221
原创 JAVA数据结构及算法--Stack分析
步骤1、在对Stack进行分析前,先看看它是怎么使用的。步骤2、通过提取源码Stack里面的代码来实现自定义的栈MyStack。import java.util.EmptyStackException;import java.util.Vector;/** * MyStack是一个后进先出(LIFO)栈,继承于Vector类;MyStack也是从 * 源码Stack.jav...
2020-04-20 14:11:06 225
原创 中缀表达式转后缀表达式
1、定义中缀表达式:一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。后缀表达式定义:逆波兰表达式又叫做后缀表达式。逆波兰表示法是波兰逻辑学家J・卢卡西维兹(J・ Lukasewicz)于1929年首先提出的一种表达式的表示方法[1]。后来,人们就把用这种表示法写出的表达式称作“逆波兰表达式”。逆波兰表达式把...
2020-04-19 17:57:23 241
原创 UART通信之面向对象编程二(OOP)——数据封装
在《UART通信之面向对象编程(OOP)》这篇文章的基础上进行UART数据封装及使用线程来收发串口数据。下面一个一个介绍。1、使用队列的方式来存储串口数据,关于队列可以参考《数据结构——队列C/C++》。#ifndef __QUEUE_H__#define __QUEUE_H__#include <inttypes.h>#include <stdbool.h>...
2020-04-17 17:16:58 1112
原创 线程创建汇总——JAVA/C/C++
很多时候在处理一些耗时操作时,需要通过开辟线程来处理,这样不会阻塞主线程的执行。1、JAVA的线程创建。2、C中的创建线程,编译需要加线程参数,如:gcc cthread.c -o cthread -lpthread#include <stdio.h>#include <pthread.h>#include <unistd.h>void...
2020-04-16 19:38:03 153
原创 数据结构——队列C/C++
队列是一种先进先出(FIFO)的数据结构,本文将使用双向循环链表来实现队列。对双向循环链表不太了解的,可以参考《c中的双向链表实现》跟《JAVA数据结构及算法--LinkedList分析》。1、定义队列的数据结构及队列操作相关的函数#ifndef __QUEUE_H__#define __QUEUE_H__#include <inttypes.h>#include &l...
2020-04-14 11:20:42 205
原创 JAVA数据结构及算法--LinkedList分析
1、之前有写个一个c的双向循环列表,有兴趣的可以参考《c中的双向链表实现》。当时不太明白JAVA的指向问题,所以一直没有写java的双链表实现。C中'->'跟JAVA中‘.’其实是一样的。JAVA中通过赋值的方式来实现指向的问题。下面先看看LinkedList的使用及JAVA类似C中指针的问题。2、双向循环列表的数据结构如下:3、从源码LinkedList中提取代码,实现简化...
2020-04-12 15:19:17 134
原创 UART通信之面向对象编程(OOP)
上一篇介绍了UART的简单通信实现,不太了解通信过程的可以先参考上一篇文章《最简单的一个UART通信实例》。上一篇的《最简单的一个UART通信实例》是面向过程编程,本编将介绍UART通信的面向对象编程。1、抽象接口定义#ifndef MYUART_HARDINTERFACE_H#define MYUART_HARDINTERFACE_H#include <fcntl.h>...
2020-04-09 14:27:56 578
原创 最简单的一个UART通信实例
1、What’s UART?UART全称为Universal Asynchronous Receiver/Transmitter,即通用异步收发器,是串行通信一种通信技术,常用于单片机和电脑之间以及单片机和单片机之间的板级通信。下面是串口通信硬件连接图:2、使用的的系统函数int tcgetattr(int fd, struct termios *termios_p); //...
2020-04-01 15:25:26 1754
原创 Recovery中常用到的系统函数汇总(一)
最近在研究Android 5.1的recovery升级,发现里面的很多系统函数都不是很熟悉,现在做一下笔记,方便自己及有需要的朋友。1、库函数 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。下面的函数跟strcmp类似,返回值情况类似。C 库函数 int strncmp(const...
2020-03-16 16:16:51 350
原创 人工智能之概率轮--5个灯泡的概率问题
题目:假设某电路由5个灯泡组装而成,连接方式如图所示。假设5个灯泡在某时间范围内各自都能正常工作的概率都是p,且它们正常工作的事件是相互独立的,请问该电路在该时间范围内正常工作的概率是多少?答:第一种分析方法:设2,3,1,4,5,分别为A,B,C,D,E。那么有:P(A)=P(B)=P(C)=P(D)=P(E)=P元件C是关键,如果C正常工作,那么就会有...
2020-01-08 17:39:15 707
原创 人工智能之Python基础篇总结
逻辑运算and or not2、身份运算符3、修改元组元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:4、删除元组元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:5、字典键的特性字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。两...
2020-01-07 15:41:31 831
原创 数据结构--单链表C/C++
最近在学习数据结构,其中有介绍单链表跟单循环链表的,现在复习一下。首先要定义一下数据结构(节点),如下:typedef int DataType; //方便后面修改数据类型,有点像C++/JAVA中的泛型typedef struct Node { DataType data; struct Node *next;}Node;单链表:接下来是定义一个获取链表某个位置节点...
2019-03-11 18:04:55 181
原创 Android JNI 访问Java中的成员变量及非native方法
JNI的头文件生成及编译请参考《Android中的JNI使用指南一》1、修改Java类中的成员变量。通过HelloJNI.java类中changeNum()本地方法来修改成员number的值。number初始化为0,通过本地方法changeNum()修改为100。HelloJNI.java类中定义如下:changeNum()在C++中的实现,如下://修改java类中的成员变量(...
2019-03-05 17:32:20 417
原创 Android中的JNI使用指南一
一、简介JNI全称是Java Native Interface(Java本地接口)单词首字母的缩写,本地接口就是指用C和C++开发的接口。由于JNI是JVM规范中的一部份,因此可以将我们写的JNI程序在任何实现了JNI规范的Java虚拟机中运行。同时,这个特性使我们可以复用以前用C/C++写的大量代码。 开发JNI程序会受到系统环境的限制,因为用C/C++语言写出来的代码或模块,编译过...
2019-02-25 13:47:05 277
原创 HIDL最全编译流程
想了解HIDL介绍的可以参考《HIDL概述》,本篇文章主要介绍HIDL的详细编译流程及简单的客户端应用(C++跟Android客户端的应用)。一、准备工作整一套源码,Android O或者Android P的 保证全套代码已经全编译,原生代码全编译命令source build/envset.sh lunch make 3、hidl-gen工具已经安装,安装命令make h...
2018-11-27 10:49:07 21304
原创 HIDL概述
HIDL背景Treble 是 Google Android 团队的一项重大项目,意在 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Android 7.x 及更早版本中没有正式的供应商接口,因此设备制造商必须更新大量 Android 代码才能将设备更新到新版 Android 系统:图1 Treble ...
2018-11-27 10:28:15 23669
原创 常用的两种handler调用方法
一、Handler、Thread、HandlerThread三者之间的关系如下:1、Handler:在android中负责发送和处理消息,通过它可以实现其他支线线程与主线程之间的消息通讯。2、Thread:Java进程中执行运算的最小单位,亦即执行处理机调度的基本单位。某一进程中一路单独运行的程序。3、HandlerThread:一个继承自Thread的类HandlerThread。...
2018-10-23 14:48:17 7380
原创 后台应用服务弹自定义Toast框
之前看到自己的手机应用突然会弹出一个提示框感到有点神奇,不知道是怎么做到的,后面才了解到是后台服务弹的。后台服务弹Toast框其实跟Activity界面差不多,下面先来看看项目SimpleJarService结构:├── AndroidManifest.xml├── Android.mk├── libs│ ├── android-support-v4.jar│ ├── f...
2018-10-19 13:53:33 913
原创 在Android系统中实现AIDL 自定义对象传递
今天要在《在Android系统中实现AIDL接口回调》这篇文章的基础上实现AIDL自定义对象的传递功能。还是上一篇说到的三个项目:├── SimpleJar├── SimpleJarClient└── SimpleJarService一、在SimpleJar项目中添加aidl中要传递的对象StudentInfo.aidl跟StudentInfo.java,具体如下: ├── A...
2018-10-18 16:15:50 2479
原创 Android中通过反射的方式判断U盘是否真正挂载
由于StorageManager.java类中的getVolumeList()和getVolumeState(String mountPoint)方法是hide(隐藏)的,所以需要通过反射的方式获取对应的存储信息。源码./frameworks/base/core/java/android/os/storage/StorageManager.java类中的getVolumeList()...
2018-10-16 16:03:35 3279
原创 在Android系统中实现AIDL接口回调
在文章《在Android系统中实现AIDL功能》中实现了aidl的接口调用,但是有时候客户端调用完接口函数后希望服务端有数据返回,这时候就需要定义回调函数。在《在Android系统中实现AIDL功能》的基础上实现接口的回调。还是分三个项目实现,如下图:├── SimpleJar├── SimpleJarClient└── SimpleJarService一、定义回调需要的aidl...
2018-10-15 18:43:57 8536
原创 在Android系统中实现AIDL功能
之前实现AIDL的功能都是通过eclipse或者android studio工具实现,最近由于项目需要,需要系统层提供接口给应用层使用,所以想到使用AIDL。下面已一个非常简单的Demo来说明在Android系统平台生成AIDL的jar供应用层使用。一、AIDL的jar制作首先新建一个android项目来用生产aidl的jar包,项目结构如下:gunder@gunder:/mnt...
2018-09-28 18:46:39 2592
原创 Android 删除sdcard目录中的某些目录文件
1、通过FileFilter()方法找到要删除的目录,如: //返回要删除的目录列表 File[] childFiles = part.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { String name = pathname.getNa...
2018-08-03 15:56:41 4463
原创 Putty连不上新安装的Ubuntu 16.04.6
今天重新安装了Ubuntu 16.04.6,发现putty连接不上了。解决方法如下:1. 首先检验linux系统是否安装了ssh-server在终端中输入:ssh localhost若出现:ssh: connect to host localhost port 22: Connection refused则说明没有安装,需手动安装 SSH。2. 安装 SSH2.1 安...
2020-02-18 12:23:11 1289
原创 工作中常用的命令
一、cmd命令:Activity启动:adb shell am start -n com.wedrive.android.welink/com.wedrive.android.welink.MainActivityService启动:adb shell am startservice -n com.iflytek.cutefly.speechclient/com.iflytek.aut...
2018-10-10 17:32:15 362
原创 在Android系统中将AIDL功能集成到framework.jar中
上一篇文章实现了AIDL在packages/apps目录编译成jar包供应用层的服务端跟客户端使用,具体参考《在Android系统中实现AIDL功能 》。仍然使用《 在Android系统中实现AIDL功能 》中的SimpleJar项目,目录结构如下:gunder@gunder:/mnt/hgfs/ubuntuShare/aidl/SimpleJar$ tree.├── Android.mk...
2018-09-29 14:06:57 1171
原创 Android原生的JNI学习
1、JNI是Android中Java调用C/C++中的函数的一种实现。在源码中有着JNI的一些简单的实列,路径是/development/ndk/samples,如图:今天学习的是two-libs这个项目,该项目的JNI目录是这样的: first.c里面只有一个实现加法的函数,second.c调用了first.c里面的方法,并且会将返回值返回给Java调用层。first.c:...
2018-08-10 18:11:49 176
原创 c中的双向链表实现
1、之前在培训公司学习了用C语言实现双向链表的知识,现在有空重新写一遍。首先定义一下头文件list.h。 1 #ifndef __LIST_H__ 2 #define __LIST_H__ 3 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <string.h> 7 ...
2018-08-10 11:52:46 3207
原创 Android 中的Java跟C/C++的Binder通信
1、大家都知道Android中进程间的通信是通过binder来实现的,这里主要是讲代码中的简单实现。如果想了解binder的通信细节或实现原理,可以参考https://blog.csdn.net/jmq_0000/article/details/7349844。个人觉得这篇博客讲的还是很不错的。现在就开始demo的介绍,该demo主要是通过java传递文件路径给C++来实现删除该路径,目的是为了了...
2018-08-07 17:54:49 3502
原创 Android中C/C++的日志打印
1、对于很多Android开发人员来说,Android的标准日志打印已经使用的非常习惯,如果在调试C/C++时使用的是printf或者cout这种方式打印日志,那查找起来会非常不舒服,为了使自己舒服起来,还是有必要使用android标准的日志方式打印日志的。先看一下效果:2、新建一个deleteFile.cpp文件,导入android标准日志打印的头文件<android/log.h&...
2018-08-04 16:27:51 10343
原创 Android中java的日志LOG自定义打印
1、通过StackTraceElement获取方法的类名、方法名、文件名以及调用的行数。private static String getPrefix(){ StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[4]; String className = st...
2018-08-03 21:33:31 2338
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人