函数调用

Linux学习之\"exit函数\"

此生再无相见时 提交于 2020-04-07 10:17:20
先看下"_exit"和"exit": exit被调用时,将冲刷所有的标准I/O流,关闭所有打开的文件描述符。在 传统实现 中,同时也将关闭标准I/O流。即表示标准输出FILE对象的相关存储区将被清0。而_exit不会执行这些操作。 由于父子进程共享同一地址空间,当父进程恢复运行并调用printf时,不会产生任何输出,它返回-1。这就是上一节调用_exit的原因。 然而,大多数exit的现代实现不再关闭流。因为进程即将终止, 内核 将关闭所有已打开的文件描述符。 Linux程序的终止分为"正常终止"和"异常终止",具体可能情况如下: 正常终止 从main返回 调用exit:ISO C定义 调用_exit或_Exit:前者由ISO C定义,后者由POSIX.1定义 最后一个线程从其启动例程返回 最后一个线程调用pthread_exit 异常终止 调用abort:产生SIGABRT信号 接到某些信号 最后一个线程对取消请求做出响应 几个要点: 1.不管进程如何终止,最后都会执行 内核 中的同一段代码:为相应进程关闭所有打开描述符,释放内存等等。 2. 若父进程在子进程之前终止了,则子进程的 父进程将变为init进程 ,其 PID为1 ; 保证每个进程都有父进程。 3.当子进程先终止,父进程如何知道子进程的终止状态?事实上,内核为每个终止子进程保存了终止状态等信息,父进程调用wait等函数

【zepto学习笔记03】事件机制

