Maven 介绍Maven 是一款为 Java 项目构建管理、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。
场景概念
场景 1: 例如我们项目需要第三方库(依赖),如 Druid 连接池、MySQL 数据库驱动和 Jackson 等。那么我们可以将需要的依赖项的信息编写到 Maven 工程的配置文件,Maven 软件就会自动下载并复制这些依赖项到项目中,也会自动下载依赖需要的依赖!确保依赖版本正确无冲突和依赖完整!
场景 2: 项目开发完成后,想要将项目打成.war 文件,并部署到服务器中运行,使用 Maven 软件,我们可以通过一行构建命令(mvn package)快速项目构建和打包!节省大量时间!
依赖管理:
Maven 可以管理项目的依赖,包括自动下载所需依赖库、自动下载依赖需要的依赖并且保证版本没有冲突、依赖版本管理等。通过 Maven,我们可以方便地维护项目所依赖的外部库,而我们仅仅需要编写配置即可。
构建管理:
项目构建是指将源代码、配置文件、资源文件等转化为能够运行或部署的应用程序或库的过程!
Maven ...
TypeScript
未读1. 两数之和要求
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
示例 1:
123输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
我的思路
利用双重 for 循环来判断,数组第一个和第二个相加判断是否等于 target,不是则换数组为第一个与第三个相加依次类推,第一轮循环结束则继续判断数组第二个与第三个相加是否等于 target,一直循环下去,如果相等则返回对应的数组下标,注意的是第二个数组下标不能与第一个相同,因为数组可能会是[3, 3]而 target 是 6 的情况。
我的代码
1234567891011121314151617181920212223function twoSum(nums: number[], target: number): number[] { ...
目录结构Linux 的一切资源都挂载在 / 节点下。/bin: Binary 的缩写。存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行。/boot: 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev: Device 的缩写。该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。/etc: Etcetera 的缩写。这个目录用来存放所有的系统管理所需要的配置文件和子目录。/home: 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。/lib: Library 的缩写。这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。/lib64: 64 位相关的库会放在这。/media: linux 系统会自动识别一些设备,例如 U 盘、光驱 ...
在 nodejs 中使用 grpc 编写接口1. 创建一个 user.proto 文件123456789101112131415161718192021syntax = "proto3";package user; // 包名称// 请求参数message LoginRequest { string username = 1; string password = 2;}// 响应结果message LoginResponse { string access_token = 1; int32 expires = 2;}// 用户相关接口service User { // 登录函数 rpc login(LoginRequest) returns (LoginResponse);}
2. 安装相关依赖1npm i @grpc/grpc-js google-protobuf grpc-tools grpc_tools_node_protoc_ts
3. 生成 user_pb.js 和 user_grpc_p ...
TypeScript
未读实现 TypeScript 内置工具类实现 Partial1234567891011121314151617181920// 将所有属性变为可选 浅层type MyPartial<T> = { [P in keyof T]?: T[P]}// 将所有属性变为可选 深层type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]}type message = { name: string; age: number; address: { province: string; city: string; };}type m1 = MyPartial<message>type m2 = DeepPartial<message>
实现 Required123456789101 ...
Promise 基础版123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778class MyPromise { static PENDING = "pending" static FULFILLED = "fulfilled" static REJECTED = "rejected" constructor(fn) { this.PromiseState = MyPromise.PENDING this.PromiseResult = null this.onFulfilledCallback = [] // 保存成功回调 this.onRejectedCallback = [] // 保存失 ...
参赛包
随便拍的
完赛奖牌
完赛包
成绩
index.ts
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182import axios from 'axios'import type { AxiosInstance } from 'axios'import { MyAxiosRequestConfig } from './type'class Request { instance: AxiosInstance constructor(config: MyAxiosRequestConfig) { // 创建一个aioxs的实例 this.instance = axios.create(config) // 每一个实例都会经过 全局拦 ...
fs 模块fs 模块的三种读取方式1234567891011121314151617181920212223242526272829303132const fs = require("fs");// 1.同步读取 获取到结果才会执行后续代码// 第一个参数是需要读取的文件路径 第二参数是配置optionsconst res1 = fs.readFileSync("./a.txt", { encoding: "utf-8", // 编码格式 默认是输出Buffer数据});console.log(res1);// 2.异步读取 回调函数方式// 第三个参数传入函数,等到有结果会回调fs.readFile( "./a.txt", { encoding: "utf-8", }, (error, data) => { if (error) { return; } console ...
1. rollup 的基本使用1.1 安装1npm install rollup -D
1.2 rollup 配置文件编写12345678910111213141516171819202122232425262728293031module.exports = { // 入口 input: './lib/index.js', // 出口 // output: { // format: 'umd', // name: 'ysUtils', // file: './build/bundle.umd.js' // } // 打包不同格式 output: [ { format: 'umd', name: 'ysUtils', file: './build/bundle.umd.js' }, { format ...