源码

转:Mina2.0框架源码剖析(三)

旧巷老猫 提交于 2020-01-30 11:42:24
AbstractIoAcceptor类继承自AbstractIoService基类,并实现了IoAcceptor接口,它主要的成员变量是本地绑定地址。 private final List<SocketAddress> defaultLocalAddresses = new ArrayList<SocketAddress>(); private final List<SocketAddress> unmodifiableDefaultLocalAddresses = Collections.unmodifiableList(defaultLocalAddresses); private final Set<SocketAddress> boundAddresses = new HashSet<SocketAddress>(); 在调用bind或unbind方法时需要先获取绑定锁bindLock,具体的绑定操作还是在bind0这个方法中实现的。一旦绑定成功后,就会向服务监听者发出服务激活的事件(ServiceActivated),同理,解除绑定也是在unbind0这个方法中具体实现的。一旦解除绑定成功后,就会向服务监听者发出服务激活的事件(ServiceDeActivated)。 AbstractIoConnector类继承自AbstractIoService基类

Mina2.0框架源码剖析(二)

北城以北 提交于 2020-01-30 11:41:08
上一篇 介绍了几个核心的接口,这一篇主要介绍实现这些接口的抽象基类。首先是实现 IoService 接口的 AbstractIoService 类。它包含了一个 Executor 来处理到来的事件。每个 AbstractIoService 都一个 AtomicInteger 类型的 id 号,确保每个 id 的唯一性。 它内部的 Executor 可以选择是从外部传递进构造函数中,也可以在实例内部自行构造,若是后者,则它将是 ThreadPoolExecutor 类的一个实例,即是 Executor 线程池中的一员。代码如下: if (executor == null ) { this .executor = Executors.newCachedThreadPool(); createdExecutor = true ; } else { this .executor = executor; createdExecutor = false ; } 其中有一个 IdleStatusChecker 成员,它用来对服务的空闲状态进行检查,在一个服务激活时会将服务纳入到检查名单中,而在服务失效时会将服务从名单中剔除。会单独开一个线程进行具体的空闲检查,这是通过下面这个线程类来负责的: private class NotifyingTaskImpl implements

【原】AFNetworking源码阅读(三)

爱⌒轻易说出口 提交于 2020-01-30 09:55:22
【原】AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇 的话,主要是讲了如何通过构建一个request来生成一个data task。但是对于NSURLSession部分却没有提及。主要是精力有限,准备在这一部分把NSURLSession的知识好好梳理一遍。一切先从上一篇中的addDelegateForDataTask:函数说起,然后再介绍AFURLSessionManagerTaskDelegate,最后结合AFURLSessionManager中的NSURLSession梳理一遍(可能会将部分内容放到下一篇)。 2. 由addDelegateForDataTask引发 注意addDelegateForDataTask:这个函数并不是AFURLSessionManagerTaskDelegate的函数,而是AFURLSessionManager的一个函数。这也侧面说明了 AFURLSessionManagerTaskDelegate和NSURLSessionTask的关系是由 AFURLSessionManager管理的 。 该函数除了对于AFURLSessionManagerTaskDelegate类型的成员变量delegate设置之外,最关键的代码就是 [self setDelegate:delegate

源码分析--AFNetworking

不羁的心 提交于 2020-01-30 09:53:36
/*--> */ /*--> */ [AFNetworking] 这个框架是如今 iOS 开发中不可缺少的组件之一。使用也是比较简单的,使用它来发出 HTTP 请求有两个步骤: /*--> */ /*--> */ 1. 以服务器的* 主机地址或者域名 *生成一个 AFHTTPSessionManager 的实例 2. 调用 `- GET:parameters:progress:success:failure:` 方法 AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[[NSURL alloc] initWithString:@"hostname"]]; [manager GET:@"relative_url" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"%@" ,responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"%@", error);

ESP8266简单爬取baidu网页源码

一笑奈何 提交于 2020-01-30 07:58:09
/* * This sketch demonstrates how to set up a simple HTTP-like server. * The server will set a GPIO pin depending on the request * http://server_ip/gpio/0 will set the GPIO2 low, * http://server_ip/gpio/1 will set the GPIO2 high * server_ip is the IP address of the ESP8266 module, will be * printed to Serial when the module is connected. */ # include <ESP8266WiFi.h> const char * ssid = "MERCURY_5038" ; //wifi名称 const char * password = "00001111" ; //wifi密码 const char * host = "www.baidu.com" ; WiFiServer server ( 80 ) ; //开启80端口 void setup ( ) { Serial . begin ( 115200 ) ; //开启串口监视器 delay ( 10

Mysql5.7.11源码部署

