GVKun编程网logo

请前辈们 帮讲解以下FreeMarker, JSP, velocity的区别与联系。以及他们各自不同的优缺点和使用场景。

28

在本文中,我们将为您详细介绍请前辈们帮讲解以下FreeMarker,JSP,velocity的区别与联系。以及他们各自不同的优缺点和使用场景。的相关知识,此外,我们还会提供一些关于Docker的使用场

在本文中,我们将为您详细介绍请前辈们 帮讲解以下FreeMarker, JSP, velocity的区别与联系。以及他们各自不同的优缺点和使用场景。的相关知识,此外,我们还会提供一些关于Docker的使用场景以及优缺点、Enjoy 4.8 发布,性能碾压 Freemarker、Velocity、Thymeleaf、freemarker Velocity 获取 request,session、FreeMarker VS Velocity(freemarker模板引擎和velocity模板引擎比较)的有用信息。

本文目录一览:

请前辈们 帮讲解以下FreeMarker, JSP, velocity的区别与联系。以及他们各自不同的优缺点和使用场景。

请前辈们 帮讲解以下FreeMarker, JSP, velocity的区别与联系。以及他们各自不同的优缺点和使用场景。

请前辈们 帮讲解以下FreeMarker, JSP, velocity的区别与联系。以及他们各自不同的优缺点和使用场景。

Docker的使用场景以及优缺点

Docker的使用场景以及优缺点

一 docker的8个使用场景

1.简化配置

虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平台(软件, 系统), Docker在降低额外开销的情况下提供了同样的功能. 它能让你将运行环境和配置放在代码汇总然后部署, 同一个Docker的配置可以在不同的环境环境中使用, 这样就降低了硬件要求和应用环境之间耦合度.

2.代码流水线管理

   代码从开发者的机器到最终在生产环境上的部署, 需要经过很多的中坚环境. 而每一个中间环境都有自己微小的差别,  Docker给应用提供了一个从开发到上线均一致的环境, 让代码的流水线变得简单不少.

 

3.提升开发效率

不同环境中, 开发者的共同目标:

  一, 想让开发环境尽量贴近生产环境.

二 , 想快速搭建开发环境

开发环境的机器通常内存比较小, 之前使用虚拟的时候, 我们经常需要为开发环境的机器加内存, 而现在Docker可以轻易的让几十个服务在Docker中跑起来.

 

4.隔离应用

开发时会在一个台机器上运行不同的应用.

一, 为了降低成本, 进行服务器整合

二, 将一个整体式的应用拆分成低耦合的单个服务(微服务架构)

5.整合服务器

Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本. 由于没有多个操作系统的内存占用, 以及能在多个实例之间共享没有使用的内存, Docker可以比虚拟机提供更好的服务器整合解决方案.

6.调试能力

Docker提供了很多的工具, 这些工具不一定只是针对容器, 但是却适用于容器. 他们提供了很多功能, 包括可以为容器设置检查点, 设置版本, 查看两个容器之间的差别, 这些特性可以帮助调试Bug.

7.多租户环境

多租户环境的应用中, 它可以避免关键应用的重写.我们一个特别的关于这个场景的例子是为loT(物联网)的应用开发一个快速, 易用的多租户环境. 这种多租户的基本代码非常复杂, 很难处理, 重新规划以应用不但消耗时间, 也浪费金钱.

使用Docker, 可以为每一个租户的应用层的多个实例创建隔离的环境, 这不仅简单而且成本低廉, 因为Docker环境启动的速度快, diff命令很高效.

8.快速部署

Docker为进程创建一个容器, 不需要启动一个操作系统, 时间缩短为秒级别.

可以在数据中心创建销毁资源而无须担心重新启动带来的开销. 通常数据中心的资源利用率只有30% , 通过使用Docker并进行有效的资源分配可以提高资源的利用率.

 

 

二 docker的缺点


here

 

 

三 docker的相关知识点

Docker组件(核心):镜像、容器、库。

 

采用C/S架构:客户端(执行程序)→通过命令行和API形式和守候程序(提供Docker服务)进行通讯。

镜像:一个只读的静态模板(框架体系);包含环境和应用执行代码(框架语言);采用分层机制。将新增数据通过联合文件系统附加在原基础上。

容器:一个运行时环境,是镜像的运行状态,是镜像执行的一种动态表现。

库:使用注册服务器(共有的or私有的)存储和共享用户的镜像,是某个特定用户存储镜像的目录。

 

 

*Docker特性:

*隔离性:libcontainer(默认容器)=>内核命名空间。

*安全性:内部(cgroups)| 容器和宿主主机(内核能力机制)。

*可度量性:cgroups(控制组)→资源度量和分配(用户)。

*移植性:AUFS(快速更新)→层的概念。

-----使用AUFS作为Docker容器的文件系统,提供的好处:


here

 

 

 

Docker优点(比较LXC):

*跨平台可移植性:按统一标准打包(镜像中),可传播。

*面向应用:优化部署应用(设计哲学)→API,接口及文档(体现)。

*版本控制:追踪、查询、记录版本信息(应用程序更改史)和回滚版本等

*组件复用:组件式搭建(基础镜像)→Python(运行环境) | postgreasql(基础镜像)。

*共享性:公共的注册服务器(可免费下载源码)。

 

Enjoy 4.8 发布,性能碾压 Freemarker、Velocity、Thymeleaf

