2021年1月

【油条为啥要两根一起炸 原因你绝对想不到】油条是早点中的一项重要食物。尤其在冬天,一份金灿灿又酥脆的油条,加上热气腾腾的豆浆,整个人都会变得暖和起来。但是,你知道油条为啥都是成对出现吗? 油条在加热过程中,里面的膨松剂会产生很多小气泡,让油条膨胀起来。单根油条下锅油炸,膨胀的速度远不如两根一起炸得明显。这时炸好的油条又细又长,看起来像棍子。膨胀度还不及双根油条的一半。 而当两根一起炸的时候拥抱的地方不能立刻接触滚烫,始终保持柔软,给油条膨胀提供了空间。单根炸的时候整根油条都被热油给焦化定型了,油条就没有了膨胀的空间了。所以,两根油条一起炸膨胀度高,最为酥脆可口。(央视财经、科普中国)

DBeaver 是一个基于 Java 开发,免费开源的通用数据库管理和开发工具,使用非常友好的 ASL 协议。可以通过官方网站或者 Github 进行下载。

由于 DBeaver 基于 Java 开发,可以运行在各种操作系统上,包括:Windows、Linux、macOS 等。DBeaver 采用 Eclipse 框架开发,支持插件扩展,并且提供了许多数据库管理工具:ER 图、数据导入/导出、数据库比较、模拟数据生成等。

DBeaver 通过 JDBC 连接到数据库,可以支持几乎所有的数据库产品,包括:MySQL、PostgreSQL、MariaDB、SQLite、Oracle、Db2、SQL Server、Sybase、MS Access、Teradata、Firebird、Derby 等等。商业版本更是可以支持各种 NoSQL 和大数据平台:MongoDB、InfluxDB、Apache Cassandra、Redis、Apache Hive 等。

下载与安装

DBeaver 社区版可以通过官方网站或者 Github 进行下载。两者都为不同的操作系统提供了安装包或者解压版,可以选择是否需要同时安装 JRE。另外,官方网站还提供了 DBeaver 的 Eclipse 插件,可以在 Eclipse 中进行集成。

DBeaver 支持中文,安装过程非常简单,不多说,唯一需要注意的是 DBeaver 的运行依赖于 JRE。不出意外,安装完成后运行安装目录下的 dbeaver.exe 可以看到以下界面(Windows 10):

这个界面其实是新建数据库连接,我们可以看到它支持的各种数据平台;先点击“取消”按钮,进入主窗口界面。

此时,它会提示我们是否建立一个示例数据库。

如果点击“是(Y)”,它会创建一个默认的 SQLite 示例数据库。下图是它的主窗口界面。

DBeaver 和我们常用的软件类似,最上面是菜单项和快捷工具,左侧是已经建立的数据库连接和项目信息,右侧是主要的工作区域。

连接数据库

打开 DBeaver 之后,首先要做的就是创建数据库连接。可以通过菜单“数据库” -> “新建连接”打开新建连接向导窗口,也就是我们初次运行 DBeaver 时弹出的窗口。

我们以 PostgreSQL 为例,新建一个数据库连接。选择 PostgreSQL 图标,点击“下一步(N)”。

然后是设置数据库的连接信息:主机、端口、数据库、用户、密码。“Advanced settings”高级设置选项可以配置 SSH、SSL 以及代理等,也可以为连接指定自己的名称和连接类型(开发、测试、生产)。

搜索Java知音公众号,回复“后端面试”,送你一份Java面试题宝典.pdf

点击最下面的“测试链接(T)”可以测试连接配置的正确性。初次创建某种数据库的连接时,会提示下载相应的 JDBC 驱动。

它已经为我们查找到了相应的驱动,只需要点击“下载”即可,非常方便。下载完成后,如果连接信息正确,可以看到连接成功的提示。

确认后完成连接配置即可。左侧的数据库导航中会增加一个新的数据库连接。

由于某些数据库(例如 Oracle、Db2)的 JDBC 驱动需要登录后才能下载,因此可以使用手动的方式进行配置。选择菜单“数据库” -> “驱动管理器”。

选择 Oracle ,点击“编辑(E)…”按钮。

通过界面提示的网址,手动下载 Oracle 数据库的 JDBC 驱动文件,例如 ojdbc8.jar。然后点击“添加文件(F)”按钮,选择并添加该文件。

下次建立 Oracle 数据库连接时即可使用该驱动。

新建连接之后,就可以通过这些连接访问相应的数据库,查看和编辑数据库中的对象,执行 SQL 语句,完成各种管理和开发工作。

生成 ER 图

最后介绍一下如何生成数据库对象的 ER 图。点击窗口左侧“数据库导航”旁边的“项目”视图。

