文章目录

  • 前言
    • ELK是什么?
    • ELK的用途
    • 下面我从多个因素去阐述为什么ELK突然蓬勃发展?
  • 一、ELK日志分析系统简介
  • 二、Elasticsearch介绍
  • 三、Logstash介绍
    • FileBeat 与 Logstash的区别
  • 四、Kibana 介绍
  • 五、关于消息队列
    • 首先了解什么是PV?
    • 为什要有消息队列?
    • 当高并发的时候,如何优化?
  • 六、部署ELK日志分析系统
    • 6.1:配置elasticsearch环境
    • 6.1.1 node 1配置
    • 6.1.2 node 2配置
    • 6.2:部署elasticsearch软件
    • 6.2.1:登录20.0.0.26 node1
    • 6.2.2:nodel2配置和以上一样
    • 6.3:集群检查健康和状态
    • 6.4:安装elasticsearch-head插件
    • 6.4.1:20.0.0.26 node1主机
    • 6.4.2 node2 主机配置和node1配置如出一辙
    • 6.4.3:测试 能否进入图形化界面
    • 6.4.4:在es中创建一条索引
    • 6.5:安装logstash并做一些日志搜集输出到elasticsearch中
    • 6.6:登录20.0.0.25 apache主机 做对接配置
    • 6.7:登录 20.0.0.26 node1主机
    • 6.7.1在node1 主机安装kibana
  • 测试

前言

ELK是什么?

ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana。

  • ElasticSearch简称ES,它是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎
    Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。
  • Logstash是一个具有实时传输能力的数据收集引擎,用来进行数据收集(如:读取文本文件)、解析,并将数据发送给ES。
  • Kibana为 Elasticsearch 提供了分析和可视化的 Web 平台。它可以在 Elasticsearch
    的索引中查找,交互数据,并生成各种维度表格、图形。

ELK的用途

传统意义上,ELK是作为替代Splunk的一个开源解决方案。Splunk 是日志分析领域的领导者。日志分析并不仅仅包括系统产生的错误日志,异常,也包括业务逻辑,或者任何文本类的分析。而基于日志的分析,能够在其上产生非常多的解决方案,譬如:

  1. 问题排查。我们常说,运维和开发这一辈子无非就是和问题在战斗,所以这个说起来很朴实的四个字,其实是沉甸甸的。很多公司其实不缺钱,就要稳定,而要稳定,就要运维和开发能够快速的定位问题,甚至防微杜渐,把问题杀死在摇篮里。日志分析技术显然问题排查的基石。基于日志做问题排查,还有一个很帅的技术,叫全链路追踪,比如阿里的eagleeye 或者Google的dapper,也算是日志分析技术里的一种。
  2. 监控和预警。 日志,监控,预警是相辅相成的。基于日志的监控,预警使得运维有自己的机械战队,大大节省人力以及延长运维的寿命。
  3. 关联事件。多个数据源产生的日志进行联动分析,通过某种分析算法,就能够解决生活中各个问题。比如金融里的风险欺诈等。这个可以可以应用到无数领域了,取决于你的想象力。
  4. 数据分析。 这个对于数据分析师,还有算法工程师都是有所裨益的。

下面我从多个因素去阐述为什么ELK突然蓬勃发展?

1. 数据(日志)的日益增多:
早年能够产生足够数据的就那么一些站点,而现在一个初创的企业可能都需要面临海量用户/海量请求/海量分析的压力,其中产生的日志自然也是非常可观,而随着业务越来越复杂,微服务重新得到重视,无论系统日志,还是业务日志都更进一步了。运维或者开发们发现,我要从这么大规模的系统中(几百个上千个服务)产生的这么多日志(千亿规模),去排查问题,简直是没有可能了。以前有这么大数据量的公司,都是有实力的公司,他们可能有内部专用的系统去处理。然而现在突然成为了一个普遍需求,这个时候ELK顺势而上,也就水到渠成。
2. 开源:
开源现在已经融入到IT社区的血液里。虽然我们说商业,自研,还有开源三者之间是相辅相成,相濡以沫或者偶尔会相爱相杀,但是如果有开源可以选择,显然大部分开发或者运维还是首选开源的。
3. 行业属性:
有些行业对日志的依赖是非常大的,比如 CDN 日志除了能排查错误,对其分析还能对CDN调度等很多方面产生影响,这些都是实打实的经济效益。
4. 运维自身发展:
运维本身也在发展,不可能一直在刀耕火种的年代。而日志对于运维来说,应该算是命根子了。对一个成体系的,标准化的日志分析方案的需求,也是历史发展的必然。ELK在恰当的时候产生,运维接受他就是自然而然的了

