自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 android系统耗时关键字

android 系统耗时分析

2022-10-21 09:53:16 1464 1

原创 Priv-app permission异常

priv-app 权限异常

2022-06-30 17:38:50 752

原创 SeAndroid 整理

https://blog.csdn.net/qq_40083589/article/details/105328453https://blog.csdn.net/weixin_30469895/article/details/99894021https://www.jb51.net/article/144744.htmhttps://blog.csdn.net/fu_zk/article/details/41548647https://blog.csdn.net/tkwxty/article/det

2022-05-30 09:10:24 171

原创 dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)

dpkg: error processing archive /var/cache/apt/archives/grub2-common_2.02+dfsg1-20+deb10u4_amd64.deb (--unpack):trying to overwrite '/etc/kernel/postinst.d/zz-update-grub', which is also in package grub-efi-amd64 2.04-1ubuntu44.1.2dpkg-deb: error: paste .

2022-03-13 13:17:14 866

原创 Ubuntu apt

apt source源配置文件sudo gedit /etc/apt/sources.list

2022-03-07 22:47:17 122

原创 AS 打开android源码跳转

https://www.jianshu.com/p/2ba5d6bd461e

2022-01-16 23:53:57 1861

原创 SeAndroid修改

----------【例子1】:通过修改shell的权限,使其无法设置属性:先来看shell的te,如下所示:[external/sepolicy/shell.te]Domain for shell processes spawned by ADBtype shell, domain;type shell_exec, file_type;#shell属于unconfined_domain,unconfined即是不受限制的意思unconfined_domain(shell)Run app_p

2022-01-16 23:15:32 1414

原创 sharedPreference特性

