freemarker学习

news2024/12/23 10:29:37

一、Freemarker引入

image-20230712201411737

二、环境搭建和测试

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.itheima</groupId>
  <artifactId>FMDemo01</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>FMDemo01 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <!--加入FreeMarker依赖坐标,FreeMarker模版引擎就是这里提供的(FreemarkerServlet)-->
    <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
      <version>2.3.23</version>
    </dependency>
    <!--加入servlet依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>FMDemo01</finalName>
  </build>
</project>

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <servlet>
    <servlet-name>freemarker</servlet-name>
    <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
    <init-param>
      <!--模版路径-->
      <param-name>TemplatePath</param-name>
      <!--默认在webapp目录下查找对应的模版文件,我们会将模版文件放在webapp下-->
      <param-value>/</param-value>
    </init-param>
    <init-param>
      <!--默认编码格式:UTF-8-->
      <param-name>default_encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>freemarker</servlet-name>
    <url-pattern>*.ftl</url-pattern>
  </servlet-mapping>

</web-app>

freemarker

<#--freemarker注释,隐式注释,浏览器中看不到-->
<!-- html注释 -->
<h2>${msg}</h2>

controller

package com.itheima.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Description:
 * date: 2023/7/12 20:51
 *
 * @since JDK 11
 */
@WebServlet("/fm01")
public class FMServlet01 extends HttpServlet {
	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			request.setAttribute("msg","hello world!");
			request.getRequestDispatcher("f01.ftl").forward(request,response);
	}
}

三、数据类型

1、布尔型

controller

package com.itheima.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Description:
 * date: 2023/7/12 21:08
 *
 * @since JDK 11
 */
@WebServlet("/fm02")
public class FMServlet02 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setAttribute("bool",true);
		req.getRequestDispatcher("f02.ftl").forward(req,resp);
	}
}

f02.ftl

<#--是错误的,freemarker中不允许输出布尔类型的值,会报错
<h2>${bool}</h2>-->
<h1>布尔类型的转换</h1>
<#--方式一:?c-->
<h2>${bool?c}</h2>
<#--方式二:?string  弃用-->
<h2>${bool?string}</h2>
<#--${bool?string("bool为true时返回这个","bool为false时返回这个")-->
<h2>${bool?string("yes","false")}</h2>
<#--方式三:?then("true时返回这个","false时返回这个")-->
<h2>${bool?then("then_true","then_false")}</h2>

2、日期型

image-20230712212942749

controller

package com.itheima.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

/**
 * Description:
 * date: 2023/7/12 21:08
 *
 * @since JDK 11
 */
@WebServlet("/fm02")
public class FMServlet02 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//布尔类型
		req.setAttribute("bool",true);
		//日期类型
		req.setAttribute("date",new Date());
		req.getRequestDispatcher("f02.ftl").forward(req,resp);
	}
}

f02.ftl

<#--freemarker注释,隐式注释,浏览器中看不到-->
<!-- html注释 -->
<#--是错误的,freemarker中不允许输出布尔类型的值,会报错
<h2>${bool}</h2>-->
<h1>布尔类型的转换</h1>
<#--方式一:?c-->
<h2>${bool?c}</h2>
<#--方式二:?string  弃用-->
<h2>${bool?string}</h2>
<#--${bool?string("bool为true时返回这个","bool为false时返回这个")-->
<h2>${bool?string("yes","false")}</h2>
<#--方式三:?then("true时返回这个","false时返回这个")-->
<h2>${bool?then("then_true","then_false")}</h2>
<hr><br/>
    
<h1>日期类型</h1>
<#--在freemarker中,日期类型也不支持直接输出如果要输出,先转换成日期型或字符串-->
<h3>${date?date}</h3>
<h3>${date?time}</h3>
<h3>${date?datetime}</h3>
<h3>${date?string("yyyy-MM-dd,HH:mm:ss")}</h3>

3、数值类型

image-20230712214134331
package com.itheima.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

/**
 * Description:
 * date: 2023/7/12 21:08
 *
 * @since JDK 11
 */
@WebServlet("/fm02")
public class FMServlet02 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//布尔类型
		req.setAttribute("bool",true);
		//日期类型
		req.setAttribute("date",new Date());