其中有个“ER Diagrams”,就是实体关系图。右击该选项,点击“创建新的 ER 图”。

输入一个名称并选择数据库连接和需要展示的对象,然后点击“完成”,即可生成相应的 ER 图。

ER 图可以进行排版和显示设置,也支持打印为图片。DBeaver 目前还不支持自己创建 ER 图,只能从现有的数据库中生成。

对于图形工具,很多功能我们都可以自己去使用体会;当然,DBeaver 也提供了用户指南,自行参考。



作者:Java入门到入坟
链接:https://www.jianshu.com/p/db5392acfe77
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


Docker容器可视化监控中心搭建

CodeSheep  关注

0.1232018.04.17 00:14:19字数 1,134阅读 16,391

封面图片


概述

一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据,本文将实操 如何搭建一个可视化的监控中心 来收集这些承载着具体应用的容器的时序信息并可视化分析与展示!

动手了,动手了...

注: 本文原载于 My Personal Blog:, CodeSheep · 程序羊 !


准备镜像

  • adviser:负责收集容器的随时间变化的数据

  • influxdb:负责存储时序数据

  • grafana:负责分析和展示时序数据

镜像准备


部署Influxdb服务

可以将其视为一个数据库服务,其确实用于存储数据。之所以选用该数据库,原因正如官网所说:

Open Source Time Series DB Platform for Metrics & Events (Time Series Data)

下面我们将该服务部署起来

docker run -d -p 8086:8086 \-v ~/influxdb:/var/lib/influxdb \--name influxdb tutum/influxdb
  • 进入influxdb容器内部,并执行influx命令:

docker exec -it influxdb influx

进入influxdb的shell命令行

  • 创建数据库test和root用户用于本次试验测试

CREATE DATABASE "test"

CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES

创建测试数据库并查看


部署cAdvisor服务

谷歌的cadvisor可以用于收集Docker容器的时序信息,包括容器运行过程中的资源使用情况和性能数据。

  • 运行cadvisor服务

docker run -d \-v /:/rootfs -v /var/run:/var/run -v /sys:/sys \-v /var/lib/docker:/var/lib/docker \--link=influxdb:influxdb --name cadvisor google/cadvisor:v0.27.3 \--storage_driver=influxdb \--storage_driver_host=influxdb:8086 \--storage_driver_db=test \--storage_driver_user=root \--storage_driver_password=root

特别注意项:

在运行上述docker时,这里有可能两个其他配置项需要添加(CentOS, RHEL需要):

  • --privileged=true

设置为true之后,容器内的root才拥有真正的root权限,可以看到host上的设备,并且可以执行mount;否者容器内的root只是外部的一个普通用户权限。由于cadvisor需要通过socket访问docker守护进程,在CentOs和RHEL系统中需要这个这个选项。

  • --volume=/cgroup:/cgroup:ro

对于CentOS和RHEL系统的某些版本(比如CentOS6),cgroup的层级挂在/cgroup目录,所以运行cadvisor时需要额外添加–volume=/cgroup:/cgroup:ro选项。


部署Grafana服务

grafana则是一款开源的时序数据分析工具,而且界面专业易用,等下等部署好了,大家就能感受到:

docker run -d -p 5000:3000 \-v ~/grafana:/var/lib/grafana \--link=influxdb:influxdb \--name grafana grafana/grafana

至此3个容器都已经启动了:

3个容器均已启动完成

下面开始具体实验了


实战

  • 访问grafana服务

打开localhost:5000来访问grafana的web服务,此时提示你需要登录,注意用户名和密码都是admin

grafana登陆界面

登录后可以看到grafana的主页面:

grafana的主页面

看的很明显,在Grafana上有好几个步骤需要做,这里Install Grafana已经完成了,接下来我们需要:

  • Add data source

  • Create dashboard

  • …...


  • Add Data Source

点击Add data source进入

Add Data Source

然后主要是Setting选项卡设置

Setting

我们需要根据实际情况来填写各项内容:

填写Setting中的内容

Data source添加成功会予以提示

Data source添加成功

数据源添加完成以后,我们需要添加仪表盘(Dashboard)


  • Add Dashboard

点击Add dashboard进入

Add dashboard

这里有很多类型的仪表盘供选择,我们选用最常用的Graph就好

Graph

进入之后,点击Panel Title下拉列表,再选择Edit进行编辑即可

Panel Title → Edit

在Edit里面主要的就是需要添加查询的条件,继续看下文


  • Add Query Editor

查询条件中我们可以选择要监控的指标:

Add Query Editor

这里选一个memory usage好了,然后要监控的容器选择grafana自身好了。

当然这里不止可以监控一个指标,也不止可以监控一个容器,更多组合我们只需要在下面并列着一个一个添加query条目就好!

