自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 资源 (3)
  • 收藏
  • 关注

原创 详细介绍Binder底层机制

Binder 代理对象负责将客户端的 AIDL 调用转换为 Binder 交易,并通过 IPC(进程间通信)通道将交易发送到服务端进程。当一个进程发送一个 Binder 交易时,Binder 驱动程序会将交易分配给一个 Binder 线程来处理。Binder 化是一个过程,它将一个对象转换为 Binder 对象,使其可以在进程之间传递。**Binder 代理对象:**位于客户端进程中,代表远程进程中的实际对象。**Binder 存根对象:**位于服务端进程中,接收来自客户端的 Binder 交易。

2024-03-12 15:10:41 381

原创 Android AMS

*WMS 通知 AMS 窗口状态更改:**当 WMS 的窗口状态发生更改时(例如,窗口获得或失去焦点),它会通知 AMS。**WMS 执行 AMS 的窗口操作:**AMS 可以向 WMS 发出命令来执行各种窗口操作,例如: * 创建窗口 * 销毁窗口 * 移动窗口 * 调整窗口大小 * 更改窗口属性。**WMS 提供窗口信息:**WMS 可以向 AMS 提供有关窗口的信息,例如: * 窗口的当前状态 * 窗口的尺寸和位置 * 窗口的透明度 * 窗口的输入焦点。这确保了窗口的一致性、堆叠顺序和资源分配。

2024-03-11 21:02:50 1185

原创 Android中类加载机制

它允许类加载器委派加载类的请求给其父类加载器,直到找到可以加载该类的类加载器为止。**按 DEX 文件加载顺序加载:**如果父类加载器中不存在该类,则按 DEX 文件加载顺序加载 DEX 文件中的类。第一个加载的 DEX 文件中的类将被加载。**System ClassLoader:**加载系统类路径 (CLASSPATH) 中的类,例如 java.class.path 中的类。**DexClassLoader:**用于加载从 DEX 文件加载的类,通常用于加载 Android 应用中的类。

2024-03-11 20:35:43 1054

原创 Android - 任务封装

【代码】Android - 任务封装。

2024-03-06 22:47:22 347

转载 时序流程图绘制技巧

相信平时工作中有画图需要的读者都有这样的感受:有些图制作过程非常简单但逻辑清晰又不失美观,而有些图费时费力制作繁琐,但效果却不是特别惊艳,这其中的底层逻辑尤为关键,毕竟作图也是一门艺术。如果是多个时序图描述的,所有的实体的命名需要统一定义好,且颗粒度需要保持一致。时序图更加注重时间顺序,可以清晰地表示交互的先后顺序与时序关系,而流程图注重过程的控制流程,可以描述每个步骤的执行方式以及处理逻辑。1. 画流程图的时候,需要遵守从上至下、从左至右的顺序的原则进行排列,这样做的目的是流程图的逻辑性更高。

2023-12-19 19:30:36 263

原创 Java 基础-高级处理

模板与运行时类型检查。

2023-12-05 11:39:09 429

转载 【无标题】

在项目的开发过程中,随着开发人员的增多及功能的增加,如果提前没有使用合理的开发架构,那么代码会越来臃肿,功能间代码耦合也会越来越严重,这时候为了保证项目代码的质量,我们就必须进行重构组件化是指解耦复杂系统时将多个功能模块拆分,重组的过程。在Android工程上表现上就是把app按照其业务的不同,划分为不同的Module组件化和单一模块项目结构对比。

2023-11-27 09:32:14 61

转载 kill进程的几种方式

我们会先使用 ps、top 等命令获得进程的 PID,然后使用 kill 命令来杀掉该进程。killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。当然我们可以向进程发送一个终止运行的信号,此时的 kill 命令才是名至实归。,这样结束掉的进程不会进行资源的清理工作,所以如果你用它来终结掉 vim 的进程,就会发现临时文件 *.swp 没有被删除。命令:pid of xx进程,显示进程的进程号,同上pgrep。这是 kill 命令最主要的用法,也是本文要介绍的内容。

2023-10-18 10:28:58 520

原创 Android SELinux

