android性能优化

C语言switch case语句详解与性能优化 在编程中,多路分支是常见的控制结构需求。传统if-else语句在处理大量离散条件时存在可读性和效率问题。switch case作为结构化编程的重要特性,通过跳转表机制实现高效分支,特别适合处理整型值的多路判断。其核心原理是将表达式值与case常量匹配,直接跳转到对应代码块,避免了if-else的逐级判断。在嵌入式系统和性能敏感场景中,switch case通常比等效if-else快20%-30%。典型应用包括状态机实现、命令解析和菜单处理等。理解case穿透特性和break语句的正确使用是掌握该语法的关键, 阅读详情

性能优化的概念

响应时间

响应时间: 从用户操作开始到系统给用户以正确反馈的时间。

一般包括逻辑处理时间 + 网络传输时间 + 展现时间。
对于非网络类应用不包括网络传输时间。
展现时间即网页或App界面渲染时间。
响应时间是用户对性能最直接的感受。

TPS(Transaction Per Second)

TPS为每秒处理的事务数,是系统吞吐量的指标,在搜索系统中也用QPS(Query Per Second)衡量。TPS一般与响应时间反相关。

通常所说的性能问题就是指响应时间过长、系统吞吐量过低。
对后台开发来说,也常将高并发下内存泄漏归为性能问题。
对移动开发来说,性能问题还包括电量、内存使用这些较特殊情况。

性能优化方式

可以从以下方面进行优化

降低执行时间
  • 利用多线程并发或分布式提高TPS
  • 缓存(包括对象缓存、IO 缓存、网络缓存等)
  • 数据结构和算法优化
  • 使用性能更优的底层接口调用,如 JNI 实现
  • 逻辑优化
  • 需求优化
同步改异步:利用多线程提高TPS
提前或延迟操作:错峰提高TPS

Android内存泄露

两个概念:
1.内存泄漏(Memory Leak)也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。即所谓内存泄漏。 内存泄露累计到一定程度就会出现内存溢出。

2.内存溢出out of memory(OOM),是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。

Android中应用内存

Android会为每个应用程序分配一个单独的LINUX用户。Android会尽量保留一个正在运行进程,只在内存资源出现不足时,Android会尝试停止一些进程从而释放足够的资源给其他新的进程使用, 也能保证用户正在访问的当前进程有足够的资源去及时地响应用户的事件。Android会根据进程中运行的组件类别以及组件的状态来判断该进程的重要性,Android会首先停止那些不重要的进程。按照重要性从高到低一共有五个级别就是我们常说的:前台进程、可见进程、服务进程、后台进程、空进程。

Android设备出厂以后,java虚拟机对单个应用的最大内存分配就确定下来了,超出这个值就会OOM。这个属性值是定义在/system/build.prop文件中的
dalvik.vm.heapstartsize=8m,它表示堆分配的初始大小,它会影响到整个系统对RAM的使用程度,和第一次使用应用时的流畅程度。它值越小,系统ram消耗越慢,但一些较大应用一开始不够用,需要调用gc和堆调整策略,导致应用反应较慢。它值越大,这个值越大系统ram消耗越快,但是应用更流畅。

dalvik.vm.heapgrowthlimit=64m // 单个应用可用最大内存
主要对应的是这个值,它表示单个进程内存被限定在64m,即程序运行过程中实际只能使用64m内存,超出就会报OOM。(仅仅针对dalvik堆,不包括native堆)

dalvik.vm.heapsize=384m//heapsize参数表示单个进程可用的最大内存,但如果存在heapgrowthlimit参数,则以heapgrowthlimit为准.
heapsize表示不受控情况下的极限堆,表示单个虚拟机或单个进程可用的最大内存。而android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机(这样设计就会在单个程序崩溃的情况下不会导致整个系统的崩溃)。
注意: 在设置了heapgrowthlimit的情况下,单个进程可用最大内存为heapgrowthlimit值。
在android开发中,如果要使用大堆,需要在manifest中指定android:largeHeap为true,这样dvm heap最大可达heapsize。

不同设备,这些个值可以不一样。一般地,厂家针对设备的配置情况都会适当的修改/system/build.prop文件来调高这个值。
随着设备硬件性能的不断提升,这个值越来越大。现在手机基本128m,256m了,但都遵循Android框架对每个应用的最小内存大小限制,想了解更多可参考官网Compatibility

通过代码查看每个进程可用的最大内存,即heapgrowthlimit值:

ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
int memClass = activityManager.getMemoryClass();//64,以m为单位
内存泄露分析