//		数值类型
		req.setAttribute("age",18);
		req.setAttribute("salary",16800);
		req.setAttribute("double",0.5485);
//		请求转发到模版2
		req.getRequestDispatcher("f02.ftl").forward(req,resp);
	}
}
<#--freemarker注释,隐式注释,浏览器中看不到-->
<!-- html注释 -->
<#--是错误的,freemarker中不允许输出布尔类型的值,会报错
<h2>${bool}</h2>-->
<h1>布尔类型的转换</h1>
<#--方式一:?c-->
<h2>${bool?c}</h2>
<#--方式二:?string  弃用-->
<h2>${bool?string}</h2>
<#--${bool?string("bool为true时返回这个","bool为false时返回这个")-->
<h2>${bool?string("yes","false")}</h2>
<#--方式三:?then("true时返回这个","false时返回这个")-->
<h2>${bool?then("then_true","then_false")}</h2>
<hr><br/>
<h1>日期类型</h1>
<#--在freemarker中,日期类型也不支持直接输出如果要输出,先转换成日期型或字符串-->
<h3>${date?date}</h3>
<h3>${date?time}</h3>
<h3>${date?datetime}</h3>
<h3>${date?string("yyyy-MM-dd,HH:mm:ss")}</h3>
<hr><br/>

<h1>数值类型,可以直接表示</h1>
${age?c}<br>
${salary?string.currency}<br>
${double?string.percent},自动四舍五入<br>
${double?string["0.##"]},自动四舍五入<br>

4、字符串类型

image-20230712221101976
<h1>字符串类型的展示</h1>
<h4>${str1?substring(1,3)}截取字符串,左闭右开</h4>
<h4>${str1?uncap_first}首字符小写</h4>
<h4>${str1?cap_first}首字符大写</h4>
<h4>${str1?lower_case}全部小写</h4>
<h4>${str1?substring(1,3)}</h4>
<h4>${str1?upper_case}全部大写</h4>
package com.itheima.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

/**
 * Description:
 * date: 2023/7/12 21:08
 *
 * @since JDK 11
 */
@WebServlet("/fm02")
public class FMServlet02 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//布尔类型
		req.setAttribute("bool",true);
		//日期类型
		req.setAttribute("date",new Date());
//		数值类型
		req.setAttribute("age",18);
		req.setAttribute("salary",16800);
		req.setAttribute("double",0.5485);
//		字符串类型的展示
		req.setAttribute("str1","WWW.ee");
//		请求转发到模版2
		req.getRequestDispatcher("f02.ftl").forward(req,resp);
	}
}

5、字符串空值类型的处理

image-20230712221959451
package com.itheima.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

/**
 * Description:
 * date: 2023/7/12 21:08
 *
 * @since JDK 11
 */
@WebServlet("/fm02")
public class FMServlet02 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//		空字符串的处理
		req.setAttribute("a",null);
		req.setAttribute("b","");
//		请求转发到模版2
		req.getRequestDispatcher("f02.ftl").forward(req,resp);
	}
}
<#--freemarker注释,隐式注释,浏览器中看不到-->
<!-- html注释 -->
<#--是错误的,freemarker中不允许输出布尔类型的值,会报错
<h2>${bool}</h2>-->
<h1>布尔类型的转换</h1>
<#--方式一:?c-->
<h2>${bool?c}</h2>
<#--方式二:?string  弃用-->
<h2>${bool?string}</h2>
<#--${bool?string("bool为true时返回这个","bool为false时返回这个")-->
<h2>${bool?string("yes","false")}</h2>
<#--方式三:?then("true时返回这个","false时返回这个")-->
<h2>${bool?then("then_true","then_false")}</h2>
<hr><br/>
<h1>日期类型</h1>
<#--在freemarker中,日期类型也不支持直接输出如果要输出,先转换成日期型或字符串-->
<h3>${date?date}</h3>
<h3>${date?time}</h3>
<h3>${date?datetime}</h3>
<h3>${date?string("yyyy-MM-dd,HH:mm:ss")}</h3>
<hr><br/>

