自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 pywinauto uia模式下切换选项卡不生效的解决方案

然后,可以使用LegacyIAccessible 属性的State 值,如果为0x100004说明被选中,如果这个不准确,可以对UIA_TabControl(选项卡组)检查LegacyIAccessible.Name值,被选中后,选项卡组的LegacyIAccessible.Name会变成已选中tab的名称。通过 select()会报空指针异常,但是texts()却能正确打印,有两种方式解决qt的tab无法正常通过select切换。2.通过invoke方法,element.invoke()点击指定选项卡。

2024-03-28 18:36:28 272

原创 Vue 给V-SHOW增加 高度Transition的最完美解决方案

说明:核心:设置block+v-if是不会渲染节点的,所以没法通过这样的方式实现,需要自己手动修改下,v-if时onMounted是不会拿到组件的高度的,这里就不演示了,有通过max-Height来实现的,但前提是maxHeight要和元素实际场景的高度差不多一致,适合元素固定渲染高度的场景,否则会卡一下。核心:设置block+hidden可以使得元素不可见,但是有具体的高度,但是,会占用文档流,所以需要使用absolute绝对定位使其脱离文档流避免影响页面布局。一、获取display:none的元素高度。

2024-01-28 17:16:14 341

原创 FastAPI使用loguru时,出现重复日志打印的解决方案

在uvicorn中有多个logger,分别是uvicorn、uvicorn.error、uvicorn.access。其实大家可以做个实验,我们发送请求,请求的日志是通过uvicorn.access这个logger打印的,但它却并不会出现打印三次的情况。可以看到,uvicorn.access的propagate是false,其他都为true,所以会出现日志传播,而正如上面所说,propagate可以控制日志传播。其实问题已经解决,确实是这个参数的问题。

2023-12-24 02:15:31 1502

转载 解决Naive UI使用了固定列和scroll-x后,数据表格撑开容器

具体的原因是min-width:auto,导致出现撑开的问题,因为flex伸展是取的剩余空间,此时width大于容器空间,剩余空间是负的,自然就出问题了,我们将min-width设置为0,或者width设置为0,就可以强制将整个控件的空间占为己用。顶部的蓝色为30vw宽度的容器,下方是一个Naive UI的标签页,里面放了一个数据表格。可以看到,整个标签页Tab和上方最简单的30vw容器的尺寸是一致、计算正确的。而此时我们容器设置的max-width :100 %,并不起作用。

2023-12-15 22:22:34 1753

原创 Naive UI 搭配Tailwind CSS 出现按钮变白,样式冲突,不兼容的解决

Naive UI 搭配Tailwind CSS 出现按钮变白,样式冲突,不兼容的解决,按钮底色变成白色、按钮涟漪出现绿边、字体异常等Preflight

2023-12-12 11:15:30 2088

原创 Vue在Computed计算属性下,获取Promise then的返回值无效为空

原因:Promise是异步的,如果业务逻辑不放在then内部,那么可能时机无法拿到then内返回的变量。解决方案:Vueuse库提供了异步计算属性的钩子,使用Vueuse库的computedAsync即可。建议异步操作还是放在Store的Action里面,通过async/await方式串行化执行。

2023-12-06 20:08:23 1556

原创 PaddleOCR 运行退出0xC0000409,不显示错误信息

在一台老的电脑上去运行PaddleOCR 时,发现程序输出ppocr DEBUG: Namespace后,返回错误码0xC0000409执行到ocr就闪退,不提示。说明我的cudnn 环境变量配置的不对。原因:PaddleOCR 吞了输出。

2023-11-22 17:12:34 256

原创 Go的优雅退出

【代码】Go的优雅退出。如果不使用stop,则ctrl+c不能强制退出,假设收尾工作存在死锁等行为,则无法通过Ctrl+C杀掉进程。

2023-11-13 23:06:21 1002

原创 cgo与调用c的回调函数指针

但是结构体指针不能传unsafe.pointer,可直接声明C.STRUCTXXX,是指针就传* C.STRUCTXXXX。一、构造包装函数(callOnMeGo_cgo),这里通过cgo编写一个自己的c函数,满足要调用库的callback格式就可以。③. 是否出现了释放不该释放的内容,比如说,回调传过来的结构体,通过var声明后,就进入到了Go的GC范围内,不要去C.free。的函数声明,可以放到函数体外面去,便于查看。如果只需要结构体某些字段,可以直接在这里提取后转发过去,省略了Go语言中操作的步骤。

2023-11-13 22:17:13 414

原创 JPA Buddy快速创建update、find、count、delete、exists方法

