一、准备阶段

1、5台机器

10.1.2.180 作为mysql机器

10.1.2.200-202作为集群节点

10.1.2.203作为nginx反向代理

2、拓扑图

三、mogilefs集群部署步聚

1、180机器

1.1由于前面单节,180机器安装了mysql和Mogilefs,而现在180作为单独Mysql机器,所以先停掉Mogilefs服务

 [root@logicserver tmp]# /etc/init.d/mogilefsd stop
Stopping mogilefsd                                         [确定]

1.2创建mysql用户root的密码,方便集群节点连接上去

MariaDB [mogilefs]> GRANT ALL ON *.* TO 'root'@'10.1.%.%' IDENTIFIED BY '168';
MariaDB [mogilefs]> flush privileges;
Query OK, 0 rows affected (0.04 sec)

2、200机器

2.1 重新初始化数据库

[root@xenserver1 mogdata]# mogdbsetup --dbhost=10.1.2.180 --dbname=mogilefs --dbport=3306 --dbrootuser=root --dbrootpass=168 --dbuser=moguser --dbpass=mog168

2.2修改配置文件

root@xenserver1 mogdata]# vim /etc/mogilefs/mogilefsd.conf
db_dsn = DBI:mysql:mogilefs:host=10.1.2.180
db_user = moguser
db_pass = mog168
listen = 0.0.0.0:7001

2.3重启服务

[root@xenserver1 mogdata]# service mogilefsd restart
[root@xenserver1 mogdata]# ss -tnl | sed -n '/7001/p'
LISTEN     0      128               127.0.0.1:7001                     *:*

2.4启动 mogstored服务

 [root@xenserver1 ~]# vim /etc/mogilefs/mogstored.conf
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /data0/nfs/mogdata/
[root@xenserver1 ~]# service mogstored restart
[root@xenserver1 ~]# ss -tnl | sed -n '/7500\|7501\|7001/p'
LISTEN     0      128               127.0.0.1:7001                     *:*
LISTEN     0      128                       *:7500                     *:*
LISTEN     0      128                       *:7501                     *:*

2.3由于原来已经有了,所以先删除再重新添加

[root@xenserver1 ~]# mogadm --trackers=10.1.2.200:7001 host list
10.1.2.200 [1]: aliveIP:       10.1.2.200:7500
10.1.2.201 [2]: aliveIP:       10.1.2.201:7500
[root@xenserver1 ~]# mogadm --trackers=10.1.2.200:7001 host delete 10.1.2.200
Failure deleting host: host_not_empty Unable to delete host; it contains devices still

2.4有错误提示了,先去到180数据库下删除dev1,dev2

MariaDB [mogilefs]> select * from device-> ;
+-------+--------+--------+--------+----------+---------+------------+
| devid | hostid | status | weight | mb_total | mb_used | mb_asof    |
+-------+--------+--------+--------+----------+---------+------------+
|     1 |      1 | down   |    100 |   336801 |      66 | 1443524971 |
|     2 |      2 | alive  |    100 |     3737 |     735 | 1443525069 |
+-------+--------+--------+--------+----------+---------+------------+
2 rows in set (0.00 sec)
MariaDB [mogilefs]> delete from device where devid=1;
Query OK, 1 row affected (0.02 sec)
MariaDB [mogilefs]> delete from device where devid=2;
Query OK, 1 row affected (0.01 sec)

2.5再执行删除主机

[root@xenserver1 ~]# mogadm --trackers=10.1.2.200:7001 host delete 10.1.2.200
[root@xenserver1 ~]# mogadm --trackers=10.1.2.200:7001 host delete 10.1.2.201
[root@xenserver1 ~]# mogadm --trackers=10.1.2.200:7001 host list

2.6把自己添加进来

[root@xenserver1 ~]# mogadm --trackers=10.1.2.200:7001 host add 10.1.2.200 --ip=10.1.2.200 --status=alive
[root@xenserver1 ~]# mogadm --trackers=10.1.2.200:7001 host list
10.1.2.200 [1]: aliveIP:       10.1.2.200:7500

