自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Icarus_的学习笔记

业精于勤,荒于嬉

  • 博客(163)
  • 收藏
  • 关注

原创 MacOS Dock 和窗口调度卡死解决方案

请在你的Shell里依次执行以下命令,这是针对深层 UI 缓存和关联进程的“外科手术”级清理,

2026-06-26 03:42:38 282

原创 Android 性能优化工具先选择

**No(不能自动看到所有方法)**:如果是一段纯业务层/第三方库的计算代码(比如写了个 `for` 循环、解析了一个巨型 JSON,或者 TheRouter 在遍历 Dex),如果没有手动加 `Trace.beginSection()`,Perfetto 里面**绝对看不到这个方法的名字**,只会表现为当前线程的一个“长长的空白色块”(CPU 处于 Running 状态,但不知道具体在跑什么)。所以:**只要是 Android Framework 框架层的核心动作,天生自带 Trace 标记。

2026-06-16 06:22:46 317

原创 主流Agent框架OpenClaw、Hermes Agent 和 Claude Code。

​ 任务结束后,Agent 回顾整个过程,提取成功的模式(Patterns)。

2026-06-02 13:57:14 95

原创 什么是向量数据库?

但是向量检索是要找“最相近”的,高维空间里的距离是多个维度综合计算的,B-tree 根本无法工作。简单来说,它能在百万甚至亿级的向量里,毫秒级地找出最相似的几条。像现在 RAG 架构里“检索”这一步,底层就是靠向量数据库撑着的。可能有人会觉得,在 MySQL 或者 ES 里加个向量字段也能存向量,为什么还要专门的数据库?,它加的 dense_vector 只是个补丁,数据量一大,性能根本扛不住。简单说,HNSW 用内存换精度,IVF 用精度换内存,两者适用场景不同。,两者不能互相替代。

2026-06-02 13:39:17 305

原创 RAG是什么

RAG不就是给大模型挂个知识库吗?给大模型挂知识库只是RAG的表象。如果只是简单的拼接,会遇到检索不到、检索不准、大模型胡编乱造等各种问题。企业级RAG是一套复杂的系统工程,核心要解决的是**‘怎么找’、‘找得准不准’、‘大模型会不会乱说’**这三个问题。

2026-06-02 13:30:21 261

原创 什么是 Harness Engineering

以前的 AI 像个聊天对象,现在的 AI 要变成组织里的执行单元。我认为,谁掌握了 Harness Engineering,谁的 AI 才能真正从实验室走向生产,创造真实的业务价值。简单来说,如果 Prompt 是教模型‘怎么说’,Context 是给模型‘看什么’,那么 Harness 就是解决‘怎么稳定干活’的问题。也就是说,把一个智能体里的‘大脑’拿掉,剩下的那些让系统真正能跑起来的工程结构——比如工具权限、状态管理、失败重试、人工闸门、日志追踪,这些就是 Harness 关心的。

2026-06-02 13:23:58 283

原创 如何用工程化的思维编写和拆分 Claude 的 SKILL.md

我之前维护过一个写作 SKILL,早期把规则、案例、脚本全塞在一个文件里,大概 1900 行,14K token。每次触发,模型先吃进 14K,不仅慢,还经常把不同场景的规则搞混。后来我按渐进式披露重构,主文件砍到 612 行,大概 4.5K token,其他下沉成 7 个子文件。所以,SKILL.md 不是大杂烩式的文档,也不是 prompt 的延伸,我对 SKILL 工程化的理解,它本质上跟传统软件的模块化架构是一回事,只不过我们管理的是 token 预算和模型注意力。

2026-06-02 13:18:49 206

原创 生产级 Multi-Agent 系统目标,是不是 Agent 越多越强?

生产级 Multi-Agent 系统拼的不是 Agent 的数量,而是底层运行时框架 Harness 的稳定性。理念是:“Agent 负责局部智能,Harness 负责全局控制”。​ 在 Demo 阶段,Agent 可能只是简单的链式调用;但在生产环境中,会遇到循环卡死、黑盒不可解释、Token 消耗过大(爆 Token)、工具乱调用等问题。​ 为了解决这些问题,引入了一个中间层Harness(管控层),它负责“接管生产约束”,确保 Agent 不仅聪明,而且可控。

