需要的核心包如下:
以下软件包只需要部署在监控机即可。被监控机无需部署。
1.MySQL 5.0及以上(必须,用来存储监控系统采集的数据)
2.Apache 2.2及以上 (必须,WEB服务器运行服务器)
3.PHP 5.3以上 (必须,提供WEB界面支持)
4.Python2 (必须,推荐2.6及以上版本,执行数据采集和报警任务,不支持Python3)
5.Python连接和监控数据库的相关驱动模块包:
MySQLdb for python (Python连接MySQl的接口,用于监控MySQL,此模块必须安装)
cx_oracle for python (Python连接Oracle的接口,非必须,如果需要监控oracle此模块必须安装)
Pymongo for python (Python连接MongoDB的接口,非必须,如果需要监控MongoDB此模块必须安装)
redis-py for python (Python连接Redis的接口,非必须,如果需要监控Redis此模块必须安装)

一.基本环境安装
(1)安装LAMP环境Lepus对MySQL性能还是有一定的影响的,特别是当我们的被监控端越来越多,监控项也比较多时,建议安装mysql5.6二进制版本)

先安装mysql,二进制安装包mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

groupadd -r mysql
useradd -g mysql -r -s /sbin/nologin mysql
tar -zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz -C /usr/local

cd /usr/local
ln -sv mysql-5.6.36-linux-glibc2.5-x86_64 mysql

