- 博客(1624)
- 资源 (17)
- 收藏
- 关注
原创 Android 串口 Null-modem emulator (com0com)安装与使用
《com0com 下载与安装指南(2025年更新版)》提供了从获取安装包到配置虚拟串口的详细步骤。用户需从 SourceForge 下载适用于 32 位或 64 位 Windows 系统的安装包,并根据系统版本选择合适的安装程序。安装过程中可能需处理驱动签名验证问题,可通过禁用驱动程序强制签名或启用测试签名解决。安装完成后,用户可通过命令行工具或图形界面配置虚拟串口对,并进行通信测试。常见问题如端口被占用、驱动安装失败等均有相应解决方案。此外,指南还提供了扩展资源,包括项目文档和替代工具推荐。通过本指南,用
2025-05-19 22:35:29
248
原创 android studio 虚拟设备 怎么调试串口连接?
在Android Studio中进行虚拟设备的串口调试,首先需要在PC端使用虚拟串口工具(如VSPD)创建串口对,并通过命令行启动AVD并挂载串口。随后,通过adb shell修改串口设备权限,或在应用中动态申请权限。在应用中,通过OutputStream发送测试数据,并通过独立线程监听InputStream接收数据,实时更新UI。调试时可使用ComAssistant APK或Logcat进行日志分析,确保串口通信正常。常见问题包括模拟器无法识别串口、权限不足、数据收发异常等,需逐一排查。推荐工具包括VSP
2025-05-19 22:27:59
249
原创 Android:串口连接验证与数据接收
本文详细介绍了串口连接验证与数据接收的关键步骤。首先,通过检查硬件参数匹配性和设备路径权限,确保串口初始化正确。其次,优化UI更新方法,避免高频更新导致的卡顿,并添加数据校验与粘包处理逻辑。接着,提供了完整的调用流程,包括初始化串口和启动数据监听线程。此外,文章还提供了调试与异常排查指南,帮助解决常见问题。最后,建议扩展功能如协议封装和日志记录,并介绍了硬件验证流程,包括使用ComAssistant APK和命令行验证。通过这些步骤,可以有效实现串口通信的稳定性和可靠性。
2025-05-19 22:24:01
680
原创 Android: 串口管理 android-serialport-api 的依赖配置方案
本文介绍了在 Kotlin DSL 中配置 android-serialport-api 的远程依赖方案,并与传统的本地 JAR 方案进行了对比。远程依赖方案推荐使用 Maven Central 或 JitPack 引入改进版库,支持校验位、数据位等高级配置,并自动管理版本更新和 .so 文件加载。对于跨平台开发,推荐使用 kmp-serialport,支持 Android、Windows 和 Linux 的串口操作。本地 JAR 方案适用于需要修改库源码或处理特殊 NDK 兼容性的场景。文章还提供了详细的
2025-05-19 22:07:54
169
原创 Android studio 连手机 调试 修改了源码,怎么重新调试生效?
在 Android Studio 中修改源码后,可以通过多种方式使修改生效。首先,使用 Apply Changes 功能(快捷键 Ctrl+F10)进行热更新,若涉及界面布局改动,则需选择 Apply Changes and Restart Activity(快捷键 Shift+F9)。对于无法通过热更新生效的修改(如资源文件替换、Manifest 变更),需重新编译安装 APK。其次,手动触发完整编译,清理旧编译文件并重新构建项目,同时禁用可能导致冲突的热更新功能。此外,通过 ADB 命令强制终止应用进程
2025-05-14 00:59:56
419
原创 Android:什么是串口,Android怎么接收串口的数据?
串口技术是一种通过逐位顺序传输实现设备间通信的接口,具有低成本、协议多样性和速度限制等特点。核心参数包括波特率、数据位、停止位和校验位,需双方一致配置。在Android设备上接收串口数据,需进行硬件准备(如物理串口或USB转串口模块)和软件实现(包括权限配置、引入串口库、初始化串口、启动数据接收线程和UI更新与数据处理)。常见问题包括设备未检测到、数据接收不全或乱码、高并发数据丢失等,可通过检查权限、校验配置一致性、使用同步锁或环形缓冲区等方法解决。高级优化包括数据校验、协议封装和异步监听。应用场景涵盖工业
2025-05-14 00:33:09
891
原创 Android Studio 从什么版本开始不支持选java项目了
自2022年起,Android Studio新版本(如Flamingo及以上)在创建新项目时默认隐藏了Java语言选项,优先推荐使用Kotlin。尽管如此,开发者仍可通过选择“No Activity”模板或手动修改文件类型来创建Java项目。Android Studio 2023+版本默认捆绑JDK 17,支持Java 17语法,但旧项目可能需要手动配置低版本JDK以保持兼容性。Gradle和AGP的版本也需与JDK版本匹配,以避免不兼容问题。建议新项目优先使用Kotlin,旧项目可继续维护Java代码,并
2025-05-10 17:58:00
622
原创 Androind 项目,怎么创建成java编码的?
在 Android Studio 中创建 Java 编码的 Android 项目,首先需在新建项目时选择 Java 语言,并配置项目信息如名称、包名和最低支持的 Android 版本。创建后,检查生成的文件和 Gradle 配置,确保 Java 版本设置正确。若需将现有 Kotlin 项目转换为 Java,可删除 Kotlin 模块并修改 Gradle 插件。此外,统一编码格式为 UTF-8 并设置全局 Java 版本以避免兼容性问题。若新版本 IDE 默认隐藏 Java 选项,可选择支持 Java 的模板
2025-05-10 17:56:36
769
原创 Android中 androidx.constraintlayout.widget.ConstraintLayout的使用
ConstraintLayout 是 Android 开发中功能强大的布局容器,通过约束关系定位子视图,实现复杂 UI 设计。使用步骤包括添加依赖、设置根布局和定义子视图约束。核心特性包括布局约束、边距与偏移、尺寸控制、引导线与屏障、链式布局等。通过灵活运用这些特性,可以实现居中布局、动态响应布局和链式排列等常见布局需求。注意事项包括避免过度嵌套、适配不同屏幕和使用可视化编辑器。ConstraintLayout 能显著提升开发效率并优化应用性能。
2025-05-10 17:33:29
1106
原创 Android:layout_toRightOf为什么在RadioGroup组件中没有生效?
• 在 API 21(Android 5.0)及以上版本中,建议使用。• 布局优化:若需要更复杂的排列(如控件间距、对齐方式),可结合。• 适用场景:适合选项较少且需要横向展示的场景(例如性别选择)。• 适用场景:适用于选项较多或需要节省横向空间的布局。• 水平排列时,子控件默认从左侧开始依次排列;的子控件会按从上到下的顺序依次垂直排列。• 子控件会按从左到右的顺序依次水平排列。• 垂直排列时,子控件默认从上到下堆叠。• 互斥逻辑:无论排列方向如何,,因此其子控件的排列规则与。始终保证同一时间只有一个。
2025-05-10 17:30:08
208
原创 Android 为什么这个Radio 没有切换互斥的效果
在 Android 开发中,RadioGroup 默认只能管理其直接子控件(RadioButton)的互斥逻辑。如果 RadioButton 被嵌套在 ViewGroup(如 LinearLayout)中,RadioGroup 将无法识别这些 RadioButton,导致互斥功能失效。解决此问题有两种方案:一是调整布局结构,将 RadioButton 作为 RadioGroup 的直接子控件,并使用 RelativeLayout 或 ConstraintLayout 控制其他输入控件的位置;二是通过代码手动
2025-05-10 17:25:57
487
原创 android studio项目怎么打包为apk文件?
点击顶部菜单栏 Build → Generate Signed Bundle/APK,选择 APK 后点击 Next
2025-05-10 17:16:47
361
原创 Android项目MainActivity.kt与MainActivity.java
//20250505在Android Studio中,不能直接将文件重命名为并直接替换,但可以通过以下步骤实现从Kotlin到Java的转换:一、转换方法与工具反编译Kotlin字节码(推荐)• 打开文件,点击菜单栏的 Tools → Kotlin → Show Kotlin Bytecode• 在字节码窗口点击 Decompile 按钮,生成对应的Java代码并保存为• 注意:自动生成的代码可能包含冗余的检查(如),需手动删除手动重写代码• 若代码逻辑简单,可逐行翻译Kotlin特性到Java语法:
2025-05-05 22:42:52
225
原创 Android项目里源码是kt格式转java
针对将 Kotlin 文件(如 MainActivity.kt)转换为 Java 代码的完整方案,综合多个技术文档的实现思路
2025-05-05 22:37:11
506
原创 Flowable FlowNodeActivityBehavior 详解
FlowNodeActivityBehavior 是 Flowable 流程引擎中用于定义和控制 BPMN 流程节点(FlowNode)行为的核心接口之一。它是 ActivityBehavior 接口的子类,专门针对流程图中的具体节点(如任务、网关、事件等)提供行为逻辑的抽象。
2025-04-30 18:40:30
653
原创 Flowable: FlowNodeActivityBehavior 介绍及业务场景与设计思想分析
Flowable中的FlowNodeActivityBehavior是流程引擎中节点行为定义的核心基类,其设计贯穿了流程引擎的执行逻辑、扩展性和节点行为标准化理念。
2025-04-30 17:56:27
970
原创 Flowable 执行监听器(Execution Listener)
Flowable 执行监听器(Execution Listener)是 Flowable 工作流引擎中用于在流程实例或活动(Activity)的执行生命周期关键节点触发自定义逻辑的扩展机制。它允许开发者通过监听流程的运行时事件(如流程启动、结束、活动切换等),实现动态的业务逻辑注入,增强流程的灵活性和可定制性。
2025-04-28 23:31:51
797
原创 Flowable 表达式
Flowable 表达式主要用于流程变量操作、任务分配和条件分支控制,其语法基于 EL(Expression Language)并支持多种高级扩展。
2025-04-28 22:24:14
1107
原创 企业财务管理:财务中的“借”(Debit)和“贷”(Credit) AP会计分录和TR会计分录
在财务会计中,“借”(Debit)和“贷”(Credit)是复式记账法的核心记账符号,用于记录经济业务对会计要素的增减变动方向,并确保会计恒等式的平衡。
2025-04-27 22:40:19
951
原创 企业财务管理:财务领域JE 应付账款处理 应付账款核销
在财务领域中,“JE”通常指Journal Entry(日记账分录),即会计记录中的原始凭证,用于记录每笔经济业务的借贷方向和金额,是会计核算的基础步骤。
2025-04-27 22:33:53
891
原创 AI大模型:dify本地启动 问题与解决方案
效果:原来只有http://127.0.0.1:11434/可以访问ollama, 配置后:用网卡地址也可以 如:http://172.17.240.1:11434/,还有http://host.docker.internal:11434/也可以访问ollama。问题: 改完端口 6060后,访问出现 502 Bad Gateway Request URL: http://localhost:6060/console/api/setup。解决:在环境变量,增加:OLLAMA_HOST=0.0.0.0。
2025-04-26 23:50:16
324
原创 AI大模型:window下安装dify
安装过程中勾选“Install required Windows components for WSL 2”,完成安装后重启电脑。完成以上步骤后,即可在Windows上成功安装并使用Dify。• 若Docker镜像拉取较慢,可配置国内镜像加速源(如清华源、阿里云等)。• 确保系统满足最低要求:CPU≥2核,内存≥4GB。验证安装:打开命令提示符或PowerShell,输入。安装完成后,打开Git Bash验证:输入。下载Windows版Git安装包。,若显示版本号则安装成功。,若显示版本号则安装成功。
2025-04-26 23:39:50
253
原创 Java Lambda @FunctionalInterface Consumer<T> Supplier<T> Function<T, R> Predicate<T>
是 Java 8 引入的注解,用于标记函数式接口(仅包含一个抽象方法的接口)。其核心作用是编译时检查,确保接口符合函数式接口的规范。若接口不满足条件(如包含多个抽象方法),编译器会直接报错。是 Java 函数式编程的基石,通过强制单抽象方法规则,确保 Lambda 表达式和方法引用的正确性。:函数型(输入 T,返回 R),如字符串转长度。:断言型(返回布尔值),如判断字符串是否为空。:供给型(无输入,返回数据),如生成随机数。:消费型(无返回值),如打印数据。函数式接口广泛用于集合操作,如。
2025-04-25 18:49:56
1133
原创 Flowable源码:CommandExecutor CommandInvoker CommandInterceptor CommandContext Agenda
是一组高度解耦但紧密协作的核心组件,其设计基于命令模式和责任链模式,并辅以上下文管理和流程调度机制。这种设计不仅支持灵活的业务扩展(如自定义拦截器),还确保了复杂流程的高效执行与事务一致性。Flowable通过命令模式封装操作、责任链模式处理扩展逻辑、Agenda调度流程流转,配合。• 通过拦截器链实现逻辑解耦,支持动态添加拦截器(如日志、权限校验)。• 通过循环弹出队列中的操作并执行,实现流程的逐步推进。方法,隐藏命令执行细节,例如事务管理和上下文绑定。方法,触发业务逻辑(如启动流程、完成任务)。
2025-04-25 18:38:23
946
原创 Flowable源码:Data Managers与Entity Managers 角色设计
• Data Managers 制定策略(如数据质量标准),Entity Managers 执行策略(如通过事务保证数据一致性)。• 复杂系统需求:在分布式或高并发系统中,实体管理器负责本地事务与缓存,数据管理员则统筹全局数据一致性。• 问题溯源与修复:当数据异常时,数据管理员分析根因(如数据源问题),实体管理器修复具体记录。• 性能与安全的平衡:数据管理员制定安全策略(如加密字段),实体管理器在查询时应用加解密逻辑。◦ 数据治理:制定数据策略、架构设计、质量管理标准,确保数据一致性。
2025-04-25 18:15:04
367
原创 FeignClient配置超时时间 单独配置 全局配置
三种FeignClient超时时间设置:1、全局默认超时时间2、对整个接口类单独配置超时时间3、对单独Feign方法设置超时时间
2022-06-29 12:19:35
9689
原创 Mybatis源码:MapperProxy 代理模式
代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。何时使用:想在访问一个类时做一些控制。如何解决:增加中间层
2022-03-10 19:53:16
509
1
原创 Mybatis源码:Cache 装饰器模式
装饰器模式介绍装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在不
2022-03-10 10:33:11
217
原创 Mybatis源码: Builder Mapper Executor
by yan 20220302以下为Activiti 构造 initSqlSessionFactory时,完成Mybatis 的 DefaultSqlSessionFactory的过程。时序图MyBatis解析xml配置文件通过XMLConfigBuilder等一系列Builder类解析为Mapper对象模型关键代码 //XMLConfigBuilder.parseConfiguration private void parseConfiguration(XNode root) {
2022-03-02 19:54:20
458
1
原创 Activiti源码 之Command与 CommandInterceptor
by yan 20220228Activiti 命令拦截器 执行过程Activiti每发执行一个Command时都会经过一个责任链模式的命令拦截器(采用命令模式实现的拦截器),执行一系列的CommandInterceptor 。具体过程如下,以Activiti默认的id生成器为例子:Activiti默认id生成策略默认采用的是org.activiti.engine.impl.db.DbIdGenerator时序图注:如果在高并发的场景下,可能一个线程读取一段block之后,还没有来得及upd
2022-02-28 12:20:20
847
原创 Activiti源码 ProcessEngineConfiguration
by yan 20220223ProcessEngineConfiguration 类图
2022-02-28 10:35:25
425
转载 spring事务传播属性
spring事务传播属性在 spring的 TransactionDefinition接口中一共定义了六种事务传播属性:PROPAGATION_REQUIRED – 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。PROPAGATION_SUPPORTS – 支持当前事务,如果当前没有事务,就以非事务方式执行。PROPAGATION_MANDATORY – 支持当前事务,如果当前没有事务,就抛出异常。PROPAGATION_REQUIRES_NEW – 新建事务,如果当前存在
2022-02-23 19:06:21
1088
原创 数据库操作的隔离级别 Transaction Isolation Levels
by yan 20220223ANSI/ISO Transaction Isolation Levels(ANSI/ISO标准的隔离级别)(1)未提交读(read uncommitted)(2)提交读 或 不可重复读(read committed)(3)重复读(repeatable read)(4)序列化(Serializable)isolation levels 的一些表现(1)Dirtyreads(脏读)Atransaction reads data that has been
2022-02-23 17:06:07
979
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人