nodejs之require单次加载
    
            
摘要:【nodejs之require单次加载】 require 不会重复加载模块,也就是说无论调用多少次 require,获得的模块都是同一个。 我们在 getmodule.js 的基础上稍作修改: //loadmodule.js var hello1 = require('./module'); hel
        
阅读全文
摘要:【nodejs之supervisor】 如果你有 PHP 开发经验,会习惯在修改 PHP 脚本后直接刷新浏览器以观察结果,而你 在开发 Node.js 实现的 HTTP 应用时会发现,无论你修改了代码的哪一部份,都必须终止 Node.js 再重新运行才会奏效。这是因为 Node.js 只有在第一次引
        
阅读全文
摘要:【Mac之DTerm】 DTerm是一个Mac下的好用的终端。相比Mac自带的Terminal,有以下强大之处: 1、随时通过Command+Shit+Enter唤起窗口,方便。 2、DTerm在唤醒时会按当前工作目录设置好路径,方便。 3、此外炫酷的外型也是DTerm的一大亮点,界面爽。...
        
阅读全文
摘要:【进程优先级&线程优先级】 线程的优先级越高那么就可以分占相对多的CPU时间片。每个进程都有相应的优先级,线程优先级决定它何时运行和占用CPU时间。最终的优先级共分32级是从0到31的数值称为 基本优先级别 。 OS调度的是线程,真正具有优先级的是线程,而进程优先级是作为一个优先级Class存在。 进程优先级: priorityclass 标志 优先级值 idle(低) I D L E _ P R I O R I T Y _ C L A S S 4 Below(低于标准) B E L O W ...
        
阅读全文
摘要:【start&run】 使用run/r或者start命令,GDB建立子进程来运行被调试程序。run和start命令稍有不同,即run仅仅加载程序然后运行,而start会在程序的入口函数(main)设置一个临时断点,程序运行到那里就会暂停,临时断点也随即被清除。另外run和start命令后面都可以加上传递给被调试程序的参数,若不加参数则使用GDB启动时传递的参数或者使用set args命令设置的参数。[设置断点] b 12 表示在12行设置断点 :这里的断点设置在这个项目的主程序文件里面在,如果要在其他文件设置断点,需要加上其他文件名称例如 : b uploadmgr.c:upload 
        
阅读全文
摘要:【shell之条件测试】 1、条件测试有2种,通常使用[]会比较方便快捷 2、文件状态测试 例: 3、逻辑操作符 例: 4、字符串测试 例: 5、数值测试 例:
        
阅读全文
摘要:【plutil检查plist语法】 plutil是从Mac OX10.2开始系统自带的一个工具,用于检测plist语法以及将plist转换成xml、binary、json用。 plutil用法如下:
        
阅读全文
摘要:【极客公园之李彦宏讲话要点】 1、大公司效率低下、推进任务难、创新低下是全球性难题。百度有以下2个方面可以让人才脱颖而出: 1)Hackathon编程马拉松 点子实在是太多了,没有任何人能够说某个点的好或者不好。譬如,yahoo当初不认为google的搜索方法好,于是才有了google,而google当初不认为facebook有技术含量,于是才有了facebook,当初腾讯以6位数天朝币贱卖都没人要,于是有了今天的600亿刀神话。So,没有任何人能说某个创意点子是好或是坏。 李彦宏深思后,发现光口头扯各种点子是无法评判的,但是一个可用的产品,我们就可以评判它是好还是坏了。So...
        
阅读全文
摘要:【汇编伪指令】 伪指令语句是用于指示汇编程序如何汇编源程序,所以这种语句又叫命令语句。例如源程序中的伪指令语句告诉汇编程序:该源程序如何分段,有哪些逻辑段在程序段中哪些是当前段,它们分别由哪个段寄存器指向;定义了哪些数据,存储单元是如何分配的等等。伪指令语句除定义的具体数据要生成目标代码外,其他均没有对应的目标代码。伪指令语句的这些命令功能是由汇编程序在汇编源程序时,通过执行一段程序来完成的,而不是在运行目标程序时实现的。 伪指令没有指令动作,旧像高级语言的编译预处理一样,他们是指导汇编过程的,而不是参与汇编代码生成的。 伪指令没有对应的机器代码,它不像指令那样由CPU来执行,它 是由M...
        
阅读全文
摘要:【ARM处理器寻址方式】 1、寄存器寻址 2、寄存器位移寻址 2.1寄存器移位寻址 2.1寄存器移位寻址 3、寄存器间接寻址 4、 基址寻址 5、多寄存器寻址 question:LD和ST的方向是不是搞反了? 5.1 多寄存器指令解析 6 栈寻址 6.1 栈寻...
        