JPA Buddy快速创建update、find、count、delete、exists方法,JPA默认提供的CrudRepository\JpaRepository提供的方法比较少,一般我们会手写一些方法,这里我们选择通过JPA Buddy快速生成,之前文章中讲到了JPA Buddy原本是IDEA收费插件,无比强大;现在被Jetbrains收购后,变成了IDEA Ultimate自带的免费插件。通过JPA Buddy可以快速创建一些方法,开发效率简直太高了!

2023-11-13 00:48:45 414

原创 Spring Data JPA 实现集成实体对象数据库的创建、修改时间字段自动更新

注意,需要两个注解,MappedSuperclass代表是基础实体,不会创建数据库表,EntityListeners注解启用监听器,我们需要使用的是AuditingEntityListener这个监听器。原因::JSR 317规范指出,对实体类的生命周期操作,不应该通过EntityManager或Query注解实现,所以Audit无法捕获Query注解产生的更新。同时,CreatedDate、LastModifiedDate代表会在创建和修改时更新时间字段,包括创建时间和修改时间。

2023-11-13 00:28:41 791

原创 Spring Data JPA 项目配置与QueryDSL集成

QueryDSL需要单独引入。Spring JPA针对QueryDSL有比较好的兼容性,可以实现优雅的SQL构建。JPA Buddy的使用、安装、生成实体类,Querydsl配置、APT和JPAQuery工厂

2023-11-09 02:26:11 440

原创 Spring Data JPA 使用 AuditingEntityListener @Query注解对update语句中,更新时间不生效

JSR 317规范指出,对实体类的生命周期操作,不应该通过EntityManager或Query注解实现,所以Audit无法捕获Query注解产生的更新。解决方法是,不通过update更新数据库,使用set重新赋值后save,可以正常更新修改时间。AuditingEntityListener 不能监听Query注解 Update。

2023-11-06 18:55:00 210

原创 解决Java对接LDAP AD域登录出现Unprocessed Continuation Reference(s)错误

如果是使用Spring LDAP,则ldapTemplate.setIgnorePartialResultException(true)忽略这个报错。出现该错误的原因,主要是因为Java namingx的库,默认选项是未设置跟随,389返回的是AD域条目的引用,需要进行引用跟随。解决方法分为两种,第一类不使用全局目录服务的端口389和636,而是使用真实端口。原生LDAP登录:Context.REFERRAL设置为follow。把代码中的端口389改到3268。把代码中的端口636改到3269。

2023-11-06 16:02:34 543

原创 带过期时间的localstorage封装

localstorage原本是不带过期时间的,xijs提供了一个带过期时间封装的store工具,但是用起来因为文档基本等于没有,所以干脆直接封装一个用,其中ttl是过期时间,以毫秒计算。

2023-10-27 00:37:26 167

原创 Vite区分生产环境和开发环境部署后找不到 index.html的说明

不要使用vite build production此类,这是会引用到production/index.html 自然找不到了。使用cross-env,统一使用同一个部署,只是API接口不同。

2023-10-26 10:19:59 219

原创 现代化前端 Mock 数据的方案(MSW+faker.js)

目前前端模拟数据除了通过一些接口调试工具来mock以外,偶尔使用express、nest之类,主要是用mock.js和better-mock,这两个本质是一个东西,后者是因为前者不维护而诞生出的一个分支,支持typescript。本文主要讲另外一种方式,就是通过msw和faker.js实现模拟。msw全称Mock Service Worker,是通过Worker实现的mock。本方式相对来说比较新,也比较优雅。

2023-10-22 00:59:54 565

原创 Vue 3使用 Iconify 作为图标库与图标离线加载的方法、 Icones 开源在线图标浏览库的使用

之前一直naive-ui搭配使用的是xicons,后来发现Iconify支持的图标合集更多,因此转而使用Iconify。与FontAwesome不同的是,Iconify配合Icones相当于是一个合集,Iconify提供了快捷引入图标的方式,而Icones是一个大的图标库,收集了大量MIT协议、Apache 2.0开源的图标文件。Iconify 支持的框架很多,本文以 Vue 3 作为介绍。

2023-10-20 15:49:16 9382 2

原创 Apache Common CLI 使用方法

Apache Common CLI 用于开发命令行工具,可以实现命令参数的解析。本文章讲解了common cli的api,接口、使用案例,包括formatter打印帮助信息、DefaultParser 等

2023-10-12 19:35:09 174

原创 通过Vcpkg直接安装Qt静态链接免编译的方式

Vcpkg支持自动编译Qt静态链接版,大约只需要30min左右,解决编译困扰和配置环境带来的各种影响。支持Qt5、Qt6、自己编译不需要配置perl、python等编译速度快,问题少。解决designer.exe报错问题。配置Qt version

2023-09-18 01:58:30 6168 3

