自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 kotlin中的对象表达式与java中的匿名内部类

Kotlin 中的对象表达式(Object Expressions)和 Java 中的匿名内部类(Anonymous Inner Classes)在功能和用途上相似,它们都允许定义一个类的一个匿名实例,但是这个实例的创建是基于已经存在的类。它们在语法和写法上存在一些明显的差异。

2024-09-27 14:23:09 390

原创 Lambda表达式常见用法

Kotlin 的 lambda 表达式是一种匿名函数,可以作为参数传递给其他函数。这些示例展示了 Kotlin 中 lambda 表达式的基本用法及其在不同场景中的应用。

2024-09-24 17:58:31 215

原创 android API、SDK与android版本

随着 Android 系统的不断更新,API Level 也会随之增加。每个新的 API Level 都引入了新的功能、改进旧的功能,或者弃用了旧的 API。开发者在开发应用时,需要指定目标 API Level,也就是应用最低支持的 Android 版本。

2024-09-14 17:25:06 1067 1

原创 WindowManager的使用

是Android系统中的一个核心类,它负责管理窗口的创建、显示、位置和大小等。通常用于创建浮动窗口、自定义窗口布局或管理系统的顶级窗口。

2024-08-23 21:04:22 482

原创 transient关键字的作用

在Java中,transient关键字用于标记对象中的某个字段,使其在序列化时不被持久化到输出流中。当对象被反序列化时,被transient修饰的字段将不会被恢复其原始值,而是会被设置为该类型的默认值(例如,对于引用类型,默认值为null。

2024-08-22 09:43:35 208

原创 Data binding和View binding

Data Binding 和 View Binding 是 Android 开发中两种用于简化界面(UI)与数据之间交互的技术。它们各自有其独特的用途和优势。

2024-08-14 21:18:20 337

原创 ViewStub的原理

轻量级与不可见:ViewStub是一个不可见的、不占布局位置的轻量级View,它在初始化时不会实例化其中的View,也不占用实际的布局空间,因此CPU和内存资源占用极少。延迟加载:ViewStub提供了一种简单的方式来延迟加载布局,只有在需要时才会实例化视图,从而减少了内存占用和CPU操作。

2024-08-12 21:33:56 946

原创 Fragment的生命周期

例如,如果Fragment从未对用户可见(例如,在Activity的onCreate()方法中直接将其移除),则可能永远不会调用onStart()和onResume()方法。同样,如果Fragment被添加到回退栈中,并在用户离开Activity后仍然保留,则可能会调用onPause()、onStop()和onDestroyView(),但不会调用onDestroy()和onDetach(),直到用户从回退栈中移除Fragment或Activity被销毁。

2024-08-09 20:55:53 270

原创 android文件存储

Android文件存储管理主要涉及到内部存储和外部存储两部分,每种存储方式都有其特定的用途和管理方法。

2024-08-09 11:34:04 456

原创 内存泄漏场景总结

等)持有了对 Activity、Fragment 或其他 Context 的引用,并且这些组件被销毁后,静态集合类中的引用没有被清除,那么就会导致内存泄漏。因为线程或定时器的生命周期可能超出组件的生命周期。如果非静态内部类被用作长时间运行的操作(如异步任务、后台服务等)的一部分,并且这些操作在外部类(如 Activity、Fragment)被销毁后仍然继续执行,那么就会导致外部类的内存泄漏。或其他适当的生命周期方法中未移除这些监听器,那么当组件被销毁时,这些监听器仍然持有对组件的引用,从而导致内存泄漏。

2024-08-08 15:49:54 450

原创 AsyncTask

AsyncTask 是 Android 提供的一个轻量级的异步任务类,它允许在后台线程中执行耗时操作(如网络请求、数据库操作等),并在操作完成后更新 UI。其设计初衷是为了简化后台任务的处理,特别是在不需要复杂并发控制的情况下。AsyncTask 提供了简单的 API 来执行后台任务,并在任务完成后更新 UI。它使用线程池来管理后台线程,减少了开发者对线程管理的复杂性。

