变量

freemarker常见语法大全

点点圈 提交于 2020-03-24 03:22:14
FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format} ${book.name?if_exists } //用于判断如果存在,就输出这个值 ${book.name?default(‘xxx’)}//默认值xxx ${book.name!"xxx"}//默认值xxx ${book.date?string('yyyy-MM-dd')} //日期格式 ${book?string.number} 20 //三种不同的数字格式 ${book?string.currency}--<#-- $20.00 --> ${book?string.percent}—<#-- 20% --> <#assign foo=ture /> //声明变量,插入布尔值进行显示 ${foo?string("yes","no")} <#-- yes --> 大小比较符号使用需要注意:(xml的原因),可以用于比较数字和日期 使用lt、lte、gt和gte来替代<、<=、>和>= 也可以使用括号<#if (x>y)> 内置函数: 调用区别于属性的访问,使用?代替. 常见的一些内置函数 对于字符串 html-对字符串进行HTML编码 cap_first-使字符串第一个字母大写 lower_case-将字符串转换成小写 trim

js基础笔记 javascript数据类型

折月煮酒 提交于 2020-03-24 01:50:50
在javascript中有5中基本数据类型分别是:Undefined、Null、Boolean、Number、String。 和一个复杂数据类型:Object。 一、Undefined 1. Undefined类型只有一个值undefined。当用var声明一个值并未对其进行初始化的时候,这个变量的值就是undefined。 var boss; alert(typeof boss); 2. 包含undefined值得变量与尚未定义的变量是不一样的。 var boss; alert(boss); // undefined alert(message); // 报错 Uncaught ReferenceError: message is not defined 3.对为声明的变量执行typeof 也会返回undefined // var message; alert(typeof message); // undefined 4. 我们要尽可能的在声明变量的时候对其赋予初始值,如果每一个变量都被赋予了初始值,那么当typeof 某个变量返回undefined时我们就知道被检测的变量是没有被声明而不是没有没初始化了。 二、Null 1. Null 类型只有一个值null。从逻辑角度来看空值是标识一个空对象指针,而这也是使用typeof 检测null 返回对象的原因 var a =

记一次小程序样式优化重构

守給你的承諾、 提交于 2020-03-24 00:34:12
3 月,跳不动了?>>> 上周花了 3 天的时间和老大一起重构了一下小程序的样式开发,虽然说在开发的过程中遇到了一些问题,但是最终减少了不少样式代码,同时功能上也更加强大。进一步来说,如果在后面我们的小程序用户想要自己定制化主题,也可以很快的实现。 全局样式开发 之前的小程序开发中,我们全方面使用了 Component 构造小程序组件以及页面(页面也可以使用 Component 构造器来编写)。当然一方面是因为小程序 Component 的开发体验非常好,拥有类似于 Vue mixin, watch 的 behaviors 和 observers ,比 Page 构造器强大了很多。另一方面,对于业务较重的小程序来说, Component 也有性能优势。可以参照 滴滴开源小程序框架Mpx 中的 Page与Component setData性能对照 。 在开发过程中,有很多样式是可以复用的。如果在之前开发中经常使用 Bootstrap 之类的 ui 库,那么你就会习惯使用这种库的 utilities 类。但是默认情况下,自定义组件的样式只受到自定义组件 wxss 的影响。不会受到全局样式 app.wxss 的影响。所以我们只能通过增加 @import 语法来辅助各个组件进行开发。 @import "xxx.css"; 如果你使用 CSS 预处理器来辅助小程序开发的话,可能就需要通过

python基础学习day11函数的进阶

五迷三道 提交于 2020-03-23 20:43:40
默认参数的陷阱(只针对于默认参数是可变的数据类型):如果默认参数使用的是可变类型数据,那么无论调用多少次这个默认参数,都是同一个(id相同)。默认参数的可变数据类型既不在全局也不再局部,定义后不会消失(局部命称空间会消失)。 def func(num,nums=[]): nums.append(num) return nums ret1 = func(1) print(ret) >>>[1] ret2 = fun(2) print(ret2) >>>[1,2] #将第一次的数据也包含了。 #例: def func(a,list=[]): list.append(a) return list ret1 = func(10,) print(ret1) #[10] print(func(20,[])) #[20] #重新为列表传入参数 print(func(100)) #[10,100] print(ret1) #[10,100] 局部作用域的陷阱:在函数中,如果定义一个变量,但是在定义变量之前引用这个变量,即使全局变量有此引用的变量,仍然会报错。 #例1: count = 1 def func(): count += 1 print(count) func() IndentationError: unindent does not match any outer indentation

