oracle一些用到的语法总结

用到的工作上一些语法

  1. DECODE语句,”DECODE”(expr, [search, result]*, default) ,全局简介:

    1
    2
    3
    4
    5
    6
    7
    举例说明:
    现定义一table名为output,其中定义两个column分别为monthid(var型)和sale(number型),若sale值=1000时翻译为 D,=2000时翻译为C,=3000时翻译为B,=4000时翻译为A,如是其他值则翻译为Other;
    SQL如下:
    Select monthid , decode (sale,1000,'D',2000,'C',3000,'B',4000,'A',’Other’) sale from output
    特殊情况:
    若只与一个值进行比较
    Select monthid ,decode(sale, NULL,‘---’,sale) sale from output
  2. round() 四舍五入使用,SELECT ROUND(column_name,decimals) FROM table_name

    1
    2
    3
    参数    描述
    column_name 必需。要舍入的字段。
    decimals 非必需,默认0,返回int。规定要返回的小数位数
  3. sql结合以上2点防止生成百分比防止除数是0

    1
    decode(xx, 0, 0, to_char(round(ddd / xxx * 100, 2), 'fm990.99'))

oracle一些用到的语法总结

sql developer

  1. 工具打开多个窗口,工具默认是只能打开一个窗口。在 工具>首选项>数据库>ObjectViewer 中,将自动冻结对象查看器窗口,即可,如下图

redis安装

安装

1
2
安装到自己定义目录中,记住目录
#自启动添加 vim /etc/init.d/redis

centos

  1. 准备 init.d 脚本(可以搜索 redis rpm,找到rpm包后解压获取相应的init.d脚本,然后在再其基础上修改配置项)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #!/bin/sh
    # chkconfig: 2345 10 90
    # description:redis
    ##
    ## redis init file for starting up the redis daemon
    ##
    ## chkconfig: - 20 80
    ## description: Starts and stops the redis daemon.
    #
    ## Source function library.
    #
    REDISPORT=6379
    EXEC=/data0/soft/redis/redis-3.0.3/src/redis-server
    REDIS_CLI=/data0/soft/redis/redis-3.0.3/src/redis-cli

    PIDFILE=/var/run/redis.pid
    CONF="/data0/soft/redis/redis-3.0.3/redis.conf"

    case "$1" in
    start)
    if [ -f $PIDFILE ]
    then
    echo "$PIDFILE exists, process is already running or crashed"
    else
    echo "Starting Redis server..."
    $EXEC $CONF
    fi
    if [ "$?"="0" ]
    then
    echo "Redis is running..."
    fi
    ;;
    stop)
    if [ ! -f $PIDFILE ]
    then
    echo "$PIDFILE does not exist, process is not running"
    else
    PID=$(cat $PIDFILE)
    echo "Stopping ..."
    $REDIS_CLI -p $REDISPORT SHUTDOWN
    while [ -x ${PIDFILE} ]
    do
    echo "Waiting for Redis to shutdown ..."
    sleep 1
    done
    echo "Redis stopped"
    fi
    ;;
    restart|force-reload)
    ${0} stop
    ${0} start
    ;;
    *)
    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
    exit 1
    esac

    并修改其中的配置项 vi /etc/init.d/redis

    1
    2
    3
    4
    exec="/data/software/redis/redis-2.8.14/src/redis-server"
    pidfile="/data/store/redis/redis.pid" # 应当与redis.conf中的配置保持一致
    REDIS_CONFIG="/data/software/redis/redis-2.8.14/redis.conf"
    REDIS_USER=redis

    最后为 init.d 脚本修改权限

    1
    2
    3
    4
    chmod u+x /etc/init.d/redis
    chkconfig --add redis
    chkconfig --list redis
    chkconfig --level 345 redis on
  2. 启动

    1
    service redis start

#centos7

1
2
3
4
5
vi /usr/lib/systemd/system/redis.service

systemctl enable redis

systemctl start redis

批量删除

redis-cli -h 127.0.0.1 -p 7001 -c keys “xxxx*” | xargs redis-cli -h 127.0.0.1 -p 7001 -c del {}

phonegap/cordova

安装phonegap过程

安装node.js

1
前往https://nodejs.org/en/下载最新安装包,并将目录放置path中

安装phonegap

1
sudo npm install -g phonegap

cordova

1
2
sudo npm install -g cordova 
cordova是phonegap提交给apache开源代码的品牌,cordova是核心代码。phoengap如上层框架