原创 解决Qt VS Tools扩展加载预编译Qt库 提示版本不匹配

提示qmake error:no value for QT_INSTALL_PREFIX/src原因:qt路径编译时,是硬编码到qmake里的,所以如果挪动了qt的目录,或者是下载其他人预编译的qt库,就会有该提示。解决方案:qmake同级别路径新建qt.conf文件。以下代码填入:然后重启Visual Studio再添加即可。

2023-09-17 21:54:47 3556 3

原创 Go工具库Lancet的使用-Slice的条件过滤和删除

Go语言的切片相当于弹性数组,但是Slice自带的方法不多,进行Slice各类操作时,可以使用Lancet库提供的一些方法,增强Slice的功能。Lancet还提供UniqueBy去重逻辑、Unique直接去重,非常好用。按指定条件删除Slice中的元素。按指定条件过滤出Slice的元素。

2023-09-11 18:17:09 153

原创 Gin中间件的异常处理和非协程的全局异常处理

Gin统一异常处理中,自己中间件的异常不能通过这个Recovery中间件去捕获,无法返回我们希望给用户返回的500错误,不像是Spring可以全部捕获到,是因为有goroutine的存在,所以需要单独处理中间件的异常。注意异常后Abort不再过后续的中间件,浪费请求资源了。

2023-09-04 10:24:52 198

原创 解决Go处理JSON出现斜杠和[]byte的json变成base64

base64是go特性使然,string()直接转就行,但会带上斜杆。通过RawMesage可以解决斜杠问题。

2023-08-08 18:17:01 656

原创 Sanic 使用 Loguru 替换默认的 LOGGING

Sanic 默认是通过 LOGGING来记录日志的,目前日志记录多半使用Loguru,且Loguru支持LOGGING接口,因此我们选择将LOGGING用Loguru替代。说明,Access Log未作特别处理,感觉也用不到,如果你需要记录访问日志建议用别的方式实现,如nginx。app内需要使用日志时,可以直接使用sanic.log下的logger,正常打印即可。上面的handlers是我自己根目录下的logger.py,自己的路径自己替换下。原理:注册InterceptHandler,接管日志打印。

2023-07-25 20:34:31 281

原创 Python 高性能Web开发 - Sanic学习路线

其中,Sanic支持异步,是后起之秀,性能极强,使用简单,官方文档详细,在大量生产环境中已经落地,进行Web开发时,建议主学Sanic+Flask两大框架,即可满足使用。sanic+redis 实现redis并发锁,实现threading.lock互斥锁、rlock可重入锁。sanic集成loguru日志框架实现日志记录。sanic+orm+cache集成缓存使用。sanic集成orm实现数据增删改查。1.了解如何创建Sanic APP。1.了解如何创建蓝图实现模块划分。2.了解如何启动Sanic应用。

2023-06-30 18:27:04 206

原创 Go库推荐

完全配置解决方案viper。HTTP请求库Resty。校验包validator。分布式任务队列aysnq。权限模型库casbin。创建CLI库cobra。字节开源的JSON库。

2023-06-26 17:22:48 85

原创 控制台输出颜色表

【代码】Java控制台输出颜色表。

2023-06-08 14:33:29 55

原创 RobotFramewrok 执行Pybot时无法读取txt用例suite的解决方案

最新版RF,默认只解析robot用例,但是又支持参数传递扩展名,所以只需要修改一下pybot.bat内容即可,测试最新rf 6.x版本支持。可以正常执行txt和robot格式用例了。

2023-06-05 16:30:29 157

原创 MQTT多客户端

注意:以下代码通过GPT生成,不保证可以运行,只提供一种思路。

2023-06-01 00:25:29 665

原创 IDEA Swing设计器 生成以后 进行打包无法运行的解决方案

通过Swing默认设计器+Apache shade进行打包,会发现提示Exception in thread "main" java.awt.IllegalComponentStateException: contentPane cannot be set to null。原因是GUI默认生成的二进制文件+forms_rt依赖导致。4.可以看到已经生成了setUp。1.修改默认生成Java源代码。2.增加forms_rt的依赖。3.重新package即可。

2023-05-24 17:59:30 563

原创 Robot Framework + Playwright 自封装关键字的实现思路

Robot Framework是目前比较强大的自动化测试框架。实际上,官方对于Pytest+Playwright讲解内容较多,但是涉及到Robot Framework的内容较少,要么就是主要利用了Playwright库实现,步骤都在用例里。

2023-05-10 22:54:01 708

原创 中后台业务Playwright iframe 获取不到