cd mysql
chown -R root.mysql ./*

mkdir /data/mydata -p
chown -R mysql.mysql /data/mydata
mkdir /data/binlogs
chown -R mysql.mysql /data/binlogs

cd /usr/local
scripts/mysql_install_db --datadir=/data/mydata --user=mysql

将服务脚本拷贝到启动项
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld

cp my.cnf /etc/my.cnf

vim /etc/my.cnf

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4

[mysqld]
port = 3306
innodb_file_per_table = 1
init-connect = 'SET NAMES utf8mb4'
character-set-server = utf8mb4
default_storage_engine = InnoDB
skip-name-resolve
skip-external-locking

datadir = /data/mydata
log-bin=/data/binlogs/master-bin
binlog_format=row

socket=/tmp/mysql.sock

interactive_timeout = 28800
wait_timeout = 28800

[mysqldump]
quick
max_allowed_packet = 16M

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

# 启动服务
service mysqld start

删除匿名用户,配置root密码

mysql> update user set password=PASSWORD('AJaC7uiKkYxbytGiEJBn') where user='root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> flush privileges;

通过以下方式安装LAP
yum install httpd php -y

(2)开机自启动httpd,mysqld
chkconfig httpd on
chkconfig mysqld on

(3)安装lepus server需要的依赖包
yum install gcc python-devel mysql-devel net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xml -y

(4)配置httpd并启动
# vim /etc/httpd/conf/httpd.conf
# 修改默认的ServerName
ServerName localhost:8090
监听8090端口
Listen 8090
启动httpd服务
# service httpd start

(5)配置php
sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/g" /etc/php.ini
sed -i "s#max_execution_time = 30#max_execution_time = 300#g" /etc/php.ini
sed -i "s#post_max_size = 8M#post_max_size = 32M#g" /etc/php.ini
sed -i "s#max_input_time = 60#max_input_time = 300#g" /etc/php.ini
sed -i "s#memory_limit = 128M#memory_limit = 128M#g" /etc/php.ini
sed -i "/;mbstring.func_overload = 0/ambstring.func_overload = 2\n" /etc/php.ini

验证lamp环境是否Ok

vim /var/www/html/info.php

<?php
phpinfo();
?>

访问http://ip/info.php看是否打印lamp环境信息

(7) 安装MySQLdb-python,解压后,编辑site.cfg,找到mysql_config,把#号去掉,并指定mysql_config的路径
mkdir lepus  
wget https://github.com/farcepest/MySQLdb1/archive/MySQLdb-1.2.5.zip
unzip MySQLdb-python.zip
[root@u04ck04 lepus]# cd MySQLdb1-MySQLdb-1.2.5/
[root@u04ck04 MySQLdb1-MySQLdb-1.2.5]# which mysql_config
/usr/local/mysql/bin/mysql_config(此处查找mysql_config命令的所在,不同方式安装的mysql,可能存在不同的地方!)
[root@vpn MySQLdb1-master]# pwd
/data/mysqldata/lepus/MySQLdb1-MySQLdb-1.2.5

[root@vpn MySQLdb1-master]# vi site.cfg
mysql_config = /usr/local/mysql/bin/mysql_config    (位置填写上一个查找到的位置)

# yum install -y python-pip
# python setup.py build
# python setup.py install

(8)安装redis驱动,如果没有redis需要监控可以跳过此步骤:
# cd /usr/local/src/
# wget https://pypi.python.org/packages/source/r/redis/redis-2.10.3.tar.gz
# tar xf redis-2.10.3.tar.gz
# cd redis-2.10.3
# python setup.py install

(9)安装pymongo模块(如果没有需要监控的Mongodb可以跳过)

# wget https://github.com/mongodb/mongo-python-driver/archive/2.7.2.zip
# upzip 2.7.2.zip
# cd mongo-python-driver-2.7.2
# python setup.py install

测试各个模块安装是否正常运行
[root@u04ck04 lepus]# pwd
/usr/local/lepus
[root@u04ck04 lepus]# python test_driver_mysql.py
MySQL python drivier is ok!
[root@u04ck04 lepus]# python test_driver_mongodb.py
MongoDB python drivier is ok!
[root@u04ck04 lepus]# python test_driver_redis.py
Redis python drivier is ok!

二、安装Lepus采集器
(1) 下载Lepus软件包下载地址:http://www.lepus.cc/soft/17
然后登录数据库创建lepus数据库和MySQL用户
# pwd
/usr/local/src
# unzip Lepus.zip

#创建lepus库并授权
mysql -uroot -pAJaC7uiKkYxbytGiEJBn -e "create database lepus default character set utf8;"
mysql -uroot -pAJaC7uiKkYxbytGiEJBn -e "grant select,insert,update,delete,create on lepus.* to 'lepus'@'localhost' identified by 'lepus';"
mysql -uroot -pAJaC7uiKkYxbytGiEJBn -e "grant select,insert,update,delete,create on lepus.* to 'lepus'@'127.0.0.1' identified by 'lepus';"
mysql -uroot -pAJaC7uiKkYxbytGiEJBn -e "flush privileges"

(2) 导入lepus数据库初始化数据,建议使用root用户导,进入到lepus解包以后的目录
cd /usr/local/src/lepus_v3.7/sql
mysql -uroot -pAJaC7uiKkYxbytGiEJBn lepus < lepus_table.sql
mysql -uroot -pAJaC7uiKkYxbytGiEJBn lepus < lepus_data.sql

验证表是否创建成功
# mysql -uroot -pAJaC7uiKkYxbytGiEJBn -e "use lepus;show tables;"
Warning: Using a password on the command line interface can be insecure.
+---------------------------------+
| Tables_in_lepus |
+---------------------------------+
| admin_log |
| admin_menu |
| admin_privilege |
| admin_role |
| admin_role_privilege |
| admin_user |
| admin_user_role |
| alarm |
| alarm_history |
| alarm_temp |
| db_servers_mongodb |
| db_servers_mysql |
| db_servers_oracle |
| db_servers_os |
| db_servers_redis |
| db_status |
| lepus_status |
| mongodb_status |
| mongodb_status_history |
| mysql_bigtable |
| mysql_bigtable_history |
| mysql_connected |
| mysql_processlist |
| mysql_replication |
| mysql_replication_history |
| mysql_slow_query_review |
| mysql_slow_query_review_history |
| mysql_slow_query_sendmail_log |
| mysql_status |
| mysql_status_history |
| options |
| oracle_status |
| oracle_status_history |
| oracle_tablespace |
| oracle_tablespace_history |
| os_disk |
| os_disk_history |
| os_diskio |
| os_diskio_history |
| os_net |
| os_net_history |
| os_status |
| os_status_history |
| redis_replication |
| redis_replication_history |
| redis_status |
| redis_status_history |
+---------------------------------+

(3) 安装lepus并运行脚本install.sh,可以打开看一下,默认安装/usr/local/lepus下,可以通过修改脚本的路径安装在别的目录下。

# pwd
/usr/local/src/lepus_v3.7/python
[root@u04ck04 python]# sh install.sh
[note] lepus will be install on basedir: /usr/local/lepus
[note] /usr/local/lepus directory does not exist,will be created.
[note] /usr/local/lepus directory created success.
[note] wait copy files.......
[note] change script permission.
[note] create links.
[note] install complete.

给全部脚本有执行权限,修改lepus连接数据库的配置文件,选项很简单不多说了
# cd /usr/local/lepus/
# chmod +x *.sh
# chmod +x *.py
# vim etc/config.ini
###监控机MySQL数据库连接地址###
[monitor_server]
host="127.0.0.1"
port=3306
user="lepus"
passwd="lepus"
dbname="lepus"

(4)启动lepus服务,启动时可以看看它的一些使用参数:

[root@u04ck04 lepus]# lepus --help
lepus help:
support-site: www.lepus.cc
====================================================================
start Start lepus monitor server; Command: #lepus start
stop Stop lepus monitor server; Command: #lepus stop
status Check lepus monitor run status; Command: #lepus status

# 启动lepus报错
[root@u04ck04 lepus]# lepus start
nohup: appending output to `nohup.out'
lepus server start fail!

查看日志:
[root@u04ck04 lepus]# cat nohup.out
Traceback (most recent call last):
File "lepus.py", line 8, in <module>
import MySQLdb
File "/usr/lib64/python2.6/site-packages/MySQL_python-1.2.5-py2.6-linux-x86_64.egg/MySQLdb/__init__.py", line 19, in <module>
import _mysql
ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory
错误原因:
找不到libmysqlclient.so.18文件
解决方法:
1.查找libmysqlclient.so.18文件位置:

# find / -name 'libmysqlclient.so.18' -print
/usr/local/mysql/lib/libmysqlclient.so.18
2.设置软连接:
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

3.重启系统的动态链接库
ldconfig

# 再次启动Ok
[root@u04ck04 lepus]# lepus start
nohup: appending output to `nohup.out'
lepus server start success!

三、安装WEB管理台
(1) 去到lepus的解压目录下把php文件夹下的所有文件拷贝/var/www/html下,然后编辑文件/var/www/html/application/config/database.php
# cp -rf /usr/local/src/lepus_v3.7/php/* /var/www/html/
# ll /var/www/html/
total 24
drwxr-xr-x 15 root root 4096 Oct 13 14:08 application
-rw-r--r-- 1 root root 6605 Oct 13 14:08 index.php
-rw-r--r-- 1 root root 20 Oct 13 13:21 info.php
-rw-r--r-- 1 root root 2547 Oct 13 14:08 license.txt
drwxr-xr-x 8 root root 4096 Oct 13 14:08 system

# cd /var/www/html/application/config/

# vim database.php

$db['default']['hostname'] = '127.0.0.1';
$db['default']['port'] = '3306';
$db['default']['username'] = 'lepus';
$db['default']['password'] = 'lepus';
$db['default']['database'] = 'lepus';
$db['default']['dbdriver'] = 'mysql';

现在可以打开浏览器,输入ip地址,默认页面是http://ip/php,即可登录系统,默认的管理员账号是admin,密码Lepusadmin,记得修改密码

被监控mysql端创建用户
GRANT SELECT,PROCESS,REPLICATION CLIENT ON *.* TO lepus@'%' IDENTIFIED BY 'AJaC7uiKkYxby';

添加mysql主机,发现部分主机报错,无法被监控:

A PHP Error was encountered

Severity: Notice

Message: Trying to get property of non-object

Filename: controllers/lp_mysql.php

Line Number: 72

跳过查看日志发现部分字段长度不够解决办法:

mysql>use lepus
mysql>alter table db_servers_mysql modify column host varchar(100);
mysql>alter table db_status modify column host varchar(100);
mysql>alter table mysql_status modify column max_connect_errors bigint(18);
mysql>alter table mysql_status_history modify column max_connect_errors bigint(18);

监控redis同样修改db_servers_redis
redis_replication
redis_replication_history
redis_status
redis_status_history

调试连接redis.py的代码:
[root@u04ck04 lepus]# python check_redis.py
2017-10-13 19:17:42 [INFO] check redis controller started.
/usr/lib/python2.6/site-packages/redis-2.10.3-py2.6.egg/redis/client.py:404: DeprecationWarning: "charset" is deprecated. Use "encoding" instead
'"charset" is deprecated. Use "encoding" instead'))
/usr/lib/python2.6/site-packages/redis-2.10.3-py2.6.egg/redis/client.py:404: DeprecationWarning: "charset" is deprecated. Use "encoding" instead
'"charset" is deprecated. Use "encoding" instead'))
/usr/lib/python2.6/site-packages/redis-2.10.3-py2.6.egg/redis/client.py:404: DeprecationWarning: "charset" is deprecated. Use "encoding" instead
'"charset" is deprecated. Use "encoding" instead'))
/usr/lib/python2.6/site-packages/redis-2.10.3-py2.6.egg/redis/client.py:404: DeprecationWarning: "charset" is deprecated. Use "encoding" instead
'"charset" is deprecated. Use "encoding" instead'))
/usr/lib/python2.6/site-packages/redis-2.10.3-py2.6.egg/redis/client.py:404: DeprecationWarning: "charset" is deprecated. Use "encoding" instead
'"charset" is deprecated. Use "encoding" instead'))
/usr/lib/python2.6/site-packages/redis-2.10.3-py2.6.egg/redis/client.py:404: DeprecationWarning: "charset" is deprecated. Use "encoding" instead
'"charset" is deprecated. Use "encoding" instead'))
mysql execute: (1264, "Out of range value for column 'rdb_changes_since_last_save' at row 1")
mysql execute: (1264, "Out of range value for column 'rdb_changes_since_last_save' at row 1")
mysql execute: (1264, "Out of range value for column 'rdb_changes_since_last_save' at row 1")
mysql execute: (1264, "Out of range value for column 'rdb_changes_since_last_save' at row 1")
2017-10-13 19:17:43 [INFO] check redis controller finished.

在check_redis.py中找到相应的字段,打印对应的sql
connect=1
sql = "insert into redis_status(server_id,host,port,tags,redis_role,connect,redis_version,redis_git_sha1,redis_git_dirty,redis_mode,os,arch_bits,multiplexing_api,gcc_version,process_id,run_id,tcp_port,uptime_in_seconds,uptime_in_days,hz,lru_clock,connected_clients,client_longest_output_list,client_biggest_input_buf,blocked_clients,used_memory,used_memory_human,used_memory_rss,used_memory_peak,used_memory_peak_human,used_memory_lua,mem_fragmentation_ratio,mem_allocator,loading,rdb_changes_since_last_save,rdb_bgsave_in_progress,rdb_last_save_time,rdb_last_bgsave_status,rdb_last_bgsave_time_sec,rdb_current_bgsave_time_sec,aof_enabled,aof_rewrite_in_progress,aof_rewrite_scheduled,aof_last_rewrite_time_sec,aof_current_rewrite_time_sec,aof_last_bgrewrite_status,total_connections_received,total_commands_processed,current_commands_processed,instantaneous_ops_per_sec,rejected_connections,expired_keys,evicted_keys,keyspace_hits,keyspace_misses,pubsub_channels,pubsub_patterns,latest_fork_usec,used_cpu_sys,used_cpu_user,used_cpu_sys_children,used_cpu_user_children) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);"
param = (server_id,host,port,tags,role,connect,redis_version,redis_git_sha1,redis_git_dirty,redis_mode,os,arch_bits,multiplexing_api,gcc_version,process_id,run_id,tcp_port,uptime_in_seconds,uptime_in_days,hz,lru_clock,connected_clients,client_longest_output_list,client_biggest_input_buf,blocked_clients,used_memory,used_memory_human,used_memory_rss,used_memory_peak,used_memory_peak_human,used_memory_lua,mem_fragmentation_ratio,mem_allocator,loading,rdb_changes_since_last_save,rdb_bgsave_in_progress,rdb_last_save_time,rdb_last_bgsave_status,rdb_last_bgsave_time_sec,rdb_current_bgsave_time_sec,aof_enabled,aof_rewrite_in_progress,aof_rewrite_scheduled,aof_last_rewrite_time_sec,aof_current_rewrite_time_sec,aof_last_bgrewrite_status,total_connections_received,total_commands_processed,current_commands_processed,instantaneous_ops_per_sec,rejected_connections,expired_keys,evicted_keys,keyspace_hits,keyspace_misses,pubsub_channels,pubsub_patterns,latest_fork_usec,used_cpu_sys,used_cpu_user,used_cpu_sys_children,used_cpu_user_children)
# print sql # 开启打印语句,再次调试可以看到对应的表字段的问题
func.mysql_exec(sql,param)

再次执行Python check_redis.py
其中一个示例:
insert into redis_status(server_id,host,port,tags,redis_role,connect,redis_version,redis_git_sha1,redis_git_dirty,redis_mode,os,arch_bits,multiplexing_api,gcc_version,process_id,run_id,tcp_port,uptime_in_seconds,uptime_in_days,hz,lru_clock,connected_clients,client_longest_output_list,client_biggest_input_buf,blocked_clients,used_memory,used_memory_human,used_memory_rss,used_memory_peak,used_memory_peak_human,used_memory_lua,mem_fragmentation_ratio,mem_allocator,loading,rdb_changes_since_last_save,rdb_bgsave_in_progress,rdb_last_save_time,rdb_last_bgsave_status,rdb_last_bgsave_time_sec,rdb_current_bgsave_time_sec,aof_enabled,aof_rewrite_in_progress,aof_rewrite_scheduled,aof_last_rewrite_time_sec,aof_current_rewrite_time_sec,aof_last_bgrewrite_status,total_connections_received,total_commands_processed,current_commands_processed,instantaneous_ops_per_sec,rejected_connections,expired_keys,evicted_keys,keyspace_hits,keyspace_misses,pubsub_channels,pubsub_patterns,latest_fork_usec,used_cpu_sys,used_cpu_user,used_cpu_sys_children,used_cpu_user_children) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);
mysql execute: (1264, "Out of range value for column 'keyspace_misses' at row 1")

可以看出以下表需要修改

alter table redis_status modify rdb_changes_since_last_save int(10);
alter table redis_status modify keyspace_hits bigint(4);
alter table redis_status modify keyspace_misses bigint(4);
alter table redis_status_history modify keyspace_hits bigint(4);
alter table redis_status_history modify rdb_changes_since_last_save int(10);

修改check_reids.py注释掉151行就解决redis不能监控slave的bug了
vim /usr/local/lepus/check_redis.py

149 except Exception, e:
150 logger_msg="check redis %s:%s : %s" %(host,port,e)
151 #logger.warning(logger_msg)
152
153 try:
154 connect=0
155 sql="insert into redis_status(server_id,host,port,tags,connect) values(%s,%s,%s,%s,%s)"
156 param=(server_id,host,port,tags,connect)
157 func.mysql_exec(sql,param)


mysql调试错误后面解决
[root@u04ck04 lepus]# python check_mysql.py
2017-10-13 19:56:32 [INFO] check mysql controller started.
2017-10-13 19:56:34 [WARNING] check mysql 10.19.150.242:3306 failure: -1 error totally whack
2017-10-13 19:56:34 [WARNING] check mysql 10.19.150.242:3306 failure: sleep 3 seconds and check again.
mysql execute: (1406, "Data too long for column 'host' at row 1")
mysql execute: (1406, "Data too long for column 'host' at row 1")
mysql execute: (1406, "Data too long for column 'host' at row 1")
mysql execute: (1406, "Data too long for column 'host' at row 1")
mysql execute: (1406, "Data too long for column 'host' at row 1")
mysql execute: (1406, "Data too long for column 'host' at row 1")
mysql execute: (1406, "Data too long for column 'host' at row 1")
2017-10-13 19:56:42 [INFO] check mysql controller finished.

监控效果图:

mysql数据库监控利器lepus天兔工具安装和部署的更多相关文章

  1. 企业级数据库监控利器Lepus

    开篇介绍官方网站:http://www.lepus.cc开源企业级数据库监控系统简洁.直观.强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能监控,让数据库监控更 ...

  2. 强大的开源企业级数据库监控利器Lepus

    Lepus监控简单介绍 官方网站:http://www.lepus.cc 开源企业级数据库监控系统 简洁.直观.强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能 ...

  3. 【Mysql数据库访问利器】phpMyadmin

    缘由 我们程序员难免要和数据库打交道,经过这几年的锻炼,感觉手写SQL语句已经忘记的差不错了,促使我一定要这篇文章的原因是,有一次晚上我更新某个系统的数据库的表(由于目前公司比较严格,数据库都只能通过 ...

  4. 10款最好用的MySQL数据库客户端图形界面管理工具

    MySQL Workbench 该工具由MySQL开发,是一个跨平台的可视化数据库设计工具.它是DBDesigner4项目备受期待的替代者,它是一个本地图形化工具,支持的操作系统包括Windows.L ...

  5. 强大的开源企业级数据监控利器Lepus安装与配置管理

    开篇介绍 官方网站:http://www.lepus.cc 开源企业级数据库监控系统 简洁.直观.强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能监控,让数据库 ...

  6. MySQL数据库监控

    MySQL MTOP由PHP和Python开发,所以监控机需要安装PHP运行环境和Python环境.需要的核心包如下: 1.MySQL 5.0及以上(用来存储监控系统采集的数据) 2.Apache 2 ...

  7. 9款最好用的MySQL数据库客户端图形界面管理工具,第三款我用了10年

    MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,这里我介绍几个经常使用的MySQL图形化管理工具,供大家参考. MySQL是一个非常流行的小型关系型数据 ...

  8. zabbix监控实战<2>----zabbix-server的安装与部署

    第一章     zabbix-server的安装与部署 1.1  环境部署 eth0                               eth1 master      10.0.0.71  ...

  9. Win7下部署Lepus企业级MySQL数据库监控

    从官网下载(http://www.lepus.cc/soft/17)安装包后,解压到phpStudy的www目录下: 打开phpStudy管理界面,找到站点管理,并新增站点: 在浏览器里面打开后,报此 ...

随机推荐

  1. oracle杀掉连接

    相关sql --查看当前连接 select count(*) from v$process --数据库允许的最大连接数 select value from v$parameter where name ...

  2. js对象,字符串 互相 转换

     JSON.stringify(jsonobj);    //可以将json对象转换成json字符串 反过来: JSON.parse(jsonstr);     //可以将json字符串转换成json ...

  3. XXE攻防技术

    http://bobao.360.cn/learning/detail/3841.html http://www.freebuf.com/articles/web/97833.html http:// ...

  4. 【python小练】0005

    第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小. 首先,iphone5的分辨率是1136x640. if条件句判断横(纵)向是否大于对应的ipho ...

  5. js伪数组转数组

    方法1: 遍历伪数组,在把值push进一个空数组中 方法2: 使用数组的slice方法,它返回的是数组,使用call或apply指向伪数组 var arr = [].slice.call(argume ...

  6. TensorFlow从入门到理解(二):你的第一个神经网络

    运行代码: from __future__ import print_function import tensorflow as tf import numpy as np import matplo ...

  7. webpack 配置全局 jQuery 对象

    将 lodash 添加到当前模块的上下文中 import _ from 'lodash' 但是你想每个模块都引入的话就特别麻烦,这里有插件可以帮助到您,只需在 webpack.config.js 中配 ...

  8. python之import模块及包的调用

    模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...

  9. 事件代理on

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Python 9 进程,线程

    本节内容 python GIL全局解释器锁 线程 进程 Python GIL(Global Interpreter Lock) In CPython, the global interpreter l ...