2.7、把mogilefs配置文件复制到201,202机器上,这两台机器安装的mogilefs请参考上章节来安装

[root@xenserver1 ~]# scp /etc/mogilefs/* 10.1.2.201:/etc/mogilefs/
root@10.1.2.201's password:
mogilefsd.conf                                100% 1459     1.4KB/s   00:00
mogstored.conf                                100%   99     0.1KB/s   00:00
[root@xenserver1 ~]# scp /etc/mogilefs/* 10.1.2.202:/etc/mogilefs/
root@10.1.2.201's password:
mogilefsd.conf                                100% 1459     1.4KB/s   00:00
mogstored.conf                                100%   99     0.1KB/s   00:00

3、201机器上

3.1启动mogilefs,mogstored服务

[root@hadoop3 nfs]# service mogilefsd start
Starting mogilefsd                                         [确定]
[root@hadoop3 nfs]# service mogstored start
Starting mogstored                                         [确定]

3.2通过本机验证一下

[root@hadoop3 nfs]# mogadm --tracker=10.1.2.201:7001 host list
10.1.2.200 [1]: aliveIP:       10.1.2.200:7500

3.3把自己也添加进来

[root@hadoop3 nfs]# mogadm --tracker=10.1.2.201:7001 host add 10.1.2.201 --ip=10
.1.2.201 --status=alive
You have new mail in /var/spool/mail/root
[root@hadoop3 nfs]# mogadm --tracker=10.1.2.201:7001 host list
10.1.2.200 [1]: aliveIP:       10.1.2.200:7500
10.1.2.201 [2]: aliveIP:       10.1.2.201:7500

3.4去到200机子上查看

 [root@xenserver1 ~]# mogadm --trackers=10.1.2.200:7001 host list
10.1.2.200 [1]: aliveIP:       10.1.2.200:7500
10.1.2.201 [2]: aliveIP:       10.1.2.201:7500

4、202机器上

4.1创建目录

[root@hadoop4 MogileFS]# mkdir /data0/nfs/mogdata/dev3 -pv
mkdir: 已创建目录 "/data0"
mkdir: 已创建目录 "/data0/nfs"
mkdir: 已创建目录 "/data0/nfs/mogdata"
mkdir: 已创建目录 "/data0/nfs/mogdata/dev3"
[root@hadoop4 MogileFS]# chown -R mogilefs.mogilefs /data0/nfs/mogdata/

4.2启动服务后,添加主机

[root@hadoop4 MogileFS]# mogadm --trackers=10.1.2.202:7001 host add 10.1.2.202 --ip=10.1.2.202 --status=alive
[root@hadoop4 MogileFS]# mogadm --trackers=10.1.2.202:7001 host list
10.1.2.200 [1]: aliveIP:       10.1.2.200:7500
10.1.2.201 [2]: aliveIP:       10.1.2.201:7500
10.1.2.202 [3]: aliveIP:       10.1.2.202:7500

5、在集群节点任何一台添加设备ID,

5.1现在就选200,此时设备列表为空的

 [root@xenserver1 ~]# mogadm device list
10.1.2.200 [1]: aliveused(G)    free(G)   total(G)  weight(%)
10.1.2.201 [2]: aliveused(G)    free(G)   total(G)  weight(%)
10.1.2.202 [3]: aliveused(G)    free(G)   total(G)  weight(%)

5.2添回设备

[root@xenserver1 ~]# mogadm --tracker=10.1.2.200:7001 device add 10.1.2.200 1
[root@xenserver1 ~]# mogadm --tracker=10.1.2.200:7001 device add 10.1.2.201 2
[root@xenserver1 ~]# mogadm --tracker=10.1.2.200:7001 device add 10.1.2.202 3
 [root@xenserver1 ~]# mogadm --tracker=10.1.2.200:7001 device list
10.1.2.200 [1]: aliveused(G)    free(G)   total(G)  weight(%)dev1:   alive      0.064    328.843    328.907        100
10.1.2.201 [2]: aliveused(G)    free(G)   total(G)  weight(%)dev2:   alive      0.718      2.932      3.649        100
10.1.2.202 [3]: aliveused(G)    free(G)   total(G)  weight(%)dev3:   alive      0.418      3.169      3.587        100