2026-06-02 13:07:37 342

原创 如何写一个高质量的 Agent Skill

而安全边界,比如‘不输出敏感信息’、‘不把不确定的当确定的讲’,这些不仅要写在Skill里,更要在工程层做拦截。操作步骤要把专家的隐性SOP显性化,比如排查问题,必须是‘先看影响范围,再看日志,再验证假设’。我是带着‘可复用、可治理、可评估’的思路去写Skill的,既要让Agent在局部任务上做得更稳,又要防止它变成上下文里的噪声,这就是我的理解和做法。这就是所谓的“最小必要上下文”原则。​ 重点强调 Skill 是用来解决“这类任务以后都怎么做”的,实现了能力的跨任务复用,避免了重复造轮子。

2026-06-02 12:58:51 387

原创 IDEA Android studio 快捷鍵

快捷键操作按两次 Shift快速在 IntelliJ IDEA、您的项目和当前的 Git 存储库中查找任何文件、操作、符号、工具窗口或设置。查找命令并执行,打开工具窗口或搜索设置。AltEnter用于高亮显示的错误和警告的快速修复,旨在改进和优化代码的意图操作。F2ShiftF2跳转到下一个或上一个高亮显示的错误。Ctrl0E从列表中选择最近打开的文件。插入任何必要的尾部符号,并将文本光标置于您可以开始键入下一个语句的位置。CtrlAlt0L。

2026-01-09 21:24:17 734

原创 更新.gitmodules的子模块仓库地址,但是没有生效,需要运行命令

在执行上述命令后,子模块应该会使用新的仓库地址。如果你在其他机器或者团队成员中也使用了这个仓库,确保他们也知道需要同步这些变更。请注意,这些命令将会根据你更新的仓库地址拉取子模块中的内容。如果子模块仓库要求认证(例如需要用户名和密码),你可能需要手动输入这些信息。以上操作将更改提交到你的远程仓库,这样其他使用该仓库的开发者也能通过拉取改动来同步子模块地址。选项表示递归地更新子模块中嵌套的子模块。文件中的URL修改到你的本地配置。如果这是一个新添加的子模块,你需要使用。命令会拉取子模块的内容,并检出到在。

2024-05-28 19:48:59 2687 1

原创 flutter中如何定义EventChannel

在Dart代码中,你需要定义一个// 处理从原生平台发送过来的事件event');// 处理监听过程中的错误error// 处理从原生平台发送过来的事件 print('Received event: $ event ');// 处理监听过程中的错误 print('Received error: $ error ');} }你可以在Flutter中的合适位置调用方法来开始监听事件。

2024-05-27 15:15:17 749

原创 Android firebase消息推送集成 FCM消息处理

你可以使用并利用其提供的样式,如InboxStyle等来定制通知的视觉样式。val builder = NotificationCompat.Builder(this, channelId) // 使用创建的通道ID.setSmallIcon(R.drawable.ic_notification) // 设置小图标.setContentTitle("Example Title") // 设置通知标题.setContentText("Example Description") // 设置通知内容。

2024-05-26 21:28:00 3293 1

原创 android 避免混淆类名和方法名,但是方法内容需要被混淆

要避免在使用 ProGuard 或 R8 进行代码混淆时混淆特定类名和方法名的同时让方法内容被混淆,你需要在 ProGuard 配置文件中使用。请按照你的实际需求调整上面规则中的类名和方法名。此外,你需要确保规则覆盖了所有你希望避免混淆的情况。这些规则允许你指定保留类名和方法名的同时允许方法内部代码被混淆以减小体积和提高安全性。这个完整的类名不会被混淆,所有的公共成员变量和方法名也保持原样,但它们的内部实现可以被混淆。用于保留指定类的成员,但允许类本身的名字被混淆;如果类名也需要不被混淆,可以使用。

2024-05-24 12:28:31 1707

原创 Android app如何禁止运行在模拟器中

