文章目录

  • 1 OPEN-FALCON简述
    • 1.1 OPEN-FALCON架构组成介绍
    • 1.2 OPEN-FALCON的组件介绍
    • 1.3 OPEN-FALCON的设计理念
      • 1.3.1 数据模型
      • 1.3.2 plugin
      • 1.3.3 Tag和HostGroup
    • 1.4 OPEN-FALCON各个实例通信网络端口
  • 2 OPEN-FALCON安装
    • 2.1 中间件版本选取
    • 2.2 环境准备
      • 2.2.1 CentOS 6.8
      • 2.2.2 关闭防火墙-root
    • 2.3 安装GO环境
    • 2.4 启动REDIS
    • 2.5 安装FALCON-PLUS
    • 2.6 安装OPEN-FALCON二进制包
    • 2.7 部署前端
    • 2.8 OPEN-FALCON登录
    • 2.9 OPEN-FALCON的一些页面
  • 3 OPEN-FALCON基础操作
    • 3.1 监控FLUME
      • 3.1.1 工作原理
      • 3.1.2 修改Flume配置项
      • 3.1.3 open-falcon配置项
      • 3.1.4 Dashboard配置
      • 3.1.5 查看dashboard是否存在flume相关counters
  • 4 OPEN-FALCON常见问题分析
    • 4.1 安装PIP_REQUIREMENTS失败

1 OPEN-FALCON简述

Open-falcon是一款用golang和python写的监控系统,由小米启动这个项目。
1、监控系统,可以从运营级别(基本配置即可),以及应用级别(二次开发,通过端口进行日志上报),对服务器、操作系统、中间件、应用进行全面的监控,及报警,对我们的系统正常运行的作用非常重要。
2、基础监控
CPU、Load、内存、磁盘、IO、网络相关、内核参数、ss 统计输出、端口采集、核心服务的进程存活信息采集、关键业务进程资源消耗、NTP offset采集、DNS解析采集,这些指标,都是open-falcon的agent组件直接支持的。
3、第三方监控
术业有专攻,运行在OS上的应用甚多,Open-Falcon的开发团队不可能把所有的第三方应用的监控全部做完,这个就需要开源社区提供更多的插件,当前对于很多常用的第三方应用都有相关插件了。
4、JVM监控
对于Java作为主要开发语言的大多数公司,对于JVM的监控不可或缺。
每个JVM应用的参数,比如GC、类加载、JVM内存、进程、线程,都可以上报给Falcon,而这些参数的获得,都可以通过MxBeans实现。
5、业务应用监控
对于业务需要监控的接口,比如响应时间等。可以根据业务的需要,上报相关数据到Falcon,并通过Falcon查看结果
官网:https://www.open-falcon.com/

1.1 OPEN-FALCON架构组成介绍


其中,基础组件以绿色标注圈住、作图链路组件以蓝色圈住、报警链路组件以红色圈住,橙色填充的组件为域名。OpenTSDB功能尚未完成。

1.2 OPEN-FALCON的组件介绍

  • agent

agent用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,每隔60秒push给Transfer。agent与Transfer建立了长连接,数据发送速度比较快,agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer。

  • hbs(Heartbeat Server)
    心跳服务器,公司所有agent都会连到HBS,每分钟发一次心跳请求。
    agent会定期从hbs中拉取配置,比如:需要运行plugins的目录;
    judge模块也会定期从hbs去获取告警策略;
  • transfer
    transfer是数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、并将分片后的数据分别push给graph&judge等组件。
  • judge
    Judge用于告警判断,agent将数据push给Transfer,Transfer不但会转发给Graph组件来绘图,还会转发给Judge用于判断是否触发告警。
    Judge监听了一个http端口,提供了一个http接口:/count,访问之,可以得悉当前Judge实例处理了多少数据量。
  • graph
    graph是存储绘图数据的组件。graph组件 接收transfer组件推送上来的监控数据,同时处理query组件的查询请求、返回绘图数据。
  • gateway
    站在client端的角度,gateway和transfer提供了完全一致的功能和接口。只有遇到网络分区的情况时,才有必要使用gateway组件。
  • alarm
    alarm模块是处理报警event的,judge产生的报警event写入redis,alarm从redis读取处理;
  • aggregator
    集群聚合模块。聚合某集群下的所有机器的某个指标的值,提供一种集群视角的监控体验。
  • nodata
    nodata用于检测监控数据的上报异常。nodata和实时报警judge模块协同工作,过程为: 配置了nodata的采集项超时未上报数据,nodata生成一条默认的模拟数据;用户配置相应的报警策略,收到mock数据就产生报警。采集项上报异常检测,作为judge模块的一个必要补充,能够使judge的实时报警功能更加可靠、完善