2024-08-08 15:31:07 938

原创 一个Prompt掌握所有机器学习算法(一)

引言:大模型训练的数据集几乎涵盖了市面上所有的公开资源,所以如果我们要学习的知识理论属于通用知识,在网络上的公开资源中都可以找得到,那么通过设计恰当的Prompt,就可以让大模型来帮助生成我们想要的内容

2024-08-05 09:34:30 759

原创 Learning to summarize from human feedback

因此,作者提出了一种基于人类反馈的强化学习方法,通过收集大量人类对比数据来训练一个奖励模型,该模型能够预测人类偏好的摘要,并作为奖励函数来微调摘要策略。实验结果表明,通过人类反馈训练的模型在多个数据集上均表现出色,显著优于仅通过监督学习训练的模型。关键思路在于,通过直接优化人类偏好的奖励模型,可以生成更符合人类期望的摘要,从而克服传统方法的局限性。论文最后指出,尽管目前的研究集中在文本摘要任务上,但所提出的方法对于解决AI系统与人类期望之间的不对齐问题具有更广泛的意义。

2024-07-31 20:17:07 410

原创 移动互联网时代优秀的产品设计方案/运行推广方案

这些方案之所以成功,是因为它们不仅创新地解决了用户需求,而且通过智能化、社交化、游戏化等策略,增强了用户体验和参与感,有效地促进了用户增长和平台的商业价值。:所有成功的产品和策略都根植于对用户深层次需求的洞察。:这些方案往往通过独特的创新点区别于市场上的其他产品,无论是技术上的突破、商业模式的创新,还是用户体验的新颖设计,都能为用户提供前所未有的价值或体验。:不少成功案例通过创新的商业模式,如共享经济、订阅服务、游戏化设计等,打破了传统行业的局限,开辟了新的盈利渠道,同时为用户带来了成本效益和便利。

2024-07-24 10:21:51 953

原创 产品功能点分析

产品的功能点分析是一种用于理解和定义产品特定功能特性的过程。通过功能点分析,产品团队可以明确每个功能点的具体需求、目的、用户角色和交互方式。这不仅有助于提高产品的使用效率,还能确保在开发过程中每个功能都能实现预期的目标,满足用户需求。

2024-07-24 09:15:58 662

原创 系统理解RAG (Retrieval-Augmented Generation)原理

传统的大语言模型在处理某些任务时,如开放域问答,可能会生成不准确或不相关的内容。这是因为模型依赖于内部训练的知识,而这些知识是有限的且无法动态实时更新,尤其是在面对复杂或特定领域的问题时,模型生成的回复存在“幻觉”问题。

2024-07-21 19:01:34 604

原创 Python 项目环境隔离

Conda能够为不同的Python项目提供隔离的环境,主要是通过创建独立的目录来存储特定版本的Python和相关的包。Java项目的依赖通常通过构建工具(如Maven或Gradle)以库的形式管理,这些库在编译时被包含在项目的构建路径中,并在运行时被加载到JVM中。之所以给人感觉Java有更好的依赖管理,可能是因为Java的构建工具更加成熟和标准化,它们在企业级开发中得到了广泛的应用,而Python的依赖管理工具可能因为工具之间的竞争和多样性而显得不那么统一。的1.18版本,而项目B依赖于。

2024-07-18 14:32:36 698

原创 算法、算力和数据——人工智能产品的三大关键要素

引言:人工智能产品的成功依赖于多个关键要素,其中算法、算力和数据被认为是三大支柱。以下从定义、作用和重要性三个层面阐释算法、算力和数据

2024-07-18 11:04:30 578

原创 Prompt is all you need

从一个产品面试题(如何为宝妈设计一款相册工具app?)的 Prompt 实践出发,一起来思考为什么 Prompt 的设计很重要

2024-07-18 10:59:58 340

原创 Prompting 的三种范式

Prompting出现的三个主要范式分别为上下文学习ICL,指令精调Instruction-tuning和思维链CoT