<h1>数值类型,可以直接表示</h1>
${age?c}<br>
${salary?string.currency}<br>
${double?string.percent},自动四舍五入<br>
${double?string["0.##"]},自动四舍五入<br>

<hr><br/>
<h1>字符串类型的展示</h1>
<h4>${str1?substring(1,3)}截取字符串,左闭右开</h4>
<h4>${str1?uncap_first}首字符小写</h4>
<h4>${str1?cap_first}首字符大写</h4>
<h4>${str1?lower_case}全部小写</h4>
<h4>${str1?substring(1,3)}</h4>
<h4>${str1?upper_case}全部大写</h4>

<hr><br/>
<h1>空值情况的处理:</h1>
<h2>freemarker中对null和未定义的变量输出时都会报错,但是对空字符串不会报错</h2>
${a!}<br>
${b}<br>
${c!}<br>
${c???c}  ?c转为字符串类型

6、序列类型

package com.itheima.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

/**
 * Description:
 * date: 2023/7/12 21:08
 *
 * @since JDK 11
 */
@WebServlet("/fm02")
public class FMServlet02 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//		存储数组在request作用域中
		String[] arr = new String[]{"alili","clili","blili","dlili"};
		req.setAttribute("arr",arr);
//		请求转发到模版2
		req.getRequestDispatcher("f02.ftl").forward(req,resp);
	}
}

存储集合

package com.itheima.controller;

import com.itheima.pojo.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * Description:
 * date: 2023/7/12 21:08
 *
 * @since JDK 11
 */
@WebServlet("/fm02")
public class FMServlet02 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//		存储数组在request作用域中
		String[] arr = new String[]{"alili","clili","blili","dlili"};
		req.setAttribute("arr",arr);
        
//		存储map在request作用域中
		User user1 = new User("xx1",18);
		User user2 = new User("xx2",20);
		User user3 = new User("xx3",22);
		List<User> list = Arrays.asList(user1,user2,user3);
		req.setAttribute("list",list);
//		请求转发到模版2
		req.getRequestDispatcher("f02.ftl").forward(req,resp);
	}
}
<hr><br>
<h1>序列类型</h1>
<#list arr as el>
    ${el}----${el?index}<br>
</#list>
    <hr>
获取数组的大小:${arr?size}<br/><hr>
获取数组的第一个元素:${arr?first}<br/><hr>
获取数组的最后一个元素:${arr?last}<br/><hr>

使数组反转输出<br>
<#list arr?reverse as el>
    ${el}----${el?index}<br>
</#list>
<hr>
使数组升序输出<br>
<#list arr?sort as el>
    ${el}----${el?index}<br/>
</#list>
<hr>
使数组降序输出<br>
<#list arr?sort?reverse as el>
    ${el}----${el?index}<br/>
</#list>
<hr><br>

<h1>存储集合</h1>
<#list list as el>
    ${el.name} and ${el.age}<br>
</#list>
image-20230712230432753

7、***hash类型->map重点

package com.itheima.controller;

import com.itheima.pojo.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;

/**
 * Description:
 * date: 2023/7/12 21:08
 *
 * @since JDK 11
 */
@WebServlet("/fm02")
public class FMServlet02 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//		存储map在request作用域中
		Map<String,String> city = new HashMap<String, String>();
		city.put("beijing","北京");
		city.put("shanghai","上海");
		city.put("jinan","济南");
		req.setAttribute("city",city);
//		请求转发到模版2
		req.getRequestDispatcher("f02.ftl").forward(req,resp);
	}
}
<hr><br/>
<h1>map</h1>
<h2>map循环</h2>
<#list city?keys as key>
    ${key}----${city[key]}----${key_index}--
    <#--key_index返回索引坐标-->
    <#--key_has_next 返回布尔值,判断是否还有下一个元素-->
    <#if key_has_next>
        还有下一个---hello
    </#if>
    <br>
</#list>
<hr>
<#list city?values as v>
    ${v}<br/>
</#list>

<h2>可以直接对map进行value的输出</h2>
${city["beijing"]!"xx"}<br>
${city["jinan"]!"xx"}<br>
${city["1234"]!"xx"}<br>
image-20230712231300364

四、freemarker常见指令

1、定义变量

