自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 Android 常用调试工具/方法解析

参考。

2024-07-24 18:56:48 1436

原创 Android SystemServer进程U源码解析

SystemServer进程在android系统中占了举足轻重的地位,系统的所有服务和SystemUI都是由它启动。

2024-03-15 18:32:05 955

原创 Android 日志原理解析

Android开发过程中调试和日志分析是必不可少的,当前汇总分析android系统不同类型的日志抓取的原理

2024-03-06 19:44:13 784

原创 Android ANR & SWT

ANR(Application Not Responding,即应用程序无响应)。在Android中,当应用程序在规定时间内没有处理完毕相应的事件,系统就会报出ANR。

2023-06-17 11:42:16 4193

原创 QNAP操作指引

NAS

2022-12-28 23:53:51 1856 1

原创 PS的一些理解

PS自学笔记

2022-08-16 00:55:40 975 2

原创 Android编译流程

众所周知,Android系统其实就是一个运行在Linux系统上面的应用桌面程序,当然这样概括可能不是很准确,但是他们的编译确实异曲同工之妙。在Linux系统中,我们可以通过make命令来编译代码。执行Make命令默认会在当前目录找到一个Makefile文件,然后根据Makefile文件中的指令来对代码进行编译(makefile语法课参考《GNU make中文手册》)。也就是说make命令执行的是Makefile文件中的指令,Makefile文件中的指令可以是编译命令(例如gcc,也可以是其它命令)。

2021-02-09 11:49:07 7453 2

原创 OpenGL ES在Android上的应用

OpenGL ES(OpenGL for Embedded System)是以手持和嵌入式设备为目标的高级3D图形应用程序编程接口(API)。OpenGL ES是当今智能手机中占据统治地位的图形API,其作用范围已经扩展到桌面,OpenGL ES支持的平台包括IOS、Android、BlackBerry、bada、Linux和Windows,它还是基于浏览器的3D图形Web标准WebGL的基础。当然本篇主要介绍Android平台上对OpenGL ES的一些支持。一、Android图形系统本章不详细介

2020-12-02 22:56:13 1320

原创 Binder死磕到底(四):Treble化架构

在Android 8.0 之前,Binder机制比较简单,只有一个驱动设备"/dev/binder",一个守护进程"/system/bin/servicemanager",一个binder库"/system/lib64/libbinder.so"。即前面几篇文章讲解的内容。在Android 8.0开始,Android引入了Treble的机制,为了方便Android系统的快速移植、升级,提升系统稳定性,Binder驱动设备被拓展成了"/dev/binder","/dev/hwbinder","/dev/.

2020-08-29 00:50:21 3686 4

原创 Binder死磕到底(二):进程间通信库libbinder.so

service manager框架图中发现引入了I##INTERFACE、Bp##INTERFACE、BpBinder等对象,其实这些都是Android系统在应用程序框架层中将各种Binder驱动程序操作封装成一个Binder库,这样我们就可以很方便的调用Binder库提供的接口来实现进程间通信。Binder库并不是想象中那么简单,恰恰相反很庞大。...

2020-08-28 20:35:09 4298

原创 Binder死磕到底(一):Linux进程通信和service manager进程

一、Linux基础概念1、Linux内存管理2、Linux进程通信二、Binder驱动1、Binder驱动初始化2、Binder驱动打开设备文件3、Binder驱动内存映射4、Binder驱动为什么只有一次拷贝?5、几个重要数据结构6、Binder驱动命令处理Android系统其实是一个建立在Linux内核上面的桌面系统,它直接沿用了Linux内核,即Android的进程调度,内存管理等机制都从Linux内核上面继承过来。因此在介绍Binder本篇第一章先介绍Li

2020-08-23 18:55:42 6092 2

原创 Android安全策略SELinux

SELinux原本是美国国安局联合一些公司设计的一个针对Linux的安全加强系统。SELinux出现之前,Linux系统上的安全模型叫做DAC(自主访问控制),其原理是进程所拥有的权限与执行它的用户的权限相同(例如:以root用户启动Browser,那么Browser就有root用户的权限,在Linux系统上能干任何事情)。SELinux的出现结束了这种宽松的访问。SELinux在DAC的基础之上,设计了新的安全模型叫做MAC(强制访问控制),其原理是任何进程想在SELinux系统中干任何事情,都必

2020-08-01 00:05:38 11179 2

原创 Binder死磕到底(三):浅析AIDL

Binder是Android系统提供的一种IPC( 进程间通信) 机制,在Java层中如果想要利用Binder进行跨进程的通信, 也得定义一个类似ITest的接口,不过这是一个aidl文件。阿斗(aidl的谐音) 本来是扶不起的, 可是我们有了AIDL工具,就有可能将他扶起!即AIDL是Binder系统面向Java层的一种实现机制。参考:Android中AIDL的使用详解一、AIDL简单演示AIDL是Android中IPC(Inter-Process Communication)方式中的一...