编写可维护的javascript

你。 提交于 2020-03-23 19:22:30
为什么要编写可维护的javascript? 软件生命周期80%的成本消耗在了维护上。 几乎所有的软件维护者都不是它的最初作者。 编码规范提高了软件的可读性,它让工程师能够快速且充分地理解新的代码。 第一部分:编程风格 程序是写给人读的,只是偶尔让计算机执行以下。 ——高德纳 一、基本的格式化 1、缩进层级 如何处理缩进是几乎所有语言首先讨论的,缩进甚至关系到软件工程师的价值观! 第一种缩进: 使用制表符进行缩进。例如:jQuery核心风格,Dojo编程风格。 第二种缩进: 使用空格符进行缩进。例如:Goolge的javascript规定使用两个空格缩进。 推荐: 4个空格字符为一个缩进层级,可以在编辑器中配置Tab键插入4个空格。 2、语句结尾 你加没加分号代码可能都会正常运行,没看到这里之前,你可能不知道这是分析器的自动分号插入机制(ASI)在偷偷的帮你干活。常言道:常在河边走,哪有不湿鞋?看看下面的代码。 function getData() { return { text: '看看不加分号的后果!' } } ASI会解析成下面的样子: function getData() { return ; { text: '看看不加分号的后果!' }; } 所以如果调用上面的getData的方法,返回的就是 undefined 。但是这样不能全怪分号,谁让你把花括号写到下面一行的?

SNMP基础概念

白昼怎懂夜的黑 提交于 2020-03-23 16:58:39
一、什么是SNMP? SNMP=Simple Network Management Protocol (简单网络管理协议) SNMP是被广泛接受并投入使用的工业标准,提供了一个框架来定义管理信息以及用于这些信息交换的协议。它是一个应用层协议,作为TCP/IP协议组的一部分,在UDP(User Datagram Protocol,用户数据报协议)上操作。它采用轮询机制,提供最基本的功能集。最适合小型、快速、低价格的环境使用。 SNMP模型假设存在管理者和代理。管理者是管理系统中的软件模块,代表网络管理应用程序和用户负责管理一部分或全部的配置;代理是被管设备中的软件模块,负责维护本地的管理信息,并通过SNMP向管理者传递这些信息。管理信息交换可以由管理者引发(通过调查),也可以由代理来引发(通过捕获)。 SNMP管理的数据包括被管理对象、代理和网络管理系统(NMS)三个主要组件。被管理设备是网络节点,包括一个驻留的SNMP代理(Agent);NMS监测并控制被管理设备。 二、 SNMP 能作什么? SNMP用于在网络设备间交换管理信息,保证管理信息在任意两点中传送,便于网络管理员在网络上的任何节点检索信息,进行修改,寻找故障;完成故障诊断,容量规划和报告生成,使网络管理人员能够管理网络,发现并解决网络问题,规划网络的发展。 三、 SNMP 的优势是什么? 1

php中普通变量与static变量的区别

北城以北 提交于 2020-03-23 16:35:57
3 月,跳不动了?>>> 众所周知:php是一中弱类型语言,所以,在定义变量的时候我们是不需要明确指明相应的数据类型的! 但是,有这个一个关键字 static 可以让一个变量的行为变的很古怪(对不理解他的人来说)! 下面,我们看一个普通的例子 function testfunc(){ $var = 3; echo ++$var; echo '<br>'; } testfunc(); testfunc(); testfunc(); 此程序输出:三个4 。例子到这里还是很容易理解的!因为每次调用了相同的函数 var 变量都会进行一次初始化! 步入正题:再举个栗子 function testfunc1(){ static $var = 3; echo ++$var; echo '<br>'; } testfunc1(); testfunc1(); testfunc1(); 乍一看和上一个程序没有什么区别(实际上已经多了一个 static 修饰) 但是这次的结果和上面的是完全不同的 输出结果如下 4 5 6 再来看一个意外的例子 function testfunc1(){ static $var = 3+4; echo ++$var; echo '<br>'; } testfunc1(); testfunc1(); testfunc1(); 这里的输出结果如下: Parse error:

ubuntu中环境变量文件/etc/profile、.profile、.bashrc、/etc/bash.bashrc之间的区别和联系

隐身守侯 提交于 2020-03-23 16:23:34
一 /etc/profile:   此文件为系统的每个用户设置环境信息,当 用户第一次登录时,该文件被执行 .并从/etc/profile.d目录的配置文件中搜集shell的设置.所以如果你有对/etc/profile有修改的话必须得重启你的修改才会生效,此修改对每个用户都生效。可以通过命令source /etc/profile立即生效. 二 /etc/bashrc或/etc/bash.bashrc:   为每一个运行 bash shell的用户执行此文件 .当bash shell被打开时,该文件被读取.如果你想对所有的使用bash的用户修改某个配置并在以后打开的bash都生效的话可以修改这个文件,修改这个文件不用重启,重新打开一个bash即可生效。 三 ~/.bash_profile或~/.profile :   每个用户都可使用该文件输入专用于当前用户使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.   此文件类似于/etc/profile,也是需要需要重启才会生效,/etc/profile对所有用户生效, ~/.bash_profile只对当前用户生效。 四 ~/.bashrc:   该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.

协程 和 async await

拥有回忆 提交于 2020-03-23 15:50:59
协程, 是 为了 避免 闭包传递变量 的 性能损耗 而产生 。 如果不是 为了 避免 闭包传递变量 的 性能损耗 , 线程池 和 Task 已经够了, 不需要 再设计 出 协程 来 。 闭包, 会 让 所有共享 的 变量 变成 引用 访问 的 方式,包括 值变量 。 因为 闭包 是将 变量 放到 堆 里 共享 。 协程 就是在 堆 里 模拟出一个 堆栈 和 协程“上下文” 存储区, 这和 操作系统 的 线程 堆栈 和 上下文 架构 是 相似 的 。 上下文存储区 保存 每个 协程 的 堆栈 的 栈顶 栈底, 在 切换 协程 时, 将 栈顶 栈底 存入 CPU 寄存器, 这样, 代码 中 对 变量 的 访问 就可以 和 线程 一样, 通过 编译在 指令中 的 偏移量 操作数 加上 栈底 的 地址 就可以得到 变量 的 地址 。 这样 对 函数 局部变量 的 访问 就和 线程 一样 , 指令 偏移量 操作数 + 栈底 , 这样 一次 寻址 。 避免了 闭包 将 变量 变成 引用访问 的 二次寻址 带来 的 性能损耗 。 所以, C# 的 async await 本身 就 包含了 一个 协程 的 实现, 这大概也是 C# async await 要通过 编译器 把 代码 编译为 状态机 而不是 Task.ContinueWith() 的 原因 。 协程 需要 编译器 在 汇编 层面 实现

值类型和引用类型

时光怂恿深爱的人放手 提交于 2020-03-23 12:11:47
1.值类型(ValueType) 值类型包括:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型。 值类型的变量直接存储数据,分配在托管栈中。变量会在创建它们的方法返回时自动释放,例如在一个方法中声明Char型的变量name=’C’,当实例化它的方法结束时,name变量在栈上占用的内存就会自动释放 C#的所有值类型均隐式派生自System.ValueType。 结构体:struct(直接派生于System.ValueType)。 数值类型:整型,sbyte(System.SByte的别 名),short(System.Int16),int(System.Int32),long(System.Int64),byte(System.Byte),ushort(System.UInt16),uint(System.UInt32),ulong(System.UInt64),char(System.Char)。 浮点型:float(System.Single),double(System.Double)。 财务计算的高精度decimal型:decimal(System.Decimal)。 bool型:bool(System.Boolean的别名)。 用户定义的结构体(派生于System.ValueType)。 枚举:enum(派生于System.Enum)。 可空类型