1.3 OPEN-FALCON的设计理念

1.3.1 数据模型

Open-Falcon,采用和OpenTSDB相似的数据格式:metric、endpoint加多组key value tags

  • metric: 最核心的字段,代表这个采集项具体度量的是什么, 比如是cpu_idle呢,还是memory_free, 还是qps
  • endpoint: 标明Metric的主体(属主),比如metric是cpu_idle,那么Endpoint就表示这是哪台机器的cpu_idle
  • timestamp: 表示汇报该数据时的unix时间戳,注意是整数,代表的是秒
  • value: 代表该metric在当前时间点的值,float64
  • step: 表示该数据采集项的汇报周期,这对于后续的配置监控策略很重要,必须明确指定。
  • counterType: 只能是COUNTER或者GAUGE二选一,前者表示该数据采集项为计时器类型,后者表示其为原值 (注意大小写)
    – GAUGE:即用户上传什么样的值,就原封不动的存储
    – COUNTER:指标在存储和展现的时候,会被计算为speed,即(当前值 - 上次值)/ 时间间隔
  • tags: 一组逗号分割的键值对, 对metric进一步描述和细化, 可以是空字符串. 比如idc=lg,比如service=xbox等,多个tag之间用逗号

1.3.2 plugin

Plugin可以看做是对agent功能的扩充。对于业务系统的监控指标采集,最好不要做成plugin,而是把采集脚本放到业务程序发布包中,随着业务代码上线而上线,随着业务代码升级而升级,这样会比较容易管理。

  1. 先将脚本push到git
  2. curl下agent的接口去获取plugins
  3. 在dashborad的HostGroup中绑定plugins目录,因为不是所有的plugins都需要在该机器上执行,这里通过目录来区分;agent会通过hbs的接口去获取配置;

1.3.3 Tag和HostGroup

tag其实是一种分组方式,当push的数据无法标记tag(比如:我们agent采集的cpu, memory, net等信息),那我们就要将这些数据手工分组了,这就是HostGroup;
HostGroup实际上是对endpoint的一种分组;
想象一下,一条数据push上来,我们应该怎么判断这条数据是否该报警呢?首先我们需要找到这条数据的expression,无非就是看expression中的tag是否是当前push上来数据的子集;当没有tag的数据呢? push上来的数据肯定有endpoint, 我们可以根据endpoint查看是哪个HostGroup, HostGroup又是跟template绑定,template中又会配置告警策略。

1.4 OPEN-FALCON各个实例通信网络端口

端口名称 默认端口 说明
httpd 3000 监听的网络端口
netcat 44444 netcat端口
dashboard 8081 dashboard前端web端口
api 8080 后端API端口
push_api 1988 后端API端口
redis 6379 redis-server端口

2 OPEN-FALCON安装

2.1 中间件版本选取

中间件名称 版本号
CentOS CentOS6.8
Java 1.8.0_121
go 1.13.11 linux/amd64
redis 3.2.5
python 2.7.4
pip 20.2
open-falcon 0.2.1

2.2 环境准备

2.2.1 CentOS 6.8

CentOS6.8 安过程省略。预先创建用户/用户组zhouchen
预先安装jdk1.8.0_121 +
预先安装Mysql
预先安装Redis
预先安装Python
预先安装Pip
创建目录/opt/open-falcon作为open-falcon的home

2.2.2 关闭防火墙-root

[zhouchen@hadoop102 software]$ sudo service iptables stop
[zhouchen@hadoop102 software]$ sudo chkconfig iptables off

2.3 安装GO环境

1.安装golang包

[zhouchen@hadoop102 software]$ sudo yum install golang -y

2.配置全局环境

[zhouchen@hadoop102 software]$ sudo vim /etc/profile.d/hadoop.sh
#添加如下内容
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH

2.4 启动REDIS

1.启动Redis服务端

[zhouchen@hadoop102 redis-3.2.5]$ redis-server redis.conf

2.启动Redis客户端

[zhouchen@hadoop102 redis-3.2.5]$ redis-cli -h hadoop102 -p 6379
hadoop102:6379>

2.5 安装FALCON-PLUS

1.安装下载源码包falcon-plus-master.zip

https://github.com/open-falcon/falcon-plus

2.上传到服务器并解压

