2023年 11月 27日 - docker部署prometheus与grafana

    启动

    systemctl start docker
    # 日志
    docker logs -f --tail $<container_id>
    # 终止端口号服务
    sudo fuser -k 9443/tcp
    # 关闭所有运行中的容器
    docker stop $(docker ps -q)
    # 禁用自动启动
    # on-failure[:max-retries]:只在容器以非零状态退出时重启容器。您还可以指定最大重试次数。例如,on-failure:3 表示容器将最多重试 3 次。
    # always:无论容器以任何状态退出,都会自动重启容器。
    docker update --restart=no  $<container_id>
    # 删除镜像
    docker images
    docker image rm $<container_id>
    docker image rm -f $<container_id>
    # 删除所有未被使用的镜像,包括已停止容器的镜像
    docker image prune -a
    # 删除所有,忽略运行状态
    docker rmi $(docker images -q)
    docker rmi -f $(docker images -q)
    # clear
    docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker rmi $(docker images -q)
    # 终端
    docker exec -it d963fa717c5a bash
    docker exec -it d963fa717c5a sh
    

    2023年 11月 21日 - maven手动把jar包部署到本地或私服

    install

    mvn install:install-file -Dfile=<path-to-your-jar-file> \
    -DgroupId=<your-group-id> -DartifactId=<your-artifact-id>\
     -Dversion=<your-version> -Dpackaging=jar
    

    deploy

    URL=https://nexus.xxxx.com
    REPOSITORY_ID=serverId
    FILE=chromeinspector.jar
    GROUP_ID=org.graalvm.tools
    ARTIFACT_ID=chromeinspector
    VERSION=23.1.2-SNAPSHOT
    mvn deploy:deploy-file -Durl=$URL/repository/maven-snapshots/ -DrepositoryId=$REPOSITORY_ID \
    -Dfile=$FILE -DgroupId=$GROUP_ID -DartifactId=$ARTIFACT_ID -Dversion=$VERSION -Dpackaging=jar
    
    

    其中serverId需要在mavensettings.xml中配置:

    <server>
        <id>serverId</id>
        <username>deploy</username>
        <password>password</password>
    </server>
    

    2023年 11月 15日 - 终端中打开idea与vscode

    idea

    打开Intellij idea–>Tools–>Create Command-line Lanucher 然后打开shell窗口,输入idea , 发现可以打开指定项目了。 进入指定项目的根目录,如果是gradle 项目就是 build.gradle 所在目录,如果是maven项目就是pom.xml 所在目录。 然后输入:idea .

    VS Code

    运行Command + Shift + P后输入shell进行搜索,会有如下选项

    1. Shell Command: Install ‘code’ command in PATH
    2. Shell Command: Uninstall ‘code’ command from PATH
    code .
    

    2023年 07月 28日 - PG中的用户权限

    PG中的用户权限

    -- 创建只读角色,名称为readonly_role
    CREATE ROLE readonly_role;
    -- 赋予readonly_role角色拥有public下所有表的只读权限(SELECT,如果是多个则是:SELECT, INSERT, UPDATE, DELETE)
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_role;
    -- 赋予target_username用户拥有readonly_role角色权限
    GRANT readonly_role TO target_username;
    -- 赋予readonly_role角色的默认权限为public下的所有SELECT权限,以后创建新表时也会自动继承该权限
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly_role;
    -- 撤销用户所有权限
    REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM username;
    REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM username;
    REVOKE ALL PRIVILEGES ON SCHEMA public FROM username;
    -- 撤销用户角色
    REVOKE rolename FROM username;
    

    2023年 07月 27日 - 正则中的且与非

    正则中的且与非

    a且b

    匹配行的开始: ^

    正向先行断言: ?=

    表示匹配行的结束: $

    模式修饰符(表示单行模式DOTALL模式,它将使点号.匹配包括换行符在内的所有字符): (?s)

    校验一段文本中同时存在ab(java不包括换行): ^(?=.*a)(?=.*b).*$

    校验一段文本中同时存在ab(java包括换行): ^(?s)(?=.*a)(?=.*b).*$

    import java.util.regex.*;
    
    public class Main {
        public static void main(String[] args) {
            String text = "This is a sample\nstring with\na and b";
            //  Pattern.DOTALL 标志来指示正则表达式引擎将点号 . 匹配所有字符,包括换行符
            Pattern pattern = Pattern.compile("^(?=.*a)(?=.*b).*$", Pattern.DOTALL);
            // 如果不通过Pattern.DOTALL,则正则为: ^(?s)(?=.*a)(?=.*b).*$
            Matcher matcher = pattern.matcher(text);
            
            if (matcher.find()) {
                System.out.println("文本中同时存在 'a' 和 'b'");
            } else {
                System.out.println("文本中不存在 'a' 和 'b'");
            }
        }
    }
    
    

    非a且非b

    负向前瞻断言: (?!pattern)

    在正则表达式中表示不匹配某个模式,其中pattern是你想要取反匹配的部分

    既不包含a也不包含b-非(a|b)

    ?!a|b