自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 android知识体系汇总

对于一个程序员必须要经历的过程,初入职场你觉得能完成任务就行。第一阶段可称为搬运工阶段,你不需要了解原理,只要做出来就行。浑浑噩噩可能就5年光景了,你发现你做过很多项目,感觉什么都可以。第二阶段可称为眼高手低阶段,处于开发阶段。有一天你去面试,你觉得经验很丰富了,应该没什么问题,可面试官一连串的问题,让你哑口无言。第三阶段可称为觉醒阶段,人都是在被打击后挫败后,才会觉醒。于是开始往更高的方向进发,一切都要从源头说起,了解源码势在必行。

2023-04-18 09:55:26 628

原创 虚拟机JVM,Dalvik,ART

一,Java内存区域1,用一张图来表示内存区域2,线程隔离的数据区(线程私有内存区域,线程之间互不影响)①,程序计数器:是一块较小的内存空间,可以看成是当前线程所执行的字节码的行号指示器。如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器值为(Undefined)。此内存区域是唯一一个在Java虚拟

2017-12-08 15:38:25 1341 2

原创 TensorFlow系列:第五讲:移动端部署模型

项目地址:https://github.com/LionJackson/imageClassificationFlutter项目地址:https://github.com/LionJackson/flutter_image。

2024-07-12 16:33:39 529

原创 TensorFlow系列:第四讲:MobileNetV2实战

在训练模型时,我们不可能时时盯着训练数据结果,如果把训练过程曲线保存成图片,这样就比较方便查看。训练进度:主要看最下边一行输出,一轮训练完成会显示训练集和验证集的正确率。曲线图如下:训练集和验证集准确率上升,损失率下降,这是完美的表现。以后的所有讲解,都基于函数式方式进行,因为函数式调用比较灵活。

2024-07-10 10:09:39 425

原创 TensorFlow系列:第三讲:MobileNetV2使用介绍

MobileNetV2 是由 Google 在 2018 年发布的一种轻量级深度神经网络架构,旨在优化移动设备和嵌入式设备上的图像分类和其他视觉任务的性能。它是 MobileNet 系列的第二代改进版本,相较于 MobileNetV1,引入了新的层类型和架构改进,显著提升了模型的准确性和效率。1. 主要特性和创新点深度可分离卷积(Depthwise Separable Convolutions):延续了 MobileNetV1 的设计,通过深度可分离卷积来减少参数量和计算量。

2024-07-09 17:46:34 838

原创 TensorFlow系列:第二讲:准备工作

1.创建项目,选择虚拟环境项目结构如下:data中的数据集需要提前准备好,数据分为测试集,训练集和验证集。以下是数据集的下载平台:kaggle2.随便选择一个和水果相关的数据集,下载到本地,导入的项目中。一切准备就绪,开始进入模型训练实战!

2024-07-09 16:41:47 176

原创 TensorFlow系列:第一讲:环境搭建

这是TensorFlow系列教程,先从实战应用,再到原理分析,讲解如何使用大模型进行图像识别。

2024-07-09 16:02:51 358

原创 Flutter 热修复(Shorebird)

我们都知道安卓原生开发,热修复已经不是什么难题。阿里云,腾讯云已经都有现成的SDK可以接入。然而Flutter开发还一直没有类似热修复的开发库,无意中看到了Shorebird这个平台,接下来就开始学习一波。

2024-04-20 18:00:00 4388 1

原创 Flutter MQTT通信(实现聊天功能)

MQTT(Message Queuing Telemetry Transport)是一种轻量级的、开放的、基于发布/订阅模式的消息传输协议,最初由IBM开发。它专门设计用于在低带宽、不稳定的网络环境下进行高效的消息传输。学习完本篇文章,带你一起做个简单的聊天功能。

2024-04-18 21:00:00 4201 1

原创 GPS定位原理及应用分析