请注意,没有完美的方法来检测所有模拟器,因为模拟器们的开发者可能会模仿真实设备的属性。由于模拟器可以伪造这些值,因此某些精心设计的模拟器可能会通过这些检测。此外,这些检测方法可能会随着 Android 系统和模拟器技术的更新而需要相应的更新。禁止 Android 应用程序在模拟器上运行涉及到在运行时检测应用是否在模拟器上运行,并根据情况做出相应的处理。还要考虑到,禁止在模拟器上运行可能会影响那些合法使用模拟器进行测试和开发工作的用户。这个方法检查了多个系统属性,这些系统属性是模拟器的常见标识。

2024-04-10 17:50:17 2841

原创 为什么android创建Fragment推荐用newInstance

实例并同时提供参数的一种标准模式。这种模式通常称为静态工厂方法模式,在Android开发中被广泛使用,尤其是用于。应该有一个空的构造函数,以便在配置更改和重建的时候系统能够重新实例化它们。的单例,每次调用都会生成一个新的实例。通常情况下,每次需要显示对话框时,都创建对话框的新实例是最佳实践。(例如,在内存不足时杀死进程后恢复、设备旋转或其他配置更改)时,提供的。这意味着使用过这种模式创建的。需要的参数和创建过程封装在一起,使外部代码不直接与。方法不是因为它是一个单例,而是因为这是创建。参数的官方推荐方式。

2024-04-04 17:22:17 1100

原创 flutter中的ListView单元测试

在 Flutter 中,你可能会希望测试ListView内容是否如预期那样显示,是否能够正确滚动,以及是否处理用户输入。以下是测试ListView。

2024-04-03 16:47:00 705