5.4选201节点验证一下

 [root@hadoop4 MogileFS]# mogadm --trackers=10.1.2.201:7001 device list
10.1.2.200 [1]: aliveused(G)    free(G)   total(G)  weight(%)dev1:   alive      0.064    328.843    328.907        100
10.1.2.201 [2]: aliveused(G)    free(G)   total(G)  weight(%)dev2:   alive      0.718      2.932      3.649        100
10.1.2.202 [3]: aliveused(G)    free(G)   total(G)  weight(%)dev3:   alive      0.418      3.169      3.587        100

6、在域内添加class类

6.1

 [root@xenserver1 ~]# mogadm --tracker=10.1.2.200:7001 class listdomain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------files                default                   2        MultipleHosts() NONE  p_w_picpaths               default                   2        MultipleHosts() NONE

6.2

[root@xenserver1 ~]# mogadm --tracker=10.1.2.200:7001 class add
ERROR: Missing argument 'domain'
Help for 'class-add' command:mogadm class add <domain> <class> [opts]           Add a file class to a domain.<class>              Name of class to add.<domain>             Domain to add class to.--hashtype=s         Hash algorithm string ('MD5', 'NONE').--mindevcount=i      Minimum number of replicas.--replpolicy=s       Replication policy string.

6.3

[root@xenserver1 ~]# mogadm --trackers=10.1.2.200:7001 class add p_w_picpaths class0 --mindevcount=2
[root@xenserver1 ~]# mogadm --trackers=10.1.2.200:7001 class add p_w_picpaths class1 --mindevcount=2
[root@xenserver1 ~]# mogadm --trackers=10.1.2.200:7001 class add p_w_picpaths class2 --mindevcount=2
root@xenserver1 ~]# mogadm --tracker=10.1.2.200:7001 class listdomain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------files                default                   2        MultipleHosts() NONE  p_w_picpaths               class0                    2        MultipleHosts() NONE   p_w_picpaths               class1                    2        MultipleHosts() NONE   p_w_picpaths               class2                    2        MultipleHosts() NONE   p_w_picpaths               default                   2        MultipleHosts() NONE

四、203机器上nginx部署

1、下载地址

http://nginx.org/en/download.html

http://www.grid.net.ru/nginx/mogilefs.en.html

2、

[root@hadoop5 ~]# yum -y groupinstall "Development Tools" "Server Platform Develoment"

3、

[root@hadoop5 nginx-1.8.0]# yum install pcre-devel -y

4、

[root@hadoop5 nginx]# ls
nginx-1.8.0         nginx_mogilefs_module-1.0.4
nginx-1.8.0.tar.gz  nginx_mogilefs_module-1.0.4.tar.gz

5、进到相应nginx-1.8.0目录下编译安装

[root@hadoop5 nginx]# ./configure   --prefix=/usr   --sbin-path=/usr/sbin/nginx   --conf-path=/etc/nginx/nginx.conf   --error-log-path=/var/log/nginx/error.log   --http-log-path=/var/log/nginx/access.log   --pid-path=/var/run/nginx/nginx.pid    --lock-path=/var/lock/nginx.lock   --user=nginx   --group=nginx   --with-http_ssl_module   --with-http_flv_module   --with-http_stub_status_module   --with-http_gzip_static_module   --http-client-body-temp-path=/var/tmp/nginx/client/   --http-proxy-temp-path=/var/tmp/nginx/proxy/   --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/   --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi   --http-scgi-temp-path=/var/tmp/nginx/scgi   --with-pcre   --with-debug   --add-module=../nginx_mogilefs_module-1.0.4

6、为nginx提供init脚本