①.硬件构成(24颗卫星,可构建一套导航系统)为何是24颗卫星?可以做到全球覆盖,同一地点地球上空可观测到4颗卫星。②.为什么是4颗卫星来定位电磁波传播速度:3*10的8次方卫星传播到地面时间:0.06s卫星发射的信号会带自己的坐标(x,y,z),通过四颗卫星坐标计算出接收机坐标。

2024-04-16 21:17:16 3929

原创 Flutter android和ios闪屏页配置

另外还能起到预加载的作用,比如项目功能多,上来就需要加载很多模块,如果不加个启动页,用户等待的时候过长,体验不好。这就是为什么不推荐显示一整张图的原因,有没有解决的办法呢,简单来说可以在做图片的时候,主要的内容信息不要显示在图片的边缘。2.为什么会有闪屏也,由于app启动需要加载代码,这个过程需要耗时,在没有加载完成之前,是看不到app真正的页面。图片为什么被裁减了:由于图片是整个屏幕显示,需要适配不同机型,会对图片进行等比例缩放,超出的部分会被裁减。图片是分开展示的,分为上中下,可适当配置。

2023-11-08 14:37:02 2013

原创 Flutter中的各种刷新小部件

确保不要将 FutureBuilder 嵌套在频繁重建的小部件内部,以避免不必要的性能开销。用于在动画执行过程中监听值的变化并构建界面的小部件。通常,它与 AnimationController 或其他动画对象一起使用,以便在动画执行期间更新界面。用于自定义页面过渡动画的小部件,通常与 Navigator 一起使用。它通过创建表单字段和验证逻辑,让表单管理更容易。用于处理异步操作和构建界面的非常有用的小部件。用于在切换不同小部件时执行动画的小部件。它允许你在切换小部件时应用自定义的入场和出场动画效果。

2023-11-01 16:37:27 855

原创 Flutter GetX的使用

Get.to():打开新页面。Get.toNamed():通过路由名称打开新页面。Get.off():关闭当前页面并打开新页面。Get.offAll():关闭所有页面并打开新页面。Get.back():返回上一个页面。Get.until():返回到指定页面。Get.offNamed():关闭指定路由页面。Get.toNamed(“/profile/1”):打开具有参数的命名路由。GetBuilder():使用 GetX 控制器构建特定部分的界面。

2023-11-01 16:06:53 1658

原创 flutter之bloc使用详解

BLoC设计模式:BLoC模式的核心是Sink和Stream,它们用于处理输入和输出。通常,你会创建一个BLoC类,该类接收输入流并根据输入产生输出流。然后,UI组件订阅输出流以接收状态更新,并将用户操作发送到输入流。

2023-11-01 11:51:27 2706

原创 Flutter最全面试题大全

有状态(Stateful)Widget有状态Widget是一种可以包含可变状态的Widget类型。当其内部状态(state)发生变化时,可以通知Flutter框架进行重新构建,并且可以在多次构建之间保留状态。通常在需要响应用户交互或数据更新时使用,比如表单、按钮、动画等。有状态Widget通常包括两个类:一个是继承自的Widget类,另一个是继承自State的状态类,状态类包含了Widget的可变状态。});@override。

2023-10-24 11:23:07 2196 1

原创 APP自动化测试

推荐一个好用的自动化测试工具AirtestIDE,下载地址:https://airtest.netease.com/index.html文档地址:https://airtest.doc.io.netease.com/IDEdocs/3.1getting_started/AirtestIDE_install/AirtestIDE安装完成页面工具栏最左侧,我们可以看到几个按钮,也很好理解,比如:touch是点击事件,wait是等待事件,swipe是滑动事件。

2023-10-24 10:17:31 76

原创 flutter架构全面解析

微任务用于处理优先级较高、需要尽快执行的任务,而事件队列用于处理响应事件、网络请求等异步任务。在 Dart 中,事件循环会不断地从微任务队列和事件队列中取出任务执行,这就是 Dart 异步编程的核心机制。

2023-09-05 17:21:50 1962

原创 Activity启动模式中的生命周期

彻底明白Activity启动模式中的生命周期,从此不再成为面试难点。

