01 2018 档案
摘要:函数签名-调用约定-函数调用栈: 函数名、参量、返回值等信息的汇总; 密切相关
阅读全文
摘要:人生维艰,努力向上 人生就像在通往天堂的路上进行赛跑,不仅要爬很多的坡,越很多的谷,而且要面对众多的竞争对手。那些对手会对你又拦又挡,又拦又拽,又踢又踹,不断阻止你打倒目标。这个时候就需要你自立自强,努力向上,强大自己,克服困难。 西游记。
阅读全文
摘要:函数式表达式:分解、合成、赋函、调用、嵌套、级联、抽象; 抽象:将调用与实现分离。
阅读全文
摘要:把函数当作普通的运算符使用。 2. 只用"表达式",不用"语句"() "表达式"(expression)是一个单纯的运算过程,总是有返回值; "语句"(statement)是执行某种操作(更多的是逻辑语句。),没有返回值。 函数式编程要求,只使用表达式,不使用语句。也就是说,每一步都是单纯的运算,而
阅读全文
摘要:函数式编程有两个最基本的运算:合成和柯里化。 2.1 函数的合成 如果一个值要经过多个函数,才能变成另外一个值,就可以把所有中间步骤合并成一个函数,这叫做"函数的合成"(compose)。 上图中,X和Y之间的变形关系是函数f,Y和Z之间的变形关系是函数g,那么X和Z之间的关系,就是g和f的合成函数
阅读全文
摘要:queue相当于事件处理机制里的事件池;只是任务池; 线程作为事件处理的实施者,由线程池从任务池中获取任务进行调度派发; group相当与工作组,按照任务的相关性对任务进行组织。
阅读全文
摘要:Volatile variables apply another type of memory constraint to individual variables. The compiler often optimizes code by loading the values for variab
阅读全文
摘要:在内核中或者同步变量中维护着一个同步变量和线程的映射关系。 上述结论只是猜测。
阅读全文
摘要:不变量,临界区和判定条件 不变量(Invariant):程序所做的一些假设,特别是指变量之间的关系。如:一个queue,有头节点,和其它数据节点,这些元素之间的连接关系就是不变量。当程序里面不变量遭受破坏时,后果往往是很严重的,轻则数据出错,重则程序直接崩溃。 临界区(Critical Sectio
阅读全文
摘要:使用线程的几种方式 1. 流水线:每个线程反复地在数据系列集上执行同一种操作,并把操作结果传递给下一步骤的其他线程,这就是“流水线”(assembly line)方式; 2 工作组:每个线程都在自己的数据上执行操作。工作组中的线程可能执行同样的操作,也可能执行不同的操作,但是他们一定独立运行; 3
阅读全文
摘要:In concurrent programming, a monitor is a synchronization construct that allows threads to have both mutual exclusion and the ability to wait (block)
阅读全文
摘要:如果互斥锁类型为 PTHREAD_MUTEX_NORMAL,则不提供死锁检测。尝试重新锁定互斥锁会导致死锁。如果某个线程尝试解除锁定的互斥锁不是由该线程锁定或未锁定,则将产生不确定的行为。 如果互斥锁类型为 PTHREAD_MUTEX_ERRORCHECK,则会提供错误检查。如果某个线程尝试重新锁定
阅读全文
摘要:条件变量相当于订阅-发布机制; 或者相当于同步的通知机制; 订阅和发布具有先后顺序;所以需要互斥量来维护顺序。 顺序不对,存在信号丢失问题。 Problem statement[edit] For many applications, mutual exclusion is not enough.
阅读全文
摘要:线程不存在真正的唤醒机制; 所谓的唤醒只是将同步变量置1;在下一个cpu时间片竞争变量,将线程的状态置就绪状态,从而执行; 或者处于自悬状态,有信号释放,立即捕获,从而执行。
阅读全文
摘要:使用条件变量,调用signal/broadcast的时候,无法知道是否已经有线程等在wait上了。因此,一般要先改变条件状态,然后再发送signal/broadcast信号。然后在wait调用线程上先检查条件状态,只有当条件状态为假的时候才进入pthread_cond_wait进行等待,从而防止丢失
阅读全文
摘要:pthreads defines a set of C programming language types, functions and constants. It is implemented with a pthread.h header and a thread library. There
阅读全文
摘要:1)基于的数据结构;线程的模式取决于线程(组)的处理的数据结构; 2)线程的角色;每个线程干什么? 3)同一个活谁来干;
阅读全文
摘要:多线程设计模式:1.Single Threaded Execution Pattern [同一时刻只允许一个线程操作] 比喻:三个挑水的和尚,只能同一时间一个人过桥,不然都掉河里喂鱼了。 总结:在多个线程同时要访问的方法上加上synchronized关键字。 2.Immutable Pattern
阅读全文
摘要:1)独占唯一资源; 2)队列维护的资源; 3)数组维护类资源; 4)状态流程类数据;
阅读全文
摘要:下面的文字均来自其它博客和网页。 参考:http://www.jianshu.com/p/ea9a482ece5f 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。需要明
阅读全文
摘要:In software engineering, concurrency patterns are those types of design patterns that deal with the multi-threaded programming paradigm. Examples of t
阅读全文
摘要:1)函数调用栈的构建与销毁; 2)函数调用栈的要素:(1)局部变量;2)调用参数;(3)返回地址、(4)寄存器保存;
阅读全文
摘要:In computer science, a calling convention is an implementation-level (low-level) scheme for how subroutines receive parameters from their caller and h
阅读全文
摘要:C 语言中函数返回结构体时如果结构体较大, 则在调用函数中产生该结构的临时变量,并将该变量首地址传递给被调用函数,被调用函数返回时根据该地址修改此临时变量的内容,之后在调用函数中再将该变量复制给用户定义的变量,这也正是 C 语言中所谓值传递的工作方式。 如果结构体较小, 则函数返回时所用的临时变量可
阅读全文
摘要:官方说法: 函数pthread_join用来等待一个线程的结束。函数原型为: extern int pthread_join __P ((pthread_t __th, void **__thread_return)); 第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储
阅读全文
摘要:线程退出油多种方式,如return,pthread_exit,pthread_cancel等;线程分为可结合的(joinable)和 分离的(detached)两种,如果没有在创建线程时设置线程的属性为PTHREAD_CREATE_DETACHED,则线程默认是可结合的。可结合的线程在线程退出后不会
阅读全文
摘要:阻塞状态(Blocked) 线程运行过程中,可能由于各种原因进入阻塞状态: 1>线程通过调用sleep方法进入睡眠状态; 2>线程调用一个在I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者; 3>线程试图得到一个锁,而该锁正被其他线程持有; 4>线程在等待某个触发条件; ..
阅读全文
摘要:黑幕背后的Autorelease http://www.cnblogs.com/feng9exe/p/7239552.html objc_autoreleasePoolPush的返回值正是这个哨兵对象的地址,被objc_autoreleasePoolPop(哨兵对象)作为入参,于是: 假设这些都有线
阅读全文
摘要:Thread Control Block The following is the declaration of the Thread Control Block. unsigned int status This field holds the status information of the
阅读全文
摘要:#define pthread_cleanup_push(func, val) \ { \ struct __darwin_pthread_handler_rec __handler; \ pthread_t __self = pthread_self(); \ __handler.__routin
阅读全文
摘要:基本概念pthread_cancel调用并不等待线程终止,它只提出请求。线程在取消请求(pthread_cancel)发出后会继续运行,直到到达某个取消点(CancellationPoint)。取消点是线程检查是否被取消并按照请求进行动作的一个位置. 与线程取消相关的pthread函数int pth
阅读全文
摘要:资源分为两类: 1)系统维护的资源; 2)线程自身维护的资源:文件语柄、同步变量等; 线程自身维护的资源需要自身来释放。 资源使用、同步使用; 资源清理: 线程pthread_cleanup_push的简单例程.
阅读全文
摘要:Concurrency is when two tasks can start, run, and complete in overlapping time periods. Parallelism is when tasks literally run at the same time, eg.
阅读全文
摘要:与动态语言有关的概念:1、反射 2、运行时 3、编译器、静态。 所谓的动态语言指的是语言单元的结构、行为、类型可以在运行时发生改变的语言。 可以动态添加新的类型; Dynamic programming language, in computer science, is a class of hig
阅读全文
摘要:In object-oriented programming, a metaclass is a class whose instances are classes. Just as an ordinary class defines the behavior of certain objects,
阅读全文
摘要:In some languages, classes are only a compile-time feature (new classes cannot be declared at runtime), while in other languages classes are first-cla
阅读全文
摘要:eval is a function which evaluates a string as though it were an expression and returns a result; in others, it executes multiple lines of code as tho
阅读全文
摘要:线程的关系就如同一个家庭里父子关系、独生子、多兄弟的关系; 有控制、独立完成、协作完成、资源竞争等情况发生。 同时线程具有生命周期,由生老病死等情况发生。 或者如同一个工厂的构成: 工厂拥有所有资源; 员工和管理者各司其职; 竞争使用资源或协作完成任务。 1、单任务线程,除了启动和完成没有和其它线程
阅读全文
摘要:线程的核心是算法,是面向过程的。 算法的协作的控制就相当于线程间的关系。
阅读全文
摘要:线程的阻塞状态与线程控制结构密切相关; 线程的阻塞点是同步变量的部署点; 线程的取消点是线程的死亡点。
阅读全文
摘要:结构化编程的要点就是控制流。 结构化编程的控制流是通过变量的比较进行的; 线程的执行也有控制流; 线程流程的控制是通过同步变量完成的; 线程的同步变量是由内核提供的;
阅读全文
摘要:所谓的线程安全指的是线程执行时上线文数据的一致性能够得到保证。 线程的运行环境保持一致。 线程安全要考虑的问题是“刻舟求剑”的问题。
阅读全文
摘要:数据:线程属性、怎么使用cpu;线程控制数据。 算法:解决什么问题; 并行:通信、同步与协作。
阅读全文
摘要:In computer science, the event loop, message dispatcher, message loop, message pump, or run loop is a programming construct that waits for and dispatc
阅读全文
摘要:本质:将成员函数与对象数据进行剥离。 从编程语言的角度看,面向对象是将数据和对数据的操作进行了绑定; 调用对象成员函数,本质是对对象的数据进行操作;对象作为缺省参数传进成员函数,从而完成操作。 从面向对象转化成面向结构编程,需要对成员函数和对象数据进行解绑; 将对象以显式参量的形式传进转换后的函数,
阅读全文
摘要:调用约定: __cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。 1、__stdcall调用约定:函数的参数自右向左通过栈传递
阅读全文
摘要:函数调用约定描述了如何以正确的方式调用某些特定类型的函数。包括了函数参数在栈上的分配顺序、有哪些参数将通过寄存器传入,以及在函数返回时函数栈的回收方式等。 函数调用约定的几种类型 stdcall,cdecl,fastcall,thiscall,nakedcall,pascal stdcall调用约定
阅读全文
摘要:关于 C/C++ 函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的。 VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调用方式,在 DLL 导出函数中,为了跟 Windows API保持一致,建议使用 __stdcall
阅读全文
摘要:Grand Central Dispatch (GCD) is a technology developed by Apple Inc. to optimize application support for systems with multi-core processors and other
阅读全文
摘要:POSIX Threads, usually referred to as pthreads, is an execution model that exists independently from a language, as well as a parallel execution model
阅读全文
摘要:In computer programming, event-driven programming is a programming paradigm in which the flow of the program is determined by events such as user acti
阅读全文
摘要:操作方式、含义、存储方式。 In computer science and computer programming, a data type or simply type is a classification of data which tells the compiler or interpr
阅读全文
摘要:以前本站发布过《编程语言时间地理图》、《计算机编程简史图》,下面是两张关于编程语言的进化图。 第一张是比较宏观的,来源在这里,虽然是去年的,但还是比较不错的,其把计算机编程语言分成了五个时代—— 语言诞生。1940年代。第一个语言应该是:Ada Lovelace, 编译器时代。1950年代。这个时代
阅读全文
摘要:Type system[edit] Main articles: Data type, Type system, and Type safety A type system defines how a programming language classifies values and expres
阅读全文
摘要:In computer programming, run-time type information or run-time type identification (RTTI)[1] refers to a C++ mechanism that exposes information about
阅读全文
摘要:类型系统的属性: 1、结构属性; 2、规则属性;类型系统定义了一套规则(内部数据的访问规则、函数的访问规则、类型的比较与转化规则),以供编译和运行时进行检查。 In programming languages, a type system is a set of rules that assigns
阅读全文
摘要:动态改变运行时结构 Dynamic programming language, in computer science, is a class of high-level programming languages which, at runtime, execute many common pro
阅读全文
摘要:动态语言:修改结构; 动态类型:运行时类型检查; 编译语言:机器码、解释器; 强类型:类型不可变。 编译型语言和解释型语言 1、编译型语言 需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成
阅读全文
摘要:this 和 self指针 为函数提供了运行上下问;为函数提供了当前对象的其实地址,方便函数的对对象的访问。
阅读全文
摘要:Normally, in a typed language, the dispatch mechanism will be performed based on the type of the arguments (most commonly based on the type of the rec
阅读全文
摘要:Late binding, or dynamic binding,[1] is a computer programming mechanism in which the method being called upon an object or the function being called
阅读全文
摘要:C++中的虚函数(Virtual Function)是用来实现动态多态性的,指的是当基类指针指向其派生类实例时,可以用基类指针调用派生类中的成员函数。如果基类指针指向不同的派生类,则它调用同一个函数就可以实现不同的逻辑,这种机制可以让基类指针有“多种形态”,它的实现依赖于虚函数表。虚函数表(Virt
阅读全文
摘要:绑定:建立联系; 分发:作出选择。 https://en.wikipedia.org/wiki/Dynamic_dispatch https://en.wikipedia.org/wiki/Late_binding Dynamic dispatch is different from late bi
阅读全文
摘要:对象指针本身也是接口中的一个参量。 然而,在更广阔的计算机领域中,多态这个词并不只是局限在类继承和虚函数上。只要是同名函数能够根据参数的类型不同而获得不同的实现,我们都可以叫它“多态”。 多态可以分成三类,Ad hoc 多态(Ad hoc ~),参数化多态(Parametric ~),子类型多态(S
阅读全文
摘要:所谓的多态是将类似的不同实现统一到一个(组)接口的能力; 涉及到两个方面:1)抽象能力;2)面向接口(忽略载体、对象)。 Polymorphism is the ability of the programmer to write methods of the same name that do d
阅读全文
摘要:Smalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was one of many object-oriented programming languages b
阅读全文
摘要:Simula is the name of two simulation programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo,
阅读全文
摘要:决断、定论与执行力 当断不断的意思就是优柔寡断,该做决定的时候不做决定。 排除万难来执行; 悬而不决; 夜长梦多;
阅读全文
摘要:•<!--StartFragment-->需求、需求评审与产品定位<!--EndFragment--> 需求与产品定位:略; 需求评审中的问题:双向交互与自圆其说 •需求的增与减; •需求变更; •干扰与目标定力; •目标、计划、时间与选择; •移动端工作量评估的考虑因素; •时间倒排、项目规模、领
阅读全文
摘要:对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__proto__混淆,二来它们之间的各种指向实在有些复杂,其实市面上已经有非常多的文章在尝试说清楚,有一张所谓很经典的图,上面画了各种线条,一会连接这个一会连接那个,说实话我自己看得就非常头晕,更谈不上完全
阅读全文
摘要:http://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2
阅读全文
摘要:你可能听说过函数式编程(Functional programming),甚至已经使用了一段时间。 但是,你能说清楚,它到底是什么吗? 网上搜索一下,你会轻松找到好多答案。 与面向对象编程(Object-oriented programming)和过程式编程(Procedural programmin
阅读全文
摘要:In computer science, imperative programming is a programming paradigm that uses statements that change a program's state. In much the same way that th
阅读全文
摘要:Aspect Oriented Programming(面向方面编程,简称AOP)是一种Declarative Programming(声明式编程)。Declarative Programming(声明式编程)是和Imperative Programming(命令式编程)相对的概念。我们平时使用的编
阅读全文
摘要:Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which may contain data, in the form of fields, often kn
阅读全文
摘要:Prototype-based programming is a style of object-oriented programming in which behaviour reuse (known as inheritance) is performed via a process of re
阅读全文
摘要:范式:编程模式,将数据和算法封装到一起; 思想:系统论和世界观:系统是一系列相互关联的对象组成的。
阅读全文
摘要:拉姆达值(Lambda),希腊字母表示为Λ,指与真空的空间有关的能量或暗能量。 代表转换的常量、或者转换本身。 Lambda 表达式 Lambda 表达式”是一个匿名函数,可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。 所有 Lambda 表达式都使用 Lambda 运算符 =>;,该
阅读全文
摘要:In computer science, a function or expression is said to have a side effect if it modifies some state outside its scope or has an observable interacti
阅读全文
摘要:变量可以作为函数的参量和返回值,代表的数据(相对应的是算法); 指针可以作为函数的参量和返回值,代表的是内存;(指针可以无差别的访问任何内存); 对象可以作为函数的参量和返回值,代表的是数据和操作;或者说是操作及其数据上下文。 对象作为参量和返回值,传递的是数据和操作的结合;优与传递数据和指针; 函
阅读全文
摘要:应对复杂性的能力不同。 我们知道现在存在着两种不同的编程方式-1) 面向过程编程(POP)以及2)面向对象编程。我们可以任意选择一种方式来编写程序,但是我们得知道这两种编程方式的区别。这两种编程方式是软件开发历经几十年发展的结果。从计算机被发明起,人们尝试了很多方法来编写程序,例如a)自顶向下编程;
阅读全文
摘要:Main paradigm approaches[edit] The following are widely considered the main programming paradigms, as seen when measuring programming language popular
阅读全文
摘要:In computer science, functional programming is a programming paradigm—a style of building the structure and elements of computer programs—that treats
阅读全文
摘要:n computer science, reflection is the ability of a computer program to examine, introspect, and modify its own structure and behavior at runtime.[1] A
阅读全文
摘要:Generic programming is a style of computer programming in which algorithms are written in terms of types to-be-specified-later that are then instantia
阅读全文
摘要:声明式编程需要底层或运行时环境支持。 声明式语言的关键词确定了执行的关键控制流。 表述编程语言是说明性的东西;而不是具体的执行方案。 通常他的执行由解释器进行。 In computer science, declarative programming is a programming paradig
阅读全文
摘要:编程范式(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式。随着编程方法学和软件工程研究的深入,特别是OO思想的普及,范式(Paradigm)以及编程范式等术语渐渐出现在人们面前。面向对象编程(OOP)常常被誉为是一种革命性的思想,正因为它不同于其他的各种编程范
阅读全文
摘要:Different approaches to programming have developed over time, being identified as such either at the time or retrospectively. An early approach consci
阅读全文
摘要:软件问题对象的问题: 1)业务逻辑的复杂型; 2)软件组件的规模; 软件复杂度的升级:一维线性(单纯计算);二维平面(带有业务逻辑的结构型计算);三维立体:描述复杂的现实世界; 针对软件开发任务的升级,编程思想也有一个相应的升级过程: 编程思想的进化; 1)面向计算:计算机出现的驱动力,具有唯一解;
阅读全文
摘要:结构话编程强调的是对流程的控制; 它为面向过程编程提供天然的支持。 Structured programming is a programming paradigm aimed at improving the clarity, quality, and development time of a
阅读全文
摘要:让我们总结一下:编译器把一个cpp编译为目标文件的时候,除了要在目标文件里写入cpp里包含的数据和代码,还要至少提供3个表:未解决符号表,导出符号表和地址重定向表。 未解决符号表提供了所有在该编译单元里引用但是定义并不在本编译单元里的符号及其出现的地址。 导出符号表提供了本编译单元具有定义,并且愿意
阅读全文
摘要:库是没有链接的编译单元的集合 1.弱符号与强符号 对C/C++而言,编译器默认函数和初始化了的全局变量为强符号。未初始化的全局变量为弱符号。此处弱符号与强符号均是针对定义来说的,不是针对符号的引用。也可以通过GCC的 “__attribute__((weak))”来定义任何一个强符号为弱符号。 [c
阅读全文
摘要:1. 强符号和弱符号 1.1 u-boot和kernel中的__weak指令 u-boot和kernel比较普遍地使用了__weak来定义函数。 在include\linux\compiler-gcc.h中__weak是这样定义的: #define __weak __attribute__((wea
阅读全文
摘要:注意,强符号和弱符号都是针对定义来说的,不是针对符号的引用。 一、概述 在C语言中,函数和初始化的全局变量(包括显示初始化为0)是强符号,未初始化的全局变量是弱符号。 对于它们,下列三条规则使用: ① 同名的强符号只能有一个,否则编译器报"重复定义"错误。 ② 允许一个强符号和多个弱符号,但定义会选
阅读全文
摘要:一、编译链接 在编写linux驱动程序时,时常会发现链接出错,当时往往不知道错误在哪。现在了解到链接器的工作原理之后,明白当时为什么出错了。对于以后有效率地编写驱动程序有很大帮助。一个C语言程序,经过诸如GCC之类的编译器编译成可执行文件一般会经历4个处理过程,这个大部分的linux入门书籍都有讲到
阅读全文
摘要:链接器如何解析多重定义的全局符号 在编译时,编译器向会便器输出每个全局符号,汇编器把这些信息隐含地编码在可重定位目标文件的符号表内。函数和初始化的全局变量是强符号,未初始化的全局变量是弱符号。根据强弱符号的定义,unix链接器使用以下规则处理多重定义的符号:1)不允许有多个重定义符号是强符号;2)如
阅读全文
摘要:hook的本质就是在本原可执行文件中加东西。 本质就是添加东西;
阅读全文
摘要:在Mac的开发中, 有没有想过当我们点击可执行文件之后,Mac究竟做了什么事情才让我们的程序运行起来? 对于应用层开发人员或者普通的用户而言, 其实无需知道的这么详细;但是对于内核开发人员而言, 如果能了解这一系列的过程, 那么将增强我们的内核的开发功底。 那么下面我们开始分析我们的鼠标点击之后,
阅读全文
摘要:通过分析下面这个最熟悉的可执行文件,来好好总结和了解下Mach-O这种文件格式,并且也总结下系统在执行可执行文件几个过程: + 解析文件 + 依赖建立 + 初始化运行环境 + 执行进程 http://blog.csdn.net/bjtufang/article/details/50628310
阅读全文
摘要:1)文档描述; 2)模型描述; 3)架构描述; 4)代码描述;
阅读全文
摘要:优化系统结构,使信息和物质流在结构内的流动更畅通。 构造定律(constructal law) 优化系统结构,使信息和物质流在结构内的流动更畅通。 构造定律(constructal law) 由Adrian Bejan于1995创立的构造定律(constructal law): For a fini
阅读全文
摘要:快看!看!深入研究自然,你就会明白一切。 - 爱因斯坦 复杂性是被低估的。复杂越高,开发人员会感到不安。对其的理解认知负荷代价就越高,我们就更不快乐。真正的挑战是在构建我们的系统时要保持其有序以及工程师的生产方式。对于这一点,一个简单的物理规律可以帮助我们:构造定律 the Constructal
阅读全文
摘要:1、什么是socket 我们知道进程通信的方法有管道、命名管道、信号、消息队列、共享内存、信号量,这些方法都要求通信的两个进程位于同一个主机。但是如果通信双方不在同一个主机又该如何进行通信呢?在计算机网络中我们就学过了tcp/ip协议族,其实使用tcp/ip协议族就能达到我们想要的效果,如下图(图片
阅读全文
摘要:inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。 我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念,从而大大简化用户接口。 下面就是我的inode学习笔记,尽量保持简单。 理解inode 作者:阮一
阅读全文
摘要:关键术语: 超级快(super block)对象: 一个超级块对应一个具体的文件系统(已经安装的文件系统类型如 ext2,此处是实际的文件系统,不是 VFS)。 iNode 对象: inode是内核文件对象的元数据,inode 仅仅只是保存了文件对象的属性信息,包括:权限、属组、数据块的位置、时间戳
阅读全文
摘要:VFS所支持的文件系统类型可以归结为以下三大类: 基于磁盘的文件系统(Ext2, Ext3等) 网络文件系统(NFS等) 特殊文件系统(proc, sysfs) Linux的目录形成一个树形结构,根目录是 /。根目录位于根文件系统中。在Linux中通常是Ext2或Ext3。其他文件系统挂载在根文件系
阅读全文
摘要:VFS的面向对象的思想,如下图: VFS在上层用户空间的进程与底层特定文件系统之间起到一个承上启下的作用, 对上:封装标准的系统调用接口给用户空间app,user space app不必关心特定文件系统的实现细节。 对下:抽象出标准的开发接口给真实文件系统,只要实现这些接口,就可以实现一个新的真实文
阅读全文
摘要:Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。
阅读全文
摘要:结:联系、连接、结合、节,组合的部位; 构:要素、构成、构造。 用于描述部分、整体及联系。
阅读全文
摘要:In software engineering, multitier architecture (often referred to as n-tier architecture) or multilayered architecture is a client–server architectur
阅读全文
摘要:库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分。函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。 用户应用程序访问并使用内核所提供的各种服务的途径即是系统调用。在内核和用户应用程序相交界的地方,内核提供了一组系统调用接口,通过这组接口,应用程序可以
阅读全文
摘要:写在前面:所谓标准库函数,这里暂时讨论C语言的标准库函数。库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分。函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。 一、标准库函数和系统调用的区别 函数库调用 系统调用 在所有的ANSI C编译器版本中,C库
阅读全文
摘要:本文转自http://www.jb51.net/LINUXjishu/214104.html 首先来看一张图(这是Linux操作系统的大致层次结构): 最内层是硬件,最外层是用户常用的应用,比如说firefox浏览器,evolution查看邮件,一个计算流体模型等等。硬件是物质基础,而应用提供服务。
阅读全文
摘要:欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 标准输入输出 标准输入、输出主要由缓冲区和操作方法两部分组。缓冲区实际上可以看做内存中的字符串数组,而操作方法主要是指printf、scanf、puts、gets,getcha、pu
阅读全文
摘要:转载自:http://www.cnblogs.com/hjslovewcl/archive/2011/01/10/2314356.html 这个对经常在OJ上做题的童鞋们很有用。OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定
阅读全文
摘要:"Everything is a file" describes one of the defining features of Unix, and its derivatives — that a wide range of input/output resources such as docum
阅读全文
摘要:网络上的两个程序通过一个双向的通信连接实现数据的交换,建立网络通信连接至少要一对端口号(socket)。Socket的英文原义是“孔”或“插座”,通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。 套接管:两个管子的接口处用以将两个管口连接在一起的套筒。 socket 承物的凹处;承
阅读全文
摘要:前言 logify是theos的一个组件,路径是: /opt/theos/bin/logify.pl 我们还是以微信红包为例子,根据[iOS Hacking]运行时分析cycript得到的入口文件: BaseMsgContentViewController.h ssh连接手机 在Mac上打开终端,用
阅读全文