[root@hadoop5 ~]# vim /etc/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {# make required directoriesuser=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`options=`$nginx -V 2>&1 | grep 'configure arguments:'`for opt in $options; doif [ `echo $opt | grep '.*-temp-path'` ]; thenvalue=`echo $opt | cut -d "=" -f 2`if [ ! -d "$value" ]; then# echo "creating" $valuemkdir -p $value && chown -R $user $valuefifidone
}
start() {[ -x $nginx ] || exit 5[ -f $NGINX_CONF_FILE ] || exit 6make_dirsecho -n $"Starting $prog: "daemon $nginx -c $NGINX_CONF_FILEretval=$?echo[ $retval -eq 0 ] && touch $lockfilereturn $retval
}
stop() {echo -n $"Stopping $prog: "killproc $prog -QUITretval=$?echo[ $retval -eq 0 ] && rm -f $lockfilereturn $retval
}
restart() {configtest || return $?stopsleep 1start
}
reload() {configtest || return $?echo -n $"Reloading $prog: "killproc $nginx -HUPRETVAL=$?echo
}
force_reload() {restart
}
configtest() {$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {status $prog
}
rh_status_q() {rh_status >/dev/null 2>&1
}
case "$1" instart)rh_status_q && exit 0$1;;stop)rh_status_q || exit 0$1;;restart|configtest)$1;;reload)rh_status_q || exit 7$1;;force-reload)force_reload;;status)rh_status;;condrestart|try-restart)rh_status_q || exit 0;;*)echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"exit 2
esac

7、

[root@hadoop5 ~]# groupadd -r nginx
[root@hadoop5 ~]# useradd -r -g nginx nginx
[root@hadoop5 ~]# chmod +x /etc/init.d/nginx
[root@hadoop5 ~]# chkconfig --add nginx
[root@hadoop5 ~]# service nginx configtest
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

五、上传图片

[root@xenserver1 picture]# mogupload --trackers=10.1.2.200:7001 --domain=p_w_picpaths --key='/p_w_picpaths/1.png' --file='/root/picture/1.png'
[root@xenserver1 picture]# mogupload --trackers=10.1.2.200:7001 --domain=p_w_picpaths --key='/p_w_picpaths/2.png' --file='/root/picture/2.png'
[root@xenserver1 picture]# moglistkeys --trackers=10.1.2.200 --domain=p_w_picpaths
/p_w_picpaths/1.png
/p_w_picpaths/2.png
[root@xenserver1 /]# mogfileinfo --tracker=10.1.2.201:7001 --domain=p_w_picpaths --key='/p_w_picpaths/1.png'
- file: /p_w_picpaths/1.pngclass:              defaultdevcount:                    2domain:               p_w_picpathsfid:                   10key:        /p_w_picpaths/1.pnglength:               178950- http://10.1.2.201:7500/dev2/0/000/000/0000000010.fid- http://10.1.2.202:7500/dev3/0/000/000/0000000010.fid
[root@xenserver1 /]# mogfileinfo --tracker=10.1.2.201:7001 --domain=p_w_picpaths --key='/p_w_picpaths/2.png'
- file: /p_w_picpaths/2.pngclass:              defaultdevcount:                    2domain:               p_w_picpathsfid:                   11key:        /p_w_picpaths/2.pnglength:               149341- http://10.1.2.202:7500/dev3/0/000/000/0000000011.fid- http://10.1.2.201:7500/dev2/0/000/000/0000000011.fid

六、配置nginx使用mogilefs模块

1、

[root@hadoop5 ~]# cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

2、编辑配置文件

[root@hadoop5 ~]# vim /etc/nginx/nginx.conf#   }server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}location /files/ {mogilefs_tracker mogcluster;mogilefs_domain files;
#        mogilefs_methods GET;#       mogilefs_noverify on;mogilefs_pass {proxy_pass $mogilefs_path;proxy_hide_header Content-Type;proxy_buffering off;}}location /p_w_picpaths/ {#    mogilefs_tracker 10.1.2.200:7001;mogilefs_tracker mogcluster;#   }server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}location /files/ {mogilefs_tracker mogcluster;mogilefs_domain files;
#        mogilefs_methods GET;#       mogilefs_noverify on;mogilefs_pass {proxy_pass $mogilefs_path;proxy_hide_header Content-Type;proxy_buffering off;}}location /p_w_picpaths/ {#    mogilefs_tracker 10.1.2.200:7001;mogilefs_tracker mogcluster;#mogilefs_domain files;mogilefs_domain p_w_picpaths;mogilefs_methods GET;mogilefs_noverify on;mogilefs_pass {proxy_pass $mogilefs_path;proxy_hide_header Content-Type;proxy_buffering off;}}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