最后我添加了三个监控条件,分别用于监控grafana、influxdb和cadvisor三个容器的memory usage指标,并将其同时显示于图中,怎么样是不是很直观!

监测三个容器的memory usage指标

这里可以摸索的设置项还有很多,比如一些坐标自定义、显示策略自定义,甚至我们还可以自定义报警策略等等


后记

由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!


1、pscp 简要描述:

PSCP (PuTTY Secure Copy client)是PuTTY 提供的文件传输工具 ,通过 SSH 连接,在两台机器之间安全的传输文件,可以用于任何 SSH(包括 SSH v1、SSH v2) 服务器。

2、下载:

可以从http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html下载pscp,并将其放入windows的system32 文件夹下,或者自己设置环境变量目录,

这样在dos命令窗口中就能直接调用使用了。

3、使用方法:

1) Windows ——> Linux

命令格式:pscp localfile rootuser@remoteip:/fileDirectory  

拷贝整个文件夹: pscp -r localDir rootuser@remoteip:/fileDirectory

或者pscp -r -l root -pw 123456 localDir  remoteip:/fileDirectory

说明:  

  -r 复制目录下所有文件;  

  -l 对方机器(linux)的用户名(root);

  -pw 密码(1234567);  

2) Linux ——> Windows

把前后地址对调

 pscp -r rootuser@remoteip:/fileDirectory localDir

  pscp -r -l root -pw 123456 remoteip:/fileDirectory localDir


4、举例:

    1)比如我想把windows下e:\zhangmin 整个目录的所有文件复制到linux /root目录下,命令如下:

    pscp -r -l root -pw 123456 e:\zhangmin 192.168.0.2:/root

2)把服务器上的/tmp/dir目录取回本地"D:\data\"

pscp -r root@192.168.0.2:/tmp/dir "D:\data\"


php实现Linux定时备份数据到百度云盘

安装bpcs_uploader 虽然关于bpcs_uploader的教程不少,但都千篇一律。虽然网上也有很详细的教程,不过可能还有漏掉的细节。
废话不多说了,开工。
下载进程包:

1
wget https://github.com/oott123/bpcs_uploader/zipball/master


解压:

1
unzip master


默认的文档夹名字很长,为了方便以后操作,重命名文档夹:

1
mv oott123-bpcs_uploader-3a33d09 baidu


这里我将文档夹名字修改成了baidu,需要注意的是,以后的默认文档夹名字可能有所不同,毕竟进程会升级,你需要看一下解压出来的文档夹名称是什么。
进入进程目录:

1
cd baidu


设置权限:

1
chmod +x bpcs_uploader.php


运行进程:

1
./bpcs_uploader.php


你可能会看到出错提示,因为运行进程需要PHP环境,而你的服务器上的PHP路径可能与进程中设置的不同,修改一下进程文档bpcs_uploader.php中的PHP路径即可。
查看PHP路径:

1
which php


编辑bpcs_uploader.php文档:

1
vi bpcs_uploader.php


将第一句#!后的路径修改为你的PHP路径,如果你安装的是WDCP一键包,路径为:/www/wdlinux/php/bin/php
登录百度开发者中心:http://developer.baidu.com/
创建一个Web应用,应用名称自定义,例如:huihuige,其他默认设置就可以了。
此时,我们可以得到该应用的API Key,运行./bpcs_uploader.php后首先要输入的就是Key。
另外我们还要在应用管理中找到API管理,开启PCS API,设置一个目录,该目录将用于存放服务器上传过来的数据。
温馨提示:开启PCS API时设置的目录不可更改,但可以在”操作”菜单中删除应用重建。
输入Key后,接下来需要输入app floder name,也就是刚才开启PCS API时设置的目录名称。
然后需要输入access token,将你的Key填入以下地址相应位置,在浏览器打开得到的地址:

1
https://openapi.baidu.com/oauth/2.0/authorize?response_type=token&client_id=KEY&redirect_uri=oob&scope=netdisk


然后你会看到一个写着”百度 Oauth2.0”的页面,将浏览器地址栏中的URL复制下来,找到access_token=和&之间的字符串,这就是access token,输入access token后就完成了,你会看到SSH终端显示出了你的百度云盘容量。
如果之前有安装过bpcs_uploader,那么可以执行以下命令初始化:

1
./bpcs_uploader.php init


bpcs_uploader用法 查询容量:

1
./bpcs_uploader.php quota


上传文档:

1
./bpcs_uploader.php upload [path_local] [path_remote]


[path_local]是指服务器上的文档路径,[path_remote]是指百度云盘中的路径。
下载文档:

1
./bpcs_uploader.php download [path_local] [path_remote]


删除文档:

1
./bpcs_uploader.php delete [path_remote]