Android应用内存泄漏的的原因可能有有以下几个:

  • 查询数据库后没有关闭游标cursor 
  • 构造Adapter时,没有使用convertView重用
  • Bitmap对象不在使用时调用recycle()释放内存
  • 对象被生命周期长的对象引用,如activity被静态集合引用导致activity不能释放 

频繁的使用static关键字修饰
static声明变量的生命周期其实是和APP的生命周期一样的(进程级别)。大量的使用的话,就会占据内存空间不释放,积少成多也会造成内存的不断开销,直至挂掉。static的合理使用一般用来修饰基本数据类型或者轻量级对象,尽量避免修饰集合或者大对象,常用作修饰全局配置项、工具类方法、内部类。


Bitmap使用不当
Bitmap的不当处理极可能造成OOM,绝大多数情况应用程序OOM都是因这个原因出现的。Bitamp位图是Android中当之无愧的胖子,所以在操作的时候必须小心。
解决方案:

  • 及时释放recycle
    虽然,系统能够确认Bitmap分配的内存最终会被销毁,但是由于它占用的内存过多,所以很可能会超过Java堆的限制。因此,在用完Bitmap时,要及时的recycle掉。recycle并不能确定立即就会将Bitmap释放掉,但是会给虚拟机一个暗示:“该图片可以释放了”。
  • 设置二次采样
    需求允许的话,应该去对BItmap进行一定的缩放,通过BitmapFactory.Options的inSampleSize属性进行控制。如果仅仅只想获得Bitmap的属性,其实并不需要根据BItmap的像素去分配内存,只需在解析读取Bitmap的时候使用BitmapFactory.Options的inJustDecodeBounds属性。
  • 软引用或者弱引用并进行本地缓存
    SoftReference<Bitmap>  bitmap_ref  = new SoftReference<Bitmap>(BitmapFactory.decodeStream(inputstream)); 
    if (bitmap_ref .get() != null)
            bitmap_ref.get().recycle();
  • 使用图片缓存
    █Bitmap缓存分为两种:
    一种是内存缓存,一种是硬盘缓存。
    █内存缓存(LruCache):以牺牲宝贵的应用内存为代价,内存缓存提供了快速的Bitmap访问方式。系统提供的LruCache类是非常适合用作缓存Bitmap任务的,它将最近被引用到的对象存储在一个强引用的LinkedHashMap中,并且在缓存超过了指定大小之后将最近不常使用的对象释放掉。
    █注意: 以前有一个非常流行的内存缓存实现是SoftReference(软引用)或者WeakReference(弱引用)的Bitmap缓存方案,然而现在已经不推荐使用了。自Android2.3版本(API Level 9)开始,垃圾回收器更着重于对软/弱引用的回收,这使得上述的方案相当无效。
    █硬盘缓存(DiskLruCache):一个内存缓存对加速访问最近浏览过的Bitmap非常有帮助,但是你不能局限于内存中的可用图片。GridView这样有着更大的数据集的组件可以很轻易消耗掉内存缓存。你的应用有可能在执行其他任务(如打电话)的时候被打断,并且在后台的任务有可能被杀死或者缓存被释放。一旦用户重新聚焦(resume)到你的应用,你得再次处理每一张图片。
    在这种情况下,硬盘缓存可以用来存储Bitmap并在图片被内存缓存释放后减小图片加载的时间(次数)。当然,从硬盘加载图片比内存要慢,并且应该在后台线程进行,因为硬盘读取的时间是不可预知的。

广播接收器、注册观察者未取消注册
注册广播接收器、注册观察者等等,比如:
假设我们希望在锁屏界面(LockScreen)中,监听系统中的电话服务以获取一些信息(如信号强度等),则可以在LockScreen中定义一个PhoneStateListener的对象,同时将它注册到TelephonyManager服务中。对于LockScreen对象,当需要显示锁屏界面的时候就会创建一个LockScreen对象,而当锁屏界面消失的时候LockScreen对象就会被释放掉。
  但是如果在释放LockScreen对象的时候忘记取消我们之前注册的PhoneStateListener对象,则会导致LockScreen无法被GC回收。如果不断的使锁屏界面显示和消失,则最终会由于大量的LockScreen对象没有办法被回收而引起OutOfMemory,使得system_process进程挂掉。
虽然有些系统程序,它本身好像是可以自动取消注册的(当然不及时),但是我们还是应该在我们的程序中明确的取消注册,程序结束时应该把所有的注册都取消掉。