2020-07-18 21:07:25 1844 1

原创 Git之浅入浅出

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。区别如下:1、Git基本概念要很容易的理解Git的工作模式,就必须要搞清楚几个概念:工作区:电脑里能看到的目录。如下图绿色部分 暂存区:英文叫stage或index,一般...

2020-06-01 22:37:05 1857

原创 Binder死磕到底

Binder是Android系统提供的一种IPC( 进程间通信) 机制。 由于Android是基于Linux内核的, 因此除了Binder以外,还存在其他的IPC机制, 例如管道和socket等。Binder相对于其他IPC机制来说, 就更加灵活和方便了。在基于Binder通信的C/S架构体系中, 除了C/S架构所包括的Client端和Server端外, Android还有一个全局的Servi...

2020-04-22 20:57:30 801

原创 智能指针

1 Java四种引用2 C++智能指针C++作为最复杂的语言除了因为语法复杂之外,还体现在指针使用不当,轻则造成内存泄漏,重则造成莫名其妙的逻辑错误或者段错误。因此Android系统仿照了Java的垃圾回收器实现了智能指针技术来解决这个问题。跟其他语言的回收机制原理类似,通常通过引用计数来维护对象的生命周期。每当一个新的指针指向了一个对象时,这个对象的引用计数就增加1,相反每当一个指针...

2020-03-29 14:23:13 1122

原创 Python爬虫初窥

如果编程是魔术,那么网页抓取就是巫术,很多人更加倾向的把网页抓取称作为网络爬虫。引自《Python网络爬虫权威指南》我们都知道通过浏览器可以很方面的浏览妇联网上的海量信息,通过浏览器打开一个链接,其实浏览器干了很多事情,首先通过http/https协议根据url统一资源定位符获取到该资源的数据,这些数据其实就是html文本,浏览器将这些数据解析并显示出来。当然我们可以不使用浏览器,网络爬虫就是...

2020-02-23 22:10:23 1048

原创 Python自学笔记

一、基础知识1、变量变量是表示(或指向)特定值的名称,python跟c/c++/java不同的是,变量的定义不用指定变量的具体类型,且变量使用前必须赋值,因为他没有默认值。如下定义了整形变量varInt的值为3,浮点型变量varFloat的值为3.2,字符串变量varStr值为SHEN。varInt=3varFloat=3.2varStr="SHEN"2、表达式Pytho...

2020-02-02 23:27:05 9071

原创 bat批处理实践

一、基本语法1、常用命令1)、echoa)、控制回显格式:echo [{ on|off}]关闭当前命令回显:@echo "当前命令回显已经被关闭" 关闭之后所有命令回显:echo off 使能之后所有命令回显:echo on 关闭回显并不显示当前命令的回显:@echo offb)、打印提示信息格式:echo string打印字符串string,st...

2019-11-12 23:25:01 330

原创 C++和Java相同和不同

