自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不忘初心

少壮不努力,老了还得做IT。

  • 博客(139)
  • 资源 (14)
  • 收藏
  • 关注

原创 不一样的Android体系架构

本文讲述的Android系统体系架构,是指应用层之下的整个系统内部的架构层级关系。而并非常说的4层架构:应用层,framework,运行库与环境,Linux内核,而是把系统内部的流程调用划分更加详细。一、架构Android系统体系架构图: Android系统体系架构分为5层,自顶而下分别是:应用程序框架(Application Framewo...

2018-08-22 17:12:25 1036

原创 LCD屏参:手把手教你配置LCD屏参(proch值)

 LCD屏参(proch值)解释和计算Linux内核的lcd控制器使用clcd_panel结构体表示一个LCD屏的硬件参数: /* include/linux/fb.h */  struct fb_videomode {  const char *name; /* optional */  u32 refresh; /* optional */  u32 xres;  ...

2018-05-16 19:06:04 18114

转载 安卓Handler机制:深入理解Looper,Handler,Message,Messge Queue内部原理

Handler的运行机制Handler的作用:当我们需要在子线程处理耗时的操作(例如访问网络,数据库的操作),而当耗时的操作完成后,需要更新UI,这就需要使用Handler来处理,因为子线程不能做更新UI的操作。Handler能帮我们很容易的把任务(在子线程处理)切换回它所在的线程。简单理解,Handler就是解决线程和线程之间的通信的。Handler的使用使用的handler的两...

2018-05-02 10:25:40 1208

原创 i2c总线(基本原理)

 相关文章:                 一 .  i2c总线协议                 二.   普通IO模拟i2c总线                 三.   简单i2c设备驱动实例 i2c总线协议1.I2C协议   2条双向串行线,一条数据线SDA,一条时钟线SCL。   SDA传输数据是大端传输,每次传输8bit,即一字节。   支持多主控(...

2017-09-19 10:15:17 4516

原创 OTA升级实例

 Platform: RK3399 OS: Android 7.1  一、全编make -j32./mkimage.sh ota二、生成原始的 OTA 完整包make otapackage会在 out/target/product/rk3399_firefly_box/下生成rk3399_firefly_box-ota-eng.root.zip所生成的这个...

2017-09-18 16:28:48 3719

原创 安卓强制横屏或竖屏实例

 一.  OS:安卓5.1修改文件:frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java 在函数updateOrientationFromAppTokensLocked,强制为竖屏添加:req = ActivityInfo.SCREEN_ORIENTATION_PORTR...

2017-09-14 16:23:08 1779

原创 安卓去除虚拟按键(home键,返回键,列表键)

系统5.1相关文章:安卓添加虚拟按键1.修改以下两个文件中home和recent_app的visibility属性为gone(属性为隐藏)frameworks/base/packages/SystemUI/res/layout-sw600dp/navigation_bar.xmlframeworks/base/packages/SystemUI/res/layout/nav...

2017-08-10 15:48:46 16188

原创 c++基础(6) - string

简介:string 是 C++ 中常用的一个类,它非常重要,我们有必要在此单独讲解一下。使用 string 类需要包含头文件<string>,下面的例子介绍了几种定义 string 变量(对象)的方法:​#include<iostream>#include<string>using namespace std;int main(){ string s1; string s2 ="c plus plus";...

2021-11-15 21:53:29 673 1

转载 C++基础(5) - 内存管理

内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能。本期专题将从内存管理、内存泄漏、内存回收这三个方面来探讨C++内存管理问题。...

2021-11-11 23:48:43 177

转载 C++基础(4) - 数组

1. Cpp中的数组C++支持数组数据结构,它可以存储一个固定大小的相同类型的元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个单独的变量,如a0,a1,a2,a3,a4...,a99,而是声明一个数组变量,比如as,然后使用as[0],as[1],as[2],...,as[99]来代表一个个单独的变量,数组的特定元素可以通过索引来访问。所数组都是由连续的内存位置组成,最低的地址对应第一个元素,最高的地址对应最后一...

2021-11-09 22:17:31 40

原创 Linux signal、sigaction的使用总结

一、什么是信号信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。比如kill、程序异常crash、段错误等。但它们还可以作为进程间通信或修改行为的一种方式,明确地由一个进程发送给另一个进程。一个信号的产生叫生成,接收到一个信号叫捕获。二、信号的种类信号的名称是在头文件signal.h中定义的,信号都以SIG开头,常用的信号并不多,常用的信号如下:更多的信号类型可在kernel目录下搜...

2021-11-04 22:38:26 39

原创 Shell脚本快速入门

1.Shell脚本中有需要权限输入密码的:echo ${PASSWORD} | sudo -S XXX2.if else的使用if [ $1x == "ab"x ]; then echo "you had enter ab"elif [ $1x == "cd"x ]; then echo "you had enter cd"else echo "you had enter unexpected word"fi3.注释:# if f...

2021-06-10 14:26:48 66

原创 Android studio:编译遇到的问题及常用技巧

1. 编写本地代码(C/C++)自动补全: 实际要做的就是将Gradle链接到外部CMake(CMakeLists.txt)或ndk-build(Android.mk)项目从IDE左侧打开“项目”窗格,然后选择Android视图。 右键单击要链接到本机库的模块,例如应用程序模块,然后从菜单中选择“Link c++ Project with Gradle”。您应该看到一个类似于图4所示的对话框。 从下拉菜单中,选择CMake或ndk-build。 如果选择CMake,请使用...

2020-11-06 11:35:08 156

原创 android NDK(四) :JNI本地数组及对象的处理实例

1. C++返回数组类型://返回float[],其他基本数据类型数组类似JNIEXPORT jfloatArray JNICALL Java_com_miles_Test_RetFloatArray(JNIEnv *env, jclass) { jfloatArray positionArray = env->NewFloatArray(2); if (positionArray == NULL){ return NULL; } jfloat tempArray[2

2020-11-04 19:18:33 132

原创 android NDK(三) :C/C++代码调用java实例

1. java代码:package com.miles;import android.content.Context;import android.provider.Settings;import android.util.Log;public class Test { static { System.loadLibrary("native-lib"); } public static String getString() { ...

2020-11-04 09:33:15 107

原创 android NDK(二) :JNI的数据类型和类型签名

基本类型JNI类型 Java类型 描述 jbyte byte 有符号,8位,整型 jshort short 有符号,16位,整型 jint int 有符号,32位,整型 jlong long 有符号,64位,整型 jfloat float 32位,浮点型 jdouble double 64位,浮点型 jboolean boolean 无符号,8位,整型 jchar ...

2020-11-03 22:31:25 99

原创 项目Git tag格式规范

Git tag format:<ProjectName>_<Version>_<comments(optional)>Where:ProjectName- 采用UpperCamelStyle风格。第一个字母大写。Version- version in a format v{major}.{minor}.{build}{patch} ; major is number, minor is number, build is number, patch i...

2020-09-23 17:24:48 848

原创 软件版本发布说明

RequirementsTitle of "Release Notes". Date with format of:Date:Month ##[st|nd|rd|th], 20## Version with format of:Version:Hello SDK#.# Bulletted/Numbered Lists Each list of items in the Release notes uses a bulletted/numbered list. Bulletted li...

2020-09-23 17:18:51 164

原创 软件版本格式

为了在软件产品生命周期中更好的沟通和标记,我们应该对APP、软件的版本号命名的规范和原则有一定的了解。

2020-09-23 15:25:48 275

原创 C++代码风格规范

Introduction介绍以下是此代码惯例的重点:C++ Coding Style Guide Highlights但我们强烈建议大家阅读完整文档因为包含了很多有用的信息和例子。头文件通常,每个.c / .cpp文件都应该有一个关联的 .h文件。 有一些常见的例外,例如单元测试(unit tests)和只包含main()函数的小型 .c / .cpp文件。正确使用 header files 会对代码的可读性,大小和性能有所提升。以下规则将会指示使用 header files 的

2020-09-23 10:52:20 338

转载 Android大厂面试题锦集(BAT TMD JD 小米)

上次写这篇文章的时候也差不多是一年前了,这一年我兜兜转转从android到java又回到android,校招面了很多大厂,阿里、京东、小米、头条、知乎、腾讯、有赞,也收获了几个offer。这是集合了牛客网、百度、简书等网站的几十篇面经和我自己面试的经历的合集,希望大家喜欢。1.android事件分发机制,请详细说下整个流程事件分发(面试).png2.android view绘制机制和加载过程,请详细说下整个流程1.ViewRootImpl会调用performTraversals(),.

2020-08-24 16:02:02 1717

转载 Android中三种锁的基本实现

一、synchronized基本概念:对象锁synchronized(object){….}用法在以上的代码块中只能由一个线程执行!!!wait()、notify()是用在这个代码块当中的。wait()可以使当前线程A马上失去对象锁并且沉睡,直到对象调用notify()唤醒该线程。此时持有对象锁的线程B会先行执行完毕,然后再将对象锁交给线程A继续执行。public class Person {private String name;private int age;public Pers

2020-06-22 21:53:38 865

转载 C++11多线程mutex

mutex又称互斥量,用于提供对共享变量的互斥访问。C++11中mutex相关的类都在<mutex>头文件中。共四种互斥类:序号 名称 用途 1 std::mutex 最基本也是最常用的互斥类 2 std::recursive_mutex 同一线程内可递归(重入)的互斥类 3 std::timed_mutex 除具备mutex功能外,还提供了带时限请求锁定的能力 4 std::recursive_timed_mutex

2020-06-16 19:24:10 199

转载 C++ pthread 多线程

本节将详细介绍std::thread的用法。std::thread在<thread>头文件中声明,因此使用std::thread需包含<thread>头文件。<thread>头文件摘要<thread>头文件声明了 std::thread 线程类及std::swap(交换两个线程对象)辅助函数。另外命名空间std::this_thread也声明在<thread>头文件中。下面是 C++11 标...

2020-06-16 19:00:52 1235

原创 Android Bitmap,Image,Mat之间的相互转换

本文记录的主要是安卓java层获取到图片Image或者Bitmap,传到本地处理, 然后再把本地的图片传回java层显示一 . JAVA层的Image图片传到本地处理,然后再传回java层显示://Image转成YUV Byte[]ImageReader readerImage image = reader.acquireLates...

2020-01-06 17:40:24 4365

原创 安卓startActivity:彻底理解startActivity的启动过程这一篇就够了

基于Android 6.0的源码剖析, 分析android Activity启动流程,相关源码:frameworks/base/services/core/java/com/android/server/am/ - ActivityManagerService.java - ActivityStackSupervisor.java - ActivityStack.java ...

2019-11-16 15:42:50 18059 2

转载 C++基础(3) - Singleton单例模式

C++ 单例模式总结与剖析 单例可能是最常用的简单的一种设计模式,实现方法多样,根据不同的需求有不同的写法; 同时单例也有其局限性,因此有很多人是反对使用单例的。本文对C++ 单例的常见写法进行了一个总结, 包括懒汉式、线程安全、单例模板等; 按照从简单到复杂,最终回归简单的的方式循序渐进地介绍,并且对各种实现方法的局限进行了简单的阐述,大量用到了C++ 11的特性如智能指针...

2019-11-16 15:09:00 933

转载 C++: 隐式类型转换和显式类型转换

第1部分.隐式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。intival=3;doubledval=3.14159;ival+dval;//ival被提升为double类型2)一种类型表达式赋值给另一种类型的对象:目标类型是...

2019-11-06 12:52:46 2760

转载 C++: Virtual关键字的几种用法

virtual在英文中表示“虚”、“虚拟”的含义。c++中的关键字“virtual”主要用在两个方面:虚函数与虚基类。下面将分别从这两个方面对virtual进行介绍。1.虚函数虚函数源于c++中的类继承,是多态的一种。在c++中,一个基类的指针或者引用可以指向或者引用派生类的对象。同时,派生类可以重写基类中的成员函数。这里“重写”的要求是函数的特征标(包括参数的数目、类型和顺序)...

2019-11-06 09:52:10 800

转载 C++: vector的使用总结及常用操作

一、C++ vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分使用时需包含头文件:#include <vector>二、C++ vector类有两种使用方式:第一种:STL方式vector< string > text;1. 我们向 vector 中插入元素,而不再是索引元素,以及...

2019-11-05 10:21:31 127

原创 JKalman滤波的使用(java实现的卡尔曼滤波)

JKalman是一个开源项目,利用java实现的卡尔曼滤波,本文主要记录在项目中的使用记录。 1. 官网的源码下载:https://sourceforge.net/projects/jkalman/ 保存到百度网盘的源码及卡尔曼介绍文档下载:https://pan.baidu.com/s/10NLw-4pcTQsxjCB8...

2019-10-29 16:45:56 3698

原创 Ubuntu16.04安装Caffe(CPU_ONLY)

本文记录的是自己在Ubuntu16.04上配置caffe环境跟编译的全部过程。1、安装依赖库 sudo apt-get install libprotobuf-dev sudo apt-get install libleveldb-dev sudo apt-get install libsnappy-dev sudo apt...

2019-09-16 14:53:04 245

原创 Camera结构原理

一.Camera的成像原理 景物通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为模拟的电信号,经过 A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过 IO 接口传输到 CPU 中处理,通过 LCD 就可以看到图像了第一层“LENS” CAMERA的成像关键在于SENSOR,为...

2019-08-27 18:24:05 1906

原创 c语言 - 常用函数

stdlib.hint atoi(const char *str):转换为intlong int atol(const char *str):转换为long intdouble atof(const char *str):转换为doublevoid abort(void):终止一个程序int atexit(void (*func)(void)):当程序正常终止时,调用函数fun...

2019-08-08 17:14:06 193

原创 Linux下动态库的编译及使用示例

1、动态库的编译下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、 test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。//so_test.h:#include "stdio.h"void test_a();void test_b();void test_c();...

2019-08-07 16:50:21 1158

转载 C++基础(2) - 静态库与动态库

这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上...

2019-06-27 20:15:43 907

转载 android NDK(一): 集成本地代码(c/c++)到安卓工程并调用

一. 定义:1.什么是NDK? NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译...

2019-06-27 09:11:22 2433

转载 string、const char*、 char* 、char[]相互转换

string、const char*、 char* 、char[]四者类型经常会需要转化。一:转化总结形式如下:使用时,要对源格式和目标格式进行初始化。源格式赋值为具体的内容,目标格式赋值为空。 源格式 目标格式 string const char* char* char[...

2019-06-13 16:15:55 243

原创 APK反编译和重新打包

在刚开始安卓逆向时遇到了一个很坑爹的问题,就是对apk进行反编译后不能重新打包, 查了一些资料,这里就简单说一下用apktool进行解包和打包的整个过程。 apktool:https://ibotpeaches.github.io/Apktool/首先把一个apk和apktool放到同一目录下,打开shell(我这里是power shell,用平常的shell也一样),...

2019-05-09 14:15:19 6962 1

转载 objdump与objcopy使用详解

我们在 Linux 下运行一个程序,有时会无法启动,报缺少某某库。这时需要查看可执行程序或者动态库中的符号表,动态库的依赖项, Linux 有现成的工具可用:objdump 。有时我们拿到一个静态库,想调用其中的函数,而某些函数作用域非全局,也可以通过修改符号来达到目的。 Linux 有现成的工具可用: objcopy 。下面我们来看看具体怎么使用。objd...

2018-10-22 20:37:35 1470

AndroidInput子系统架构.pdf

Android Input子系统架构,很详细,从linux底层驱动到上层。

2017-12-26

IIC驱动读取lm75温度

文档描述了i2c驱动的架构及i2c编写过程,包括了应用的测试程序以及以读取i2c设备lm75的温度为实例。

2017-09-21

AI人工智能学习资料全套

人工智能资料,包括pathon,数学基础,算法基础,Tensorflow的学习,视频,代码及文档,全套,超值。现在分享给大家。

2019-10-18

i2c驱动流程图解

linux的i2c驱动,有关重要函数分析,以及函数的跟踪。可以帮助你更好的理解i2c驱动的执行过程。

2016-02-27

linux设备驱动中断之上半部和下半部

这份文档详细的叙述了linux中断上半部跟下半部的原理,很容易理解。

2018-08-28

dropbear源码

安卓7.1和安卓5.1实测,源码可直接编译使用,dropbear实现用户名密码登录

2017-10-27

安卓从零添加硬件服务的测试程序

这个app代码是安卓从零添加硬件服务的测试程序,在eclipse上创建的,有需要的同学可以下载参考哟。

2018-07-31

安卓最新pppoe源码

在安卓7.1上已经实现了pppoe拨号上网的pppoe源码,下载直接编译使用。

2017-12-26

新建 Microsoft Word 文档.docx

buildbot的使用详细记录

2021-06-07

程序员简历模板下载

压缩包内容包括了大量的个类程序员简历模板,如果自己不知道怎么写或者懒得设计的,这是你最好的选择,只要把内容替换一下,一份漂亮的简历就是你的!

2017-09-21

安卓以太网,pppoe拨号上网,部分应用网路异常,网络定位不能使用

安卓以太网,pppoe拨号上网,部分应用网路异常(如陌陌),网络定位不能使用(如美团外卖无法使用定位功能)。修改framework层,模拟成wifi。

2017-12-26

从零开始添加自己的硬件服务

从零开始添加自己的硬件服务,所有的文件及代码,还包括详细的说明。

2018-07-31

虚拟按键居中patch

这个文件对应博客安卓增加虚拟按键。修改布局文件,解决了虚拟按键不居中显示的问题。

2018-08-01

android事件分发机制测试demo

安卓事件分发机制测试代码,事件传递从Activity--&gt;ViewGroup--&gt;View。dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent这三个函数的返回值不同,代表的事件传递的不同。

2018-07-27

空空如也

空空如也

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

TA关注的人 TA的粉丝

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