[zhouchen@hadoop102 software]$ unzip -d falcon-plus-master.zip -d /opt/open-falcon

3.执行falcon-plus中的sql脚本

[zhouchen@hadoop102 open-falcon]$ cd falcon-plus-master/scripts/mysql/db_schema/
[zhouchen@hadoop102 db_schema]$ mysql -h hadoop102 -u root -p < 1_uic-db-schema.sql
[zhouchen@hadoop102 db_schema]$ mysql -h hadoop102 -u root -p < 2_portal-db-schema.sql
[zhouchen@hadoop102 db_schema]$ mysql -h hadoop102 -u root -p < 3_dashboard-db-schema.sql
[zhouchen@hadoop102 db_schema]$ mysql -h hadoop102 -u root -p < 4_graph-db-schema.sql
[zhouchen@hadoop102 db_schema]$ mysql -h hadoop102 -u root -p < 5_alarms-db-schema.sql

2.6 安装OPEN-FALCON二进制包

1.下载二进制包open-falcon-v0.2.1.tar.gz
github下载地址

2.上传到服务器并解压

[zhouchen@hadoop102 software]$ tar -zxvf open-falcon-v0.2.1.tar.gz -C /opt/open-falcon/

3.修改配置文件
需要修改的组件如下:
aggregator   /opt/open-falcon/aggregator/config/cfg.json
graph     /opt/open-falcon/graph/config/cfg.json
hbs      /opt/open-falcon/hbs/config/cfg.json
nodata    /opt/open-falcon/nodata/config/cfg.json
api     /opt/open-falcon/api/config/cfg.json
alarm    /opt/open-falcon/alarm/config/cfg.json
需要修改的内容如下:
1)将所有的127.0.0.1改成hadoop102

[zhouchen@hadoop102 open-falcon]$ grep -Ilr '127.0.0.1' ./ | xargs -n1 -- sed -i 's/127.0.0.1/hadoop102/g'

2)配置mysql数据库和密码将root:改成root:zhou59420

[zhouchen@hadoop102 open-falcon]$ grep -Ilr 3306 ./ | xargs -n1 -- sed -i 's/root:/root:zhou59420/g'

4.启动open-falcon

[zhouchen@hadoop102 open-falcon]$ ./open-falcon start
[falcon-graph] 4697
[falcon-hbs] 4710
[falcon-judge] 4721
[falcon-transfer] 4730
[falcon-nodata] 4738
[falcon-aggregator] 4747
[falcon-agent] 4758
[falcon-gateway] 4766
[falcon-api] 4774
[falcon-alarm] 4789

5.检查组件启动情况

[zhouchen@hadoop102 open-falcon]$ ./open-falcon checkfalcon-graph         UP            4697 falcon-hbs         UP            4710 falcon-judge         UP            4721 falcon-transfer         UP            4730 falcon-nodata         UP            4738 falcon-aggregator         UP            4747 falcon-agent         UP            4758 falcon-gateway         UP            4766 falcon-api         UP            4774 falcon-alarm         UP            4789

2.7 部署前端

1.下载源码包dashboard-master.zip
github源码下载地址

2.上传到服务器并解压

[zhouchen@hadoop104 software]$ unzip dashboard-master.zip -d /opt/open-falcon/

3.安装依赖

[zhouchen@hadoop104 software]$ sudo yum install -y openldap-devel
[zhouchen@hadoop104 software]$ sudo yum install -y python-devel
[zhouchen@hadoop104 software]$ sudo yum install -y python-virtualenv
[zhouchen@hadoop104 software]$ sudo yum groupinstall "Development tools"
[zhouchen@hadoop104 software]$ sudo yum -y install openssl openssl-devel

4.安装

[zhouchen@hadoop104 software]$ python -m pip install virtualenv
[zhouchen@hadoop104 open-falcon]$ cd dashboard-master/
[zhouchen@hadoop104 dashboard-master]$ pip install -r pip_requirements.txt -i https://pypi.douban.com/simple

#注意这一步如果报错,可以将pip_requirements.txt中的安装步骤分别执行,检查到底是哪一步安装错误

[zhouchen@hadoop104 dashboard-master]$ pip install Flask==1.0 -i https://pypi.douban.com/simple
  1. 修改dashboard配置文件,分别是PORTAL_DB和ALARM_DB,修改数据库的用户名和密码,保证dashboard能连接数据库
