这是我收集的一些学习velocity的材料,有些来自网上,其实有些我不是很懂,在这里弄出来,不仅仅作为以后的参考,也是想与大家一起讨论,学习。(*^__^*) 嘻嘻……
Velocity Template Language(VTL):VTL意味着提供最简单、最容易并且最整洁的方式合并页面动态内容。
VTL使用references来在web site内嵌套动态内容,一个变量就是一种类型的reference。变量是某种类型的refreence,它可以指向java代码中的定义,或者从当前 页面内定义的VTL statement得到值。下面是一个VTL statement的例子,它可以被嵌套到HTML代码中:
#set ( $a = “Velocity” );
和所有的VTL statement一样,这个statement以#字符开始并且包含一个directive:set。当一个在线用户请求你的页面时,Velocity Templating Engine将查询整个页面以便发现所有#字符,然后确定哪些是VTL statement,哪些不需要VTL作任何事情。
#字符后紧跟一个directive:set时,这个set directive使用一个表达式(使用括号封闭)――一个方程式分配一个值给变量。变量被列在左边,而它的值被列在右边,最后他们之间使用=号分割。
在上面的例子中,变量是$a,而它的值是Velocity。和其他的references一样以$字符开始,而值总是以双引号封闭。Velocity中仅有String类型可以被赋值给变量。
记住以下的规则:
使用$字符开始的references用于得到什么(变量);使用#字符开始的directives用于作些什么。
References
在VTL中有三种类型的references:变量(variables)、属性(properties)、方法(methods)。作为一个使 用VTL的页面设计者,你和你的工程师必须就references的名称达成共识,以便你可以在你的template中使用它们。
Everything coming to and from a reference被作为一个String对象处理。如果有一个对象$foo是一个Integer对象,那么Velocity将调用它的toString()方法将这个对象转型为String类型。
变量:
格式要求同java。
属性:
例子:
$customer.Address
$purchase.Total
$customer.Address有两种含义。它可以表示:查找hashtable对象customer中以Address为关键字的值;也可以表示调 用customer对象的getAddress()方法。当你的页面被请求时,Velocity将确定以上两种方式选用那种,然后返回适当的值。
方法:
一个方法就是被定义在java中的一段代码,并且它有完成某些有用工作的能力,例如一个执行计算和判断条件是否成立、满足等。方法是一个由$开始并跟随VTL标识符组成的References,一般还包括一个VTL方法体.
$page.setTitle( “My Home Page” )
属性与方法的区别:
前两个例子$customer.getAddress()和$purchase.getTotal()看起来挺想上面的属性$customer.Address 和 $purchase.Total。如果你觉得他们之间有某种联系的话,那你是正确的。
相同点:VTL属性可以作为VTL方法的缩写。$customer.Address属性和使用$customer.getAddress()方法具有相同的效果。如果可能的话使用属性的方式是比较合理的。
不同点: 属性和方法的不同点在于你能够给一个方法指定一个参数列表。
reference的正是格式如下:
${mudSlinger} 变量
${customer.Address} 属性
${purchase.getTotal()} 方法
非正式格式与正式格式的区别:
$person --> 非正式格式
${person} --> 正式格式
quiet格式:
当页面的form被初始加载时,变量$email还没有值,这时你肯定是希望它能够显示一个blank text来代替输出”$email”这样的字段。那么使用quiet reference notation就比较合适。 这样文本框的初始值就不会是email而是空值了。 正式和quiet格式的reference notation也可一同使用,像下面这样:
$符号和#符号的讲解:
在VTL中使用$2.5这样的货币标识是没有问题得的,VTL不会将它错认为是一个reference,因为VTL中的reference总是以一个大写或者小写的字母开始。
VTL中使用“\”作为逃逸符(类似于java中的转义符)。
例如:
#set( $email = “foo” ) $email \$email \\$email \\\$email
渲染(render)后:
foo $email \foo \\$email
如果email变量没有被定义
例如:
$email
\$email
\\$email \\\$email
渲染后:
$email
\$email
\\$email
\\\$email
注意 :VTL中未被定义的变量将被认为是一个字符串,所以以下例子:
#set( $foo = “gibbous” )
$moon = $foo
的输出结果是:
$moon = gibbous
现在你已经对reference比较熟悉了,你可以将他们高效的应用于你的template了。Velocity利用了很多java规范以方便了设计人员的使用。例如:
$foo
$foo.getBar()
## is the same as
$foo.Bar
或者:
$data.getUser(“jon”)
## is the same as
$data.User(“jon”)
还或者是:
$data.getRequest().getServerName()
## is the same as
$data.Request.ServerName
## is the same as
${data.Request.ServerName}
但是,注意VTL中不会将reference解释为对象的实例变量。
例如:$foo.Name将被解释为Foo对象的getName()方法,而不是Foo对象的Name实例变量。
Directives
Reference允许设计者使用动态的内容,而directive使得你可以应用java代码来控制你的显示逻辑,从而达到你所期望的显示效果。
#set directive被用于设置一个reference的值。例如:
#set ( $primate = “monkey” ) ;
赋值左侧的(
LHS )必须是一个变量或者属性reference。右侧(RHS)可以是以下类型中一种:
l 变量reference
l String literal
l 属性reference
l 方法reference
l number literal
l ArrayList
下面是应用各种类型的RHS的例子:
#set ( $monkey = $bill ) ##变量reference
#set ( $monkey.Friend = “monica” ) ##String literal
#set ( $monkey.Blame = $whitehouse.Leak )##属性reference
#set ( $monkey.Plan = $spindoctor.weave($web) )##方法reference
#set ( $monkey.Number = 123 )##Number literal
#set ( $monkey.Say = [“Not”, $my, “fault”] )##ArrayList //取值: monkey.Say.get(0)
RHS也可以是一个简单的算术表达式:
#set ( $value = $foo + 1 )
#set ( $value = $bar -1 )
#set ( $value = $foo * $bar )
#set ( $value = $foo / $bar )
如果RHS为空的情况:
如果你的RHS是一个null,VTL的处理将比较特殊:它将指向一个已经存在的reference,这对初学者来讲可能是比较费解的。例如:
#set ( $resut = $query.criteria(“name”) )
The result of the first query is $result //第一次查询后给$result对象赋值
#set ( $resut = $query.criteria(“address”) )
The result of the second query is $result
//第二次查询后给$result对象赋值
如果$query.criteria(“name”)返回一个“bill”,而$query.criteria(“address”)返回的是null,则显示的结果如下:
The result of the first query is bill
The result of the first query is bill
例如:
看看下面的例子:
#set( $criteria = ["name", "address"] )
#foreach( $criterion in $criteria )
#set( $result = $query.criteria($criterion) )
#if( $result )
Query was successful
#end
#end
在上面的例子中,程序将不能智能的根据$result的值决定查询是否成功。在$result被#set后(added to the context),它不能被设置回null(removed from the context)。打印的结果将显示两次查询结果都成功了,但是实际上有一个查询是失败的。
使用预定义的方式解决上述问题:
为了解决以上问题我们可以通过预先定义的方式:
#set( $criteria = [“name”, “address”] )
#foreach( $criterion in $criteria )
#set( $result = false )
#set( $result = $query.criteria( $criterion ) )
#if( $result )
Query was successful
#end
#end
String Literals (文字的意思)
当你使用#set directive,String literal封闭在一对
双引号 内。
#set ( $directoryRoot = “www” )
#set ( $templateName = “index.vm” )
#set ( $template = “$directoryRoot/$tempateName” )
$template
上面这段代码的输出结果为:www/index.vm
但是,当string literal被封装在
单引号 内时,它将不被解析:
#set ( $foo = “bar” )
$foo
#set ( $blargh = ‘$foo’ )
结果:
bar
$foo
条件语句
if/elseif/else
当一个web页面被生成时使用Velocity的#if directrive,如果条件成立的话可以在页面内嵌入文字。例如:
#if(#foo)
Velocity!
#end
上例中的条件语句将在以下两种条件下成立:
l $foo是一个boolean型的变量,且它的值为true
l $foo变量的值不为null
这里需要注意一点: Velocity context仅仅能够包含对象,所以当我们说“boolean”时实际上代表的时一个Boolean对象。即便某个方法返回的是一个boolean值,Velocity也会利用内省机制将它转换为一个Boolean的相同值。
多个条件的情况下:
#elseif和#else元素可以同#if一同使用。例如:
#if( $foo < 10 )
Go North
#elseif( $foo == 10 )
Go East
#elseif( $foo == 6 )
Go South
#else
Go West
#end
注意这里的Velocity的数字是作为Integer来比较的――其他类型的对象将使得条件为false,但是与java不同它使用“==”来比较两个值,而且velocity要求等号两边的 值类型 相同。
关系、逻辑运算符
Velocity中使用等号操作符判断两个变量的关系。例如:
#set ( $foo = “deoxyribonucleic acid” )
#set ( $bar = “ribonucleic acid” )
#if ( $foo == $bar)
In this case it’s clear they aren’t equivalent.So…
#else
They are not equivalent and this will be the output.
#end
Velocity有AND、OR和NOT逻辑运算符,例如:
## 逻辑 AND
#if( $foo && $bar )
This AND that
#end
## 逻辑 OR
#if ( $foo || $bar )
This OR That
#end
##逻辑NOT
#if ( !$foo )
NOT that
#end
循环
Foreach循环
例子:
#foreach ( $product in $allProducts )
$product
#end
每次循环$allProducts中的一个值都会赋给$product变量。
$allProducts可以是一个Vector、Hashtable或者Array。分配给$product的值是一个java对象,并且可以通过变量 被引用。例如:如果$product是一个java的Product类,并且这个产品的名字可以通过调用他的getName()方法得到。
循环Map
#foreach ( $key in $allProducts.keySet() )
Key: $key -> Value: $allProducts.get($key)
#end
获取循环次数:
Velocity还特别提供了得到循环次数的方法,以便你可以像下面这样作:
#foreach ( $customer in $customerList )
$velocityCount $customer.Name
#end
$velocityCount 变量的名字是Velocity默认的名字,你也可以通过修改velocity.properties文件来改变它。默认情况 下,计数从“1”开始,但是你可以在velocity.properties设置它是从“1”还是从“0”开始。下面就是文件中的配置:
# Default name of loop counter
# variable reference
directive.foreach.counter.name = velocityCount
# Default starting value of the loop
# counter variable reference
directive.foreach.counter.initial.value = 1
include
#include script element允许模板设计者引入本地文件。被引入文件的内容将不会通过模板引擎被render。为了安全的原因,被引入的本地文件只能在TEMPLATE_ROOT目录下。
#inclued ( “one.txt” )
如果您需要引入多个文件,可以用逗号分隔就行:
#include ( “one.gif”, “two.txt”, “three.htm” )
在括号内可以是文件名,但是更多的时候是使用变量的:
#inclue ( “greetings.txt”, $seasonalstock )
parse
#parse script element允许模板设计者一个包含VTL的本地文件。Velocity将解析其中的VTL并render模板。
#parse( “me.vm” )
就像#include,#parse接受一个变量而不是一个模板。任何由#parse指向的模板都必须包含在TEMPLATE_ROOT目录下。与#include不同的是,#parse只能指定单个对象。
你可以通过修改velocity.properties文件的parse_direcive.maxdepth的值来控制一个template可以包含的最多#parse的个数――默认值是10。#parse是可以递归调用的,例如:如果dofoo.vm包含如下行:
Count down.
#set ( $count = 8 )
#parse ( “parsefoo.vm” )
All done with dofoo.vm!
Stop
#stop script element允许模板设计者停止执行模板引擎并返回。把它应用于debug是很有帮助的。
#stop
Velocimacros
#macro script element允许模板设计者定义一段可重用的VTL template。例如:
#macro ( d )
#end
在上面的例子中Velocimacro被定义为d,然后你就可以在任何VTL directive中以如下方式调用它:
#d()
当你的template被调用时,Velocity将用
替换为#d()。
每个Velocimacro可以拥有任意数量的参数甚至0个参数,虽然定义时可以随意设置参数数量,但是调用这个Velocimacro时必须指定正确的参数。下面是一个拥有两个参数的Velocimacro,一个参数是color另一个参数是array:
#macro ( tablerows $color $somelist )
#foreach ( $something in $somelist )
$something
#end
#end
调用#tablerows Velocimacro:
#set ( $greatlakes = [ “Superior”, “Michigan”, “Huron”, “Erie”, “Ontario” ] )
#set ( $color = “blue” )
#tablerows( $color $greatlakes )
经过以上的调用将产生如下的显示结果: Superior Michigan Huron Erie Ontario
Velocimacro 的参数:
Velocimacro可以使用以下任何元素作为参数:
l Reference:任何以$开头的reference
l String literal:
l Number literal:
l IntegerRange:[1….3]或者[$foo….$bar]
l 对象数组:[“a”,”b”,”c”]
l boolean值:true、false
先执行方法中体或者reference,然后将计算出来的值在执行Velocimacro
当将一个reference作为参数传递给Velocimacro时,请注意reference作为参数时是以名字的形式传递的。这就意味着参数的值在每 次Velocimacro内执行时才会被产生。这个特性使得你可以将一个方法调用作为参数传递给Velocimacro,而每次Velocimacro执 行时都是通过这个方法调用产生不同的值来执行的。例如:
#macro ( callme $a )
$a $a $a
#end
#callme( $foo.bar() )
执行的结果是:reference $foo的bar()方法被执行了三次。 如果你不需要这样的特性可以通过以下方法: #set ( $myval = $foo.bar() ) #callme ( $myval )
Velocimacro properties 属性文件的配置详解
velocimacro.libraary:一个以逗号分隔的模板库列表。默认情况下,velocity查找唯一的一个库:VM_global_library.vm。你可以通过配置这个属性来指定自己的模板库。
velocimacro.permissions.allow.inline.replace.global:属性有两个可选值true和false,这个属性允许使用者确定inline的Velocimacro定义是否可以替代全局Velocimacro定义 (比如在velocimacro.library属性中指定的文件内定义的Velocimacro)。默认情况下,此值为false。这样就阻止本地 Velocimacro定义覆盖全局定义。
velocimacro.permissions.allow.inline.local.scale:属性也是有true和false两个可选值,默认是false。它的作用是用于确定你inline定义的Velocimacros是否仅仅在被定义的 template内可见。换句话说,如果这个属性设置为true,一个inline定义的Velocimacros只能在定义它的template内使用.
velocimacro.context.localscope:属性有true和false两个可选值,默认值为false。当设置为true时,任何在Velocimacro内通过#set()对context的修改被认为是针对此velocimacro的本地设置,而不会永久的影响内容。
velocimacro.library.autoreload: 属性控制Velocimacro库的自动加载。默认是false。当设置为ture时,对于一个Velocimacro的调用将自动检查原始库是否发生了 变化,如果变化将重新加载它。这个属性使得你可以不用重新启动servlet容器而达到重新加载的效果,就像你使用regular模板一样。前提:file.resource.loader.cache = false
你可能感兴趣的:(Velocity,知识点,记录,详细)
友思特应用 | 多接口的智驾无忧:GigE相机在自动驾驶数据采集系统的稳定应用
友思特 机器视觉与光电
机器视觉 自动驾驶 工业相机 gige相机
导读GigE接口相机为自动驾驶数据采集提供了高性价比的选择。在此基础上,友思特搭建了多GigE接口支持PTP的采集设备系统级方案BRICK2,为多传感器数据记录测试提供了完整的解决方案。GigE接口相机与智能驾驶数据采集智能驾驶技术的发展已经成为当今科技领域的热点之一,而其背后的关键是大量高质量的数据采集和处理。自动驾驶数据采集系统是智能驾驶技术研发过程中至关重要的一环,纵览各大厂商,这些技术基本
带着爱开启新的生命之门 Annie宝宝 13/21
种下一颗太阳mili
早上起床,女儿还在熟睡,我开始做“21天爱上自己练习”的功课,轻柔的音乐声,Amy宝宝温柔的声音,瞬间进入状态,结束后进行练习记录。我爱你,我的宝贝女儿,看着你熟睡的样子,内心很满足,感觉得到了全世界。我爱你,我的小马宝丽的宠枕,昨晚枕着你,美美的睡了一觉。我爱你,我的小书桌,坐在你旁边特别的亲密,你承载了我全部的精神世界。我爱你,Annie宝宝,早上好,你今天太棒了,今天会有很棒的经历在等着我们
【日常记录-Linux】bash shell中为命令创建别名
我叫白小猿
学习笔记 linux bash 运维 别名 alias
Author:赵志乾Date:2024-08-26Declaration:AllRightReserved!!!1.简介在Linux中的bashshell中为命令创建别名是一个简单而强大的功能,它允许为常用的命令或较长的命令定义一个简短的名称。这通常通过修改bashshell的配置文件来实现,如~/.bashrc、~/.bash_aliases。2.操作步骤2.1打开bash配置文件~/.bash
Vue-cli的使用
子非鱼921
Vue.js入门及实战 vue.js javascript 前端 前端框架
文章目录1vue-cli的安装和项目配置2使用vue-cli开发todolist3全局样式与局部样式1vue-cli的安装和项目配置这篇博文中有详细的介绍:安装vue-cli2.0并创建项目。2使用vue-cli开发todolistsrc文件夹下添加文件:TodoList.vue。提交importTodoItemfrom'./components/TodoItem'/*data是一个函数,函数返回
让电脑屏幕保持常亮
WSH2012ffff
电脑 学习 服务器
目录如何让电脑显示器屏幕保持常亮打开显示属性进入屏幕保护程序设置打开电源管理设置关闭屏幕保护程序再次打开显示属性再次进入屏幕保护程序设置关闭屏幕保护程序电脑使用小技巧定期清理电脑合理安排电脑布局使用合适的电脑配件定期备份数据学习快捷键保持操作系统和软件的更新合理安排使用时间如何让电脑显示器屏幕保持常亮要让电脑显示器屏幕保持常亮,我们可以通过调整电脑的电源管理设置来实现。以下是详细的步骤:打开显示属
《人间辞·仙旅》特辑
源氏袁帅
图片发自App《人间辞·仙旅》特辑原创:袁兵阳我要去——星宇台在星罗棋布下,比个炽热的爱的手势,里面有颗璀璨的明星。漆黑的夜空如同油布,满天繁星闪烁流苏。广阔星空,明暗交织,绘成你我的世界,记录你我的瞬间。翻开一本布满灰尘的古书,历史的尘埃逐渐沉淀。你我的故事终将结束,让我替你,共同写下我们的年华。我要去——上古三殿原始的旷野,神圣地坐落三座圣殿。云浅殿,缚雨殿,解忆殿。云浅,触摸光滑的石雕,让我
2021-6-30晨间日记
佚名沅子
今天是什么日子回家的日子起床:九点就寝:三点天气:阴雨心情:想睡觉纪念日:改微信名一年叫我起床的不是闹钟是梦想年度目标及关键点:过雅思本月重要成果:小学期完结今日三只青蛙/番茄钟回家回家回家!成功日志-记录三五件有收获的事务看外婆打王者收拾财务检视没钱了人际的投入地铁遇到一个小程序开发者找我做调查开卷有益-学习/读书/听书没有看书惹健康与饮食今日步数:行走中今日锻炼:走路出汗今日饮食:医院便餐好习
CleanClip for Mac v2.2.0 剪贴板历史管理软件正式激活版
AUV1107
macos pasteboard 剪贴板 历史剪贴板 剪贴板记录
CleanClip是一款专为Mac用户设计的强大剪贴板历史管理工具。它能够自动保存您复制的内容,让您轻松访问和管理剪贴板历史记录,大大提高工作效率。下载地址:CleanClipforMacv2.2.0剪贴板历史管理软件正式激活版主要特点自动保存剪贴板历史CleanClip会自动保存您复制的所有内容,包括文本、图片、文件等多种格式。您再也不用担心丢失重要的复制内容了。快速访问和搜索通过快捷键⌘+;即
剧本杀《陀螺》复盘详细解析+凶手角色剧透答案真相
VX搜_小燕子复盘
为了你获得更好的游戏体验,本文仅显示《陀螺》剧本杀部分真相复盘,获取完整真相复盘只需两步①【微信关注公众号:集美复盘】②回复【陀螺】即可查看获取哦﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎1、剧本杀《陀螺》角色介绍尤礼:性格相对跳脱,调皮捣蛋,为大傲娇。吴天:性格开朗但沉稳,统筹全局的大哥,有担当且理智,各方面伏秀。余海涛:性格内敛,相对较为沉默寡言,存在感低
[Algorithm][综合训练][过桥][最大差值][兑换零钱]详细讲解
DieSnowK
[OJ] # [综合训练] Algorithm 综合训练 算法 C++ 过桥 最大差值 兑换零钱
目录1.过桥1.题目链接2.算法原理详解&&代码实现2.最大差值1.题目链接2.算法原理详解&&代码实现3.兑换零钱1.题目链接2.算法原理详解&&代码实现1.过桥1.题目链接过桥2.算法原理详解&&代码实现解法:贪心+BFS#include#includeusingnamespacestd;intn=0;vectornums;intBFS(){intret=0;intleft=1,right=1
apollo 6.0 【开发版】从安装到启动,保姆级全教程
萌褚
Linux
镜像下载、域名解析、时间同步请点击阿里云开源镜像站毕设要开始做Apollo相关的课题,自己在这方面完全就是一个小白,光是安装apollo就已经花了不少功夫,也走了一些弯路,所以在这里记录一下,一方面做个总结,另一方面也希望可以帮到和我一样的朋友,最近在做Apollo的朋友也可以点个关注,大家一起交流讨论。注意!!此方法安装的是开发版,也就是可以看见源码,可以自己开发的版本,如果只是想体验一下自动驾
剧本杀《乱事枭雄》复盘详细解析+凶手角色剧透答案真相
VX搜_小燕子复盘
为了你获得更好的游戏体验,本文仅显示《乱事枭雄》剧本杀部分真相复盘,获取完整真相复盘只需两步①【微信关注公众号:集美复盘】②回复【乱事枭雄】即可查看获取哦﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎1、剧本杀《乱事枭雄》角色介绍类型:架空机制博弈战争时长:8小时人数:5男3女很荣幸在杭州展上了乱世枭雄的公车,第一次体验双头车,感受到了双倍的快乐,如果说权倾天下是
淘宝优惠券怎么用?省钱购物攻略大揭秘!
氧惠全网优惠
作为中国最大的网络购物平台,无疑成为了众多消费者的首选。为了吸引更多的顾客,淘宝经常会推出各种优惠券活动,让购物变得更加实惠。那么,淘宝优惠券怎么用呢?本文将为您详细解析淘宝优惠券的使用方法和省钱购物攻略。首先,我们需要了解淘宝优惠券的来源。淘宝优惠券的发放方式多种多样,包括商家自主发放、淘宝官方活动赠送、第三方平台推广等。消费者可以通过淘宝APP、官方网站、社交媒体以及优惠券分享网站等途径获取优
力扣234题详解:回文链表的多种解法与模拟面试问答
数据分析螺丝钉
LeetCode刷题与模拟面试 leetcode 面试 算法 经验分享 python
在本篇文章中,我们将详细解读力扣第234题“回文链表”。通过学习本篇文章,读者将掌握如何判断一个链表是否为回文链表,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释,以便于理解。问题描述力扣第234题“回文链表”描述如下:给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。示例:输入:head=[1,2,2,1]输出:true示
2022-3-1晨间日记
德三努
今天是什么日子起床:7:30就寝:0:30天气:晴心情:好纪念日:叫我起床的不是闹钟是梦想年度目标及关键点:勤学习,勤工作,勤锻炼本月重要成果:卧薪尝胆,闻鸡起舞今日三只青蛙/番茄钟成功日志-记录三五件有收获的事务财务检视人际的投入开卷有益-学习/读书/听书健康与饮食今日步数:12961今日锻炼:走路今日饮食:按时吃饭一日三餐好习惯打卡1、按时吃饭一日三餐
2020-11-04《回话的技术》读书笔记3
一念间_
2,重要文字记录:4)逆转困境---回话幽默回话添笑料,让人忘记仇恨。幸福就是健康加上坏记性。幽默是化解敌意的良药,幽默话为他人解围,幽默回话扭转局势。任何事物只要拥有了价值,就能够被广为借鉴与使用,幽默的患者也是一样。5)有理有据---回话更有说服力引用数据,让数字证明说服力。说话理据结合,脉络清晰,举实例,说实理,就事论事,因势利导。6)掌握技巧---回话更有感染力懂迂回,有话不一定直说。方法
274篇恩铉作业5
玲子1028
昨晚21:00早早一起睡着,早上起来帮他把作业再记录下本子,记录完给他看下能不能看得懂?他坐上书桌想先看语文网课视频。正看着突然问我今天几号?我给他看了日期后再看了看今日作业后不开心了。我也赶着上班就说,我先去吃早餐了。随后他跟了出来躺沙发上,满脸不开心,我想着应该心里有什么事。我说,怎么了?看起来很不开心。他说,作业这么多,有些是我不想做的我没有说话,做了三次深呼吸,想了一会该怎么沟通,我想着今
《灯笼》听课记录+实录(一)
叨叨魅
一、情境导入1.提起灯笼,你会想到什么?师:《红楼梦》是曹雪芹所著的一部自传体长篇小说,里边描写的人物、器物、食物等都精巧绝伦,如不是生于斯,长于斯,是绝对写不出的。曹家被*后,宝玉唯一带在身上的,是一个玻璃绣球灯,那是黛玉所赠,物是人非,也只有这个灯笼能够聊以慰藉。其实,不管是宝玉,还是曹雪芹,真正留恋的并非是物之美,而是与之相关的回忆。《灯笼》一文,就是通过物件灯笼,怀念记忆中的人、事、物。2
(短篇小说)泗水异闻录——小白那点情事
落语_没错是我
图片发自App泗水河,华夏众多河流中的一条支流,具体位置不详,大致在南方吧,无名无份,生活着普普通通的人和普普通通的妖,人和妖都没什么出息,顶多就有些还能听的琐事。听说,鱼的记忆只有七秒,但抵不过本鱼有一支好笔杆子,这泗水河畔发生的故事都逃不过本鱼的《泗水异闻录》,时间长了八卦多了,就想拿出来念叨念叨,总不能就留着给自己偷着乐,今天就从大家都耳熟能详的狐妖说起。既然是本鱼的记录,有的故事会忘了记是
VERIZON认证流程,美国运营商认证测试流程
深圳深光标准技术
VERIZON 美国运营商认证 ATT
一、注册登录OD门户的公司账号VERIZON的认证都是由以上的VERIZONOD门户来递交申请并且发证,在做VERIZON认证之前,得先注册一个属于自己公司的公司账号,注册公司账号的主要步骤有以下几个步骤提交详细的公司信息,例如公司的英文名称,地址,联系人以及联系人的信息之类的签署保密协议(NDA),在注册账户时,需要签署保密协议签署认证协议(CA),遵守认证协议的要求,按照要求进行测试提供保险凭
Spring八股文
szc1767
八股文 spring java 后端
重点描述一下bean的生命周期简述版调用构造器或者是通过工厂的方式创建Bean对象给bean对象的属性注入值调用初始化方法,进行初始化,初始化方法是通过init-method来指定的.使用IOC容器关闭时,销毁Bean对象详细:1.实例化Bean,反射的方式生成对象2.填充bena的属性:populateBean(),循环依赖的问题(三级缓存)3.调用aware接口相关的方法:invokeAwar
愚者才悲观|每日复盘D32
_李子昂
我是李子昂,一个热爱生活、积极向上的“人生梦想家”。爱阅读、记录生活,这是我的第三十二天复盘❤2019.12.1232/3651.感恩创造的不可思议的今天早起一件事:打卡✔(每天比昨天早起两分钟)早读任务:第一课,课文两段✔马原第一章大题背诵✘古诗词一首✘三只青蛙:阅读一小时✔概率论前三章✘图片发自App2.今日小确幸感恩YCX送我的奶茶,紫薯和冬天很配❤感恩早上的挣扎顺利的早起了两分钟,明天加油
复盘7月4号
cdd2f75330c6
记录:昨晚约3点起来加班到五点,然后6点起来录音,哈哈,今天又上班,上班路上点评完,听英语。到办公室,开始继续找要阅读的文献。11点汇报,约12点吃饭,然后1:35起来继续干活,上午和下午分别处理了几件研究生院的事情。下午,看文献效率不高,听到姑娘感冒咳嗽就没加班回家了,在超市玩到7点。然后回家睡一会,又玩到8:30,一直到现在。反思:时间走的很快,一定保持心情,注意效率。总结:加油呦,效率至上
Win生成git的公私钥
J不A秃V头A
Java git java
在Windows上生成Git的公钥和私钥,可以通过几种不同的方法实现,以下是使用最常见工具(如GitBash、PuTTYgen和OpenSSL)的详细步骤:一、使用GitBash生成密钥对安装GitforWindows:如果尚未安装Git,请从Git官网下载并安装GitforWindows。安装过程中,请确保选择包含GitBash的选项。打开GitBash:安装完成后,找到并打开GitBash。生
生活
星野_64d2
25号,今天完成了两张表格,感觉自己检查东西详细些了,但还需要加强,傍晚和嘎嘎看了别墅,以后当别人问你房子好不好的时候就说优点,每天负能量是不对的。晚上去舞清影了解瑜伽教培,老师们一直强调其他学员的果断和决心,凸现了我的犹豫不决,好像一直以来都没坚持什么,这次一定要坚持,身体要紧。
D004+3组齐鑫+《如何有效阅读一本书》读书笔记
齐金金金2020
也许是因为自己是吃货吧!到哪都不忘记吃!嘻嘻昨天看完“火锅”,今天还想记“火锅”,哈哈书中说,开始“葱鲔火锅式”读书笔记,首先我们将书通过“通读”“重读”“标记”把重要的内容筛选出来。所谓的标记法,就是用直线,波浪线和圆圈来做标记,进行区分。书里详细的解说了各种线的规则:普通的直线,用“重要”“客观重要”“暂时先画出”的情况。波浪线用于“非常重要”“主观觉得重要”“想记住这里以后加以运用”的情况。
如何使用Smart-Doc高效生成Java WebSocket接口文档
shalousun
smart-doc java websocket java文档工具 零注解
前言Smart-Doc是一款强大的文档生成工具,可以帮助开发者轻松地为Java项目生成清晰、详细的API文档。随着WebSocket技术的普及,Smart-Doc在3.0.7版本开始也增加了对WebSocket接口的支持。本文将详细介绍如何使用Smart-Doc生成JavaWebSocket接口的文档,并提供一个完整的WebSocket服务端示例。WebSocket技术概览首先,让我们简单了解一下
读书笔记碎片记录(小说散文篇)
Julia_Ju
最近读的几本书,一直没时间做笔记,就简单把碎片记录在此吧图片发自App曾经很喜欢池莉的小说,尤其是她描写武汉市井的小说,琐琐碎碎的,但充满了烟火气。不过,总感觉到《生活秀》的时候,她的写作达到了高峰,以后的《来来往往》、《有了快感你就喊》等等开始堕入商业逻辑,不再是我喜欢的类型。这本《熬制滴水成珠》是池莉对自己生活和写作的总结与思考。读的时候,我就在想,作家做哲学思考,这就和科学家抒发文艺腔一样,
记第一次被关门--天津盘山70km赛
马雨_Val
本赛季主要是记录自己的各种历程,很多都是流水账距离上次5.31梅里65km比赛(55km左右退赛)已经过了整三个月,这三个月并没有进行什么大强度训练,只是信誓旦旦的报了两个越野赛,一个盘山70km,一个是山海关100km。暑假是我们非常繁忙的时期,两个月平均每天课量8h+,且中间需要跑校区,所以一般晚上到家都要9点半,8月份我抽空只能在跑步机上进行跑步,没有进行任何山跑练习,而跑步机上的练习最多1
【OpenGL】详细介绍Z-Buffer与W-Buffer
伐尘
OpenGl 图形渲染 opengl vulkun 3d
【OpenGL】详细介绍Z-Buffer与W-Buffer一、简介:Depth-Buffer(深度缓存)有两种:Z-Buffer和W-Buffer,这里讨论这两种深度缓存的区别,以及如何在两者之间转换。二、w的含义3D空间点的坐标是(x,y,z),为了使矩阵乘法具有平移变换的功效,我们用4D空间中的点(x,y,z,w)来表示3D空间中的点(x’,y’,z’),这两个不同空间点之间的关系是:x'=x
js动画html标签(持续更新中)
843977358
html js 动画 media opacity
1.jQuery 效果 - animate() 方法 改变 "div" 元素的高度: $(".btn1").click(function(){ $("#box").animate({height:"300px
springMVC学习笔记
caoyong
springMVC
1、搭建开发环境
a>、添加jar文件,在ioc所需jar包的基础上添加spring-web.jar,spring-webmvc.jar
b>、在web.xml中配置前端控制器
<servlet>
&nbs
POI中设置Excel单元格格式
107x
poi style 列宽 合并单元格 自动换行
引用:http://apps.hi.baidu.com/share/detail/17249059
POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:
先获取工作薄对象:
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFCellStyle setBorder = wb.
jquery 获取A href 触发js方法的this参数 无效的情况
一炮送你回车库
jquery
html如下:
<td class=\"bord-r-n bord-l-n c-333\">
<a class=\"table-icon edit\" onclick=\"editTrValues(this);\">修改</a>
</td>"
j
md5
3213213333332132
MD5
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MDFive {
public static void main(String[] args) {
String md5Str = "cq
完全卸载干净Oracle11g
sophia天雪
orale数据库 卸载干净 清理注册表
完全卸载干净Oracle11g
A、存在OUI卸载工具的情况下:
第一步:停用所有Oracle相关的已启动的服务;
第二步:找到OUI卸载工具:在“开始”菜单中找到“oracle_OraDb11g_home”文件夹中
&
apache 的access.log 日志文件太大如何解决
darkranger
apache
CustomLog logs/access.log common 此写法导致日志数据一致自增变大。
直接注释上面的语法
#CustomLog logs/access.log common
增加:
CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-d.log 
Hadoop单机模式环境搭建关键步骤
aijuans
分布式
Hadoop环境需要sshd服务一直开启,故,在服务器上需要按照ssh服务,以Ubuntu Linux为例,按照ssh服务如下:
sudo apt-get install ssh
sudo apt-get install rsync
编辑HADOOP_HOME/conf/hadoop-env.sh文件,将JAVA_HOME设置为Java
PL/SQL DEVELOPER 使用的一些技巧
atongyeye
java sql
1 记住密码
这是个有争议的功能,因为记住密码会给带来数据安全的问题。 但假如是开发用的库,密码甚至可以和用户名相同,每次输入密码实在没什么意义,可以考虑让PLSQL Developer记住密码。 位置:Tools菜单--Preferences--Oracle--Logon HIstory--Store with password
2 特殊Copy
在SQL Window
PHP:在对象上动态添加一个新的方法
bardo
方法 动态添加 闭包
有关在一个对象上动态添加方法,如果你来自Ruby语言或您熟悉这门语言,你已经知道它是什么...... Ruby提供给你一种方式来获得一个instancied对象,并给这个对象添加一个额外的方法。
好!不说Ruby了,让我们来谈谈PHP
PHP未提供一个“标准的方式”做这样的事情,这也是没有核心的一部分...
但无论如何,它并没有说我们不能做这样
ThreadLocal与线程安全
bijian1013
java java多线程 threadLocal
首先来看一下线程安全问题产生的两个前提条件:
1.数据共享,多个线程访问同样的数据。
2.共享数据是可变的,多个线程对访问的共享数据作出了修改。
实例:
定义一个共享数据:
public static int a = 0;
Tomcat 架包冲突解决
征客丶
tomcat Web
环境:
Tomcat 7.0.6
win7 x64
错误表象:【我的冲突的架包是:catalina.jar 与 tomcat-catalina-7.0.61.jar 冲突,不知道其他架包冲突时是不是也报这个错误】
严重: End event threw exception
java.lang.NoSuchMethodException: org.apache.catalina.dep
【Scala三】分析Spark源代码总结的Scala语法一
bit1129
scala
Scala语法 1. classOf运算符
Scala中的classOf[T]是一个class对象,等价于Java的T.class,比如classOf[TextInputFormat]等价于TextInputFormat.class
2. 方法默认值
defaultMinPartitions就是一个默认值,类似C++的方法默认值
java 线程池管理机制
BlueSkator
java线程池 管理机制
编辑
Add
Tools
jdk线程池
一、引言
第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。
关于hql中使用本地sql函数的问题(问-答)
BreakingBad
HQL 存储函数
转自于:http://www.iteye.com/problems/23775
问:
我在开发过程中,使用hql进行查询(mysql5)使用到了mysql自带的函数find_in_set()这个函数作为匹配字符串的来讲效率非常好,但是我直接把它写在hql语句里面(from ForumMemberInfo fm,ForumArea fa where find_in_set(fm.userId,f
读《研磨设计模式》-代码笔记-迭代器模式-Iterator
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.Arrays;
import java.util.List;
/**
* Iterator模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象内部表示
*
* 个人觉得,为了不暴露该
常用SQL
chenjunt3
oracle sql C++ c C#
--NC建库
CREATE TABLESPACE NNC_DATA01 DATAFILE 'E:\oracle\product\10.2.0\oradata\orcl\nnc_data01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;
CREATE TABLESPA
数学是科学技术的语言
comsci
工作 活动 领域模型
从小学到大学都在学习数学,从小学开始了解数字的概念和背诵九九表到大学学习复变函数和离散数学,看起来好像掌握了这些数学知识,但是在工作中却很少真正用到这些知识,为什么?
最近在研究一种开源软件-CARROT2的源代码的时候,又一次感觉到数学在计算机技术中的不可动摇的基础作用,CARROT2是一种用于自动语言分类(聚类)的工具性软件,用JAVA语言编写,它
Linux系统手动安装rzsz 软件包
daizj
linux sz rz
1、下载软件 rzsz-3.34.tar.gz。登录linux,用命令
wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz下载。
2、解压 tar zxvf rzsz-3.34.tar.gz
3、安装 cd rzsz-3.34 ; make posix 。注意:这个软件安装与常规的GNU软件不
读源码之:ArrayBlockingQueue
dieslrae
java
ArrayBlockingQueue是concurrent包提供的一个线程安全的队列,由一个数组来保存队列元素.通过
takeIndex和
putIndex来分别记录出队列和入队列的下标,以保证在出队列时
不进行元素移动.
//在出队列或者入队列的时候对takeIndex或者putIndex进行累加,如果已经到了数组末尾就又从0开始,保证数
C语言学习九枚举的定义和应用
dcj3sjt126com
c
枚举的定义
# include <stdio.h>
enum WeekDay
{
MonDay, TuesDay, WednesDay, ThursDay, FriDay, SaturDay, SunDay
};
int main(void)
{
//int day; //day定义成int类型不合适
enum WeekDay day = Wedne
Vagrant 三种网络配置详解
dcj3sjt126com
vagrant
Forwarded port
Private network
Public network
Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点。
端口映射(Forwarded port),顾名思义是指把宿主计算机的端口映射到虚拟机的某一个端口上,访问宿主计算机端口时,请求实际是被转发到虚拟机上指定端口的。Vagrantfile中设定语法为:
c
16.性能优化-完结
frank1234
性能优化
性能调优是一个宏大的工程,需要从宏观架构(比如拆分,冗余,读写分离,集群,缓存等), 软件设计(比如多线程并行化,选择合适的数据结构), 数据库设计层面(合理的表设计,汇总表,索引,分区,拆分,冗余等) 以及微观(软件的配置,SQL语句的编写,操作系统配置等)根据软件的应用场景做综合的考虑和权衡,并经验实际测试验证才能达到最优。
性能水很深, 笔者经验尚浅 ,赶脚也就了解了点皮毛而已,我觉得
Word Search
hcx2013
search
Given a 2D board and a word, find if the word exists in the grid.
The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or ve
Spring4新特性——Web开发的增强
jinnianshilongnian
spring spring mvc spring4
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
CentOS安装配置tengine并设置开机启动
liuxingguome
centos
yum install gcc-c++
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
Ubuntu上可以这样安装
sudo aptitude install libdmalloc-dev libcurl4-opens
第14章 工具函数(上)
onestopweb
函数
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Xelsius 2008 and SAP BW at a glance
blueoxygen
BO Xelsius
Xelsius提供了丰富多样的数据连接方式,其中为SAP BW专属提供的是BICS。那么Xelsius的各种连接的优缺点比较以及Xelsius是如何直接连接到BEx Query的呢? 以下Wiki文章应该提供了全面的概览。
http://wiki.sdn.sap.com/wiki/display/BOBJ/Xcelsius+2008+and+SAP+NetWeaver+BW+Co
oracle表空间相关
tongsh6
oracle
在oracle数据库中,一个用户对应一个表空间,当表空间不足时,可以采用增加表空间的数据文件容量,也可以增加数据文件,方法有如下几种:
1.给表空间增加数据文件
ALTER TABLESPACE "表空间的名字" ADD DATAFILE
'表空间的数据文件路径' SIZE 50M;
&nb
.Net framework4.0安装失败
yangjuanjava
.net windows
上午的.net framework 4.0,各种失败,查了好多答案,各种不靠谱,最后终于找到答案了
和Windows Update有关系,给目录名重命名一下再次安装,即安装成功了!
下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=17113
方法:
1.运行cmd,输入net stop WuAuServ
2.点击开