maven如何建立JavaWeb项目并连接数据库,验证登录

news2024/12/24 8:55:44

这里是建立建立web项目:Maven如何创建Java web项目(纯干货版)!!!_明天更新的博客-CSDN博客

我们主要演示如何连接数据库验证登录。

1.在webapp目录下创建我们的登录页面:index.jsp    还需要再写一个验证登录成功的页面(如果页面跳转成功就代表登录成功)

 内容如下:(你可以简单写一下,我们的主要功能是验证登录)

<%--
  Created by IntelliJ IDEA.
  User: admin
  Date: 2023/8/14
  Time: 9:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <title>用户登录</title>
    <link rel="stylesheet" href="index_log.css" />
    <link href="https:/cdn.staticfile.org/layui/2.8.0/css/layui.css" rel="stylesheet">
    <style type="text/css">
        * {
            /*初始化 清除页面元素的内外边距*/
            padding: 0;
            margin: 0;
            /*盒子模型*/
            box-sizing: border-box;
        }

        body {
            /*弹性布局 让页面元素垂直+水平居中*/
            display: flex;
            justify-content: center;
            align-items: center;
            /*让页面始终占浏览器可视区域总高度*/
            height: 100vh;
            /*背景渐变色*/
            background: linear-gradient(#141e30, #243b55);
            /* background-image: url("https://img0.baidu.com/it/u=2635618108,3973101288&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=281"); */
            background-repeat: no-repeat;

        }

        .login {
            /*弹性布局 让子元素称为弹性项目*/
            display: flex;
            /*让弹性项目垂直排列  原理是改变弹性盒子的主轴方向
    父元素就是弹性盒子  现在改变后的主轴方向是向下了*/
            flex-direction: column;
            /*让弹性项目在交叉轴方向水平居中  现在主轴的方向是向下
    交叉轴的方向是与主轴垂直 交叉轴的方向是向右*/
            align-items: center;
            width: 400px;
            padding: 40px;
            background-color: rgba(0, 0, 0, 0.2);
            box-shadow: 0 15px 25px rgba(0, 0, 0, 0.4);

        }

        .login h2 {
            color: #fff;
            margin-bottom: 30px;
        }

        .login .login_box {
            /*相对定位*/
            position: relative;
            width: 100%;
        }

        .login .login_box input {
            /*清除input框自带的边框和轮廓*/
            outline: none;
            border: none;
            width: 100%;
            padding: 10px 0;
            margin-bottom: 30px;
            color: #fff;
            font-size: 16px;
            border-bottom: 1px solid #fff;
            /*背景颜色为透明色*/
            background-color: transparent;
        }

        .login .login_box label {
            position: absolute;
            top: 0;
            left: 0;
            padding: 10px 0;
            color: #fff;
            /*这个属性的默认值是auto 默认是这个元素可以被点击
    但是如果我们写了none  就是这个元素不能被点击,就好像它可见但是不能用
    可望而不可及*/
            /*这个就是两者的区别*/
            pointer-events: none;
            /*加个过度*/
            transition: all 0.5s;
        }

        /*: focus 选择器是当input获得焦点是触发的样式 + 是相邻兄弟选择器
    去找与input相邻的兄弟label*/
        /*:valid 选择器是判断input 框的内容是否合法,如果合法会执行下面的属性代码,
    不合法就不会执行,我们刚开始写布局的时候给input框写了required 我们删掉看对比
    当没有required的话   input框的值就会被认为一直合法,所以一直都是下方的样式,
    但是密码不会,密码框的值为空,那么这句话就不合法,required不能为空
    当我们给密码框写点东西的时候才会执行以下代码

*/
        .login .login_box input:focus+label,
        .login .login_box input:valid+label {
            top: -20px;
            color: #03e9f4;
            font-size: 12px;
        }

        .login a {
            /*overflow: hidden;*/
            position: relative;
            padding: 10px 20px;
            color: #03e9f4;
            /*取消a表现原有的下划线*/
            text-decoration: none;
            /*同样加个过渡*/
            transition: all 0.5s;
        }

        .login a:hover {
            color: #fff;
            border-radius: 5px;
            background-color: #03e9f4;
            box-shadow: 0 0 5px #03e9f4, 0 0 25px #03e9f4, 0 0 50px #03e9f4, 0 0 100px #03e9f4;
        }

        .login a span {
            position: absolute;
        }

        .login a span:first-child {
            top: 0;
            left: -100%;
            width: 100%;
            height: 2px;
            /*to right 就是往右边 下面的同理*/
            background: linear-gradient(to right, transparent, #03e9f4);
            /*动画 名称  时长 linear是匀速运动 infinite是无限次运动*/
            animation: move1 1s linear infinite;

        }

        .login a span:nth-child(2) {
            right: 0;
            top: -100%;
            width: 2px;
            height: 100%;
            background: linear-gradient(transparent, #03e6f4);
            /*这里多了个0.25s其实是延迟时间*/
            animation: move2 1s linear 0.25s infinite;
        }

        .login a span:nth-child(3) {
            right: -100%;
            bottom: 0;
            width: 100%;
            height: 2px;
            background: linear-gradient(to left, transparent, #03e9f4);

            animation: move3 1s linear 0.5s infinite;
        }

        .login a span:last-child {
            left: 0;
            bottom: -100%;
            width: 2px;
            height: 100%;
            background: linear-gradient(#03e9f4, transparent);
            animation: move4 1s linear 0.75s infinite;
        }

        /*写一下动画 */
        @keyframes move1 {
            0% {
                left: -100%;

            }

            50%,
            100% {
                left: 100%;
            }
        }

        @keyframes move2 {
            0% {
                top: -100%;

            }

            50%,
            100% {
                top: 100%;
            }
        }

        @keyframes move3 {
            0% {
                right: -100%;

            }

            50%,
            100% {
                right: 100%;
            }
        }

        @keyframes move4 {
            0% {
                bottom: -100%;

            }

            50%,
            100% {
                bottom: 100%;
            }
        }

        #mybutton {
            background: transparent;
            border-width: 0px;
            outline: none;
            font-size: 22px;
            color: white;
        }
    </style>

</head>

<body>

<form action="home.jsp" method="post">
    <div class="login">
        <h2>用户登录</h2>
        <div class="login_box">
            <!-- required就是不能为空  必须在css效果中有很大的作用 -->

            <input type="text" name='username' id='name' required /> <label for="name">用户名</label>
        </div>
        <div class="login_box">

            <input type="password" name='password' id='pwd' required="required">
            <label for="pwd">密码</label>
        </div>
        <div class="login_box">
            <img alt="" src="index.jsp" onclick="refresh()"><br>

        </div>
        <div class="layui-form-item">
            <div class="layui-row">
                <div class="layui-col-xs7">
                    <div class="layui-input-wrap">
                        <div class="layui-input-prefix">
                            <i class="layui-icon layui-icon-vercode"></i>
                        </div>
                        <input type="text" name="captcha" value="" lay-verify="required" placeholder="验证码"
                               lay-reqtext="请填写验证码" autocomplete="off" class="layui-input" lay-affix="clear"
                               style="color: white; background-color: #141f30;">
                    </div>
                </div>
                <div class="layui-col-xs5">
                    <div style="margin-left: 10px;">
                        <img src="https://www.oschina.net/action/user/captcha"
                             onclick="this.src='https://www.oschina.net/action/user/captcha?t='+ new Date().getTime();">
                    </div>
                </div>
            </div>
        </div>
        <a href="后台界面.html"> <input type="submit" value="登录" id="mybutton" > <span></span>
            <span></span> <span></span> <span></span>
        </a>

    </div>

</form>
<script>
    layui.use(function () {
        var form = layui.form;
        var layer = layui.layer;
        // 提交事件
        form.on('submit(demo-login)', function (data) {
            var field = data.field; // 获取表单字段值
            // 显示填写结果,仅作演示用
            layer.alert(JSON.stringify(field), {
                title: '当前填写的字段值'
            });
            // 此处可执行 Ajax 等操作
            // …
            return false; // 阻止默认 form 跳转
        });
    });
</script>
</body>

</html>

 验证登录成功后的界面:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./1.js"></script>
    <!-- 引入 layui.css -->
    <link href="https://unpkg.com/layui@2.8.0/dist/css/layui.css" rel="stylesheet">
    <!-- 引入 layui.js -->
    <script src="https://unpkg.com/layui@2.8.0/dist/layui.js"></script>
    <style>
        .main {
            /* display: flex; */
            border: 1px solid #000;
            height: 670px;
            width: 100%;
            background-image: -webkit-linear-gradient(left, #35283d, #cbac7a);
            justify-content: space-between;

        }

        .top {
            /* display: inline-block; */
            position: relative;
            display: block;
            border: 1px solid #aaa;
            height: 50px;
            width: 100%;
            display: flex;
            top: 0px;
            transition: all .3s linear;
        }
        .top:hover{
            top: -2px;
            box-shadow: 0 0 10px 0 #8aff54;
        }
        .top p {
            color: white;
            font-size: 25px;
            padding-top: 5px;
        }

        .tleft {
            height: 48px;
            /* border: 1px solid #c3ef3f; */
            width: 50%;
        }

        .tleft p {
            color: white;
            font-size: 25px;
            padding-top: 5px;
        }

        .tright {
            height: 48px;
            /* border: 1px solid #c3ef3f; */
            width: 50%;
        }

        .layui-form-item {
            padding-top: 5px;
            margin-left: 60%;
        }

        #i1 {
            padding-left: 20px;
            padding-top: 4px;
        }


        .down {
            position: relative;
            display: inline-block;
            /* position: relative;
            top: 53px; */
            /* border: 1px solid #f00; */
            height: 610px;
            width: 100%;
            display: flex;
            /* justify-content: center; */
            top: 0px;
            transition: all .3s linear;
        }
        .down:hover{
            top: -2px;
            box-shadow: 0 0 10px 0 #8aff54;
        }
        .left {
            position: relative;
            display: inline-block;
            border: 1px solid #666;
            height: 610px;
            width: 18%;
            top: 0px;
            transition: all .3s linear;
        }
        .left:hover{
            top: -2px;
            box-shadow: 0 0 10px 0 #8aff54;
        }
        .layui-collapse{
            border-bottom: 0px;
            border-top: 0px;
            border: 0px;

        }
        .right {
            display: inline-block;
            position: relative;
            top: 0px;
            width: 82%;
            height: 610px;
            /* border: 1px solid #0a0; */
            transition: all .3s linear;
        }
        .right:hover{
            top: -2px;
            box-shadow: 0 0 10px 0 #8aff54;
        }
        .rtop {
            display: flex;
            justify-content: space-around;
            margin-top: 10px;
        }

        .left1 {
            position: relative;
            top: 0px;
            /* border: 1px solid #000; */
            width: 20%;
            height: 200px;
            transition: all .3s linear;
        }
        .left1:hover{
            top: -2px;
            box-shadow: 0 0 10px 0 #8aff54;
        }
        .center {
            /* border: 1px solid #f0f; */
            height: 280px;

        }

        .center1 {
            /* border: 1px solid #f0f; */
            height: 310px;
            margin-top: 20px;
        }

        .left2 {
            position: relative;
            top: 0px;
            /* border: 1px solid #1ec431; */
            width: 30%;
            height: 250px;
            margin-top: 20px;
            background-color: #794e4d;
            transition: all .3s linear;
        }
        .left2:hover{
            top: -2px;
            box-shadow: 0 0 10px 0 #8aff54;
        }
        .small1 {
            /* border: 1px solid #ec2727; */
            height: 22%;
            background-color: #473c3b;
        }

        .small1 p {
            color: #aaa;
            font-size: 25px;
            padding-top: 5px;
            text-align: center;
        }

        .small2 {
            /* border: 1px solid #ec2727; */
            height: 56%;
            background-color: #3e3234;
        }

        .small2 .p1 {
            /* margin-top: 10px; */
            color: #999;
            font-size: 40px;
            padding-top: 5px;
            text-align: center;
        }

        .small2 .p2 {
            color: #aaa;
            font-size: 16px;
            padding-top: 5px;
            text-align: center;
        }

        .small3 {
            /* border: 1px solid #ec2727; */
            height: 22%;
            background-color: #352b2a;
        }

        .small3 p {
            color: #aaa;
            font-size: 16px;
            padding-top: 10px;
            /* text-align: center; */
        }
        .layui-input{
            background-color: #bea075;
        }
    </style>
</head>

<body>
<div class="main">
    <div class="top">
        <div class="tleft">
            <p>欢迎来到我的主场!!!</p>
        </div>
        <div class="tright">
            <div class="layui-form-item">
                <div class="layui-input-group">
                    <input type="text" placeholder="带任意后置内容" class="layui-input">
                    <div class="layui-input-split layui-input-suffix" style="cursor: pointer;">
                        <i class="layui-icon layui-icon-search"></i>
                    </div>
                    <i class="layui-icon layui-icon-tabs" id="i1"></i>
                    <i class="layui-icon layui-icon-user" id="i1"></i>

                </div>
            </div>
        </div>
    </div>
    <div class="down">
        <div class="left">
            <div class="layui-collapse" style="height: 610px;">
                <div class="layui-colla-item">
                    <div class="layui-colla-title" style="background-color: transparent; color: white;">Collapse
                        Title 1&nbsp;&nbsp;&nbsp;<i class="layui-icon layui-icon-face-smile"></i> </div>
                    <div class="layui-colla-content">
                        <p>Content 1</p>
                    </div>
                </div>
                <div class="layui-colla-item">
                    <div class="layui-colla-title" style="background-color: transparent; color: white;">Collapse
                        Title 2</div>
                    <div class="layui-colla-content">
                        <p>Content 2</p>
                    </div>
                </div>
                <div class="layui-colla-item">
                    <div class="layui-colla-title" style="background-color: transparent; color: white;">Collapse
                        Title 3</div>
                    <div class="layui-colla-content">
                        <ul>
                            <li>Content list</li>
                            <li>Content list</li>
                        </ul>
                    </div>
                </div>
                <div class="layui-colla-item">
                    <div class="layui-colla-title" style="background-color: transparent; color: white;">折叠面板的标题
                    </div>
                    <div class="layui-colla-content">
                        <p>折叠面板的内容</p>
                    </div>
                </div>
            </div>
        </div>
        <div class="right">
            <div class="center">
                <div class="top" style="border: 0px;">
                    <p>我做的还不错吧!!!</p>
                </div>
                <div class="rtop">
                    <div class="left1">
                        <div class="small1">
                            <p>One</p>
                        </div>
                        <div class="small2">
                            <p class="p1">$21.5K</p>
                            <p class="p2">上升⬆3% form tengxun nwes</p>
                        </div>
                        <div class="small3">
                            <p>Welocme to family</p>
                        </div>
                    </div>
                    <div class="left1">
                        <div class="small1">
                            <p class="p1">Two</p>
                        </div>
                        <div class="small2">
                            <p class="p1">$30K</p>
                            <p class="p2">上升⬆5% form baidu nwes</p>
                        </div>
                        <div class="small3">
                            <p>Welocme to family</p>
                        </div>
                    </div>
                    <div class="left1">
                        <div class="small1">
                            <p>Three</p>
                        </div>
                        <div class="small2">
                            <p class="p1">$27K</p>
                            <p class="p2">上升⬆14% form huofu nwes</p>
                        </div>
                        <div class="small3">
                            <p>Welocme to family</p>
                        </div>
                    </div>
                    <div class="left1">
                        <div class="small1">
                            <p>Four</p>
                        </div>
                        <div class="small2">
                            <p class="p1">$25.5K</p>
                            <p class="p2">上升⬆8% form baidu nwes</p>
                        </div>
                        <div class="small3">
                            <p>Welocme to family</p>
                        </div>
                    </div>
                </div>
            </div>
            <div class="center1">
                <div class="rtop">
                    <div class="left2" id="main"></div>
                    <script type="text/javascript">
                        // 基于准备好的dom,初始化echarts实例
                        var myChart = echarts.init(document.getElementById('main'));
                        //*****从这开始复制粘贴*****
                        // 指定图表的配置项和数据
                        option = {
                            xAxis: {
                                type: 'category',
                                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
                            },
                            yAxis: {
                                type: 'value'
                            },
                            series: [
                                {
                                    data: [150, 230, 224, 218, 135, 147, 260],
                                    type: 'line'
                                }
                            ]
                        };
                        //结束位置
                        // 使用刚指定的配置项和数据显示图表。
                        myChart.setOption(option);
                    </script>
                    <div class="left2" id="main1"></div>
                    <script type="text/javascript">
                        // 基于准备好的dom,初始化echarts实例
                        var myChart = echarts.init(document.getElementById('main1'));
                        //*****从这开始复制粘贴*****
                        // 指定图表的配置项和数据
                        option = {
                            tooltip: {
                                trigger: 'axis',
                                axisPointer: {
                                    type: 'shadow'
                                }
                            },
                            grid: {
                                left: '3%',
                                right: '4%',
                                bottom: '3%',
                                containLabel: true
                            },
                            xAxis: [
                                {
                                    type: 'category',
                                    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
                                    axisTick: {
                                        alignWithLabel: true
                                    }
                                }
                            ],
                            yAxis: [
                                {
                                    type: 'value'
                                }
                            ],
                            series: [
                                {
                                    name: 'Direct',
                                    type: 'bar',
                                    barWidth: '60%',
                                    data: [10, 52, 200, 334, 390, 330, 220]
                                }
                            ]
                        };
                        //结束位置
                        // 使用刚指定的配置项和数据显示图表。
                        myChart.setOption(option);
                    </script>
                    <div class="left2" id="main2"></div>
                    <script type="text/javascript">
                        // 基于准备好的dom,初始化echarts实例
                        var myChart = echarts.init(document.getElementById('main2'));
                        //*****从这开始复制粘贴*****
                        // 指定图表的配置项和数据
                        option = {
                            title: {
                                text: 'Referer of a Website',
                                subtext: 'Fake Data',
                                left: 'center'
                            },
                            tooltip: {
                                trigger: 'item'
                            },
                            legend: {
                                orient: 'vertical',
                                left: 'left'
                            },
                            series: [
                                {
                                    name: 'Access From',
                                    type: 'pie',
                                    radius: '50%',
                                    data: [
                                        { value: 1048, name: 'Search Engine' },
                                        { value: 735, name: 'Direct' },
                                        { value: 580, name: 'Email' },
                                        { value: 484, name: 'Union Ads' },
                                        { value: 300, name: 'Video Ads' }
                                    ],
                                    emphasis: {
                                        itemStyle: {
                                            shadowBlur: 10,
                                            shadowOffsetX: 0,
                                            shadowColor: 'rgba(0, 0, 0, 0.5)'
                                        }
                                    }
                                }
                            ]
                        };
                        //结束位置
                        // 使用刚指定的配置项和数据显示图表。
                        myChart.setOption(option);
                    </script>
                </div>
            </div>
        </div>
    </div>
</div>
</body>

</html>

2.建立Java文件继承HttpServlet,利用jdbc连接数据库。

这里有如何连接数据库,可以作为参考:JDBC连接数据库如何实现你会吗???_明天更新的博客-CSDN博客

 代码如下:

/*
 * Copyright (c) 2020, 2023,  All rights reserved.
 *
 */
package cn.scl;

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.sql.*;

/**
 * <p>Project: jdbctest1 - Dome</p>
 * <p>Powered by scl On 2023-08-14 09:48:20</p>
 * <p>描述:<p>
 *
 * @author 孙臣龙 [1846080280@qq.com]
 * @version 1.0
 * @since 17
 */
@WebServlet("/home")
public class Dome  extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        try {
            String username=req.getParameter("username");
            String password=req.getParameter("password");
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql:/db1?user=root");
            String sql="select count(*) from user where username=? and password =?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1,username);
            ps.setString(2,password);
            ResultSet rs = ps.executeQuery();
            rs.next();
            if (rs.getInt(1)>0){
                System.out.println("登录成功");
            }
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

 主要是将我们之前学习过的maven和连接数据库结合起来使用。。

 

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

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

相关文章

生信豆芽菜-单基因与免疫浸润的关系

网址&#xff1a;http://www.sxdyc.com/panCancerImmuInfil 该工具主要用于查看单基因在泛癌中与免疫细胞评分的相关性 提交后等待运行成功即可&#xff0c;还可以关注&#xff1a;豆芽数据分析

Modbus工业RFID设备在自动化生产线中的应用

传统半自动化生产线在运作的过程&#xff0c;因为技工的熟练程度&#xff0c;专业素养的不同&#xff0c;在制造过程中过多的人为干预&#xff0c;工厂将很难对每条生产线的产能进行标准化管理和优化。如果半自动化生产线系统是通过前道工序的作业结果和检测结果来决定产品在下…

MySQL事务隔离级别、锁机制、三大范式

目录 一、事务 1.概念 2.事务的特性 3.并发带来的问题 4.事务的隔离级别 二、锁机制 1.什么是锁 2.MySQL锁分类 3.乐观悲观锁 4.共享排它锁 5.意向锁 6.粒度锁 三、三大范式 1.第一范式 2.第二范式 3.第三范式 一、事务 1.概念 事务是逻辑上的一组操作&#xf…

XXL-JOB任务调度平台的安装使用教程(保姆级教程)

首先从GitHub上面将项目clone下来。 GitHub地址&#xff1a;https://gitee.com/xuxueli0323/xxl-job.git 下载好之后&#xff0c;然后通过IDEA打开&#xff0c;将Maven编译好后项目结构如下 在数据库中运行这个SQL文件 &#xff0c;将基础表创建出来。就可以得到左边图中那些表…

P12-Retentive NetWork-RetNet挑战Transformer

论文地址:https://arxiv.org/abs/2307.08621 目录 Abstract 一.Introduction 二.Retentive Networks 2.1Retention 2.2Gated Multi-Scale Retention 2.3Overall Architecture of Retention Networks 2.4Relation to and Differences from Previous Methods 三.Experime…

并发编程的艺术-“程”:探索进程、线程、协程、纤程与管程

一、并发中的程 在计算机科学领域&#xff0c;处理多任务和并发执行是一项重要的挑战。为了解决这个问题&#xff0c;出现了多种并发模型和概念&#xff0c;包括进程、线程、协程、纤程和管程。本文将深入探讨这些并发概念&#xff0c;帮助读者理解它们的原理、特点和应用场景…

ABeam×Startup丨德硕管理咨询(深圳)创新研究团队前往灵境至维·既明科技进行拜访交流

近日&#xff0c;德硕管理咨询&#xff08;深圳&#xff09;&#xff08;以下简称“ABeam-SZ”&#xff09;创新研究团队一行前往灵境至维既明科技有限公司&#xff08;以下简称“灵境至维”&#xff09;进行拜访交流&#xff0c;探讨线上虚拟空间的商业模式。 现场合影 &…

PMP备考指南来啦!

第一步&#xff1a;通读教材&#xff0c;了解学习内容 在正式开始课程的学习前&#xff0c;可以先快速简单地阅览一遍教材&#xff08;PMBOK&#xff09;&#xff0c;在较短的时间内知道自己将要学习的是什么内容&#xff1b;同时可以标记出难理解的知识点。这样做有以下两个好…

CHATGPT源码简介与使用指南

CHATGPT源码的基本介绍 CHATGPT源码备受关注&#xff0c;它是一款基于人工智能的聊天机器人&#xff0c;旨在帮助开发者快速搭建自己的聊天机器人&#xff0c;无需编写代码。下面是对CHATGPT搭建源码的详细介绍。 CHATGPT源码的构建和功能 CHATGPT源码是基于Google的自然语言…

【实用干货】3个技巧 - 教你怎么提取公众号封面图!

平时刷公众号的时候遇到自己喜欢的封面&#xff0c;怎么撸过来呢&#xff1f;小埋教大家几个比较实用的方法。 1.135编辑器提取 也是小埋酱经常用的工具&#xff0c;因为平时码字的时候是用的135&#xff0c;所以用起来比较方便&#xff0c;不光光是公众号、视频、音频、视频号…

【腾讯云 TDSQL-C Serverless 产品体验】 使用 Python 向 TDSQL-C 添加读取数据 实现词云图

文章目录 前言学到什么?准备工作申请TDSQL数据库1. 点击登录腾讯云2. 点击立即选购 ,如下图所示3. 选购页面中的数据库配置选项如下4. 基础信息5. 配置完成后点击 右下角的立即购买即可6. 点击立即购买后会有弹窗如下, 再次点击7. 购买完成后 , 会出现弹窗 , 点击前往管理页面…

SD卡相关资料

STM32429I-EVAL1 正点原子 ALIENTEK探索者STM32F4、ALIENTEK战舰STM32F1 V3 野火 野火STM32F103-V2霸道 中科蓝汛 AB5322B QFN32内部软开关蓝牙音箱

ppt怎么转pdf文件?这几种方法搞定

ppt怎么转pdf文件&#xff1f;将ppt转为pdf可以让你更方便地分享你的演示文稿&#xff0c;无论你的观众使用的是什么设备或操作系统&#xff0c;他们都可以轻松地查看你的演示文稿。此外&#xff0c;将ppt转为pdf还可以防止其他人修改你的文稿&#xff0c;保证了你的演示文稿的…

Vue-打印组件页面

场景: 需要将页面的局部信息打印出来&#xff0c;只在前端实现&#xff0c;不要占用后端的资源。经过百度经验&#xff0c;决定使用 print-js和html2canvas组件。 1. 下载包 npm install print-js --save npm install --save html2canvas 2. 组件内引用 <script>impo…

解决 Mac 上使用 Electron Updater 更新 App 不成功的问题!!!

文章目录 1. 现象2. 分析并如何解决3. 后续 1. 现象 在Mac电脑上&#xff0c;使用Electron Updater对程序进行更新&#xff0c;但是一直不成功&#xff0c;也不报错。具体表现是这样的&#xff1a;当前我的程序版本是3.11版本&#xff0c;点击更新之后&#xff0c;也下载了&am…

16.2.3 【Linux】离线管理问题

要注意的是&#xff0c;我们在工作管理当中提到的“背景”指的是在终端机模式下可以避免 [crtl]-c 中断的一个情境&#xff0c; 你可以说那个是 bash 的背景&#xff0c;并不是放到系统的背景去。所以&#xff0c;工作管理的背景依旧与终端机有关。在这样的情况下&#xff0c;如…

近期关于开展微信小程序备案的通知,西米支付来教大家微信小程序如何备案

微信小程序备案步骤&#xff1a; 登录微信公众平台&#xff1a; 使用你的微信公众号管理员账号登录微信公众平台。 选择小程序管理&#xff1a; 在左侧菜单中选择“小程序”进行管理。 进入小程序设置&#xff1a; 选择你要备案的小程序&#xff0c;进入小程序管理页面。 填…

Hyper-V 虚拟机网络慢的原因及解决方案参考

Hyper-V VM 上的网络性能不佳 有几次我遇到过这样一种情况&#xff0c;即从运行Windows Server 的Hyper-V主机上的虚拟机复制文件的速度要慢得多。在本文中&#xff0c;我尝试描述几种不同的方法来提高在Windows Server &#xff08;以及最新的Windows 10和11版本&#xff09;上…

S7-200 SMART 通信端口以及连接方式

每个S7-200 SMART CPU都提供一个以太网端口和一个RS485端口(端口0)&#xff0c;标准型CPU额外支持SB CM01信号板(端口1)&#xff0c;信号板可通过STEP 7-Micro/WIN SMART软件组态为RS232通信端口或RS485通信端口。 CPU 通信端口引脚分配 1.S7-200 SMART CPU 集成的 RS485 通信…

seata server 1.6版本安装及配置

文章目录 下载安装并启动数据库导入数据库修改配置文件 服务注册配置中心手动添加脚本导入 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 Seata 是一款开源的分布式事务解决方案&#…