- 博客(383)
- 资源 (5)
- 收藏
- 关注
原创 android room Migration didn‘t properly handle(com.xx.entity) Expected:xxx Found...的解决
方法作用适用场景任意版本升级 / 降级时,若迁移脚本缺失 / 失败 →销毁数据库并重建测试环境、数据可丢失的场景仅当数据库版本降级时(如从版本 3→2),迁移失败则销毁重建;升级时仍严格校验生产环境需避免降级数据丢失,但允许降级时清空数据是更温和的破坏性策略—— 只在 “版本降级” 时兜底,升级时仍会严格校验表结构(比如你之前的字段不匹配,升级时依然会崩溃)。
2025-12-21 16:06:16
807
原创 android 权限申请的一点理解(理论)
本文详细解析了Android应用中读写SD卡权限的申请流程和实现逻辑。核心要点包括:1) 权限申请器初始化仅注册回调通道,不触发任何操作;2) 权限状态通过checkAndRequestSqliteRWPermission()主动申请后,由用户操作决定;3) allGranted状态由系统返回的读写权限结果解析生成;4) goToAppSetting()仅作为授权失败的备选方案。文章通过代码示例和时序分析,阐明了权限申请的安全解析方法(getOrDefault)和完整流程链路,强调allGranted参数的
2025-12-05 17:22:37
896
原创 nginx -s reload 报 nginx: [error] OpenEvent(“Global\ngx_reload_7372“) failed (5: Access is denied)的解决
摘要:解决Nginx配置修改后不生效的问题,主要原因是Windows权限不足。核心解决方案:1.以管理员身份运行命令行,执行nginx-sreload;2.若仍报错,终止Nginx进程(taskkill/f/imnginx.exe)后重启;3.检查端口占用情况(netstat-ano);4.进阶方案可修改Nginx事件对象权限;5.最终可重新安装Nginx。大多数情况通过管理员模式运行命令行+重启Nginx即可解决,因Windows对全局事件对象的访问限制需要管理员权限。
2025-11-26 19:40:42
881
原创 android room中实体类变化以后如何迁移
处理迁移的主要方式是创建一个Migration对象,该对象指定了如何将旧结构转换为新结构。这通常通过SQL 语句来完成。方案适用场景实现方式Migration类简单 / 复杂的结构变化定义 SQL 语句来转换数据自动迁移简单变化(添加可空列等)启用并使用默认值两步法迁移重命名表 / 列、更改数据类型创建临时表、复制数据、重命名通过遵循这些方案,你可以安全地修改 Room 数据库的结构,同时保留用户数据。
2025-11-23 13:35:51
831
原创 android studio引用三方库的方法,比如SmartRefreshLayout
本文介绍了Android开发中三方库的使用流程。以SmartRefreshLayout为例,首先在项目中引入库地址,常见的有阿里云等镜像源。但有时会出现下载失败问题,原因是镜像源可能缺少特定版本(如2.1.1版本)。解决方法是将官方源地址https://repo1.maven.org/maven2/配置到settings.gradle文件中,确保能找到完整的库资源。文章强调了正确配置源地址的重要性,以及如何通过修改配置解决下载失败的问题。
2025-11-22 15:53:23
461
2
原创 docker安装mysql5.7 / mysql8
本文介绍了Docker的汉化安装及MySQL容器配置过程。首先从GitHub下载Docker汉化补丁,Windows系统需将asar文件重命名为app.asar后进行替换安装。接着详细说明了拉取MySQL 5.7/8.0镜像的操作步骤,重点讲解了包含端口映射、数据卷挂载和环境变量配置的容器启动命令,并提供了my.cnf配置文件的完整内容示例。最后演示了在MySQL 8.0中创建utf8mb4编码数据库的操作,并分享了从MySQL 5.7升级到8.0的实践经验,包括清理旧版本数据文件等注意事项。
2025-11-20 11:59:47
362
原创 android 网络访问拦截器使用后的bug处理
文章摘要:本文分析了Android客户端调用接口时遇到的405错误问题。核心原因是由于JSESSIONID未及时更新导致header鉴权失效,解决办法是在拦截器中添加清空缓存JSESSIONID的方法,确保每次登录成功后获取最新值。同时强调与服务器交互时保持auth信息一致性的重要性,并介绍了拦截器自动处理请求header的实现方式。
2025-11-09 15:57:51
1123
原创 html5与android之间相互调用
本文介绍了H5与Android原生交互的常用方法:1)H5调用原生方法通过JavaScriptInterface,可传递简单参数、JSON对象或实现回调;2)Android通过evaluateJavascript调用H5方法,支持参数传递和返回值获取。注意事项包括线程处理、安全问题和参数格式规范。典型应用场景包括显示弹窗、页面跳转、状态同步等,这些方法能满足混合开发的核心需求。
2025-11-01 17:15:13
868
原创 Jetpack Compose Material 扩展图标的简单使用
本文介绍了在Android开发中使用Compose获取图标资源的两个方法。首先是官方提供的Material图标库,但功能有限,缺少如显示/隐藏等常用图标。其次推荐引入扩展图标库material-icons-extended来补充资源,并说明其Default和Filled样式实际效果一致。该方法能有效解决基础图标库不足的问题。
2025-10-29 10:58:05
242
原创 kotlin中的let的使用
Kotlin中的let函数是一个实用的作用域函数,主要特点包括:1) 当对象非null时执行代码块;2) 通过it引用对象并创建独立作用域;3) 返回值为lambda表达式最后一行结果。常与安全调用操作符?.配合使用,实现优雅的空安全处理,避免null异常。该函数特别适合对可能为null的对象进行链式操作和转换。
2025-10-24 16:21:15
183
原创 git push 报没有权限,但是不弹出框输入用户名密码的解决
文章摘要:在Git仓库初始化提交时遇到权限问题,提示无法提交。解决方法是通过强制推送命令git push -u origin master --force或-f参数覆盖远程仓库内容,从而解决权限验证失败的问题。这种方法会强制更新远程分支,但需谨慎使用以避免覆盖他人提交。
2025-10-21 19:28:05
218
原创 Hilt,更新android studio后,直接报 Unexpected annotation value:rootComponentPackage的简单处理
Hilt中的rootComponentPackage是用于指定根组件所在包名的关键配置项,决定了依赖注入代码的生成路径。它必须与@HiltAndroidApp注解的Application类包名一致,否则会引发编译错误。通常Hilt会自动识别包名,但在多模块项目中可能需要手动配置。一个常见解决方案是升级Hilt版本(如到2.27.2),特别是当问题出现在IDE升级后。该配置一旦确定不建议频繁修改,否则可能导致依赖注入链路问题。在build.gradle中可通过annotationProcessorOption
2025-10-18 17:36:25
352
原创 spring boot 2.x 与 spring boot 3.x 及对应Tomcat、Jetty、Undertow版本的选择(理论)
SpringBoot 2.x与3.x的核心差异在于Java版本、Jakarta EE规范及性能优化。3.x要求Java 17+,采用jakarta.*包名,支持GraalVM原生镜像,启动更快且内存占用更低。对于新项目,建议直接使用3.x以获得最新特性和长期支持;若受限于Java版本或依赖兼容性,可暂用2.x。类似地,Tomcat/Jetty/Undertow从9.x/2.0升级到10+/2.2+也需考虑Jakarta EE迁移和Java 11+要求,新项目应优先选择新版以获得性能提升和安全更新。
2025-10-11 17:11:36
1021
原创 vxe-grid在树形模式下通过$grid.getTableData().fullData无法获取到所有数据的简单处理
摘要:本文探讨了在启用树形结构时获取表格数据的解决方案。当启用树形模式时,getTableData下的属性(footerData、fullData等)无法获取全部记录,建议通过proxyInfo.data获取数据。若需使用fullData,需禁用树形模式。同时提供了启用/禁用树形模式的具体设置方法,帮助开发者灵活应对不同场景下的数据获取需求。(99字)
2025-10-03 17:26:47
243
原创 spring boot项目使用tomcat发布,也可以使用Undertow(理论)
Undertow和Tomcat是两种主流的JavaWeb服务器,设计理念和适用场景各有不同。Undertow由JBoss开发,主打高性能、轻量级和嵌入式特性,采用非阻塞I/O模型,内存占用低且启动速度快,适合微服务和高并发API场景。Tomcat由Apache开发,功能全面且稳定,支持多种I/O模型,是企业级应用的标准选择。实际测试显示,Undertow比Tomcat节省20%-30%的内存,特别适合资源受限的云原生环境。选择时,若追求性能和轻量级,推荐Undertow;若需要丰富功能和稳定性,Tomcat
2025-09-30 19:00:45
1230
原创 vxe-grid @edit-closed方法不被执行或者叫不触发
本文介绍了vxetable表格编辑功能的配置方法。首先说明编辑列的标准配置流程:1)设置editConfig参数;2)定义edit-closed事件处理方法;3)配置editRender编辑器。然后指出当未在列设置中定义editRender时,edit-closed事件不会执行的问题解决方案:通过手动触发$table.clearEdit()和updateData()方法,并调用editClosedEvent方法。最后介绍了如何启用表格底部汇总功能,包括定义sumNum计算方法和footerMethod汇总方
2025-09-28 20:26:48
335
原创 Ambiguous mapping. Cannot map ‘userController‘ method
SpringBoot项目运行时出现"Ambiguous mapping"错误,原因是Controller中存在两个同名方法导致映射冲突。解决方案有两种:1)修改其中一个方法的名称;2)直接删除其中一个同名方法。这种错误通常发生在@RequestMapping注解的方法重名时,只需确保每个请求映射的方法名称唯一即可解决。
2025-09-28 15:03:49
134
原创 Elasticsearch Kibana Logstash 理论
ELK(Elasticsearch、Logstash、Kibana)是一套日志处理分析工具组合:Logstash负责数据采集清洗,Elasticsearch进行存储检索,Kibana实现可视化展示,形成完整数据处理闭环。三者关系可形象类比为餐厅运营:Logstash是采购洗菜工,Elasticsearch是后厨仓库,Kibana则是服务员将数据"菜品"呈现给用户。该套件通过明确分工协作,实现从数据收集到分析展示的全流程处理。
2025-09-22 09:14:46
389
原创 elasticsearch 的配制
本文介绍了Elasticsearch 7.17.3的安装与配置过程。主要包括:下载对应版本的ES和IK分词器插件,配置JDK11环境变量;安装时将分词器解压到plugins目录;启动时可能遇到GeoIP连接问题,可通过禁用或下载离线版解决。文章还概述了Elasticsearch的核心特性(分布式架构、实时搜索、RESTful API等)、基本概念(索引、文档、分片等)以及常见应用场景(日志分析、全文检索等)。最后提供了索引创建、文档操作等基本API示例和部署配置建议。
2025-09-21 16:27:17
1232
原创 utf8mb4_bin 与 utf8mb4_generate_cli区别
MySQL中utf8mb4_bin和utf8mb4_general_ci是两种排序规则,主要区别在于:1)utf8mb4_bin按二进制编码排序,区分大小写和重音符号,适用于密码、唯一标识等需要精确匹配的场景;2)utf8mb4_general_ci不区分大小写和重音,适合常规文本查询。选择建议:需要严格区分字符差异时用_bin,常规文本搜索用_general_ci。此外utf8mb4_unicode_ci支持更复杂的语言排序规则但性能稍低。
2025-09-20 17:15:19
407
原创 spring security 简单使用
本文介绍了如何创建一个基于Spring Security的登录注册示例项目。主要内容包括:1) 创建Maven项目并配置pom.xml依赖,引入Spring Boot、Spring Security、Thymeleaf等核心组件;2) 配置安全过滤器链,设置URL访问权限、表单登录和注销功能;3) 使用InMemoryUserDetailsManager实现内存用户存储,预置测试用户(user/password);4) 提供注册功能页面,支持新用户注册;5) 说明高版本(5.7+)使用SecurityFil
2025-09-19 15:54:22
400
原创 认证(Authentication)和授权(Authorization)(理论)
本文对比了Shiro和SpringSecurity在认证与授权方面的实现差异。Shiro采用简洁的三层架构(Subject+SecurityManager+Realm),认证流程直观,授权支持角色和权限两种粒度,适合中小型项目。SpringSecurity基于过滤器链实现,深度集成Spring生态,支持多种认证方式,授权机制更灵活但配置复杂,适合大型项目。核心差异体现在架构设计、集成性、认证方式支持度和授权灵活性等方面,开发者可根据项目规模和安全需求进行选择。
2025-09-18 16:33:20
1163
原创 sqlserver 写一条语句去掉重复的记录
【SQL删除重复权限记录】摘要:通过内连接查询权限表(purivewTable)中roseId和moduleId组合重复的记录,保留较小ID值,删除较大ID值的重复项。操作步骤:1)先查询出重复记录中ID较大的记录;2)执行删除操作。该SQL语句可有效清理权限表中的冗余数据,确保每个roseId-moduleId组合的唯一性。
2025-09-16 17:42:26
114
原创 vue3 页面传值与SFC的用法如何共用,及现实开发中碰到的问题处理
Vue3单文件组件(SFC)中提供了多种传值方式:1)父子组件通过props/emits通信;2)跨层级组件使用provide/inject;3)路由组件间通过路由参数传递;4)全局状态使用Pinia管理。针对特定场景,可将页面组件改造成子组件,通过props实现数据传递,避免直接跳转,保持业务逻辑复用和代码一致性。实际开发中需根据项目需求灵活选择传值方式,平衡开发效率与维护成本。
2025-09-04 11:32:23
529
2
原创 ts Promise的使用
本文介绍了TypeScript中Promise的概念和应用,通过一个基于JSONPlaceholder API的示例展示了Promise如何优化异步操作。Promise的三种状态(pending、fulfilled、rejected)确保了异步操作的可控性。文章详细解析了fetchData函数的实现,包括请求发送、响应处理、错误处理和超时机制等关键环节。示例代码演示了如何使用Promise.all进行并行请求,以及自动重试等增强功能。通过Vue组件展示了数据获取的完整流程,包括加载状态、错误处理和UI渲染。
2025-08-24 15:07:24
1113
原创 Nest.js、Knex.js、Nuxt.js、Next.js 和 Spring Boot的异同相关概念
Nest.js、Knex.js、Nuxt.js、Next.js和SpringBoot分属不同技术领域,具备服务端能力和数据库交互支持。Nuxt.js(Vue)和Next.js(React)是前端框架,支持SSR/SSG;Nest.js是Node.js后端框架;Knex.js是Node.js数据库工具;SpringBoot是Java企业级框架。它们都可提升开发效率,但定位不同:Nuxt/Next侧重前端渲染,Nest/SpringBoot专注后端服务,Knex专精SQL操作。典型组合包括全栈JS方案(Vue/
2025-08-14 11:51:54
995
原创 antdv Modal的简单使用
AntDesignVue的Modal组件是一个功能丰富的弹窗控件,支持自定义显示/隐藏(title、width)、遮罩层(mask)和关闭行为(closable、maskClosable)。提供按钮配置(okText、cancelText)和事件监听(@ok、@cancel)。可通过v-model绑定visible状态,支持模板内声明式调用或服务端API方式(Modal.info/success/confirm)。典型使用场景包括信息展示、表单提交和操作确认,支持内容自定义和回调处理,是构建交互式界面的常用
2025-08-13 16:36:39
653
原创 vue3 关键词查询 防抖
Vue3中实现防抖功能可通过自定义hook或lodash-es库实现,适用于搜索框、窗口resize等频繁触发场景。自定义hook(useDebounce)通过watch监听值变化并延迟更新,可复用且灵活设置延迟时间。lodash-es方案更成熟,提供cancel等高级功能。两种方式都能有效减少不必要的API调用,提升性能。测试表明防抖后只在输入停止时触发请求,显著降低服务器压力并获取有效数据。实现时需根据项目需求选择方案,注意组件卸载时取消防抖。
2025-08-07 16:12:49
532
原创 KeytoolException: Failed to read key AndroidDebugKey from store “c:\Users\...\debug.keystore“
摘要:解决Android编译报错"无法读取debug.keystore"问题,主要方法包括:1)删除.android/debug.keystore文件让AS自动重建;2)检查密钥库密码(默认"android")或在build.gradle中配置;3)使用keytool手动生成密钥库;4)排查文件权限或IDE缓存问题。该问题常见于多版本AS共存或密钥库损坏的情况,通过清理项目/重启IDE也可解决。
2025-08-03 16:24:21
496
原创 vue3 import 与 const 定义组件的时候,区别在哪里,为什么import可以生效,而const定义的不生效...
本文对比了动态导入与静态导入的区别。动态导入(()=>import())按需加载组件,适合路由懒加载,减少初始资源但首次加载有延迟;静态导入(import)则立即加载所有组件,增大初始体积但使用无延迟。在路由配置中,静态导入直接使用组件对象,而动态导入需作为函数调用。创建动态路由时,若使用const定义的导入函数,必须调用该函数(如loadComponent())而非仅引用函数名。正确做法是直接使用箭头函数或调用预先定义的函数来确保组件加载。
2025-07-30 10:06:24
1024
原创 AI 编程时代,稀缺力已从 “代码实现能力” 转向 “复杂问题拆解与创新设计能力”
AI时代编程人员的核心竞争力正从代码编写转向业务问题解决能力。文章从稀缺力构成、心态转型和实战方法三个维度分析:1)核心能力包括业务逻辑拆解(如Vue购物车状态同步)、系统架构设计(如权限系统全局规划)和技术选型决策;2)需建立"工具思维"而非依赖AI,以业务为导向持续学习;3)实战中应精准提问引导AI,对生成代码进行功能、性能、安全三重校验,将重复工作交给AI而专注核心设计。最终开发者应成为技术解决方案的设计者,用AI处理实现细节,自身聚焦业务价值转化。
2025-07-29 15:24:37
771
原创 shiroFilterFactoryBean中增加map.put(“/**“, “authc“);后,rememberme不生效, 一去掉就好了,是什么原因导致 ,及shiro的流程
摘要:Shiro中RememberMe功能失效的主要原因是使用authc过滤器而非user过滤器。authc要求用户必须通过登录页面认证,而user允许通过RememberMe自动登录的用户访问。解决方案包括:1)将/**映射改为user过滤器;2)为需要RememberMe的页面单独配置user过滤器;3)正确配置RememberMeManager。调试时需检查Cookie存储、Shiro日志及加密密钥一致性。RememberMe工作原理是通过加密Cookie实现自动登录,而authc过滤器会忽略该Coo
2025-07-23 21:45:14
790
原创 shiro的SecurityUtils.getSubject() 使用说明
用户认证(登录 / 登出)权限检查(角色 / 权限验证)会话管理身份信息获取合理使用这个方法,可以在应用的任何层次(Controller、Service、工具类)安全地访问当前用户信息,实现细粒度的权限控制。六、一点说明1)RememberMe失效,不一定是配制的问题。
2025-07-23 21:26:51
1158
原创 将 height: ‘auto‘ 设置给 vxe-grid 后,表格自动滚动到了顶部,并且只显示了一点高度的解决方法
摘要:该问题涉及VxeTable表格高度设置为auto时无法自动铺满父容器的情况。分析发现关键在于必须明确父容器的高度才能实现自动填充效果。解决方案是:1.确定父容器的高度;2.将表格的height属性设置为'auto'。这样才能确保表格正确铺满父容器空间。文章通过分析VxeTableProps文档说明,指出了auto模式下必须确保存在明确高度的父节点这一前提条件。
2025-07-21 10:17:26
541
原创 vben-admin 导入并使用基础版的vxe-table
本文介绍了两种使用vxe-table的方法:1) 封装后的useVbenVxeGrid组件,通过导入封装函数并配置gridOptions实现表格渲染,支持边框、斑马纹等样式切换;2) 原生vxe-table的使用方式,需单独安装依赖并配置columns和data。针对样式问题,文中指出需要在bootstrap.ts中进行额外配置才能获得理想效果。两种方法都能实现表格功能,封装版提供了更简洁的API和内置功能,而原生版需要自行处理更多细节。
2025-07-20 14:55:39
925
原创 使用pnpm安装项目的生产依赖dependencies和开发依赖devDependies及pnpm工作空间等简单使用方法说明
本文介绍了pnpm包管理工具在生产依赖(dependencies)和开发依赖(devDependencies)的区别及使用方法。生产依赖用于生产环境,开发依赖仅用于开发阶段。文章详细讲解了基础安装命令、高级安装选项(指定版本、全局安装)、安装策略(锁定文件、生产依赖)以及验证安装结果的方法。同时提供了依赖管理技巧(批量更新、移除依赖)和常见场景示例(初始化项目、迁移项目)。还介绍了pnpm工作空间(Workspaces)的使用指南,包括初始化工作空间、创建子包、跨包依赖管理、工作空间命令和高级配置等内容,帮
2025-07-20 10:33:57
2513
原创 @types/md5 等等 类型声明文件的作用
摘要:通过pnpm安装md5库后,在TypeScript项目中需额外安装@types/md5类型声明文件以获得类型检查和智能提示。使用时直接导入md5并调用方法即可,但在Vue3组件中需要正确配置。类型声明文件能确保第三方JS库的类型安全,若遇版本冲突可通过调整tsconfig.json解决。安装时需注意包名格式为@types/md5,而非types/md5。
2025-07-19 16:07:11
463
原创 import.meta.glob 与 import.meta.env、import的几个概念的简单回顾
本文对比了前端开发中import.meta.glob与import.meta.env两个关键特性。import.meta.glob用于基于glob模式动态导入多个模块(如批量加载组件),在构建时静态分析并优化代码;import.meta.env则用于访问环境变量(如API地址),在运行时读取配置。两者通过import.meta对象提供,但功能互补:前者解决模块组织问题,后者处理环境配置。文章还详细介绍了在Vue3中的应用场景,包括组件注册、路由懒加载等实践,并强调了环境变量安全性、路径匹配规则等注意事项。最
2025-07-19 10:06:51
1844
原创 No catalog entry ‘md5‘ was found for catalog ‘default‘. 的简单解决方法
文章摘要:解决pnpm安装md5依赖报错问题。首先通过pnpm add -D md5 -w命令安装时遇到错误,解决方法是在pnpm-workspace.yaml文件中添加配置后重新安装。也可尝试直接运行pnpm install。最后在apps项目中成功引入md5,验证版本号显示正常后即可正常使用。整个过程涉及依赖安装、配置文件修改和项目引用验证三个关键步骤。
2025-07-17 20:15:22
477
jquery.mloading.zip
2019-10-29
android websocket推送
2016-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