[zhouchen@hadoop104 dashboard-master]$ vim rrd/config.py
# Falcon+ API
API_ADDR = os.environ.get("API_ADDR","http://hadoop102:8080/api/v1")
API_USER = os.environ.get("API_USER","admin")
API_PASS = os.environ.get("API_PASS","password")# portal database
# TODO: read from api instead of db
PORTAL_DB_HOST = os.environ.get("PORTAL_DB_HOST","hadoop102")
PORTAL_DB_PORT = int(os.environ.get("PORTAL_DB_PORT",3306))
PORTAL_DB_USER = os.environ.get("PORTAL_DB_USER","root")
PORTAL_DB_PASS = os.environ.get("PORTAL_DB_PASS","zhou59420")
PORTAL_DB_NAME = os.environ.get("PORTAL_DB_NAME","falcon_portal")# alarm database
# TODO: read from api instead of db
ALARM_DB_HOST = os.environ.get("ALARM_DB_HOST","hadoop102")
ALARM_DB_PORT = int(os.environ.get("ALARM_DB_PORT",3306))
ALARM_DB_USER = os.environ.get("ALARM_DB_USER","root")
ALARM_DB_PASS = os.environ.get("ALARM_DB_PASS","zhou59420")
ALARM_DB_NAME = os.environ.get("ALARM_DB_NAME","alarms")

2.8 OPEN-FALCON登录

1.启动bash

[root@hadoop104 dashboard-master]# bash control start

日志的位置:
/opt/open-falcon/dashboard-master/var/app.log

2.浏览器访问http://hadoop104:8081/

3.注册账户

1)dashbord没有默认创建任何账号包括管理账号,需要你通过页面进行注册账号
2)第一个帐号名称为root的用户会被自动设置为超级管理员
3)注册账号能够被任何打开dashboard页面的人注册。关闭注册账号功能:修改api组件的配置文件cfg.json,将signup_disable配置项修改为true

2.9 OPEN-FALCON的一些页面

1.后端页面 hadoop102:1988

2.api页面hadoop102:8080

3.前端页面
见2.8

3 OPEN-FALCON基础操作

3.1 监控FLUME

官方参考链接:https://book.open-falcon.org/zh_0_2/usage/flume.html
open-falcon作为一个监控框架,可以去采集任何系统的监控指标数据,只要将监控数据组织为open-falcon规范的格式就OK了。Flume的数据采集可以通过脚本flume-monitor来做。

3.1.1 工作原理

flume-monitor.py是一个采集脚本,只需要放到falcon-agent的plugin目录,在portal中将对应的plugin绑定到主机组,falcon-agent会主动执行flume-monitor.py脚本,flume-monitor.py脚本执行结束后会输出json格式数据,由falcon-agent读取和解析数据。
Flume运行时需要在配置文件中加入java环境变量,启动成功之后flume进程会监听一个端口,可以通过http请求的方式来抓取flume提供的metrics,flume-monitor.py脚本中配置了需要抓取的Flume组件metric,通过http的方式从flume端口中抓取需要的组件信息,输出json格式数据。

3.1.2 修改Flume配置项

1.修改$FLUME_HOME/conf/flume-env.sh

[zhouchen@hadoop102 flume]$ vim conf/flume-env.sh
# 添加语句,http的端口指定为3000
export JAVA_OPTS="$JAVA_OPTS -Dflume.monitoring.type=http -Dflume.monitoring.port=3000"

2.启动flume

[zhouchen@hadoop102 flume]$ bin/flume-ng agent --conf conf/ --name a1 --conf-file conf/flume-netcat-logger.conf -Dflume.root.logger=INFO,console -Dflume.monitoring.type=http -Dflume.monitoring.port=3000

3.1.3 open-falcon配置项

1.进入open-falcon工作目录,修改agent/config/cfg.json

[zhouchen@hadoop102 open-falcon]$ mkdir plugin
[zhouchen@hadoop102 open-falcon]$ vim agent/config/cfg.json
#修改内容如下
"plugin": {"enabled": true,"dir": "./plugin","git": "https://github.com/mdh67899/openfalcon-monitor-scripts.git","logs": "./logs"}

./plugin指的是open-falcon工作目录下的plugin目录

2.下载https://github.com/mdh67899/openfalcon-monitor-scripts.git

3.上传openfalcon-monitor-scripts.git到服务器并解压

4.将openfalcon-monitor-scripts.git中的flume移动到open-falcon工作目录下的plugin

[zhouchen@hadoop102 openfalcon-monitor-scripts-master]$ mv flume/ ../plugin/

5.为flume脚本添加权限

