- 博客(781)
- 资源 (3)
- 收藏
- 关注
原创 使用Esprima解析JavaScript代码
Esprima 是一个用于解析 JavaScript 代码的库,它可以将源代码转换为抽象语法树(AST)。Esprima 的主要目的是为 JavaScript 代码分析工具提供基础,例如代码检查、代码重构、代码高亮等。
2025-02-19 10:57:47
427
原创 使用acorn-typescript解析TypeScript代码
acorn-typescript 是一个用于解析 TypeScript 代码的库,它可以将源代码转换为抽象语法树(AST)。Acorn TypeScript 的主要目的是为 TypeScript 代码分析工具提供基础,例如代码检查、代码重构、代码高亮等。
2025-02-18 08:10:47
211
原创 使用typescript-parser解析TypeScript代码
typescript-parser 是一个用于解析 TypeScript 代码的库,它可以将源代码转换为抽象语法树(AST)。typescript-parser 的主要目的是为 TypeScript 代码分析工具提供基础,例如代码检查、代码重构、代码高亮等。
2025-02-17 23:27:39
278
原创 使用mockttp库模拟HTTP服务器和客户端进行单元测试
mockttp 是一个用于在 Node.js 中模拟 HTTP 服务器和客户端的库。它可以帮助我们进行单元测试和集成测试,而不需要实际发送 HTTP 请求。
2025-02-04 20:30:55
632
原创 Maven运行任何命令都报错“Internal error: java.lang.ArrayIndexOutOfBoundsException”
最后抱着试试看的心态升级了一下maven版本,从原先3.3.3升级到3.8.8,问题解决了,但是具体原因还是不明。还有说是 ~/.m2/settings.xml 文件有错误,我干脆把这个文件删除了,问题还在。
2025-01-23 21:15:48
1000
原创 NestJS中实现注入多个实现了同一个接口的Service
通过以上步骤,我们实现了在NestJS中注入多个实现了同一个接口的service的功能,这种变通的方法可以解决一些特殊场景下的注入问题。
2025-01-20 21:22:25
371
原创 Maximo 中 Automation Script 之间调用的几种方式
Maximo中AutomationScript之间调用可以通过下面几种方式实现。
2025-01-19 19:56:05
270
原创 Java脚本引擎Nashron中使用继承实现多线程编程
在Java脚本引擎Nashron中,可以使用Java.extend()实现继承,今天正好要在Nashron中实现一个多线程的功能,考虑到要使用java.lang.Runnable接口,正好可以使用Java.extend()来实现继承。测试程序,在Java中调用js文件,并执行js中的test()函数。
2025-01-17 23:32:57
234
原创 使用 RxJS 库实现响应式编程
RxJS(Reactive Extensions for JavaScript)是一个用于响应式编程的库,它使得处理异步数据流变得更加简单和优雅。通过使用 Observables(可观察对象),你可以轻松地处理事件、HTTP 请求、定时器等异步数据源。
2025-01-04 17:01:49
335
原创 Java中使用nashorn脚本压缩文件问题
今天在使用nashorn脚本压缩文件的时候,压缩文件后再解压后看的的文件大小是正确的,但是在使用md5检查文件的时候发现md5码却不一样,下面是最初的压缩文件代码。上面的代码最初是从工作正常的java代码翻译过来的,看着似乎没啥问题,执行也没有报错,就是压缩再解压后文件就不对了。
2025-01-03 12:13:26
189
原创 NestJS中使用nestjs-plugin-module实现插件系统
首先,我们需要定义一个插件接口,这个接口定义了插件需要实现的方法。接下来,我们需要定义一个模块和一个提供者,这里提供者引用了上面的插件实例,并且调用插件实例中的方法。另外提供者还提供了一个setHelloServicePlugin()方法,用来在后面动态设置插件实例。
2024-12-24 09:34:17
398
原创 NestJS中使用DynamicModule构建插件系统
在NestJS中,模块是组织代码的基本单元,它将相关的服务和控制器组织在一起。然而,在某些情况下,我们可能需要根据不同的条件动态加载模块,以满足不同的业务需求。这时,就可以使用DynamicModule了。DynamicModule是NestJS提供的一种动态加载模块的方式,它允许我们在运行时动态地加载模块,下面就看看怎样通过DynamicModule构建插件系统。下面例子创建了一个插件文件,其中定义了一些方法,用于动态加载;创建了一个插件加载模块,用来加载上面的插件文件;
2024-12-23 19:51:56
586
原创 NestJS中使用DynamicModule实现模块动态加载
在NestJS中,模块是组织代码的基本单元,它将相关的服务和控制器组织在一起。然而,在某些情况下,我们可能需要根据不同的条件动态加载模块,以满足不同的业务需求。这时,就可以使用DynamicModule了。DynamicModule是NestJS提供的一种动态加载模块的方式,它允许我们在运行时动态地加载模块,看下面的例子。
2024-12-22 19:52:49
351
原创 VNC修改默认端口
通常情况下我们在启动vncserver时,默认的vnc端口是5900,也可以在启动的时候指定端口,比如“vncserver :1”会使用5901端口,依次类推。但是如果我们想修改默认的5900端口,或者就想固定一个端口,比如使用RDP的3389端口,该怎么做呢?此时我们可以修改vnc的启动脚本 /usr/bin/vncserver 文件,找到5900相关行,修改成固定端口,比如这里的3389。然后重新启动vnc,比如:“vncserver :n”,这里端口号实际没有具体意义了。
2024-12-04 14:04:07
1982
原创 NestJS中使用useFactory注入之二
接前一篇文章,我们在person.service.ts中我们使用了抽象类作为两个具体实现类的父类,但是用抽象类总感觉没有接口更合适,今天看看如果使用接口应该怎么使用useFactory,看下面列子。
2024-11-28 09:29:39
281
原创 NestJS中使用useFactory注入之一
接前一篇文章,针对一个接口或抽象类有多个实现的场景,除了使用useClass解决外,还可以使用useFactory来解决,看下面列子。
2024-11-28 09:27:01
439
原创 NestJS中使用useClass注入
但是如果此时我们的service类有多个实现,具体使用哪个实现类需要根据环境来决定时,应该怎么处理呢?这里模块类person.module.ts大致有如下内容。在NestJS中通常一个模块有如下结构。
2024-11-27 09:03:50
477
原创 AWS S3在客户端应用不能使用aws-sdk场景下的文件上传与下载
通常情况下,应用程序上传文件到AWS S3,会使用aws-sdk,但是有些情况下,客户端应用会有安装限制,比如不能安装aws-sdk,此时我们就需要通过其他方式实现文件上传与下载。这里我们提供一个服务端,在服务端安装aws-sdk。对于文件上传,服务端通过aws-sdk生成一个upload policy,然后将这个upload policy返回给客户端,客户端通过这个upload policy上传文件。
2024-11-06 18:43:54
827
原创 开源自动化测试工具Playwright
Playwright 是一个开源的自动化测试和网页抓取工具,由微软开发。它支持 Chromium、Firefox 和 WebKit 三种浏览器,可以用于编写端到端的测试、网页抓取和自动化任务。具有跨平台,支持多种浏览器,并行执行,截图和视频录制等功能。
2024-10-28 08:02:12
349
原创 nodejs包管理器pnpm
速度更快,pnpm在安装依赖时,会将依赖包缓存到全局目录,下次安装相同的依赖包时,会直接从缓存中获取,而不会重新下载,从而加快了安装速度。节省磁盘空间,pnpm在安装依赖时,会将依赖包的文件内容进行硬链接,而不是复制,从而节省了磁盘空间。
2024-10-27 20:22:30
507
原创 Ubuntu24.04配置samba共享
下面命令创建一个系统用户并将该用户添加到上面创建的 Samba 组中。此外由于是系统用户,因此不会创建主目录。在windows资源管理器上输入: \\sambashare 即可访问。
2024-10-26 19:40:57
1286
1
原创 Maximo 使用 Script with Object Lanuch Point 实现对象特定事件脚本
比如我们可以定义一个针对WORKORDER对象的"AutomationScriptwithObjectLanuchPoint",当WORKORDER对象被保存时触发执行,这里的保存可以是添加、修改和删除三种情况。脚本创建后,无论我们从页面添加/修改/删除workorder,还是通过restapi添加/修改/删除workorder,都会触发执行该脚本。
2024-10-15 15:25:13
452
原创 Maximo Automation Script导出与使用
以前的文章介绍了AutomationScript的使用,以及AutomationScript之间如何调用。今天换一种方法看看怎样在AutomationScript中导出和使用函数和对象。
2024-10-12 16:00:09
430
原创 在 TypeScript 中使用 reflect-metadata 库实现反射
定义元数据${} }} }访问类元数据输出结果分别定义类装饰器和方法装饰器使用装饰器${} }} }获取元数据输出结果reflect-metadata 是一个强大的库,它可以在 TypeScript 中实现元数据反射。通过使用装饰器和反射机制,可以轻松地在运行时访问和操作元数据,从而实现更灵活和强大的功能。
2024-10-08 09:32:48
873
原创 Java 中使用 JavaScript Nashorn 引擎
Nashorn是Java8中引入的JavaScript引擎,它允许在Java应用程序中嵌入和执行JavaScript代码。但是在JDK15中,Nashorn已经被移除,取而代之的是新的JavaScript引擎,即GraalVM。如果要继续使用Nashorn,需要引入相应的依赖。
2024-10-07 21:14:04
1385
原创 使用 typed-rest-client 进行 REST API 调用
是一个用于 Node.js 的库,它提供了一种类型安全的方式来与 RESTful API 进行交互。
2024-09-23 20:55:19
438
原创 Git命令报错ERROR: You‘re using an RSA key with SHA-1, which is no longer allowed.
我们将id_ecdsa.pub文件内容复制到 github -> Settings -> SSH and GPG keys -> New SSH Key。错误原因是github现在不再支持SHA-1的加密方式了。因此需要将SHA-1的加密方式修改为ECDSA的方式。命令执行完成后会在~/.ssh目录中产生两个文件id_ecdsa和id_ecdsa.pub,分别为私钥和公钥。如果出现上面的提示,说明 ssh key 已经配置成功。执行下面的命令生成ECDSA密钥。然后运行下面命令验证。
2024-09-23 08:27:37
427
原创 NestJS中使用Guard实现路由保护
Guard是一个实现了CanActivate接口的类。它可以在路由处理之前执行一些逻辑,例如验证用户身份、检查权限等。如果Guard返回true,则路由处理将继续执行。如果Guard返回false,则路由处理将被中止,并返回一个错误响应。Guard是NestJS中一个非常强大的工具,可以用于保护路由。通过创建一个实现了CanActivate接口的类,并在需要使用它的路由处理器或控制器上添加@UseGuards装饰器就可以轻松地使用Guard。
2024-09-10 07:37:59
437
原创 NestJS中使用拦截器
拦截器是一个实现了NestInterceptor接口的类。它可以在请求处理的不同阶段执行一些操作,例如在请求到达控制器之前或之后执行一些逻辑。拦截器可以用于日志记录、验证、转换请求和响应等任务。拦截器是NestJS中一个非常强大的工具,可以用于在请求处理的不同阶段执行一些操作。通过创建一个实现了NestInterceptor接口的类,并在需要使用它的路由处理器或控制器上添加@UseInterceptors装饰器,可以轻松地使用拦截器。
2024-09-09 08:20:03
456
原创 创建 typescript 项目.md
有时候需要创建一个最简单的 typescript 项目来验证一些东西,这里记录一下如何创建一个最简单的 typescript 项目。
2024-09-06 21:55:18
342
原创 使用 ngrok SDK 实现应用程序内网穿透
ngrok 除了可以通过命令行的方式使用以外,还可以通过 SDK 的方式来实现。ngrok针对主要的编程语言都提供了 SDK,这里以 node.js 为例,看看如何使用 ngrok SDK 实现应用程序内网穿透。
2024-09-06 00:12:20
273
原创 Github配置ssh key
登录 Github -> 右上角图标 -> Settings -> SSH and GPG keys -> New SSH key -> Title 随便填写 -> Key 复制 id_rsa.pub 文件内容粘贴到 Key 中 -> Add SSH key。生成ssh key之前先检查本地主机是否已经存在ssh key,检查 “~/.ssh” 目录下是否存在 id_rsa 和 id_rsa.pub 文件,如果存在,说明已经有 ssh Key。如果出现上面的提示,说明 ssh key 已经配置成功。
2024-09-05 09:46:51
1939
原创 mariadb容器
上面命令会启动一个名为my-mariadb的容器,并初始化一个testdb数据库,同时设置root用户的密码为Letmein。启动一个容器并使用并连接到容器中的testdb数据库。
2024-09-04 07:52:51
652
1
原创 Postgres容器使用
下载postgres镜像$ sudo docker pull postgres启动postgres容器$ sudo docker run --name mypostgres -e POSTGRES_PASSWORD=Letmein -d -p 5432:5432 postgres上面命令会启动一个名为mypostgres的容器,并且设置postgres用户的密码为Letmein。如果在启动容器的时候需要执行一些初始化操作,我们可以写一些脚本(比如:.sh或者.sql),然后放到scripts文
2024-09-03 11:24:54
555
原创 创建并发布 Scoped NPM 模块
接前一篇文章,如果创建的 NPM 包在 NPM 上已经存在,那么此时可以修改包名,或者通过Scoped NPM包的方式发布。Scoped NPM包是指那些以@符号开头的NPM包,这些包通常用于组织内部的项目。
2024-08-08 09:02:17
227
Full Stack GraphQL Applications With React, Node.js, and Neo4j
2024-03-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人