Linuxb的秘密花园

本人热衷于技术分享技术交流,欢迎Geek精神的技术伙伴一起学习交流

Async特性的语法糖下

本文现在这个时间点写貌似必要不大,因为内容比较基础,不过介于如果掌握不准确可能在一些bug面前束手无策,遂当作备忘录好了。今天就讨论一个node里面很简单却又是很值得关注的话题--异步回调,相信很多小伙伴都熟知著名的回调地狱,社区这几年也是人才辈出,产出无数种优雅解决地狱的方案,最后ECMA一声号...

2017-03-07 18:32:57

阅读数 599

评论数 0

Go与并发模型

最近,Google的Golang荣获2016年度编程语言,作为一个谷粉,我理应写一篇文章以表祝贺,正好碰上最近在弄一个支持IO无锁并发的脚本引擎,参考了一些Go内部的设计思想,真想不到Go的萌萌的外表下竟隐藏着一颗如此强大的内心,本文主要的分析焦点就是做到更干净的并发编程,让并发编程的代码更加优雅~

2017-01-11 17:12:19

阅读数 3429

评论数 0

神之门V8-----Event loop的舞池盛宴(3)

上一篇文章中我献上了一段神奇的代码,并给出了运行结果,也分析了setTimeout这个函数,在本文,我还会带领大家继续分析setImmediate函数以及nextTick原理以及MakeCallback函数跟contextify的问题。OK,跟着独操引擎的男人继续我们的代码之旅吧~~setImme...

2016-12-01 17:59:34

阅读数 1124

评论数 1

神之门V8-----Event loop的舞池盛宴(2)

在上一篇文章中,我们分析了node的EventEmitter与EventLoop的关系,结论就是它们真的没多大关系,代码表现出异步只是emit函数调用的时机被我们手动设定在eventloop里面。OK,跟着独操引擎的男人继续我们的代码之旅~JS对象与C++ Runtime 代码这一部分涉及到V8...

2016-11-30 16:32:50

阅读数 1713

评论数 0

神之门V8-----Event loop的舞池盛宴(1)

故事的开始由于各种原因,没有继续写V8引擎系列文章有相当长的一段时间了,今天本来不打算写解剖node的文章的,但一个contextify被扰乱的native问题实在引起了我对它的兴趣,好吧,我又重新回归了这个神奇的世界,看了一些文档资料,只能有个大概的印象,然而作为一个独操引擎的男人,既然入了坑,...

2016-11-29 21:28:18

阅读数 707

评论数 0

十指相扣:陪binderIPC度过的漫长岁月(3)