集合中对象没清理造成的内存泄露
我们通常把一些对象的引用加入到了集合中,当我们不需要该对象时,如果没有把它的引用从集合中清理掉,这样这个集合就会越来越大。如果这个集合是static的话,那情况就更严重了。


资源对象没关闭造成的内存泄露
资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存。它们的缓冲不仅存在于Java虚拟机内,还存在于Java虚拟机外。如果我们仅仅是把它的引用设置为null,而不关闭它们,往往会造成内存泄露。因为有些资源性对象,比如SQLiteCursor(在析构函数finalize(),如果我们没有关闭它,它自己会调close()关闭),如果我们没有关闭它,系统在回收它时也会关闭它,但是这样的效率太低了。因此对于资源性对象在不使用的时候,应该立即调用它的close()函数,将其关闭掉,然后再置为null.在我们的程序退出时一定要确保我们的资源性对象已经关闭。

程序中经常会进行查询数据库的操作,但是经常会有使用完毕Cursor后没有关闭的情况。如果我们的查询结果集比较小,对内存的消耗不容易被发现,只有在长时间大量操作的情况下才会复现内存问题,这样就会给以后的测试和问题排查带来困难和风险。


构造Adapter时,没有使用缓存的 convertView
以构造ListView的BaseAdapter为例,在BaseAdapter中提共了方法:

public View getView(intposition, View convertView, ViewGroup parent)

来向ListView提供每一个item所需要的view对象。初始时ListView会从BaseAdapter中根据当前的屏幕布局实例化一定数量的view对象,同时ListView会将这些view对象缓存起来。当向上滚动ListView时,原先位于最上面的list item的view对象会被回收,然后被用来构造新出现的最下面的list item。这个构造过程就是由getView()方法完成的,getView()的第二个形参 View convertView就是被缓存起来的list item的view对象(初始化时缓存中没有view对象则convertView是null)。

  由此可以看出,如果我们不去使用convertView,而是每次都在getView()中重新实例化一个View对象的话,即浪费时间,也造成内存垃圾,给垃圾回收增加压力,如果垃圾回收来不及的话,虚拟机将不得不给该应用进程分配更多的内存,造成不必要的内存开支。

Python实战:解析B站DASH流媒体协议,构建高效视频下载工具 在Python网络编程与数据抓取领域,requests库和正则表达式是处理HTTP请求与文本解析的基础工具。其原理在于模拟浏览器行为,通过发送携带特定请求头的HTTP请求,获取目标网页的HTML或JSON数据,再利用正则表达式或解析库提取关键信息。这项技术的核心价值在于能够自动化获取和处理网络公开数据,极大地提升了数据采集与处理的效率。在众多应用场景中,流媒体视频内容的分析与下载是一个典型实践,它涉及对现代视频网站普遍采用的DASH(Dynamic Adaptive Streaming over HTTP) 阅读详情

相关推荐

ABAP Open SQL SELECT语句深度解析:从基础语法到性能优化实战

在SAP ABAP开发中,数据查询是核心操作,掌握SELECT语句的正确使用至关重要。其基本语法遵循SELECT...FROM...INTO...WHERE...的结构,这构成了数据检索的完整链路。理解这一原理有助于实现高效、稳定的数据交互,是构建报表和业务流程的技术基石。在实际应用场景中,开发者常会遇到查询性能瓶颈和数据一致性问题,例如不当使用SELECT *可能导致程序错误,而低效的WHERE条件则容易引发全表扫描。本文聚焦于ABAP Open SQL的**核心语法拆解**与**性能调优**,通过解析常

anheku1562的博客 576

Qwen3-30B-A3B参数与FLOPs深度拆解:MoE稀疏性如何决定本地部署成败

稀疏混合专家(MoE)是大语言模型实现高效扩展的核心范式,其本质在于通过动态路由机制,使每个token仅激活少量专家,大幅降低实际计算量与显存占用。理解MoE的参数分布原理、活跃FLOPs计算逻辑及路由控制机制,是突破本地部署瓶颈的关键——尤其在显存受限设备上,标称30B参数的模型实际仅需约19GB活跃权重,而推理延迟更直接受限于每token的116G+ FLOPs与显存带宽匹配度。本文聚焦Qwen3-30B-A3B这一典型MoE实例,结合config.json配置解析、前向传播实测与llamacpp/Co

chiman6219的博客 479