2024-07-18 10:54:16 381

原创 RAM 和 VRAM

VRAM是Video RAM(视频随机存取存储器)的缩写,它是一种专门用于图形处理的存储器,用于临时存储和快速访问由图形处理单元(GPU)处理的数据。VRAM允许GPU快速读取和处理图像数据,这对于渲染高分辨率视频和复杂的3D图形尤为重要。与系统内存(RAM)相比,VRAM通常更快,并且设计为同时被处理器和显示器访问。在现代计算机系统中,VRAM通常集成在显卡上,与GPU紧密集成,以确保高效的图形处理能力。

2024-06-28 10:02:23 1782

原创 yaml 类型文件

它是一种易于阅读的用来表达数据序列的方式,特点是使用空白字符和缩进来表示结构,而不是使用括号或标签。YAML(Yet Another Markup Language)和JSON(JavaScript Object Notation)都是用于数据序列化的格式,它们都可以用来存储和传输数据,但是它们在语法和用途上有所不同。YAML和JSON都是重要的数据格式,它们各有优势,选择使用哪一种通常取决于具体的应用场景和个人偏好。键的值是一个数组,包含了两个对象,每个对象又有自己的。是键,分别对应着不同的值。

2024-06-21 09:35:34 488

原创 ChatGPT生成的大模型竞品分析报告

本报告旨在分析国内外主要的AI大模型产品,包括其功能、市场定位、技术优势和劣势。通过对比这些竞品,我们可以更好地了解市场格局,制定自身产品的战略。百度 - 文心一言(Ernie Bot)阿里巴巴 - M6腾讯 - HunYuan华为 - PanGu通过SWOT分析和五力模型分析,可以看出每个产品都有其独特的优势和面临的挑战。发挥技术优势:在中文处理和多模态支持上进一步提升,以迎合国内市场需求。国际化拓展:加强英文处理能力和国际市场推广,扩大市场份额。技术创新。

2024-06-06 11:57:28 954

原创 SSH协议

SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录和其他安全网络服务。在GitHub中,您可以使用SSH密钥来验证您的身份,从而安全地访问仓库。

2024-06-05 21:07:37 311

原创 LiveData

活跃性检查:LiveData通过内部机制检查观察者的生命周期状态,只有在生命周期处于STARTED或RESUMED状态时,才会认为观察者是活跃的,并向其发送数据更新。在主线程上更新UI:LiveData确保观察者的回调始终在主线程上执行,这样可以安全地更新UI。线程安全:LiveData内部使用锁和线程安全的数据结构来确保跨线程的数据更新是安全的。数据持久性:配置更改(如设备旋转)后,观察者会立即收到最新的数据,确保UI的一致性。观察者模式:LiveData遵循观察者模式,允许多个观察者订阅数据变化。

2024-05-31 11:50:41 382

原创 android动画

定义: View动画包括缩放、平移、旋转和透明度动画,它主要是对View进行操作,也就是所谓的补间动画(Tween Animation)。定义: 属性动画系统允许你动画化任何对象的属性。这意味着这个动画系统不仅可以用于视图对象,还可以用于不绘制到屏幕上的对象。属性动画提供了更多的灵活性和功能,但是如果只需要实现简单的View动画效果,View动画仍然是一个简单且有效的选择。动画只能应用于View的四种变换:平移、缩放、旋转、透明度。能够实现更复杂的动画效果,如:路径动画。可以对任意对象的属性进行动画操作。

2024-05-31 11:48:04 373

原创 android存储机制

内存缓存适合临时存储快速访问的数据,SharedPreferences适合存储配置信息,缓存文件适合存储较大的数据文件,数据库存储适合存储结构化数据,而外部存储适合存储大型文件和共享文件。容量大小:内存缓存 < SharedPreferences存储 < 缓存文件 < 内部存储 < 外部存储(通常情况下,具体取决于设备配置)安全性:外部存储 < 缓存文件 < SharedPreferences存储 ≈ 数据库存储 < 内部存储。定义:内部存储是设备上的一个私有区域,每个应用都有自己的存储目录,通常位于。

