随意随想

知其然,知其所以然

0%

用 C 或 C++ 这样的编程语言写一个应用时,需要编写代码来销毁内存中不再需要的对象。当应用程序扩展得越来越复杂时,未使用对象被忽略释放的可能性就越大。这会导致内存泄露,最终内存耗尽,在某个时刻将没有更多的内存可以分配。结果就是应用程序运行失败并出现 OutOfMemoryError 错误。但在 Java 中, 垃圾收集器Garbage Collection (GC)会在程序执行过程中自动运行,减轻了手动分配内存和可能的内存泄漏的任务。
垃圾收集器并不只有一种,Java 虚拟机(JVM)有七种不同的垃圾收集器,了解每种垃圾收集器的目的和优点是很有用的。

JDK1.8之前的堆内存示意图:

JDK7/8后,HotSpot虚拟机所有收集器及组合(连线),如下图:

阅读全文 »

1、zookeeper的下载
官网 下载地址

wget –no-check-certificate https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

2、解压压缩包

tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /usr/local/

3、进入zookeeper的安装目录下

  • 创建data目录,存放我们的数据,使用以下命令

    cd /usr/local/apache-zookeeper-3.6.3-bin
    mkdir data

4、进入conf目录,修改文件名称

  • 把zoo_sample.cfg 改名为zoo.cfg。可以复制一份,重命名为zoo.cfg(默认配置名称)

    #进入conf目录
    cd conf/
    #复制一份,名为zoo.cfg
    cp zoo_sample.cfg zoo.cfg

5、修改zoo.cfg配置文件

  • 将dataDir修改为我们自己创建的data目录

6、启动测试

  • 进入zookeeper目录下的bin目录,使用命令启动zkServer.sh,后缀为sh的为linux启动,为cmd的是Windows下启动

    ./zkServer.sh start

  • 启动后查看服务的状态,显示如下信息则启动成功

    ./zkServer.sh status

  • 停止服务

    ./zkServer.sh stop

7、zkui的安装
7.1 下载 zkui

7.2 编译

mvn clean package

7.3 上传到服务器

rz

7.4 修改配置

7.5 上传启动脚本

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
57
58
59
60
61
62
63
64
65
#!/usr/bin/env bash

PIDFILE=~/zkui.pid
ZKUIBINDIR=$(cd `dirname $0`; pwd)
ZKUICLASSNAME="target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar"
ZKUI_DAEMON_OUT=$ZKUIBINDIR/zkui.out

start(){
echo "Starting zkui ... $ZKUIBINDIR"
if [ -f "$PIDFILE" ]; then
if kill -0 `cat "$PIDFILE"` > /dev/null 2>&1; then
echo zkui already running as process `cat "$PIDFILE"`.
exit 0
fi
fi
cd $ZKUIBINDIR
cp config.cfg target
nohup java -jar "$ZKUIBINDIR/$ZKUICLASSNAME" > "$ZKUI_DAEMON_OUT" 2>&1 < /dev/null &
if [ $? -eq 0 ];
then
echo $!>$PIDFILE
if [ $? -eq 0 ];
then
sleep 1
echo STARTED
else
echo FAILED TO WRITE PID
exit 1
fi
else
echo SERVER DID NOT START
exit 1
fi
}

stop(){
echo -n "Stopping zkui ... "
if [ ! -f "$PIDFILE" ]
then
echo "no zkui to stop (could not find file $PIDFILE)"
else
kill -9 $(cat "$PIDFILE")
rm "$PIDFILE"
echo STOPPED
fi
exit 0
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
shift
"$0" stop
sleep 3
"$0" start
;;
*)
echo "Usage: $0 {start|stop|restart}" >&2
esac

平时用的最多是centos服务器,本案例使用centos7为例子,其他linux服务器雷同
一般用的最多的是以下两种安装方式。。。

阅读全文 »