创建app

1
2
3
4
5
6
7
8
9
10
11
12
phonegap create myapp
或者
cordova create myapp
cd myapp
cordova platform add browser/cordova platform add android 将项目加到哪个平台中去
cordova run android 运行该项目
cordova build -release发布生产版本
注:android需要添加path,
sudo vi /etc/profild.d/xxx.sh 当前环境变量名。
exprot ANDROID_HOME=/xxxxx/xxxx/sdk
exprot PATH=$ANDROID_HOME/platform-tools:$PATH
exprot PATH=$ANDROID_HOME/tools:$PATH

cordova常用命令

  1. cd myapp 进入工作目录
  2. cordova serve 或者phonegap serve 直接运行html代码
  3. cordova build 编译代码
  4. cordova plugin ls 当前使用的插件
  5. cordova rm * 移除插件
  6. cordova plugin add cordova-plugin-device 添加可以获取设备信息的插件
  7. http://cordova.apache.org/plugins/ 插件查找网站
  8. http://docs.phonegap.com/zh/edge/guide_cli_index.md.html#%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%95%8C%E9%9D%A2 参考中文网
  9. http://cordova.apache.org/docs/zh/6.0.0/config_ref/index.html 最新的cordova中文文档
  10. http://cordova.apache.org/docs/en/latest/guide/overview/ 官方文档

app的在线更新code-push使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
使用code-push 微软提供插件,
安装命令:cordova plugin add cordova-plugin-code-push
安装后要使用code-push命令,需要另外安装:npm install -g code-push-cli,github地址:https://github.com/Microsoft/code-push/tree/master/cli
安装好code-push就要进行注册登陆,可以是使用github和microsoft账号,登陆会给出一个key进行登陆,使用命令:code-push register
code-push app add (you app name)添加一个app
code-push deployment ls (you app name) -k 查看你的app的key
code-push release myapp <path_to_your_app>/platforms/android/assets/www 0.0.1 --deploymentName Production/Staging 将自己的代码推上去( Production/Staging 2选1)
在app的config.xml添加一下内容
<platform name="android">
<preference name="CodePushDeploymentKey" value="你的app的key" />
</platform>
<platform name="ios">
<preference name="CodePushDeploymentKey" value="你的app的key" />
</platform>

InstallMode
IMMEDIATE: 立即更新app.
ON_NEXT_RESTART: 更新是下载,但没有立即安装。新的内容将在下一次应用程序启动时可用.
ON_NEXT_RESUME: 的更新下载,但不立即安装。新的内容将在下一次申请恢复或重新启动,无论事件发生的第一.

wechat微信插件使用

1
2
3
4
5
6
7
8
9
10
11
$scope.shares = function () {
// 发送到朋友圈
Wechat.share({
text: "豆豆你好",
scene: Wechat.Scene.TIMELINE // share to Timeline
}, function () {
alert("Success");
}, function (reason) {
alert("Failed: " + reason);
});
}

Cordova使用crosswalk更换内置的浏览器

crosswalk官方文档

1
2
1. cordova plugin add cordova-plugin-crosswalk-webview
2. cordova build android

使用百度云进行推送消息

  1. 参考资料百度云推送

ubuntu server修改键盘布局

ubuntu server修改键盘布局

1
2
3
4
5
6
7
8
9
10
11
12
方法1:

也许是以前的Ubuntu版本可以用这个命令改,现在的键盘布局被独立分开设置,于是我尝试了一下,发现正确的命令应该是:“ sudo dpkg-reconfigure keyboard-configuration ”,这个才对,使用这个命令后会出现非常人性化的伪图形界面供我们设置。


方法2:

另外,如果觉得不够“爽快”,想直接修改配置文件的同学们可以用一下这种方法:

sudo vim /etc/default/keyboard把里面XKBLAYOUT变量的值改为“us”,然后在终端(文字终端,不是虚拟终端,也就是Ctrl+Alt+F2或F3或F4.......)运行命令:setupcon。

最后为了让它立即生效,键入,sudo udevadm trigger --subsystem-match=input --action=change(sudo应该是有无都可以的),或者重启电脑即可。

shadowsocks安装

安装pip3

yum install python34-pip -y
pip3 install shadowsocks

编辑配置文件