宏,将domain域和(hal_xxx_client )属性关联,system_server作为Hal服务客户端示例:hal_client_domain(system_server, hal_foo)宏,将domain域和(hal_xxx_server )属性关联,A HAL server关联域示例:hal_server_domain(my_hal_domain, hal_foo)示例,hal服务服务端属性。

2023-09-11 15:33:38 544

转载 【无标题】

IDA全称是交互式反汇编器专业版,人们其简称为IDA,IDA pro 是业界最成熟、先进的反汇编工具之一,是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Linux WinCE MacOS平台主机来分析程序, 被公认为最好的花钱可以买到的逆向工程利器。根据选择的文件,ida将显示外一个或多个对话框,再选择特定的文件分析选项。然后加载,分析并显示。

2023-09-06 11:04:33 217

原创 C++ 宏定义打印日志

该类提供了 `addTask` 方法以添加任务队列,并使用条件变量 `cond_` 唤醒空闲线程来执行任务。在宏定义中,使用线程池的 `ThreadPoo::addTask` 方法来将任务加入任务队列中。为了解决这个问题,可以考虑使用线程池来重用线程,减少创建和销毁线程的开销。线程池可以通过预先创建一定数量的线程,并维护一个任务队列来实现。当需要执行任务时,先将任务加入队列,然后由线程池内的线程来执行。使用线程来延迟日志输出的做法可以避免当前线程暂停,但也会带来线程频繁创建与销毁的问题。

2023-09-05 15:33:46 521

转载 Shell基础

​​​​​​​。

2023-08-29 10:26:47 39

原创 动态规划解题示例

自顶向下则是从最大的问题开始逐步拆解成小问题,直到求解最小子问题的解。确定状态:在动态规划问题中,状态一般就是我们需要优化的问题中的变量。现在要从这些物品中选择若干个放入背包,使得背包中物品的总重量不超过指定重量,同时背包中物品的总价值最大。确定边界条件:边界条件是指动态规划问题中最小子问题的解,也就是动态规划过程中需要初始化的值。最后,问题的解就是 $f(n,W)$,其中 $n$ 表示物品数量,$W$ 表示背包容量。求解问题:根据求解顺序和状态转移方程,计算所有可能状态的值,最终得到问题的最优解。

2023-08-26 11:42:31 112

原创 Leetcode刷题基础C++

Vector C++容器vector的数组片段截取操作_c++ vector 截取_stitching的博客-CSDN博客 size() Map C++STL之map详解_c++stl map_行码棋的博客-CSDN博客 size() emplace() map value最大值 C++-map:获取map中value最大值、最小值对应的键值对_c++找到map中最大的value_u013250861的博客-CSDN博客

2023-08-26 11:39:40 99

原创 Leetcode解题方法

自顶向下则是从最大的问题开始逐步拆解成小问题,直到求解最小子问题的解。确定状态:在动态规划问题中,状态一般就是我们需要优化的问题中的变量。现在要从这些物品中选择若干个放入背包,使得背包中物品的总重量不超过指定重量,同时背包中物品的总价值最大。确定边界条件:边界条件是指动态规划问题中最小子问题的解,也就是动态规划过程中需要初始化的值。最后,问题的解就是 $f(n,W)$,其中 $n$ 表示物品数量,$W$ 表示背包容量。求解问题:根据求解顺序和状态转移方程,计算所有可能状态的值,最终得到问题的最优解。

2023-08-25 09:30:00 65

原创 Python基础

容器在编程中也叫数据结构,这里展示了几种常用的数据结构(collections集合是python内置的模块)。什么是包:为了避免模块名称冲突,python引入按目录组织模块的方法,称之为包,简单来说,包就是将多个模块用文件夹分方式组织在一起。x in s:判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。s.pop() :在交互模式,pop 是删除集合的第一个元素(排序后的集合的第一个元素)示例:将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。

2023-08-24 09:06:14 70

原创 TFLite模型文件转C语言文件

TFLite本身就是一个二进制文件,可以直接打包成C语言的unsigned char类型数组,由于文件比较大一个一个读写到数组里太麻烦了,我们可以直接在Linux下使用xxd命令,通过apt可以直接安装。就可以看到当前目录下有一个model.h的文件,并且里面自动生成了unsigned char数组与长度变量,数组里保存了所有二进制数据,可以直接调用。因为我们是最小RTOS,所以我们可以直接把这个.h的模型文件包含到我们的程序中就可以通过Tensor FLow提供的一些接口加载使用了。

