YangeIT大约 16 分钟

1.UUID

UUID

UUID,即通用唯一标识符(Universally Unique Identifier),是一个用于标识信息的128位数值。 它具有全球唯一性,可以用于生成不重复的标识符,常用于分布式系统中实现唯一标识

入门操作

入门案例编写: 让我们以Java语言为例,编写一个简单的入门案例来生成UUID。

import java.util.UUID;

public class UUIDDemo {
    public static void main(String[] args) {
        UUID uuid = UUID.randomUUID();
        System.out.println("生成的UUID:" + uuid);
    }
}

练习题

  1. 编写一个方法,生成5个UUID并将它们存储在一个数组中。
  2. 将练习题1中生成的UUID按照字典序排序,并输出排序后的结果。

小结

  1. UUID是一种用于唯一标识信息元素的标识符。
  2. 学习UUID可以帮助我们解决分布式系统中的唯一标识需求。
  3. UUID具有高度的唯一性和无序性,广泛应用于数据库、分布式系统等领域。
  4. 在Java中,可以使用UUID类来生成和操作UUID。
  5. 练习题可以帮助巩固对UUID的理解和应用。

2.MD5加密

MD5加密

MD5(Message Digest Algorithm 5)是一种常用的消息摘要算法,用于将任意长度的数据生成固定长度的散列值(128位)。

  • MD5 由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,由MD2、MD3、MD4发展而来。

它是不可逆的,即无法从散列值还原出原始数据。

代码操作

编写一个Java方法,对给定的字符串进行MD5加密,并返回加密后的散列值。

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Example {
    public static String encryptMD5(String input) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] messageDigest = md.digest(input.getBytes());
            StringBuilder hexString = new StringBuilder();
            for (byte b : messageDigest) {
                hexString.append(String.format("%02x", b));
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void main(String[] args) {
        String plaintext = "Hello, MD5!";
        String encryptedText = encryptMD5(plaintext);
        System.out.println("Original: " + plaintext);
        System.out.println("MD5: " + encryptedText);
    }
}

练习题

  • 使用上述的工具类,接受用户输入的密码,并将其加密为MD5值。然后与预先存储的MD5值进行比较,判断密码是否正确。
  • 观察同样的密码,md5的值是否一样? 这样似乎不安全! 思考一下解决方案?

小结

  1. MD5是一种常用的消息摘要算法,用于生成固定长度的散列值
  2. 学习MD5加密可以提高数据的安全性和完整性,广泛应用于密码存储、文件校验、数字签名等领域。
  3. 在Java中,可以使用MessageDigest类来实现MD5加密。
  4. 练习题有助于加深对MD5加密的理解和应用。

通过学习MD5加密,我们可以更好地保护数据的安全性和完整性,提高系统的安全性。了解MD5加密的应用场景和实践,可以为开发安全可靠的应用程序打下基础。

3. 在SpringBoot下集成MybatisPlus框架

MybatisPlus框架

代码操作

  1. SpringBoot项目工程创建完成后,在pom.xml文件中的dependencies标签内,导入Mybatis的起步依赖和MySQL驱动依赖

springboot parent版本:2.5+ 版本

点击查看SpringBoot工程创建步骤open in new window

点击查看集成MybatisPlus详细步骤open in new window

<!-- lombok的依赖,能免除get和set方法 -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.28</version>
</dependency>

<!-- mybatis的起步依赖 -->
<dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.1</version>
</dependency>

<!-- mysql驱动包依赖 版本根据mysql安装版本:常见的5.1.47  和8.0.23 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

  1. 创建mybatis数据库,设置编码为utf-8mb4,创建user表,并导入一下假数据