SharedPreference(下文简称sp)是一种轻量级的存储方式,是它的设计所决定的:sp在创建的时候会把整个文件全部加载进内存,如果你的sp文件比较大,那么会带来几个严重问题:第一次从sp中获取值的时候,有可能阻塞主线程,使界面卡顿、掉帧。解析sp的时候会产生大量的临时对象,导致频繁GC,引起界面卡顿。这些key和value会永远存在于内存之中,占用大量内存。子线程从文件中加载xml文件private void startLoadFromDisk() { synchroni

2021-12-20 20:19:24 1303

原创 SharedPreference中apply方法导致的ANR问题

crash 堆栈信息如下。从 crash 收集平台上来看,有几个类似的堆栈信息。唯一的区别就是 ActivityThread 的入口方法。除了 ActivityThread 的 handleSleeping 方法之外,还有 handleServiceArgs、handleStopService、handleStopActivity。ActivityThread 的这几个方法是 Activity 或 Service 的生命周期变化的时候调用的。从堆栈信息来看,组件生命周期变化,导致调用 QueueWork

2021-12-20 19:41:12 153

转载 android mFirstTouchTarget细节

此demo本质是一个viewgroup类型的控件,可以跟随手指的拖动而移动位置,内部可以包含一些子view来显示内容,同时子view可以响应点击事件。由于外层viewgroup要响应移动事件,故自然而然的想到了要在外层viewgroup中拦截move事件。于是有了下面的写法。@Overridepublic boolean onInterceptTouchEvent(MotionEvent event) {int action = event.getAction();switch (action)

2021-12-19 13:47:53 311

转载 WebView部分源码概览

Android与JS通过WebView互相调用方法(二者沟通的桥梁是WebView),实际上是:Android去调用JS的代码JS去调用Android的代码对于Android调用JS代码的方法有2种:通过 WebView.loadUrl()通过 WebView.evaluateJavascript()对于JS调用Android代码的方法有3种:通过 WebView.addJavascriptInterface() 进行对象映射通过 WebViewClient.shouldOverrideUr

2021-12-16 11:38:09 2347

转载 WebviewJavascriptBridge实现原理

一、什么是 JSBridge?JSBridge 是一种 webview 侧和 native 侧进行通信的手段,webview 可以通过 jsb 调用 native 的能力,native 也可以通过 jsb 在 webview 上执行一些逻辑。二、JSB 的实现方式在比较流行的 JSBridge 中,主要是通过拦截 URL 请求来达到 native 端和 webview 端相互通信的效果的。这里我们以比较火的 WebviewJavascriptBridge 为例,来解析一下它的实现方式。源码地址:h

2021-12-16 11:34:03 2011

转载 Android Surface

前一篇文章介绍了android的显示系统,这篇文章中,我们把视角往上层移动一下,研究一下framework是如何与surfaceflinger进行业务交互的。如何创建surface,如何显示窗口等等,所有的这一切都是通过系统服务WindowManagerService与surfaceflinger来进行的。android中的Surface机制这一块代码写的比较难理解,光叫Surface的类就有3个,因此本篇文章从两部分来分析,首先,想要理解Surface机制,还是需要首先理清各个类之间的关系。其次,在理解

2021-12-12 20:03:00 722

转载 android硬件加速基础

理解Android硬件加速原理的小白文 - 简书

2021-12-07 21:47:12 70

原创 Android gradlew 依赖树

查看依赖树注意不同flavor对应的依赖查看不同configuration(debug/release)对应的依赖查询所有依赖:./gradlew -q :app:dependencies查询所有依赖并写入文件:./gradlew -q :app:dependencies > log.txt查询某个configuration依赖:默认可以查询以下这些config:releaseRuntimeClasspath、debugRuntimeClasspathreleaseCompileC

2021-09-20 09:33:36 874

原创 As 2020.3.1 版本 git log 中文乱码

Android Studio 2020.3.1Mac版本git面板出现乱码解决方案:打开Preferences菜单选择Appearance,然后勾选Use custom font,点击右下角apply。(自己的本地的terminal 没问题, 只是 as 中的git log 有问题)

2021-09-15 11:22:36 179

原创 Kotlin 构造函数相关

构造函数 / 默认参数 / 具名参数/*默认参数->函数重载具名参数 调用有默认参数的函数主构造函数class 类名 constructor(arg1, arg2…)主构造函数不包括任何代码, 初始化块用于初始化代码初始化语句可以不放在 初始化块, 定义属性时直接将主构造器中的形参赋值主构造函数中参数 使用val/var 则成为类的属性. 否则不是没声明主构造函数时, 生成默认的无参主构造函数在类标题中声明关键字constructor 没有可见性操作符或注解修饰时,可省略

2021-09-02 19:40:55 169 1

原创 LiveData 粘性消息注意点

anroid Jetpack LiveData 注册过之后状态再次成为active时,会收到之前订阅过的旧消息具体源码分析 见下面这篇文章末尾源码部分https://tech.meituan.com/2018/07/26/android-livedatabus.html简单有效的解决方案是包装一层observer, 其中添加 version 字段来控制发布值得时候才增加version 号, 订阅的时候不升version 号参见:https://github.com/KunMinX/UnPeek

2021-08-21 19:12:20 176

原创 Android NDK 简介

使用NDK可以快速开发C、C++的动态库,并自动将这些so文件与其他内容一起打包成APK提供了把.so 和 .apk 打包的工具

2021-08-16 21:47:50 62

原创 Android gradle 变量定义

在根build.gradle 文件中 的 buildscript 和 allprojects直接 用变量名字即可访问,或者 在字符串中 使用 $变量名访问va 或者 $va 或者 rootProject.ext.va在根build.gradle 文件中 的 和 allprojects / buildscript 同级定义的变量使用该方式 访问同上在单个module 里面定义的build.gradle 是 局部的, 不能全部访问...

2021-08-16 19:51:50 772

原创 Clion 编译调试Nginx

clion 编译调试nginx环境准备编译步骤简单调试环境准备编译步骤简单调试

2021-08-14 00:32:30 2002

原创 C 经典开源项目

##WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz210552/webbench.html##CMockerycmockery是google发布的用于C单元测试的一个轻量级的框架。它很小巧,对其他开

2021-08-13 19:26:57 84

原创 android 逆向

android 逆向中的概念和工具mobile sandboxDroid kong fuAndbugJDWP远程调试和安全APKinspectormercuryIDA proc32asmsmali 和 dalvik 指令集

2021-07-02 15:05:39 48

原创 anroid 热修复方式

https://mp.weixin.qq.com/s/uY5N_PSny7_CHOgUA99UjA?spm=a2c4g.11186623.2.2.35f2788fEoDr4e

2021-06-28 15:47:33 47

原创 JNI 中函数签名

JNI中的getMethodID 中的函数签名对应(形参类型1 ...)返回类型引用类型签名:L包名; (其中包名/分割,最后的分号)“(II)V” 表示 void Func(int, int)(Ljava/lang/String;Ljava/lang/String;)V 表示 void Func(String,String)函数位于一个嵌入类,则用$作为类名间的分隔符。如 “(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;).

2021-05-10 00:17:02 886

原创 android 官方网页源码查看

1. 地址https://cs.android.com/2. 搜索方式https://developers.google.com/code-search/user/search-files

2021-05-08 18:52:55 112

转载 JNI 调用方式

1.静态注册1. 编写需要的Java方法,并编译出class文件:public class StaticRegisterNativeMethod { static { System.loadLibrary("RegisterMethodTest"); } public native String hello();}2. 通过javah工具生成对应的.h头文件:javah -o xxx.h packagename.DynamicRegisterNative...

2021-05-08 14:34:41 519

转载 C typedef总结

在C还是C++代码中,typedef都使用的很多,在C代码中尤其是多。typedef与#define有些相似,其实是不同的,特别是在一些复杂的用法上,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,加上自己的一个分析。基本定义:typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的...

2021-05-03 16:08:19 72

原创 /usr/lib/python3/dist-packages/gi/__init__.py“, line 42 terminal无法启动

系统中的python3 版本更新到 3.8.6 出现下面的错误使用 update-alternative 可以将python3 先切换为 3.5.2. 可以先解决问题Type "help", "copyright", "credits" or "license" for more information. >>> from gi.repository import GLib, GioTraceback (most recent call last): File "&lt.

2021-04-12 21:39:35 1073

转载 DAM(Direct Memory Access)

cpu 和 IO 之间的协作关系占用-->中断-->异步(IOP专门做IO操作)以往的io操作都需要经过cpu之手,在以前,cpu要一直轮询io系统,io操作是否已经结束,在这期间,cpu不能做其他的事情,效率极低,后来中断机制的出现,使得cpu的效率大大提高,主要的方法有轮询和菊花链。但是他们都需要cpu通过执行程序来实现。直到DMA出现。DMA的出现使得CPU从大量的中断负载中得到释放,CPU的效率显著提高。DMA 全称为 Direct Memory Access ,中文译为直接内

2021-04-03 16:49:36 1355

转载 git submodule 基本命令使用

git submodule add <submodule_url> # 添加子项目添加子项目后会出现.gitmodules的文件,这是一个配置文件,记录mapping between the project's URL and the local subdirectory。且.gitmodules在git版本控制中,这样其他参与项目的人才能知道submodule projects的情况。git submodule init # 初始化本地.gitmodules文件...

2021-03-18 11:02:23 805

转载 java synchronized 分析

要明白两个问题,1.锁的对象是谁,2.谁持有了锁。假设方法A和B是在同一个类Test中的两个方法。Test t=new Test();t.methodB();这个时候,methodB方法被调用时,因为加了synchronized ,需要先获得一个锁,这个锁的对象应该是t,也就是当前的这个Test类的实例,而获得锁的东西是线程,也就是说当前线程拿到了t的锁(而不是你说的B方法获得锁),这个时候B方法内调用methodA,因为A也加了synchronized,也需要获得一个锁,因为A和B都是Test

2021-03-03 11:29:41 72

原创 Gradle plugin: 生成dimen 插件

该插件 是用来生成dimen.xml记录下 写该插件的遇到的一些问题1. groovy 语法不熟2. 搭建插件开发的环境(最终为了方便测试使用了BuildSrc的工程结构)BuildSrc 工程的结构 容易测试使用maven 发布到本地的方式 (测试太繁琐)markupBuilder 添加节点的方式markBuilder.resources { dimenPairs.each { item -> String new.

2021-01-13 15:43:35 111

原创 Android Drawable加载顺序

1. 屏幕分辨率手机屏幕的像素点数 如 1080X19202. 屏幕像素密度每英寸的 像素点数(1080^2 + 1920^2)的 开方 计算 对角线的像素屏幕5英寸 指 屏幕的对角线的长度最小宽度sw-<>dp: 指宽高中的最小值,(在不管屏幕方向)https://developer.android.com/training/multiscreen/screensizesdpi 对应的范围hdpi ~160dpi-240dpixhd...

2020-12-25 17:15:31 406

原创 Java 替代大量判空操作

Java 替代大量判空操作1. NULL Object 模式实现Nullable接口(对应类的空实现), 通过工厂类 返回 真实对象 或者 空实现2. Java 8 中的Optional 或者 Guava 中的 Optional使用Optional 要求 android 24以上

2020-12-24 20:29:55 271 1

转载 调试gradle 插件

1. 定义remote 类型新的 Run Configuration2, Build 配置里面 针对相应的Task 加上 对应的 Run Configuration(对应的VMOptions 使用1中的策略)3. 在gradle 脚本中打断点, 先运行1 中新的Configuration, 在运行2中的 对应的taskhttps://www.cnblogs.com/milovetingting/p/12364319.html...

2020-07-15 08:30:28 139

原创 Git 合并两个仓库

cd repo1git remote add other ../repo2git fetch othergit checkout -b repo2 other/mastergit checkout mastergit merge repo2将一个仓库的内容checkout到另一个仓库的一个分支,将该分支与master分支合并

2020-07-10 12:07:49 121

转载 StackOverFlow tips

Parameters and local variables are allocated on thestack(with reference types, the object lives on theheapand a variable in the stack references that object on the heap). The stack typically lives at theupperend of your address space and as it is use...

2020-07-06 10:16:24 100

原创 Kotlin 协程的原理

1. 状态机2. 线程调度(协程运行在哪个线程)Kotlin协程是使用编译技术实现的,无需依赖于VM和OS的实现,使用了”代码转换“实现挂起技术。"挂起函数"会被转化成状态机,每个挂起调用都会被处理成一个状态。在挂起之前,本地变量会被保存起来,同时会把状态机的下一个状态保存起来。当状态机被唤醒时,所有变量会被恢复,同时状态机从上一次保存的状态开始执行。挂起时,保存这些信息的状态机,是Continuation类型的对象,可以被程序保存或者传递。当协程调用一个"挂起函数"时,就会把当前的状态机传递给“挂

2020-06-20 08:43:22 2701

原创 reactive program

Reactive, what an overloaded word. Many things turn out to become magically Reactive these days. In this post, we are going to talk aboutReactive Programming, i.e. a development model structured around asynchronous data streams.I know you are impatient .

2020-06-11 21:28:05 312

Monokai Sublime Text 3.jar

Sublime Theme

2021-09-04

分布式课件

中国科学技术大学分布式算法课件,帮助你更好咯街分布式算法,希望能帮到大家。

2014-11-13

数据库习题

数据库习题练习,数据库的核心习题让你考试无忧

2012-11-21

空空如也

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

TA关注的人

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