<#--定义变量-->
<#assign name="xxx" age=12 array=[1,"xxx"]>
${name} and ${age}<br>
${array[0]}<br>
${array[1]}<br>
<h2>对array进行拼接</h2>
${array?join("___")}
package com.itheima.controller;

import com.itheima.pojo.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;

/**
 * Description:
 * date: 2023/7/12 21:08
 *
 * @since JDK 11
 */
@WebServlet("/fm03")
public class FMServlet03 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//定义变量
		req.getRequestDispatcher("f03.ftl").forward(req,resp);
	}
}
image-20230712233012151

2、***ifelse

image-20230712233226410 image-20230712233319769 image-20230712233400660

3、list指令

image-20230712233641162

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/747644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch: nn网络层-卷积层

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch教程 也可获取。 文章目录 nn网络层-卷积层1D/2D/3D 卷积一维卷积二维卷积三维卷积 二维卷积&#xff1a;nn.Conv2d()卷积尺寸计算简化版卷积尺…

华为路由器如何通过Console口进行基本配置

华为HCIA试听课程&#xff1a;不会传输层协议&#xff0c;HCIA都考不过https://mp.weixin.qq.com/s/oKAL8GvdrcHEb5O_8bEZZQ 思科CCNA试听课程&#xff1a;适合初学者&#xff1a;VLAN原理与配置https://mp.weixin.qq.com/s/toIJg1EVFImalrwzbTONTQ 组网图形 组网需求 通过Cons…

【2023,学点儿新Java-31】测试:整型和浮点型变量的使用 | 附:计算机存储单位(转换关系)| 企业真题:为什么0.1+0.2不等于0.3

前情提要&#xff1a; 【2023&#xff0c;学点儿新Java-30】变量的基本使用&#xff1a;变量的意义 | 变量的构成要素 | Java中变量的数据类型、变量的使用 | 附&#xff1a;Java中变量的作用域 | 数据类型、变量名和变量值哪个最重要&#xff1f;【2023&#xff0c;学点儿新J…

vue中使用v-for实现两次嵌套循环,判断某子元素是否显示,进行复杂表单校验

一、需求场景&#xff1a; 有以下一个使用场景&#xff0c;名称111、名称222、名称333&#xff0c;是放在一个大数组里的&#xff0c;然后通过第一层for循环显示出来的。名称333数组里又包含自己的子数组&#xff0c;子数组再通过第二次for循环展示出来。当我们选择发放方式的…

基于Javaweb实现ATM机系统开发实战(七)用户密码修改

接下来我们完成密码修改的功能&#xff0c;还是老规矩先看前端界面&#xff1a;这里我们先把需要的变量进行修改&#xff0c;然后把卡号变成不可修改&#xff1a; <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-…

深度挖掘文物价值,VR博物馆讲好文物故事

文物不言&#xff0c;自有春秋。丝绸、字画、瓷器、古玩等&#xff0c;铺陈的是传奇&#xff0c;激荡的是灵魂。历史文物珍贵的莫过于其历史与文化的价值&#xff0c;倘若不能被更多的人欣赏、研究、传承&#xff0c;那么这些文物就很难实现“价值外溢”。 单纯的去读历史课本&…

分层解耦-三层架构

三层架构 在上篇文章的案例中写文章-CSDN创作中心 的Controller类承担了对于数据操作&#xff08;访问&#xff09;、对于对于数据的逻辑处理、以及接受请求响应数据的工作&#xff0c;对于类似的小项目来说冗杂程度还可以接收&#xff0c;但是如果项目更加复杂&#xff0c;就…

QT使用同一按钮实现打开/关闭新窗口

QT使用同一按钮实现【打开/关闭】新窗口&#xff0c;实现方案如下&#xff1a; 使用一个全局状态变量记录窗口打开状态通过该状态实现新窗口的show和close 实现代码如下&#xff1a; #include "mainwindow.h" #include "ui_mainwindow.h" #include "…

怎么用PDF24 Tools工具在线进行PDF文件合并

PDF文件是经常会被用到&#xff0c;它在我们的日常生活和工作中扮演着重要的角色。PDF文件合并是将多个PDF文件合并为单个文件&#xff0c;这个过程通常是为了方便管理多个PDF文件&#xff0c;或者将多个PDF文件合并为一个整体以便于共享或打印。既然如此&#xff0c;如何快速合…