一、ELK日志分析系统简介

appserver提供服务 log负责从服务端拉取日志然后对日志进行优化,然后放入es进行存储
然后用kib可以将es传递给他的数据,在网页上显示,树状图…

二、Elasticsearch介绍

三、Logstash介绍

FileBeat 与 Logstash的区别

FileBeat:

  • 目前使用较多的日志收集软件
  • 轻量级日志搜集器

Logstash:

  • Logstash 比较占用资源
  • 有格式转换,可以转换为能被es识别的格式

四、Kibana 介绍

五、关于消息队列

首先了解什么是PV?

  • 是指一个用户访问了你这个网站,访问了多少网页 访问了多少个网页我们称为多少个pv
  • 比如一个用户进入了淘宝访问了10个商品信息,我们称之为10个PV

为什要有消息队列?

百万PV以上必须要有消息队列来面对高并发
kafka
是为了缓解kib接收es数据时的压力的,是一种高吞吐量的分布式发布订阅

rabbitmq(前几年比较流行)
互联网架构离不开java,kafka一部分是java编程写的,rabbitmq没有java编写的,所以要被淘汰。

当高并发的时候,如何优化?

(1)线程和进程
(2)缓存的问题(缓存积压,内存压力大,可能数据交换到swap中,swap在硬盘上,读取速度会变慢)
(3)安全性
(4)有些服务会进行线程锁,特别是数据库,经常会出现死锁现象(行锁定,表锁定)怎么冲破死锁

六、部署ELK日志分析系统


实验环境
apache,log服务器 20.0.0.25
Es node1 节点服务器 20.0.0.26
Es node2 节点服务器 20.0.0.27

6.1:配置elasticsearch环境

6.1.1 node 1配置

[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# bash[root@node1 ~]# vi /etc/hosts
20.0.0.26 node1
20.0.0.27 node2[root@node1 ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)[root@node1 ~]# setenforce 0
setenforce: SELinux is disabled[root@node1 ~]# systemctl stop firewalld

6.1.2 node 2配置

[root@localhost ~]# hostnamectl set-hostname node2
[root@localhost ~]# bash[root@node1 ~]# vi /etc/hosts
20.0.0.26 node1
20.0.0.27 node2[root@node1 ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)[root@node1 ~]# setenforce 0
setenforce: SELinux is disabled[root@node1 ~]# systemctl stop firewalld

6.2:部署elasticsearch软件

6.2.1:登录20.0.0.26 node1

1.安装elasticsearch---rpm包
上传elasticsearch-5.5.0.rpm包到/opt目录下
[root@node1 opt]# cd /opt
[root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm 2.加载系统服务
[root@node1 opt]# systemctl daemon-reload  ###重载系统参数
[root@node1 opt]# systemctl enable elasticsearch.service
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.3.更改elasticsearch主配置文件
[root@node1 opt]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak  ##备份配置文件
[root@node1 opt]# vim /etc/elasticsearch/elasticsearch.yml
shift+:  输入 set nu  显示行号17 cluster.name: my-elk-cluster    ##集群名字
23 node.name: node1        ##节点名字
33 path.data: /data/elk_data   ##数据存放路径
37 path.logs: /var/log/elasticsearch/   ##日志存放路径
43 bootstrap.memory_lock: false   ##不在启动的时候锁定内容:锁定物理内存地址,防止es内存被交换出去
55 network.host: 0.0.0.0   ##提供服务绑定的ip地址,0.0.0.0代表所有地址
59 http.port: 9200      ###侦听端口为9200
68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]    ##这边是节点名称,可不是主机名称  (集群内部相互通信)  ###集群发现通过单播实现
wq

创建数据库存放路径并授权

[root@node1 opt]# mkdir  -p  /data/elk_data  ##创建数据存放地址rpm装 elasticsearch程序时它默认给你创建了一个用户
[root@node1 opt]# id elasticsearch   ##查看用户    (这个用户专门管理es)
uid=990(elasticsearch) gid=985(elasticsearch) 组=985(elasticsearch)将这个文件授权给这个用户
[root@node1 opt]# chown  elasticsearch:elasticsearch /data/elk_data/

启动elasticsearch查看是否成功开启

[root@node1 opt]# systemctl start elasticsearch.service
[root@node1 opt]# netstat -antp | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      42606/java          查看节点信息  用真机的阅览器打开  http://20.0.0.26:9200 有文件打开下面是节点信息{"name" : "node1","cluster_name" : "my-elk-cluster","cluster_uuid" : "GXYhB4cIRuGYGLGI0p2jxQ","version" : {"number" : "5.5.0", ##版本"build_hash" : "260387d",  ##hash值算法"build_date" : "2017-06-30T23:16:05.735Z",   ##es版本诞生日期"build_snapshot" : false,"lucene_version" : "6.6.0"},"tagline" : "You Know, for Search"
}
##只能看到数据信息##

