自定义博客皮肤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)
  • 收藏
  • 关注

原创 移动端轻量级神经网络推理框架

简单说,Paddle Lite 是“Paddle 生态专属优化工具”,ncnn 是“通用轻量跨框架工具”,两者各有侧重,需根据模型来源和部署需求选择。,核心目标是让深度学习模型在资源受限的设备(如手机、物联网设备)上高效运行,但两者在设计理念、生态支持、适用场景等方面有显著区别,并不完全一样。ncnn 和 Paddle Lite 都是针对移动端和嵌入式设备优化的。

2025-07-21 17:16:58 272

原创 AndroidX中ComponentActivity与原生 Activity 的区别

AndroidX 是原生框架的升级替代:提供更丰富的功能(如 Lifecycle 支持)和更好的兼容性,推荐优先使用。是当前 Android 开发中实现 Activity 的首选。

2025-07-18 15:59:05 537

原创 安卓ActivityResultLauncher

简单来说,ActivityResultLauncher 是 startActivityForResult 的升级替代方案,解决了其生命周期管理混乱、代码耦合等痛点。

2025-07-09 11:20:32 830

原创 apk签名流程

对APK文件内容(排除签名块)重新计算哈希值,得到新摘要。

2025-06-19 19:24:47 317

原创 Gradle打包流程

因此本质上都是面对对象的,面向对象的特点是一切皆为对象,所以,在gradle里,.gradle脚本的本质就是类的定义,一些配置项的本质都是方法调用,参数是后面的{}闭包。比如build.gradle对应Project类,buildScript对应Project.buildScript方法。DSL也就是Domain Specific Language的简称,也就是领域特定语言,是为了解决某一类任务专门设计的计算机语言。自动化构建工具,通过组织一系列task来最终完成自动化构建的。三部曲:初始化、配置、执行。

2025-06-19 18:20:33 827

原创 安卓JetPack篇——Livadata

LiveData 是会自动更新 UI 的数据容器,省去手动管理数据与界面同步的麻烦。​ 对比handler需要手动管理,否则会内存泄漏。使用观察者模式并配合LifeCycle,在数据变化时自动通知处于活跃状态(如STARTEDRESUMED)的 UI 组件更新,并在 UI 销毁时自动解除观察,避免内存泄漏。

2025-06-19 16:04:45 359

原创 安卓JetPack篇——LifeCycle原理

具备宿主生命周期感知能力的组件。它能持有组件(如Activity或Fragment)生命周期状态的信息,并且允许其他观察者监听宿主的状态。

2025-06-19 14:53:13 418

原创 recyclerview嵌套recyclerview造成滑动卡顿

当垂直滚动的时候, 内部RecyclerView中的每个view再次inflate了一遍,所以感觉很卡顿。这是因为每个嵌套的 RecyclerViews 都有各自的 view pool。假设外层 RecyclerView(A)有 3 个 Item,每个 Item 包含内层水平 RecyclerView(B)耗时对比:独立 Pool 需 10ms 创建 View,共享 Pool 仅需 1ms 绑定数据。同样外层 A 滑动,Item1 滑出、Item4 滑入,但内外层共享同一个 View Pool。

2025-06-19 01:23:44 459

原创 Glide缓存机制及对比

使用弱引用缓存,存储当前正在使用的图片,避免被LruCache回收,导致空指针异常;当图片不再显示(不被imageview强引用引用)时,用过弱引用+引用队列把这个不再显示的对象放入lrucache中。Q:为什么使用弱引用缓存,而不是用强引用和软引用?A:强引用页面关闭后图片仍被强引用使用,内存泄漏;无法被LruCache管理导致缓存体系失效。软引用直到OOM边缘才进行回收,低端设备频繁GC卡顿。**2、内存缓存(LruCache):**存储最近使用但未被引用的图片。(默认占App内存的1/8)

2025-06-18 13:50:50 925

原创 从Java线程模型到Kotlin协程

这段话很好理解,因为Java一对线程模型是Java线程(用户线程)会直接映射到一个内核线程(操作系统管理的线程),当涉及到IO阻塞等需要操作系统内核介入的操作时,会导致用户态和内核态的切换,当大量线程频繁切换时,内核调度器的负载会增加,导致整体系统效率下降。简单来说,n个协程运行在线程池中,协程的挂起和恢复不会导致线程池里线程的阻塞和唤醒,所以不会导致用户态和内核态的切换,所以效率高,也就是协程解耦了传统的1:1的绑定关系。

2025-06-17 11:35:22 322

原创 Flutter三棵树机制

• Widget树:设计师画的装修图纸(描述客厅放沙发、卧室放床),每次改需求(如换沙发颜色)会重新画图纸,但图纸本身不花钱。◦ 每次状态更新时,Widget树会被重新构建(因为Widget是不可变的),但这一步只是生成新的配置,成本很低。• Element树:施工队长,拿着图纸对比旧房现状,决定哪些地方要改(比如只换沙发,不拆墙),规划最小施工量。◦ 作为中间层,它缓存Widget的配置,并对比前后两次Widget树的差异(即“找不同”)。◦ 负责计算布局、绘制像素,是真正和屏幕渲染打交道的层。