阅读全文
摘要:【ARM寄存器简介】 1、在任意时刻,可见的寄存器包括15个通用寄存器(R0-R14)、一个或两个状态寄存器、和PC(R15)。 2、ARM共有7种工作模式,通常来说,应用级Coder看成Usr和Sys两级就行了。 3、寄存器分类: 1)R0-R7,未备份寄存器,同一模式下共用同一物理寄存器。...
        
阅读全文
摘要:【exec详解】 参考:http://baike.baidu.com/view/3292080.htm execl:http://baike.baidu.com/view/1745411.htm 复习一下。
        
阅读全文
摘要:【x86之寄存器详解】 1、在32位x86下,CS(代码段寄存器)、SS(栈寄存器)、DS(数据寄存器)、ES(附加寄存器)依旧是16位。在实模式下(16位模式),这些寄存器表示实际的地址,在保护模式下(32位模式),这些寄存器表示LDT中的偏移。 LDTR的装载:LDTR由程序员可见的16位的选择器和程序员不可见的8字节描述符高速缓存组成。在初始化或任务切换过程中,把描述符对应任务LDT的选择器装入LDTR可见部分,然后从GDT中取出LDT描述符,填充在LDTR不可见的高速缓存中。 2、其它寄存器 3、累加器 4、指示器 4、标志寄存器EFLAGS
        
阅读全文
摘要:【x86之描述符表寄存器】 1、x86有4个描述符表寄存器 1)全局描述符表寄存器(GDTR):32(基址) + 16(边界) 位 2)中断描述符表寄存器(IDTR):32(基址) + 16(边界) 位 3)局部描述符表寄存器(LDTR):16(选择器) + 64 (16(属性)+32(基址)+16(边界))位 4)任务寄存器(TR):16(选择器) + 64 (16(属性)+32(基址)+16(边界))位 注:上图LDT、TR寄存器字段分配错误。对于每一个段,边界字段是20bit,1MB。 2、GDT和IDT 3、LDT和TSS
        
阅读全文
摘要:【x86之段描述符】 1、在保护模式下,把有关一个段的信息,即段基址、限长、类型、访问权限及其它属性信息放在一个8字节长的数据结构中,这种数据结构称为段描述符,简称描述符。 2、为了查找和识别,把系统中的描述符按线性表的形式来组织,即构成描述符表。描述符表由操作系统建议,并由操作系统维护。有三种类型的描述符表: 1)全局描述符表(Global Descriptor Table, GDT):GDT最大64KB,每个描述符8字节,故最多涵64kb/8=8192个描述符。 2)局部描述符表(Local Descriptor Table, LDT):LDT同GDT。 3)中断描述符表(Inter...
        
阅读全文
摘要:【NodeJS】 1、NodeJS入门教程:http://www.nodebeginner.org/index-zh-cn.html 模块的引入与导出 url的模块 2、NodeJS搭建静态服务器:http://cnodejs.org/topic/4f16442ccae1f4aa27001071 3
        
阅读全文
摘要:【HTTP之Range】 1、什么是Range? 当用户在听一首歌的时候,如果听到一半(网络下载了一半),网络断掉了,用户需要继续听的时候,文件服务器不支持断点的话,则用户需要重新下载这个文件。而Range支持的话,客户端应该记录了之前已经读取的文件范围,网络恢复之后,则向服务器发送读取剩余Range的请求,服务端只需要发送客户端请求的那部分内容,而不用整个文件发送回客户端,以此节省网络带宽。 2、HTTP1.1规范的Range是怎样一个约定呢? 如果Server支持Range,首先就要告诉客户端,咱支持Range,之后客户端才可能发起带Range的请求。这里套用唐僧的一句话,你不说我怎么..
        
阅读全文
摘要:【Know what functions C++ silently writes and calls】 1、如果自己没有声明,编译器就会为类生成一个copy构造函数、 一个copy assignment操作符函数和一个析构函数、default构造函数。所有这些函数是public且是inline。 2、例: 3、惟有这些函数被需要,他们才会被创建出来。 4、copy构造函数、copy assignment操作符函数只是简单地将来源对象每一个成员变量拷贝到目标对象。 5、当类中包含引用变量、常量时,编译器拒绝生成copy构造函数、copy assignment函数,如要需要,需自己手工实现。 ..
        
阅读全文
摘要:【C的一些特性】 1、声明的优先级规则 1)声明中被括号括起来的那部分。 2)后缀操作符: a. 括号()表示这是一个函数 b. 方括号[]表示这是一个数组 3)前缀操作符:星号*表示“指向……的指针” 例: 1)定义一个函数,函数的返回值是一个函数指针,如:int (*func())(); 2)定义一个函数,函数的返回值是一个指向数组的指针,如:int (*func())[]; 3)定义一个数组,数组里的值是函数指针,如:int(*foo[])(); 4)char * const * (*next)(): next是一个指针,它指向一个函数,该函数返回另一个...
        