达梦sql执行计划、HINT、索引简单应用

目录 收集统计信息. 3 1. 通过DBMS_STATS包中的方法. 3 2、删除指定表的统计信息. 3 执行计划. 3 常用执行计划操作符. 4 统计指定sql执行号的所有操作符的执行时间. 5 HINT 5 并行操作&#xff1a;. 6 查询计划重用、结果集重用. 7 示例. 8 1、收集统计信息&#x…

Comparable/Comparator

现在有一个自定义学生的学生类,里面有name属性,和age属性,我们如何去比较大小? class Student{public String name;public int age;public Student(String name, int age) {this.name name;this.age age;}Overridepublic String toString() {return "Student{" &…

路径规划算法:基于广义正态分布优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于广义正态分布优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于广义正态分布优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用…

关于博客更新的二三事

原文链接&#xff1a;关于博客更新的二三事 前言 很显然&#xff0c;正如大家所见到的&#xff0c;这一版本主题v4.7.0进行了大量的删减工作。可能正如 “大道至简” 吧&#xff0c;相比于前一版本 v3.7.1 &#xff0c;个人认为可能有点花哨&#xff08;仅个人认为&#xff09…

uni-app使用plus本地推送通知栏信息,不使用第三方个推实现消息在线统一推送、消息通知(MQTT、WebSocket、setInterval定时器)

plus.push.createMessage() 因项目一直是运行在内网&#xff0c;所以不支持使用uni-push等运行在公网的第三方个推渠道。 那就只能使用plus.push.createMessage()&#xff0c;示例代码如下&#xff1a; let content "您有一条新的消息~"; let options {"cov…

玩转CSS基础:CSS盒模型

CSS盒模型 什么是CSS盒模型&#xff1f; 完整的 CSS 盒模型应用于块级盒子&#xff0c;内联盒子只使用盒模型中定义的部分内容。模型定义了盒的每个部分 —— margin, border, padding, and content &#xff0c;合在一起就是在页面上看到的内容。为了增加一些额外的复杂性&a…

操作系统Linuxday04

Linux用户相关 Linux是多用户多任务&#xff0c;可以支持多个用户同时登录&#xff0c;并且多个用户可以执行不同的任务&#xff0c;互不影响。 不同的用户&#xff0c;有不同的权限&#xff0c;可以完成权限以内的不同的任务 用户组 如果一次性用户太多&#xff0c;分别给…

【嵌入式Linux项目】基于Linux的全志H616开发板智能垃圾桶项目

目录 一、功能需求 二、涵盖的知识点 1、wiringPi库下的相关硬件操作函数调用 2、线程&#xff08;未使用互斥锁和条件&#xff09; 3、父子进程 4、网络编程&#xff08;socket套接字&#xff09; 5、进程间通信&#xff08;共享内存和信号量&#xff09; 三、开发环境…

[MySQL]MySQL内置函数

[MySQL]MySQL内置函数 文章目录 [MySQL]MySQL内置函数1. 日期函数2. 字符串函数3. 数学函数4. 其他函数 1. 日期函数 常用日期函数如下&#xff1a; 函数名称描述current_date()获取当前日期current_time()获取当前时间current_timestamp()获取当前时间戳now()获取当前日期时…

Redis_安装配置(2)

目录 一、安装redis 1、安装gcc依赖 2、下载并解压安装包 3、编译 4、安装 5、设置全局命令 二、启动redis 1、前台启动 2、后台启动 2.1 修改redis.conf文件 2.2 使用指定配置启动redis 2.3 kill redis的进程 3、开机启动 三、配置redis 远程访问设置 设置密码…

Magic3D: High-Resolution Text-to-3D Content Creation(高分辨率文本到3d内容创建)

Magic3D: High-Resolution Text-to-3D Content Creation&#xff08;高分辨率文本到3d内容创建&#xff09; Paper&#xff1a;https://readpaper.com/pdf-annotate/note?pdfId4738271534435532801&noteId1848084184935912192 Project&#xff1a;https://research.nvidia…