[zhouchen@hadoop102 open-falcon]$ chmod 755 plugin/flume/60_flume-monitor.py

6.修改60_flume-monitor.py脚本

[zhouchen@hadoop102 open-falcon]$ vim plugin/flume/60_flume-monitor.py
#修改内容如下url="http://hadoop102:3000/metrics"r = requests.post("http://hadoop102:1988/v1/push", data=json.dumps(payload))

3.1.4 Dashboard配置

1.创建HostGroup

2.绑定host

3.绑定plugin

3.1.5 查看dashboard是否存在flume相关counters

1.重启open-falcon agent

[zhouchen@hadoop102 open-falcon]$ ./open-falcon restart agent

2.查看dashboard

3.agent中flume相关日志

[zhouchen@hadoop102 open-falcon]$ vim agent/logs/agent.log
2020/08/03 16:14:47 plugin.go:64: <Plugins:[flume], Timestamp:1596442487>

4.相关日志

/opt/open-falcon/logs/flume/60_flume-monitor.py.stderr.log

4 OPEN-FALCON常见问题分析

4.1 安装PIP_REQUIREMENTS失败

报错

[zhouchen@hadoop102 dashboard-master]$ env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple
Looking in indexes: https://pypi.douban.com/simpleERROR: Command errored out with exit status 1:command: /opt/open-falcon/dashboard-master/env/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-g1k2j1gd/mysql-python/setup.py'"'"'; __file__='"'"'/tmp/pip-install-g1k2j1gd/mysql-python/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-opjj8aavcwd: /tmp/pip-install-g1k2j1gd/mysql-python/Complete output (7 lines):Traceback (most recent call last):File "<string>", line 1, in <module>File "/tmp/pip-install-g1k2j1gd/mysql-python/setup.py", line 13, in <module>from setup_posix import get_configFile "/tmp/pip-install-g1k2j1gd/mysql-python/setup_posix.py", line 2, in <module>from ConfigParser import SafeConfigParserModuleNotFoundError: No module named 'ConfigParser'----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

原因1:
环境中有一个python3.7,到时候pip默认也是用的python3.7的环境。而在Python 3.x 版本后,ConfigParser.py 已经更名为 configparser.py 所以出错。
解决:

[zhouchen@hadoop102 /]$ sudo find ./ -name 'configparser.py'
./usr/local/lib/python3.7/configparser.py
./opt/module/miniconda3/envs/superset/lib/python3.7/configparser.py
./opt/module/miniconda3/envs/superset/lib/python3.7/site-packages/future/moves/configparser.py
./opt/module/miniconda3/lib/python3.7/configparser.py
./opt/module/miniconda3/pkgs/python-3.7.7-hcff3b4d_5/lib/python3.7/configparser.py[zhouchen@hadoop102 /]$ cp /usr/local/lib/python3.7/configparser.py /usr/local/lib/python3.7/ConfigParser.py
[zhouchen@hadoop102 /]$ cp /opt/module/miniconda3/envs/superset/lib/python3.7/configparser.py /opt/module/miniconda3/envs/superset/lib/python3.7/ConfigParser.py
[zhouchen@hadoop102 /]$ cp /opt/module/miniconda3/envs/superset/lib/python3.7/site-packages/future/moves/configparser.py /opt/module/miniconda3/envs/superset/lib/python3.7/site-packages/[zhouchen@hadoop102 /]$ future/moves/ConfigParser.py
[zhouchen@hadoop102 /]$ cp /opt/module/miniconda3/lib/python3.7/configparser.py /opt/module/miniconda3/lib/python3.7/ConfigParser.py
[zhouchen@hadoop102 /]$ cp /opt/module/miniconda3/pkgs/python-3.7.7-hcff3b4d_5/lib/python3.7/configparser.py /opt/module/miniconda3/pkgs/python-3.7.7-hcff3b4d_5/lib/python3.7/ConfigParser.py

原因2:
MySQL-python安装的问题。这个包的安装又依赖于mysql-devel,而mysql-devel的版本又会与Mysql-server亦或是mysql-common冲突。
解决:
在没有安装mysql的机器上安装Mysql-python规避这个问题。然后在该节点上安装open-falcon前端。