阅读全文
摘要:【从字符串流中随机选择一个字符串】 解题的核心是在幸存的字符串中挑选,并在过程中不断更新。 你打开文件并保存第一个字符串,此时有了一个备选字符串,并有100%的可能性选中它。保存这个字符串,继续读入下一个字符串,这样就有了2个备选字符串,选中每个的可能性都是50%。选中其中之一并保存,然后丢弃另一个。再读入下一个字符串,按照新字符串的33%原先幸存字符串67%的概率,在两者之间选择一个,然后保存新选中的字符串。【扩展】 如何从字符串流中随机选取1000个字符串。 对于数据流中的前1000个关键字,显然都要放到数组中。 对于数据流中的的第n(n>1000)个关键字,我们知道这个关键字被..
        
阅读全文
摘要:【员工为何辞职】 员工的离职原因林林总总,只有两点最真实: 1、钱,没给到位; 2、心,委屈了。 这些归根到底就一条:干得不爽。 员工临走还费尽心思找靠谱的理由,都是扯淡。 另外,面试的时候,说“我就是来看看是否有更好机会的”会比说“我在现在公司有多不爽”会好的多。说前者,展现出你更美好的一面,让人
        
阅读全文
摘要:【iOS之Unit-Testing】 Unit-testing lets you specify behavior that your code must exhibit to ensure that its functionality remains unchanged as you modify it to, for example, make performance improvements or fix bugs. Aunitof code is the smallest testable component of your code—for example, a method i..
        
阅读全文
摘要:【C++之auto_ptr】 std::auto_ptrstd::auto_ptr 属于 STL,当然在 namespace std 中,包含头文件 #include<memory> 便可以使用。std::auto_ptr 能够方便的管理单个堆内存对象。我们从代码开始分析:void TestAutoPtr() {std::auto_ptr<Simple> my_memory(new Simple(1)); // 创建对象,输出:Simple:1if (my_memory.get()) { // 判断智能指针是否为空my_memory->PrintSomething
        
阅读全文
摘要:【Mac之理解Call&Ret】 1、对于下述代码: 产生的汇编指令是: 2、由上例可以总结出 1)函数返回值使用eax。 3、调用约定 4、调用实例展示 解析如下:
        
阅读全文
摘要:【Mac- i386 Operands and Addressing Modes】 The i386 architecture uses four kinds of instruction operands:Register:Register operands specify that the value stored in the named register is to be used by the operator.Immediate:Immediate operands are constant values specified in assembler code.Direct Me.
        
阅读全文
摘要:【Mac - i386 Registers】Registers Many instructions accept registers as operands. The OS X assembler for Intel i386 processors always uses names beginning with a percent sign (‘%’) for registers, so naming conflicts with identifiers aren’t possible; further, all register names are in lowercase letter.
        
阅读全文
摘要:【What is stabs?】 The name stabs comes from symbol table strings, since the debugging data were originally saved as strings in Unix’s a.out object file’s symbol table. Stabs encodes the information about a program in text strings. Initially quite simple, stabs has evolved over time into a quite
        
阅读全文
摘要:【OC之class与meta-class】 核心规则:类的实例对象的 isa 指向该类;该类的 isa 指向该类的 metaclass。 通俗说法:成员方法记录在class method-list中,类方法记录在meta-class中。即instance-object的信息在class-object中,而class-object的信息在meta-class中。 图示: class 是 instance object 的类类型。当我们向实例对象发送消息(实例方法)时,我们在该实例对象的 class 结构的 methodlists 中去查找响应的函数,如果没找到匹配的响应函数则在该 c...
        