Enjoy 4.8 发布,性能碾压 Freemarker、Velocity、Thymeleaf

    Enjoy Template Engine 采用独创的 DKFF (Dynamic Key Feature Forward) 词法分析算法以及独创的DLRD (Double Layer Recursive Descent) 语法分析算法,极大减少了代码量,降低了学习成本,并提升了用户体验。

    与以往任何一款 java 模板引擎都有显著的不同,极简设计、独创算法、极爽开发体验,从根本上重新定义了模板引擎,这里是首版发布时的盛况,传送门:JFinal 3.0 发布,重新定义模板引擎

    Enjoy 模板引擎专为 java 开发者打造,所以坚持两个核心设计理念:一是在模板中可以直接与 java 代码通畅地交互,二是尽可能沿用 java 语法规则,将学习成本降到极致。

    因此,立即掌握 90% 的用法,只需要记住一句话:JFinal 模板引擎表达式与 Java 是直接打通的。

    本次 Enjoy 4.8 最重要的改进是引入动态编译技术性能提升 12.9%,性能碾压 Freemarker、Velocity、Thymeleaf, 以下是 Intel Core i7 2.2G 机器上的性能测试结果:

    Enjoy 的性能是 Thymeleaf 的 9.68 倍,是 Freemarker 的 3 倍,是 Velocity 的 2.86 倍,由于 Freemarker、Velocity、Thymeleafe 不支持 byte 模式,以上仅测试了 char 模式,在 byte 模式下 enjoy 性能将领先更多倍数。

以上测试使用 Java 基准测试框架 JMH,测试源码:

https://gitee.com/jfinal/template-benchmark

注意:Enjoy 的运行时编译技术仍然支持动态类型,某些模板引擎在使用 asm/cglib 运行时修改字节码优化性能以后不再支持动态类型,是得不偿失的做法,因为动态类型是现代模板引擎必须的特性

 

Enjoy 4.8 changelog:

1:新增 FastFieldGetter,支持动态类型的前提下性能提升 12.9%

2:添加 Engine.setFastMode(boolean),用于配置极速模式

3:新增 addDirective(.., .., boolean keepLineBlank) 方法,支持指令独占一行时保留前后空白字符:与输出指令 #() 行为一样

4:#date、#number、#escape 等输出型指令,配置成 keepLineBlank = true

5:优化注释对输出格式的影响,注释与指令处于同一行时保留行尾的换行字符(注释处在独立行时无此问题)

6:优化 FastStringWriter 性能

7:ByteWriter、CharWriter 递归优化为 while 循环

8:优化 #escape 指令性能,StringBuilder 字符串拼接改为直接向 Writer 输出

9:输出指令 Output 去掉对 Boolean 类型的判断

10:添加 Engine.removeSharedObject(...) 方法,可配合 addSharedObject(...) 支持动态切换共享对象,适用更多应用场景

11:添加 JdkEncoderFactory 方便配置 Engine.setToJdkEncoderFactory() 支持 utf8mb4 编码的 emoji 表情

12:改进 Utf8Encoder,在极端情况下碰到无法编码的字符时,抛异常改为输出问号,提升用户体验

13:EngineConfig.getSharedObjectMap() 改为 public 可见性

14:Template 添加无参 renderToString() 方法

15:添加 NullMethodInfo,简化代码提升性能

16:Scope 中的 getGlobal、setGlobal、removeGlobal 支持顶层 data 为 null

17:#set 系列指令放开对于自增、自减表达式的使用限制

 

freemarker Velocity 获取 request,session

freemarker Velocity 获取 request,session

freemarker 获取 request   和  session


<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
	<property name="cache" value="true" />
	<property name="prefix" value="" />
	<property name="suffix" value=".ftl" />
	<property name="exposeSpringMacroHelpers" value="true"/>
	<property name="requestContextAttribute" value="rc"></property>
</bean>

这样,在页面中使用 ${rc.contextPath} 就可获得 contextPath

还有一种简单的配置 contextPath


<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
	<property name="freemarkerVariables">
		<map>
			<entry key="base" value="#{servletContext.contextPath}" />
		</map>
	</property>
</bean>


这样直接在页面使用 ${base}  就可以获取到了


获取 Session  

  直接页面写           ${Session ["这里是 key"]}  可以支持。属性



Velocity 获取 request   和  session


获取 request

<!-- Velocity视图解析器 默认视图 -->
<bean id="velocityViewResolver"
	class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
	<property name="contentType" value="text/html;charset=UTF-8" />
	<property name="viewNames" value="*.html" />
	<property name="suffix" value="" />
	<property name="dateToolAttribute" value="date" />
	<property name="numberToolAttribute" value="number" />
	<property name="requestContextAttribute" value="rc" />
	<property name="order" value="0" />
</bean>


这样,在页面中使用 ${rc.contextPath} 就可获得 contextPath


使用 session

直接  ${这里写 session 的 key}  只不过这个如果 session 不存在的话会显示 key    

感觉不是很好用


点我去查看 freemarker Velocity 自定义标签



FreeMarker VS Velocity(freemarker模板引擎和velocity模板引擎比较)

FreeMarker VS Velocity(freemarker模板引擎和velocity模板引擎比较)

<div>

Locity

关于请前辈们 帮讲解以下FreeMarker, JSP, velocity的区别与联系。以及他们各自不同的优缺点和使用场景。的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Docker的使用场景以及优缺点、Enjoy 4.8 发布,性能碾压 Freemarker、Velocity、Thymeleaf、freemarker Velocity 获取 request,session、FreeMarker VS Velocity(freemarker模板引擎和velocity模板引擎比较)等相关知识的信息别忘了在本站进行查找喔。

本文标签: