FreeMarker教程

C语言函数指针详解 C语言函数指针 一、什么是函数指针 1.理解函数指针 ​ 函数指针,首先根据他的名称我们就大概可以了解到他是一个指针,是什么样的指针呢?是和函数有关的一种特殊的指针。 ​ 我们知道 int*p 是指向int型变量的指针,char*p是指向char型变量的指针,那么不难理解,函数指针就是一个指向函数的指针。 int arr[10]={0}; int *p = arr; ​ 我们知道,在数组中数组名就是首元素的地址。 ​ 那么试着猜猜看,函数的地址是什么样的情况呢。 ​ 我们不妨打印一下看看结果是什 阅读详情
FreeMarker教程
http://www.blogcn.info/user1/toopen/archives/2007/29108.html

1、快速入门

(1)模板 + 数据模型 = 输出

l FreeMarker基于设计者和程序员是具有不同专业技能的不同个体的观念

l 他们是分工劳动的:设计者专注于表示——创建HTML文件、图片、Web页面的其它可视化方面;程序员创建系统,生成设计页面要显示的数据

l 经常会遇到的问题是:在Web页面(或其它类型的文档)中显示的信息在设计页面时是无效的,是基于动态数据的

l 在这里,你可以在HTML(或其它要输出的文本)中加入一些特定指令,FreeMarker会在输出页面给最终用户时,用适当的数据替代这些代码

l 下面是一个例子:

<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome ${user}!</h1>
<p>Our latest product:
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>
l 这个例子是在简单的HTML中加入了一些由${…}包围的特定代码,这些特定代码是FreeMarker的指令,而包含FreeMarker的指令的文件就称为模板(Template)

l 至于user、latestProduct.url和latestProduct.name来自于数据模型(data model)

l 数据模型由程序员编程来创建,向模板提供变化的信息,这些信息来自于数据库、文件,甚至于在程序中直接生成

l 模板设计者不关心数据从那儿来,只知道使用已经建立的数据模型

l 下面是一个可能的数据模型:

(root)
|
+- user = "Big Joe"
|
+- latestProduct
|
+- url = "products/greenmouse.html"
|
+- name = "green mouse"
l 数据模型类似于计算机的文件系统,latestProduct可以看作是目录,而user、url和name看作是文件,url和name文件位于latestProduct目录中(这只是一个比喻,实际并不存在)

l 当FreeMarker将上面的数据模型合并到模板中,就创建了下面的输出:

<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome Big Joe!</h1>
<p>Our latest product:
<a href="products/greenmouse.html">green mouse</a>!
</body>
</html>
(2)数据模型

l 典型的数据模型是树型结构,可以任意复杂和深层次,如下面的例子:

(root)
|
+- animals
| |
| +- mouse
| | |
| | +- size = "small"
| | |
| | +- price = 50
| |
| +- elephant
| | |
| | +- size = "large"
| | |
| | +- price = 5000
| |
| +- python
| |
| +- size = "medium"
| |
| +- price = 4999
|
+- test = "It is a test"
|
+- whatnot
|
+- because = "don't know"
l 类似于目录的变量称为hashes,包含保存下级变量的唯一的查询名字

l 类似于文件的变量称为scalars,保存单值

l scalars保存的值有两种类型:字符串(用引号括起,可以是单引号或双引号)和数字(不要用引号将数字括起,这会作为字符串处理)

l 对scalars的访问从root开始,各部分用“.”分隔,如animals.mouse.price

l 另外一种变量是sequences,和hashes类似,只是不使用变量名字,而使用数字索引,如下面的例子:

(root)
|
+- animals
| |
| +- (1st)
| | |
| | +- name = "mouse"
| | |
| | +- size = "small"
| | |
| | +- price = 50
| |
| +- (2nd)
| | |
| | +- name = "elephant"
| | |
| | +- size = "large"
| | |
| | +- price = 5000
| |
| +- (3rd)
| |
| +- name = "python"
| |
| +- size = "medium"
| |
| +- price = 4999
|
+- whatnot
|
+- fruits
|
+- (1st) = "orange"
|
+- (2nd) = "banana"
l 这种对scalars的访问使用索引,如animals[0].name