-- 删除原有数据库
DROP TABLE IF EXISTS `user`;
-- 创建user表
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL UNIQUE,
  `password` varchar(32) NOT NULL DEFAULT '12345678',
  `age` int(10) NOT NULL,
  `hobby` varchar(50) DEFAULT NULL,
  `description` varchar(200) NOT NULL,
  `department` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('8', '赵灵儿', '12345678', '20', '阵法、法术修炼', '纯真善良的女子,拥有强大的阴阳之力', '阴阳家');
INSERT INTO `user` VALUES ('9', '楚留香', '12345678', '32', '剑术、侠义行侠', '风流倜傥的豪客,以智慧和剑术征服江湖', '江湖人士');
INSERT INTO `user` VALUES ('10', '白浅', '12345678', '26', '宫廷舞蹈、仙法修炼', '美丽高贵的仙子,守护爱与正义的力量', '青丘派');
INSERT INTO `user` VALUES ('11', '苏明玉', '12345678', '29', '医术、家族事务', '聪明伶俐的女医生,心系家族兴衰', '苏家');
INSERT INTO `user` VALUES ('13', '李逍遥', '12345678', '28', '剑术、侠义行侠', '潇洒自如的剑客,为爱与正义奋斗', '天墉城');
INSERT INTO `user` VALUES ('14', '陆展元', '12345678', '31', '龙族法术、海洋探险', '勇敢善良的龙族王子,探索海洋奥秘', '东海龙宫');
INSERT INTO `user` VALUES ('18', '萧炎', '12345678', '25', '功夫、修炼', '机缘巧合下拥有强大火焰之力的少年', '草庙村');
INSERT INTO `user` VALUES ('19', '陆九淳', '12345678', '29', '家族事务、剑术修炼', '家族责任重于一切的江湖少年', '陆家');
INSERT INTO `user` VALUES ('20', '韩立', '12345678', '22', '灵力修炼、阵法研究', '机智聪明的年轻修士,掌握神奇的法术', '韩家');
INSERT INTO `user` VALUES ('21', '顾惜朝', '12345678', '28', '法术修炼、守护门派', '心地善良的女子,为守护门派而战', '古玄门');
INSERT INTO `user` VALUES ('22', '九霄真人', '12345678', '35', '仙法修炼、教导弟子', '威严正直的仙人,指导后辈修仙道路', '蓝霞宫');
INSERT INTO `user` VALUES ('23', '姬昌', '12345678', '33', '阴阳术、仙法修炼', '智勇双全的江湖人物,掌握阴阳之力', '太阴派');
INSERT INTO `user` VALUES ('24', '西门吹雪', '12345678', '30', '剑术、侠义行侠', '风流倜傥的剑客,执着追求剑道境界', '独孤家');
INSERT INTO `user` VALUES ('25', '夏冰', '12345678', '26', '魔法修炼、冰雪之力', '美丽神秘的女子,掌握冰雪之力', '幻冥宗');
INSERT INTO `user` VALUES ('26', '杨影枫', '12345678', '27', '暗器、侠义行侠', '冷酷无情的刺客,为正义而战', '影家');
INSERT INTO `user` VALUES ('27', '白素素', '12345678', '24', '文学创作、人界事务', '善良纯真的女子,用文字记录人间百态', '人界');
INSERT INTO `user` VALUES ('28', '独孤剑', '12345678', '32', '剑术、侠义行侠', '心系家族的剑客,剑法高超', '独孤家');
INSERT INTO `user` VALUES ('29', '楚九霄', '12345678', '28', '阵法、家族事务', '机智聪明的年轻人,心系家族荣耀', '楚家');
INSERT INTO `user` VALUES ('30', '谢晓峰', '12345678', '31', '拳脚功夫、江湖恩怨', '正直勇敢的江湖豪杰,忠于兄弟情义', '铁血帮');
INSERT INTO `user` VALUES ('31', '叶孤城', '12345678', '29', '剑术、侠义行侠', '冷酷无情的剑客,追求剑道极致', '武境城');
INSERT INTO `user` VALUES ('32', '李逸风', '12345678', '25', '修炼、探险', '热血青年,勇往直前探索未知世界', '蓝枫大陆');
INSERT INTO `user` VALUES ('33', '萧霜', '12345678', '27', '冰雪法术、守护宗门', '冷艳高傲的女子,守护冰霜宗的利益', '冰霜宗');
INSERT INTO `user` VALUES ('34', '楚玉峰', '12345678', '30', '家族事务、阵法修炼', '机智聪明的年轻人,家族责任重于一切', '楚家');
INSERT INTO `user` VALUES ('35', '陆雪琪', '12345678', '24', '法术、修行', '美丽冷傲的仙子,修炼法术追求修行境界', '青云门');
INSERT INTO `user` VALUES ('36', '明月心', '12345678', '26', '琴音、舞蹈', '温柔善良的女子,以音乐传递爱与希望', '云裳派');
INSERT INTO `user` VALUES ('37', '程灵素', '12345678', '27', '仙法修炼、仙岛事务', '温柔善良的仙子,守护仙岛和平', '蓬莱仙岛');
INSERT INTO `user` VALUES ('38', '韩非', '12345678', '23', '学术研究、阵法修炼', '聪明睿智的年轻人,研究阵法和学术', '韩家');
INSERT INTO `user` VALUES ('40', '戚芳', '12345678', '23', '武功、家族事务', '机智勇敢的女子,为家族荣誉而战', '戚家');
INSERT INTO `user` VALUES ('41', '楚轩辕', '12345678', '28', '家族事务、剑术修炼', '家族责任重于一切的剑客', '楚家');
INSERT INTO `user` VALUES ('42', '秦王', '12345678', '35', '政务、战争', '智勇双全的帝王,统一六国的志向', '秦国');
INSERT INTO `user` VALUES ('43', '李寻欢', '12345678', '30', '剑术、侠义行侠', '聪明机智的江湖人物,正义心十足', '大宛城');
INSERT INTO `user` VALUES ('44', '唐三藏', '12345678', '45', '佛法修行、西行取经', '慈悲心肠的高僧,带领徒弟西天取经', '大唐');
INSERT INTO `user` VALUES ('45', '吴青烟', '12345678', '26', '法术修行、江湖事务', '冷艳高傲的女子,修炼法术追求江湖大业', '青云门');

  1. 在application.yml配置文件下,配置数据库信息(驱动、链接、用户名、密码)

点击查看详细步骤open in new window


spring:
#数据库连接信息
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: 1234

#MybatisPlus配置  日志,驼峰,id策略
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true

  1. 将UserMapper类 将其中的方法改成抽象方法,并且将类改成接口

点击查看详细图解步骤open in new window

4. 在SpringBoot下集成th模板

Thymeleaf

Thymeleaf,是一个XML/XHTML/HTML模板引擎,开源的java库,可以用于SpingMVC项目中,用于代替JSP、FreeMarker或者其他的模板引擎;页面与数据分离,提高了开发效率,让代码重用更容易。

官网:https://www.thymeleaf.org/open in new window

JDK1.8+

集成示例

  1. 定义一个ExampleController类,注意,这里使用@Controller注解标记ExampleController,不要使用@RestController

  2. controller层具体处理请求的方法内,增加一个形参org.springframework.ui.Model,用于携带后台的处理数据;

  3. 返回值的“index”,表示classpath下templates中,模板名称是index,后缀是.html的模板;

  4. contoller层处理完后,携带后台处理数据,到达视图层进行数据的渲染。

@Controller
@RequestMapping("/example")
public class ExampleController {
   @GetMapping("/index")
        public String index(Model model) {
        model.addAttribute("userName", "fanfu");
        model.addAttribute("msg", "thymeleaf模板内容");
        return "index";
    }
}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
    <div>你好!<span data-th-text="${userName}"></span></div>
    <div>这是一个<span data-th-text="${msg}"></span></div>
</body>
</html>