视觉特征-自监督-掩码特征预测【2025-06】:V-JEPA-2附录【样本帧数=16;FPS=4;空间掩码比例=[0.15, 0.7];时间掩码比例=[1.0, 1.0];管状片段大小=2】

图14 展示了在实验室1中,使用杯子进行抓取操作任务的起始和目标框架示例。对于抓取和带物体到达任务,模型仅看到一个目标图像。对于拾取-放置任务,除了最终目标外,我们还向模型展示两个子目标图像。第一个目标图像显示物体被抓取,第二个目标图像显示物体在目标位置附近。模型首先针对第一个子目标优化动作4个时间步,然后自动切换到第二个子目标进行接下来的10个时间步,最后针对第三个目标进行最后4个时间步。

u013250861的博客 169

Tableau逻辑函数实战:IF与CASE的选型、避坑与工程化规范

逻辑函数是BI工具实现业务语义转换的核心能力,其本质是将原始数据按确定性规则映射为可解释的业务标签。在Tableau中,IF语句作为条件链执行器,适用于含优先级、布尔运算和动态判断的场景;CASE则作为值匹配引擎,专精于静态枚举、状态码映射与高性能分类。二者共同构成数据清洗前置闸门、业务规则执行单元和可视化交互触发开关。掌握NULL安全处理、大小写与空格鲁棒性、聚合上下文隔离等关键技术细节,可显著提升仪表板稳定性与计算性能。本文聚焦真实企业级项目中的IF嵌套重构、多源状态统一治理、动态KPI阈值系统等典型应

weixin_34037515的博客 319

Python循环与判断基础及实战应用

循环与判断是编程中的核心控制结构,用于实现代码的重复执行和条件分支。Python提供了for和while两种循环结构,以及if-elif-else判断语句,通过组合这些基础结构可以解决大多数编程问题。在实际开发中,循环与判断常用于数据处理、用户输入验证、游戏逻辑等场景。掌握循环控制语句(break/continue)和循环优化技巧能显著提升代码效率。Python特有的列表推导式和生成器表达式为循环操作提供了更简洁高效的实现方式,而合理使用异常处理则能增强循环代码的健壮性。

weixin_34122604的博客 421

蓝牙文件传输之obex层之上的分析【Android源码解析】

在上节中我们仔细分析了蓝牙文件传输过程中涉及到的UI界面,最终定格在蓝牙设备扫描的界面,我们只要选择自己想要传输的蓝牙设备就可以进行蓝牙文件的传输了。那就是这样一个简单的设备选择的点击会引发哪些连锁的操作呢?本节就来详细进行分析。 1.1. 设备点击的action和响应        我们先来回顾一下,最后蓝牙设备的扫描界面是在DevicePickerF

更多原创参见个人小站:http://www.donggeitnote.com/ 6246

Android开发——BroadcastReceiver知识总结

0. 前言BroadcastReceiver作为Android四大组件之一,像一个全局的监听器一样,是用来监听系统或者应用发出的广播信息,再在其onReceive()中执行相应的逻辑处理。如可以监听系统的开机广播、电量较少的广播,也可以用来实现自己应用中不同组件之间的通信,如数据库中CURD后发送一个广播,并传递少量的数据,使某个Service中的变量发生改变。当然如果数据的发送量比较大就不建议...

关于Android开发的一些技术点总结 ╮( ̄▽ ̄”)╭ 1602

CUDA异步执行下的`index out of bounds`:如何利用`CUDA_LAUNCH_BLOCKING=1`精准定位PyTorch张量索引错误

本文探讨了在PyTorch中使用CUDA异步执行时遇到的`index out of bounds`错误,并介绍了如何利用`CUDA_LAUNCH_BLOCKING=1`环境变量精准定位错误。通过实际案例和解决方案,帮助开发者有效调试GPU计算中的索引问题,提升开发效率。

weixin_30572613的博客 321

Android 动态广播与静态广播

学而时习,稳固而之心 目前推荐使用动态广播,现在已经很就没有使用过静态广播了. 动态广播与静态广播的联系 1 动态广播的速度要快于静态广播 2 静态广播的生存期可以比动态广播的长很多 在Manifest里面注册的系统广播接收器会被缓存在系统中,即使当App关闭之后,如果有相应的广播发出,应用程序仍然会被唤醒 这也是从8.0以后谷歌显示部分静态广播,推荐使用动态广播 3 动态广播在...

小牧在一直在学习,在前进的道路上大家一起学习,进步。 1181

解密CUDA Warp调度:从Stalled到Selected的5种阻塞场景全解析(含避坑指南)

