- 博客(388)
- 资源 (204)
- 收藏
- 关注
原创 Android Framework分析(3)——Zygote进程源码分析
Zygote进程源码分析由app_process运行ZygoteInit classzygote由java编写而成,不能直接由init进程启动运行。若想执行zygote类,必须先创建虚拟机,然后在虚拟机上运行ZygoteInit类。执行这一任务的就是app_process程序。下面我们开始分析zygote进程的启动流程:/system/core/rootdir/init.rc可以看到init.rc中有如下导包import /init.$(ro.zygote).rc如果是64位系统,$(ro
2020-07-10 11:32:35 893 3
原创 深入理解Android Framework(1)-init
回收僵尸进程,在Linux内核中,如父进程不等待子进程的结束直接退出,会导致子进程在结束后变成僵尸进程,占用系统资源。在Android系统中,所有的进程共享系统设置值,为此提供一个名称为属性的保存空间。每个进程在处理其他进程发送的signal信号时都需要先注册,当进程的运行状态改变或终止时会产生某种signal信号,init进程是所有用户空间进程的父进程,当其子进程终止时产生SIGCHLD信号,init进程调用信号安装函数sigaction(),传递参数给sigaction结构体,便完成信号处理的过程。
2020-07-06 21:31:41 1051
原创 深入学习Android framework(2)——Handler Native层
基于android28源码,MessageQueue类里面涉及到多个native方法,除了MessageQueue的native方法,native层本身也有一套完整的消息机制,用于处理native的消息,如下图Native层的消息机制。Java层可以向MessageQueue消息队列中添加消息,Native层也可以向MessageQueue消息队列中添加消息MessageQueue初始化过程的调用链如下:在MessageQueue中的native方法如下: private native st
2020-06-30 16:57:28 4416
原创 Android Apk瘦身方案2——gradle插件将png自动压缩为webp
实现思路在 mergeRes 和 processRes 任务之间插入 WebP 压缩任务,如下图所示:使用开源框架Cwebp,使用命令行对所有的图片进行遍历处理,然后将结果输出Google 官方提供的下载地址:https://storage.googleapis.com/downloads.webmproject.org/releases/webp/index.html 下载的 cwebp 二进制可执行文件 64 位版本。由于 WebP 格式在 14 <= minSdkVersion <
2020-06-09 20:11:26 2217
原创 Android Apk瘦身方案1——R.java文件常量内联
R.java 文件结构R.java 是自动生成的,它包含了应用内所有资源的名称到数值的映射关系。先创建一个最简单的工程,看看 R.java 文件的内容:R文件生成的目录为app/build/generated/not_namespaced_r_class_sources/xxxxxDebug/processXXXXDebugResources/r/com/xxx/xxx/R.javaR.java 内部包含了很多内部类:如 layout、mipmap、drawable、string、id 等等这些
2020-06-05 22:57:39 3366 4
原创 Android Gradle源码分析
一.如何调试Android Gralde源码最简单的方式如下:1.配置 gradle.properties比较方便的做法是配置全局的 gradle.properties,这样对所有 Gradle 工具都适用,配置文件位于 ~/.gradle/gradle.properties,在 gradle.properties 文件中加上 org.gradle.jvmargs 属性:org.gradle.jvmargs=-XX:MaxPermSize=4g -XX:+HeapDumpOnOutOfMemoryE
2020-06-04 11:24:52 2499 4
原创 滴滴插件化VirtualAPK框架原理解析(二)之Service 管理
在前一篇博客滴滴插件化框架VirtualAPK原理解析(一)之插件Activity管理 中VirtualAPK是如何对Activity进行管理的,本篇博客,我们继续来学习这个框架,这次我们学习的是如何去管理Service。Service工作原理分析说道如何对Service进行插件化,肯定得先了解Service的工作过程,不然何谈插件化?所以我们先一起学习Service的工作原理。Service分为
2017-07-30 23:21:11 4696 1
原创 滴滴插件化框架VirtualAPK原理解析(一)之插件Activity管理
上周末,滴滴与360都开源了各自的插件化框架,Virtualapk与RePlugin,作为一个插件化方面的狂热研究者,在周末就迫不及待的下载了Virtualapk框架来进行研究,本篇博客带来的是Virtualapk原理解析的第一篇Activity管理,博客只是自己的理解,小弟才疏学浅,可能有很多理解不对的地方,欢迎各位大神指出。(看博客之前,请大家先下载Virtualapk的项目,https://g
2017-07-02 21:15:48 11260 7
原创 基于ssm框架的酒店管理系统
酒店管理系统的目标是为用户提供高效的服务,减少手工处理的繁琐与误差,及时准确地反映酒店工作情况、经营信息,从而提高酒店工作质量,获得更好的经济效益,实现客房管理的规范化、自动化。高效的客房预订及订单处理。准确无误地记录客人每笔消费信息。实时、快速、准确提供客房动态。酒店收益的最终统计。系统运行稳定可靠、各项维护功能齐全、易于维护。简单、友好的操作界面模块主要功能酒店信息展示客房信息展示、房间状态查询、房间预定、客房信息检索、会员用户预订。
2024-07-14 17:15:03 121
原创 毕业设计——基于vue综合性网上购物商城
一个基于vue全家桶的pc端综合性网上购物商城,包括前台商城和后台管理系统,请求数据采用axios,后端采用koa2,数据库采用mysql。
2024-07-14 13:23:01 66
原创 课程设计——Python+OpenCV数字图像处理[车牌识别]
Python opencv 车牌识别数字图像处理课程设计作业Python3+OpenCV使用tkinter搭建界面tmp/文件夹是数字图像处理过程chepai/文件夹是车牌图片pic/文件夹是程序界面图PPT文件是验收时要讲的程序是从网上学习的并自己弄的,不完善,识别率不高开发环境配置pip install numpypip install pillowpip install opencv-python图片展示
2024-07-13 21:32:05 271
原创 C#+Mysql数据库课程设计-房屋租赁管理系统
着房价的不断升高,人们对房屋的需求越来越难以满足,对于一些在外地工作的人来说租房子成为了一种常态,因此出现了越来越多的房屋中介,而对于房屋中介而言,管理日益增加租户的信息和房产的信息成了一个至关重要的问题。与此同时,环保也是大家关注的焦点。因此,开发一款能够实现无纸化的管理系统来管理房屋和租户的信息就显得十分必要。房屋租赁管理系统的任务目标:简化房屋信息及租客信息的管理步骤,可以方便快捷地查询所需要的信息,系统自动进行水电等费用的计算。在系统启动时有对用户身份的检查,以保证信息的安全性。
2024-07-12 16:50:38 304
原创 基于Java Swing的课程设计/毕业设计选题系统
提供学生和教师进行课程设计或者毕业设计选题平台,教师角色通过登入平台发布选题信息和录取相关学生,学生用户进行选题提交教师审核,管理员负责基础数据维护。
2024-07-12 16:26:07 191
原创 课程设计——基于jsp+servlet的高校选课管理系统
随着信息技术不断向深入发展,越来越多的学校开始着手信息化建设。其中学生选课、成绩信息化管理就是其中重要的一块内容。学生选课与成绩信息规模大、项目条数多、信息量庞大,传统的人工管理方式显然已经无法满足要求,需要借助计算机来进行现代化信息管理,从而提高管理的准确性与高效性。
2024-07-11 20:36:31 969
原创 基于SSM的教务查询系统
使用Shiro权限管理框架,实现登录验证和登录信息的储存,根据不同的登录账户,分发权限角色,对不同页面url进行角色设置。
2024-07-11 20:30:21 298
原创 基于SpringBoot+Mybatis商品信息管理系统
展示当前月收入及其环比(环比=(当前月收入 - 上个月收入)/ 上个月收入)、当前月订单数及其环比、网站访问量、当前月退单数及其环比、以条形图的形式(使用jquery插件)展示最近30天每天的收入和订单数。:商品增删改查、商品图片导入(存储在MongoDB)、导出商品报表、商品分类增删改查、库存查改,库存不足和积货提醒、商品回收和恢复。:订单查询查看、订单退款管理(查看和审批)、发货管理、物流公司管理、快递跟踪(调用快递100接口):用户登录、注册、密码找回(通过邮箱方式)、用户信息修改、密码修改。
2024-07-10 20:06:24 417
原创 基于springboot+mybatis学生管理系统
题目虽然是学生管理系统,但功能包含(学生,教师,管理员),项目基于springboot2.1.x实现的管理系统。
2024-07-10 19:52:15 694
原创 程序员副业探索——这18个韭菜级副业千万别碰!
某音某书上动不动就是副业收入轻松几万+,然后开课,收你学费,下面我就列举18个常见坑爹副业,千万别碰!
2024-02-14 22:24:09 450
原创 浅谈Google Play ASO 优化
ASO即APP Store Optimization,是用于提高APP在应用市场排名的工具,其实也就是移动产品的SEO工作。ASO是为了提高该产品的搜索结果成绩,提升APP的下载量,针对Google Play来说,ASO就是优化APP页面。
2023-12-09 22:12:13 229
原创 Handler post与sendMessage还有postDelay区别
post()方法不能指定消息的优先级和延迟时间,它只能立即将Runnable对象发送到消息队列中。本质是封装到了msg的callback里了。Handler的sendMessage()和post()方法都可以用于向Handler发送消息,但它们的使用方式和效果略有不同。以便在指定的时间后才处理消息。
2023-05-10 21:17:09 465
原创 音视频开发系列(8)——详解Android SurfaceTexture
void setOnFrameAvailableListener(SurfaceTexture.OnFrameAvailableListener listener):设置当有新的帧可用时的监听器。当有新的帧可用时,SurfaceTexture会回调该监听器的onFrameAvailable()方法。void attachToGLContext(int texName):将SurfaceTexture绑定到指定的纹理对象上。否则返回false。当有新的帧可用时,可以调用该方法将新的帧数据更新到纹理中。
2023-03-11 19:01:00 1575 1
原创 音视频开发系列(7)——Opengl常用Api介绍part1
指定当纹理被缩小时如何过滤纹理像素,可以是GL_NEAREST(最近邻过滤)、GL_LINEAR(线性过滤)、GL_NEAREST_MIPMAP_NEAREST(使用最近邻过滤的Mipmap纹理)、GL_NEAREST_MIPMAP_LINEAR(使用线性过滤的Mipmap纹理)、GL_LINEAR_MIPMAP_NEAREST(使用最近邻过滤的Mipmap纹理)或GL_LINEAR_MIPMAP_LINEAR(使用线性过滤的Mipmap纹理)。这样,我们就可以只对矩阵的一部分进行缩放,而不影响其他部分。
2023-03-10 15:57:40 770
原创 音视频开发系列(6)——全面了解Android MediaFormat
MediaFormat 是 Android 平台中用于描述音视频格式的类,它提供了许多 API 用于设置和获取音视频的格式信息。用于创建音频和视频格式的 MediaFormat 对象。需要指定媒体类型(例如 audio/mp4a-latm 或 video/avc)、媒体的采样率、通道数、码率、帧率等信息。
2023-03-08 11:37:39 3394
原创 音视频开发系列(5)——全面了解Android MediaExtractor
MediaExtractor的主要API如下:setDataSource(String path): 设置媒体文件的路径。setDataSource(FileDescriptor fd): 设置媒体文件的FileDescriptor。setDataSource(Context context, Uri uri, Map headers): 设置媒体文件的Uri和headers。getTrackCount(): 获取媒体文件中的音视频轨道数量。
2023-03-05 09:56:38 1742
原创 音视频开发系列(4)——全面了解Android Surfaceview
SurfaceHolder是SurfaceView的内部类,它可以获取到SurfaceView的Surface对象,提供了对Surface的操作方法。一般在SurfaceView的回调函数中使用。1.1 getHolder()方法获取SurfaceHolder对象。1.2 addCallback()方法注册SurfaceHolder.Callback回调函数。1.3 setFixedSize()方法设置Surface的大小。
2023-03-04 15:55:17 828
原创 音视频开发系列(3)——全面了解Android MediaMetadataRetriever
该方法用于设置MediaMetadataRetriever要提取信息的数据源,path可以是本地文件路径或者网络URL地址。该方法用于提取指定的元数据信息,参数keyCode可以是预定义的一些常量,例如METADATA_KEY_TITLE表示音频的标题,METADATA_KEY_ARTIST表示音频的演唱者等等。其中,参数keyCode代表要提取的元数据信息类型,可以是预定义的一些常量值,也可以是自定义的键值。
2023-03-04 15:17:27 1513
原创 关于MVC/MVP/MVVM的一些错误认识
在 Android 开发中使用 MVP 和 MVVM 模式早已不是新鲜事了,各种 MVP/MVVM 相关的文章、开源库也已屡见不鲜,甚至是让人眼花撩乱,那么我为什么还要在这个早已被画满涂鸦的黑板上再来涂涂画画呢?是想彰显我的存在感吗?那当然!啊不不不……不完全是!我还想要警醒读到这篇文章的各位:你们对于MVX的理解可能并不完全正确!我们都知道 MVX 的进化过程是从滚球兽进化到 MVC ,然后从 MVC 进化到 MVP,再从 MVP 超进化到 MVVM。
2023-01-22 17:43:21 1792
原创 OPENGL ES 2.0 知识串讲 (10) ——OPENGL ES 详解IV(纹理优化)
纹理时每个图形应用程序中的重要内容,对其使用不当就容易导致很严重的性能、内存、耗电等问题。然而,纹理在应用程序中,并不是一个独立的部分,它和各个系统都有着紧密的联系。
2022-12-26 17:10:10 580
原创 OPENGL ES 2.0 知识串讲 (9) ——OPENGL ES 详解III(纹理)
上面一节课,我们学习了一个OpenGL ES程序必须具备的一些API,从准备shader,到传入绘制信息,到最后的执行绘制命令。然而在上节课结束的时候,我们也提到了OpenGL ES除了这些必备的API之外,还存在一些别的模块。比如这节课我们要说的纹理。纹理,其实我们可以理解为是存在于GPU中的图片信息,是OpenGL ES中很重要的一个概念,也是游戏开发的重要组成部分。我们看到的绚丽的游戏界面,其实就是在一个个模型上,贴上纹理构成的。可以说游戏中的这些元素,它们的形状依靠的是顶点坐标,而色彩基本都是依靠纹
2022-12-25 14:59:42 1426
原创 OPENGL ES 2.0 知识串讲 (8) ——OPENGL ES 详解II(传入绘制信息)
上一节讲述了如何通过 OpenGL ES 给 GPU 关联一套可以使用的 shader,这 一套 shader 是被放在一个 program 中当作一个整体供 GPU 使用的。那么 GPU 绘制图片不止是需要这套 shader,还需要给这套 shader 传递一些必要的输入参数, 比如想要绘制图片的顶点位置,形状,颜色等等信息,那么这一节,将学习如何通过 OpenGL ES API 把这些绘制所需要的信息传递给 GPU。想要绘制一幅图片,最起码需要预先想好要绘制什么形状的图片,比如是绘制一个三角形还是一个圆
2022-12-23 18:53:00 381
原创 OPENGL ES 2.0 知识串讲 (7) ——OPENGL ES 详解I(绑定 SHADER)
在之前的六节中,讲解了 EGL、GLSL 与 OpenGL ES 三个专业术语的概念以及它们的关系,串讲了整个绘制流程;之后分别讲解了 EGL 主要 API 的用处,以及 GLSL 的主要语法。现在,对 EGL 和 GLSL 有了比较全面的了解,那从这一节开始, 会根据 OpenGL ES 与 EGL 和 GLSL 的关系,按照绘制图片的整个流程,对 OpenGL ES 进行详细讲解。之前提过 OpenGL ES 其实就是一个图形学库,由 109 个 API 组成,只要明白了这 109 个 API 的意义和
2022-12-21 15:33:36 852
原创 OPENGL ES 2.0 知识串讲 (6)——GLSL 语法(IV)
上面两节,主要讲解了 GLSL 中变量和函数的定义语法和使用语法,现在我们可以在 shader 中自定义一些我们所需要用到的变量和函数。但是在 shader 中, 还存在着一些内置的变量和函数。这些变量主要是用于将 Shader 计算得到的值传给 GPU,完成 Shader 在 Pipeline 中的功能。由于我们使用 shader 的目的就是为了把所需要的值传给 GPU,所以这些变量对我们非常重要。Shader 中内置的函数也非常重要,就好比 C 语言中的 printf 一样,把我们想要使用到的功能用一个
2022-12-20 18:46:21 1657
原创 OPENGL ES 2.0 知识串讲 (5)——GLSL 语法(III)
简单的解释一下,是这样的,在 shader 中,如果我们将一个变量定义成一个值,比如定义 a 为 3.0,那么 shader 并不会把 3.0 保存起来,而是在使用到 a 的时候,再根据场景重新计算,假如 a 的精度修饰符为 lowp,那么当它和 mediump 的 float 运算以及与和 lowp 的 float 运算,a 在这两次运算中的值会因为精度不同而不同。如果某个参加运算的参数没有精度修饰符,那么就以另外一个参加运算的参数的精度修饰符为准,如果都没有,那么就看下一个操作中的参数的精度修饰符。
2022-12-19 17:50:22 1085
原创 OPENGL ES 2.0 知识串讲 (4)——GLSL 语法(II)
上一节,我们讲解了 Shader 的功能,并从预处理和注释开始,讲解 GLSL 的语法知识。想要学习和使用一门语言,必须先学习这门语言的语法,语法中除了上一节说到的预处理、注释,还有更加重要的变量定义和使用,函数定义和使用, 以及 GLSL 的一些特殊语法。其中变量相关的知识包含变量类型,变量名,变量的操作等,这一节,我们将介绍变量的数据类型等相关知识。一个完整的程序,包括预处理、函数、变量等部分组成。这些部分合在一起, 诠释了程序要做什么事情,以及怎么做。在基本的语言中,比如 C、C++,我们对这些已经很
2022-12-17 18:44:32 548
原创 OPENGL ES 2.0 知识串讲 (3)——SHADER的功能&GLSL语法(I)
在第一节中,我们介绍过 OpenGL ES 与 GLSL 的主要功能,就是往绘制 buffer 上绘制图片。其中虽然 GLSL 制作的 shader 是穿插在 OpenGL ES 中使用,但是我们在流程中可以看出来,两大 shader(vertex shader 和 fragment shader)相对于 OpenGL ES 其他模块还是比较独立的。这两个 shader 就好比两个函数一样,有输入,有输出。从 OpenGL ES 传入一些参数,在 shader 中进行运算,然后再传出给 GPU 的其他模块。
2022-12-17 18:39:53 668
原创 OPENGL ES 2.0 知识串讲(2)――EGL详解
EGL 的 API 还有很多,这一节只是把其中最重要也是最常用的 11 个 API 拿出来进行了讲解,最后总结一下 EGL 使用的大概流程如下:先获取 display 的 handle,对 display 进行 EGL 初始化。从设备上获取匹配的配置信息,再绑定一个绘制 API 用于之后的绘制。根据获取 display 的 handle、 配置信息以及当前绘制 API 生成 surface 和 context,再把它们绑定在一起,绑定在当前 thread 上,下面就可以使用绘制 API 进行绘制。
2022-12-13 18:36:21 842 1
原创 OPENGL ES 2.0 知识串讲(1)――OPENGL ES 2.0 概括
电脑是做什么用的?电脑又被称为计算机,那么最重要的工作就是计算。看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的操作。是什么使得电脑工作?驱动,驱使着硬件完成工作。谁来写驱动?制造电脑的公司自己来写驱动,因为他们对自己的底层硬件架构最熟悉。谁会使用驱动?所有的软件工程师都会直接或者间接的使用到驱动。那么问题来了,如果说不同的电脑公司,制造出来不同的硬件,使用不同的 驱动,提供出来不同的接口供软件工程师进行使用,那么软件工程师就要崩溃了。
2022-12-13 16:11:42 1555
原创 leetcode刷题(134)——剑指 Offer 33. 二叉搜索树的后序遍历序列
划分左右子树: 遍历后序遍历的 [i, j]区间元素,寻找 第一个大于根节点 的节点,索引记为 m。此时,可划分出左子树区间 [i,m-1]、右子树区间 [m, j - 1]、根节点索引 j。右子树区间 [m, j-1]内的所有节点都应 >postorder[j]。根据二叉搜索树的定义,可以通过递归,判断所有子树的 正确性 (即其后序遍历是否满足二叉搜索树的定义) ,若所有子树都正确,则此序列为二叉搜索树的后序遍历。recur(m, j - 1) : 判断 此树的右子树 是否正确。
2022-11-29 09:55:24 94
基于SpringBoot + MySQL + Redis + RabbitMQ + Guava开发的高并发商品限时秒杀系统
2024-05-27
大麦抢票辅助(只抢待开抢中的)
2024-04-27
大麦网演唱会抢票软件,一个基于 tauri + rust + vue 调用接口的抢票软件
2024-04-21
某宝、某猫抢购,抢电视、抢茅台
2024-04-21
i茅台app自动预约,每日自动预约,支持docker一键部署
2024-04-21
python 12306 购票助手
2024-04-21
SpringBoot网上商城是一个基于Spring Boot的综合性B2C仿天猫电商平台
2024-04-20
JAVA+SpringBoot网上商城
2024-04-20
Java+SpringBoot网上商城
2024-04-20
基于Java+Springboot电影购票系统
2024-04-20
基于Java+Springboot的景区旅游信息管理系统
2024-04-20
基于springboot 网上花店商城 springboot+MybatisPlus+mysql
2024-04-20
java基于springboot的宠物商城 Spring Boot+Mybatis+mysql+Thymeleaf+Shiro
2024-04-20
基于Java+Springboot+vue的宠物交易/领养系统
2024-04-20
基于springboot房屋租赁系统 springboot+mybatis+mysql+shiro
2024-04-20
基于JAVA+Springboot的OA人事管理系统
2024-04-20
基于Vue和SpringBoot的超市账单管理
2024-04-20
基于Java+Springboot的酒店预订管理系统
2024-04-20
机器学习面试复习资源集合
2024-04-20
Tensorflow实战学习笔记、代码、机器学习进阶系列
2024-04-20
算法工程师-机器学习面试题总结
2024-04-20
使用机器学习算法完成对12306验证码的自动识别
2024-04-20
PAT-GPLT(中国高校计算机大赛团体程序设计天梯赛)题解
2024-04-20
2021年华为杯第十八届中国研究生数学建模竞赛D题解决方案(国二)
2024-04-20
2020中国华录杯·数据湖算法大赛-定向算法赛(吸烟打电话检测)决赛第二名项目代码
2024-04-19
12306抢票脚本源码
2024-04-17
大麦网自动购票脚本, 支持docker一键部署
2024-04-17
数据库设计课程设计-高校选课管理系统
2024-04-16
大麦抢票脚本 V1.0 已有大佬验证可以成功!
2024-04-13
东方财富网股吧爬虫,爬取帖子及其评论的相关信息,并储存到数据库中(附详细操作说明)
2024-04-13
某乎爬虫,用于爬取某乎页面 话题 问题 回答 评论 的爬虫 支持 asyncio 异步高并发 支持多用户登陆
2024-04-13
掘金小册爬虫脚本 将小册保存为 markdown,pdf,html 格式
2024-04-13
轻量型A股每日数据爬虫项目
2024-04-13
新浪某博热榜爬虫,利用 Github Action 的调度脚本
2024-04-13
矩阵快速幂求解斐波那契
2024-04-13
走迷宫 广度优先搜索与优先队列
2024-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人