自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言-语法

高级语言里面虽然没有指针,但是我们对指针的概念其实并不陌生。我们在Java中都知道对象的引用的概念,在方法中声明一个对象,会在栈中存放一个引用,而这个对象是保存在堆内存中的,栈中的引用会指向堆内存中的对象。其实这个引用就类似于指针的意思,只不过引用可以直接操作对象。高级语言中不区分这两种概念,统一使用引用的概念。严格的说,C语言中的指针类型,其实就是指保存的值是内存地址的变量。在声明结构体变量的时候,编译器就为其分配内存空间结构体在内存中的分布,是一片连续的内存空间。

2025-03-08 22:31:20 612

原创 CoordinatorLayout使用详解

的高级功能在于你可以自定义控件的行为。比如,监听滑动事件,然后让某个控件做出反应。示例:自定义悬浮按钮(FloatingActionButton)的行为假设我们希望悬浮按钮在滑动时隐藏,但隐藏的时机和默认行为不一样。我们可以自定义一个Behavior// 当开始滑动时,这个方法会被调用axes: Int,type: Int// 我们只关心垂直方向的滑动// 当滑动发生时,这个方法会被调用type: Int,) {// 如果向上滑动,隐藏按钮;如果向下滑动,显示按钮。

2025-01-24 13:13:38 795

原创 VLayout使用及原理

Override// 检查是否还有更多子项需要布局// 尝试获取下一个子项break;// 如果没有子项,退出循环// 测量子项并计算布局位置// 更新布局状态(例如消耗的空间)// 检查是否超出可用空间break;// 如果超出可用空间,退出循环@Override// 获取适配器的子项总数@Override// 返回 false,表示需要手动布局。

2025-01-24 12:52:11 335

原创 Flutter插件开发

是 Flutter 提供的一种通信机制,用于 Flutter 代码与原生代码的双向通信。Android 端代码。

2025-01-23 16:09:35 124

原创 Flutter中Key的作用

Flutter开发中经常碰到一种现象,当我们调用setState更新UI时,StatefulWidget状态会莫名其妙显示错误。适用于同一父级下需要区分不同实例的场景。:当你有一个复杂的对象,并且希望根据这个对象来区分。在这种情况下,如果相同类型的。:当你需要区分同一父级下的多个相同类型的。,这样 Flutter 在更新时会根据。都相同,Flutter 会直接复用。:每次创建时都会生成一个独一无二的。时,Flutter 会在整个。:当你希望每次更新时都强制刷新。仍然会复用之前的实例,导致。

2025-01-23 16:08:34 842

原创 Dart高级特性

/ 重载加法操作符 +// 调用重载的 +

2025-01-22 14:07:17 297

原创 fluro路由

原生路由只支持静态路由,无法实现带参数的动态路由。

2025-01-21 23:15:31 132

原创 Kotlin高级特性

Kotlin 允许通过。

2025-01-21 13:52:08 936

原创 Android并发相关知识点

它通过引入一个**版本号(Stamp)**来区分变量值的变化,即使变量值从A变回A,版本号也会发生变化。,主内存是所有线程共享的内存,工作内存是每个线程私有的内存。线程对变量的操作都在工作内存中进行,锁的作用就是将线程工作内存的变量进行同步。CAS是一种用于实现无锁编程的机制,通过比较预期值来更新变量,确保操作的原子性。CAS机制的核心在于确保操作的原子性,避免了传统锁机制的开销,同时提高了并发性能。等待一个线程终止,常用于一个线程等待另一个线程完成任务。方法实现了CAS机制。类的方法,用于线程间的通信。

2025-01-20 23:48:05 784

原创 架构基础-泛型

我们看到第十行代码确实是把ArrayList的泛型擦除了,但是却在LocalVariableType里面对我们的泛型进行了记录,也就是说字节码并没有真正的擦除我们的泛型,我们依然可以通过字节码获取到泛型信息。获取方法返回值泛型等方法,其他的位置的泛型我们可以通过字节码工具javasssist等获取。当我们执行上面一段代码,可以看到不同泛型的两个ArrayList的Class是相同的,看起来好像泛型从我们的字节码抹除掉一样。方法我们却能拿到父类的泛型信息,那泛型是否真的在我们的字节码擦除了呢?

2025-01-19 23:44:23 235

原创 HandlerThread和IntentService

这种方式可读性更高,使用也相对简单,也是我平时单线程切换最常用的方式。的封装也非常简单,主要用来在后台异步完成一些耗时任务,所以继承自。线程中,这样就能完成线程的切换。来处理异步任务,异步任务处理完成后会结束服务。,在服务创建的时候会创建一个并启动。实现线程切换效果是一样的,相比。信的时候就能直接拿到这个。

2025-01-19 23:34:15 300

原创 Handler源码分析

Handler是一套消息处理机制,可以通过它发送消息,并将所有的消息在指定的线程统一处理。

2025-01-19 22:55:47 1041

原创 蓝牙通信详解