本文深入解析CUDA Warp调度中的5种典型阻塞场景,包括指令获取延迟、内存依赖阻塞、执行依赖阻塞、同步阻塞和流水线繁忙,并提供Nsight Compute诊断工具的使用技巧和优化策略。通过实战案例和避坑指南,帮助开发者提升GPU核函数性能,有效减少warp调度中的stall现象。

weixin_30555125的博客 400

JS与业务流程相关代码(笔记整理)

个人学习资料,网上整理的笔记

m0_70735467的博客 464

android广播时间延迟,Android简单的广播时间处理 Broadcast Receiver

BroadcastReceiver顾名思义是指广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮单击事件),而广播事件处理机制是系统级别的。我们可是使用Intent来启动一个程序组件,还可以实用sendBroadcast()犯非法来发起一个系统级别的时间广播来传递消息。我们可以在应用程序中实现BroadcastReceiver 来监听和响应这些广播的Intent....

weixin_39941847的博客 1361

STM32驱动FM24CL64B FRAM:I2C接口高耐久存储实战指南

在嵌入式系统中,非易失性存储是保存关键参数与运行数据的核心技术。传统EEPROM基于电荷存储原理,存在写入速度慢、擦写寿命有限的瓶颈。FRAM(铁电存储器)利用铁电晶体的极化方向存储数据,实现了近乎无限的读写耐久性与纳秒级写入速度,其技术价值在于为高频率、高可靠性的数据记录场景提供了理想的硬件基础。本文聚焦于FRAM的典型代表FM24CL64B-GTR,详细剖析其通过I2C接口与STM32微控制器的驱动设计、调试方法及工程实践,特别针对工业数据采集等需要高速、高耐久存储的应用场景,提供了从原理到代码的完整解

weixin_33796177的博客 457

Android第4讲:广播

Android 广播

weixin_47323733的博客 2122

【Python&RS】Rasterio库安装+基础函数使用教程

Rasterio是一个Python库,专门用于栅格数据的读写操作。它支持多种栅格数据格式,如GeoTIFF、ENVI和HDF5,为处理和分析栅格数据提供了强大的工具。RasterIO适用于各种栅格数据应用,如卫星遥感、地图制作等。这篇文章跟大家介绍一下Rasterio库的安装以及一些基本函数的使用教程,附带源码。

Remote Sensing迷途小书童 1万+

PHP+MYSQL宠物主题动态网页设计源码+数据库,大学生期末大作业,PHP课程设计

PHP+MYSQL宠物主题动态网页设计源码+数据库,大学生期末大作业,PHP课程设计提示:本文采用PHP对数据库进行操作:本文就介绍了PHP实现对MySQL数据库的增删改查操作基础内容。

901

Android BroadCastReceiver突然失效接收不到广播了