七、查看当配置状态信息

[root@hadoop3 ~]# mogstats -h
Usage:mogstats --db_dsn="DBI:mysql:mfs:host=mfshost" --db_user="mfs" --db_pass="mfs" --verbose --stats="devices,files"mogstats --stats="all"mogstats [all options in ~/.mogilefs.conf]valid stats: all, delete-queue, devices, domains, fids, files, general-queues, replication, replication-queue
You have new mail in /var/spool/mail/root[root@hadoop3 ~]# mogstats --config=/etc/mogilefs/mogilefsd.conf
Fetching statistics... (all)Statistics for devices...device     host                   files     status---------- ---------------- ------------ ----------dev1       10.1.2.200          3      alivedev2       10.1.2.201          4      alivedev3       10.1.2.202          3      alive---------- ---------------- ------------ ----------Statistics for file ids...Max file id: 14Statistics for files...domain               class           files    size (m)  fullsize (m)-------------------- ----------- ---------- ----------- -------------files                default             1           0             0p_w_picpaths               default             4           0             0-------------------- ----------- ---------- ----------- -------------Statistics for replication...domain               class        devcount      files-------------------- ----------- ---------- ----------files                default             2          1p_w_picpaths               default             2          4-------------------- ----------- ---------- ----------Statistics for replication queue...status                      count-------------------- -------------------------------- ------------Statistics for delete queue...status                      count-------------------- -------------------------------- ------------Statistics for general queues...queue           status                      count--------------- -------------------- --------------------------- -------------------- ------------done[root@hadoop3 ~]# mogstats -h
Usage:mogstats --db_dsn="DBI:mysql:mfs:host=mfshost" --db_user="mfs" --db_pass="mfs" --verbose --stats="devices,files"mogstats --stats="all"mogstats [all options in ~/.mogilefs.conf]valid stats: all, delete-queue, devices, domains, fids, files, general-queues, replication, replication-queue
You have new mail in /var/spool/mail/root
[root@hadoop3 ~]# mogstats --config=/etc/mogilefs/mogilefsd.conf --stats="domains"
Fetching statistics... (domains)Statistics for domains...domain               class           files-------------------- ----------- ----------files                default             1p_w_picpaths               default             4-------------------- ----------- ----------done

八、结果

1,访问图片,提示查找不到

查看错误日志

[root@hadoop5 ~]# cat /var/log/nginx/error.log
2015/10/08 11:17:03 [error] 2158#0: *1 connect() failed (113: No route to host) while connecting to upstream, client: 10.1.2.62, server: localhost, request: "GET /files/fstab.html HTTP/1.1", upstream: "10.1.2.200:7001", host: "10.1.2.203"
" while reading response header from upstream, client: 10.1.2.62, server: localhost, request: "GET /p_w_picpaths/1.png HTTP/1.1", upstream: "10.1.2.202:7001", host: "10.1.2.203"
" while reading response header from upstream, client: 10.1.2.62, server: localhost, request: "GET /p_w_picpaths/2.png HTTP/1.1", upstream: "10.1.2.201:7001", host: "10.1.2.203"

2、访问文件却可以

3、百思不得其解,莫非我模块不兼容么

转载于:https://blog.51cto.com/zouqingyun/1699285