6.2.2:nodel2配置和以上一样

就改个节点名称

6.3:集群检查健康和状态

检查群集健康情况

在真机浏览器打开 http://20.0.0.26:9200/_cluster/health?pretty
{"cluster_name" : "my-elk-cluster","status" : "green","timed_out" : false,"number_of_nodes" : 2,"number_of_data_nodes" : 2,"active_primary_shards" : 0,"active_shards" : 0,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 0,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0
}

查看群集状态信息

http://20.0.0.26:9200/_cluster/state?pretty
{"cluster_name" : "my-elk-cluster","version" : 3,"state_uuid" : "x6kJq5U-Q42_CB2j156PYA","master_node" : "stX2XQqsSNaDIm981ivZQw","blocks" : { },"nodes" : {"stX2XQqsSNaDIm981ivZQw" : {"name" : "node1","ephemeral_id" : "B3IreMfGTeGcvrZhBP-fQQ","transport_address" : "20.0.0.26:9300",    ##9200是单独的es业务端口,9300是集群通信的内部端口"attributes" : { }},"canvEUl2R5KCEzmkTP9qOQ" : {"name" : "node2","ephemeral_id" : "bQH9Hf0LRiyrnmWHiuthfA","transport_address" : "20.0.0.27:9300","attributes" : { }}},"metadata" : {    ##描述性信息"cluster_uuid" : "GXYhB4cIRuGYGLGI0p2jxQ","templates" : { },"indices" : { },"index-graveyard" : {"tombstones" : [ ]}},"routing_table" : {"indices" : { }},"routing_nodes" : {"unassigned" : [ ],"nodes" : {"canvEUl2R5KCEzmkTP9qOQ" : [ ],"stX2XQqsSNaDIm981ivZQw" : [ ]}}
}

6.4:安装elasticsearch-head插件

上述查看集群的方式,及其不方便,我们可以通过安装elasticsearch-head 插件后,来管理

6.4.1:20.0.0.26 node1主机

编译安装node组件依赖包 耗时比较长

上传node-v8.2.1.tar.gz到/opt
[root@node1 opt]# yum install gcc gcc-c++ make -y
##编译安装node组件依赖包##耗时比较长
[root@node1 opt]# cd /opt
[root@node1 opt]# tar xzvf node-v8.2.1.tar.gz
[root@node1 opt]# cd node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure
[root@node1 node-v8.2.1]# make -j3 && make install

安装phantomjs##前端框架
上传软件包到/usr/local/src

[root@node1 node-v8.2.1]# cd /usr/local/src/
[root@node1 src]# tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 src]# cd phantomjs-2.1.1-linux-x86_64/bin
[root@node1 bin]# cp phantomjs /usr/local/bin

安装elasticsearch-head 数据可视化工具

[root@node1 bin]# cd /usr/local/src/
[root@node1 src]# tar xzvf elasticsearch-head.tar.gz
[root@node1 src]# cd elasticsearch-head/
[root@node1 elasticsearch-head]# npm install   ##因为这是个前端工具所以 要用npm

修改主配置文件

[root@node1 elasticsearch-head]# cd ~
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml   ##下面配置文件,插末尾##
http.cors.enabled: true    ##开启跨域访问支持,默认为false
http.cors.allow-origin: "*"  ##跨域访问允许的域名地址
[root@node1 ~]# systemctl restart elasticsearch

启动elasticsearch-head 启动服务器

[root@node1 ~]# cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]# npm run start &   ##后台启动[root@node1 elasticsearch-head]# netstat -lnupt | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      89006/grunt
[root@node1 elasticsearch-head]# netstat -lnupt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      88848/java

6.4.2 node2 主机配置和node1配置如出一辙

6.4.3:测试 能否进入图形化界面

真机上打开浏览器输入http://20.0.0.26:9100/   可以看见群集很健康是绿色的
在 Elasticsearch 后面的栏目中输入http://20.0.0.26:9200然后点击连接  会发现
node1  信息动作
node2  信息动作

6.4.4:在es中创建一条索引

登录20.0.0.26 node1 主机 进入创建
索引为index-demo,类型test,在真机浏览器中可以看到成功创建
index 相当于数据库 test相当于表

粗框体和细矿体区别
粗框体是主切片 细框体是备份
将库切成5个分片,分别放在两个节点,另一个节点就是备份

curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
显示如下
{"_index" : "index-demo","_type" : "test","_id" : "1","_version" : 1,"result" : "created","_shards" : {"total" : 2,"successful" : 2,"failed" : 0},"created" : true
}

6.5:安装logstash并做一些日志搜集输出到elasticsearch中

登录主机 20.0.0.25
关闭防火墙关闭核心防护
1.更改主机名
[root@localhost ~]# hostnamectl set-hostname apache
[root@localhost ~]# bash2.安装Apache服务(httpd)
yum -y install httpd
systemctl  start httpd3.安装java环境
[root@apache ~]# java  -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)4.安装logstash
上传logstash-5.5.1.rpm到/opt目录下
[root@apache opt]# cd /opt
[root@apache opt]# rpm -ivh logstash-5.5.1.rpm
[root@apache opt]# systemctl start logstash.service
[root@apache opt]# systemctl enable logstash.service
Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.
[root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin在真机上用浏览器登录apache,查看20.0.0.25 有没有生成日志文件
[root@apache ~]# cd /var/log
[root@apache log]# cd httpd/
[root@apache httpd]# ls
access_log  error_log
[root@apache httpd]# cat access_log5.logstash (Apache)与elasticsearch (node) 功能是否正常,做对接测试###
Logstash这个命令测试
字段描述解释:
-f   通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
-e  后面跟着字符串  改字符串可以被当做logstash的配置 (如果是"  ",则默认使用stdin作为输入,stdout作为输出)
-t  测试配置文件是否正确,然后退出6.输入采用 标准输入  输出采用标准输出-----登录20.0.0.25  在apache 服务器上
[root@apache httpd]# logstash -e 'input{ stdin{} } output{ stdout{} }'
www.baidu.com      ###测试输入输出      (往里面输入东西就行了)
2020-10-29T04:12:47.605Z apache www.baidu.com
www.sina.com.cn
2020-10-29T04:12:59.491Z apache www.sina.com.cn7.使用rubydebug显示详细输出,codec为一种编解码器
[root@apache httpd]# logstash -e 'input { stdin{} } output{ stdout{ codec=>rubydebug } }'  ##codec就是将输入的日志文件修改为rubydebug的这种格式
www.baidu.com    ###输入
详细显示如下:
{"@timestamp" => 2020-10-29T04:17:32.647Z,  "@version" => "1","host" => "apache","message" => "www.baidu.com"
}8.使用logstash将信息写入elasticsearch中
[root@apache opt]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["20.0.0.26:9200"] } }'
*********
输入:
www.baidu.com登录20.0.0.26 真机
打开浏览器  输入http://20.0.0.26:9100/   查看索引信息
http://20.0.0.26:9200/  连接
多出 logstash-2020.10.29
点击数据浏览选择logstash-2020.10.29的索引,右边显示框会显示我们在终端输入的地址。

6.6:登录20.0.0.25 apache主机 做对接配置

###logstash配置文件###
Logstash配置文件主要由三部分组成:input,output,filter(根据需要)

[root@apache opt]# chmod o+r /var/log/messages    ##给与其它用户只读权限
[root@apache opt]# ll /var/log/messages
-rw----r--. 1 root root 1657402 10月 29 13:57 /var/log/messages[root@apache opt]# vi /etc/logstash/conf.d/system.conf
input {file{path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {elasticsearch {hosts => ["20.0.0.26:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}[root@apache opt]# systemctl restart logstash.service

6.7:登录 20.0.0.26 node1主机

6.7.1在node1 主机安装kibana

上传 kibanna-5.5.1-x86_64.rpm 到/usr/local/src/目录

[root@node1 src]# cd /usr/local/src/
[root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm
[root@node1 src]# cd /etc/kibana/
[root@node1 kibana]# cp kibana.yml kibana.yml.bak
[root@node1 kibana]# vi kibana.yml
2/:server.port: 5601        ####kibana打开的端口
7/:server.host: "0.0.0.0"   ###kibana侦听的地址
21/:elasticsearch.url: "http://20.0.0.26:9200"      ####和elasticsearch建立关系
30/:kibana.index: ".kibana"        ####在elasticsearch中添加.kibana服务
[root@node1 kibana]# systemctl start kibana.service
[root@node1 kibana]# systemctl enable kibana.service

登录真机
使用浏览器输入20.0.0.26:5601
首次登录创建一个索引 名字 :system-* ###这是对接系统日志文件
index name or pattern ###下面输入system-*

然后点最下面的出面的create 按钮创建

切换到apache主机

cd /etc/logstash/conf.d/
[root@apache conf.d]# vim apache_log.conf   ##创建一个索引input {file{path => "/etc/httpd/logs/access_log"type => "access"start_position => "beginning"}file{path => "/etc/httpd/logs/error_log"type => "error"start_position => "beginning"}
}output {if [type] == "access" {elasticsearch {hosts => ["20.0.0.26:9200"]index => "apache_access-%{+YYYY.MM.dd}"}}if [type] == "error" {elasticsearch {hosts => ["20.0.0.26:9200"]index => "apache_error-%{+YYYY.MM.dd}"}}
}[root@apache conf.d]# logstash -f apache_log.conf

测试

真机访问20.0.0.26:9100
连接http://20.0.0.26:9200/
可以看到索引信息多了两条
apache_error-2020.10.29
apache_access-2020.10.29

再开一个网页访问20.0.0.26:5601
##添加索引:##
左边选项最后一个Management ----> Index Patterns ---->Create Index Pattern
分别创建 apache_access-* 和 apache_error-* 的索引
创建完之后要等一段时间才能有数据显示。

为什么要使用ELK-----EKL的原理 ---以及ELK的配置 详细! 小白都能懂相关推荐

  1. 视频教程-【2019精品课】构建ELK海量日志分析平台-ELK

    [2019精品课]构建ELK海量日志分析平台 10年一线开发及项目管理经验,6年以上大数据项目架构.实施.开发与运维经验,骨灰级大数据玩家,对Hadoop.Storm.Spark.Flink.Kyli ...

  2. 兄弟,用大白话告诉你小白都能看懂的Hadoop架构原理

    本文来自:石杉的架构笔记 目录 一.前奏 二.HDFS的NameNode架构原理 一.前奏 Hadoop是目前大数据领域最主流的一套技术体系,包含了多种技术. 包括HDFS(分布式文件系统),YARN ...

  3. 关于Spring底层原理面试的那些问题,你是不是真的懂Spring?

    转载自  关于Spring底层原理面试的那些问题,你是不是真的懂Spring? 1.什么是 Spring 框架?Spring 框架有哪些主要模块? Spring 框架是一个为 Java 应用程序的开发 ...

  4. MySQL 储存过程-原理、语法、函数详细说明

    2019独角兽企业重金招聘Python工程师标准>>> Mysql储存过程是一组为了完成特定功能的SQL语句集,经过编译之后存储在数据库中,当需要使用该组SQL语句时用户只需要通过指 ...

  5. 路由工作原理+DHCP+静态路由配置

    路由工作原理+DHCP+静态路由配置 路由器 路由表 路由优先级 路由优先级的配置 浮动路由 路由的度量 DHCP DHCP第一种配置命令(global): DHCP第二种分配IP地址的配置命令(in ...

  6. elk怎么读的_elk,elk的英文意思和翻译,elk的音标读音,用法,例句,发音,含义讲解

    英语频道小编Cara整理了英语单词elk的学习资料,关于elk是什么意思这个问题进行了详细的讲解,包括elk的英语意思解释.正确音标读音及发音.用法,elk的英文短句例句含义讲解等与英文单词elk相关 ...

  7. 人人都能懂的图灵机原理

    人人都能懂的图灵机原理 图灵机是一个计算模型,最早用来解决判定一个问题到底可不可解,那么它是如何判定的呢? 在本篇文章开始之前,我们先来看一段视频: https://www.zhihu.com/zvi ...

  8. Internet:A/B Testing即对照实验(一种数据驱动决策方法)的简介、原理、案例应用之详细攻略

    Internet:A/B Testing即对照实验(一种数据驱动决策方法)的简介.原理.案例应用之详细攻略 目录 A/B Testing即对照实验(一种数据驱动决策方法)的简介 1.A/B Testi ...

  9. RPC框架:从原理到选型,一文带你搞懂RPC

    大家好,我是华仔,RPC系列的文章是我去年写的,当时写的比较散,现在重新进行整理.对于想学习RPC框架的同学,通过这篇文章,让你知其然并知其所以然,便于以后技术选型,下面是文章内容目录: RPC 什么 ...

最新文章

  1. SAP HUM 使用HU02将几个HU打包到一个外层新的HU号码里
  2. 机器学习新手们 我这有本秘笈要不要?
  3. asp.net动态加载css
  4. 如何打造高效的多任务、高并发的网络服务器系统?
  5. gps84转换gcj02公式_百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换...
  6. oracle分区表学习及应用
  7. POJ 1458 Common Subsequence DP LCS 最长公共子序列
  8. 首张数字人民币机票订单诞生 上海-深圳
  9. 开发人员必备的 Chrome 扩展
  10. 未解决:火狐浏览器提示不安全的链接
  11. 数据库推荐,qPCR引物设计与评价
  12. Hive常用函数大全(一)(关系/数学/逻辑/数值/日期/条件/字符串/集合统计/复杂类型)
  13. 中国数据中心最新规划图,中国数据中心建设情况
  14. 计算机中丢失storm.d,win10 64位电脑缺少storm.dll怎么办_win10玩暗黑破坏神2缺少storm.dll文件修复方法...
  15. 练习STM32动态更改PWM波频率和占空比
  16. 告诉你WHT中文站是什么?
  17. 大数据发展促进委员会在京成立
  18. 项目进度管理-活动排序工具与技术(前导图、箭线图)
  19. 79g道闸雷达_79GHz道闸雷达调试软件
  20. 一行代码实现呼出热键

热门文章

  1. jane street market prediction 冠军方案 奇巧淫技与topline链接整理(3/3)
  2. LeetCode之Shortest Unsorted Continous Subarray
  3. 国际:十种学习新技术的方法
  4. itk读取.img格式的医学图像
  5. 弗雷塞斯 从生物学到生物信息学到机器学习 转录组入门(3):了解fastq测序数据...
  6. android shareSDK 微博分享案例
  7. 蓝牙初学者要知道的几件事
  8. Matlab中的正态分布概率函数
  9. ssh免密码登录全过程
  10. 《设计模式入门》 19.命令模式