vim /etc/shadows.conf
{
“server”:”0.0.0.0”,
“port_password”:{
“9001”:”vb6Zx5ty”,
“9002”:”vb6Zx5ty”,
“9003”:”vb6Zx5ty”
},
“timeout”:300,
“method”:”aes-256-cfb”,
“fast_open”: false
}

#注:配置文件中,启动了三个监听端口

启动

ssserver -c /etc/shadows.conf -d start &

java性能调试工具

jvm中常用工具和命令

  1. jstack – 如果Java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到 当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。目前只有在Solaris和Linux的JDK版本里面才有。

  2. jconsole – jconsole是基于Java Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了Java 程序的内存使用,Heap size, 线程的状态,类的分配状态和空间使用等等。

  3. jvisualvm-最新出现的功能强大的工具

  4. jinfo – jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息,目前只有在Solaris和Linux的JDK版本里面才有。

  5. jmap – jmap 可以从core文件或进程中获得内存的具体匹配情况,包括Heap size, Perm size等等,目前只有在Solaris和Linux的JDK版本里面才有。

  6. jdb – jdb 用来对core文件和正在运行的Java进程进行实时地调试,里面包含了丰富的命令帮助您进行调试,它的功能和Sun studio里面所带的dbx非常相似,但 jdb是专门用来针对Java应用程序的。

  7. jstat – jstat利用了JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控等等。

  8. jps – jps是用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。