离线下载:

1
./bpcs_uploader.php fetch [path_remote] [path_to_fetch]


自动备份脚本 接下来需要设置自动备份数据,网上有许多自动备份脚本,所以我就不再复述了。
这里要介绍的是,由于我们多半都在Linux服务器上安装了控制面板,而控制面板都有自动备份数据的功能,比如WDCP就可以设置自动备份数据到/www/backup目录,那么我们就不再需要自动备份数据的脚本了,只需要一个脚本将备份目录下的所有文档上传到百度云盘即可。
下载脚本至baidu目录下:

1
wget http://www.huihuige.com/wp-content/uploads/2013/10/baidubd.zip


解压:

1
unzip baidubd.zip


这个脚本实用于WDCP面板用户,如果你的备份目录不同,可以打开脚本修改。
测试脚本是否有效:

1
2
3
4
5
sh baidubd.sh
```
最后设置计划任务:
``` bash
crontab -e


加入一行:

1
0 0 * * * /root/baidu/baidubd.sh


这里设置了每天的凌晨零点自动备份数据到百度云盘。

python实现Linux命令行上传和下载百度云盘

bypy:一个python写得百度网盘的linux客户端工具.

下载

git clone https:

要求


  • python >=2.7


  • python需要Requests库


  • 1
    2
    3
    python
    >>> import requests
    ImportError: No module named requests

    使用

    完成以上安装,cd至之前的bypy的目录下,运行下面的命令开始初始化

    1
    2
    cd bypy
    ./bypy.py list


    首先他会要求你访问一个网址,需要你授权,授权后复制code给进程,如果没有报错,就可以看到你的同步目录了,你可以在网盘的我的应用数据文档夹里找到bypy文档夹,他就是应用目录了。

    如果你迫不及待的要测试,那就试试直接把当前目录上传至百度网盘

    1
    ./bypy.py upload


    如果你想看到上传进度,请加入-v选项

    1
    ./bypy.py -v upload


    常用命令

    ./bypy.py list 查看目录

    ./bypy.py mkdir newdir 新建目录

    ./bypy.py upload 上传或者dir>或者dir>

    ./bypy.py downfile或者./bypy.py downdir 下载
    ./bypy.py delete filename
    ./bypy.py rm dir
    用的时候注意用help查看一下参数的使用,其中remote path的/代表了apps/bypy/这个路径,且命令中的斜线/表示或,如“delete/remove/rm”表示delete,remove和rm三个命令。

    自动备份到百度云


  • 编写备份bash


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


    # Author:  hope
    # Version: 1.0

    # Some vars
    UPLOAD_SCRIPTS_DIR="/public/home/zpxu/scripts"
    DATE=`date +%F`
    DATE_YEAR=`date +%Y`
    DATE_MONTH=`date +%m`

    # Backup
    cd $UPLOAD_SCRIPTS_DIR
    cd ..
    tar -czvf  scripts_$DATE.tar.gz $UPLOAD_SCRIPTS_DIR
    /home/Python-2.7.10/./python /home/bin/bypy/./bypy.py mkdir scripts/$DATE_YEAR/$DATE_MONTH
    /home/Python-2.7.10/./python /home/bin/bypy/./bypy.py -v upload scripts_$DATE.tar.gz scripts/$DATE_YEAR/$DATE_MONTH
    rm scripts_$DATE.tar.gz
    /home/Python-2.7.10/./python /home/bin/bypy/./bypy.py list


  • 设置cron定时执行


  • 1
    $ crontab -e

    此时会启动默认编辑器vim,添加以下内容

    1
    2
    # backup my scripts to baidu
    40 1 * * * <备份bash目录/baidu_sync.sh>


    以上内容意义为:每一行由空格分割为6部分,依次为”分钟”、”小时”、”日”、”月”、”星期”、”要执行的进程”。
    备份操作可能消耗大量资源和时间,应该设置在凌晨访问量小、系统负载低的时候运行。如果有独立的服务器存储备份文档,还可以在脚本中增加ftp或者email传送备份文档到远程服务器的功能。




    百度限制上传/下载数度,所以对于较大文档的转移不是很方便,上传时至少可以打包压缩下,至于下载目前还不知道有何良策。





    由于百度权限问题,使用百度云备份需要差不多一个月跟新一次授权,否则报错
    OpenShift server failed, authorizing/refreshing with the Heroku server …
    跟新授权办法如下:
    1
    2
    运行bypy.py -c,删除令牌文档,然后重新授权一次。
    如果还不行,去百度应用授权(https://passport.baidu.com/accountbind) 里删除bypy再重新授权。





    Contribution from :
    http://www.lovelucy.info/auto-backup-website-shell-script.html
    https://github.com/houtianze/bypy/issues/199