作用域

C语言存储类别和链接

▼魔方 西西 提交于 2019-12-03 12:11:48
目录 C语言存储类别和链接 存储类别 存储期 五种存储类别 C语言存储类别和链接 ​ 最近详细的复习C语言,看到存储类别的时候总感觉一些概念模糊不清,现在认真的梳理一下。C语言的优势之一能够让程序员恰到好处的控制程序,可以通过C语言的内存管理系统指定变量的作用域和生存周期,实现对程序的控制。 存储类别 基本概念 对象 :在C语言中所有的数据都会被存储到内存中,被存储的值会占用一定的物理内存,这样的一块内存被称为 对象 ,它可以储存一个或者多个值,在储存适当的值时一定具有相应的大小。(C语言对象不同于面向对象语言的对象) 标识符 :程序需要一种方法来访问对象,这就需要声明变量来实现,例如: int identifier = 1 ,在这里 identifier 就是一个标识符,标识符是一个名称并遵循变量的命名规则。所以在本例中 identifier 即是C程序指定硬件内存中的对象的方式并提供了存储的值的大小“1”。在其它的情况中 int * pt 、 int arr[10] ,pt就是一个标志符,它指定了储存地址的变量,但是表达式*p不是一个标志符,因为它不是一个名称。 arr 的声明创建了一个可容纳10个 int 类型元素的对象,该数组的每一个元素也是一个对象。 作用域 :描述程序中可访问标识符的区域。因为一个C变量的作用域可以是块作用域、函数作用域、文件作用域和函数原型作用域。

Mybatis源码解析(一) —— mybatis与Spring时如何整合的?

旧巷老猫 提交于 2019-12-03 11:22:38
Mybatis源码解析(一) —— mybatis与Spring时如何整合的?   从大学开始接触mybatis到现在差不多快3年了吧,最近寻思着使用3年了,我却还不清楚其内部实现细节,比如: 它是如何加载各种mybatis相关的xml? 它是如何仅仅通过一个Mapper接口 + Mappe.xml实现数据库操作的(尽管很多人可能都清楚是通过代理实现,但面试时一旦深入询问:比如Mapper的代理类名是什么?是通过JDK还是cglib实现?)? 在同一个方法中,Mybatis多次请求数据库,是否要创建多个SqlSession会话? 它与Spring是如何适配(整合)的? 在Spring中是如何保障SqlSession的生命周期的? 等等一系列的问题。。。   如果以上问题你自认为无法回答,或者说了解一些,那么就从现在开始,我们来一一揭开这层面纱。 一、Mybatis:最简单测试Demo   相信只要用过Mybatis的同学看到下面的代码一定不会陌生,如果不清楚的可以看下 官网文档 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new

python作用域