具体使用

  1. jmap的使用.pid 使用ps命令获取

    1
    2
    3
    4
    5
    6
    7
    8
    9
    1. 查看整个JVM内存状态 
    jmap -heap [pid]
    要注意的是在使用CMS GC 情况下,jmap -heap的执行有可能会导致JAVA 进程挂起

    2. 查看JVM堆中对象详细占用情况
    jmap -histo [pid]

    3. 导出整个JVM 中内存信息
    jmap -dump:format=b,file=文件名 [pid]
  2. jstat的具体使用

    • option: 参数选项
    • -t: 可以在打印的列加上Timestamp列,用于显示系统运行的时间
    • -h: 可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表头
    • vmid: Virtual Machine ID( 进程的 pid)
    • interval: 执行每次的间隔时间,单位为毫秒
    • count: 用于指定输出多少次记录,缺省则会一直打印

    option 可以从下面参数中选择

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -class                 显示ClassLoad的相关信息;
    -compiler 显示JIT编译的相关信息;
    -gc 显示和gc相关的堆信息;
    -gccapacity    显示各个代的容量以及使用情况;
    -gcmetacapacity 显示metaspace的大小
    -gcnew 显示新生代信息;
    -gcnewcapacity 显示新生代大小和使用情况;
    -gcold 显示老年代和永久代的信息;
    -gcoldcapacity 显示老年代的大小;
    -gcutil   显示垃圾收集信息;
    -gccause 显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因;
    -printcompilation 输出JIT编译的方法信息;
  • 示例一:-class

    1
    2
    3
    4
    5
    6
    7
    显示加载class的数量,及所占空间等信息。
    jstat -class <pid>
    Loaded : 已经装载的类的数量
    Bytes : 装载类所占用的字节数
    Unloaded:已经卸载类的数量
    Bytes:卸载类的字节数
    Time:装载和卸载类所花费的时间
  • 示例二: -compiler

    1
    2
    3
    4
    5
    6
    7
    8
    显示VM实时编译(JIT)的数量等信息。
    jstat -compiler <pid>
    Compiled:编译任务执行数量
    Failed:编译任务执行失败数量
    Invalid :编译任务执行失效数量
    Time :编译任务消耗时间
    FailedType:最后一个编译失败任务的类型
    FailedMethod:最后一个编译失败任务所在的类及方法
  • 示例三: -gc

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

    显示gc相关的堆信息,查看gc的次数,及时间。
    jstat –gc <pid>

    S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
    S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
    S0U :年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
    S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
    EC :年轻代中Eden(伊甸园)的容量 (字节)
    EU :年轻代中Eden(伊甸园)目前已使用空间 (字节)
    OC :Old代的容量 (字节)
    OU :Old代目前已使用空间 (字节)
    MC:metaspace(元空间)的容量 (字节)
    MU:metaspace(元空间)目前已使用空间 (字节)
    YGC :从应用程序启动到采样时年轻代中gc次数
    YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
    FGC :从应用程序启动到采样时old代(全gc)gc次数
    FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
    GCT:从应用程序启动到采样时gc用的总时间(s)
  • 示例四: -gccapacity

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22

    可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小
    jstat -gccapacity <pid>

    NGCMN :年轻代(young)中初始化(最小)的大小(字节)
    NGCMX :年轻代(young)的最大容量 (字节)
    NGC :年轻代(young)中当前的容量 (字节)
    S0C :年轻代中第一个survivor(幸存区)的容量 (字节)
    S1C : 年轻代中第二个survivor(幸存区)的容量 (字节)
    EC :年轻代中Eden(伊甸园)的容量 (字节)
    OGCMN :old代中初始化(最小)的大小 (字节)
    OGCMX :old代的最大容量(字节)
    OGC:old代当前新生成的容量 (字节)
    OC :Old代的容量 (字节)
    MCMN:metaspace(元空间)中初始化(最小)的大小 (字节)
    MCMX :metaspace(元空间)的最大容量 (字节)
    MC :metaspace(元空间)当前新生成的容量 (字节)
    CCSMN:最小压缩类空间大小
    CCSMX:最大压缩类空间大小
    CCSC:当前压缩类空间大小
    YGC :从应用程序启动到采样时年轻代中gc次数
    FGC:从应用程序启动到采样时old代(全gc)gc次数
  • 示例五:-gcmetacapacity

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    metaspace 中对象的信息及其占用量。
    jstat -gcmetacapacity<pid>

    MCMN:最小元数据容量
    MCMX:最大元数据容量
    MC:当前元数据空间大小
    CCSMN:最小压缩类空间大小
    CCSMX:最大压缩类空间大小
    CCSC:当前压缩类空间大小
    YGC :从应用程序启动到采样时年轻代中gc次数
    FGC :从应用程序启动到采样时old代(全gc)gc次数
    FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
    GCT:从应用程序启动到采样时gc用的总时间(s)
  • 示例六: -gcnew

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    年轻代对象的信息。
    jstat -gcnew <pid>

    S0C :年轻代中第一个survivor(幸存区)的容量 (字节)
    S1C :年轻代中第二个survivor(幸存区)的容量 (字节)
    S0U :年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
    S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
    TT:持有次数限制
    MTT:最大持有次数限制
    DSS:期望的幸存区大小
    EC:年轻代中Eden(伊甸园)的容量 (字节)
    EU :年轻代中Eden(伊甸园)目前已使用空间 (字节)
    YGC :从应用程序启动到采样时年轻代中gc次数
    YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
  • 示例七: -gcnewcapacity

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    年轻代对象的信息及其占用量
    jstat -gcnewcapacity <pid>

    NGCMN :年轻代(young)中初始化(最小)的大小(字节)
    NGCMX :年轻代(young)的最大容量 (字节)
    NGC :年轻代(young)中当前的容量 (字节)
    S0CMX :年轻代中第一个survivor(幸存区)的最大容量 (字节)
    S0C :年轻代中第一个survivor(幸存区)的容量 (字节)
    S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
    S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
    ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
    EC:年轻代中Eden(伊甸园)的容量 (字节)
    YGC:从应用程序启动到采样时年轻代中gc次数
    FGC:从应用程序启动到采样时old代(全gc)gc次数
  • 示例八: -gcold

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    old代对象的信息
    jstat -gcold <pid>

    MC :metaspace(元空间)的容量 (字节)
    MU:metaspace(元空间)目前已使用空间 (字节)
    CCSC:压缩类空间大小
    CCSU:压缩类空间使用大小
    OC:Old代的容量 (字节)
    OU:Old代目前已使用空间 (字节)
    YGC:从应用程序启动到采样时年轻代中gc次数
    FGC:从应用程序启动到采样时old代(全gc)gc次数
    FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
    GCT:从应用程序启动到采样时gc用的总时间(s)
  • 示例九:-gcoldcapacity

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    old代对象的信息及其占用量
    jstat -gcoldcapacity <pid>

    OGCMN :old代中初始化(最小)的大小 (字节)
    OGCMX :old代的最大容量(字节)
    OGC :old代当前新生成的容量 (字节)
    OC :Old代的容量 (字节)
    YGC :从应用程序启动到采样时年轻代中gc次数
    FGC :从应用程序启动到采样时old代(全gc)gc次数
    FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
    GCT:从应用程序启动到采样时gc用的总时间(s)
  • 示例十: - gcutil

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    统计gc信息
    jstat -gcutil <pid>

    S0 :年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
    S1 :年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
    E :年轻代中Eden(伊甸园)已使用的占当前容量百分比
    O :old代已使用的占当前容量百分比
    P :perm代已使用的占当前容量百分比
    YGC :从应用程序启动到采样时年轻代中gc次数
    YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
    FGC :从应用程序启动到采样时old代(全gc)gc次数
    FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
    GCT:从应用程序启动到采样时gc用的总时间(s)
  • 示例十一:-gccause

    1
    2
    3
    4
    5
    6
    显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因。
    jstat -gccause <pid>


    LGCC:最后一次GC原因
    GCC:当前GC原因(No GC 为当前没有执行GC)
  • 示例十二: -printcompilation

    1
    2
    3
    4
    5
    6
    7
    当前VM执行的信息。
    jstat -printcompilation <pid>

    Compiled :编译任务的数目
    Size :方法生成的字节码的大小
    Type:编译类型
    Method:类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的