阅读全文
摘要:【Mac之debuging symbol】 1、Overview Adebugging symbolis a symbol generated by the compiler that allows the debugger to map from addresses in machine code to locations in source code. The standard compilers generate debugging symbols using either the Stabs format or the DWARF format (supported in Xcode.
        
阅读全文
摘要:【Executing Mach-O Files】 1、Overview The process of loading and linking a program in OS X mainly involves two entities: the OS X kernel and the dynamic linker. When you execute a program, the kernel creates a process for the program, and loads the program and the dynamic linker shared library, usual.
        
阅读全文
摘要:【Mac之Two-Level Namespace】
        
阅读全文
摘要:【Mac之常用Command】 1、ar - archive utility, be used to operate universery file. 2、otool - be used to analysis objective-c from Mach-O file. 3、libtool - creates either static archive libraries or dynamic shared libraries. You can use thelibtoolcommand to build a static archive library, and you can use t.
        
阅读全文
摘要:【Mac之Binding Symbols】 1、what is binding? 2、The dynamic linker can bind a program at several stages during loading and execution, depending on the options you specify at build time: attention: just-in-time binding is the default value.
        
阅读全文
摘要:【Mac之Linker】 1、static linker static linker is used to compose object file into final file. 2、dynamic linker dynamic linker used to load shared library that the programe based on.
        
阅读全文
摘要:【位置无关代码】 1、起因 2、解决 为了避免这种情况,共享库使用了位置无关代码(PIC:Position Independnet Code), 这是无论被加载到内存中的任何位置都可以正常工作的代码。共享库中的代码通常都是位置无关代码,这样代码可以以 RO 方式映射。数据页仍然带有需要被重定位的指针,但由于数 据页将以 COW 方式映射,因此这里对共享不会有什么损失。
        
阅读全文
摘要:【ABI】 总结:简单来说,ABI是规范,所有的Program按这个规范布置自己的二进制数据,以使得可以被操作系统加载。
        
阅读全文
摘要:【两遍链接】 1、第一遍 2、第二遍 简而方之,第一步扫描获取各个input file的信息,第二步处理将获取到的信息有组织的输出到一个新的文件中。
        
阅读全文
摘要:【链接与加载】 显然,连接与加载的难点在于“重定位”和“符号解析”。
        
阅读全文
摘要:【MacOSX之详细解说Sections】 1、TEXT 要点:代码存储在__text中,常常字符串(字符常量)存储在__cstring中,const常昊存储在__const中,float、double存储在__litera中 2、DATA 要点:__bss未初始化的表态变量、__common未初始化的全局变量。
        
阅读全文
摘要:【Mach-O之Segment初探】 总结:__PAGEZERO用于对齐作用,大小为一页。__TEXT用于存放代码。__DATA用于存放数据。
        
阅读全文
摘要:【情绪控制】 生活中总归会存在着很多正面的事实 和负面的事实。 当我们面临困境,如果再把各种负面的事实之间都建立因果关系时 ,往往就容易变得悲观沮丧(比如我单身 +我穷+我丑);反之当身处顺境之时,如果再把对各种正面的事实都建立因果关系 ,往往又容易变得骄傲自大(比如我满分 +我勤奋+我运气)。 所以古往今来,那些智慧的人往往愿意以无常的态度来看待生活的起起落落,他们会看中事实,会就事论事,但不会轻易去建立因果关系,这样也就控制住了自己的情绪,不会大喜大悲 。反之,那些脆弱的人在被情绪左右的时候,甚至还会主动去寻找相应的事实,结果不是进一步作践自己就是死磕别人。 学习ing。
        
阅读全文
摘要:【平庸与杰出】 最近看到一个如何判断自己是平庸之列的文章,里面的观点是“假设有一个正常的智商的人,加入了你的公司,他在正常情形下工作3~5年,和你的差距是什么?如果没有什么显著差异,那显然被检测者是平庸的”。从某些角度来看,这个说法是对的。但是什么样的人才是“正常的智商的人”,这是个问题?很多智力正常的人喜欢把喜欢稍低的人当作智力正常的人,以此为沉浸在自我感觉牛X的状态中。 我认为能通过更加客观可测的东西来衡量自己是平庸还是杰出。 1、杰出的人拒绝被人评价。 接受并活在别人评价中的人,注定是个平庸的人。企图讨好大多数人的认可,必然平庸。只有不惧流言,敢想敢做,才有可能做到不平凡的事...
        
阅读全文
摘要:【Mach-O Basic Structure】 图表解释:
        
阅读全文
摘要:【Mac之Launching an Application】 总述:所有进程的启动都是先fork后exec。Launch Service管理着由某类文件该由哪个程序打开。
        
阅读全文
摘要:【iOS之lipo】 1、lipo是什么 ? 2、lipo使用案例: 1)-info:仅显示出universal file中的包括的架构信息。 2)-detailed_info:打印出fat_header、fat_arch 3)-thin:取出某个架构 4)-create: 创建universal file 更详细资料参考:https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/lipo.1.html
        
阅读全文
摘要:【iOS之Universal Binaries】 1、什么是Universal Binaries? 2、fat_header 3、fat_arch 注:cputype、cpusubtype在Mach/machine.h文件中可以查看。使用lipo -detailed_info 可以查看fat_header、fat_arch内容。
        
阅读全文