今天遇到了一个很奇怪的问题,之前做的一个功能通过广播接收器通知更新父fragment 中的ui,一直都是正常的,后来突然发现在三星和小米手机上没有反应了,但华为手机正常,很奇怪,相同的代码,后来看log发现在小米手机上面广播可以发出,但接收器收不到,后来发现是因为静态注册的原因,改成动态注册就可以了所有机型,很奇怪的问题(其实之前是动态注册的,但后来总是偶尔报错提示我在fragment销毁的生命周...

迎风致万里的博客 7821

ESD镜像解密与转换全攻略:从esd-decrypter到WinNTSetup的完整流程

本文详细解析了ESD镜像的加密特性与压缩优势,并提供了从解密到转换的完整实战指南。核心步骤包括使用esd-decrypter工具解密ESD文件为WIM格式,以及如何结合WinNTSetup进行灵活的系统安装或进一步封装为可引导的ISO镜像,帮助用户高效处理官方Windows安装镜像。

weixin_29207439的博客 452

树莓派4B驱动OLED显示屏完整教程

OLED显示屏作为低功耗、高对比度的显示设备,在嵌入式系统和物联网项目中广泛应用。其工作原理是通过有机发光二极管实现自发光显示,无需背光模块。在技术实现上,SPI和I2C是两种常见的通信协议,其中SPI接口具有更高的刷新率优势。树莓派作为流行的单板计算机,与OLED结合可构建智能家居控制面板、工业监控终端等多种应用场景。本教程详细解析了Raspberry Pi 4B与0.96寸OLED的硬件连接方法,并基于Python的luma.oled库实现文本、图形及系统信息显示功能,特别适合嵌入式开发初学者快速上手。

weixin_30791095的博客 386

利用Python实现纬度加权平均(即NCL中的wgt_areaave)

当处理全球数据的时候,最常见的分析就是全球、北半球平均了,这时候一定要注意要根据纬度等信息进行加权,求加权平均,要不然结果肯定会不准。但是对于Python中,常规的计算包里面是没有的,或许现在有其他包可以实现,也可以告诉我~。

记录基于python语言处理气象问题的一些代码,包括不限于气象数据读取、机器学习和深度学习建模。 5745

手把手教你用FPGA实现SerDes高速接口设计(附避坑指南)

本文是一份详尽的FPGA SerDes高速接口设计实战指南。文章深入剖析了SerDes硬核(如GTX/GTH)的时钟管理、发送端均衡、接收端CDR与均衡等核心模块,并提供了Verilog代码示例。重点分享了信号完整性分析、眼图调试与误码率测试等实战经验,附有自定义高速视频流接口的完整实现案例与避坑指南,帮助工程师从“会用”到“懂”且能独立驾驭高速接口设计。

ik678901234的博客 1146

B站直播M3U8流下载避坑指南:Python脚本失效了怎么办?

本文详细解析了B站直播M3U8流下载过程中Python脚本失效的常见问题及解决方案。通过逆向工程分析接口变更、参数加密和M3U8结构变化,提供系统化的调试方法和代码示例,帮助开发者快速恢复下载功能并应对平台防护机制。

weixin_30254435的博客 349

RedVQA:轻量级无参考视频质量评估算法原理与工程实践

视频质量评估是计算机视觉领域的关键技术,旨在通过算法自动量化视频的观看体验。其核心原理在于模拟人眼视觉系统,从像素数据中提取并融合空域和时域特征,以预测主观质量分数。这项技术的价值在于,它能自动化处理海量视频内容的质量监控,为流媒体服务、移动设备影像优化等场景提供关键指标。无参考视频质量评估作为该领域的前沿方向,无需原始无损视频作为参考,更贴合实际应用。本文以RedVQA项目为例,深入剖析了如何利用轻量化的深度网络架构,如MobileNetV3,结合高效的时空特征融合模块,在保证评估精度的同时,大幅降低计算

weixin_28698129的博客 576

DBRX MoE架构实战:36B活跃参数的高效推理与QLoRA微调

混合专家(MoE)模型是解决大语言模型‘规模-效率悖论’的核心范式,其通过动态路由机制实现稀疏激活,在保障能力的同时显著降低显存占用与推理延迟。DBRX作为典型MoE架构代表,以16专家4路路由、36B活跃参数和NTK-aware RoPE等关键技术,实现了32K上下文下的高吞吐低延迟推理。相比稠密模型,它在A100上显存减少67%、首token延迟下降52%,并支持GPTQ量化与QLoRA轻量微调,使开源模型真正具备生产级落地能力。本文聚焦本地集群环境下的DBRX部署、优化与定制化实践。

weixin_33726313的博客 343

使用 Python 构建 Reddit 热帖爬虫:抓取热门讨论帖和评论

在现代互联网中,Reddit 被誉为全球最大、最活跃的讨论平台之一,汇聚了各种主题的帖子、评论和社交互动。因此,抓取 Reddit 上的热门帖子和评论可以为我们提供一个丰富的文本数据源,可以用于情感分析、话题建模、趋势分析等应用。Reddit 提供了官方的 API,可以让开发者获取包括帖子、评论、用户信息等在内的各种数据。我们可以结合上述方法,抓取多个热门帖子,并将每个帖子的标题、作者、发布时间和评论内容保存到一个数据结构中。每个帖子的对象包含了丰富的信息,如标题、内容、发布时间、作者等。

2201_76125261的博客 382

YOLO26改进策略【YOLO和Mamba】| 2024 VM-UNet,高效的特征提取模块VSS block 二次创新提高精度

VM-UNet模型设计的出发点是解决现有CNN-based和模型在医学图像分割中的局限性,利用(SSMs)的优势,提出一种更有效的医学图像分割模型。具体来说,CNN-based模型在捕捉长距离信息方面存在不足,而模型由于自注意力机制的二次复杂度导致计算负担较重。SSMs模型如Mamba不仅在建模长距离依赖方面表现出色,还具有线性计算复杂度,这为VM-UNet的设计提供了理论基础。

Limiiiing的博客 218
上一篇: 初识React Native 入门配置篇
下一篇: Android 中怎么设置全局自定义字体样式
僤尐僤
博客等级 码龄14年 10粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值