网络代理,访问限制网站

  1. 通过 命令行参数 指定

  2. 如果只需要考虑代理 HTTP 协议请求,只需添加如下命令行参数:

    -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1080

  3. 想要 HTTP 和 HTTPS 协议的请求都通过代理访问网络,可以追加上:

    -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=1080

  4. 最终填写的值为:

    -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1080 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=1080

议 属性(代理主机/代理端口/不使用代理的主机列表) 默认值
HTTP http.proxyHost
http.proxyPort 80
http.nonProxyHosts

HTTPS https.proxyHost
https.proxyPort 443
https.nonProxyHosts

FTP ftp.proxyHost
ftp.proxyPort 80
ftp.nonProxyHosts

SOCKS socksProxyHost
socksProxyPort 1080

shell脚本的一些语法

记录自己的一些使用shell脚本的数据

  1. 获取进程的pid号:ps -ef | grep tomcat/ | grep -v grep | awk ‘{print $2}’

    1
    2
    3
    这个脚本首先用ps -ef | grep tomcat-tuiguang/ 获得了进程信息中包含 tomcat-tuiguang/ 的进程信息,这样出来的结果中会包含grep本身,所以我们需要用 | grep -v grep 来排除grep本身,然后通过 awk '{print $2}'来打印出要找的进程。
    上述例子中只是将进程id号打印出来,当然也可以修改为将tomcat进程kill掉,如下脚本:
    ps -ef | grep tomcat-tuiguang/ | grep -v grep | awk '{print $2}' | sed -e "s/^/kill -9 /g" | sh -
  2. 获取脚本的全路径: DIR=”$( cd “$( dirname “${BASH_SOURCE[0]}” )” && pwd )”

  3. 获取当前系统时间: IME=”date +%Y-%m-%d.%H:%M:%S”

sonarQube代码配置

java代码规范工具安装和Idea下的使用

1
2
3
4
5
6
7
预置条件
1.已安装JAVA环境
2.已安装有MySQL数据库

软件下载地址:http://www.sonarqube.org/downloads/
下载SonarQube与SonarQube Runner
中文补丁包下载:http://docs.codehaus.org/display/SONAR/Chinese+Pack
  1. 数据库配置

    1
    2
    3
    4
    5
    6
    7
    进入数据库命令
    #mysql -u root -p
    mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
    mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar';
    mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
    mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
    mysql> FLUSH PRIVILEGES;
  2. 安装sonar

    1
    2
    3
    4
    5
    #vi conf/sonar.properties
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar
    sonar.jdbc.url=jdbc:mysql://test12.kingsilk.xyz:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
    将上面几行注释打开
  3. 启动服务

    1
    2
    3
    4
    目录切换至sonar的<install_directory>/bin/linux-x86-64/目录,启动服务
    #./sonar.sh start 启动服务
    #./sonar.sh stop 停止服务
    #./sonar.sh restart 重启服务
  4. 安装sonar-runner

    1
    2
    3
    sonar是一个平台,运行还需要其他插件
    http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
    包含(maven jenkins)
  5. 添加到jenkins中

    1
    2
    3
    4
    5
    6
    7
    http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins  
    jenkins添加sonarQbue plugins
    在system config中填写 SonarQube servers
    必须配置:SonarQube Scanner ,用来扫描
    windows中配置:SonarQube Scanner for MSBuild

    在jenkins任务中进行配置:add build step添加:Execute SonarQube Scanner 。