- Libevent(3)之使用教程(2)创建事件
Once-Day
#Linux实践记录#十年代码训练开发语言Clibevent
Libevent(3)之使用教程(2)创建事件Author:OnceDayDate:2025年6月29日一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…漫漫长路,有人对你微笑过嘛…本文档翻译于:Fastportablenon-blockingnetworkprogrammingwithLibevent全系列文章可参考专栏:十年代码训练_Once-Day的博客-C
- 一代币CentOS6.7安装方式总结
LeetJoe
公有链公有链一代币
dogecoin参考我的另一篇文章CentOS6.7编译安装bitcoindashdash跟dogecoin的安装方式基本一样的,有一点区别是需要安装libevent.sudoyuminstalllibevent2-devel.x86_64
- libevent2-介绍
学不完了怎么办
linuxwindows服务器
一.Libevent在window上的实现-->iocp1.iocp是什么IOCP(Input/OutputCompletionPorts)是Windows操作系统提供的一种高性能、可扩展的异步I/O模型。这种模型基于事件驱动,可以大幅提升I/O操作的效率和并发量,尤其适合处理大量连接和大量数据流的网络应用。IOCP主要包含三个组件:I/O端口、完成端口和工作者线程池。I/O端口用来描述文件句柄或
- 存储系统02——Libevent事件循环
Osako67
异步日志系统linux服务器c++
存储系统02——Libevent多路复用(Multiplexing)与多路分解(Demultiplexing)I/O多路复用(I/OMultiplexing)阻塞I/OI/O多路复用Reactor反应堆模式Libevent库Libevent事件实例(HTTP服务)多路复用(Multiplexing)与多路分解(Demultiplexing)多路复用(Multiplexing):将多个流合并到一个共
- 推荐开源项目:go-libtor - 自带的Go版Tor库
卓桢琳Blackbird
推荐开源项目:go-libtor-自带的Go版Tor库go-libtorSelf-containedTorfromGo项目地址:https://gitcode.com/gh_mirrors/go/go-libtor项目简介go-libtor是一个专为Go语言设计的自包含、完全静态链接的Tor库。它包含了对原始C/C++Tor库及其依赖(如zlib、libevent和openssl)的精细封装。通过
- libev库的用法
^随风~~
服务器
libev是一个高性能的事件循环库,比libevent库的性能要好。Nodejs就是采用它作为底层库。libev的官方文档在这里,文档比较长。本文结合里面的例子对它的用法做些简单的总结。目录例子首先从官方的例子开始://asingleheaderfileisrequired#include#include//forputs//everywatchertypehasitsowntypedef'dst
- 3.23-libevent
_Chipen
Linux网络linux
libevent事件处理框架-event_baseAPI函数在event_base底层封装了IO多路转接函数,并且可以对事件进行检测和处理的//头文件#include//创建一个时间处理框架structevent_base*event_base_new(void);//释放一个事件处理框架//参数:even_base_new()函数的返回值voidevent_base_free(structeve
- Memcached主从复制+Keepalived高可用
云教员
memcached数据库缓存
部署memcached数据库服务文章目录部署memcached数据库服务资源列表基础环境一、安装Memcached服务器1.1、安装Libevent1.2、安装Memcached1.3、设置Memcached服务脚本1.4、启动服务监听端口二、安装MemcachedAPI客户端2.1、编译安装Libmemcached2.2、编译安装Memcached扩展2.3、使用PHP的phpize脚本生成配置
- C事件驱动网络库libevent的http详解
whoarethenext
网络c++httplibeventc语言
libevent的http释放Libevent异步HTTP的威力:深入解析`event2/http.h`核心服务器设置与管理服务器配置选项服务器请求处理回调虚拟主机和别名服务器响应函数客户端连接设置客户端连接配置发出客户端请求访问请求/响应数据头部操作工具URI解析和编码工具高级RFC3986URI解析结论由于现有服务器大部分都使用http所以对libevent的http使用需要了解也是为我下面这
- libevent服务器与qt开发第二期(附带源码)
whoarethenext
服务器qt运维c++linux后端
本文是上一期文章的延伸源码本文核心点上一期的文章的位置链接:link本期要做的是通过libevent设计一个服务器,该服务器遇到有客户端访问的时候,会用一个qt的listview控件来显示该客户端的ip和端口号,客户端断开后listview也会删除该客户端的ip和端口号,演示视频如下。20250416_160008源码libeventuse.hclassglobalSignal:publicQOb
- 在 libevent 中使用 MariaDB(MySQL)
css
在之前我翻译的官方文档中提到了MariaDB提供了对异步I/O的支持。那篇文章是一个比较简要的介绍。不过实际适配中,官方也提供了一个完整适配libevent的示例代码。本文算是对我上述示例代码的阅读笔记吧。阅读本文之前,作者假设读者已经有了libevent的相关知识。如果没有的话,可以参见我的系列文章:Libevent官方文档学习笔记(1.libevent_core部分)Libevent官方文档学
- php 的 libevent / event / ev / uv 扩展
yarn
安装挺简单的,本文的主要目的是梳理清楚这几个事件驱动库和对应的扩展之间的关系。1、ext-event/ext-libevent是libeventwrapper,推荐ext-evet,workerman在用。2、ext-ev是libevwrapper,libev要优于libevent,最新的reactPHP在用哦,其实reactPHP有EventLoop,可以根据你安装的扩展选用相应的事件驱动库,可
- 基于Linux C++ windows QT 开发的在线答题系统
GaRlic197
c++qt开发语言
一、项目描述:实现功能用户的注册、登录,个人答题训练、排位赛(网络匹配对战)、排位系统1、该项目采用C/S结构基于TCP/IP协议,运用Libevent网络库和线程池进行搭建服务器框架。在传输数据中采用Json进行轻量级的数据格式转换。使用spdlog日志库来记录操作信息、出错信息和提醒消息。2、使用MySQL数据库来存储注册账号信息,创建一个数据库专门用于存储题库数据3、单人训练模式:从题库中随
- libevent的各个基本函数的使用
whoarethenext
算法linux服务器libeventc++后端
libevent也是为后续服务器与客户端搭建做准备,有利于大家能更容易阅读源码event_newevent_freeevent_debug_unassignevent_addevent_delevent_base_onceevent_pendingevent_base_setevent_get_eventsevent_get_callbackevent_get_baseevent_get_base
- C++ 实现 MIT6.824 环境配置
分布式
环境配置Thrift库这个Thrift是一个轻量级的,跨语言的rpc库。安装这个库,我们首先需要安装它需要的依赖。#相关依赖工具sudoyuminstallautomake\libtool\flex\bison\pkgconfig\gcc-c++\boost-devel\libevent-devel\zlib-devel\python-devel\ruby-devel然后下载对应的Thrift的版
- C++ C语言Socket库Libevent的粘包处理
面向对象World
C++
voidMDVRConnectClient::on_read(structbufferevent*bev,void*user_data){//获取输入缓冲区中的数据(数据未移走)structevbuffer*input=bufferevent_get_input(bev);size_tcontent_size=evbuffer_get_length(input);if(content_size>0
- Libevent解决TCP通信粘包问题
爱吃肉的老狼
html服务器java
什么是粘包?基于socket的通信,其数据的接收和发送是无关的,read()/recv()和write()/send()的执行次数可能不同。例如,客户端write()/send()重复执行三次,每次都发送字符串"hello",那么服务器上的read()/recv()可能分三次接收,每次都接收"hello";也可能分两次接收,第一次接收"hel",第二次接收"lohellohello";也可能一次就
- 使用 libevent 构建高性能网络应用
ScilogyHunter
常见软件库libevent事件驱动软件库
使用libevent构建高性能网络应用在现代网络编程中,高性能和可扩展性是开发者追求的核心目标。为了实现这一目标,许多开发者选择使用事件驱动库来管理I/O操作和事件处理。libevent是一个轻量级、高性能的事件通知库,广泛应用于网络服务器、代理、缓存等场景。本文将详细介绍libevent的核心概念、使用方法以及如何利用它构建高性能的网络应用。1.什么是libevent?libevent是一个用C
- 使用nginx+lua+Redis实现缓存预热、二级缓存查询、多级缓存查询
c.小白
nginxredislua缓存
使用nginx+lua+Redis实现缓存预热、二级缓存查询、多级缓存查询安装好Lua、Redis、openresty(默认安装了nginx)。lua安装在linux系统中执行下面的命令1.yuminstall‐ygcc2.yuminstalllibtermcap‐develncurses‐devellibevent‐develreadline‐devel3.curl‐R‐Ohttp://www.
- libevent交叉编译
qsqya
c++
libevent交叉编译正常编译解压tarzxvflibevent-2.0.10-stable.tar.gz进入目录cdlibevent-2.0.10-stable设置安装路径./configure--prefix=/usr编译make安装makeinstall坑:默认是安装到/usr/local下的,程序执行时找不到包,可在CmakeLists.txt中修改三方包的路径交叉编译解压tarzxvf
- libevent | 2.libevent基本概念以及应用方法(附:动态库找不到的处理方法)
高英gy
libeventlinuxepoll网络
一.libevent的基本概念libevent的基本特点:(1).C语言编写,开源,开发效率高;(2).封装了socket通信和IO多路转接;(3).代码精简专注于网络,性能高;(4).事件驱动:将网络io处理转化为事件处理即libevent是对reactor的一个封装;libevent的安装:libevent安装方法二.libevent应用方法流程:创建事件管理器→创建事件→将事件添加到事件管理
- 使用libevent实现事件驱动以替代多线程并发阻塞I/O结构
可乐术士
c语言linuxunix
目录1.libevent1.1事件驱动2.背景3.示例1.libeventLibevent是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动(event-driven),高性能;轻量级,专注于网络,不如ACE那么臃肿庞大;源代码相当精炼、易读;跨平台,支持Windows、Linux、*BSD和MacOs;支持多种I/O多路复用技术,epoll、poll、dev/pol
- 整理一下一些Qt/C++第三方库
MayZork
qt开发语言c++
boost一个广泛的C++库集合,提供了大量的功能模块,包括但不限于数据结构、算法、并发编程、网络编程、文件系统、正则表达式、序列化等。poco也是一个广泛的C++库集合,提供了一套丰富的功能模块,包含网络通信、HTTP、文件系统、XML、JSON、数据库等。libevent轻量级的C语言库,主要用于异步网络编程。它提供了对I/O复用的支持,使得开发者可以在单线程中同时处理多个连接。QCustom
- 开源事件通知库libevent及网络连接管理模块bufferevent详解
dvlinker
开源组件及数据库技术开源事件通知库libevent网络连接管理bufferevent回调数据读写心跳处理
目录1、libevent介绍1.1、什么是libevent?1.2、libevent特点1.3、网络连接管理模块bufferevent2、bufferevent有什么用?3、bufferevent的整体设计与实现细节3.1、整体概况3.2、evbuffer与bufferevent3.3、defercallback4、bufferevent的使用方法4.1、创建和销毁bufferevent4.2、设
- Windows下编译libevent 64位静态库总结
岩屿
libevent
参照:https://my.oschina.net/jacobin/blog/146567http://blog.csdn.net/qingfengpu99/article/details/45113841http://blog.csdn.net/xiaoluer/article/details/56008921http://blog.csdn.net/u010085340/article/det
- libevent-bufferevent遇到的坑
zidian666
C++libeventc++libevent
1.多线程操作段错误intevbuffer_enable_locking(structevbuffer*buf,void*lock);voidevbuffer_lock(structevbuffer*buf);对evbuffer加锁,先确保安全,再优化效率2.对evbuffer加锁后还是段错structbufferevent*bufferevent_socket_new(structevent_b
- libevent之android与鸿蒙编译过程
老中医的博客
libeventharmonyos
背景最近基于libevent开发了一个端侧的缓存代理库,先是基于macOS编译开发的,基本0问题,后来移植到鸿蒙与android时遇到一些编译链接问题。libevent版本如下:软件版本号libevent-2.1.8android编译编译环境androidstudio版本ndk编译链版本api级别AndroidStudioFlamingo|2022.2.1Patch2Build#AI-222.44
- Linux Memcached 安装
执笔轻叹_
Memcached支持许多平台:Linux、FreeBSD、Solaris、MacOS,也可以安装在Windows上。Linux系统安装memcached,首先要先安装libevent库。sudoapt-getinstalllibeventibevent-dev自动下载安装(Ubuntu/Debian)yuminstalllibeventlibevent-devel自动下载安装(Redhat/Fe
- C++服务器端开发(2):确定服务器框架
Galaxy银河
C++更多语法计算机/人工智能c++服务器开发语言
选择C++服务器框架时,可以考虑:并发性能:C++的强项之一是其并发性能。选择一个具有高并发处理能力的服务器框架,可以更好地满足大量并发请求的需求。例如,libevent、Boost.Asio和CppServer都是具有良好并发性能的C++服务器框架。可扩展性:服务器应用程序通常需要处理大量数据和请求,因此选择一个具有良好可扩展性的服务器框架非常重要。一些流行的可扩展性强的C++服务器框架包括Po
- FastDFS安装并整合Openresty
良辰美景好时光
nginxopenresty
FastDFS安装并整合Openresty一、安装环境准备【CentOS7.9】二、FastDFS--tracker安装2.1.下载fastdfs2.2.FastDFS安装环境2.3.安装FastDFS依赖libevent库2.4.安装libfastcommon2.5.安装libserverframe网络框架2.6.tracker编译安装2.7.安装之后文件目录介绍2.8.错误处理2.9.配置Fa
- 怎么样才能成为专业的程序员?
cocos2d-x小菜
编程PHP
如何要想成为一名专业的程序员?仅仅会写代码是不够的。从团队合作去解决问题到版本控制,你还得具备其他关键技能的工具包。当我们询问相关的专业开发人员,那些必备的关键技能都是什么的时候,下面是我们了解到的情况。
关于如何学习代码,各种声音很多,然后很多人就被误导为成为专业开发人员懂得一门编程语言就够了?!呵呵,就像其他工作一样,光会一个技能那是远远不够的。如果你想要成为
- java web开发 高并发处理
BreakingBad
javaWeb并发开发处理高
java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据) 一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降。常用的优化措施是M-S(
- mysql批量更新
ekian
mysql
mysql更新优化:
一版的更新的话都是采用update set的方式,但是如果需要批量更新的话,只能for循环的执行更新。或者采用executeBatch的方式,执行更新。无论哪种方式,性能都不见得多好。
三千多条的更新,需要3分多钟。
查询了批量更新的优化,有说replace into的方式,即:
replace into tableName(id,status) values
- 微软BI(3)
18289753290
微软BI SSIS
1)
Q:该列违反了完整性约束错误;已获得 OLE DB 记录。源:“Microsoft SQL Server Native Client 11.0” Hresult: 0x80004005 说明:“不能将值 NULL 插入列 'FZCHID',表 'JRB_EnterpriseCredit.dbo.QYFZCH';列不允许有 Null 值。INSERT 失败。”。
A:一般这类问题的存在是
- Java中的List
g21121
java
List是一个有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
与 set 不同,列表通常允许重复
- 读书笔记
永夜-极光
读书笔记
1. K是一家加工厂,需要采购原材料,有A,B,C,D 4家供应商,其中A给出的价格最低,性价比最高,那么假如你是这家企业的采购经理,你会如何决策?
传统决策: A:100%订单 B,C,D:0%
&nbs
- centos 安装 Codeblocks
随便小屋
codeblocks
1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可yum install gccyum install gcc-c++
2.安装gtk2-devel,因为默认已经安装了正式产品需要的支持库,但是没有安装开发所需要的文档.yum install gtk2*
3. 安装wxGTK
yum search w
- 23种设计模式的形象比喻
aijuans
设计模式
1、ABSTRACT FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:
- 开发管理 CheckLists
aoyouzi
开发管理 CheckLists
开发管理 CheckLists(23) -使项目组度过完整的生命周期
开发管理 CheckLists(22) -组织项目资源
开发管理 CheckLists(21) -控制项目的范围开发管理 CheckLists(20) -项目利益相关者责任开发管理 CheckLists(19) -选择合适的团队成员开发管理 CheckLists(18) -敏捷开发 Scrum Master 工作开发管理 C
- js实现切换
百合不是茶
JavaScript栏目切换
js主要功能之一就是实现页面的特效,窗体的切换可以减少页面的大小,被门户网站大量应用思路:
1,先将要显示的设置为display:bisible 否则设为none
2,设置栏目的id ,js获取栏目的id,如果id为Null就设置为显示
3,判断js获取的id名字;再设置是否显示
代码实现:
html代码:
<di
- 周鸿祎在360新员工入职培训上的讲话
bijian1013
感悟项目管理人生职场
这篇文章也是最近偶尔看到的,考虑到原博客发布者可能将其删除等原因,也更方便个人查找,特将原文拷贝再发布的。“学东西是为自己的,不要整天以混的姿态来跟公司博弈,就算是混,我觉得你要是能在混的时间里,收获一些别的有利于人生发展的东西,也是不错的,看你怎么把握了”,看了之后,对这句话记忆犹新。 &
- 前端Web开发的页面效果
Bill_chen
htmlWebMicrosoft
1.IE6下png图片的透明显示:
<img src="图片地址" border="0" style="Filter.Alpha(Opacity)=数值(100),style=数值(3)"/>
或在<head></head>间加一段JS代码让透明png图片正常显示。
2.<li>标
- 【JVM五】老年代垃圾回收:并发标记清理GC(CMS GC)
bit1129
垃圾回收
CMS概述
并发标记清理垃圾回收(Concurrent Mark and Sweep GC)算法的主要目标是在GC过程中,减少暂停用户线程的次数以及在不得不暂停用户线程的请夸功能,尽可能短的暂停用户线程的时间。这对于交互式应用,比如web应用来说,是非常重要的。
CMS垃圾回收针对新生代和老年代采用不同的策略。相比同吞吐量垃圾回收,它要复杂的多。吞吐量垃圾回收在执
- Struts2技术总结
白糖_
struts2
必备jar文件
早在struts2.0.*的时候,struts2的必备jar包需要如下几个:
commons-logging-*.jar Apache旗下commons项目的log日志包
freemarker-*.jar  
- Jquery easyui layout应用注意事项
bozch
jquery浏览器easyuilayout
在jquery easyui中提供了easyui-layout布局,他的布局比较局限,类似java中GUI的border布局。下面对其使用注意事项作简要介绍:
如果在现有的工程中前台界面均应用了jquery easyui,那么在布局的时候最好应用jquery eaysui的layout布局,否则在表单页面(编辑、查看、添加等等)在不同的浏览器会出
- java-拷贝特殊链表:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
bylijinnan
java
public class CopySpecialLinkedList {
/**
* 题目:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
拷贝pNext指针非常容易,所以题目的难点是如何拷贝pRand指针。
假设原来链表为A1 -> A2 ->... -> An,新拷贝
- color
Chen.H
JavaScripthtmlcss
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD>&nbs
- [信息与战争]移动通讯与网络
comsci
网络
两个坚持:手机的电池必须可以取下来
光纤不能够入户,只能够到楼宇
建议大家找这本书看看:<&
- oracle flashback query(闪回查询)
daizj
oracleflashback queryflashback table
在Oracle 10g中,Flash back家族分为以下成员:
Flashback Database
Flashback Drop
Flashback Table
Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query)
下面介绍一下Flashback Drop 和Flas
- zeus持久层DAO单元测试
deng520159
单元测试
zeus代码测试正紧张进行中,但由于工作比较忙,但速度比较慢.现在已经完成读写分离单元测试了,现在把几种情况单元测试的例子发出来,希望有人能进出意见,让它走下去.
本文是zeus的dao单元测试:
1.单元测试直接上代码
package com.dengliang.zeus.webdemo.test;
import org.junit.Test;
import o
- C语言学习三printf函数和scanf函数学习
dcj3sjt126com
cprintfscanflanguage
printf函数
/*
2013年3月10日20:42:32
地点:北京潘家园
功能:
目的:
测试%x %X %#x %#X的用法
*/
# include <stdio.h>
int main(void)
{
printf("哈哈!\n"); // \n表示换行
int i = 10;
printf
- 那你为什么小时候不好好读书?
dcj3sjt126com
life
dady, 我今天捡到了十块钱, 不过我还给那个人了
good girl! 那个人有没有和你讲thank you啊
没有啦....他拉我的耳朵我才把钱还给他的, 他哪里会和我讲thank you
爸爸, 如果地上有一张5块一张10块你拿哪一张呢....
当然是拿十块的咯...
爸爸你很笨的, 你不会两张都拿
爸爸为什么上个月那个人来跟你讨钱, 你告诉他没
- iptables开放端口
Fanyucai
linuxiptables端口
1,找到配置文件
vi /etc/sysconfig/iptables
2,添加端口开放,增加一行,开放18081端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 18081 -j ACCEPT
3,保存
ESC
:wq!
4,重启服务
service iptables
- Ehcache(05)——缓存的查询
234390216
排序ehcache统计query
缓存的查询
目录
1. 使Cache可查询
1.1 基于Xml配置
1.2 基于代码的配置
2 指定可搜索的属性
2.1 可查询属性类型
2.2 &
- 通过hashset找到数组中重复的元素
jackyrong
hashset
如何在hashset中快速找到重复的元素呢?方法很多,下面是其中一个办法:
int[] array = {1,1,2,3,4,5,6,7,8,8};
Set<Integer> set = new HashSet<Integer>();
for(int i = 0
- 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL
lanrikey
history
后退时关闭当前页面
<script type="text/javascript">
jQuery(document).ready(function ($) {
if (window.history && window.history.pushState) {
- 应用程序的通信成本
netkiller.github.com
虚拟机应用服务器陈景峰netkillerneo
应用程序的通信成本
什么是通信
一个程序中两个以上功能相互传递信号或数据叫做通信。
什么是成本
这是是指时间成本与空间成本。 时间就是传递数据所花费的时间。空间是指传递过程耗费容量大小。
都有哪些通信方式
全局变量
线程间通信
共享内存
共享文件
管道
Socket
硬件(串口,USB) 等等
全局变量
全局变量是成本最低通信方法,通过设置
- 一维数组与二维数组的声明与定义
恋洁e生
二维数组一维数组定义声明初始化
/** * */ package test20111005; /** * @author FlyingFire * @date:2011-11-18 上午04:33:36 * @author :代码整理 * @introduce :一维数组与二维数组的初始化 *summary: */ public c
- Spring Mybatis独立事务配置
toknowme
mybatis
在项目中有很多地方会使用到独立事务,下面以获取主键为例
(1)修改配置文件spring-mybatis.xml <!-- 开启事务支持 --> <tx:annotation-driven transaction-manager="transactionManager" /> &n
- 更新Anadroid SDK Tooks之后,Eclipse提示No update were found
xp9802
eclipse
使用Android SDK Manager 更新了Anadroid SDK Tooks 之后,
打开eclipse提示 This Android SDK requires Android Developer Toolkit version 23.0.0 or above, 点击Check for Updates
检测一会后提示 No update were found