Py小玩具-简易截图

  • 有时没开微信或QQ的时候想立即截个图啥的挺蛋疼的, 故自己捣鼓一个
  • 简单干净快速, 无界面, 运行即截图
  • 运行easyshot.py直接开启区域截图, 截完图自动保存到桌面, 然后退出进程
  • 截图的时候框选完区域后可以双击Enter完成截图, 中途可以按Esc放弃截图
阅读更多

Jetbrains Clion官方支持了Stm32的项目搭建, 说下感想

  • 得知Clion 2019.1之后的版本官方直接支持Stm32项目的创建, 遂怀揣激动之心准备一试…
  • 照着别人的教程, 一顿操作猛如虎, 一会捣鼓OpenOCD, 一会捣鼓arm-none-eabi-gcc… …说实话, 过程挺麻烦的, 会遇到一些坑
  • 手头上只有一块老stm32的核心板还有一个Jlink, 烧写调试也只能靠Jlink. 结果捣鼓了老半天, Jlink这块没办法打通, 即没办法用Jlink愉快地Debug, 遂放弃
阅读更多

Redis源码阅读-事件模型ae

  • src/ae.c
  • src/ae.c下的void aeMain(aeEventLoop *eventLoop)函数; 推荐从这个函数开始阅读
  • 我们着重看下aeMain里面aeProcessEvents(eventLoop, AE_ALL_EVENTS)做了什么; 这里我们留意一下里面的aeApiPoll函数, 该函数用于获取可执行的事件, 获取之后在下面的for循环中处理事件, 执行事件处理器 fe->rfileProc(eventLoop,fd,fe->clientData,mask)
  • aeApiPoll函数是ae模块提供的一个接口, 在ae_epoll.c ae_kqueue.c ae_select.c ae_evport.c都做了相应的具体实现, 也是所谓IO多路复用各平台的具体实现, 目的为了兼容不同平台
  • 备注: 也许你会好奇为啥IO多路复用没有iocp的实现难道windows就没人权吗, 其实redis的官方版本是不支持windows的, windows版本在https://github.com/microsoftarchive/redis由微软团队自己维护, 里面就有ae_wsiocp.ciocp版的实现
  • 通常说的redis的reactor模型(反应堆)其实说的就是aeMain的大循环中aeProcessEvents做的那些事情: 监听网络连接的FD的文件事件---> 获取事件---> 执行事件回调
  • 剩下具体细节不多赘述, 顺着思路看源码即可
阅读更多