我是研究僧i 提交于 2020-01-30 07:43:42
先放一个Mysql5.7.11安装包的地址 链接:https://pan.baidu.com/s/17FF4CkWSeknOgctyo4Cdxg 提取码:y891 [root@hadoop001 local]# rpm -qa|grep -i mysql 若有组件则卸载 [root@hadoop001 local]# rpm -qa|grep -i mariadb 若有组件则卸载 [root@hadoop001]# tar xzvf /root/mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz -C /usr/local/ [root@hadoop39 local]#cd /usr/local [root@hadoop39 local]# mv mysql-5.7.11-linux-glibc2.5-x86_64 mysql [root@hadoop001 local]# mkdir mysql/arch mysql/data mysql/tmp 改my.cnf文件 vim /etc/my.cnf [client] port = 3306 socket = /usr/local/mysql/data/mysql.sock default-character-set=utf8mb4 [mysqld] port = 3306 socket = /usr

[php]laravel框架容器管理的一些要点

时光毁灭记忆、已成空白 提交于 2020-01-30 06:27:04
原文地址: https://www.cnblogs.com/lyzg/p/6181055.html 阅读目录 1. laravel容器基本认识 2. 如何在代码中获取到容器实例 3. 直观的认识laravel容器 4. 如何理解服务绑定与解析 5. 服务提供者的作用与使用 6. 服务绑定名称的别名 7. 依赖注入的机制 8. 其它 本文面向php语言的laravel框架的用户,介绍一些laravel框架里面容器管理方面的使用要点。文章很长,但是内容应该很有用,希望有需要的朋友能看到。php经验有限,不到位的地方,欢迎帮忙指正。 1. laravel容器基本认识 laravel框架是有一个容器框架,框架应用程序的实例就是一个超大的容器,这个实例在bootstrap/app.php内进行初始化: 这个文件在每一次请求到达laravel框架都会执行,所创建的$app即是laravel框架的应用程序实例,它在整个请求生命周期都是唯一的。laravel提供了很多服务,包括认证,数据库,缓存,消息队列等等,$app作为一个容器管理工具,负责几乎所有服务组件的实例化以及实例的生命周期管理。这种方式能够很好地对代码进行解耦,使得应用程序的业务代码不必操心服务组件的对象从何而来,当需要一个服务类来完成某个功能的时候,仅需要通过容器解析出该类型的一个实例即可。从最终的使用方式来看

STL源码剖析读书笔记之vector

元气小坏坏 提交于 2020-01-30 02:36:06
STL源码剖析读书笔记之vector 1.vector概述 vector是一种序列式容器,我的理解是 vector就像数组。 但是数组有一个很大的问题就是当我们分配 一个一定大小的数组的时候,起初 也许我们不会觉得数组容量太小不合需求,但是随着数据量的增加, 数组尺寸 大小不再满足需求,此时我们需要手动的去扩展其大小。然而vector就帮我们 完全实现了一个可 自适应增长的数组功能。 那么这样看来vector其实也就是一种可自适应增长的动态数组的类的实现。 2.关于vector的定义 其实用过vector的人都知道 vector的定义大都像这个样子: 1 vector<int> v1; 2 vector<sting> v2; 很显然vector是一种与类型无关的类模板,支持各种类型的vector,这 也很好的体现了C++的泛型思想,正 是这 种类型无关性,使得STL在各种 平台上广为使用。 这里我只是贴出STL源码剖析书中一小部分vector定义 1 template <class T,class Alloc=alloc> 2 class vector 3 { 4 public: 5 typedef T value_type; 6 typedef valuetype* pointer; 7 typedef valuetype* iterator; 8 typedef

stl vector源码剖析

筅森魡賤 提交于 2020-01-30 02:33:58
前言 项目组要实现一个算法库,其中涉及到了类似vector的一维数组的实现。特此,对stl中得vector做个学习和了解。有任何问题,欢迎不吝指正。谢谢。 一、如何实现vector 如果给你一道面试题,如何用数据结构实现STL中vector的功能?聪明的你会怎么做呢?或许你会如下所述: 或许,如果不考虑分配效率,只需要两个成员就可以实现了 template <class _Ty> class Vector { public: Vector(int nLen=0):m_nLen(nLen),m_Data(NULL) { if(nLen > 0) { m_Data = new _Ty[nLen]; } } protected: _Ty * m_Data; int m_nLen; }; 或许,如下一个简单的思路实现: #include <iostream> using std::ostream; using std::istream; class Array { friend ostream &operator < <( ostream &, const Array & ); friend istream &operator> > ( istream &, Array & ); public: Array( int = 10 ); Array( const Array & );