程序设计语言不得不说一下两大最成功的语言C++和Java,众所周知Java是基于C++的,但是相比之下,Java是一门面向对象的语言,但是C++并不是纯粹的面向对象;C++编程思想的作者这样描述:C++是一门基于对象的语言。一、对象客观世界中任何一个事物都可以看成一个对象(object)。对象可大可小,对象是构成系统的基本单位。C++中的任意一个对象都应当具有这两个要素,即属性(att...

2019-09-04 10:26:51 1866

原创 Android Studio上传至GitHub

Git :分布式版本控制系统,最初用在Linux上,可以和SVN、CVS等作为同一个概念理解,目前世界上最先进的分布式版本控制系统(没有之一)。GitHub:基于Git的项目托管平台,简单的说就是一个网站,通过注册账号后,可以使用Git服务,它提供了可以在上面创建资源仓库的Web页面,通过shell命令或者图形用户界面可以和远程项目同步更新,对项目进行管理。Github就相当于项目放置的平台罢...

2019-09-02 17:30:58 295

原创 OpenSL ES总结

OpenSL ES - 嵌入式音频加速标准。OpenSL ES™ 是无授权费、跨平台、针对嵌入式系统精心优化的硬件音频加速API。它为嵌入式移动多媒体设备上的本地应用程序开发者提供标准化, 高性能,低响应时间的音频功能实现方法,并实现软/硬件音频性能的直接跨平台部署,降低执行难度,促进高级音频市场的发展。OpenSL ES 提供了音频播放和音频采集的一套方案,但是并无法进行音频流的编解码,因此...

2019-08-25 23:26:11 2175

原创 Ubuntu搭建Linux环境

一、Linux挂载Windows磁盘Ubuntu的虚拟磁盘呈指数级增长,这给我空间本身不是很充裕的PC造成了很大的压力,为了避免一次又一次无休止的扩容操作,毅然决定使一种方式让他们共享。下面就介绍一种linux挂载windows某个文件夹来作为工作目录。1、虚拟机(VMware)设置共享目录:菜单栏-->虚拟机-->设置-->选项:启用共享并配置一个本地目录,其中名称...

2019-07-31 00:01:58 885

原创 Android ffmpeg详解

一、编译ffmpeg:1、准备android ndk:下载android ndk:选择linux平台,注意是否是64位,链接https://developer.android.google.cn/ndk/downloads/ubuntu解压ndk安装包:unzip android-ndk-r20-linux-x86_64.zip2、准备ffmpeg:下载ffmpeg:...

2019-07-29 22:21:06 1884

原创 区分string.h和cstring和string

在C/C++中操作字符串的时候,傻傻的不知道用哪一个,到底哪一个才符合标准规范,我们一起来解读一下他们的区别一、string.h// -*- C++ -*-//===--------------------------- string.h ---------------------------------===////// The LLVM ...

2019-07-22 22:01:58 487

原创 Android Studio环境配置问题汇总

Android Studio构建1、Gradle总是要重新下载或者一直下载不下来下载gradle-3.2-all.zip一直卡住,由下图可以知道gradle的下载地址https://services.gradle.org/distributions/进入gradle的官方网站,手动下载对应的gradle文件将上面下载好的gradle文件,存放在C:\Users\Adminis...

2019-07-13 02:20:10 984

翻译 MediaCodec编码后的视频播放不连续

问题:在视频采集后,通过Mediacodec编码生成h264视频文件,播放时出现马赛克较多,无论调整帧率、码率、还是分辨率都不能解决问题出现问题的原因:编码时传入的时间戳不对。时间戳是视频播放的标准,应该以采集一帧画面时的时间为准,而不应该是编码时的时间,所以编码时传入的时间戳可以使用采集该帧数据时的时间。关于网上用固定步长增加的变量作为时间戳的方式,个人认为不是很准确。个人认为...

2019-07-07 18:32:41 570

原创 Android NDK开发总结

大家都知道在eclipse上进行ndk开发光是编译C代码就很蛋疼,还好android studio的出现改变了现状,然而,在android studio 3.0以前进行ndk开发,也是各种配置总的来说用着很不爽,如今的android studio作了优化升级,不仅仅配置简化了,还直接引入cmake等功能,终于解放了双手。一、NDK基础介绍1、环境配置:导入ndk等工具:Tools-&g...

2019-04-13 23:54:17 1703

翻译 Android源码解析

一、Android系统启动过程启动电源以及系统启动:当电源按下时引导芯片代码从预定义的地方(固化在ROM)开始执行。加载引导程序BootLoader到RAM中并执行 引导程序BootLoader:它是在Android操作系统开始运行前的一个小程序,其主要作用是把系统OS拉起来并运行 Linux内核启动:当内核被引导程序拉起来启动时,设置缓存、被保护存储器、计划列表、加载驱动。在内核完...

2019-04-03 18:06:55 3853 5

原创 设计模式

一、单例模式单例模式是一种对象创建模式,它用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例。对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销。由于new操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻GC压力,缩短GC停顿时间。1)、饿汉:这种方式可以避免多线程的同步问题,但是无法对实例做延时加载。publ...

2019-03-21 15:40:15 207

原创 全屏Activity弹出对话框如何防止全屏模式失效

Activity的全屏模式如下,因为兼容android6.0,就直接动态代码实现://在activity的onCreate方法中先调用此方法在setContent进行实现全屏模式private void setFullScreenMode(){ //设置永不休眠模式 getWindow().setFlags(WindowManager.Layou...

2019-03-13 10:05:54 1229

原创 Java总结

一、Java高级技术1、IO流流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。1)、常用的阻塞式IO流:2)、NIO:Java IO的各种流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数...

2019-03-01 11:38:59 413

原创 Android总结

话不多说,先罗列一些知识点:基础知识点:Fragment、Activity、Service、广播、Binder、WebView安全漏洞 异步消息处理机制:Handler、IntentService、AsyncTask、HandlerThread View相关:View渲染和绘制、事件分发、ListView 构建:编译打包、Gradle、Proguard混淆、渠道包、Git 开源框架源码...

2019-01-17 17:19:33 831

原创 Java Web项目构建基础总结

一、构建Java Web项目在Eclipse左侧空白处,右键new->Dynamic Web Project如果new的选择列表没有Dynamic Web Project就选择Others->输入Dynamic Web Project 点击finish后如果工程缺少web.xml文件需要右键项目名->Java EE Tools->Generate Dep...

2019-01-11 17:39:51 236

原创 Activity的数据恢复与传递

因为BaseActivity对于数据恢复与保存已经参数传递比较混乱,维护起来很多时候都不记得自己以前写的什么代码了,因此在对其重新进行了封装与优化。一、Activity之间进行数据传递:ActivityA启动ActivityB代码如下:Intent intent=new Intent(ActivityA.this,ActivityB.class);intent.putExtra("...

2019-01-10 16:35:58 386

空空如也

空空如也

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

TA关注的人

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