因为后台管理系统默认会进入第一个页面,当我们点击菜单进入其他页面时,上一个iframe还没来得及销毁,且因为我们点击左侧菜单的元素,元素本身是稳定的(Playwright的优雅等待实在是不会浪费1秒钟)就进入下一个操作了,这时候iframe的状态是不会影响我们进入新的菜单的,但会影响到我们后续针对进入菜单后执行的业务操作。一般我们针对元素操作,是通过frame来的,如果你只是用playwright的自带初级locator,当然framelocator也可以用于定位元素,不过功能上不太强大。

2023-05-10 19:46:23 642

原创 Python3 装饰器进阶——装饰器修饰类方法,并且装饰器调用另一个类方法

目前网络上的教法涉及到调用类内方法比较少,其实核心是在于wrapper和func需要同时传入self。

2023-05-08 21:38:25 147

原创 581. 最短无序连续子数组

【代码】581. 最短无序连续子数组。

2023-05-07 12:16:07 39

原创 Playwright基础学习——脚本执行

注意:为了兼容异步和同步,如果传回Promise,将会等待Promise执行完成有数据才会返回数值,所以可以在非async中正常用Promise脚本。page.evaluate()是基础的方法,传入一个 EvaluationArgument 实现传参。

2023-04-11 16:12:34 951

原创 Playwright基础学习——定位器

Locator是Playwright的精华所在。在Playwright以前,做Web自动化基本上都是用helium+selenium的组合,helium提供了很多好用的方法, 诸如模糊搜索、高亮等,然而在Playwright中,这些都是原生实现了。出于工程性的考虑,本处不再介绍get_role等使用较少的方法。

2023-04-11 15:33:23 2505

原创 Playwright基础学习——页面

在Playwright中,没有Element这个概念,只有Page的概念,Page不仅仅指的是某个页面,例如页面间的跳转等,还包含了所有元素、事件的概念,所以我们包括定位元素、页面转向,都是基于Page操作的。

2023-04-11 14:56:56 749

原创 Playwright基础学习——浏览器选项

在Playwright种,测试层级为。

2023-04-11 14:45:46 2070

原创 Playwright基础学习——安装

Pw一般通过pytest执行测试,但实际项目中,会涉及到其他自动化测试框架,Pw允许用户自己选择框架,比如RF等,但会失去一些pytest的优势,不过整体而言,pw仍然要比selenium优势较大,后续应该都会慢慢考虑使用playwright实现自动化。与Selenium不同的是,Pw需要使用定制版的浏览器,所以安装时请注意,官方会通过微软CDN自动下载,也支持配置外网代理下载,如果微软CDN在工作环境禁用,申请外网权限后,可以通过搭建一个跳板机进行代理下载。声明:本博客内容均为自主学习记录,非专业文章。

2023-04-11 14:10:34 1009

fastapi官网离线文档对应0.110.2版本

fastapi离线/内网文档,对应最新的0.110.2版本官网,包括中文和英文版,其他语言的已经移除,搜索功能正常。部署方式:nginx部署即可,访问URL即可打开。

2024-04-20

Garnet数据库Redis平替1.4.0版本,使用netsdk8.0编译

Garnet数据库是微软新开源的KV内存数据库,支持Reids RESP协议,但是由于是刚开源,所以没有预编译版本,需要用户自行编译,当前微软官方提供了 Linux Docker镜像,但是Windows用户使用还是比较麻烦,这里直接git clone了Garnet最新1.4.0版本并进行了编译,解压以后,可以直接在安装了NET 8.0运行时的Windows系统上运行。

2024-04-13

vue dev-tools离线安装包 chrome版本 6.6.1

Vue dev-tools浏览器扩展的下载,安装方式如下: 打开Chrome浏览器–>选择更多工具–>扩展程序–>打开开发者模式,点击“加载已解压的扩展程序” 如果找不到该方式就看下开启开发者模式再试。

2024-04-13

make 3.81 for windows

windows下使用这个 make可以能够去实现makefile的功能,一些项目使用makefile构建,对于windows用户不友好,通过安装nguwin32的make程序可以实现在windows下使用make

2023-12-26

Arthas 全量包,带as.sh和boot

Arthas Java监控组件的3.6.9全量包

2023-05-12

graalvm jdk 17 社区版22.3.1 windows版 native image 镜像

graalvm jdk 17 社区版22.3.1配套的镜像windows amd64文件,参考官方的安装部署教程安装 自行安装Build Tools,编译时需要Command Prompt下才能编译。 安装命令: 进入到这个jar根目录下 gu install -L native-image-installable-svm-java17-windows-amd64-XXXX.jar 就相当于安装完成了 然后在 Command Prompt下编译即可。

2023-03-11

JformerDesigner key

JformerDesigner key

2023-02-27

空空如也

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

TA关注的人

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