事件

Netty5 Write和Flush事件处理过程_源码讲解

◇◆丶佛笑我妖孽 提交于 2019-11-29 15:29:43
欢迎大家关注我的微博 http://weibo.com/hotbain 会将发布的开源项目技术贴通过微博通知大家,希望大家能够互勉共进!谢谢!也很希望能够得到大家对我博文的反馈,写出更高质量的文章!! write处理流程 业务逻辑handler调用context的write方法,将欲发送的数据发送到带发送缓冲区中. 看看write流程的触发代码(就是在一个业务handler中调用一下write方法即可): public class DiscardServerHandler extends ChannelHandlerAdapter { @Override public void channelRead(final ChannelHandlerContext ctx,final Object msg) throws Exception { ByteBuf bufferBuf =(ByteBuf)msg; System.out.println(new String(bufferBuf.array())); ctx.channel().write(bufferBuf); } 追踪一下,ctx.channel().write(bufferBuf)的实现(假设out pipeline中没有其他的encode handler了,),我们会看到,最终会由AbstractUnsafe

【Qt笔记】事件

别来无恙 提交于 2019-11-29 09:08:27
事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。 事件也就是我们通常说的“事件驱动(event drive)”程序设计的基础概念。事件的出现,使得程序代码不会按照原始的线性顺序执行。想想看,从最初的 C 语言开始,我们的程序就是以一种线性的顺序执行代码:这一条语句执行之后,开始执行下一条语句;这一个函数执行过后,开始执行下一个函数。这种类似“批处理”的程序设计风格显然不适合于处理复杂的用户交互。我们来想象一下用户交互的情景:我们设计了一堆功能放在界面上,用户点击了“打开文件”,于是开始执行打开文件的操作;用户点击了“保存文件”,于是开始执行保存文件的操作。我们不知道用户究竟想进行什么操作,因此也就不能预测接下来将会调用哪一个函数。如果我们设计了一个“文件另存为”的操作,如果用户不点击,这个操作将永远不会被调用。这就是所谓的“事件驱动”,我们的程序的执行顺序不再是线性的,而是由一个个事件驱动着程序继续执行。没有事件,程序将阻塞在那里,不执行任何代码。 在 Qt 中,事件的概念似乎同信号槽类似。的确如此,一般来说,使用 Qt 组件时,我们并不会把主要精力放在事件上。因为在 Qt 中

ExtJS4.2学习 php版(八)

自古美人都是妖i 提交于 2019-11-28 14:33:42
最近在使用extjs4.2 发现要使用Ext.util.Observable这个类和以前不同 extjs4.2的用法 使用extend时 Ext.define("children",{ extend: 'Ext.util.Observable' constructor:function(config); this.callParent(config); } }); 使用mixins时 Ext.define("children",{ mixins: { observable: 'Ext.util.Observable' }, constructor:function(config){ this.mixins.observable.constructor.call(this, config); } }); fireEvent 触发事件函数 ext先用addEvents添加事件 再用on方法监听事件 在用fireEvents加载监听 Ext.define("children",{ mixins: { observable: 'Ext.util.Observable' }, constructor:function(config){ this.mixins.observable.constructor.call(this, config); console.log(this

mysql备份还原(视图、存储过程)

雨燕双飞 提交于 2019-11-27 17:27:39
mysql备份还原(视图、存储过程) 最近在工作的时候,要将原来在本机开发的 MySQL存储过程迁往另一Linux操作系统下的MySQL数据库,因为表结构等已经在目标数据库中存在了,不想直接拷贝数据库过去,所以用到了MySQL的存储过程导出和导入,经上网搜索发现用Mysqldump工具可以实现,具体用法为: [root @localhost bin]# mysqldump -uroot -p -hlocalhost -P3306 -n -d -t -R DBName > procedure_name.sql 参数说明: -n: --no-create-db -d: --no-data -t: --no-create-info -R: --routines Dump stored routines (functions and procedures) Mysqldump 是客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建活装载表的 SQL 语句 : 主要参数介绍: 1.连接选项 -u,--user=name -p,--password=name -h,--host=name -P,--port=# 2.输出内容选项 --add-drop-database --add-drop-table -n;--no-create-db -d;--no-data -t;-

JavaFX学习之道:JavaFX之TableView

我怕爱的太早我们不能终老 提交于 2019-11-27 14:08:30
TableView表 TableColumn列 构建一个表主要有TableView,TableColumn,ObservableList,Bean。 添加列table.getColumns().addAll(firstNameCol, lastNameCol, emailCol); ObservableList里面是存放的数据 table.setItems(observableList);添加数据 observableList里面一般是存放的Bean,列与Bean之间建立联系,从而获取值。 列与Bean之间建立联系: emailCol.setCellValueFactory(new PropertyValueFactory<Person, String>("email"));通过cell值工厂建立与Bean的联系。它这里并不需要知道你是传了什么Bean,它只需要通过“email”反射成getEmail()方法去Bean里面获得值,所以Bean属性定义的名字不需要与它相同,只需要有getEmail()方法。 Java代码 firstNameCol.setCellValueFactory( new Callback<TableColumn.CellDataFeatures<Person, String>, ObservableValue<String>>() { @Override

在Laravel中使用事件记录SQL查询到日志

时间秒杀一切 提交于 2019-11-27 13:49:05
在本文中,我们将讨论如何处理Laravel中的查询日志记录。 假设你在阅读本文时已经非常熟悉Laravel。 Laravel可以选择将所有在当前请求中运行的查询记录在内存中。 有一些方法可用于此。 你可以查看 官方文档之数据库 。 查询记录 如果,你想要将日志文件保存在 storage/logs 目录中。需要更新: app/Providers/AppServiceProvider.php 里的 boot() 函数。 <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use DB; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { // 新增代码 DB::listen(function($query) { Log::info( $query->sql, $query->bindings, $query->time ); }); } /** * Register any application services. * * @return void */ public