2025-06-07 22:51:27 340

原创 安卓原生+Flutter混合开发 DAY1

第一步安装flutter环境就不再赘述了,网上有很多教程了。目前都是原生 + Flutter的项目结构较多,那么假设咱现在有一个原生的项目,想要把flutter加进来,怎么办呢?

2025-05-29 10:49:37 521

原创 加密算法总结

首先明确,加密算法包括对称加密和非对称加密(可逆)。哈希算法不属于加密算法(不可逆)。

2025-05-28 16:13:31 653

原创 Charles抓包原理

Charles 作为代理工具,会在本地生成一个,并引导用户将其安装到设备(如手机)的信任列表中。

2025-05-28 15:40:56 697

原创 HTTPS安全的原因

2、在我们的客户端或者浏览器会有根证书,客户端(如浏览器、手机)内置 根证书列表(预装或系统更新时添加),包含全球知名 CA 的根证书。3、当服务器出示由某 CA 签发的服务端证书时,客户端会从该证书追溯到其上层 CA 的证书,最终通过根证书验证整个链条的合法性。握手阶段通过 非对称加密(如 RSA、椭圆曲线加密 ECC)协商出 会话密钥(对称加密密钥),并验证服务器身份。会话密钥生成(对称加密的密钥):客户端生成预主密钥,用公钥传给服务端。HTTPS是在HTTP的基础上增加了SSL/TLS加密。

2025-05-28 15:29:26 268

原创 安卓studio新建项目加载过慢

阿里云镜像 Gradle下载地址:https://mirrors.aliyun.com/macports/distfiles/gradle/腾讯镜像 Gradle下载地址:https://mirrors.cloud.tencent.com/gradle/官网地址:https://services.gradle.org/distributions/阿里:https://mirrors.aliyun.com/gradle/

2025-04-16 15:09:14 328

原创 安卓recyclerViewAdapter自定义事件监听器

/声明//使用@Override= null){});

2023-12-13 14:03:36 317

原创 string、stringbuffer、stringbuilder区别

string、stringbuffer、stringbuilde的区别。

2023-12-11 11:56:33 73

原创 Vue-cli

Vue-cli简介:vue-cli是vue官方提供的用于搭建基于vue+webpack+es6项目的脚手架工具操作npm install -g vue-clivue init webpack "名称"cd 名称npm install(安装项目的依赖)npm run dev(启动项目)访问:localhost:8080...

2021-01-07 21:56:32 148

原创 flask点赞功能实现

一、思路将用户id,评论id,评论所在的文章id单独存放在数据库一个表中。点击前端界面的点赞按钮,将数据通过js传送给后台,在后台判断该用户是否已对该评论点赞。通过ajax将信息异步提交到前端。二、遇到的坑1.由于项目是异步加载评论区,导致在异步提交评论后,点击点赞事件后会出现csrf missing。解决方案:在点赞功能视图加上@csrf.exempt...

2019-08-17 20:08:24 1930

原创 ajax异步提交form表单

一、前言在web开发中,经常会遇到:提交表单后无需更新页面并将新的数据展示在页面上,这就需要使用ajax提交form表单的方式进行提交。二、方法(以flask框架为例)2.1、前端部分1.form表单只需要写一个id值与js进行数据交互2.(坑一)若开启了crsf防护,记得加上:3.(坑二)要在button标签中加上 type=“button”,不能为空(会将表单数据显示在地址栏)...

2019-08-15 23:23:45 624

原创 关于flask实时更新评论区的解决方法

评论后自动更新评论区1.前言在写评论部分时,每当评论后都不能实时显示新增的评论 ,必须刷新页面才可以。为了解决这个问题:1.1思路1(行不通)首先想到的是ajax异步提交评论,然后通过后台获取更新后的评论列表加载到评论区,但是在写代码的过程中遇到了一个问题:不知道ajax如何从后台获取列表并将查询到的列表迭代显示到前端,于是放弃了这个方法。1.2(可行)之后又想能否通过view视图返...

2019-08-13 20:43:46 700 1

原创 Thymeleaf整合到Spring Security,标签sec不起作用

将pom的thymeleaf-extras-springsecurity4改成thymeleaf-extras-springsecurity5,完美解决问题。 org.thymeleaf.extras thymeleaf-extras-springsecurity5 同时,还要在相应的页面也要进行修改。...

2019-04-29 23:54:55 2053 1

原创 关于IDEA自动创建Test类,方法未能显示的问题

今天听视频的时候看到了老师自动创建Test类,便也想试,(按ALT+ENTER 或者 ctrl+shift+t自动创建Test)结果里面的方法却显示不出。查了一下发现一个比较实用的方法,现在记录下这个方法:把public interface AreaDao {}改成public class AreaDao {}然后点击AreaDao自动生成test单元测试,最后再把class改回i...

2019-03-19 08:53:32 7302 9

空空如也

空空如也

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

TA关注的人

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