MogileFS高级应用(二)最后有疑问
一、准备阶段
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高级应用(二)最后有疑问相关推荐
- RHEL6.3 DNS高级技术二 通过DNS主从区域复制实现DNS View负载均衡和冗余备份
RHEL6.3 DNS高级技术二 ----通过DNS主从区域复制实现DNS View负载均衡和冗余备份 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 ...
- 侯捷面向对象高级编程(二)
侯捷面向对象高级编程(二) 转换函数 转换函数没有返回值,返回值就是double即函数名,不需要自己写 因为转换函数一般不会改变其中内容,所以要加const限定 两条路都可以走,就回产生歧义,报错 e ...
- CCNP-第五篇-OSPF高级版(二)
CCNP-第五篇-OSPF高级版(二) 链路状态数据库=LSDB=拓扑表 link state database 收到之后放入自己的数据库再计算最新的放入路由表 根据COST值来计算 >COST ...
- java rabbitmq 并发_RabbitMQ消息中间件 高级篇二 高并发情况下保障消息投递可靠性...
RabbitMQ消息中间件技术精讲9 高级篇二 高并发场景下,消息的延迟投递做二次确认进行回调检查来保障生产者消息投递成功的可靠性 在上一篇文章中,我们介绍了BAT大厂中一种方式保障生成者消息投递可靠 ...
- 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(四) --高级设置二...
一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(四) --高级设置二 原文:一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(四) --高级设置二 上 ...
- vue高级进阶( 二 ) 8种组件通信详解
猛兽总是独行,牛羊才成群结队. -------鲁迅 vue组件通信的重要性无需多言...但是你肯定没有全部掌握,所以这第二篇文章应运而生 props和$emit props父传子,$emit子传父,看 ...
- 服务异常通讯高级篇二(死信交换机、DelayExchange延迟队列插件)
服务异常通讯高级篇二(死信交换机) 1.初始死信交换机 当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter): 消费者使用basic.reject或 basic.nack声明消 ...
- JAVA—— MySQL高级(二)
文章目录 一.MySQL存储引擎 1.MySQL体系结构 2.MySQL存储引擎 3.常用引擎的特性对比 4.引擎的操作 5.总结:引擎的选择 二.MySQL索引 1.索引的概念 2.索引的分类 3. ...
- JS 高级(二)闭包、封装
目录 一.闭包 二.面向对象 1. 封装 一.闭包 全局变量和局部变量在使用的过程中都各有优点,但它们也都有着自己的不足之处.全局变量的好处是可以被重用,但是极易被污染(注意一般公司中禁止使用一切形式 ...
最新文章
- Silverlight Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
- 【Java 虚拟机原理】Class 字节码二进制文件分析 五 ( 方法计数器 | 方法表 | 访问标志 | 方法名称索引 | 方法返回值类型 | 方法属性数量 | 方法属性表 )
- datagrid里面某一行双击打开代码
- Github标星3w+,热榜第一,如何用Python实现所有算法
- 弹出taskeng.exe窗口的解决方法
- global语句(python学习手册422页)
- 知乎高赞 | Go 技术一面一般考哪些内容
- 2017.9.28 lca 失败总结
- 团队梯队人才培养模型,60页人才梯队建设与人才培养,果断收藏
- 通信工程和计算机专业与软件工程专业,从短期和长远来看,哪个专业的前景和钱景更好?
- 新手android中ListView实现音乐列表
- WordPress漏洞扫描器wpscan
- SpaceX的代码开源了,来看看火箭技术的代码.Spacex Rest API设计很有参考价值
- java银行面试题目及答案,顺利拿到offer
- easyui主界面布局easyui-layout用法一例
- Clipboard.js移动端【ios】复制事件不生效解决方法
- 怎么把录音变成文字?
- 项目依赖包文件生成requirements.txt
- Deepstream 资料阅读记录
- Java程序员笨鸟前行之路(一) 开发环境搭建
热门文章
- 贝叶斯网络/深度信念网络学习
- 进程和线程的区别?什么时候用进程?什么时候用线程?
- BZOJ2653 middle 【主席树】【二分】*
- (十)MySQL日志
- 使用SQL_TRACE进行数据库诊断
- Cannot read property 'nodeType' of null; audio元素默认样式下载按钮
- IOS-资源最小化之点九图片的使用
- 【LeetCode】55.跳跃游戏
- kettle中的switch_Kettle学习笔记(二)— 基本操作
- 此上下文中不允许函数定义。_深度好文 | 你知道Go中的 context 是怎么实现的吗?...