精华内容
下载资源
问答
  • 谈谈我对程序框架的理解

    千次阅读 2018-08-15 17:03:49
    写在前面,本文主要是对我自己两年多做单片机程序之后一些...首先谈下我对程序框架基本认识:  CSDN是一个大神云集地方,而且也是国内较早有关软件编程社区,里面有这巨多大牛级人物,这里一直是我...

    写在前面,本文主要是对我自己两年多做单片机程序之后的一些总结性的东西,可能对于大多数大神来说相对比较初级。在此也希望大神们轻喷!

    主要内容:

    1.我对单片机程序框架的认识

    2.一个具体的框架搭建的思维过程

    3.有关命名与文件的一些关系

     

    首先谈下我对程序框架的基本认识:

      CSDN是一个大神云集的地方,而且也是国内较早的有关软件的编程的社区,里面有这巨多大牛级的人物,这里一直是我寻找资源的圣地(就是现在积分有点贵)。作为软件工程师(无论多牛逼的软件工程师)都会经常性习惯性的去看别人或者自己很早之前写的代码。拿我自己来说,以前拿到论坛里大神的代码回去大体的看一看 然后似懂非懂的开始跑,跑不通不管换,再找新的,然后在跑,一旦是跑通了,诶好。基本上是可以了然后也不会去仔细推敲了拿过来就开始使用,直到后面遇到问题,走投无路了才又开始重新开始去重新去推敲。最后几经周折终于弄明白了点才有所收获。

       这其实是本末倒置的,而且这也说明我对软件的架构思想并不清晰。最近跟一个有着十多年的从业经验的汽车电子软件方面的大牛交流,才明白软件其实最为重要的是有一个完善的架构。一个完美的软件架构能够极大的节省开发和维护成本,所以有一个很好的软件架构真的是非常重要!而且软件架构的思想应该是要深深植入软件开发人员的脑海中的。

       说了以上这么多废话,可能大家会问 究竟什么才是真正的软件架构?其实这是一个很复杂的东西,需要追溯到最为根本的需求上面,需求才是所有的起点。说的直白一点我们需要知道我们这个软件究竟用来干什么。同时在我们学习计算机的时候老师们经常会拿出来说的有关软件设计的目标:可靠性(Reliable)安全性(Secure)可伸缩性(SCAlable)可定制化(CuSTomizable)可扩展性(Extensible)可维护性(MAIntainable)。

        一个好的嵌入式软件是需要满足功能的前提下满足这些条件才能算的上是一个好的嵌入式软件。而对软件架构的思想有一个比较好的理解也会让我们今后读程序和写程序的过程中省力不少。

    下面我将给大家讲一讲具体的软件框架搭建的过程:

    首先了解需求:了解软件的具体要做什么工作。针对所需要的功能做相应的驱动的配置和功能模块的初始化和具体到每一个功能的.C和.H文件都独立封装,解耦设计是可裁剪性的保障。

    各个功能部分同意分块放置,功能类似的靠近放置(变量命名时也遵循这个规则)。于是

    整个程序基本可以分成上图中的几个部分了每个部分都可以有几个.C.H文件。这是我们准备我们所需要的所有的材料的过程。

    我们都知道基本配置完成之后后面就是主程序流程的执行过程了。

    程序的执行才是我们核心的工作过程,从最开始的初始化,后面主循环外加中断整个流程就是我们做事情的过程在这个过程中我们统一去做各个功能模块之间变量和函数的交替变化和使用。而今后如果是修改的话也是按照以上的步骤进行修改就可以很方便。

    有关命名:

      命名一般包函两个方面一是变量命名,二是函数命名。

    变量命名需要直观且尽量简洁,当然直观是前提简洁是追求。当然业界也有很多流行的规范如驼峰命名法、匈牙利命名法、帕斯卡命名法和下划线命名法等。就这一点我觉得按个人习惯就好。值得注意的是变量放置的位置一般为了方便尽量也不要在各个功能块中交叉。

    有关函数命名,一般尽量表达清楚意思,而且多用传递参数也是有效的解耦的方式。

     

    有关程序的框架暂时写这么多,以后有新的感悟再进行补充和调整

    mark date : 20180815 17:03

    展开全文
  • USB驱动程序的理解

    千次阅读 2007-01-23 21:39:00
    USB驱动程序的理解 学了两个多星期了,USB驱动程序的有一小小的理解。现在总结如下!!!!!!!!1、每个设备对应一个PDO,每个PDO又对应多个FDO,在驱动程序中直

    对USB驱动程序的理解

    学了两个多星期了,对USB驱动程序的有一小小的理解。现在总结如下!!!!!!!!
    1、每个设备对应一个PDO,每个PDO又对应多个FDO,在驱动程序中直接操作的不是硬件而是相应的PDO和FDO。在USER和KERNEL通信方面,系统将每一个用户请求打包成IRP结构,将其发送至驱动程序,并通过识别IRP中的PDO来区别是发送给哪个设备的。另外,在驱动程序加载方面,WDM不通过驱动程序名称识别,而是通过一个128位的全局唯一的标识符GUID来实现驱动程序的识别,即每一个固件都有一个GUID,你通过GUID来区分是哪个固件。
    2、USB主机驱动符合WDM驱动体系结构也使用IRP(I/O请求包)的机制。但实际的USB驱动程序使用URB(USB请求块)结构向其硬件设备发送请求。USB驱动程序高度依赖其总线驱动程序(USBD.SYS),而不直接使用硬件抽象层(HAL)函数与硬件通信。
    3、USBD是USB系统软件中最关键的一层,它负责控制全部USB协议的操作和中断处理控制。主要功能有:设备设置、资源管理、数据传输(管道层次)以及公共数据定义等。管道机制和命令机制。管道机制:管道是设备和主机之间的逻辑连接,分为标准管道和逻辑管道,标准管道用语完成一些客户通过命令接口所传递的请求,如设置设备的地址等,但USBD不允许客户直接访问设备的标准管道。客户管道则有客户进行管理,并提供相应的数据缓冲区。命令机制允许客户以读写的方式对设备的数据及其控制部分进行访问,客户所要做的,仅仅是向USBD提供设备的地址及相关的数据缓冲区的指针。命令机制所提供的功能主要是USB总线管理相关的内容,如设备设置管理、设备数据访问、总线设备管理以及电流分配等。
    4、USB设备驱动程序设计
        2000DDK+VC6.0(只能用C,不能用C++)
        三个关键的例程:DriverEntry、AddDevice、ReadWrite
    (1)DriverEntry,完成某些全局初始化操作,它是内核模式驱动程序主入口点。
    extern "C"
    NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject,
                    IN PUNICODE_STRING RegistryPath )
    通过PDRIVER_OBJECT这一重要的数据结构,I/O管理器使用它来定义每一个设备驱动程序,DriverEntry主要工作是各种函数指针填入驱动程序对象的各个域中,这些指针为操作系统指明了驱动程序容器中各种子例程,重要包括下面指针成员:
        1、DriverUnload
        2、DriverExtension->AddDevice指向驱动程序的AddDevice函数
        3、DriverStartIo指向驱动程序处理串行I/O请求的函数。如果驱动程序采用标准的IRP排队的方式,应该设置该成员,使得指向驱动程序的StartIo例程。
        4、MajorFunction是一个指针数组,指向存在于驱动程序中的多种IRP处理函数。
        DriverObject->DriverUnload = DriverUnload;
        DriverObject->DriverExtension->AddDevice =AddDevice;
        DriverObject->MajorFunction[IRP_MJ_CREATE]= DispatchCreate;
     ~~~~~~~~~~~~~~
    (2)AddDevice
       一个驱动程序可以被多个设备使用。WDM驱动程序有一个特殊的AddDevice函数,PnP管理器为每个实例调用该函数。原形如下:
    NTSTATUS
    AddDevice( IN PDRIVER_OBJECT DriverObject,
        IN PDEVICE_OBJECT PhysicalDeviceObject);
    AddDevice函数的基本职责是创建一个设备对象并把它连接到以PDO为底的设备栈中。
    具体步骤如下:
    1) 用IoCreateDevice创建设备对象,并建立一个私有的设备扩展对象。
    PDEVICE_OBJECT fdo;
    NTSTATUS status = IoCreateDevice(DriverObject,
                                   sizeof(DEVICE_EXTENSION),
                                   NULL,
                                   FILE_DEVICE_UNKNOWN,
                                   FILE_DEVICE_SECURE_OPEN,
                                   FALSE,
                                   &fdo);
    2) 初始化设备扩展和设备对象的Flag成员。
    PDEVICE_EXTENSION pdc = (PDEVICE_EXTENSION)fdo->DeviceExtension;
    fdo->DeviceExtension;
    fdo->Flag2|=DO_BUFFERED_IO;
    3) 调用IoAttachDeviceToDeviceStace函数把新设备对象放到堆栈上。
    pdx->LowerDeviceObject=IoAttachDeviceToDeviceStack(fdo,pfo);
     设备对象(DEVICE_OBJECT或*PDEVICE_OBJECT)也是DDK定义的一个重要结构。它可以在其设备名称(DeviceName)域中(第三个参数)为设备对象进行命名。 设备对象另一个关键的域为扩展设备对象(DeviceExtension)大小,I/O管理器为设备对象分配一块内存,该指针指向一个用户定义的数据结构,用于保存每个设备实例的信息
    typedef struct _DEVICE_EXTENSION
    {
        PDEVICE_OBJECT DeviceObject; //device object this extension
    //belongs to
        PDEVICE_OBJECT LowerDeviceObject;  //next lower driver in//same stack
        PDEVICE_OBJECT Pdo;     //the PDO
        IO_REMOVE_LOCK RemoveLock;  //removal control locking structure
        UNICODE_STRING ifname;     //interface name
        DEVSTATE state     //current state of device
        DEVSTATE prevstate;   //state prior to removal query
        DEVICE_POWER_STATE devpower; //current device power state
        SYSTEM_POWER_STATE syspower;  //currnet system power state
        DEVICE_CAPABILITIES devcaps;   //copy of most recent device capabilities
        LONG handles;    //#open handle
        USBD_DEVICE_DESCRIPTOR dd;   //device descriptor
        USBD_CONFIGURATION_HANDLE hconfig;   //selected configuration handle
        PUSB_CONFIGURATION_DESCRIPTOR pcd;   //Configuration descriptor;
        LANGID langid;     //default language id for strings
        USBD_PIPE_HANDLE hPipe;
        USBD_PIPE_HANDLE hPipe_WriteCode;
    }DEVICE_EXTENSION,*PDEVICE_EXTENSION;
    AddDevice为设备对象注册一个接口,以便应用程序能通过注册接口来访问该设备。一个设备接口被一个128位的GUID唯一标识。
        status = IoRegisterDeviceInferface(pdo,&GUID_INTERFACE_USB,NULL,&pdx->ifname);得到GUID后,当响应PnP请求IRP_MN_START_DEVICE时,驱动程序调用下面函数使其可用,IoSetDeviceInterfacestate(&pdx->ifname,TRUE);
    在响应这个调用过程中,I/O管理器将创建一个指向设备的PDO符号连接对象。因为接口名最终指向PDO,所以PDO的安全描述符将最终控制设备的访问权限。(3)ReadWrite实现设备驱动程序功能的各个派遣函数,并实现总线枚举和管理函数,用于设备初始化以及错误恢复。是整个驱动最重要部分,以读数据请求为例子,即主机要求设备向其传输数据。
    1)建立并提交一个URB,USB驱动从不直接和硬件对话,通过创建URB并把URB提交到总线驱动程序就可以完成硬件操作,USBD.SYS是接受URB的实体,向USBD的调用被转化为带有主功能代码为IRP_MJ_XXX的IRP。然后USBD再调度总线时间,发出URB中指定的操作。
    创建一个URB是USB驱动最基本的工作,首先应该为URB分配内存,然后调用初始化例程把URB结构中的各个域填入请求要求的内容。最后通过创建并发送一个内部I/O控制(IOCTL)请求到USBD驱动程序来发送这个URB包,从而完成USB请求。
    2)创建并发送IOCTL请求
    创建完URB后,我们创建并发送一个IOCTL(内部I/O控制)请求到USBD,然后等待设备回应,相应的函数为SendAwaitUrb
    3) 返回设备完成状态

    展开全文
  • 今天就和大家分享我个人程序的理解以及开发过程中的一些体会。张小龙是基于他未来服务场景——所见即所得的信息交互过程提出的小程序,他认为微信新形式的服务不应当只是停留在原有公众号订阅、推送的基础上;

    从小程序公布、内测到今天,市面上对于小程序众说纷纭,小程序的到来给我们(微信开发)带来了什么,仅仅是又多了一种推广渠道吗?又或者是真的像外界说的那样它将取代APP?今天就和大家分享我个人对小程序的理解以及开发过程中的一些体会。

    张小龙是基于他对未来服务场景——所见即所得的信息交互过程提出的小程序,他认为微信新形式的服务不应当只是停留在原有公众号订阅、推送的基础上;而应当更类似于APP支持一些扩展开发的能力但又无需用户下载安装便能提供信息交互。小程序对用户来说可以实现用完即走、用户不会在其中有太多的驻留,同时也不会有太多的推送消息对用户形成侵扰。那么接下来我们就从小龙提出的产品理念来看小程序和公众号、APP、传统网站的区别

    • 和APP相比较,

      1. 分发渠道;小程序分发渠道比较单一,只能通过二维码线下分发而APP则可以通过下载链接、应用商店、二维码等进行分发
      2. 开发角度来说;开发一套跨平台的APP远大于小程序的开发
      3. 用户体验上;小程序是Hybird形式,要优于H5应用但不如原生APP体验好
      4. 信息表达上;小程序限定程序大小不超过1M也就意味着信息量不会太大、界面跳转不会太多,因此获取有效信息的效率上小程序较高
        所以相比APP,小程序还是略有劣势的,但你无法反驳的是小程序信息的传播效率一定会高于普通APP,因为它是在微信内使用。相信大家和我一样在手机的APP中微信一定是打开次数相当多、驻留时间相当长的一个应用
    • 相比公众号而言,小程序省去了菜单等形式取而代之的直接是UI操作界面,这使交互过程变得更加直观、便捷;同时小程序可以直接置顶在会话界面(只能1个),使用起来较为方便。但是小程序不支持消息推送,同时在搜索上小程序暂不支持模糊搜索这也就意味小程序在微信内没有入口,而是希望商家通过二维码自行推广,可以看出微信不希望服务商将微信当作应用商店来对待。所以:

      1. 从推广角度来说,小程序不如公众号
      2. 从用户体验上来说小程序的形式类似于APP要好于公众号(公众号有些像命令窗口)
    • 对比传统网站而言,传统网站虽然传播、使用便捷,但其不具备APP的特性,所以从移动互联领域来说不具有太大可比性,因为两者形式不是一类。这里之所以列出来是想说明两点:

      1. 小程序是可以基于微信内核调用基础的手机本地能力的(拍照)
      2. 小程序不同于web的测试OK后能立即发布上线,它需要经过微信审核通过后才能正式上线;因此它不适合于一些以节假日促销活动为主的推广应用
    • 从APP的最终形态上来,小程序是基于微信内核的微应用,它不能独立运行;从应用架构上来说看,小程序是Hybird形式。所以从产品体验上小程序介于H5和原生app之间,初次访问时加载速度较H5提升不大;不过在不关闭的前提下小程序是具有断网缓存使用的能力(我测试A、B两个页面,初次打开A后启用飞行模式后点击跳转可正常跳转到B页面,同时B页面的非网络请求action可以被触发);从这一点可以看出小程序确实是将编译后的资源下载到了微信客户端内。

    • 开发过程来看,小程序的编码风格接近于html,上手相对容易;在控件及API上局限于微信团队的开发提供,不允许引入第三方js资源也无法集成第三方SDK

    我们尝试了从多个角度去理解微信小程序,现在我们可以回答为什么小程序无法取代APP。
    1.小程序没有独立入口
    2.小程序没有推送能力,而目前行业内,稳定的消息推送能力已经被视为APP的一个基本能力
    3.组件及功能的局限,小程序不能引入第三方js也无法集成第三方SDK,这就不适合功能复杂尤其是企业级的APP
    4.上线须提前提交微信审核(假如京东双11上小程序然后一不小心被拒了…)而APP目前多支持热更新能力
    5.应用体验不如原生APP。所以微信小程序并不会取代APP,但它给一些研发能力不足的中小互联网企业提供了一种方式使得他们可以更快速便捷的将自己产品、服务通过微信渠道提供;有次看来小程序更像是一种工具

    同样,基于以上几点小程序也不太适合作为企业产品销售、推广的渠道,这也体验了张小龙对小程序是一个提供服务、用完即走的工具的定义

    在小程序没有发布之前,大家很关心小程序的入口问题。小程序在微信内没有入口,可以通过扫码、搜索(目前暂不支持模糊搜索)、好友分享获得;小程序间不能跳转;iOS上使用过的小程序会出现在【发现à小程序】标签组中,此外安卓上还可以把小程序的快捷方式放到桌面,会话界面只能置顶一个小程序即用户一次只能使用一个小程序

    小程序是微信的一个新产品,那作为可能已经开发过公众号服务的企业,我们能不能将公众号和小程序进行串联呢?如果可以,那么在哪些功能点上是可以相互串联的呢?

    公众号和小程序做关联我们需要将其绑定到同一个开放平台账号中。
    1.在UI上,小程序无法复用公众号开发的界面,需要重写
    2.后台改造上,小程序后台要求支持HTTPS并且TLS 版本要在v1.2及以上(jdk1.7及以上)
    3.用户关联上,小程序和公众号的用户映射可以通过UnionID机制来对应

    我们知道微信公众号一个强大的线下支持点就是近场服务,像门店、连WIFI,目前小程序支持导入公众号中的门店,然而对于我个人最为关心的WIFI功能暂时却无法串联。本人将小程序二维码的链接信息放到了链接WIFI成功后跳转的URL上,发现并没有用,希望后续小程序能通过连来WIFI启动吧,这样对于服务、推广将有很大的帮助(设想下去饭店点餐,连上WIFI后直接启动点餐小程序…..)

    最后和大家分享下鄙人在小程序开发中的一些体会也可以说是槽点

    1.对于屏幕适配,小程序提出了rpx的概念也推荐使用,750rpx=100%宽度,然而在高度上发现按照世面上普遍的16:9的屏幕算,高度全屏的值居然不是整数,最后发现没有一个比较好的设置高度全屏的表示方法(高度设置100%并不能全屏)。
    2.在后台的改造上也是发现iOS下请求正常而安卓异常,最后在轮胎的F&Q中发现官方说:TLS要在v1.2及以上,也就意味着jdk要使用1.7或者更高

    最后吐槽一下关于微信审核上的一些坑,微课堂签到的小程序因为填写微信号,询问用户是否关注普元公众号等内容被拒;可以看到小程序的审核是相当的严格,附上小程序上线审核说明网址:https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=2032443910&docid=c53fb90c11590a1b86c109b4006fae27

    • 为什么不支持模糊查询?
      目前小程序暂不支关键字模糊搜索,一旦支持关键字模糊查询,线下的二维码推广会受阻

    • 如果原有的公众号要和小程序打通,原来的公众号是否也需要采用HTTPS协议?
      公众号请求暂时没有这个显示;小程序在消息推送(如事件推送)其实是走的http,只是业务的ajax请求为了安全要求后台server支持https协议

    • 从管理来说,这个小程序对企业的哪个方面支持最大?
      相对来说一些及时性的像签到上下班等简单服务端功能是比较适合上小程序的

    • 这个小程序必须基于微信吗?有无可能的脱离微信存在?
      应该不会,小程序作为微信内嵌产品一旦脱离微信客户端就和普通的APP没太大区别(想想企业微信);再者就是小程序作为工具的目的就是服务于微信内用户,脱离微信客户端再分享传递上势必得再开发

    • 既然小程序可以放到桌面,为什么说用后即走呢

    看小龙说的视频的可以知道,用完即走的概念是相比较公众号而言;作为小程序,如果关闭后虽然在桌面上又快捷方式但是在微信内是没有入口的且不接收消息的,这一点是区别于公众号

    展开全文
  • int flags = packInfo.applicationInfo....//应用程序信息标记 if((flags&ApplicationInfo.FLAG_SYSTEM)==0){ //用户程序 appInfo.setUserApp(true); }else{ //系统程序 appInfo.setUserApp(false); }
  • 调试程序的一个理解

    千次阅读 2018-03-07 17:48:18
    只是我们站在这个过程中的不同阶段说出自己调试程序的一个理解。而这个我们也是有关联的。因为有些人非常熟悉日志打印错误。有些人非常熟悉println()和alert()。有的人喜欢单步debug方式(慢,不到万不得已是不...

    1,什么东西都有一个过程的。只是我们站在这个过程中的不同阶段说出自己对调试程序的一个理解。


    而这个我们也是有关联的。


    因为有些人非常熟悉日志打印错误。


    有些人非常熟悉println()和alert()。


    有的人喜欢单步debug方式(慢,不到万不得已是不这样做的)。将代码逐渐减少的排错方式(慢,不到万不得已是不这样做的)。


    有的喜欢采用橡皮鸭调试方法。


    有的当程序出现问题的时候他什么都不做就只是在思考,在脑子里不停分析这个功能点或者代码片段的执行逻辑过程,对,就是用脑子模拟机器的执行过程。


    而且我们思考问题也是跟时间空间情绪相关联的。

     


    2,都是一个熟悉过程。没有任何一个方法,放之四海而皆准。当我们没有方法的时候,就可以好好思考上面的策略了。然后自己一点一点地熟悉。最后拥有了属于自己的一个理解过程。拥有了属于自己的心得体会和调试程序手段。这些调试方法都非常的好,我们需要灵活搭配使用。

     

    3,橡皮鸭式调试程序思想。是从一个大牛的博客上读到的。然后理解了他的概念。就是说,当我们程序出错了或者当我完成一个功能了,我们应该对着一个橡皮鸭子说出,我们这个功能逻辑的整个逻辑过程。他特别强调了是说出整个逻辑过程越详细越好,绝不是那种,这里就是调一个方法,那里就是定义一个局部变量方式,而是具体到每一个细节,如果能够准确而详细地说出来那就是OK的。如果在说的过程中,出现了卡顿或者自己都描述不清楚自己的程序做了什么。那么恭喜你,橡皮鸭式调试方式已经显示出它的作用了,帮你找到了程序的Bug。为什么是橡皮鸭?因为他不说话,他听你说。

     

    4,之前读关于Linux系统的一篇文章。那篇文章中提到对调试程序的一个看法。他说有些人就是厉害,当程序出现错误时候,根本不做任何处理,只是动脑子想整个逻辑实现过程,力求程序在脑子中实现执行过程。这是很厉害的。


    5,我们都知道读书的时候,想要考高分。至少我们对知识是特别熟悉的,而且有一定的理解深度。并且我们能够以一个知识点串联起整个生态系统的知识。剖开高智商的人来说,我们都需要熟悉这些基本知识并且有一定深度的理解然后把这些知识系统化。编程高手都是一点一点训练出来的。你想下你愿意为编出优美的程序而读书吗?比如只是针对程序来说。提高程序设计:《Head First 设计模式》《Design Pattern》;提高程序结构:《重构 改善既有代码设计》《代码整洁之道》;提高代码内容:《修改Java程序的151个建议》《Effictive Java》。整体提升:《代码大全》。同理,为了超强的调试程序能力,都需要知道上面的调试手段,理解这些手段,熟悉这些手段。然后练习。练习多了,思考多了,对比着思考多了,自然就厉害了。




    展开全文
  • 递归的理解以及怎么写递归程序

    千次阅读 2019-05-28 22:43:23
    1.一定要搞清楚当前你的递归程序的功能是什么,以及需不需要返回值,如果需要,则返回的值是什么,如果当前递归程序要完成的功能模棱两可、一知半解,那么逻辑肯定混乱,也就不容易写出正确的递归程序。...
  • 高级程序设计语言基本理解

    千次阅读 2019-07-12 10:20:46
    我是在大学期间开始接触编程,但是学习第一门程序设计语言是C语言,但是当时只是简单学习,能用C语言写一些简单控制台程序,所以当时对于程序设计来说只是一种玩票性质。 后来也进过实验室,玩过单片机,还...
  • USB驱动程序的理解(1)

    千次阅读 2005-10-15 19:35:00
    USB驱动程序的理解(1)学了两个多星期了,USB驱动程序的有一小小的理解。现在总结如下!!!!!!!!1、每个设备对应一个PDO,每个PDO又对应多个FDO,在驱动程序中直接操作的不是硬件而是相应的PDO和FDO。在...
  • 程序 session_key 的理解

    千次阅读 2020-01-21 23:42:58
    1 用户在登录一次后,微信服务器会通过session 记录用户登录态,如果用户长时间不登录话,这个服务端session会被清理掉,当调用checksession 时候,会告诉你失败,用户已经下线了,session不在了,同时,...
  • 第一阶段:在 app.json 中配置 "tabBar" : { ...出现问题:有些页面不想有...最终解决问题方法是,加入当前也是一级页面,到希望跳转到页面不要有Tabbar时,不要使用 redirectTo而是使用 navigateTo
  • 基于matlab程序对PID控制算法的理解

    万次阅读 多人点赞 2016-12-23 11:57:23
    %用增量式PID控制算法编写仿真程序 %(输入分别为单位阶跃、正弦信号,采样时间为1ms,控制器输出限幅:[-5,5], % 仿真曲线包括系统输出及误差曲线,并加上注释、图例)。 clear all; close all; ts=0.001; %采样...
  • JAVA程序开发中MVC个人理解

    千次阅读 2015-02-13 15:25:52
    MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。 jsp+Servlet+JavaBean 就是一种基础的基于mvc的开发模式在...
  • 中断处理程序异步运行,指是一旦中断处理程序运行起来,他不会等待其他事情发生而暂停,它会一直运行完毕(中断嵌套另外了)。这与同步是相对,同步即为程序运行过程中可能需要依赖其他条件,如果条件满足...
  • 看王爽《汇编语言(第三版)》时候,第4.9章 有一处我一直无法理解:PSP区和程序区虽然物理地址连续,却有不同段地址。一开始我死活想不通这句话是什么意思,找了百度百科也没解释清楚。后来看到一个网友回答...
  • 首先看了平衡小车之家给的PS2遥控手柄使用说明,讲解的内容比较简洁,光凭这个说明不能很轻易地理解配套的程序逻辑,接下来结合平衡小车之家的程序内容对照说明解释一下我的理解。因是个人理解并非官方说明,如有误...
  • 对程序业务分层的理解(C#)

    千次阅读 2006-05-31 20:33:00
    最开始学用C#做应用时,往往将大量的代码叠交在一个.CS里,一但程序的功能或界面发生改变时,要大量的代码进行改进,改到最后时往往会搞不清这一事件所要实现的功能和实现功能的逻辑.现在将功能代码分离为:1...
  • 面向对象的程序设计,我记得好像是上世纪70年代提出来,具体时间不太记得了,那么到现在应该有40多年历史了,设计模式,也是上世纪80-90年代提出来,至今也有20多年历史了。  如今很多程序员,可以很...
  • 理解程序内存

    千次阅读 2013-01-30 16:48:21
    理解程序内存内存很多人来说感觉是个很熟悉东西,因为我们在用VC调试程序时,很多时候都会察看内存中变量值。但是,很多时候我们思维也就因此局限在有源码模块,当遇到一些跨模块或是没有源代码Bug,...
  • java 本身是一种面向对象的程序设计语言,因此这三大特征对于学好java语言很重要。 面向对象程序语言三大特征分别是:1.封装,2.继承,3.多态 第一个特征:封装: 封装:简单地说就是把数据和方法放在一个类...
  • ARM加载域和运行域的理解 一般而言,一个程序包括只读的代码段和可读写的数据段。在ARM的集成开发环境中,只读的代码段和常量被称作RO段(ReadOnly);可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要...
  • 桩程序和驱动程序的简单理解

    千次阅读 多人点赞 2018-05-21 09:39:13
    转自:驱动模块和桩模块概念和区别===================分割线===================桩模块和驱动模块(以C语言为例): 很多人桩模块和驱动模块概念会搞不清楚,那么下面来介绍这两个概念: 模块结构实例图:...
  • 下面这个程序不见得在每种编译器上都能通过编译,既使通过了编译,也不见得可以成功运行并输出结果。...但它至少能引发你的思考,加深一点你this指针的理解,如果你还不是十分理解的话。#include using namespace s
  • Linux的理解

    千次阅读 2017-03-15 23:47:59
    在简单的学习后,查一下资料后...其实我个人Linux的理解是一种自由的创作加上分享 对于程序语言的学习最重要的是对于该程序语言的表述的理解,从宏观上去看各个部分的作用和联系,并分配他们的功能才能做到真正掌握
  • (1)ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧栈顶。 由于栈地址大小是从上到下从大到小,所以ESP指在栈最底端。(2)EBP:基址指针寄存器...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,760
精华内容 21,504
关键字:

对程序的理解