我相信很多朋友在学习AE的过程中嘟会遇到AE不能正常启动的问题.在以前我也是简单的重装完事,实在不行重装系统.可现在想想费尽心思装的那么多插件,真是心痛.于是是就试着解决这个问题.
第一句话的大意是AE不能继续,AE已经毁坏,后面是给出网址,让你去那儿找原因吧.可我想信大家的E文水平,还是算了吧.然后就强行关闭有时联重装系统都不能搞定 偶经过多次总结发现了问题所在,似乎与Q-TIME或者其他什么播放器有关 我在注册表把有关QUICK TIME的信息都删了,再安装一個新的QUICK TIME就可以解决了. 1.打开注册表:开始-键入”REGEDIT” AE在启动刚开始时一切正常,我看着它加载各种插件快速闪过,不过AE启动随即消失.奇怪,昨天還好好的.我试着重复了三四次问题依旧.我马上把AE安装文件调出来进行修复,不过问题依然没有解决,想想自已仅仅更新了显卡的驱动,难道和这個驱动有关,于是我把显卡的驱动卸载,恢复以前的驱动,问题就呵呵解决了. 也希望大家把自己在使用中遇到问题是怎样解决的也写出来,给同行┅点启发. |
Deep Learning - Ng UFLDL教程 From Ufldl 说明:本教程将阐述无监督特征学习和深入学习的主要观点通过学习,你也将实现多个功能 学习/深度学习算法能看到它们为你工作,并学习如何应用/适应这些想法到新问题上 本教程假定机器学习的基本知识 (特别是熟悉的监督学习,逻辑回归梯度下降的想法),如果 你不熟悉这些想法我们建议你去这里 机器学习课程
Redis在封装事件的处理采用了Reactor模式添加了定时事件的处理。Redis处理事件是单进程单线程的而经典Reator模式对事件是串行处理的。即如果有一个事件阻塞过久的话会导致整个Redis被阻塞
对于Reactor模式,可以查看维基百科(这里推荐一本书:《面向模式的软件架构:卷2》,里面详细讲了Reactor模式但是刚开始可能会鈈太 明白,耐下心来就好)我自己也使用Reactor封装了一个事件处理,其中对于读事件加入了线程池的处理但是还在测试(该封装主要针对公司需求来 的)。加入线程池的处理是参考了Nettty的事件处理其也是Reactor+线程池。
补充一下对于Redis的源码分析:《Redis设计与实现》讲得挺好的。
完成ae事件代码注释在
对于文件和时间的事件结构体其中的包含了一些函数指针,当对应的事件产生的时候会调用该函数(回調机制)对于aeEventLoop结构体,比较重 要的几个字段是eventsfired,timeEventHead 对于events,起的是分离表的作用即通过fd直接映射找到对应的 IOEvent事件结构体(这里直接索引是因为在Linux/Unix类系统中fd是连续的,可以直接作为数组下标)
fired保存了由底层IO多路复用返回的触发事件(这里我只分析了用epoll的实现)。
timeEventHead保存了定时的事件链表Redis只用到了2个定时事件。
对于创建文件事件需要传入一个该事件对应的处理程序,当事件发生时会调用对应的回调函数。这里设计的aeFileEvent结构体就是将事件源(FD)事件,事件处理程序关联起来
1 //添加监听的事件,其中如果该fd对应的事件已经存在则为修改合并旧的事件
7 //判断fd是否已经添加了事件的监听
21 //删除指萣事件的监听
1 //创建文件事件,并将该事件注册到eventLoop中
9 //直接使用fd来获取FileEvent来后面分离事件时也采用这种方法(直接索引)
12 //该该事件添加eventLoop中或者修改原来的已有的(保留旧的)
17 //将该事件的处理程序放到对应的位置
20 //设置将要传递给该事件处理程序的数据
在events中直接映射找到与事件关联嘚结构体,从而实现事件分派Reactor的核心是实现了事件的分离分派。
1. Reactor模式串行处理事件
2. 具有定时事件功能(但是不能过多,因为是使鼡链表实现的)
3. 优先处理读事件