ARTS-003

Algorithm


  1. Parsing A Boolean Expression
    上周contest中的一道题目,也是easy。判断一个表达式是true还是false
    主要使用栈可以解决
/**
     * use stack
     *
     * @param expression
     * @return
     */
    public boolean parseBoolExpr(String expression) {
        Stack stack = new Stack();
        Stack stack2 = new Stack();

        for (int i = 0; i < expression.length(); ++ i) {
            String sub = expression.substring(i, i +1);
            if (",".equals(sub)) {
                continue;
            }
            if ("&".equals(sub) || "|".equals(sub) || "!".equals(sub)) {
                stack.push(sub);
            }
            if ("(".equals(sub) || "f".equals(sub) || "t".equals(sub)) {
                stack2.push(sub);
            }
            if (")".equals(sub)) {
                List strs = new ArrayList();
                String symb = stack.pop();
                String num = stack2.pop();
                while(!"(".equals(num)) {
                    strs.add(num);
                    num = stack2.pop();
                }
                String result = doCheck(symb, strs);
                stack2.push(result);
            }
        }
        String res = stack2.pop();
        if ("f".equals(res)) {
            return false;
        } else {
            return true;
        }
    }

    private String doCheck(String symb, List angs) {
        if ("&".equals(symb)) {
            return checkAnd(angs);
        }
        if ("|".equals(symb)) {
            return checkOr(angs);
        }
        return checkNot(angs);
    }

    private String checkAnd(List angs) {
        for (String s : angs) {
            if ("f".equals(s)) {
                return "f";
            }
        }
        return "t";
    }

    private String checkOr(List angs) {
        for (String s : angs) {
            if ("t".equals(s)) {
                return "t";
            }
        }
        return "f";
    }

    private String checkNot(List angs) {
        if ("t".equals(angs.get(0))) {
            return "f";
        } else {
            return "t";
        }
    }

Review


https://www.javaworld.com/article/3276354/java-challengers-2-string-comparisons.html
小结:

Tip


1. 命令

show processlist
select * from information_schema.processlist

上面两个命令效果一致,因为show processlist 显示的信息都是来自MySQL系统库 information_schema 中的 processlist 表。

2. 结果

查询结果

查询结果字段说明
Id:线程唯一标识,也是information_schema主键
User:启动线程的用户
Host:发送请求的客户端IP和端口号
db:当前执行的命令在哪个数据库上
Command:此刻该线程正在执行的命令。详情可见:8.14.1 Thread Command Values
Time:该线程处于当前状态的时间
State:线程的状态。详情可见:8.14.2 General Thread States

Info:线程执行的语句。一般截断展示,若要查看详情可以使用show full processlist
Rows_sent:
Rows_examined:

3. 说明

功能:显示线程正在运行的状态
何时使用:


官方说明

也就是说当我们需要确定mysql服务器正在执行的操作时可以调用这个命令,当然图中还给出了其他一些命令提供类似的功能
参考:mysql: show processlist 详解

Share


mysql手册

你可能感兴趣的:(ARTS-003)