Android手机间通过蓝牙方式进行通信,有两种常见的方式,一种是socket方式,另一种是通过GattServer(Android5.0以后)通信,socket方式最为简单,但是很多低功耗的蓝牙设备,如单片机上的蓝牙模块可能不支持;而Gatt方式相对比较复杂。其实无论是socket方式还是Gatt,Android设备间蓝牙通信都是一种C/S(client-server)模式。本文基于两种通信方式,进行详细展开,并推荐了开源项目,建议配合学习。蓝牙4.0是以参数来进行数据传输的,即服务端定好一个参数,

2025-01-19 22:08:55 829

原创 Kotlin协程详解

定义挂起函数delay(1000)//模拟耗时的网络请求return"数据"在协程中调用挂起函数只能在协程或其他挂起函数中调用挂起函数。datavaldata=fetchData()println("获取到的数据:$data")}调用fetchData时会挂起协程,延迟一秒后获取到数据并打印。

2025-01-19 21:46:09 620

原创 数据结构与算法

存储固定大小同类型元素的数据结构。

2025-01-19 21:40:07 760

原创 网络协议详解

SSL/TLS协议自动实现了加密传输过程,只要使用的证书是由受信任的证书颁发机构(CA)签发的,这一过程就会自动进行。理论上,中间人攻击中是难以被篡改请求的,因为伪造的证书在客户端证书校验过程中通常会被识别并拒绝。但是,如果客户端的证书验证机制存在漏洞或被绕过(例如信任所有证书),伪造的证书仍有可能通过校验,从而导致安全风险。而UDP则会直接丢弃丢失的数据包,继续传输后续的数据,虽然可能会出现一些画面的轻微抖动或音频的短暂中断,但整体的流畅性更好。使用UDP可以减少延迟,使得游戏的交互更加流畅。

2025-01-19 18:49:28 792

原创 Android版本适配

一个好的APP最好支持90%设备,这篇文章记录开发过程中遇到的相对重要以及常用的版本适配方案,希望对读者有所帮助。

2025-01-16 22:53:00 799

原创 Flutter屏幕适配

在Flutter开发中我们知道直接设置宽高数值就能达到适配的效果,那它的屏幕适配机制时这样的呢?

2025-01-01 22:13:45 826

原创 Flutter各种Key到底是干嘛的?

Flutter开发中经常碰到一种现象,当我们调用setState更新状态时,状态会莫名其妙的丢失,比如下面的例子:首先定义一个有状态的盒子,盒子显示一个随机数字​​@override​​@override显示一个绿色盒子和一个蓝色盒子,点击按钮将蓝色盒子放到前面​@overridebody: Row(),),​从图中我们看到蓝色盒子确实移动到前面,但是盒子中显示的数据却出现了问题。

2025-01-01 22:11:34 706

原创 Flutter打包命令详解

Flutter打包是通过打包命令来完成的,但是官网以及网上资料最打包介绍的却少之又少,本文详细介绍打包命令各种 标志 的含义,从此打包将不再一头雾水。如果觉得有收获的话,不要白嫖!

2025-01-01 22:10:25 1280

原创 Flutter插件开发流程

在 Flutter 项目的开发中,我们需要根据自己的业务需求来创建各种各样的插件,这里记录下关于 Flutter 插件的创建及使用的过程。

2025-01-01 22:09:01 676

原创 Flutter布局约束

Flutter进行布局时,上层 widget 会向下层 widget 传递一个尺寸约束,下层 widget 不能违反父级尺寸约束。当子级约束和父级约束有冲突时,子级约束无效,按照父级约束。(爸爸说的才算数。。。😂)

2025-01-01 22:05:31 713

原创 Ubuntu初始化配置

设置软件下载源镜像 先设置镜像然后再更新软件,否则软件会更新很慢。

2025-01-01 21:59:02 194

原创 AIDL源码分析

Android 接口定义语言,利用它定义客户端与服务均认可的编程接口,以便二者进行进程间通信 (IPC)。AIDL 使用实质就是对 Binder 机制的封装,主要就是将远程服务端的 Binder 封装成一个代理对象 Proxy,从用户的角度看,就像是客户端直接调用了服务端的代码。

2025-01-01 21:51:22 843

原创 Messenger源码分析

Messenger(信使) 是一种跨进程通信实现方式,是对 AIDL 的进一步封装,省去了两端创建 AIDL 的过程。

2025-01-01 21:50:13 173

原创 Handler源码分析

如果消息此刻到时间了,返回msg。取出消息时,从队列取第一个消息作为待发送的消息,如果该消息是障碍消息,则取队列中第一个异步消息作为待发送的消息。通过上面的分析我们知道,当我们在A线程调用Handler发送消息,在B线程调用Looper.loop(),不断从MessageQueue中取出消息分发到Handler,所以消息处理是在B线程,这就完成了消息线程的切换。插入消息时,首先找到比发送消息触发时间小的最后一个消息,将靠前消息的next赋值成当前的消息,当前消息的next赋值靠前消息的next。

2025-01-01 17:38:50 676

空空如也

空空如也

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

TA关注的人

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