现在该分析一下最初的binder进程是怎么产生的了,首先sm是一个linux内核的守护进程,我们要知道她的来路,还是先看看她的入口函数:int main(int argc, char **argv) { //这个结构体存放binder进程的状态信息(binder设备信息) st...

2016-02-04 00:03:11

阅读数 552

评论数 0

十指相扣:陪binderIPC度过的漫长岁月(2)

上一篇文章中,我们分析了ipcbinder框架的基本原理,简要的说就是我们client端的binder向BD写入数据,然后BD再向server端传递数据,那么问题来了,这中间是不是发生了两次数据拷贝呢?这个问题比较深刻,然而事实也比较深刻,只有一次数据拷贝,这是google对binder做了一次优...

2016-02-03 17:54:21

阅读数 502

评论数 0

十指相扣:陪binderIPC度过的漫长岁月(1)

Android中的ipc一直被称作系统设计中一个比较复杂的地方,近来特意研究了一下ipc,感受了一下这个伟大的设计。说到ipc,肯定不会离开binder,binder是什么呢,它的中文名叫粘合剂,两个不同内存空间的进程能够得到进行通信,必然需要一样东西将两者进行“粘合”,其实我们在activity...

2016-02-03 14:44:28

阅读数 405

评论数 0

神之门V8(2):GC的混乱之治(下)

在上一篇文章中,分析了v8heap中新生带的垃圾回收算法,本文就主要介绍老生带的回收算法,本人自己用C++模拟了一下GC的在老生带的回收算法,接下来会结合代码以及进行分析,由于是我自己写的代码,我肯定会有属于自己的思想在里面,所以个别的细节可能跟V8GC真实的状态有所差异,但总体的思想还是基本体现...

2015-11-28 22:33:22

阅读数 1760

评论数 0

神之门V8(2):GC的混乱之治(上)

前面一篇文章介绍了v8中对象是怎么的smart,在这里,我们的对象指针就会变得更smart了,先看看对象在heap中是怎么分类管理的, 下面是V8heap的结构图:对jvm有过了解的伙伴就会发现这玩意很像jvm中的heap结构,而且jdk8中删除了持久带后总体的结构更像了,不错,v8堆正是参考了...

2015-11-28 02:21:19

阅读数 1071

评论数 0

神之门V8(1):解密handle<T>

我们知道js跟php,java这些都可以说是托管于其他本地程序的语言,它们需要自己的一套运行环境,比如java的jvm,php有zend引擎,也有hhvm,当然本场主角v8引擎也给了js同样的东西,v8引擎号称天下第一快,背后肯定隐藏着许多不为人知的秘密,待我来一一探究,关于v8的编译优化,内联代...

2015-11-27 22:42:07

阅读数 1380

评论数 0

旋转华尔兹,nodejs的背后

在使用nodejs的时候,会感觉写的很痛快,尤其是对于处理高并发的请求时,密集的IO操作,我们可以在代码中用回调链轻松的完成,只需要一个单进程,单线程就能完成频繁请求的分发调度。js能做到这一步让我吃惊,于是决定打造一套属于我的node运行内核,完成对于回调链的驱动,也顺便感受一下nodejs的设...

2015-11-26 13:16:48

阅读数 360

评论数 0

内核艺术系列:绚丽整个php的zend(1)

让我们的故事从一条最简单的php代码开始:$obj = 6;这条代码估计大家再熟悉不过了,不就是写一个变量再给它赋值为6么,然而,你看到的只是echo出来的表象,我既然要说zend引擎的设计,那就得越过php这件华丽的外衣,只是最底层的内核,看看它背着我们到底干了什么。php其实就是一个c程序,所...

2015-11-26 00:33:16

阅读数 660

评论数 0

风骚裙摆--最后的内存池

上一篇文章我介绍过了对象池,后来想了一下,发现就这么用模板以及一些raii技法,工厂模式实现一个对象管理接口似乎有点局限性,首先它很难做到单例模式,因为一个程序总不能来来去去就创建那么一种对象吧,但单例的情况下,这个对象池的实例只能被构造一次,也就是说,只能填充一次模板实体,好咯,既然有局限性,那...

2015-10-31 03:17:03

阅读数 5217

评论数 0

进击的对象池

前面有一篇文章说过在代码中如果要高频地创建一个对象(比如一些及时通信的socket等等)怎么通过raii技法进行内存优化,而且这些对象在程序中的生存周期比较短,搞几下就没用了,尤其是一些线程之类,如果要完成什么阻塞任务,虽然它就搞那么几秒,但放在主线程就是会卡住界面,让用户体验很差,然而线程的开销...

2015-10-21 17:52:37

阅读数 387

评论数 2

借刀杀对象--Raii技法(C++版)

我们都知道C++有一点很不爽的地方就是内存管理需要手动,像我有时候使用多了像C#,java之类托管语言(C#在clr中可以通过gc进行垃圾回收,java在jvm中也有相应的gc回收),再写C++就会有点不爽了,甚至会疑神疑鬼的,写完一段代码就会想想 天哪,我的代码有没有哪里忘了释放内存啊,有没有内...

2015-10-19 18:50:30

阅读数 413

评论数 0

JVM之旅--GC探秘

说到GC,首先要说到GC实现一个很重要的角色,那就是jvm(java虚拟机),jvm作为java的一个托管平台在java代码的运行过程中提供了诸多的性能优化,确保代码的高效率执行,至于怎么优化就暂且不关注这个问题,我们先来看看oracle对于jvm的架构说明:在这个图里面我们可以看到,我们用jav...

2015-10-02 00:50:17

阅读数 573

评论数 2

Reference VS Pointer

首先我们来看看java的引用,java的引用不同于C指针,它并不可以指向它想指向的任何地方,比如int,char等基类型都是不允许的,java也是类型安全的,并不允许re-interpret cast操作,在c++或者c指针就会允许这个操作,直接对内存进行re-interpret,java跟c++...

2015-09-22 18:50:02

阅读数 458

评论数 0

约战Angular中Promise(2)

上回说到回调金字塔会形成一个then()的调用链,以及相应在pending的等待队列产生变化,现在我们就来详细分析。我们首先来看看我们在promise中定义的回调函数是怎样被执行的,先看看call stack:看到最底层的三个函数我们应该觉得非常熟悉,这不就是ng的事件轮询么(详情见本人的ng事件...

2015-09-18 17:36:52

阅读数 439

评论数 0

约战Angular中Promise(1)

在angular出现之前,web开发中前端跟后台的交互采用xhr的ajax技术,即xhr的异步请求,异步肯定就不能阻塞当前的线程,所以这个时候回调就非常重要,在commonJS中曾定义过promise规范,即一个异步请求函数把一个耗时操作请求提交出去,可以马上获得返回值,这个返回值就是传说中的pr...

2015-09-18 02:47:59

阅读数 651

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