纵饮孤独 提交于 2019-12-03 10:59:37
局部和全局作用域   在被调用函数内赋值的变元和变量,处于该函数的“局部作用域”。在所有函数之外赋值的变量,属于“全局作用域”。处于局部作用域的变量,被称为“局部变量”。处于全局作用域的变量称为“全局变量”。作用域遵循如下的原则: 全局作用域的代码不能使用任何局部变量 局部作用域可以访问全局变量 一个函数的局部作用域的代码,不能使用其他局部作用域的变量。 在不同的作用域中,可以使用相同的名字命名不同的变量。 1 def spam(): 2 eggs = 31337 3 spam() 4 print(eggs)   如上所示的代码,运行之后将会报出如下所示的错误: Traceback (most recent call last): NameError: name 'eggs' is not defined   报错的原因是没有找到变量eggs,因为在全局变量域中引用了局部变量,而程序执行在全局作用域重视,不存在局部作用域,所以不会有任何局部变量。这就是为什么只有全局变量能用于全局作用域。   2.局部作用域不能使用其他局部作用域内的变量    一个函数被调用时,就创建了一个新的局部作用域,这包括一个函数被另一个函数调用时的情况。 def spam(): eggs = 99 bacon() print(eggs) def bacon(): ham = 101 eggs=0 spam(

es6 变量

 ̄綄美尐妖づ 提交于 2019-12-03 10:03:47
1.变量: var 1.可以重复声明 2.无法限制修改 3.没有块级作用域 let 1不能重复声明 2,变量——可以修改(赋值) 3.块级作用域 const 1.不能重复声明 2.常量——不可以修改(赋值) 3.块级作用域 来源: https://www.cnblogs.com/lerong/p/11787496.html

Angular入门笔记

易管家 提交于 2019-12-03 09:52:47
自己总结的尚硅谷Angular课程笔记 1.入门介绍 1.1AngularJS是什么? jQuery是js函数库 Angular是Google开源的JS结构化框架 官网: https://angularjs.org/ 1.1.1AngularJS特性和优点 耦合度越低越好,避免牵一发而动全身的事情发生 1.1.2与jQuery比较 angular:在页面和内存之间建立管道,让数据在管道里来回流动 1.1.3AngularJS能做什么项目 构建单页面(SPA)Web应用或Web App应用 1 )单页面应用(SPA ):single page application 特点: 1.将所有的活动局限于一个页面 2.当页面中有部分数据发生了变化,不会刷新整个页面,而是局部刷新 3.利用的是ajax技术、路由 2 ) 使用插件可以看到网页里使用的angular相关数据 没有使用angular会提示 1.1.4关于版本的问题 学的是1.*版本,而AngularJS还有2.*和4.* 1.*的版本采用的事JavaScript的语法 2.*和4.*用的事typescript的语法 1.2开发第一个AngularJS应用 1.2.1例子 实现效果: 1)jQuery实现 引入jQuery库 <!DOCTYPE html > < html > < head lang= "en" > < meta

js笔记(4)--关于在window.onload()里面定义函数,调用函数无法执行~

本秂侑毒 提交于 2019-12-03 09:39:07
由于本人学习js学不久,所以,今天刚好遇到了一个关于在window.onload里面定义函数,然后在html里面调用函数时出现错误。具体见下面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <script > window.onload = function () { //绑定两个输入框var Ow_before = document.getElementById('w_before'); var Ow_after = document.getElementById('w_after'); //定义调用函数bianhuan,然后在HTML中用button的点击事件onclik调用。 function bianhuan(the_option) { switch (the_option) { case 'covert_upper': Ow_after.value = (Ow_before

JSP九大内置对象及四个作用域

江枫思渺然 提交于 2019-12-03 06:01:27
九大对象: 内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 1-out: javax.servlet.jsp.JspWriter类型,代表输出流的对象。作用域为page(页面执行期) request:javax.servlet.ServletRequest的子类型,此对象封装了由WEB浏览器或其它客户端生成地HTTP 请求的细节(参数,属性,头标和数据)。作用域为request(用户请求期)。 方法由可查看API response:javax.servlet.ServletResponse的子类型,此对象封装了返回到HTTP客户端的输出,向页面 作者提供设置响应头标和状态码的方式。经常用来设置HTTP标题,添加cookie,设置响应内容的类型和状 态,发送HTTP重定向和编码URL。作用域为page(页面执行期)。 pageContext:javax.servlet.jsp.PageContext(抽象类)类型,作用域为page(页面执行期)。此对象 提供所有四个作用域层次的属性查询和修改能力,它也提供了转发请求到其它资源和包含其他资源的方法 : 该对象的方法都是抽象方法 session:javax.servlet.http.HttpSession类型,主要用于跟踪对话。作用域session(会话期—)。

js函数(4)闭包

与世无争的帅哥 提交于 2019-12-03 05:24:55
8.6闭包 背景:3.10 变量作用域 在函数体内,局部变量的优先级高于同名的全局变量。如果在函数内声明一个局部变量或者函数参数中带有的变量和全局变量重名,则局部变量会覆盖全局变量; 在全局作用域编写代码时可以不写var 语句,但是声明局部变量时必须使用var语句 3.10.1函数作用域和声明提前 js中没有块级作用域,取而代之是函数作用域:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。 js的函数作用域值:在函数内声明的所有变量在函数体内是始终可见的。     变量在声明之前就已经可以使用---------声明提前 3.10.2作为属性的变量 使用var声明一个变量,不可以使用delete删除;不用var定义的变量则可以使用delete删除。 js中使用this关键字来引用全局对象,却没有方法引用局部变量中存放的对象。 3.10.3作用域链 类比 局部变量看做是自定义实现的对象的属性。 每一段js都有一个与之关联的作用域链:该作用域链是一个对象列表或者链表,该组对象定义了这段代码”作用域中“的变量。 当js需要查找变量x时(过程称作变量解析) 1 、它会从链中的第一个对象进行查找,如果这个对象有一个名为x的变量,则会直接使用这个属性的值 2 、如果第一个对象中不存在名为x的属性,则会继续查找链上的下一个对象。 3如果第二个对象依旧没有名为x的属性

函数(作用域,匿名函数,函数式编程,高阶函数)

本秂侑毒 提交于 2019-12-03 05:20:26
一.函数作用域 1.函数名表示的是内存地址 1 def test1(): 2 print('in the test1') 3 def test(): 4 print('in the test') 5 return test1 6 7 print(test()) 打印:in the test<function test1 at 0x000001E90E452EA0>2.函数的作用域只跟函数声明时定义的作用域有关,跟函数的调用位置无任何关系 1 name = 'xiaopang' 2 def foo(): 3 name='fangjiyi' 4 def bar(): 5 6 print(name) 7 return bar 8 a=foo() 9 a() 运行结果:fangjiyi二.匿名函数 1.定义:lambda x:x+1 形参 返回值(包含运算逻辑)2.使用方式赋函数名实现单个参数name='fang'func=lambda x:x+'sb'func(name)print(func(name))多个参数:f=lambda x,y,z:(x+1,y+1,z+1)print(f(5,6,7))打印结果:(6,7,8)三.函数式编程函数式编程=编程语言定义的函数+数学意义的函数1.高阶函数定义(满足以下其一)*1函数接收的参数是一个函数名 *2返回值中包含函数

关于作用域闭包的一些理解

﹥>﹥吖頭↗ 提交于 2019-12-03 04:58:32
闭包 红宝书上对闭包的定义:有权访问另外一个函数作用域中变量的函数。 MDN对闭包的定义是:是能够访问自由变量的函数。 自由变量:是指在当前函数中可以使用的( 但是既不是arguments也不是本函数定义的局部变量 )。 两个点: 是个函数 能访问另一个函数作用域中的变量,即使外层函数的上下文已经被销毁 就是说我们常见的比如 内部函数从外部函数返回 这种状态,该内部函数就是闭包。可以看如下特性中的示例! 说明闭包的几个特性: 可以访问当前函数以外的变量 function outer() { var date = '11月1日'; function inner(str) { console.log(str + date) } return inner('today is ') } outer() function outer() { var date = '11月1日'; return function () { console.log('today is ' + date) }() } outer() // 上下两例均返回“today is 11月1日” 即使外部函数已经返回,闭包仍然能够访问外部定义的变量 function outer() { var date = '11月1日'; function inner() { console.log('today is ' + date