精华内容
下载资源
问答
  • 什麼是 "asmlinkage"?--syscall原型说明

    千次阅读 2011-09-16 16:53:33
    有網友來信問到,kernel 裡的 system call 實作函數中(C 函數),為什麼每一個函數原型宣告的前面都有一個 "asmlinkage" 的字串?例如: asmlinkage  long sys_nice(int increment) "asmlinkage" 是在 i386 ...
    
    

    什麼是 "asmlinkage"?

    jollen 發表於 October 26, 2006 4:15 PM

    有網友來信問到,kernel 裡的 system call 實作函數中(C 函數),為什麼每一個函數原型宣告的前面都有一個 "asmlinkage" 的字串?例如:

    asmlinkage long sys_nice(int increment)

    "asmlinkage" 是在 i386 system call 實作中相當重要的一個 gcc 標籤(tag)。

    當 system call handler 要呼叫相對應的 system call routine 時,便將一般用途暫存器的值 push 到 stack 裡,因此 system call routine 就要由 stack 來讀取 system call handler 傳遞的參數。這就是 asmlinkage 標籤的用意。

    system call handler 是 assembly code,system call routine(例如:sys_nice)是 C code,當 assembly code 呼叫 C function,並且是以 stack 方式傳參數(parameter)時,在 C function 的 prototype 前面就要加上 "asmlinkage"。

    加上 "asmlinkage" 後,C function 就會由 stack 取參數,而不是從 register 取參數(可能發生在程式碼最佳化後)。

    更進一步的說明...

    80x86 的 assembly 有 2 種傳遞參數的方法:

    1. register method
    2. stack method

    Register method 大多使用一般用途(general-purpose)暫存器來傳遞參數,這種方法的好處是簡單且快速。另外一種傳遞參數的做法是使用 stack(堆疊),assembly code 的模式如下:

    push number1
    push number2
    push number3
    call sum

    在 'sum' procedure 裡取值的方法,最簡單的做法是:

    pop ax 
    pop ax
    pop bx
    pop cx

    Stack Top 是放 IP,我們傳給 sum procedure 的參數由 stack 的後一個 entry 開始讀取。

    其它有關 asmlinkage

    1. asmlinkage 是一個定義
    2. "asmlinkage" 被定義在 /usr/include/linux/linkage.h
    3. 如果您看了 linkage.h,會發現 "__attribute__" 這個語法,這是 gcc 用來定義 function attribute 的語法。

    --jollen

    展开全文
  • 说原型模式

    千次阅读 2018-01-23 09:35:17
    设计模式之原型模式 定义 Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建...

    设计模式之原型模式

    定义

    Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。 —— [ 百度百科 ]

    解释说明

    在原型模式下,我们在原类型下实现clone方法,通过调用本地办法,实现原类型的复制。也就是说,新对象的创建,不在通过new的形式了,而是在底层通过字节流的复制创建。当然,这其中有以下几点需要特别注意:1 原型模式创建对象是不会调用构造方法的,这就跟单例模式有了冲突。2 原型模式创建对象的时候,涉及到浅拷贝和深拷贝的问题。对于基本类型,都是采用的浅拷贝,而对于引用类型,则需要采用深拷贝,这样才能保证引用类型数据的私有化。

    代码块
    public class Test { 
        //原型类
        class Man implements Cloneable{
            public Man(){
                System.out.println("创建男人对象");
            }
            public void say(){
                System.out.println("我是个男人");
            }
            @Override
            public Man clone(){  
                Man man = null;  
                try{  
                    man = (Man)super.clone();  
                }catch(CloneNotSupportedException e){  
                    e.printStackTrace();  
                }  
                return man;   
            }  
        }
        //测试
        public static void main(String[] args) {
            //实例化原型
            Man man = new Test().new Man();
            man.say();
            for(int i =0; i < 3; i++){
                Man newMan = man.clone();
                newMan.say();
            }
        }
    }
    代码解读

    以上就是完整的原型模式实例代码。我们创建一个Man类型,让其实现Cloneable接口。然后,我们重写父类的clone方法,实现对象的复制。

    原型模式是一个比较简单的模式,需要重申的还是原型模式复制对象的时候呀,不会执行构造函数,正如上述代码实例中,执行代码的时候,构造函数只会执行一次。另外就是关于引用类型的拷贝问题,如果原型类中有引用类型的成员变量,那么我们就需要对这些成员变量实行深拷贝,调用其本身的clone方法,显示的进行复制。

    总结

    优点
    1. 使用原型模型创建一个对象比直接new一个对象更有效率,因为它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显。
    2. 隐藏了制造新实例的复杂性,使得创建对象就像我们在编辑文档时的复制粘贴一样简单。
    缺点
    1. 由于使用原型模式复制对象时不会调用类的构造方法,所以原型模式无法和单例模式组合使用,因为原型类需要将clone方法的作用域修改为public类型,那么单例模式的条件就无法满足了。
    2. 使用原型模式时不能有final对象。
    3. Object类的clone方法只会拷贝对象中的基本数据类型,对于数组,引用对象等只能另行拷贝。这里涉及到深拷贝和浅拷贝的概念。
    试用场景
    1. 使用原型模式创建对象比直接new一个对象在性能上要好的多,因为Object类的clone方法是一个本地方法,它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显。
    2. 使用原型模式的另一个好处是简化对象的创建,使得创建对象就像我们在编辑文档时的复制粘贴一样简单。
    3. 因为以上优点,所以在需要重复地创建相似对象时可以考虑使用原型模式。比如需要在一个循环体内创建对象,假如对象创建过程比较复杂或者循环次数很多的话,使用原型模式不但可以简化创建过程,而且可以使系统的整体性能提高很多。
    展开全文
  • 原型说明2.1 运行环境JDK 1.4WebSphere Portal Server 6.1 (Portlet JSR 168)Domino 72.2 开发环境JDK 1.5Eelipse 3.3.1MyEclipse 6.0.1WebSphere Portal Server 6.1 (Portlet JSR 168)DB2Domi
      
    

    2      原型说明

    2.1 运行环境

    JDK 1.4

    WebSphere Portal Server 6.1 (Portlet JSR 168)

    Domino 7

    2.2 开发环境

    JDK 1.5

    Eelipse 3.3.1

    MyEclipse 6.0.1

    WebSphere Portal Server 6.1 (Portlet JSR 168)

    DB2

    Domino 7

    2.3 原型结构图

    Struts2<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    DWR

    Dojo

    Freemarker

    JFreeChart

    JSP

    Action

    Spring

    Service

    Manager

    Drools

    Ibatis

    DAO

    DB

    DB2

     

    2.4 表示层

    表示层使用Struts2来实现,整合了DWR,Dojo,Freemarker,JFreeChart等常用框架。满足了业务的常规要求。

     

    2.5 业务层

    业务层主要分:ServiceManager层来实现。交由Spring来管理。

    2.6 持久层

    持久层使用Ibatis来管理,Spring来管理DAO对象。

    2.7 权限控制

    WebSphere Portal Server来管理用户的权限,特别的需求由应用自己来读取LDAP来处理。

    2.8 事务处理

    Spring 来处理简单事务,使用Spring的声明式事务来管理。

    2.9 异常处理

    建议模块捕获异常,通过返回状态码来处理。

    2.10 公用组件

    2.10.1 分页

    分页功能主要包括表示层,业务层,和持久层三方面。

    表示层通过传递PageValue对象,来将页码信息和结果集返回到jsp页面。使用Struts2标签来将页码和结果集显示出来。

    业务层通过PageManager来操作IPage接口和IPageResult接口,来实现页码计算和数据获得进行分离。Page类实现IPage接口,来进行页码的计算。PageResult实现IPageResult接口,通过dao来获得相应的数据集,然后放到PageValue对象的list内,返回给页面。

    持久层使用dao来管理,需要实现int getTotal()List getResult(int top, int max)两个方法。

    2.10.2 增删改查

    Action调用Service的相应方法来实现。

     

    2       代码规范

    2.1     包命名规范

    包命名规则:

           例:com.test.action                    action目录

                  com.test.action.edit             对应于portletedit模式下的action

    com.test.action.chart           对应于portletview模式下的处理chartaction

     

    com.test.domain                   存放域对象

    com.test.page                      存放分页模块的业务处理类

    com.test.logic.business         存放业务处理接口

    com.test.logic.business.impl  存放业务处理实现类

    com.test.logic.service           存放业务服务接口

    com.test.logic.service.impl    存放业务服务实现类

     

    com.test.persistence             存放Ibatis配置

    com.test.persistence.dao              存放dao接口

    com.test.persistence.dao.impl 存放dao实现类

     

     

    globalMessages_en_US.properties        国际化配置文件

    log4j.xml                                           日志配置文件

    struts.properties                                 struts配置文件

    struts.xml                                                 struts配置文件

    struts-chart.xml                                 功能模块的struts配置文件

    struts-edit.xml                                    对应edit模式下的struts配置文件

    validators.xml                                    校验配置文件

    IndexEditProcessAction-validation.xml 对应action的校验配置文件

     

     

    /WEB-INF/edit                                   相应模块的jsp目录

    applicationContext.xml   spring配置文件

    dwr.xml                       dwr配置文件

    portlet.xml                    portlet配置文件

    struts-portlet-object.xml struts-portlet配置文件

                                       web.xml                       web配置文件
    展开全文
  • 后台设计因其差异化的存在,暂没有一个万金油似的原型说明套路,那么后台设计的产品汪,要着重写出哪些说明呢?...扶额,往往还没完,问题就连珠炮似的开过来了,既影响了会议效率,又增加了沟通成本。而在评审会

    后台设计因其差异化的存在,暂没有一个万金油似的原型说明套路,那么后台设计的产品汪,要着重写出哪些说明呢?本小白在此分享短文一篇,说说自己在工作中对原型都进行了哪些说明(初级产品向)

    在做原型评审的时候,经常被程序猿追问的问题无非几种:数据怎么来的?功能咋实现的?你这规则是啥啊?巴拉巴拉。。扶额,往往还没说完,问题就连珠炮似的开过来了,既影响了会议效率,又增加了沟通成本。而在评审会后呢?程序猿经常忘记的问题无非还是:数据怎么来的?功能咋实现的?你这规则是啥啊?巴拉巴拉。。

    那怎么解决这顽疾呢?只需要在原型说明中着重对展现和实现两方面进行详细说明,就可以完美解决,至于成果嘛~想想还有点小激动呢~~

    基本信息

    基本信息是对功能设计的总览,多以表格形式呈现(脑补一下表格大概就是那种横横竖竖的四四方方);用以对原型进行大致说明,包含:

    • 迭代记录:就是版本号和修订时间;给本次迭代定个编号,以后翻旧账的时候用得到
    • 功能名称:分别都叫啥,叫啥,叫啥;注意名称不要重复,起名可是产品汪的基础技能
    • 功能概述:需要说明功能是干什么用的、满足什么需求、解决什么问题、涉及的页面和角色;不用详解,但一定要说明白
    • 优先级:一般以 P0 – P10 依次进行标注;可以对开发优先级进行把控

    权限说明

    后台设计基本是依用户账号进行角色划分并分配数据权限,所以设计时需进行全面考虑。此处需要针对不同角色进行详细说明,强调后台的严谨性

    • 用户权限:谁可以对哪些功能进行操作
    • 数据权限:谁可以操作哪些数据
    • 功能权限:谁可以对功能进行哪些操作

    PS:所以 “谁” 到底是 谁,比心

    页面规则

    对页面的基本规则进行说明。为保证后台一致性,页面规则有许多是可以做成模板形式的,在平台开发阶段就定义好,以后直接引用;若页面有特殊规则,需重新说明

    • 统一规则:面包屑、列表页每页显示数据条数、触发翻页的条件、翻页模块的展现形式以及排序规则
    • 特殊情况:空数据页面、报错页面、刷新页面(卡顿)
    • 其他规则:数据显示字数(需考虑换行)、输入框允许字数及字符格式、父模块 等

    功能规则

    划线,此处为重点,必考。设计的功能要如何实现,全包含在此;建议使用表格形式进行功能间的区分,敲黑板:操作后的影响范围及数据流一定要描述清晰,包括后台和前端页面

    • 前置条件:从哪里进来的,记得带上面包屑
    • 后置条件:操作后去了哪里
    • 搜索功能:模糊搜索?精确搜索?特别搜索模块说明(时间控件等),允许输入的字符格式
    • 数据获取:数据是从哪来的
    • 按钮规则:可以由交互设计师来写,产品只需要写出基本规则即可,如:弹出对话框、导出框、提示框等等
    • 流程图:流程图是重点中的重点,需要将功能整体流程画出来,包括页面流程和功能流程
    • 其他规则:涉及到的其他功能点

    交互规则

    如果你们有交互设计师,这块就交由那位兄弟做吧,什么按钮状态啦、是不是模态对话框啦、动态效果啥样子等等;要是没有,只能你来写咯~~汪汪~~

    写的时候要注意于原型说明的区别,原型说明更注重规则和逻辑、交互说明更注重如何展现

    写在后面

    本文是针对初级后台产品经理进行的基本功分享(奈何不方便放图),纯以简单功能的常规说明为例,如果功能涉及框架层、业务逻辑等,就需要进行更加缜密和详尽的说明;欢迎路过的童鞋进行补充,还请大家轻点拍砖。

    展开全文
  • 原型原型链学习

    2020-11-24 17:00:30
    原型原型链学习 从Function说原型
  • 关于原型的理解 ...这个属性又会指向 其构造函数(那下面手工图来Obj.prototype.constructor指向Obj) 创建构造函数之后,其原型对象默认取得constructor属性。 调用构造函数创建新实例后,实例的内部有一
  • 原型

    2014-03-06 14:01:31
    简单来,一个原型类似其他语言中的一个类,它定义的属性且可以被此类产生的所有对象所共享。然后它又不像一个类,原型可以在运行时获得和改变。可以增加属性到原型上或者删除原型上已经存在的属性。所有的变化将立即...
  • 原型原型

    2018-07-14 13:40:14
    对于构造函数来,这个prototype属性指向的原型对象定义了实例对象的共有属性。 2、原型链 JavaScript规定,任何对象都有自己的原型对象,由于原型对象也是对象,因此他也有自己的原型对象,于是就形成了“原型链...
  • 原型模式是用于创建对象的一种模式,...通俗的:如果对象A是对象B克隆而来的,那么B对象就是A对象的原型。如何通过原型模式来创建对象的函数呢?代码如下: function inherit(obj){ if(obj === null) throw Ty...
  • 每创建一个函数,内部都会带有一个指向具有共享属性和方法的 prototype 属性,这个属性是一个对象,称为原型(简单来,就是由该函数创建的实例,都可以通过这个原型来共享属性和方法) 每个原型对象中都有 ...
  • 简单原型链?

    2020-07-30 09:39:54
    每个函数都有 prototype 属性,除了 Function.prototype.bind(),该属性指向原型。 每个对象都有 __proto__ 属性,指向了创建该对象的构造函数的原型。其实这个属性指向了 [[prototype]],但是 [[prototype]]是内部...
  • Js中有一个很著名的知识点叫做两链一包,上次浅谈了一下自己关于闭包的理解,这次就来粗浅谈谈对我对两链中的原型链的理解吧。什么叫原型链?要了解什么是原型链之前,我们应该先了解一下什么叫做原型。那什么叫原型...
  • Axure Mobile原型发布工具说明

    千次阅读 2015-02-21 11:55:11
    互动说明请直接访问文内链接
  • 图解原型原型

    2017-07-14 09:57:23
    在“类”中(也就是函数中)的prototype就指向一个原型对象,在实例中,__proto__就指向的是一个构造它的那个“类”(函数)的原型,通过protoype与__proto__就会形成一个原型链,对于一个实例来,就是谁构造的我...
  • 以前一直想学习一下原型设计这方面的知识,觉得原型设计的软件比较简单直接地表达了我的设计理念,而不用太多的语言基础,就拖动元素组件,修改属性,添加事件等等,刚好今天接触axure这款原型软件,和...
  • JavaScript原型原型

    2017-06-22 15:12:00
    原文:JavaScript原型原型链 ! js原型 ...也就是:当生产一个function对象的时候,就有一个原型prototype。 举个栗子:是不是还看到了一个proto的属性?!骚年,你的眼睛不错~待会在解释prot
  • 产品原型的交互说明 我们经常在做app暴力测试时可以逆向使用这些交互说明 1.限制:包含范围值、极限值等 2.状态:默认状态、常见状态、特殊状态等 常见状态 特殊状态 3.操作:常见操作、特殊操作、误操作、手势...
  • 下我理解的原型链:对象通过自身__proto__属性向上查找的过程! 我完了,结合下面的笔记,小伙伴理解下......... 构造函数创建对象: function Person() { } var person = new Person(); person.name = '...
  • 原型对象与原型

    2017-06-20 16:31:12
    对于新人来,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__proto__混淆,二来它们之间的各种指向实在有些复杂,其实市面上已经有非常多的文章在尝试清楚,有一张所谓很经典的图,上面画了各种...
  • 【JS】从Function说原型

    千次阅读 2017-12-18 20:24:07
    最近小组要做学习与交流,本来准备做ES6的使用,组员先讲下JS的原型。琢磨了下,一脸懵,平时在用这个,但是让我去讲,还真不知道怎么讲,趁机再梳理一次。 Function 平时会使用大量的Function,但是真的懂...
  • 显式原型和隐式原型

    2019-09-13 23:58:36
    下图是对显式原型和隐式原型的说明,将逐一对原型的原理进行分析。 1、每个函数都会有一个prototype属性,即显示原型,默认指向一个空的对象,所以我们构建了一个Fn的空函数,此函数内也有一个prototype属性指向...
  • 前端JS原型原型

    千次阅读 2018-09-16 14:15:39
    首先来一下什么是原型原型链和构造函数。 原型:JS中的对象都包含了一个prototype的内部属性,这个属性所对应的就是该对象的原型原型链:原型链是是有一些用来继承和共享属性的对象组成的对象链。并且原型...
  • 原型对象和原型

    2019-10-06 09:28:43
    总的来: 1、prototype是函数才有的属性 2、__proto__是每个对象都有的属性 (__proto__不是一个标准属性,只是部分浏览器实现了此属性,对应的标准属性是[[prototype]]) 一、原型对象 function A(){//创建一个...
  • js原型原型

    2017-09-03 14:36:00
    原型: 在JavaScript中,原型也是一个对象,通过原型可以实现对象的属性继承,每个函数 ...实例的`__proto__`属性),也就是,所有实例的原型引用的是函数的prototype属性。 那么prototype和__proto__的区别是什么
  • 理解原型原型

    千次阅读 2014-11-14 08:33:53
    由于 JavaScript 是唯一一个被广泛使用的基于原型继承的语言,所以理解两...通俗的原型就是一个模板,在设计语言中更准确的说是一个对象模板。 原型链: 在javascript中,所有的对象都拥有一个__proto__属性指...
  • 每个构造函数都会有一个prototype属性,它相当于一个指针,指向另外一个对象,这个对象就可以给所有实例共享它的属性和方法,所以原型对象就是用来给实例共享自己的属性和方法的。每个实例内部都会有一个指向...
  • es6的原型原型

    2020-03-23 14:15:11
    es6的原型原型链的关系图如下所示。 ①每个函数都有一个prototype属性,这个属性会指向一个对象,就是通过调用该构造函数而创建的实例原型,可以通过实例对象的__...④当访问一个实例对象的属性时,如果这个...
  • 原型的概念:每一个javascript对象(除null外)创建的时候,就会与之关联另一个对象,这个对象就是我们所原型,每一个对象都会从原型中“继承”属性。 让我们用一张图表示构造函数和实例原型之间的关系: 二、...
  • 原型模式

    2018-05-13 21:47:42
    这里也就是所发动创建的对象只需要知道原型对象的类型就可以获得更多的原型实例对象,至于这些原型对象时如何创建的根本不需要关心。 讲到原型模式了,我们就不得不区分两个概念:深拷贝、浅...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,414
精华内容 9,365
关键字:

原型说