2023-08-16 17:22:12 119

原创 Kotlin重要知识点

协程作用域,GlobalScope 是 CoroutineScope 的一个实现类,用于指定协程的作用范围,可用于管理多个协程的生命周期,所有协程都需要通过 CoroutineScope 来启动。语法分析的过程是建立在词法分析的基础上,将单词(Token)序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等,语法分析器将判断源程序在结构上是否正确。内联函数的工作原理很简单,就是 Kotlin 编译器会将内联函数中的代码在编译的时候自动替换到调用它的地方,这样也就不存在运行时的开销了。

2023-04-27 15:43:12 596

原创 数据结构与算法

本文大部分使用ChatGPT生成。更详细的数据结构与算法教程可以看更系列的文章:以下为整体知识架构图。

2023-04-26 09:39:32 3722 1

原创 设计模式系列

工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。分离接口与实现,隔离了具体类的生产,使得客户端并不需要知道什么被创建。当一个产品中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。增加新的产品类时更加的灵活,易用。符合 “开闭原则”。

2023-04-21 10:12:19 1069

原创 Handler消息机制

}上边的代码,运行结果handler成功创建了,handler1出现了异常,说是没有Looper。只需要在添加一行代码就可以了。Looper.prepare()方法就是创建了一个Looper。//创建Looper Looper . prepare();上边代码可以看出当我们创建Handler的时候,如果没有取到Looper就会抛异常。那么Looper.prepare()又执行了啥呢,其实就是创建了一个Looper,保存在了sThreadLocal中。

2023-04-20 14:50:41 1067

原创 View系列

掌握View核心知识体系,两大方向:View事件分发,自定义View。在讲View之前,先来从源码端了解一下类。首先我们知道android中的入口在ActiivtyThread中的mian函数开始。其中有个方法performLaunchActivity(),通过activity.attach创建PhoneWindow。再来看看PhoneWindow的源码:其中installDecor()这个方法中创建了DecorView以上分析可以总结为页面的创建:Activity->PhoneWindow->De

2023-04-18 16:11:47 1121

原创 Bitmap详解

RGB色彩模式是工业界的一种颜色标准,是通过对红、绿、蓝三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。对一种颜色进行编码的方法统称为“颜色空间”或“色域”。用最简单的话说,世界上任何一种颜色的“颜色空间”都可定义成一个固定的数字或变量。RGB(红、绿、蓝)只是众多颜色空间的一种。采用这种编码方法,每种颜色都可用三个变量来表示-红色绿色以及蓝色的强度。

2023-04-16 14:48:50 2315

原创 Java线程系列详解

1)volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。2)volatile仅能使用在变量级别,synchronized则可以使用在变量,方法。3)volatile仅能实现变量的修改可见性,而synchronized则可以保证变量的修改可见性和原子性。4)volatile不会造成线程的阻塞,而synchronized可能会造成线程的阻塞。

2023-04-15 16:15:07 5066

原创 android核心架构Framework组件介绍

硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如:Audio音频模块,BlueTooth:蓝牙模块,Camera:相机模块,Sensors:传感器。

2023-04-13 17:04:25 1737 1

原创 flutter与native通信

这三种方式适用的场景:MethodChannel用于native与flutter的方法调用,EventChannel用于native单向的向flutter发送广播消息,BasicMessageChannel用于native与flutter之间的消息互发。是一种native向flutter发送数据的单向通信方式,flutter无法返回任何数据给native。编码环境:系统:wind10,开发工具:androidstudio 2022,flutter版本:3.7.8。,flutter作为module使用。

2023-03-30 15:17:50 630

原创 flutter混合开发采坑之路

flutter系统包缓存文件夹位置冲突。我使用的电脑是Windows,因此默认系统包缓存路径是:C:\Users\DELL\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_android-2.0.24\android.开始前的准备,我的开发环境,系统:window10,开发工具:androidstudio 2022。在setting.gradle中配置如下代码:注意这里的flutter_module是你创建的module组件的名字。

2023-03-29 14:36:49 1458