原创 flutter 单测报错 ERROR:D8: Cannot fit requested classes in a single dex file (# methods: 113087 > 65536)

在 Android 中,一个单独的 DEX(Dalvik Executable)文件有方法数量的限制,即每个 DEX 文件不能包含超过 64K(65536)个方法。是 21 或更高,那么你不需要在 Application 类中做任何工作,因为 Android 5.0 及以上版本支持多个 DEX 文件,并且 ART 运行时支持 MultiDex。完成以上步骤后,你应该能够避免方法数超出限制的问题,因为现在应用支持多 DEX 文件了。属性,并确保它指向你的 Application 类,

2024-04-03 16:23:59 992

原创 flutter一个bloc可以对应多个state

在 Flutter 的 Bloc 库中,一个 Bloc 可以对应多个 State,这正是 Bloc 架构的一个关键设计原则。一个 Bloc 过程中,可能会经历多个不同的状态,以此来反映应用的不同部分的变化。总之,Bloc 并不局限于仅与单个状态对应,它可以和一系列的状态有关联,并通过事件触发不同状态的转换。这种能力使得 Bloc 很适合于复杂的应用状态管理,因为它可以详细地捕获和响应用户的交互,以及应用中发生的其他事件,并且能灵活地以状态变化表达出来。函数可以在 Bloc 内部更改和发出新的状态。

2024-04-03 16:22:59 698

原创 flutter 打包成web应用后怎么通过url跳转页面

在 Flutter 中,如果你想要在打包成 Web 应用后通过 URL 跳转页面,你可以利用 Flutter 提供的路由导航系统和 URL 策略。

2024-03-28 19:34:14 1476

原创 flutter boost 如何从native跳转到flutter页面

在你的 Flutter 项目中集成 Flutter Boost 插件。在上面的示例中,Flutter Boost 使用 `registerPageBuilders` 方法来注册页面名称和对应的构造函数映射。这里的 `"flutterPage"` 是你希望跳转到的 Flutter 页面的名称,你需要在 Flutter 代码中对它进行注册。在你的 Flutter 代码中,注册你希望从原生跳转到的页面。在你的原生代码中,调用 Flutter Boost 提供的方法来打开一个 Flutter 页面。

2024-03-27 17:32:39 1262 1

原创 CodeGeex论文阅读

《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》论文地址:https://arxiv.org/pdf/2303.17568.pdf代码地址:https://github.com/THUDM/CodeGeCodeGeeX,是一个具有130亿个参数的多语言模型,用于代码生成,在23种编程语言的8500亿个token上进行了预训练。CodeGeeX的特点(1)CodeGe

2023-07-16 13:17:54 2237

原创 静态词向量预训练模型

然而,传统的矩阵分解方法得到的词 向量不具备良好的几何性质,因此,结合词向量以及矩阵分解的思想,提出Glove ( Global Vectors for Word Representation)模型。词向量层也可以理解为一个查找表 (Lookup Table),获取词量的过程,也就是根据词的素引从查找表中找出对应位置的向量的过程。从词向量学习的角度来看,基于神经网络语言模型的预训练方法存在一个明显的缺点,即当对t时刻词进行预测时,模型只利用了历史词序列作为输人,而损失了与“未来”上下文之间的共现信息。

2023-04-01 21:42:16 1518 1

原创 pytorch 词性标注实战

基于 Transformer 实现词性标注相当于将基于 Transformer 实现的情感分类与基于 LSTM 实现的词性标注相融合。Transformer 层的实现与 Transformer 情感分类基本相同,只有在forward 函数中需要取序列中每个输人对应的隐含层并计算概率,而不是第1个 输入的隐含层(代表整个序列)。此处以 NITK 提供的宾州树库(Penn Treebank)样例数据为例,使用 LSTM 网络进行词性标注。基于循环神经网络的模型可以使用更长的上下文,因此更适合序列标注问题。

2023-03-26 13:56:54 1017

原创 pytorch 实现情感分类问题

例如,如果在一个序列前面增加一个标记,则序列中的每个标记位置都变了,也就是它们对应的参数都发生了变化,那么模型预测的结果可能完全不同,这样显然不合理。如果输人为文本,即整数序列(假设已经利用词表映射工具将文本中每个标记映射为了相应的整数),在经过多层感知器之前,需要利用词向量层将输入的整数映射为向量。无论是深度学习还是传统的统计机器学习方法处理自然语言,都需要先将输入的语言符号(通常为标记Token),映射为大于等于0、小于词表大小的整数,该整数也被称作一个标记的索引值或下标。

2023-02-12 22:30:08 2332 3

原创 pytorch 梯度下降

首先,输出网络的参数值,包括两个线性映射层的权重和偏置项的值,然后,输出网络对训练数据的预测结果,[1, 0, 1, 0],其与原训练数据相同,说明该组参数能够正确地处理异或问题(即线性不可分问题)

2023-02-12 15:15:14 273

原创 pytorch 实现神经网络

在PyTorch 中构建一个自定义神经网络模型非常简单,就是从torch.nn 中的Module 类派生一个子类,并实现构造函数和 forward 函数。其中,构造函数定义了模型所需的成员对象,如构成该模型的各层,并对其中的参数进行初始化等。而forward 函数用来实现该模块的前向过程,即对输人进行逐层的处理,从而得到最终的输出结果。PyTorch 提供的基本张量存储及运算功能,就可以实现多种神经网络模型,但是这种实现方式不但难度高,而且容易出错。

2023-02-12 11:12:01 486

原创 自然语言处理 Transformer 模型

Transformer 模型

2023-02-04 22:26:23 2373 3

原创 pytorch 手写数字识别模型

【代码】pytorch 手写数字识别模型。

2023-01-29 14:52:22 446

原创 pytorch波士顿房价预测模型

【代码】pytorch波士顿房价预测模型。

2023-01-28 19:52:26 2059

原创 Android ABI

不同的 Android 设备使用不同的 CPU,而不同的 CPU 支持不同的指令集。CPU 与指令集的每种组合都有专属的应用二进制接口 (Application Binary Interface,ABI)常见的cpu架构现在在应用市场发布app必须要支持64位架构,并且必须有64位so文件。

2022-10-23 21:21:07 722

原创 客户端架构

主流架构演进与项目架构改造。

2022-09-20 11:51:15 1202 1

原创 梯度下降法

1.什么是梯度下降法机器学习领域的一个重要的方法,叫做梯度下降法。那么梯度下降法和我们之前讲的knn算法或者线性回归算法不同。梯度下降法本身不是一个机器学习的算法,他既不是在做监督学习,也不是在做非监督学习,他不能用于解决回归问题或者分类问题,梯度下降法是一种基于搜索的最优化的方法。它虽然也是人工智能领域的一个非常重要的方法,但是它的作用是用于优化一个目标函数。那么对于我们要最小化一个损失函数的话,相应的使用的就是梯度下降法。而如果我们要最大化一个效用函数的话,相应的就应该使用梯度上升法。线性回归算法,

2022-05-22 22:05:18 957

原创 线性回归法

1.简单线性回归线性回归法跟我们在上一章所介绍的knn算法不同,knn算法主要用于解决分类问题,而线性回归算法则主要用于解决回归问题,对于现象回归算法来说,它也是思想非常简单,而且实现起来会非常容易,这里的实现容易,和他背后具有非常强的数学性质是相关的。那么这个相应的数学推导会稍微复杂一点,但也并不是特别难,但是由于有这种数学的支撑,使得我们的计算机的实现是很容易的。与此同时,线性回归法虽然非常简单,但是我们后面就会看到它是许多更加强大的非线性模型的基础,无论是多项式回归,逻辑回归甚至是svm,从某种程度

2022-05-22 16:28:53 2121

转载 使用飞桨重写波士顿房价预测任务

使用飞桨实现波士顿房价预测任务本教程中的案例覆盖计算机视觉、自然语言处理和推荐系统等主流应用场景,使用飞桨实现这些案例的流程基本一致,如图1所示。图1:使用飞桨框架构建神经网络过程在之前的章节中,我们学习了使用Python和NumPy实现波士顿房价预测任务的方法,本章我们将尝试使用飞桨重写房价预测任务,体会二者的异同。在数据处理之前,需要先加载飞桨框架的相关类库。In [1]#加载飞桨、NumPy和相关类库import paddlefrom paddle.nn...

2022-05-22 12:48:41 1074

原创 NumPy 入门介绍

NumPy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。NumPy具有如下功能:ndarray数组:一个具有矢量算术运算和复杂广播能力的多维数组,具有快速且节省空间的特点; 对整组数据进行快速运算的标准数学函数(无需编写循环); 线性代数、随机数生成以及傅里叶变换功能; 读写磁盘数据、操作内存映射文件。本质上

2022-05-22 12:48:24 591

转载 波士顿房价预测 使用Python语言和Numpy库来构建神经网络模

波士顿房价预测任务上一节我们初步认识了神经网络的基本概念(如神经元、多层连接、前向计算、计算图)和模型结构三要素(模型假设、评价函数和优化算法)。本节将以“波士顿房价预测”任务为例,向读者介绍使用Python语言和Numpy库来构建神经网络模型的思考过程和操作方法。波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的“Hello World”。和大家对房价的普遍认知相同,波士顿地区的房价受诸多因素影响。该数据集统计了13种可能影响房价的因素和该类型房屋的均价,期望构建一个基于13个因素进行..

2022-05-08 16:37:57 5568 1

原创 kotlin进阶

八、Lambda 表达式高阶函数高阶函数是将函数作为参数或返回函数的函数 suspend fun <T : BaseRpcNetworkResult> executeRpc(block: suspend () -> BaseRpcNetworkResult): RpcResponse<T> { runCatching { block.invoke() }.onSuccess { data: B..

2022-05-06 15:05:10 1381

原创 最基础的分类算法-k近邻算法 kNN

01 kNN 基础import numpy as npimport matplotlib.pyplot as pltkNN 基础概念k近邻算法,全称是 K Nearest Neighbors,knn算法是一个非常适合大家入门机器学习的算法。这是因为knn算法他的思想极度简单,不仅如此,knn这么一个思想简单的算法,它的效果也出奇的好。 该方法的思路是:在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。 给定一个训练数据集,对新

2022-05-04 15:23:24 2216

原创 kotlin基础

kotlin 中的高阶函数高阶函数即指:将函数用作一个函数的参数或者返回值的函数。//block1 无参数无返回值函数类型 val block1: () -> Unit // block2 无参数返回值为 String 的函数类型 val block2: () -> String // block2 有一个 Int 类型的参数无返回值的函数类型 val block3: (Int) -> Unit // block4 有2个参数返回值

2022-04-26 23:13:41 3236

空空如也

空空如也

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

TA关注的人

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