Commands

Submitted by Lizhe on Sat, 04/01/2017 - 08:19

docker pull centos

docker pull daocloud.io/library/centos:latest

docker run --name test -i -t 2785d012ae3e

ctrl p q

 

 

 

Lambda表达式

Submitted by Lizhe on Fri, 03/31/2017 - 08:21

 

在正式了解Lambda表达式之前我们先谈谈函数式接口

简单来说,函数式接口是只包含一个方法的接口。

比如Java标准库中的java.lang.Runnable和 java.util.Comparator都是典型的函数式接口。

java 8提供 @FunctionalInterface作为注解,这个注解是非必须的,只要接口符合函数式接口的标准(即只包含一个方法的接口),虚拟机会自动判断, 但 最好在接口上使用注解@FunctionalInterface进行声明,以免团队的其他人员错误地往接口中添加新的方法。

Java中的lambda无法单独出现,它需要一个函数式接口来盛放,lambda表达式方法体其实就是函数接口的实现.

先用Comparator接口写个例子

打开Comparator接口的源码可以看到如下内容, 这是一个函数式接口

@FunctionalInterface
public interface Comparator<T> {

....

}

 

然后我们通过Lambda表达式给它添加一个实现

Cost Based Optimizer 基于成本的SQL优化器

Submitted by Lizhe on Wed, 03/29/2017 - 08:53

Oracle 自7开始引入了CBO.

Oracle会根据cpu,内存以及I/O的开销来进行SQL优化

可选择率是CBO的一个核心概念

1. 可选择率

可选择率 = 指定谓词返回的结果集记录数/未使用谓词返回的结果集记录数

取值范围是 0到1 , 值越小 表明 可选择性 越好

2. 可传递性

2.1 简单谓词传递

2.2 连接谓词传递

2.3 外链接谓词传递

实际上就是 a1=a2 and a1=10 等价于 a1=10 and a2=10

 

Rule Based Optimizer 基于规则的SQL优化器

Submitted by Lizhe on Mon, 03/27/2017 - 09:56

 

待执行的SQL语句进入数据库系统后都会进入查询优化器进行查询转换.

在Oracle 10g之前, Oracle会默认使用RBO规则

数据库会将查询条件分成15个等级, 通过判断条件(动作)的级别高低来决定那个谓词被优先执行

例如 基于rowid的查询级别是最高的为1, 全表扫描的执行级别最低为15

基于RBO优化器的一个明显缺点在于, 依靠硬编码来确定的规则很难被动态改变, 编写SQL语句的时候需要十分注意

这里如果你跟我一样使用的是10g之后的版本,我们需要使用下面的命令将优化器暂时改成RBO ( 只对当前session有效,不用再改回来)

alter session set optimizer_mode='RULE';

然后我执行一个执行计划

 

EXPLAIN PLAN FOR select * from INO_OUTAGES.OUTAGE where SUBCATEGORY='NBN Outage';
SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));

 

Java Rest

Submitted by Lizhe on Mon, 09/12/2016 - 11:06

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.InetAddress;
import java.net.PasswordAuthentication;
import java.net.URL;

public class Test {
  public static void main(String[] argv) throws Exception {
    Authenticator.setDefault(new MyAuthenticator());
    URL url = new URL("http://hostname:80/index.html");

selenium driver

Submitted by Lizhe on Thu, 05/26/2016 - 08:35

    public static WebDriver createChromeDriver(){    
        System.setProperty("webdriver.chrome.driver", "C:/PSP/selenium/chromedriver.data");
        WebDriver driver = new ChromeDriver();
        return driver;
    }

    public static WebDriver createFireFoxDriver() {
        System.setProperty("webdriver.firefox.bin", "C:/Program Files (x86)/Mozilla Firefox/firefox.exe");
        WebDriver driver;
        driver = new FirefoxDriver();
        return driver;
    }

jmx

Submitted by Lizhe on Thu, 05/19/2016 - 07:31

JAVA_OPTS="$JAVA_OPTS "-Dcom.sun.management.jmxremote=true" "-Dcom.sun.management.jmxremote.port=7091" "-Dcom.sun.management.jmxremote.authenticate=false" "-Dcom.sun.management.jmxremote.ssl=false" "-Djava.rmi.server.hostname=169.193.148.71

 

-Djava.rmi.server.hostname=10.10.8.57 -Dcom.sun.management.jmxremote  -Dcom.sun.management.jmxremote.port=8011 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

Docker network

Submitted by Lizhe on Wed, 05/18/2016 - 07:09

$ docker run -i -t --rm --net=none base /bin/bash

root@63f36fc01b5f:/#

 

# At another shell, learn the container process ID

# and create its namespace entry in /var/run/netns/

# for the "ip netns" command we will be using below

 

$ docker inspect -f '{{.State.Pid}}' 63f36fc01b5f

2778

$ pid=2778

$ sudo mkdir -p /var/run/netns

$ sudo ln -s /proc/$pid/ns/net /var/run/netns/$pid

 

# Check the bridge's IP address and netmask

 

$ ip addr show docker0

21: docker0: ...