<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[FeiPeng_的博客]]></title><description><![CDATA[生命不息，奋斗不止，万事起于忽微，量变引起质变]]></description><link>https://blog.youkuaiyun.com/FeiPeng_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; FeiPeng_]]></copyright><item><title><![CDATA[RS232电平和TTL电平有什么不同]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/132891187</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/132891187</guid><author>FeiPeng_</author><pubDate>Thu, 14 Sep 2023 21:36:53 +0800</pubDate><description><![CDATA[接下来，通过几个实际的应用案例，展示了RS232和TTL电平在不同领域的应用，如工业自动化、通信设备和嵌入式系统等。本文将详细介绍RS232电平和TTL电平的差异，包括电压范围、信号极性、传输距离和应用领域等方面。RS232电平使用正负电压表示逻辑状态，通常为正电压表示逻辑0，负电压表示逻辑1；TTL电平使用高低电压表示逻辑状态，通常为高电压（如+5V）表示逻辑1，低电压（如+0.8V）表示逻辑0。RS232电平的信号极性与电压有关，逻辑0和逻辑1的电压极性相反；]]></description><category></category></item><item><title><![CDATA[如何解析dtb文件 rk3588s]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/131398704</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/131398704</guid><author>FeiPeng_</author><pubDate>Mon, 26 Jun 2023 15:36:19 +0800</pubDate><description><![CDATA[dtc  -I  dtb  123.dtb  -O  dts  -o xxx.dts   //  I  大写 i ，表示输入，dtc -h 可以查看各个参数意义。dts文件是由dtc工具编译，其工具在：   out/target/product/xxx/obj/KERNEL_OBJ/scripts/dtc/dtc。]]></description><category></category></item><item><title><![CDATA[Linux分包和合包]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/130112849</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/130112849</guid><author>FeiPeng_</author><pubDate>Wed, 12 Apr 2023 17:41:28 +0800</pubDate><description><![CDATA[就是针对目录进行 压缩+分包，不是针对一个文件进行分包。有时候传递服务器大包老是失败，我们可以分包上传。]]></description><category></category></item><item><title><![CDATA[Android元注解和自定义注解分析]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/130109259</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/130109259</guid><author>FeiPeng_</author><pubDate>Wed, 12 Apr 2023 16:49:26 +0800</pubDate><description><![CDATA[然后写工具类，在MainActivity中的onCreate中super.onCreate(savedInstanceState)之前初始化。定义：元注解是由Java提供的一套用来注解其他注解的基础注解。主要作用就是替代枚举显示参数范围，减少内存使用。Android常见的元注解。]]></description><category></category></item><item><title><![CDATA[android不用USB线通过wifi进行adb调试]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/130010417</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/130010417</guid><author>FeiPeng_</author><pubDate>Fri, 07 Apr 2023 13:46:35 +0800</pubDate><description><![CDATA[6、在命令行输入 adb connect ，此后就可以使用adb 来进行调试了。4、在dos窗口输入命令adb tcpip 5555（5555 是端口号，可以自由指定）5、断开usb数据线（此时也可以连接你需要连接的usb设备）本方法通过TCPIP网络进行，也就是通过ADB来连接设备。1、首先确定你的电脑和手机连接的wifi处于同一个网段。2、使用usb数据线连接设备。3、查看手机的IP地址。]]></description><category></category></item><item><title><![CDATA[Android Framework学习之RefBase,SP,WP解析]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/130005219</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/130005219</guid><author>FeiPeng_</author><pubDate>Fri, 07 Apr 2023 10:07:02 +0800</pubDate><description><![CDATA[LightRefBase仅仅提供了引用计数的方法，具体引用数应该怎么管理，就要通过智能指针类来管理了，每当有一个智能指针指向对象时，对象的引用计数要加1，当一个智能指针取消指向对象时，对象的引用计数要减1，在C＋＋中，当一个对象生成和销毁时会自动调用（拷贝）构造函数和析构函数，所以，对对象引用数的管理就可以放到智能指针的（拷贝）构造函数和析构函数中。sp 管理一个对象指针时，对象的强、弱引用数同时加1，sp销毁时，对象的强、弱引用数同时减1。]]></description><category></category></item><item><title><![CDATA[Android开发 debug调试framework代码]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/128936802</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/128936802</guid><author>FeiPeng_</author><pubDate>Wed, 08 Feb 2023 15:45:32 +0800</pubDate><description><![CDATA[调试]]></description><category></category></item><item><title><![CDATA[Linux java定位线程cpu占用命令]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/122068974</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/122068974</guid><author>FeiPeng_</author><pubDate>Tue, 21 Dec 2021 17:10:49 +0800</pubDate><description><![CDATA[1、先用top定位那个进程占用cpu过高
2、ps H -eo pid,tid,%cpu |grep 32655
3、jstack 进程id
更具线程id找到有问题的线程，进一步定位到问题代码的源代码行号。

]]></description><category></category></item><item><title><![CDATA[Android 内置可卸载应用报错]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/122064220</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/122064220</guid><author>FeiPeng_</author><pubDate>Tue, 21 Dec 2021 15:53:15 +0800</pubDate><description><![CDATA[Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
$(shell mkdir -p $(TARGET_OUT_VENDOR)/operator/app/CTMPTT/)
$(shell cp $(LOCAL_PATH)/*.apk $(TARGET_OUT_VENDOR)/operator/app/CTMPTT/)


]]></description><category></category></item><item><title><![CDATA[Android 编译不生成odex文件（编译时不优化） LOCAL_DEX_PREOPT := false]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/122061946</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/122061946</guid><author>FeiPeng_</author><pubDate>Tue, 21 Dec 2021 14:48:54 +0800</pubDate><description><![CDATA[在Android.mk中添加配置：
LOCAL_DEX_PREOPT := false

如果是 Android.bp
android_app { 
    // 添加下面配置                                                                                                                                                                        ]]></description><category></category></item><item><title><![CDATA[jvm之java虚拟机栈]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/122042747</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/122042747</guid><author>FeiPeng_</author><pubDate>Mon, 20 Dec 2021 17:42:51 +0800</pubDate><description><![CDATA[1、每个线程运行时所需要的内存空间，称为虚拟机栈。
2、每个栈由多个栈帧组成，对着每次方法调用时所占用的内存。
3、每个线程只能有一个活动栈，对应着当前正在执行的方法。
4、栈帧：每个方法运行时需要的内存。
垃圾回收只针对堆内存回收。


...]]></description><category></category></item><item><title><![CDATA[jvm之程序计数器]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/122041658</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/122041658</guid><author>FeiPeng_</author><pubDate>Mon, 20 Dec 2021 15:04:58 +0800</pubDate><description><![CDATA[程序计数器
作用：记住下一条jvm指令的地址。
特点：是线程私有的。不会存在内存溢出。

]]></description><category></category></item><item><title><![CDATA[LOCAL_SHARED_LIBRARIES 与 LOCAL_LDLIBS，LOCAL_LDFLAGS的区别]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/116162454</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/116162454</guid><author>FeiPeng_</author><pubDate>Mon, 26 Apr 2021 16:56:13 +0800</pubDate><description><![CDATA[LOCAL_LDLIBS ：链接的库不产生依赖关系，一般用于不需要重新编译的库，如库不存在，则会报错找不到。且貌似只能链接那些存在于系统目录下本模块需要连接的库。如果某一个库既有动态库又有静态库，那么在默认情况下是链接的动态库而非静态库。
如：LOCAL_LDLIBS += -lm –lz –lc -lcutils –lutils –llog …
如果你的Android.mk文件中只有这么一行，那么将会采用动态链接。
LOCAL_SHARED_LIBRARIES 会生成依赖关系，当库不存在时会去编译这个库。]]></description><category></category></item><item><title><![CDATA[系统编译中LOCAL_CFLAGS的用法]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/116162344</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/116162344</guid><author>FeiPeng_</author><pubDate>Mon, 26 Apr 2021 16:55:23 +0800</pubDate><description><![CDATA[LOCAL_CFLAGS += -DXXX ，相当于在所有源文件中增加一个宏定义#define XXX
eg：
在Android.mk中增加
ifeq ($(PRODUCT_MODEL),XXX_A)
LOCAL_CFLAGS += -DBUILD_MODEL
endif


即能在所编译的Cpp文件中使用：
#ifdef BUILD_MODEL
....
#endif



...]]></description><category></category></item><item><title><![CDATA[linux高精度struct timespec 和 struct timeval]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/108282134</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/108282134</guid><author>FeiPeng_</author><pubDate>Fri, 28 Aug 2020 16:24:42 +0800</pubDate><description><![CDATA[一、struct timespec 定义：

typedef long time_t;
#ifndef _TIMESPEC
#define _TIMESPEC
struct timespec {
time_t tv_sec; // seconds
long tv_nsec; // and nanoseconds
};
#endif
struct timespec有两个成员，一个是秒，一个是纳秒, 所以最高精确度是纳秒。
一般由函数int clock_gettime(clockid_t, struct t..]]></description><category></category></item><item><title><![CDATA[C++中的定位放置new(placement new)]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/108281837</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/108281837</guid><author>FeiPeng_</author><pubDate>Fri, 28 Aug 2020 16:22:54 +0800</pubDate><description><![CDATA[一般来说，使用new申请空间时，是从系统的“堆”（heap）中分配空间。申请所得的空间的位置时根据当时的内存的实际使用情况决定的。但是，在某些特殊情况下，可能需要在程序员指定的特定内存创建对象，这就是所谓的“定位放置new”（placement new）操作。

定位放置new操作的语法形式不同于普通的new操作。例如，一般都用如下语句A* p=new A;申请空间，而定位放置new操作则使用如下语句A* p=new (ptr) A;申请空间，其中ptr就是程序员指定的内存首地址。考察如下程序。


#in]]></description><category></category></item><item><title><![CDATA[git add 添加错文件 撤销]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/108221753</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/108221753</guid><author>FeiPeng_</author><pubDate>Tue, 25 Aug 2020 15:14:59 +0800</pubDate><description><![CDATA[git add 添加 多余文件
这样的错误是由于， 有的时候 可能

git add . （空格+ 点） 表示当前目录所有文件，不小心就会提交其他文件

git add 如果添加了错误的文件的话

撤销操作

git status 先看一下add 中的文件
git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX/XXX.java 就是对某个文件进行撤销了
...]]></description><category></category></item><item><title><![CDATA[Android PackageManagerService（六）方法后缀 LI   LIF  LPr  LPw 是什么？]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/107694993</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/107694993</guid><author>FeiPeng_</author><pubDate>Thu, 30 Jul 2020 17:37:33 +0800</pubDate><description><![CDATA[首先PMS有两个非常重要的锁分别是mPackages，mInstallLock

一、mPackages

用于保护所有在内存中解析的软件包详细信息以及其他相关状态。

二、mInstallLock

用于保护所有对installed进程的访问，其操作通常涉及大量移动磁盘上的应用程序数据。

三、LI 、LIF、LPr、LPw 是什么？

首先L代表Lock，I代表mInstall，P代表mPackages，F代表frozen，r代表读，w代表写。

四、例如

installPackageLI调用者必须.]]></description><category></category></item><item><title><![CDATA[Android PackageManagerService（五）卸载流程详解]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/107537539</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/107537539</guid><author>FeiPeng_</author><pubDate>Thu, 23 Jul 2020 17:08:36 +0800</pubDate><description><![CDATA[从PMS的内部结构上删除acitivity、service、provider等信息

删除code、library和resource等信息

调用installd删除/data/data/packageName以及/data/dalvik-cache下面的文件

更新Settings中的package信息

具体分析

当我们在Settings中的应用页面找到一个安装了的应用程序，并点击卸载后，就会发送一个Intent给UninstallerActivity，在UninstallerActivity最后会启]]></description><category></category></item><item><title><![CDATA[Android PackageManagerService（四）本地安装流程详解]]></title><link>https://blog.youkuaiyun.com/FeiPeng_/article/details/107535694</link><guid>https://blog.youkuaiyun.com/FeiPeng_/article/details/107535694</guid><author>FeiPeng_</author><pubDate>Thu, 23 Jul 2020 15:09:17 +0800</pubDate><description><![CDATA[本地安装参与对象包括PackageInstaller应用，PMS两部分。下面我们就来分析下PackageInstaller是如何调用到PMS中的。函数调用时序图示。



点击文件管理器里面app文件会启动PackageInstaller的InstallStart这个activity


protected void onCreate(@Nullable Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	
	Intent .]]></description><category></category></item></channel></rss>