MogileFS高级应用(二)最后有疑问相关推荐

  1. RHEL6.3 DNS高级技术二 通过DNS主从区域复制实现DNS View负载均衡和冗余备份

    RHEL6.3 DNS高级技术二 ----通过DNS主从区域复制实现DNS View负载均衡和冗余备份 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 ...

  2. 侯捷面向对象高级编程(二)

    侯捷面向对象高级编程(二) 转换函数 转换函数没有返回值,返回值就是double即函数名,不需要自己写 因为转换函数一般不会改变其中内容,所以要加const限定 两条路都可以走,就回产生歧义,报错 e ...

  3. CCNP-第五篇-OSPF高级版(二)

    CCNP-第五篇-OSPF高级版(二) 链路状态数据库=LSDB=拓扑表 link state database 收到之后放入自己的数据库再计算最新的放入路由表 根据COST值来计算 >COST ...

  4. java rabbitmq 并发_RabbitMQ消息中间件 高级篇二 高并发情况下保障消息投递可靠性...

    RabbitMQ消息中间件技术精讲9 高级篇二 高并发场景下,消息的延迟投递做二次确认进行回调检查来保障生产者消息投递成功的可靠性 在上一篇文章中,我们介绍了BAT大厂中一种方式保障生成者消息投递可靠 ...

  5. 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(四) --高级设置二...

    一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(四) --高级设置二 原文:一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(四) --高级设置二 上 ...

  6. vue高级进阶( 二 ) 8种组件通信详解

    猛兽总是独行,牛羊才成群结队. -------鲁迅 vue组件通信的重要性无需多言...但是你肯定没有全部掌握,所以这第二篇文章应运而生 props和$emit props父传子,$emit子传父,看 ...

  7. 服务异常通讯高级篇二(死信交换机、DelayExchange延迟队列插件)

    服务异常通讯高级篇二(死信交换机) 1.初始死信交换机 当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter): 消费者使用basic.reject或 basic.nack声明消 ...

  8. JAVA—— MySQL高级(二)

    文章目录 一.MySQL存储引擎 1.MySQL体系结构 2.MySQL存储引擎 3.常用引擎的特性对比 4.引擎的操作 5.总结:引擎的选择 二.MySQL索引 1.索引的概念 2.索引的分类 3. ...

  9. JS 高级(二)闭包、封装

    目录 一.闭包 二.面向对象 1. 封装 一.闭包 全局变量和局部变量在使用的过程中都各有优点,但它们也都有着自己的不足之处.全局变量的好处是可以被重用,但是极易被污染(注意一般公司中禁止使用一切形式 ...

最新文章

  1. Silverlight Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
  2. 【Java 虚拟机原理】Class 字节码二进制文件分析 五 ( 方法计数器 | 方法表 | 访问标志 | 方法名称索引 | 方法返回值类型 | 方法属性数量 | 方法属性表 )
  3. datagrid里面某一行双击打开代码
  4. Github标星3w+,热榜第一,如何用Python实现所有算法
  5. 弹出taskeng.exe窗口的解决方法
  6. global语句(python学习手册422页)
  7. 知乎高赞 | Go 技术一面一般考哪些内容
  8. 2017.9.28 lca 失败总结
  9. 团队梯队人才培养模型,60页人才梯队建设与人才培养,果断收藏
  10. 通信工程和计算机专业与软件工程专业,从短期和长远来看,哪个专业的前景和钱景更好?
  11. 新手android中ListView实现音乐列表
  12. WordPress漏洞扫描器wpscan
  13. SpaceX的代码开源了,来看看火箭技术的代码.Spacex Rest API设计很有参考价值
  14. java银行面试题目及答案,顺利拿到offer
  15. easyui主界面布局easyui-layout用法一例
  16. Clipboard.js移动端【ios】复制事件不生效解决方法
  17. 怎么把录音变成文字?
  18. 项目依赖包文件生成requirements.txt
  19. Deepstream 资料阅读记录
  20. Java程序员笨鸟前行之路(一) 开发环境搭建

热门文章

  1. 贝叶斯网络/深度信念网络学习
  2. 进程和线程的区别?什么时候用进程?什么时候用线程?
  3. BZOJ2653 middle 【主席树】【二分】*
  4. (十)MySQL日志
  5. 使用SQL_TRACE进行数据库诊断
  6. Cannot read property 'nodeType' of null; audio元素默认样式下载按钮
  7. IOS-资源最小化之点九图片的使用
  8. 【LeetCode】55.跳跃游戏
  9. kettle中的switch_Kettle学习笔记(二)— 基本操作
  10. 此上下文中不允许函数定义。_深度好文 | 你知道Go中的 context 是怎么实现的吗?...