如何在 Maven 中央仓库精准查找 Maven 依赖
背景在使用 Maven 构建项目的时候,我们有时候会发现,在 Maven 提供的 https://mvnrepository.com/ 这个网站搜索出来的依赖,有时候并搜索不出来我们想要的依赖。这时候可以在 https://search.maven.org/ 中结合精准查询使用。 场景一:知道用的什么类,如何找到 Maven 依赖知道类的完整路径搜索(其中 fc 代表 full class,知道类的完整路径的时候使用): 1fc:com.google.common.collect.ImmutableSet 只知道类名搜索(其中 c 代表 class,只知道类名的时候使用): 1c:ImmutableSet 场景二:知道 Group ID 或者 Artifact ID,如何找到 Maven 依赖知道 Group ID搜索(其中 g 代表 group id,知道 group id 的时候使用): 1g:com.alibaba 知道 Artifact ID搜索(其中 a 代表 artifact id,知道 artifact id 的时候使用): 1a:druid
Maven 常用指令记录
解决 IDEA 编译爆红问题 mvn idea:idea 功能类似断点续传,爆红可能是之前有哪些包没有加载进来 invalidate cache restart -> 再重新 reimport 可能只是单纯 IDEA 缓存的问题 mvn idea:module 根目录下 .iml 文件没有可能会导致不识别 .java 文件,需要重新生成 绝大部分时候,删除项目下的 .iml 文件,再重新 import 下就可以解决问题 IDEA Maven 下载源码出现:Cannot download sources Sources not found for: xxx 12# 在对应项目 pom.xml 所在目录下执行以下命令:mvn dependency:resolve -Dclassifier=sources 记录 Maven 常用参数123456789101112131415161718192021222324252627282930-h,--help Display help informati...
配置 Maven 第三方仓库地址的两种方式
Mirror 与 Repositories 的区别Mirror mirror 相当于一个拦截器,它会拦截 Maven 对 remote repository 的相关请求,把请求里的 remote repository 地址重定向到 mirror 里配置的地址。 Repositories 步骤一:优先查询本地仓库地址是否存在,不存在,继续; 步骤二:从配置的 center repository 下载,没找到,继续; 步骤三:依次从配置的 <repositories> 下配置的一个或者多个远程仓库下载,如果均请求不到,就会报错了。 Maven 最佳配置 配置 mirror,避免中央镜像墙内网络问题 配置远程仓库地址,避免有些资源从单一仓库无法下载下来 方式一:全局配置可以添加阿里云的镜像到 Maven 的 setting.xml 配置中,这样就不需要每次在 pom 中添加镜像仓库的配置,在 mirrors 节点下面添加子节点: 配置镜像注: Maven 默认中央仓库的 id 为 central。id 是唯一的。因此可以使用 <id>central</i...
Node.js 整合 ELK + Zipkin,输出日志到 Logstash
依赖Web 框架(要求 2.7+)1"koa": "^2.13.1" 日志(基于 TCP 协议)参考:log4js-logstash-tcp 12"log4js": "^3.0.5","log4js-logstash-tcp": "^2.0.0" Zipkin参考:zipkin-instrumentation-koa 12"zipkin-instrumentation-koa": "^0.22.0","zipkin-transport-http": "^0.22.0" 代码(Zipkin 部分)123456789101112// 下游(上游略,上游改 localServiceName 即可)const { Tracer, BatchRecorder, ExplicitContext } = require('zipkin');const ...
Node.js 应用提取 Heap 并加以分析的一些常用方法
提取heap snapshot在 Node.js 的本地运行环境中,开发者可以利用多种工具来提取堆(heap)转储,以分析内存使用情况,检测内存泄漏,优化性能。以下是一些常用且有效的工具: heapdump 模块heapdump 是一个流行的 Node.js 模块,允许在运行时生成 V8 引擎的堆快照。通过这些快照,开发者可以深入分析应用程序的内存使用情况,识别潜在的内存泄漏。 安装与使用: 1npm install heapdump 在应用程序中引入并使用: 12345678910const heapdump = require('heapdump');// 在需要生成堆快照的地方调用heapdump.writeSnapshot((err, filename) => { if (err) { console.error('Heap snapshot failed:', err); } else { console.log('Heap snapshot written...
Node 项目中使用 ESLint
ESLint1. 介绍 ESLint 是最流行的 JavaScript Linter。 Linter 是检查代码风格/错误的小工具。其他类似的 Linter 工具还有:TSLint、stylelint。 它包含三个功能: check syntax find problems 前两个可以统称为 Code-quality rules,例如 no-unused-vars 规则。 enforce code style 最后一个可以称为 Formatting rules,例如 keyword-spacing 规则。 下面介绍的 Prettier 就只有这一个 Formatting rules 功能。 2. 安装12npm install -g eslint # 全局安装npm i -D eslint # 局部安装 3. 使用(1) 生成配置文件下面的命令,可以在项目的根目录创建 .eslintrc.js 配置文件。 1eslint --init 按照交互提示,依次选择进行: (2) 校验文件12eslint yourfile.js ...
Koa + CLS + Log4js 实现全链路日志系统
什么是全链路日志在线上项目运行期间,经常会出现各种莫名其妙的 bug,而且一个请求往往会经过多个项目的接口调用。比如电商中的下订单,可能会调用到商品服务、优惠券满减服务、会员服务之类的。假如某一时刻下单失败,前端报了个系统异常,怎么样快速定位到底是哪个服务发生了异常,以及定位发生异常的服务具体是报了什么异常日志呢。 这就是全链路日志要做的事情,它把这个请求内调用到的所有请求通过全局 ID 串起来,通过全局 ID 可以把所有涉及到的系统日志都快速地定位出来。 日志开发架构图 之后 Logstash 后可能需要加 Queue 为后续大数据做准备 技术栈 功能 技术栈 日志 Log4js 异步资源追踪 cls-hooked Web 框架 Koa Node 12 REST - 传递 header[trace-id] Axios 思路 请求打进来,由网关下发全局唯一 ID Koa 框架可以获取同步请求的上下文,但在异步中需要上下文持久的问题(比如 async_hook) 需要保证当前项目所有 category 的 log 可用,且打印 trace-id ...
Linux 安装 Node.js
历史版本可从 https://nodejs.org/zh-cn/download/releases/ 下载 通过 FTP 工具上传到 Linux 服务器,解压安装包1tar -xvf node-v10.16.0-linux-x64.tar.xz 移动并改名文件夹(不改名也行)123cd /usr/local/mv /var/ftp/pub/node-v10.16.0-linux-64 . # 后面的 . 表示移动到当前目录mv node-v10.16.0.0-linux-64/ nodejs 让 npm 和 node 命令全局生效(方式选择任一)方式一:环境变量方式(这种方式只对登录用户有效) 加入环境变量,在 /etc/profile 文件末尾增加配置: 12vi /etc/profileexport PATH=$PATH:/usr/local/nodejs/bin 执行命令使配置文件生效: 1source /etc/profile 方式二:软链接方式(推荐)12ln -s /usr/local/nodejs/bin/npm /usr/local/bin...
Node.js 的包更新策略及实践
package.json 版本123456^ 开头的版本会固定首个大版本,后面的两个小版本会更新到最新,如 vue ^2.5.0 => vue 2.6.14~ 开头的版本会固定前两个版本,后面的小版本会更新到最新 vuex ~3.1.0 => vuex 3.1.3不带符号,直接写版本号会安装固定的版本 vue-router 3.5.3 => vue-router 3.5.3最小的版本设置为 x 或者 *,其最小的版本号会更新到最新 react 15.4.x => react 15.4.2依次类推任何一位版本设置为 x 或者 *,其当前位置的版本号都会更新到最新永远保持最新版本可以将版本号设置为 x 或者 *,如 pinia * => pinia 2.0.12 npm-check-updates(npm i -g npm-check-updates)工具的使用查看单个包的最新版本1ncu vue 更新 package.json(所有)的最新依赖项1ncu -u 更新单个依赖1ncu -u vue 查看全局的安装包最新版本1ncu -g 检查某...
Node 环境 Canvas 安装慢、安装失败的解决方法
摘自:https://blog.csdn.net/EverRose/article/details/122846767 Node.js 是跨平台的,那么对于任何的 Node 模块理论也是应该是跨平台的。然而,有些 Node 模块直接或间接使用原生 C/C++ 代码,这些东西要跨平台,就需要使用源码根据实际的操作平台环境进行原生模块编译。这也是 Canvas、SQLite3 等模块安装的折磨之源。 Canvas 的安装过程 npm 下载在仓库中的 Canvas 包 执行 Canvas 的 package.json 中的 install 命令(node-pre-gyp install --fallback-to-build) node-pre-gyp 下载 Canvas 已编译好的 macOS、Linux 和 Windows 的二进制文件,如果预构建的二进制文件不存在或不可用,则回退到从源代码构建 node-gyp 编译为当前平台可用的 Node 模块 为什么安装慢,还容易失败从安装过程可以发现,步骤 3 和步骤 4 是核心问题区。Canvas 的二进制文件托管在 h...
