### ChannelFuture
```
增強版ChannelFuture,ChannelFutureListener提供的通知機制消除了手動檢查對應操作是否完成的必要
1. 通過提供的方法,我們可以注冊一個或者多個ChannelFutureListener實例
2. 操作完成時將會調用監聽器的回調方法operationComplete()
3. 監聽器判斷該操作時成功了還是失敗了,失敗了產生Throwable
```
~~~
final Channel channel = null; //省略
// 異步連接遠程節點
final ChannelFuture future = channel.connect(new InetSocketAddress("", 10000));
// 注冊一個ChannelFutureListener,以便在操作完成時獲取通知
future.addListener(new ChannelFutureListener() {
public void operationComplete(ChannelFuture channelFuture) throws Exception {
if (channelFuture.isSuccess()){
// 操作成功,創建ByteBuf持有數據
ByteBuf buf = Unpooled.copiedBuffer("hello", Charset.defaultCharset());
// 將數據發送到遠程節點,返回一個ChannelFuture
ChannelFuture wf = channelFuture.channel().writeAndFlush(buf);
}else {
// 發生錯誤
Throwable cause = channelFuture.cause();
cause.printStackTrace();
}
}
});
~~~
- 環境搭建
- JRE和JDK
- tomcat
- 問題
- maven
- 簡介
- IDEA
- 修改快捷鍵
- 快捷鍵
- java基礎
- 編譯運行
- 常量和變量
- JShell
- 數據類型
- 基本數據類型
- 整數
- 浮點數
- 字符
- 布爾
- 引用數據類型
- 類
- 數組
- 接口
- 常用類
- Object
- 簡介
- 方法
- getClass
- equals
- toString
- 日期時間
- Date
- DateFormat
- Calendar
- System
- currentTimeMillis
- arraycopy
- 字符串
- StringBuilder
- 包裝類
- 簡介
- 裝箱與拆箱
- 基本類型與字符串之間的轉換
- Arrays
- 集合
- 簡介
- 迭代器
- Collection
- List
- ArrayList
- Vector
- LinkedList
- Set
- HashSet
- LinkedSet
- Collections
- Map
- HashMap
- LinkedHashMap
- 泛型
- 泛型類
- 泛型方法
- 泛型接口
- 泛型通配符
- 異常
- Throwable
- Error
- 異常的處理
- 多線程
- 簡介
- Thread
- 簡介
- 創建線程
- 線程分類
- join
- 線程狀態
- 6種狀態
- 線程安全
- 買票問題
- 同步鎖
- 同步代碼塊
- 同步方法
- Lock鎖
- 死鎖
- Threadlocal
- 三大特性
- Java內存模型
- 簡介
- Volatile
- 線程通信
- 等待喚醒機制
- 例子
- 線程池
- 簡介
- Executor
- 例子
- File
- 構造方法
- IO
- 簡介
- 字節流
- 輸出流
- OutputStream
- FileOutputStream
- 輸入流
- InputStream
- FileInputStream
- 復制圖片
- 字符流
- 輸入流
- Reader
- FileReader
- 輸出流
- Writer
- FileWriter
- 緩沖流
- 簡介
- 字節緩沖流
- 字符緩沖流
- 轉換流
- 字符編碼和字符集
- InputStreamReader
- OutputStreamWriter
- 序列化
- 簡介
- ObjectOutputStream
- ObjectInputStream
- 打印流
- PrintStream
- 異常處理
- 屬性集
- 簡介
- 網絡編程
- Socket
- TCP
- 簡介
- 三次握手
- Socket
- ServerSocket
- 例子
- 上傳文件
- IO
- BIO
- NIO
- AIO
- 面向對象
- 類
- 簡介
- 定義
- static
- 抽象類
- 內部類
- 封裝
- 簡介
- final
- 權限修飾符
- 繼承
- super
- 多態
- 接口
- 單元測試
- 注解
- java提高
- 反射
- 簡介
- 獲取類
- 創建對象
- 例子
- 為私有屬性賦值
- Jdbc加載驅動
- JVM
- Java8新特性
- Lamdda
- 簡介
- 示例
- @FunctionalInterface
- Stream
- 設計模式
- 設計原則
- 設計模式
- 單例模式
- 簡介
- 餓漢式
- 懶漢式
- 靜態內部方式
- 枚舉方式
- 工廠模式
- 簡介
- 簡單工廠模式
- 工廠方法模式
- 代理模式
- 簡介
- 靜態代理
- 動態代理
- Jdk
- Cglib
- 區別
- 建造者模式
- 數據格式
- Protobuf
- 示例
- Student.proto
- 測試
- web基礎
- JDBC
- 簡介
- 核心類
- JDBCUtils
- 連接池
- Druid
- 簡介
- druid.properties
- JDBCUtils
- JDBCTemplate
- Servlet
- 簡介
- Servlet
- Servlet
- GenericServlet
- HttpServlet
- 常用框架
- Spring全家桶
- Spring
- 簡介
- 注解
- Autowired
- Value
- Scope
- PostConstruct
- PreDestroy
- Component
- Configuration
- Bean
- ComponentScan
- PropertySource
- Import
- IoC
- 簡介
- bean
- bean工廠
- bean創建
- 作用范圍
- 生命周期
- DI
- 簡介
- 方式
- 構造函數
- set方法
- 注解
- 注入集合
- 注解
- applicationContext.xml
- bean
- test
- 原理
- 如何創建Web環境中的IoC容器
- 源碼分析
- Aop
- 簡介
- 基礎
- 相關術語
- 切入點表達式
- 常用通知
- 實現原理
- 靜態代理
- JDK動態代理
- CGLIB動態代理
- 比較
- 事務
- 編程式事務
- 聲明式事務
- 例子
- xml
- pom
- bean.xml
- bean
- Logger
- test
- 注解
- bean.xml
- bean
- Logger
- 整合
- Spring之JDBC
- JdbcTemplate
- 三方DataSource
- DBCP
- C3P0
- Spring之事務
- 事務簡介
- 特性
- 事務并發問題
- 隔離級別
- 事務管理分類
- 編程式事務管理
- 聲明式事務管理
- xml
- 注解
- SpringMVC
- 簡介
- 常用注解
- @Controller
- @RequestMapping
- @RequstParam
- @PathVariable
- @RequestHeader
- @CookieValue
- @ModelAttribute
- @SessionAttribute
- @ResponseBody
- @RequestBody
- 獲取參數
- 攔截器
- 定義攔截器
- 配置攔截器
- SpringData
- 簡介
- SpringDataJpa
- 簡介
- 核心類
- Persistence
- EntityManagerFactory
- Entity
- 基本注解
- 關聯關系注解
- @JoinColumn
- @OneToOne
- EntityManager
- EntityTransaction
- Query
- 基礎查詢方法
- Repository
- CrudRepository
- PagingAndSortingRepository
- JpaRepository
- SimpleJpaRepository
- Jpql
- 簡介
- 操作
- maven
- 簡介
- 入門案例1
- 環境搭建
- 實體類
- 測試
- 入門案例2
- pom
- applicationContext.xml
- pojo
- dao
- test
- Springboot
- 入門案例
- pom
- application.yml
- 實體類
- dao
- test
- SpringDataRedis
- 簡介
- application.yml
- 使用
- SpringDataMongoDB
- 簡介
- mongodb-driver
- SpringDataMongoDB
- SpringScurity
- BCrypt
- 常見認證機制
- HTTP Base Auth
- Cookie Auth
- OAuth
- Token Auth
- JWT
- 簡介
- JJWT
- 簡介
- 入門案例
- pom
- 生成token
- 校驗token
- 自定義claims
- SpringCache
- 簡介
- ElasticSearch
- 簡介
- mybatis
- 簡介
- 基礎
- 核心類
- SqlSessionFactory
- SqlSession
- Executor
- MappedStatement
- 配置文件
- db.properties
- sqlMapConfig.xml
- Mapper.xml
- 關聯查詢
- 一對一
- resultType
- resultMap
- 一對多
- resultMap
- 動態sql
- if
- where
- sql片段
- foreach
- 緩存
- 簡介
- 一級緩存
- 二級緩存
- 增刪改查
- select
- insert
- update
- delete
- params
- provider
- 入門案例
- xml
- sqlMapConfig
- User
- xml方式
- UserMapper.xml
- test
- 代理方式(JDK)
- 規范
- UserMapper.xml
- UserMapper.class
- test
- springboot
- pom
- application.yml
- Person
- mapper
- App
- test
- Http
- HttpClient
- pom
- request
- 連接池
- RestTemplate
- 隊列
- ActiveMQ
- pom
- application.yml
- QueueConfig
- 生產者
- 消費者
- RabbitMQ
- 網絡編程
- netty
- 簡介
- 核心組件
- Channel
- EventLoop
- ChannelHandler
- 常用子類
- ChannelPipeline
- ChannelConfig
- Future
- ChannelFuture
- ByteBuf
- 簡介
- 案例
- Echo服務器
- EchoServer
- EchoServerHandler
- EchoClient
- EchoClientHandler
- Websocket
- pom
- Server
- WebsocketChannelInitalizer
- TextWebsocketFrameHandler
- Protobuf
- Server
- ProtobufChannelInitalizer
- ProtobufServerHandler
- lombok
- Springboot集成lombok
- 日志
- 定時任務
- cron表達式
- Spring自帶
- 任務
- 開啟
- Quartz
- 簡介
- pom
- Application
- config
- job
- controller
- Junit
- Spring整合Junit
- 爬蟲
- Jsoup
- 簡介
- 解析
- 解析URL
- 解析字符串
- 解析文件
- Document
- Element
- Selector
- WebMagic
- Protobuf
- 環境搭建
- Json
- Springboot
- 簡介
- 配置
- pom
- 常用注解
- RestController
- 整合
- JdbcTemplate
- pom
- application.properties
- UserService
- Mybatis
- pom
- application.properties
- UserMapper
- App
- Springjpa
- pom
- Person
- PersonDao
- App
- test
- 多數據源
- application.properties
- Lombok
- 安裝
- 依賴
- 實體類
- 常用注解
- EhCache
- 依賴
- chcache.xml
- UserMapper
- 清除緩存
- 開啟緩存
- 熱部署
- 簡介
- 依賴
- 監控管理
- Actuator
- 日志
- log4j
- pom
- log4j.properties
- test
- Aop方式
- pom
- WebLogAspect
- lombok
- application.yml
- logbok-spring.xml
- pom
- 使用
- 事務
- 簡介
- 分布式事務
- DBConfig
- 性能調優
- 組件自動掃描
- Servlet容器更換為Undernow
- Springboot jvm參數調優
- 全局處理
- 全局異常處理
- 攔截器
- 數據庫連接池
- 打包發布
- jar
- war
- 案例
- 入門案例
- SpringCloud
- 簡介
- Eureka
- 服務端
- pom
- application.yml
- EurekaApplication
- 高可用
- 用戶認證
- 客戶端
- pom
- application.yml
- EurekaClientApplication
- Ribbon
- pom
- application.yml
- Application
- RibbonConfig
- RibbonService
- RibbonController
- Feign
- pom
- application.yml
- Application
- config
- dao
- service
- controller
- Hystrix
- Sidecar
- pom
- application.yml
- Application
- Zuul
- pom
- application.yml
- Application
- 過濾器
- 類型
- 禁用過濾器
- 容錯與回退
- 高可用