2024-05-31 11:46:26 272

原创 git reset

会重写远程仓库的历史,这可能会对其他协作者造成问题。在使用前确保这是你想要的操作,并通知团队成员。

2024-05-29 17:06:12 193

原创 git merge/rebase

都是用于合并分支的工具,但它们的合并策略和对历史记录的影响是不同的。如果你在一个分支上工作,而主分支上有其他人提交了更新,你可能需要将这些更新合并到你的工作分支上,以保持分支同步。可以在将分支合并到主分支之前,确保分支是基于最新的主分支提交。Rebase 会将你分支上的提交重新应用到另一分支的顶端,就好像是从那里开始开发的一样。例如,当你完成了一个特性分支上的工作,并且想要将这些改动合并回主分支(如。在合并分支时,如果两个分支对同一文件的同一部分做了不同的修改,就会发生冲突。在一些团队的工作流程中,使用。

2024-05-29 16:53:54 274

原创 Markdown使用教程

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S

2024-05-29 16:37:45 897

原创 Git 常用指令和原理

git checkout是一个 Git 命令,用于切换分支(branch),或检出(checkout)某个分支、标签或提交(commit)。命令需要注意,如果在切换分支时有未提交的更改内容,Git会提示你保存或取消更改。如果对文件夹中的文件有更新,比如新建了一个index.html,此时执行git status:可以显示本地仓库状态。命令可以帮助我们在不同的分支之间进行快速切换,同时也可以查看或回滚到某个特定的提交。将创建一个名为 feature-1 的新分支,并立即切换到该分支。

2024-05-29 16:15:17 745

原创 关于产品设计

产品跳转链路设计的核心在于平衡用户体验与功能需求,既要保持流程简洁,又要确保用户能够高效完成目标。好的交互设计应当是直观、一致、响应迅速且符合用户预期的,旨在创造流畅、愉悦的使用体验。

2024-05-27 17:16:48 256

原创 关于大模型算力的费用

算力产生费用的原因不仅仅是因为硬件损耗,尽管这是其中一个因素。更主要的是运行这些高性能计算设备(如GPU服务器)所需的电力消耗、冷却系统维持适宜温度的开销、以及硬件本身的购置成本。当提及“硬件”时,这里不仅包括GPU服务器本身,还可能涵盖存储设备(如高速SSD或HDD)、网络设备(如交换机、路由器保证数据高效传输)、以及其他辅助设备(如不间断电源UPS确保电力供应稳定)。GPU服务器是核心,它内部包含多个图形处理器单元(GPU),特别适合于并行计算,是运行大型语言模型等计算密集型任务的关键组件。

2024-05-27 17:11:36 321

原创 路由器wifi密码设置

修改路由器WiFi密码

2023-05-30 23:48:02 918 1

原创 Android程序启动的常见代码

inflater.inflate(R.layout.left_fragment, container, false)方法用于在Activity中加载一个布局文件,将其转化为一个View对象,并将这个View对象添加到指定的容器中,返回这个View对象。参数R.layout.left_fragment表示加载的布局文件,container表示将其添加到的容器,false表示是否将其添加到container中,这里表示不添加,返回的是该View对象。

2023-05-12 16:48:27 509

原创 Mac使用技巧

Mac 常用快捷键关闭/退出应用:cmd + q锁屏:ctrl + cmd + q强制退出应用:cmd + option + esc,软件无响应时使用快速切换应用:cmd + tab全屏截图/区域截图:cmd + shift + 3 / 4单/双/三指滑动控制面板:移动光标/上下滚动/切换窗口(全屏时)删除文件/一行内容:cmd + 退格键删除光标的后一个字符:fn + 退格键进入/退出应用全屏快捷键:ctrl + cmd + f最前面的窗口最小化至程序坞:cmd + m隐藏最前面a

2023-04-28 19:12:09 162

空空如也

空空如也

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

TA关注的人

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