2023-08-11 15:27:04 316

原创 Kotlin语法

loginButton.setOnClickListener {//函数动作}匿名函数定义在{}里,a,b入参,->表示转向,返回a+b。(2,3 方式避免管理null,少加?表达式返回值为条件句中最后一个表达式值。未初始化就使用会Kotlin 会抛出。自定义属性引用方式(get set)后面是高阶函数,函数中回调函数。var定义可变变量,可修改。无参的匿名函数形式为{}

2023-08-09 20:17:11 868

原创 AIDL & Binder机制和原理

而该Bp客户端的实例化流程,首先会先通过Parcel的readStrongBinder实例化一个BpBinder,然后一般会通过调用对应接口类中的asInterface方法将BpBinder转化为一个真正的Bp接口客户端,其实这个转化就是实例化一个Bp客户端,实例化时,会将BpBinder作为构造传参传入Bp客户端中。在C++层面的Binder相关类中,所谓的Bn端就是Binder的服务端,在此例中,Cameraservice的Bn端,显然就是之前AIDL自动生成的BnCameraService。

2023-07-04 10:30:00 666

转载 UML类图绘制

五分钟读懂UML类图平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道。实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧:一、类的属性的表示方式在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和email这3个属性,以及modify...

2018-12-06 13:57:28 2536 2

转载 python 常用模块

常用模块一、什么是模块?  常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。   但其实import加载的模块分为四个通用类别:   1 使用python编写的代码(.py文件)  2 已被编译为共享库或DLL的C或C++扩展  3 包好一组模块的包  4 使用C编写并链接到python解释器的内置模块二、为何要使...

2018-11-08 13:46:57 299

原创 LUA模块声明及调用

模块声明一:module(...,package.seeall)分析:模块中module函数中以...为模块名,可动态转换成父模块require调用lua模块名。此时不需要另外指定模块名,避免了更换模块名带来的修改。并且模块中的全局变量和函数不需要另外加上模块名前缀。模块声明二:testmodule.lualocal M={    gValue1 = "value1",    gValue2="v...

2018-07-04 20:07:47 1886

转载 LUA 模式匹配

随笔 - 64  文章 - 0  评论 - 57Lua模式匹配模式匹配函数在string库中功能最强大的函数是:string.find(字符串查找)string.gsub(全局字符串替换)string.gfind(全局字符串查找)string.gmatch(返回查找到字符串的迭代器)这些函数

2017-12-19 09:35:21 434

转载 linux 下各errno的意义

strerror(errno):获取errno对应的错误/****************************获取错误代码描述**************/#include /* for strerror */#include #include int main(int argc, char ** argv)        {        int i =

2017-12-01 15:07:27 330

转载 Lua 正则表达式 匹配

. 任意字符%s 空白符%p 标点字符%c 控制字符%d 数字%x 十六进制数字%z 代表0的字符%a 字母%l 小写字母%u 大写字母%w 字母和数字上面字符类的大写形式表示小写所代表的集合的补集。例如,'%A'非字母的字符:模式修饰符+ 匹配前一字符1次或多次* 匹配前一字符0次或多次;最长匹配  -- 先尽可能长地把本次匹配模式走完

2017-12-01 14:10:18 7986

转载 Linux环境下段错误的产生原因及调试方法小结 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是

Linux环境下段错误的产生原因及调试方法小结最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。1. 段错误是什么一句话来说,

2017-11-28 14:10:13 484

原创 linux find处理带空格的文件

如果当前目录有带空格文件需要处理,可使用find ./ -type f -mtime -${DAYS} -print0 |  xargs -0 ls -l --time-style '+%Y%m%d%H%M%S' |awk -F " " '{print $6" |"substr($0,index($0,$7))}'| grep -vE "/home/zxin10" > /test.log

2017-11-24 15:13:35 2076

转载 linux ftp配置

linux ftp 文件上传权限有两种匿名上传和本地上传1)实现匿名用户的上传下载文件程序代码:Anonymous_enable=yes 匿名登陆Connect_form_port_20=yes 启用FTP数据端口的数据连接Pam_service_name=vsftpd 验证方式Listen=yes 独立的VSFTPD服务器A

2017-11-23 16:56:50 992

转载 tcpdump

原文链接:https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它

2017-11-22 09:23:46 189

转载 linux运维技能

原文链接:运维工程师必须掌握的基础技能有哪些? - 知乎https://www.zhihu.com/question/23665108链接:https://www.zhihu.com/question/23665108/answer/25299881著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。这个问题挺好的,回答这个问题也是对自身的审查,

2017-11-22 09:12:52 795

转载 Linux 创建子进程函数 --- fork

一、fork入门知识     一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来

2017-11-10 14:10:27 850

原创 简单测试的makefile编写

obejects:=$(wildcard *.o)sort.exe:insert_sort.o    gcc  -g -o $@ $^.c.o:     gcc -g -c $clean:    rm -rf sort.exe *.

2017-11-10 08:42:40 653

转载 Linux下find查找命令使用

在Linux操作系统中,find命令非常强大,在文件与目录的查找方面可谓无所不至其极,如果能结合xargs命令使得,更是强大无比。以下来看看find命令忽略目录查找的用法吧。例1,根据文件属性查找:find . -type f -name "*config*" ! -path "./tmp/*" ! -path "./scripts/*" ! -path "./node_m

2017-11-08 11:48:10 4580

转载 Lua的upvalue和闭包

Lua的upvalue和闭包Lua函数可以被当成参数传递,也可以被当成结果返回,在函数体中仍然可以定义内嵌函数。lua闭包是Lua函数生成的数据对象。每个闭包可以有一个upvalue值,或者多个闭包共享一个upvalue数值。1、upvalue如果函数f2定义在函数f1中,那么f2为f1的内嵌函数,f1为f2的外包函数,外包和内嵌都具有传递性,即f2的内嵌必然是f1

2017-11-03 15:02:58 377

转载 LUA中的协成特性

【深入Lua】理解Lua中最强大的特性-coroutine(协程) 收藏摘要: 本文详细讲解了Lua中协程的使用方法以及协程的应用场景,并对coroutine和与其类似的几种机制做了详细的比较点击进入我的新博客###coroutine基础Lua所支持的协程全称被称作协同式多线程(collaborative multithr

2017-11-03 11:13:55 504

转载 linux curl命令用法总结

linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态。  curl命令参数介绍请参考:http://aiezu.com/article/linux_curl_command.html一、Linux curl用法举例:1. linux curl抓取网页:

2017-11-02 11:07:05 408

转载 LUA中的协成特性

深入Lua】理解Lua中最强大的特性-coroutine(协程)转载 2015年08月12日 11:42:426032http://my.oschina.net/wangxuanyihaha/blog/186401coroutine基础Lua所支持的协程全称被称作协同式多线程(collaborative multith

2017-10-27 15:39:15 257

转载 linux 消息队列查看和删除

IPCS:报告进程间通信状态ipcs -q查看消息队列,-m查看内存,-s查看信号量 -a查看上述所有信息ipcrm命令用来删除一个或更多的消息队列、信号量集或者共享内存标识。 语法 ipcrm [ -m SharedMemoryID ] [ -M SharedMemoryKey ] [ -q MessageID ] [ -Q MessageKey ] [ -s Semap

2017-10-20 09:41:17 8255

转载 Lua模式匹配

随笔 - 64  文章 - 0  评论 - 56Lua模式匹配模式匹配函数在string库中功能最强大的函数是:string.find(字符串查找)string.gsub(全局字符串替换)string.gfind(全局字符串查找)string.gmatch(返回查找到字符串的迭代器)这些函数

2017-10-05 12:17:10 194

转载 Linux上的free命令详解

Linux上的free命令详解  解释一下Linux上free命令的输出。  下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如:FO[2][1] = 24677460FO[3][2] = 10321516                     1         

2017-08-05 10:35:23 178

release-gdal 1.11.0

经测试C#开发人员能用,用时需要将bin目录下包括其子目录中的dll拷到工程debug目录下即可

2014-07-30

GDAL 1.11.0

最新的GDAL库1.11.0版,编译好的,直接引用即可

2014-07-30

电脑鼠走迷宫

电脑鼠走迷宫的程序 可以转弯,路径记录与自动报警

2011-12-19

空空如也

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

TA关注的人

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