没想到Lua的作者理论水平这么高,这篇文章读的我顿生高屋建瓴之感.云风分享了一篇中译:http://www.codingnow.com/2000/download/The%20Implementation%20of%20Lua5.0.pdf 全篇的主题有4个:1.基于寄存器的虚拟机:2.用于将table作为数组使用的新算法:3.闭包的实现:4.以及协程.第二点我关注不多,会写的比较简略. 1 简介 简介主要就是说,我们搞Lua嘛,就是一个实验室出来的产品,没想到今天在工业界特别是游戏界红得发紫,…
6 线程和协程 读完这篇文章我才意识到python的协程到底缺了什么,这个就是coroutine和semi-coroutine的区别了.区别就是,semi-coroutine只能返回(yield)到调用者所在位置,不能将控制权交到任意其他协程上去.具有这个特征的,都是semi-coroutine. Lua实现协程的时候,充分利用了其C栈和Lua栈.进行协程调用的时候,解释器会在C栈上会进行一次递归调用,然后协程自身的栈在新建立的Lua栈里消长.当一个协程结束的时候,解释器会退出,返回调用者(即上…
为了了解 skynet.call 的调用过程,需要先看看 skynet的队列是如何把包分到不同工作线程的.看下图 查看 global_queue 的skynet_globalmq_push和skynet_globamq_pop,很容易可以找到两个关键的函数: skyent_context_push 和 skynet_context_message_dispatch 先来看出口,skynet_context_message_dispatch.在skynet的启动函数中,我们已经知道skynet_s…
首先看skynet的启动,函数入口在 skynet_main.c 的main(),其中最重要的是: skynet_start(&config); 在skynet_start中做了两个启动: //启动了snlau服务,然后加载launch服务 bootstrap(ctx, config->bootstrap); //创建monitor,timer,socket,worker线程等 start(config->thread); 下面我们逐步跟进函数 static void bootstra…
这本书非常的好,看完后,感触挺深,总结纪录一下,针对ios开发的备忘: 注:分类和原著有些不同,自己总结学习用的,仅供参考.   系统篇: 了解oc起源:继承c,由Smalltalk演化而来.动态语言,运行期决.需要熟悉c语言.      6.  理解变量属性 a.原子性 b.读写 c.内存管理语义 d.方法名 .尽量少用atomic .注意使用copy属性避免数据安全问题. 还有oc动态语言特性,硬编码问题.类内部不要直接访问变量.      7.  还是重复了上一篇:在对象内部尽量直接访问实…
<C# 6.0 本质论> 阅读笔记   阅读笔记不是讲述这本书的内容,只是提取了其中一部分我认为比较重要或者还没有掌握的知识,所以如果有错误或者模糊之处,请指正,谢谢! 对于C# 6.0才有的新语法基本都有标记,开发的时候要注意使用,以免造成不兼容现象. 一.第一章 1.控制台中可以使用,其会在每一次输入的时候获取键盘输入的值.可以用Console.ReadKey().KeyChar获取输入的字符. void UseReadKey() { var a = Console.ReadKey().K…
Linux 0.11源码阅读笔记-文件管理 文件系统 生磁盘 未安装文件系统的磁盘称之为生磁盘,生磁盘也可以作为文件读写,linux中一切皆文件. 磁盘分区 生磁盘可以被分区,分区中可以安装文件系统,常见的文件系统有fat32.ext2.ext4等.分区后的磁盘结构布局如下图,其中主引导扇区记录了分区信息,并且包含引导代码可用于引导操作系统. 文件系统 分区内可以安装指定文件系统,同一磁盘多个分区文件系统不要求相同.MINIX文件系统布局如下: 引导块:若作为引导分区,将存放操作系统的引导程序代…
Linux 0.11源码阅读笔记-中断过程 是什么中断 中断发生时,计算机会停止当前运行的程序,转而执行中断处理程序,然后再返回原被中断的程序继续运行.中断包括硬件中断和软件中断,硬中断是由外设自动产生的,软中断是程序通过int指令主动调用.中断产生时,会有一个中断号,根据中断号可在中断向量表中选择对应的中断处理程序执行. 中断在linux当中非常重要,是用户态代码与和心态代码相互切换运行的桥梁.进程调度依赖于时钟中断进入内核,系统调用也是依赖int 80软中断进入内核执行. 中断处理过程 以i…
Linux 0.11源码阅读笔记-总览 阅读源码的目的 加深对Linux操作系统的了解,了解Linux操作系统基本架构,熟悉进程管理.内存管理等主要模块知识. 通过阅读教复杂的代码,锻炼自己复杂项目代码的阅读能力.对于一般简短的程序,可以从main函数逐行阅读理解:对于复杂的项目,只能在了解源码主要结构的情况下,抓住某个具体的功能进行阅读. 选择较早版本的理由 Linux较新版本代码在百万行以上,而0.11版本内核不超过2万行代码.比较新版本的Linux内核源码太多且内容庞杂,自身能力不足,没有…
目录 Mybatis--Source阅读笔记 兵马未动,日志先行 异常 缓存 回收机制适配器 回收机制优化缓存 事务缓存 调试型缓存--日志缓存 解析 类型处理器 IO VFS Resource ResolverUtil 数据源 unpooledDataSource PooledDataSource JndiDataSource 事务 反射 对象工厂 调用者 wrapper session DefaultSqlSessionFactory DefaultSqlSession Configurat…