工作各种常用命令汇总

1、JAVA

1、使用Java自带的jar命令,压缩war

jar -cvf app.war *
# c是单词compress(压缩)的缩写

2、使用Java自带的jar命令,解压war

jar -xvf app.war

3、Java判断是否都为数字

String str = "ac123";
System.out.println(Pattern.compile("[0-9]*").matcher(str).matches());

4、JVM调优参数示例(对应IDEA/VM options配置项)

-Xms128m -Xmx2048m -XX:MaxNewSize=512m -XX:MaxPermSize=1024m -Dfile.encoding=utf-8

5、Nashorn引擎的使用

@Test
public void Nashorn() throws ScriptException, NoSuchMethodException {
    ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
    // NashornEngine(JavaScript)
    ScriptEngine engine = scriptEngineManager.getEngineByName("Nashorn");
    String path = "script/test.js";
    ClassPathResource resource = new ClassPathResource(path);
    FileReader reader = null;
    try {
        reader = new FileReader(resource.getFile());
        engine.eval(reader);
    } catch (Exception e) {
        logger.error(e.getCause().getMessage());
        e.printStackTrace();
    } finally {
        IOUtils.close(reader);
    }
    Invocable invocable = (Invocable) engine;
    Map<String, String> map = new HashMap<>();
    map.put("name", "Java");
    Object mappingData = invocable.invokeFunction("getMappingData", map);
    System.out.println(mappingData);
}

// 参数转换
public static Object toObject(Object scriptMirror) {
    ScriptObjectMirror mirror = (ScriptObjectMirror) scriptMirror;
    if (mirror.isEmpty()) {
        return null;
    }
    if (mirror.isArray()) {
        List<Object> list = new ArrayList<>();
        for (Map.Entry<String, Object> entry : mirror.entrySet()) {
            Object result = entry.getValue();
            if (result instanceof ScriptObjectMirror) {
                list.add(toObject(result));
            } else {
                list.add(result);
            }
        }
        return list;
    }

    Map<String, Object> map = new HashMap<>();
    for (Map.Entry<String, Object> entry : mirror.entrySet()) {
        Object result = entry.getValue();
        if (result instanceof ScriptObjectMirror) {
            map.put(entry.getKey(), toObject(result));
        } else {
            map.put(entry.getKey(), result);
        }
    }
    return map;
}

6、some功能封装

private <T> Optional<T> some(Iterable<T> iterable, java.util.function.Predicate<? super T> predicate) {
    if (iterable != null) {
        for (T t : iterable) {
            if (predicate.test(t)) {
                return Optional.of(t);
            }
        }
    }
    return Optional.empty();
}

2、Linux

1、Linux查看某文件夹占用空间大小,如logs文件夹

du -h logs

2、Linux查看当前目录下,各文件夹占用磁盘空间情况(查找当前目录下有那些大文件)

du -h --max-depth=1

3、Linux查找当前目录下,文件大小超过指定阈值的文件

# 当前目录查找1G以上的文件
find . -type f -size +1024M -print0 | xargs -0 du -h

4、Linux解压zip文件

# 当前目录下解压
unzip tomcat.zip

# 解压到指定的文件夹中,文件夹不存在则创建
unzip tomcat.zip -d directory

5、修改文件的所有者

# 查看文件所有者
ls -ahl
# 修改文件所有者
chown [username]:[group] [file]
# 例如 chown -R app tomcat/

6、正确运行jar包方式

# 以运行 cache-0.0.1-SNAPSHOT.jar 为例
nohup java -jar cache-0.0.1-SNAPSHOT.jar >app.log 2>&1 &

# 命令解释
nohup 子进程不受会话影响关闭当前会话也能继续执行(程序不被挂起)
>app.log 将控制台输出的数据重定向到app.log(缺省是nohup.log)
2>&1 将标准错误输出转变化标准输出 可以将错误信息也输出到日志文件中
& 在后台运行程序

# 查看运行日志
tail -f -n 500 app.log

# 如何结束进程
[app@suzhou-ydshp soft]$ ps -ef|grep java
app      45539 43669  6 10:45 pts/0    00:00:17 java -jar cache-0.0.1-SNAPSHOT.jar
app      45919 43669  0 10:50 pts/0    00:00:00 grep --color=auto java

[app@suzhou-ydshp soft]$ kill -9 45539

