自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 矢山代码阅读器

矢山代码阅读器是一个图形化的代码阅读器。目前的目标是:将程序员阅读代码的方式从一维的文字结构中解放出来。

2024-05-12 19:05:20 1292 1

原创 MissingPluginException(No implementation found for method availableCameras on channel plugins.flutte

是因为flutter attach时只会把dart代码更新到正在运行的程序中,而plugin是原生代码,没有热更到程序中。如果你的flutter项目是打包成aar的,然后第一次导入camera库,attach到手机上后,获取相机时报这个错。解决办法就是不要热更,把flutter项目打包成aar后,再打包主项目。记录下浪费我一下午的“不是问题的问题”

2025-11-21 17:00:42 200

原创 文脉阅读:结构化英语阅读工具

2025-11-19 18:28:33 163

原创 心法:私钥加密与私钥解密

摘要:私钥仅持有者拥有,用于加密时可实现数据完整性校验、数字签名和证书颁发,通过公钥解密验证来源;私钥解密则确保数据私密性。公钥可公开获取,私钥加密结合哈希可用于建立"我量你不敢"的责任追究机制,而私钥解密保证只有持有者能解读密文。这种机制兼顾了身份验证与数据保密两大核心需求。

2025-09-03 13:13:00 406

原创 数字签名原理

【代码】数字签名原理。

2025-05-28 11:32:39 149

原创 设计模式笔记—分类

此文无法教会你设计模式,而是在你已经学会设计模式的基础上,提供一种看待设计模式的角度。

2024-09-16 05:00:55 658

原创 安卓笔记—LaunchMode

LaunchMode处理的是: Task(实例),Activity类,Activity实例三者之间的对应关系所谓的对应关系就是:1对1,1对多,多对1,多对多.而TaskAffinity处理的是:启动一个应用时要选择哪个Task存放.此文只讲对应关系.注意:一个Activity实例不会对应多个Activity类,一个Activity实例不会对应多个Task实例.唯一可以存在多对多关系的是Task实例与Activity类.

2024-09-11 18:07:04 475

翻译 安卓文档翻译—com.android.server.wm.BLASTSyncEngine

但是,只要其监视的层次结构不与任何其他同步的监视层次结构重叠,它就会并行运行。目前,以“并行”方式启动的同步会隐式忽略其直接成员下方的子树,除非这些成员是活动(WindowStates 被视为活动的“一部分”)。这允许“分层”并行,例如,仅在任务级别的同步可以与仅包含任务活动的另一个同步并行运行。这是通过添加依赖项来完成的。为了避免依赖循环,如果同步 B 最终依赖于同步 A,并且将容器添加到由 B 监视的 A,则该容器将从 B 移动到 A,而不是创建循环依赖项。例如,用于同步调整窗口容器的所有子项的大小。

2024-09-07 09:30:26 185

原创 声明式编程语言是最理想的编程语言

NP问题的概念太抽象,我在此只是所有的NP问题在多项式时间内都能规约到NP完备问题,解决了此NP完备问题,所有NP问题也都能得到解决所有的业务都可以化简成某个终极业务。解决了这个终极业务,也就解决了世界上所有的业务。所有对业务逻辑进行抽象的工作,都是向这个终极业务的靠近,也是指令式编程语言在实现声明式编程语言的过程。

2024-09-01 15:14:39 535

翻译 kotlin文档翻译—tailrec关键字

为了符合 tailrec 修饰符的资格,函数必须调用自身作为其执行的最后一个操作。当递归调用后、try/catch/finally 块内或打开的函数上有更多代码时,不能使用尾递归。Kotlin 支持一种称为尾递归的函数式编程风格。对于某些通常使用循环的算法,您可以使用递归函数,而不会有堆栈溢出的风险。此代码计算余弦的不动点,余弦是一个数学常数。它只是从 1.0 开始重复调用 Math.cos,直到结果不再改变,对于指定的 eps 精度产生 0.7390851332151611 的结果。

2024-08-30 13:17:59 193

原创 安卓笔记—调用栈之从sendBroadcast到onReceive

以U之前版本的parallel广播为例。

2024-08-21 00:58:16 400

原创 安卓笔记—调用栈之从Hander.post/Handler.sendMessage到Runnable.run/Handler.handleMessage

先看传入Hander.post的Runnbal被存在了哪里getPostMessage::Runnable:return的数据流动MessageQueue.mMessages的数据流动dispatchMessage 中判断Message.callback是否为空,如果为空就会调用Handler.handleMessage到这里我们只是看到了Runnable和Message被传到了处理他们的函数中,但是没有看到他们是什么时候被处理的,也就是时机流还没有搜。

2024-08-16 17:23:31 642

原创 C++笔记—thread join detach

子线程往往是耗时操作,如果主线程中任务较少,在子线程结束前结束了,那么根据上面三点,子线程就会在没有完成任务的情况下被迫结束。被 detach 后的线程不能被 join,也就是不能被等待。这也许是 detach 为什么叫 detach 的原因吧。

2024-08-15 17:33:00 574

原创 安卓笔记—调用栈之从View.invalidate到Choreographer.postCallback

如果你此时的问题是Choreographer.postCallback这个函数是干什么的?就能解释invalidate函数为什么能触发onDraw了。

2024-08-14 22:19:31 233

原创 安卓笔记—调用栈之从vsync到onTouchEvent以及MotionEvent从哪里来

ConsumeBatchedInputRunnable继承自Runnbale,只有一个实例:ViewRootImpl.mConsumedBatchedInputRunnable,那么下一步就是搜索数据流动,但是他的数据流动与ViewRootImpl.mTraversalRunnable的一模一样,因此不在这里重复了。因此,输入事件会分批处理,每帧仅向应用传送 1 个事件。上面这句话对我来说很模糊,既说了“分批处理”,又说了“每帧1个事件”,我没有读懂他到底是怎么个意思。难道意思是每批只有1个事件吗?

2024-08-13 23:55:54 802

原创 安卓笔记—调用栈之从vsync到ondraw

TraversalRunnable继承自Runnbale,只有一个实例:ViewRootImpl.mTraversalRunnable,那么下一步就是搜索数据流动。接下来搜索包含doCallbacks的调用栈。从onDraw向上找。

2024-08-13 19:00:16 408

原创 安卓笔记—调用栈之从Activity.startActivity到Activity.onCreate

相关请看安卓笔记—应用进程是如何创建启动的懂原理就行了,调用栈有什么用?刚明白一个原理之后,和这个原理相关的千千万万个方面还等着你去熟悉。当应用没有按照你预想的方式运行时,就是这千千万万个方面在做怪,那个时候你就恨不得有这样一个调用栈来查找问题了。// app 进程android.app.Activity.startActivity::Intent:android.app.Activity.startActivity::Intent,Bundle:android.app.Activity.sta

2024-08-12 23:05:46 457

原创 安卓笔记—binder

binder的c实现代码我没有读,下面的笔记都是从文章中学习的。

2024-08-12 17:59:17 475

原创 安卓笔记—Activity生命周期的路径

上面的生命周期描述了应用能够长时间驻留于哪些状态。从生命周期数值来看,从小到大的顺序下,描述了应用从。待补充:在哪些时机下,会从哪个起点变化到哪个终点?,因此循环的起点值不一定小于终点值。但是在正常使用过程中,

2024-08-10 14:21:29 307

原创 安卓笔记—应用进程是如何创建启动的

搜索学习下面两个预备知识,下面两个概念与安卓无关,只是安卓用了下面两个概念,搜索时。

2024-08-06 14:04:41 397

原创 unable to install new version of ‘/lib/x86_64-linux-gnu/libpng12.so.0‘: No such file or directory

unable to install new version of '/lib/x86_64-linux-gnu/libpng12.so.0': No such file or directorysudo add-apt-repository ppa:linuxuprising/libpng12sudo apt updatesudo apt install libpng12-0

2022-07-13 19:30:53 984 5

原创 Base64 编码:文档翻译,解释与举例

Base64 编码:文档翻译,解释与举例文档部分翻译与解释举例文档链接:https://www.ietf.org/rfc/rfc2045.txt文档部分翻译与解释Base64 Content-Transfer-Encoding 目的是用一种人类不可读的形式表示一个八位字节序列。编码和解码算法很简单,但编码数据始终仅比未编码数据大33%。编码过程将输入的24位比特的数据表示为4个字符的输出字符串。将连续的3个8位比特数据形成的24位比特数据看成是4个6位比特的数据,然后将这4个6位比特的数据变成

2020-05-19 18:58:14 2083 1

原创 android 源码下载地址链接

https://dl.google.com/android/repository/sources-29_r01.ziphttps://dl.google.com/android/repository/sources-27_r01.ziphttps://dl.google.com/android/repository/sources-26_r01.zip。。。。。。https://dl.go...

2020-05-08 16:46:06 1851

原创 如何读源码(新手读源码为什么困难)

前几个月写了一个android源码阅读工具,但担心有人不懂我写这个工具的目的在哪里,现在写写我对于读源码的一些体会。学过英语的同学可以回想一下,当你一篇英语文章一个字都不认识,这篇英语文章给你的感受,这就是新手读源码的感受。一个词的含义可以从字典上查,但一个一个查会耗尽人的耐心,也可以从上下文中多少看出来(自然语音基石word2vec充分证明这一点),但如果上下文中的单词你也不认识,那要如...

2020-03-08 12:29:53 2062 3

空空如也

空空如也

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

TA关注的人

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