Open-falcon技术实践V1.0相关推荐

  1. CDMA 1X通信网 WAP2.0业务技术体制 (V1.0)

    CDMA 1X通信网 WAP2.0业务技术体制 (V1.0) 前 言 近10年以来,移动通信(包括数据和语音)和Internet几乎成为了在全世界范围内发展最快,最具活力的两项技术.而Internet ...

  2. 数据采集中间件技术对比V1.0

    文章目录 1 前言 2 数据采集中间件对比 2.1 支持的数据源 2.2 支持的数据格式 2.3 支持的上下游中间件 2.4 任务监控 3 MYSQL的BINLOG日志工具分析:CANAL.MAXWE ...

  3. App组件化架构设计实践V1.0

    1.基本概念与共识 业务组件化(或者叫模块化)作为移动端应用架构的主流方式之一,近年来一直是业界积极探索和实践的方向.在组件化过程中我们深刻体会到"没有绝对正确的架构,只有最合适的架构&qu ...

  4. 数据结构与算法(C#版)第二章 C#语言与面向对象技术(下)V1.0

    由于本学期我给本科生上<数据结构与算法>这门课程,边上边把自己的教案进行总结,发到CSDN上面,希望大家多多指正. 第二章 C#语言与面向对象技术(下) 二.面向对象技术 5.属性 6.索 ...

  5. 数据结构与算法(C#版)第二章 C#语言与面向对象技术(中)V1.0

    由于本学期我给本科生上<数据结构与算法>这门课程,边上边把自己的教案进行总结,发到CSDN上面,希望大家多多指正. 第二章 C#语言与面向对象技术(中) 二.面向对象技术 1.类与对象 2 ...

  6. 数据结构与算法(C#版)第二章 C#语言与面向对象技术(上)V1.0

    由于本学期我给本科生上<数据结构与算法>这门课程,边上边把自己的教案进行总结,发到CSDN上面,希望大家多多指正. 第二章 C#语言与面向对象技术(上) 一.C#语言 1.数据类型 2.常 ...

  7. 新一代三维GIS技术白皮书v1.0

    超图新一代三维GIS技术体系,以二三维一体化技术为基础框架,进一步拓展二三维一体化数据模型,融合倾斜摄影.BIM.激光点云等多源异构数据,推动三维GIS实现室外室内一体化.宏观微观一体化.空天/地表/ ...

  8. 中国电信DPDK技术白皮书v1.0

    https://wenku.baidu.com/view/327799bac281e53a5802ffcb.html

  9. 2021数据安全与个人信息保护技术白皮书V1.0.0 pdf

    百度网盘下载地址 链接:https://pan.baidu.com/s/1u6klBIoNaXpakGEzioxFRg 提取码:ko92

最新文章

  1. windows平台实现dll远程注入的简单例子
  2. 175. 组合两个表
  3. iptables第一部分
  4. linux申请cache和释放cache,Linux--- 手工释放系统cache
  5. Android中监听ScrollView滑动停止和滑动到底部
  6. Badboy录制及参数化详细步骤来一波
  7. stm32基本入门(一)
  8. R语言︱用excel VBA把xlsx批量转化为csv格式
  9. 网络传输中利用fastjson将复杂嵌套数据类型Json格式转换(GeoJsonPolygon)
  10. CF1041A Heist
  11. QImage缩放后图片更清晰处理
  12. unity检测范围内敌人_怎样获取离自己距离最近的敌人
  13. 北京中国石油大学计算机考研分数线,中国石油大学(北京)2018年考研复试基本分数线...
  14. vivado2020报错:error when launching …vivao.bat…launcher time out“
  15. 服务器上传文件出现500错误,但是其他不涉及文件的接口均正常
  16. 数据库横向扩展和纵向扩展
  17. 舞台灯光计算机控制,舞台灯光的操作
  18. Win flex-bison 的简单使用
  19. 基于YOLOV3的通用物体检测项目实战---(5)利用DarkNet框架进行YOLOV3模型训练实操(笔记)
  20. 人工智能起源| 阿兰·图灵的《计算机器与智能》

热门文章

  1. 开始学习python,有想一起的吗,快来瞅一瞅,从基本的语法开始哦,大家交流交流,今天##字符串的基本语法使用
  2. 华为手机保留数据解锁密码手机保资料解锁原理华为解锁屏密码不删资料华为手机怎么保留数据解锁
  3. 4月刊独家专访:Visual Studio 2010 是怎样炼成的
  4. 成年人的世界不敢轻易崩溃
  5. Eplan p8 v2.7 打不开部件数据库
  6. 抗议信用卡霸王条款,有关最低还款的注意事项
  7. 安卓学习UI组件-解决ScrollView嵌套ListView,GridView的冲突
  8. Flask 框架流程
  9. Eclipse 彻底卸载
  10. 亡灵序曲-The Dawn