这是我收集的一些学习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,知识点,记录,详细)
力扣刷题学习SQL篇——1-1 选择(大的国家——union和union all 和or)
萌新贤的日常
sql 力扣题目 java sql
力扣刷题学习SQL篇——1-1选择(大的国家——union和unionall和or)1、题目2、自己的解法3、官方解法知识点补充SQLUNION操作符or和UNION和UNIONALL有什么区别呢?为什么用union会快一点呢?他真的快吗?mysql中的表索引1、题目题目链接:https://leetcode.cn/problems/big-countries/SQL架构CreatetableIf
基于Java Web的旅游网站设计与实现
IT实战课堂—x小凡同学
Java毕业设计项目 java 旅游 开发语言
摘要:随着互联网的快速发展和普及,旅游行业与信息技术的结合日益紧密。本文旨在探讨基于JavaWeb的旅游网站的设计与实现过程,通过该网站为游客提供便捷的旅游信息查询、旅游线路预订、景点评价等服务。本文首先分析了旅游网站的需求,然后详细阐述了网站的架构设计、功能模块开发以及数据库设计等关键内容,最后对网站进行了测试与评估。一、引言旅游行业作为现代服务业的重要组成部分,具有广阔的市场前景和巨大的发展潜
深入理解Spring Boot中的AOP应用:从基础组件到高级功能的实现
heromps
Springboot spring boot 后端 java
深入理解SpringBoot中的AOP应用:从基础组件到高级功能的实现在现代Java开发中,SpringBoot因其简洁性和强大的功能而被广泛采用。而AOP(面向切面编程)作为Spring框架的核心特性之一,为开发者提供了在不修改业务代码的情况下增强功能的能力。本文将深入探讨SpringBoot中那些使用AOP实现的基础组件和高级功能,展示AOP在事务管理、日志记录、安全性、缓存、异步执行等方面的
Redis Stream 助力:打造实时用户行为日志处理平台
heromps
redis Springboot redis 数据库 缓存
在现代Web应用中,用户行为日志的收集与分析至关重要。通过记录和分析用户行为,开发者能够更好地理解用户需求,从而优化应用功能和用户体验。本文将详细介绍如何使用RedisStream实现一个简易的用户行为日志收集与处理系统,并解析系统的功能逻辑和架构。背景介绍RedisStream是Redis5.0引入的一种新数据结构,旨在处理日志类消息。它不仅支持消息的生产与消费,还允许创建消费组,使得多个消费者
友思特应用 | 多接口的智驾无忧: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
也许是因为自己是吃货吧!到哪都不忘记吃!嘻嘻昨天看完“火锅”,今天还想记“火锅”,哈哈书中说,开始“葱鲔火锅式”读书笔记,首先我们将书通过“通读”“重读”“标记”把重要的内容筛选出来。所谓的标记法,就是用直线,波浪线和圆圈来做标记,进行区分。书里详细的解说了各种线的规则:普通的直线,用“重要”“客观重要”“暂时先画出”的情况。波浪线用于“非常重要”“主观觉得重要”“想记住这里以后加以运用”的情况。
linux系统服务器下jsp传参数乱码
3213213333332132
java jsp linux windows xml
在一次解决乱码问题中, 发现jsp在windows下用js原生的方法进行编码没有问题,但是到了linux下就有问题, escape,encodeURI,encodeURIComponent等都解决不了问题
但是我想了下既然原生的方法不行,我用el标签的方式对中文参数进行加密解密总该可以吧。于是用了java的java.net.URLDecoder,结果还是乱码,最后在绝望之际,用了下面的方法解决了
Spring 注解区别以及应用
BlueSkator
spring
1. @Autowired
@Autowired是根据类型进行自动装配的。如果当Spring上下文中存在不止一个UserDao类型的bean,或者不存在UserDao类型的bean,会抛出 BeanCreationException异常,这时可以通过在该属性上再加一个@Qualifier注解来声明唯一的id解决问题。
2. @Qualifier
当spring中存在至少一个匹
printf和sprintf的应用
dcj3sjt126com
PHP sprintf printf
<?php
printf('b: %b <br>c: %c <br>d: %d <bf>f: %f', 80,80, 80, 80);
echo '<br />';
printf('%0.2f <br>%+d <br>%0.2f <br>', 8, 8, 1235.456);
printf('th
config.getInitParameter
171815164
parameter
web.xml
<servlet>
<servlet-name>servlet1</servlet-name>
<jsp-file>/index.jsp</jsp-file>
<init-param>
<param-name>str</param-name>
Ant标签详解--基础操作
g21121
ant
Ant的一些核心概念:
build.xml:构建文件是以XML 文件来描述的,默认构建文件名为build.xml。 project:每个构建文
[简单]代码片段_数据合并
53873039oycg
代码
合并规则:删除家长phone为空的记录,若一个家长对应多个孩子,保留一条家长记录,家长id修改为phone,对应关系也要修改。
代码如下:
java 通信技术
云端月影
Java 远程通信技术
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇blog中我们将来
string与StringBuilder 性能差距到底有多大
aijuans
之前也看过一些对string与StringBuilder的性能分析,总感觉这个应该对整体性能不会产生多大的影响,所以就一直没有关注这块!
由于学程序初期最先接触的string拼接,所以就一直没改变过自己的习惯!
今天碰到 java.util.ConcurrentModificationException 异常
antonyup_2006
java 多线程 工作 IBM
今天改bug,其中有个实现是要对map进行循环,然后有删除操作,代码如下:
Iterator<ListItem> iter = ItemMap.keySet.iterator();
while(iter.hasNext()){
ListItem it = iter.next();
//...一些逻辑操作
ItemMap.remove(it);
}
结果运行报Con
PL/SQL的类型和JDBC操作数据库
百合不是茶
PL/SQL表 标量类型 游标 PL/SQL记录
PL/SQL的标量类型:
字符,数字,时间,布尔,%type五中类型的
--标量:数据库中预定义类型的变量
--定义一个变长字符串
v_ename varchar2(10);
--定义一个小数,范围 -9999.99~9999.99
v_sal number(6,2);
--定义一个小数并给一个初始值为5.4 :=是pl/sql的赋值号
Mockito:一个强大的用于 Java 开发的模拟测试框架实例
bijian1013
mockito 单元测试
Mockito框架:
Mockito是一个基于MIT协议的开源java测试框架。 Mockito区别于其他模拟框架的地方主要是允许开发者在没有建立“预期”时验证被测系统的行为。对于mock对象的一个评价是测试系统的测
精通Oracle10编程SQL(10)处理例外
bijian1013
oracle 数据库 plsql
/*
*处理例外
*/
--例外简介
--处理例外-传递例外
declare
v_ename emp.ename%TYPE;
begin
SELECT ename INTO v_ename FROM emp
where empno=&no;
dbms_output.put_line('雇员名:'||v_ename);
exceptio
【Java】Java执行远程机器上Linux命令
bit1129
linux命令
Java使用ethz通过ssh2执行远程机器Linux上命令,
封装定义Linux机器的环境信息
package com.tom;
import java.io.File;
public class Env {
private String hostaddr; //Linux机器的IP地址
private Integer po
java通信之Socket通信基础
白糖_
java socket 网络协议
正处于网络环境下的两个程序,它们之间通过一个交互的连接来实现数据通信。每一个连接的通信端叫做一个Socket。一个完整的Socket通信程序应该包含以下几个步骤:
①创建Socket;
②打开连接到Socket的输入输出流;
④按照一定的协议对Socket进行读写操作;
④关闭Socket。
Socket通信分两部分:服务器端和客户端。服务器端必须优先启动,然后等待soc
angular.bind
boyitech
AngularJS angular.bind AngularJS API bind
angular.bind 描述: 上下文,函数以及参数动态绑定,返回值为绑定之后的函数. 其中args是可选的动态参数,self在fn中使用this调用。 使用方法: angular.bind(se
java-13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class KickOutBadGuys {
/**
* 题目:13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。
* Maybe you can find out
Redis.conf配置文件及相关项说明(自查备用)
Kai_Ge
redis
Redis.conf配置文件及相关项说明
# Redis configuration file example
# Note on units: when memory size is needed, it is possible to specifiy
# it in the usual form of 1k 5GB 4M and so forth:
#
[强人工智能]实现大规模拓扑分析是实现强人工智能的前奏
comsci
人工智能
真不好意思,各位朋友...博客再次更新...
节点数量太少,网络的分析和处理能力肯定不足,在面对机器人控制的需求方面,显得力不从心....
但是,节点数太多,对拓扑数据处理的要求又很高,设计目标也很高,实现起来难度颇大...
记录一些常用的函数
dai_lm
java
public static String convertInputStreamToString(InputStream is) {
StringBuilder result = new StringBuilder();
if (is != null)
try {
InputStreamReader inputReader = new InputStreamRead
Hadoop中小规模集群的并行计算缺陷
datamachine
mapreduce hadoop 并行计算
注:写这篇文章的初衷是因为Hadoop炒得有点太热,很多用户现有数据规模并不适用于Hadoop,但迫于扩容压力和去IOE(Hadoop的廉价扩展的确非常有吸引力)而尝试。尝试永远是件正确的事儿,但有时候不用太突进,可以调优或调需求,发挥现有系统的最大效用为上策。
-----------------------------------------------------------------
小学4年级英语单词背诵第二课
dcj3sjt126com
english word
egg 蛋
twenty 二十
any 任何
well 健康的,好
twelve 十二
farm 农场
every 每一个
back 向后,回
fast 快速的
whose 谁的
much 许多
flower 花
watch 手表
very 非常,很
sport 运动
Chinese 中国的
自己实践了github的webhooks, linux上面的权限需要注意
dcj3sjt126com
github webhook
环境, 阿里云服务器
1. 本地创建项目, push到github服务器上面
2. 生成www用户的密钥
sudo -u www ssh-keygen -t rsa -C "
[email protected] "
3. 将密钥添加到github帐号的SSH_KEYS里面
3. 用www用户执行克隆, 源使
Java冒泡排序
蕃薯耀
冒泡排序 Java冒泡排序 Java排序
冒泡排序
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年6月23日 10:40:14 星期二
http://fanshuyao.iteye.com/
Excle读取数据转换为实体List【基于apache-poi】
hanqunfeng
apache
1.依赖apache-poi
2.支持xls和xlsx
3.支持按属性名称绑定数据值
4.支持从指定行、列开始读取
5.支持同时读取多个sheet
6.具体使用方式参见org.cpframework.utils.excelreader.CP_ExcelReaderUtilTest.java
比如:
Str
3个处于草稿阶段的Javascript API介绍
jackyrong
JavaScript
原文:
http://www.sitepoint.com/3-new-javascript-apis-may-want-follow/?utm_source=html5weekly&utm_medium=email
本文中,介绍3个仍然处于草稿阶段,但应该值得关注的Javascript API.
1) Web Alarm API
&
6个创建Web应用程序的高效PHP框架
lampcy
Web 框架 PHP
以下是创建Web应用程序的PHP框架,有coder bay网站整理推荐:
1. CakePHP
CakePHP是一个PHP快速开发框架,它提供了一个用于开发、维护和部署应用程序的可扩展体系。CakePHP使用了众所周知的设计模式,如MVC和ORM,降低了开发成本,并减少了开发人员写代码的工作量。
2. CodeIgniter
CodeIgniter是一个非常小且功能强大的PHP框架,适合需
评"救市后中国股市新乱象泛起"谣言
nannan408
首先来看百度百家一位易姓作者的新闻:
三个多星期来股市持续暴跌,跌得投资者及上市公司都处于极度的恐慌和焦虑中,都要寻找自保及规避风险的方式。面对股市之危机,政府突然进入市场救市,希望以此来重建市场信心,以此来扭转股市持续暴跌的预期。而政府进入市场后,由于市场运作方式发生了巨大变化,投资者及上市公司为了自保及为了应对这种变化,中国股市新的乱象也自然产生。
首先,中国股市这两天
页面全屏遮罩的实现 方式
Rainbow702
html css 遮罩 mask
之前做了一个页面,在点击了某个按钮之后,要求页面出现一个全屏遮罩,一开始使用了position:absolute来实现的。当时因为画面大小是固定的,不可以resize的,所以,没有发现问题。
最近用了同样的做法做了一个遮罩,但是画面是可以进行resize的,所以就发现了一个问题,当画面被reisze到浏览器出现了滚动条的时候,就发现,用absolute 的做法是有问题的。后来改成fixed定位就
关于angularjs的点滴
tntxia
AngularJS
angular是一个新兴的JS框架,和以往的框架不同的事,Angularjs更注重于js的建模,管理,同时也提供大量的组件帮助用户组建商业化程序,是一种值得研究的JS框架。
Angularjs使我们可以使用MVC的模式来写JS。Angularjs现在由谷歌来维护。
这里我们来简单的探讨一下它的应用。
首先使用Angularjs我
Nutz--->>反复新建ioc容器的后果
xiaoxiao1992428
DAO mvc IOC nutz
问题:
public class DaoZ {
public static Dao dao() { // 每当需要使用dao的时候就取一次
Ioc ioc = new NutIoc(new JsonLoader("dao.js"));
return ioc.get(