# jvm优化版
#!/bin/bash
nohup java -Xmx32g -Xms12g -Xmn12g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseParallelGC -XX:+UseParallelOldGC -jar app.jar --server.port=9020>> /dev/null 2>&1 &

7、查看系统版本号

cat /etc/redhat-release

# 如果操作系统是openEuler就用如下命令
cat /etc/os-release

3、PostgreSQL

1、看版本

SELECT VERSION();
# PostgreSQL 10.7, compiled by Visual C++ build 1800, 64-bit

2、LIMIT用法

SELECT * FROM [TABLE_NAME] LIMIT A OFFSET B;
# 其中:B为其实索引 A为获取数据长度

3、当前信息查询

# role
SELECT * FROM CURRENT_ROLE
# user
SELECT * FROM CURRENT_USER
# 模式
SELECT * FROM CURRENT_SCHEMA
# 数据名称
SELECT * FROM CURRENT_CATALOG
# 时间日期
SELECT * FROM CURRENT_DATE
SELECT * FROM CURRENT_TIME
SELECT * FROM CURRENT_TIMESTAMP

4、删除模式

DROP SCHEMA [SCHEMA_NAME] CASCADE;

5、初始化

-- 初始化用户
create user huaian_ytgz
	superuser
	createdb
	createrole
	replication
	bypassrls;

-- 修改稿密码
alter user huaian_ytgz with password 'huaian_ytgz';

-- 初始化数据库
create database huaian_ytgz
	with owner huaian_ytgz;

4、ORACLE

1、GROUP BY分组查询重复数据

SELECT P.FK_BUSINESS_ID FROM SW.TB_PROJECT P WHERE 1 = 1 
GROUP BY P.FK_BUSINESS_ID HAVING COUNT(*) > 1;

2、查看ORACLE版本信息

SELECT * FROM V$VERSION

3、ORACLE查看sid_name

SELECT INSTANCE_NAME FROM V$INSTANCE;

4、把主键设置为自增,插入数据时就不用指定主键例如

ALTER TABLE TB_TEST MODIFY ID DEFAULT S_TB_TEST.NEXTVAL;

5、达梦

1、字段索引命名推荐(IDX1_字段名)加上表名可避免索引名称重复

# ORACLE
CREATE INDEX LN.TB_USER ON LN.IDX1_USERNAME (USERNAME ASC);
CREATE INDEX LN.TB_USER ON LN.IDX2_PASSWORD (PASSWORD ASC);
CREATE INDEX LN.TB_USER ON LN.IDX3_AGE (AGE ASC);

# 达梦(加上表名避免索引名称重复)
CREATE INDEX TB_USER_IDX1_USERNAME ON LN.TB_USER(USERNAME) TABLESPACE LN;
CREATE INDEX TB_USER_IDX2_PASSWORD ON LN.TB_USER(PASSWORD) TABLESPACE LN;

2、开窗函数使用方式

# 达梦/ORACLE
SELECT 
	ROW_NUMBER() OVER(PARTITION BY PI.PID ORDER BY PI.ID DESC) AS RN,
	PI.ID,
	PI.ITEMID,
	PI.ITEMNAME,
	PI.UNITID,
	PI.STATE
FROM LN.TB_PROJECTITEM PI 
WHERE 1 = 1 
	AND PI.PID = 6978
# 可对 RN 灵活操作,例如一个集合中只取一条记录,去重等

6、VUE

1、lodash工具库的使用

// 1.安装
npm install lodash@4.17.20 --save

// 2.main.js 引入
import _ from 'lodash';

Vue.prototype._ = _; // 挂载至原型属性

// 3.vc中使用
this._.filter(collection, item => item.id > 20);

2、eslint的使用(插件化的JavaScript代码检测工具)

# 安装eslint
pnpm install eslint -D
# 生成配置文件 .eslint.cjs
npx eslint --init 
# 或者是
npm init @eslint/config

3、eslint下的vue3环境代码校验插件

pnpm install -D eslint-plugin-import eslint-plugin-vue eslint-plugin-node eslint-plugin-prettier eslint-config-prettier eslint-plugin-node @babel/eslint-parser
/*
+ @babel/eslint-parser 7.23.3 // 允许使用eslint校验所有babel code
+ eslint-config-prettier 9.0.0 // 让所有与perttier规则存在冲突的eslint rules失效 并使用prettier进行代码检查
+ eslint-plugin-import 2.29.0
+ eslint-plugin-node 11.1.0
+ eslint-plugin-prettier 5.0.1 // 允许更漂亮的eslint使prettier规则优先级更高 eslint优先级低
+ eslint-plugin-vue 9.19.2 // vue.js的eslint插件(查找vue语法错误发现错误指令,查找违规风格代码)
*/