原创 android 媒体通知栏适配

做音乐播放器,必然要用到通知栏,由于通知栏很多版本都有改动,一些厂商也做了调整,适配起来比较麻烦,能用系统自带的就用。这里分享一下系统媒体通知栏的适配。需要考虑的问题如下:1,通知栏适配,音乐播放需要常驻,所以要维护一个通知栏。2,音控处理,在安卓7.0及以下,通过MediaSessionCompat可控制锁屏页音乐播放。3,对于耳机的处理,不管是线耳机还是蓝牙耳机,耳机控制播放暂停,下一曲上一曲等操作。4,打电话处理,在听音乐的同时如果电话进来后挂断,希望可以自动播放。

2023-03-29 09:53:27 3129 2

原创 flutter中数据库(Drift)的使用

Flutter 目前比较好用的 sqlite 数据库 orm 框架就是drift (以前叫作moor),由于dart语言不支持反射,这个框架使用了dart代码生成器,自动生成代码。这个数据库框架的优点是支持全平台使用,此框架通过使用datr语言的 ffi 功能(相当于JAVA的jni)来调用 sqlite 动态库 实现数据库操作,

2023-03-13 11:52:01 6399

原创 Android隐私合规检测

随着国内渠道市场对APP规范越来越严格,在我们APP上线前需要做好隐私协议以及权限检查。由于项目中可能接入了第三方SDK,由于第三方SDK在初始化的时候可能会调用设备的隐私信息,因此检查合规非常的重要。一般情况下在用户使用APP的时候,只有选中了隐私协议之后,才能调取隐私信息。现在一些第三方SDK已经做了处理,比如:友盟SDK添加了预初始化,在预初始化的时候不会调取隐私信息。1,使用VirtualXposed在手机上装了一下虚拟系统,这里可以直接安装VirtualXposed.apk就可以https://

2022-06-01 18:36:44 3994

原创 Jetpack Compose

一,使用下载安装最新版本AndroidStudio,创建项目会有Compose选项。二,废话不多开始撸代码1,创建实体类TestBeandata class TestBean(val title:String,val content:String)2,显示页面代码class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.on

2022-04-21 16:13:14 2365

原创 flutter实战

本篇会用小示例的方式,更全面的使用flutter,进一步的强化如何在项目中开发。一,列表显示加载一个列表如下效果1,准备数据在项目lib下创建一个person.dart实例用于存放数据class Person{ const Person({ this.name, this.address, this.imageUrl,}); final String ...

2022-02-28 16:59:13 1313 1

原创 flutter第二章:进阶

上一章讲解了flutter的一些基础控件,这一样讲解一下网络请求,路由等内容。

2022-02-28 16:58:43 350 1

原创 Jetpack架构组件库

Jetpack是众多优秀组件的集合。是谷歌推出的一套引领Android开发者逐渐统一开发规范的架构。

2022-02-28 16:57:33 6476

原创 RecyclerView使用到原理

开发中离不开的RecyclerView,用好它让开发UI更加丝滑。一,基础使用1,写一个简单布局只有TextViewpublic class TestAdapter extends RecyclerView.Adapter<TestAdapter.TestViewHolder> { private List<String> mList = new ArrayList<>(); public TestAdapter(List<String&gt

2020-06-06 16:11:31 2162 1

原创 CoordinatorLayout效果大集合

状态栏

2020-05-30 14:13:37 1476

原创 CoordinatorLayout显示不全问题

一,问题一<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_paren

2020-05-28 13:16:17 2168 1

原创 AppbarLayout的使用

一,基本使用AppbarLayout一般会结合CoordinatorLayout实现一些折叠效果。<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.a

2020-05-27 18:31:53 615

原创 Toolbar的基础使用

一, 基本使用Toolbar使用很简单,可以设置标题,副标题,导航按钮,logo图,菜单等。 <androidx.appcompat.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" app:logo="@mipm

2020-05-27 16:59:41 703 2

空空如也

空空如也

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

TA关注的人

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