馋奶兔 提交于 2020-04-07 05:51:17
前言 我们今天直接进入事件相关的学习,因为近期可能会改到里面的代码 就zepto来说,我认为最重要的就是选择器与事件相关了,随着浏览器升级,选择器简单了,而事件相关仍然是核心,今天我们就来学习学习 zepto事件处理部分篇幅不大,不到400行,前面篇幅也很小,所以真的很适合移动开发 变量定义 1 var $$ = $.zepto.qsa,2 handlers = {}, _zid = 1,3 specialEvents = {},4 hover = {5 mouseenter: 'mouseover',6 mouseleave: 'mouseout'7 } 事件部分首先定义了几个变量,$$为zepto选择器的方法,暂时不管他(据观察,好像也没有地方用到了,所以无意义) handlers为一个对象,与_zid息息相关,暂时不知道干什么的(据猜测两个应该是保存函数句柄,为removeEvent做准备) hover应该会同时触发两个事件才会触发,我们这里先不管,继续往下看 这里提供一个zid飞方法,该方法用于保证-zid的唯一性 1 function zid(element) {2 return element._zid || (element._zid = _zid++)3 } 算了,我们这里还是用一个实际点的方法跟进来吧,首先说一个关键的 $.Event(type,

MySQL 查询优化器(二)

谁都会走 提交于 2020-04-07 05:36:48
1.6多个查询字段(常量条件) 多个查询字段的查询处理逻辑如下所示: JOIN:prepare阶段 setup_tables():同1.1测试。 setup_fields():同1.1测试。 setup_conds():同1.4测试。 JOIN:optimize阶段 optimize_cond():类似1.4测试,不同之处在于查询的where条件中有恒等常量,在优化过程中会调用remove_eq_conds将1=1条件删除。 make_join_statistics():与1.4测试类似,由于where条件查询有两个,并且其中一个条件可以通过索引查询。因此首先通过调用update_ref_and_keys()(sql\sql_select.cc:3967)函数,查找可以使用索引的字段。 SQL_SELECT::test_quick_select():同1.5索引测试 get_key_scans_params():同1.5索引测试。 choose_plan():同1.3测试。 greedy_search():同1.3测试。 best_extension_by_limited_search():同1.5索引测试。 JOIN:exec阶段 以下操作同1.3测试。 通过测试可以看出,对于常量等式对查询优化器来说没有任何意义,会在optimize_conds时将常量等式删除

JavaScript的public、private和privileged模式

非 Y 不嫁゛ 提交于 2020-04-06 18:24:36
JavaScript 的public、private和privileged模式 原文: Private Members in JavaScript 公共/私有变量和方法 通过一个简单的的例子,来展示如何使用JavaScript在类里面创建私有变量和方法 Summary 私有变量 在对象内部使用'var'关键字来声明,而且它只能被私有函数和特权方法访问。 私有函数 在对象的构造函数里声明(或者是通过var functionName=function(){...}来定义),它能被特权函数调用(包括对象的构造函数)和私有函数调用。 特权方法 通过this.methodName=function(){...}来声明而且可能被对象外部的代码调用。它可以使用:this.特权函数() 方式来调用特权函数,使用 :私有函数()方式来调用私有函数。 公共属性 通过this.variableName来定义而且在对象外部是可以读写的。不能被私有函数所调用。 公共方法 通过ClassName.prototype.methodName=function(){...}来定义而且可以从对象外部来调用。 原型属性 通过ClassName.prototype.propertyName=someValue来定义。 静态属性 通过ClassName.propertyName=someValue来定义。

使用Excel调用ABAP系统的函数

馋奶兔 提交于 2020-04-06 18:14:55
效果:在excel里创建一个按钮,开发一些VB script,可以连接指定的ABAP系统并执行系统里的ABAP function module。 在这里例子里执行ABAP系统的函数TH_USER_LIST, 把当前系统登录的用户取回来显示在excel里。 该按钮的点击响应函数实现代码: Sub CommandButton1_Click() Set R3 = CreateObject("SAP.Functions") Set myConnction = R3.Connection myConnction.ApplicationServer = "ag3.xxx.sap.corp" myConnction.SystemNumber = 54 myConnction.Client = "001" myConnction.user = "WANGJER" myConnction.Password = "your password" If myConnction.Logon(0, True) <> True Then MsgBox "Logon failed" Exit Sub End If Dim callFunctionModule As Object Set callFunctionModule = R3.Add("TH_USER_LIST") callFunctionModule

Android—Camera Framework C/S架构服务请求

一个人想着一个人 提交于 2020-04-06 17:34:47
在前一篇文章 Camera Client/Server的binder IPC机制 中阐述了Android进程间通信binder IPC机制基础,Android Camera基于这个基础设计了Camera Framework Client/Server架构,文中给出了其类图设计。本文从Android 4.4 版本源码入手,分析Camera App向Camera Service请求服务与返回的过程。服务请求的过程从上到下依次要经过三个大的过程:1. Camera App调用Framework Camera类Java API;2. Camera类Java API通过JNI调用JNI层的C++接口函数;3. 基于binder通信设计的Camera IPC通信过程。下面结合代码分析整个服务请求过程。 Camera应用调用Framework Camera类API 在Android Kitkat原生Camera2应用(packages/apps/Camera2/)的PhotoModule, VideoModule, WideAnglePanoramaModule类中用CameraUtil.open()方法来打开Camera。然后依次调用:CameraHolder的open()方法,AndroidCameraManagerImpl的cameraOpen()方法

Android的Camera架构介绍

拥有回忆 提交于 2020-04-06 13:45:05
第一部分 Camera概述 Android的Camera包含取景器(viewfinder)和拍摄照片的功能。目前Android发布版的Camera程序虽然功能比较简单,但是其程序的架构分成客户端和服务器两个部分,它们建立在Android的进程间通讯Binder的结构上。 以开源的Android为例,Camera的代码主要在以下的目录中: Camera的JAVA程序的路径: packages/apps/Camera/src/com/android/camera/ 在其中Camera.java是主要实现的文件 frameworks/base/core/java/android/hardware/Camera.java 这个类是和JNI中定义的类是一个,有些方法通过JNI的方式调用本地代码得到,有些方法自己实现。 Camera的JAVA本地调用部分(JNI): frameworks/base/core/jni/android_hardware_Camera.cpp 这部分内容编译成为目标是libandroid_runtime.so。 主要的头文件在以下的目录中: frameworks/base/include/ui/ Camera底层库在以下的目录中: frameworks/base/libs/ui/ 这部分的内容被编译成库libui.so。 Camera服务部分: frameworks

halcon C# 学习笔记-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=【不定时更新】成都

拈花ヽ惹草 提交于 2020-04-06 12:34:27
这两天在看halcon学习网上刘工录的视频,针对halcon和C#联合开发的一些坑做一些总结,我个人也做做笔记,不至于看完就忘记了。 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------   HsmartWindow 控件除了会调用halcondonet.dll外还会调用halcon.dll ,如果程序根目录不存在halcon.dll,则会通过全局变量找到halcon mevtec目录去调用,这样是没有问题的; 如果根目录下存在halcon.dll,则会优先调用根目录下的文件,然后halcon.dll内部如果使用到HsmartWindow的功能,则还会调用一个Hcanvas.dll的文件,如果根目录下没有这个文件则会报错,程序编译后启动过程中报错, 报错内容为: -------------------------------------------------------------------------------

vue双向数据绑定失效

吃可爱长大的小学妹 提交于 2020-04-06 11:23:38
1、如果data里面只定义了对象,对象里面的键值没有,getter/setter函数无法监听到数据变化,会导致此现象发生; 解决办法为调用vue的set函数,设置需要绑定的键值: Vue.set(obj,key,value) Or this.$set(obj.key,value)   2、如果数据层次太多,例如数组包对象,对象包数组,多层嵌套,会出现v-if调用失效,页面不重新渲染问题; 解决办法为在数据处理完成之后调用$forceUpdate()发放: this.$forceUpdate()    来源: https://www.cnblogs.com/zaijin-yang/p/12640799.html

CTP接口

瘦欲@ 提交于 2020-04-06 07:03:59
【前言】对上海期货交易平台CTP接口的一个学习总结.(参考vn.py官方文档) 一、引言   目前本人所在的公司一共有三款平台,分别基于C++, C#和Python。其中C#和Python平台都是由交易员开发;C++平台则是由专职IT团队作为一个通用平台开发,内部组件进行了封装(交易员不可见),对外提供行情、交易的API用于策略开发(除了C++ 外也包括C#和Python可用的API)。 用C++ 开发的交易系统:    理论上这款C++平台应该是最为稳定和强大的,由专业人士设计,同时采用封装核心,暴露API,支持组件模块开发,linux服务器运行的形式。   但是在实际运用中,交易团队表达了一个强烈的观点:这个平台实在是太难用了! 由IT团队设计的API功能非常强大,但是也太过繁琐,导致学习曲线极为陡峭。 为了追求速度,没有设计原生GUI(本来就为了在Linux服务器上跑),但是今天绝大多数的非超高频(追求微秒级延迟的那种)交易策略, 几乎都需要有人实时监控 ,你总不能让交易员盯着个linux shell上不断print出来的内容或者盘中去翻日志吧,这个运维风险就扛不起。尽管可以作为插件的形式开发GUI,但C++本身的GUI开发还是较为复杂的,非专业IT很难搞的定。 交易员团队的需求变化很快,通常等不及IT去排班开发,最好是今天收盘有个点子,明天开盘就能开始接实盘数据验证