.eslintrc.cjs

// @see https://eslint.bootcss.com/docs/rules/
module.exports = {
    env: {
        browser: true,
        es2021: true,
        node: true,
        jest: true,
    },
    /* 指定如何解析语法 */
    parser: 'vue-eslint-parser',
    /** 优先级低于 parse 的语法解析配置 */
    parserOptions: {
        ecmaVersion: 'latest',
        sourceType: 'module',
        parser: '@typescript-eslint/parser',
        jsxPragma: 'React',
        ecmaFeatures: {
            jsx: true,
        },
    },
    /* 继承已有的规则 */
    extends: [
        'eslint:recommended',
        'plugin:vue/vue3-essential',
        'plugin:@typescript-eslint/recommended',
        'plugin:prettier/recommended',
    ],
    plugins: ['vue', '@typescript-eslint'],
    /*
     * "off" 或 0    ==>  关闭规则
     * "warn" 或 1   ==>  打开的规则作为警告(不影响代码执行)
     * "error" 或 2  ==>  规则作为一个错误(代码不能执行,界面报错)
     */
    rules: {
        // eslint(https://eslint.bootcss.com/docs/rules/)
        'no-var': 'error', // 要求使用 let 或 const 而不是 var
        'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行
        'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
        'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
        'no-unexpected-multiline': 'error', // 禁止空余的多行
        'no-useless-escape': 'off', // 禁止不必要的转义字符

        // typeScript (https://typescript-eslint.io/rules)
        '@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量
        '@typescript-eslint/prefer-ts-expect-error': 'error', // 禁止使用 @ts-ignore
        '@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型
        '@typescript-eslint/no-non-null-assertion': 'off',
        '@typescript-eslint/no-namespace': 'off', // 禁止使用自定义 TypeScript 模块和命名空间。
        '@typescript-eslint/semi': 'off',

        // eslint-plugin-vue (https://eslint.vuejs.org/rules/)
        'vue/multi-word-component-names': 'off', // 要求组件名称始终为 “-” 链接的单词
        'vue/script-setup-uses-vars': 'error', // 防止<script setup>使用的变量<template>被标记为未使用
        'vue/no-mutating-props': 'off', // 不允许组件 prop的改变
        'vue/attribute-hyphenation': 'off', // 对模板中的自定义组件强制执行属性命名样式

        'prettier/prettier': 'off'
    },
};

.eslintignore

dist
node_modules

4、SVG图标配置

使用SVG替换图片资源,可提示页面性能,因为SVG文件比img要小很多,放在项目上基本上不占用资源。

# 安装依赖
pnpm install vite-plugin-svg-icons --save

vite.config.ts中配置插件

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'

// process.cwd() 获取项目根路径(绝对路径)
const svgIconOption = {
  iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
  symbolId: 'icon-[dir]-[name]'
}

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(), createSvgIconsPlugin(svgIconOption)],
  resolve: {
    alias: {
      "@": path.resolve("./src") // 相对路径别名配置使用@代替src 编译时需要将@转义回来,因此需要咋tsconfig.json新增转义配置
    }
  }
})

main.ts进行注册

import 'virtual:svg-icons-register'

在组件中使用

<svg>
	<!--name为图标名称-->
	<use xlink:href="#icon-name"></use>
</svg>

7、MediaType一览