(3)模板

l 在FreeMarker模板中可以包括下面三种特定部分:

? ${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代

? FTL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分,用#开始(有些以@开始,在后面叙述)

? 注释:包含在<#--和-->(而不是<!--和-->)之间

l 下面是一些使用指令的例子:

? if指令

<#if animals.python.price < animals.elephant.price>
Pythons are cheaper than elephants today.
<#else>
Pythons are not cheaper than elephants today.
</#if>
? list指令

<p>We have these animals:
<table border=1>
<tr><th>Name<th>Price
<#list animals as being>
<tr><td>${being.name}<td>${being.price} Euros
</#list>
</table>
输出为:

<p>We have these animals:
<table border=1>
<tr><th>Name<th>Price
<tr><td>mouse<td>50 Euros
<tr><td>elephant<td>5000 Euros
<tr><td>python<td>4999 Euros
</table>
? include指令

<html>
<head>
<title>Test page</title>
</head>
<body>
<h1>Test page</h1>
<p>Blah blah...
<#i nclude "/copyright_footer.html">
</body>
</html>
? 一起使用指令

<p>We have these animals:
<table border=1>
<tr><th>Name<th>Price
<#list animals as being>
<tr>
<td>
<#if being.size = "large"><b></#if>
${being.name}
<#if being.size = "large"></b></#if>
<td>${being.price} Euros
</#list>
</table>
 
C语言函数指针 函数指针本质上是一个指针变量,指向一个函数的入口地址。通过函数指针,我们可以间接地调用函数,而不必直接使用函数名。return_type:函数的返回类型。pointer_name:函数指针的名字。parameter_types:函数的参数类型。// 定义函数指针类型,指向返回int类型,参数为int的函数函数指针是C语言中非常重要的一种功能,它使得程序更具灵活性和可扩展性。通过函数指针,我们能够实现回调函数、事件处理、模块化编程等多种功能。 阅读详情

相关推荐

C语言中的函数指针定义以及使用函数指针的示例

语言中,函数指针是一个指向函数的指针。这意味着你可以通过函数指针来调用函数,就像通过指针来访问数据一样。函数指针在需要动态地选择和执行函数时特别有用,例如在回调函数、函数表或动态链接库中。这个函数指针类型指向没有参数且返回类型为void的函数。定义两个函数,我们将通过函数指针来调用它们。使用while循环输出从10到0的数字。在这个例子中,我们首先定义了两个函数。使用printf函数输出两个数的和。头文件,它包含了标准输入输出函数(如。,并输出了相应的结果。在这个例程中,我们首先包含了。

2402_84885073的博客 1200

freemarker模板引擎详解以及使用方法

freemarker模板引擎详解以及使用方法

真正的大师永远怀着一颗学徒的心 6482

解决redhat8/centos8无法使用yum问题(报错:This system is not registered to Red Hat Subscription Management)

解决redhat无法使用yum问题、以及替换repo文件后仍无法使用yum的问题

qq_43569119的博客 4342

Freemarker使用教程——入门篇

一.简介 FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写,FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序,虽然 FreeMarker 具有一些编程的能力,但通常由 Java 程序准备要显示的数据,由FreeMarker 生成页面,通过模板显示准备的数据 FreeMarker 不是一个 W

东天里的冬天 5万+

车辆横向控制MPC实战:从‘老王模型’到CasADi求解的保姆级避坑指南

本文详细解析了车辆横向控制MPC的实战应用,从经典动力学模型选择到CasADi求解器的优化配置,提供了一套完整的避坑指南。重点介绍了车辆动力学模型的验证要点、CasADi环境的高效配置技巧以及MPC问题建模的核心要素,帮助开发者快速实现稳健的横向控制方案。

weixin_42524499的博客 346

Zabbix安装与部署 系统环境:centos7.0

Zabbix安装与部署 系统环境:centos7.0

weixin_42485027的博客 2600

Freemarker快速入门(SpringBoot版)

Freemarker是什么?Freemarker是一个强大的 Java模板引擎,它允许开发人员将展示层与应用逻辑分离。通过提供一种灵活高效的方式,在运行时生成动态内容。Freemarker模板使用类似HTML的语法,但包含可以在运行时填充数据的占位符和控制结构。这使得创建动态网页、电子邮件和其他文本文档非常简单。Freemarker支持条件语句、循环、宏等各种功能,并且可以与不同的数据模型和框架集成。它在Java Web开发中被广泛应用于生成HTML视图、电子邮件模板和其他文本输出。个人理解。

热爱编程、热爱生活、热爱探索 4809

QuickFix Java 实战(一)协议解析、环境搭建与首个应用

本文是QuickFix Java实战系列的第一篇,详细介绍了FIX协议的核心原理与QuickFix/J引擎的实战应用。内容涵盖FIX协议的标签化通信机制、QuickFix/J库的两种下载方法、协议定义文件解析,并通过一个完整的模拟订单发送示例,指导读者快速搭建首个FIX应用环境,实现消息生成与会话通信。

dog123的博客 495

Freemarker基础教程(一)

FreeMarker是一款模板引擎即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。模板编写为FreeMarkerTemplateLanguage(FTL)。它是简单的,专用的语言,不是像PHP那样成熟的编程语言。那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算,之后模板显示已经准备好的数据。常用的java模板引擎还有哪些。.........

云恒要逆袭的博客 5524

京东风控算法工程师带你解读Action Model-精细化运营(上篇)

电影《蝴蝶效应》中,男主拥有回到童年改变过去的能力,虽然在剧中男主一次次穿越时空拯救世界,但由于他无法预见自己做出的抉择对未来产生的其他影响,最终还是没能阻止悲剧的发生。可见,一个好的决策需要衡量其对未来产生的影响。JDD风控算法团队本期为大家解惑最优决策难题的解决方法-Action Model。

JDD风控算法的博客 1916

FEniCS学习笔记01:centos7下通过conda安装FEniCSx0.7

2023年版本的Fenicsx0.7,官网推荐使用conda命令安装集成好的Python包,因此我们的安装思路是先安装Anaconda,再按照官网步骤安装Fenics。

huahua_xiao的博客 5056

【c语言】函数指针详解

一、 函数名的本质 我们定义一个函数,然后输出函数名查看一下:函数名就是地址!!! 既然函数名是地址,就可以用指针变量来保存,就需要函数指针的概念。 二、如何定义函数指针 根据指针的使用经验: 指针变量必须强调是什么类型的指针。因此,函数的指针定义时必须把函数的特征表述清楚。 数组的特征:int [ ] 把函数名去掉就是函数的特征:int (int a, int b) 数组指针:把数组名替换成指针 再加上数组的特征 int(*parr)[5]; 类比数组指针 函数指针类型

努力让自己的能力配得上梦想. 1万+

wflow模型hbv

毛管水的处理 😄 快速流的处理 K4是为了产生基流的 找到了令人激动的kenematic模块 😄

m0_46268055的博客 778

C语言——函数指针

函数指针 C语言中的指针类型有很多种,但是函数指针可能有些小伙伴没听过,下面我们引入一段定义。 函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。 一、C语言中的函数指针咋来的? 1、函数是C语言中的一段代码; 2、编译器把这个C代码转成二进制指令,放到可执行文件中; 3、操作系统执行这个程序的时候(比如双击exe文件),就还把这个二进制的文件指令加载到内存中; 4、在内存中,就

qq_49044908的博客 7572

Rerender A Video 技术浅析(四):跨帧约束

时间一致性是指在视频处理过程中,保持相邻帧之间内容、风格和运动的平滑过渡,避免出现视觉上的不连续性或伪影。时间一致性跨帧约束模块的主要目标是在视频增强、风格迁移等任务中,确保处理后的视频在时间维度上保持一致性和稳定性。该模块主要通过以下几种方式实现时间一致性:1.时序损失(Temporal Loss):最小化相邻帧之间的差异,确保帧间内容的平滑过渡。2.循环一致性损失(Cycle Consistency Loss):确保帧间转换的一致性,避免出现风格漂移。3.

m0_75253143的博客 1480

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C 语言 —— 函数指针

复习一下 C 语言的指针中的 函数指针 ...... 矜辰所致

不浮夸,不将就,认真对待学知识的我们 1375

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【C语言 | 指针】函数指针详解

👉本文介绍C语言的函数指针,函数指针的定义、函数指针的使用、函数指针数组、函数指针数组的指针。

wkd_007的博客 3266

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【C语言】函数指针全面总结

函数指针是指向函数的指针,它存储了函数的地址。函数指针是C语言中的一个强大特性,它提供了函数作为一等公民的能力,使得可以编写更灵活、更通用的代码。通过函数指针,可以实现多态、回调函数、闭包等高级编程技巧。掌握函数指针的使用,可以大大提高C语言编程的能力和水平。在嵌入式系统的开发中,函数指针的应用非常广泛,它们提供了一种灵活的方式来组织和调用函数,尤其是在资源受限的环境中。本文将探讨函数指针在嵌入式系统中的应用,并讨论如何优化函数指针的使用以提高性能和资源效率。

极客代码 1911

c语言-函数指针

本篇文章介绍c语言中的函数指针以及函数指针的应用。

pyc68的博客 3611

c语言中函数指针用法,C语言函数指针的用法

这篇文章简单的叙述一下函数指针在结构体中的应用,为后面的一系列文章打下基础引言指针是C语言的重要组成部分, 于是深入理解指针并且高效地使用指针可以使程序员写出更加老练的程序。我们要记住指针是一个指向内存地址的变量。指针可以引用如int、char……常见的数据类型,例如:int * intptr; // 声明一个指向整型值的指针int intval = 5 ; // 定义一个整型变量int...

weixin_42510453的博客 1815

C语言中函数指针的简单使用

本文的主要内容目录: 一、函数指针的引入 二、函数指针的简单运用 一、函数指针的引入 在C语言当中,指针的使用非常重要的。我们都知道有变量指针,可以通过这个变量指针来访问这个变量;那么有没有函数指针呢,如果有的话能不能通过这个函数指针来访问这个函数呢?答案是肯定的。在说什么是函数指针之前,先引入一个简单的例子,如下所示: #include /* 打印Hello,world!

TECH_PRO的博客 2637

C语言的函数指针数组

简要介绍以下函数指针以及一些函数调用需要输入函数指针作为形参的情况。

qq_46284844的博客 2992

C语言-函数指针的使用

在C语言中,函数指针是指向函数的指针变量。它可以存储函数的地址,使得可以通过该指针来调用函数。

m0_68224121的博客 2168

C语言函数指针数组

函数指针数组

weixin_42215853的博客 1360

C语言tips:函数指针及函数指针数组

C语言:函数指针及函数指针数组 自1972年C语言在贝尔实验室问世以来,经久不衰,堪称编程语言中的常青树。而C语言中的指针更是其中最重要也最难的部分,通过指针可以实现很多让人惊喜的事情。 我们都知道,在C语言中,指针变量中存储的就是一个地址。我们可以通过 ‘*’ 运算符,取出地址中存放的数值。而通过对指针变量的加减,我们就能知道一组地址中存放的数据的值,对许多个变量进行批量操作。 其实函数也有地址,函数名就是函数的地址。 函数指针变量的定义 函数返回值 (*变量名)(参数列表中的类型); 如:int

qq_43716778的博客 1872
上一篇: .net开发必备
下一篇: FCKeditor JSP版本安装手顺
good9006
博客等级 码龄20年 8粉丝 30原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值