types {
    text/html                                        html htm shtml;
    text/css                                         css;
    text/xml                                         xml;
    image/gif                                        gif;
    image/jpeg                                       jpeg jpg;
    application/javascript                           js;
    application/atom+xml                             atom;
    application/rss+xml                              rss;

    text/mathml                                      mml;
    text/plain                                       txt;
    text/vnd.sun.j2me.app-descriptor                 jad;
    text/vnd.wap.wml                                 wml;
    text/x-component                                 htc;

    image/avif                                       avif;
    image/png                                        png;
    image/svg+xml                                    svg svgz;
    image/tiff                                       tif tiff;
    image/vnd.wap.wbmp                               wbmp;
    image/webp                                       webp;
    image/x-icon                                     ico;
    image/x-jng                                      jng;
    image/x-ms-bmp                                   bmp;

    font/woff                                        woff;
    font/woff2                                       woff2;

    application/java-archive                         jar war ear;
    application/json                                 json;
    application/mac-binhex40                         hqx;
    application/msword                               doc;
    application/pdf                                  pdf;
    application/postscript                           ps eps ai;
    application/rtf                                  rtf;
    application/vnd.apple.mpegurl                    m3u8;
    application/vnd.google-earth.kml+xml             kml;
    application/vnd.google-earth.kmz                 kmz;
    application/vnd.ms-excel                         xls;
    application/vnd.ms-fontobject                    eot;
    application/vnd.ms-powerpoint                    ppt;
    application/vnd.oasis.opendocument.graphics      odg;
    application/vnd.oasis.opendocument.presentation  odp;
    application/vnd.oasis.opendocument.spreadsheet   ods;
    application/vnd.oasis.opendocument.text          odt;
    application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    application/vnd.wap.wmlc                         wmlc;
    application/wasm                                 wasm;
    application/x-7z-compressed                      7z;
    application/x-cocoa                              cco;
    application/x-java-archive-diff                  jardiff;
    application/x-java-jnlp-file                     jnlp;
    application/x-makeself                           run;
    application/x-perl                               pl pm;
    application/x-pilot                              prc pdb;
    application/x-rar-compressed                     rar;
    application/x-redhat-package-manager             rpm;
    application/x-sea                                sea;
    application/x-shockwave-flash                    swf;
    application/x-stuffit                            sit;
    application/x-tcl                                tcl tk;
    application/x-x509-ca-cert                       der pem crt;
    application/x-xpinstall                          xpi;
    application/xhtml+xml                            xhtml;
    application/xspf+xml                             xspf;
    application/zip                                  zip;

    application/octet-stream                         bin exe dll;
    application/octet-stream                         deb;
    application/octet-stream                         dmg;
    application/octet-stream                         iso img;
    application/octet-stream                         msi msp msm;

    audio/midi                                       mid midi kar;
    audio/mpeg                                       mp3;
    audio/ogg                                        ogg;
    audio/x-m4a                                      m4a;
    audio/x-realaudio                                ra;

    video/3gpp                                       3gpp 3gp;
    video/mp2t                                       ts;
    video/mp4                                        mp4;
    video/mpeg                                       mpeg mpg;
    video/quicktime                                  mov;
    video/webm                                       webm;
    video/x-flv                                      flv;
    video/x-m4v                                      m4v;
    video/x-mng                                      mng;
    video/x-ms-asf                                   asx asf;
    video/x-ms-wmv                                   wmv;
    video/x-msvideo                                  avi;
}

8、maven

1、查看依赖树,当前pom.xml文件层级执行以下命令

mvn dependency:tree>tree.txt

2、插件配置

<!--跳过Surefire插件执行单元测试文件(package/install)-->
<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>

3、手动安装jar包至本地仓库

mvn install:install-file -DgroupId=com.dist.product -DartifactId=dist-product-api -Dversion=5.0.8-SNAPSHOT -Dpackaging=jar -Dfile=dist-product-api-5.0.8-SNAPSHOT.jar

4、手动安装jar包指定仓库

mvn install:install-file -Dmaven.repo.local=/Users/laizhenghua/soft/maven/repository -DgroupId=com.dist.flow.engine -DartifactId=dist-flow-awspaas -Dversion=5.0.8-SNAPSHOT -Dpackaging=jar -Dfile=/Users/laizhenghua/Downloads/dist-flow-awspaas-5.0.8-SNAPSHOT.jar

5、optional标签

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.27</version>
    <!-- 阻止依赖传递 -->
    <optional>true</optional>
</dependency>

9、统一返回类封装

/**
 * TODO
 *
 * @Description 统一返回类封装
 * @Author laizhenghua
 * @Date 2023/2/19 20:04
 **/
public class R extends HashMap<String, Object> {

    private static final long serialVersionUID = 563554414843661955L;

    public R() {
        put("code", 0);
        put("msg", "success");
    }
    
    public static R error(int code, String msg) {
        R r = new R();
        r.put("code", code);
        r.put("msg", msg);
        return r;
    }

    public static R success(Object data, String msg) {
        R r = new R();
        r.put("code", 200);
        r.put("data", data);
        r.put("msg", msg);
        r.put("success", true);
        return r;
    }

    public static R success(Object data) {
        return success(data, "success");
    }

    public static R ok(String msg) {
        R r = new R();
        r.put("msg", msg);
        return r;
    }

    public static R ok(Map<String, Object> map) {
        R r = new R();
        r.putAll(map);
        return r;
    }

    public static R ok() {
        return new R();
    }

    public R put(String key, Object value) {
        super.put(key, value);
        return this;
    }
}

10、svn

1、查看修改文件状态

svn status | grep '^M'

2、查看当前svn信息,如最后修改者、URL、工作副本根目录

svn info ./

11、常见索引失效场景

/*
1、使用 != 或 <>
2、最左前缀原则
3、字段类型不一致索引失效
4、函数导致索引失效
5、运算符导致索引失效(+,-,*,/,!)
6、OR 引起索引失效
7、模糊查询导致索引失效
8、NOT IN、NOT EXISTS 导致索引失效
9、IS NULL 不走索 IS NOT NULL 走索引
*/

12、git

1、提交基本命令

# 如果是第一次使用
# 1.进入文件目录初始化 
git init
# 2.添加远程仓库地址 
git remote add origin [git地址]
# 3.添加 .gitignore 文件
# 4.添加本地代码 
git add .
# 5.提交本地代码 
git commit -m "描述"
# 6.提交到远程库(推送到master分支)
git push origin master

# 1.更新本地仓库数据
git pull origin 分支名

add .
git commit -m "描述信息"

# 2.合并分支
# 如果当前分支的文件和远程仓库文件不统一(需要将远程仓库的文件同步到本地仓库后再merge)
git merge 要合并的分支名

# 3.提交合并后的数据
# 本地当前分支名与远程分支名一样
git push origin 远程分支名
# 本地当前分支名与远程分支名不一样
git push origin 本地分支名:远程分支名

# 4.1删除文件(跟踪列表+系统或本地)
git rm 文件路径及文件名
# 如果删除的文件在当前目录,输入文件名即可
# 4.2删除文件(跟踪列表)
git rm --cached 文件路径及文件名

# 5.查看git配置
cat .git/config
# 6.查看分支信息
# 本地
git branch -a
# 远程
git branch -r

2、GitLab配置SSH秘钥

# 1.查看全局配置(要确保信息正确)
git config --global --list
user.name=laizhenghua
user.email=laizhenghua@supermap.com

# 2.如果信息不正确时修改name和email
git config --global user.name "laizhenghua"
git config --global user.email "laizhenghua@supermap.com"

# 3.生成SSH key
ssh-keygen -t rsa

# 4.拷贝公钥
cat ~/.ssh/id_rsa.pub

13、Linux防火墙常用命令

# 开启防火墙
service firewalld start
# 关闭防火墙
service firewalld stop
# 查看防火墙状态
# systemctl status firewalld
firewall-cmd --state

# 查看防火墙开规则
firewall-cmd --list-all
# 查看防火墙控制规则
firewall-cmd --zone=public --list-rich-rules

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放8080端口 --permanent 代表永久
firewall-cmd --permanent --add-port=8080/tcp
# 移除开放的8080端口
firewall-cmd --permanent --remove-port=8080/tcp

# 开放所有ip
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" accept'

# 禁用 11.48.29.17 ip
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="11.48.29.17" reject'

# 移除 某个规则
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="11.48.29.17" port port="21" protocol="tcp" reject'

# 重启防火墙
firewall-cmd --reload
# service firewalld restart

firewall-cmd --permanent --add-port=21/tcp

14、常见的http状态码

/*
200 OK 表示从客户端发来的请求在服务器端被正常处理了。
204 该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。
206 该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET 请求。
301 该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。
302 该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问。
303 该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源。
304 该状态码表示客户端发送附带条件的请求 时,服务器端允许请求访问资源,但未满足条件的情况。
400 该状态码表示请求报文中存在语法错误
401 该状态码表示发送的请求需要有通过 HTTP 认证的认证信息
403 该状态码表明对请求资源的访问被服务器拒绝了。
404 该状态码表明服务器上无法找到请求的资源。
500 该状态码表明服务器端在执行请求时发生了错误。
503 该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
*/

15、SpringBoot

SpringBoot官网GA / SNAPSHOT / PRE含义

/*
GA:General Availability 正式发布的版本,官方推荐使用此版本
SNAPSHOT:快照版,可以稳定使用且仍在继续改进版本
PRE:预览版,内部测试版,主要是给开发人员和测试人员测试和找BUG用的,不建议使用
*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lambda.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值