练习javaweb+mysql+jsp

只是简单的使用mysql、简单的练习。
有很多待完善的地方,比如list的servlet页面,应该判断有没有用户的。
比如list.jsp 应该循环list而不是写死
index.jsp 样式可以再优化一下的。比如按钮就特丑。

本文展示了一个简单的MySQL数据库操作练习项目,主要包含以下内容:

数据库连接工具类(BaseDao):
提供连接MySQL数据库的基本功能
实现SQL执行(增删改查)和资源关闭方法
使用JDBC驱动和预处理语句
用户实体类(User):
包含id、用户名、密码等基本属性
DAO层接口及实现:
定义用户登录、查询、增删改等操作
实现具体SQL执行和结果集处理
包含UserList(登录验证)、ALLUser(查询所有)、addUser(添加用户)等方法
项目目前存在以下待改进点:

前端页面需要优化样式
列表页面应实现动态循环而非硬编码
需要增加用户存在性判断等逻辑验证
代码结构有待完善
这是一个基础的JDBC实践项目,展示了数据库连接、CRUD操作的基本实现方式。

连接后端
package com.zhang.dao;import java.sql.*;//连接数据库工具
public class BaseDao {private String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8";private String username = "root";private String password = "1234";private static String driver = "com.mysql.jdbc.Driver";private Connection conn;private PreparedStatement ps;private ResultSet rs;static {try {//加载驱动Class.forName(driver);} catch (ClassNotFoundException e) {e.printStackTrace();}}//创建链接private void getConnection() {try {conn = DriverManager.getConnection(url, username, password);} catch (SQLException e) {e.printStackTrace();}}//执行sql//增删改public int executeUpdate(String sql, Object... objs) {//获得连接getConnection();try {
//select * from user where username=?and password=?ps = conn.prepareStatement(sql);if (objs != null) {for (int i = 0; i < objs.length; i++) {ps.setObject(i + 1, objs[i]);}}int i = ps.executeUpdate();close();//关闭资源return i;} catch (SQLException e) {e.printStackTrace();}return -1;}//查询public ResultSet executeQuery(String sql,Object... objs) {getConnection();try {ps = conn.prepareStatement(sql);if (objs != null) {for (int i = 0; i < objs.length; i++) {ps.setObject(i + 1, objs[i]);}}rs = ps.executeQuery();return rs;} catch (SQLException e) {e.printStackTrace();}return null;}//关闭public void close() {try {if (rs != null) {rs.close();}if (ps != null) {ps.close();}if (conn != null) {conn.close();}} catch (SQLException e) {System.out.println("关闭出错");}}public void test() {try {Class.forName(driver);Connection connection = DriverManager.getConnection(url, username, password);System.out.println("连接成功");} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}public static void main(String[] args) {BaseDao BaseDao = new BaseDao();BaseDao.test();}
}
实体类
public class User {private Integer id;private String username;private String password;private String name;private String addr;private String tel;
}
dao层

import com.zhang.entity.User;import java.util.List;public interface UserDao {//用户登录,新增用户,删除用户,修改用户。//用户登录User UserList(User user);//查询所有List<User> ALLUser();//增加用户信息int addUser(User user);//删除用户int delUserByID(Integer id);//修改用户int updUserByID(Integer id);
}import com.zhang.dao.BaseDao;
import com.zhang.dao.UserDao;
import com.zhang.entity.User;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class UserDaoImpl extends BaseDao implements UserDao {@Overridepublic User UserList(User user) {String sql = "select * from user where username= ? and password=?";ResultSet rs = executeQuery(sql,user.getUsername(),user.getPassword());try {User user1=null;if (rs.next()){user1= new User(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6));}close();return user1;} catch (SQLException e) {e.printStackTrace();}return null;}@Overridepublic List<User> ALLUser() {String sql = "select * from user";ResultSet rs = executeQuery(sql);List list=new ArrayList();try {while (rs.next()){list.add(new User(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6)));}close();} catch (SQLException e) {e.printStackTrace();}return list;}@Overridepublic int addUser(User user) {String sql = " insert into user(id,username,password,name,addr,tel) values(?,?,?,?,?,?);";int i = this.executeUpdate(sql,user.getId(),user.getUsername(),user.getPassword(),user.getName(),user.getAddr(),user.getTel());return i ;}@Overridepublic int delUserByID(Integer id) {return 0;}@Overridepublic int updUserByID(Integer id) {return 0;}public static void main(String[] args) {
//        UserDaoImpl UserDaoImpl=new UserDaoImpl();
////        System.out.println(UserDaoImpl.ALLUser());
//        List<User> users = UserDaoImpl.ALLUser();}}
service层
import com.zhang.entity.User;import java.util.List;public interface UserService {User UserList(User user);//增加用户信息boolean addUser(User user);//删除用户boolean delUserByID(Integer id);//修改用户boolean updUserByID(Integer id);//查询所有List<User> ALLUser();
}import com.zhang.dao.UserDao;
import com.zhang.dao.impl.UserDaoImpl;
import com.zhang.entity.User;
import com.zhang.service.UserService;import java.util.List;public class UserServceImpl implements UserService {UserDao userDao=new UserDaoImpl();@Overridepublic User UserList(User user) {return userDao.UserList(user);}@Overridepublic boolean addUser(User user) {return userDao.addUser(user)>0?true:false;}@Overridepublic boolean delUserByID(Integer id) {return false;}@Overridepublic boolean updUserByID(Integer id) {return false;}@Overridepublic List<User> ALLUser() {return userDao.ALLUser();}
}
servlet层
import com.zhang.entity.User;
import com.zhang.service.UserService;
import com.zhang.service.impl.UserServceImpl;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;@WebServlet("/addServlet")
public class AddServlet extends HttpServlet {UserService userService=new UserServceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");String name = request.getParameter("name");String addr = request.getParameter("addr");String tel = request.getParameter("tel");boolean b = userService.addUser(new User(null, username, password, name, addr, tel));response.sendRedirect("./list.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}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;@WebServlet("/listServlet")
public class ListServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(123);response.sendRedirect("./list.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}import com.zhang.entity.User;
import com.zhang.service.UserService;
import com.zhang.service.impl.UserServceImpl;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.List;@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {UserService userService=new UserServceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");System.out.println(username+password);User user = userService.UserList(new User(username,password));List<User> list = userService.ALLUser();if(user!=null){//登陆成功request.getSession().setAttribute("user",user);request.getSession().setAttribute("list",list);response.sendRedirect("./list.jsp");}else {response.sendRedirect("./err.jsp");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0">
</web-app>

前端页面

<!-- add.jsp --><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>添加</title>
</head>
<body>
<form action="./addServlet" method="post"><input type="text" name="id" hidden><br>username:<input type="text" name="username"><br>password:<input type="text" name="password"><br>name:<input type="text" name="name"><br>addr:<input type="text" name="addr"><br>tel:<input type="text" name="tel"><br><input type="submit" value="提交">
</form>
</body>
</html><!-- err.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>错误</h1>
</body>
</html><!-- index.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Brook系统</title><script type="text/javascript" src="js/jquery-3.4.1.min.js"></script><style type="text/css">body {background-color:#00b38a;text-align:center;}.lp-login {position:absolute;width:500px;height:300px;top:50%;left:50%;margin-top:-250px;margin-left:-250px;background: #fff;border-radius: 4px;box-shadow: 0 0 10px #12a591;padding: 57px 50px 35px;box-sizing: border-box}.lp-login .loginBtn {display:block;text-decoration:none;height: 48px;width: 150px;line-height: 48px;font-size: 16px;color: #fff;text-align: center;background-image: -webkit-gradient(linear, left top, right top, from(#09cb9d), to(#02b389));background-image: linear-gradient(90deg, #09cb9d, #02b389);border-radius: 3px}input[type='text'] {height:30px;width:250px;}span {font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: normal;font-variant-east-asian: normal;font-weight: normal;font-stretch: normal;font-size: 14px;line-height: 22px;font-family: "Hiragino Sans GB", "Microsoft Yahei", SimSun, Arial, "Helvetica Neue", Helvetica;}</style><script type="text/javascript">$(function(){$(".loginBtn").bind("click",function(){let username = $("#username").val();let password = $("#password").val();if(username == null){alert("请输入用户名");return;}$.ajax({url:'resume/login',type:'POST',    //GETasync:false,    //或false,是否异步data:{userid:username,password:password},timeout:5000,    //超时时间dataType:'json', //返回的数据格式:json/xml/html/script/jsonp/textsuccess:function(data){alert(data.message);if (data.code == '0') {window.location.href = 'list.jsp';}},failure:function (data) {}})})})</script>
</head>
<body><form action="./loginServlet" method="post"><table class="lp-login"><tr><td align="right"><span>用户名</span></td><td align="center"><input type="text" id="username" name="username" placeholder="username"></input></td></tr><tr><td align="right"><span>密码</span></td><td align="center"><input type="text" id="password" name="password" placeholder="password"></input></td></tr><tr align="center"><td colspan="2"><a class="loginBtn"><input type="submit" value="登陆"></a></td></tr></table>
</form></body>
</html><!-- list.jsp -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.zhang.entity.User" %>
<%@ page import="java.util.List" %>
<%@ page import="com.zhang.service.UserService" %>
<%@ page import="com.zhang.service.impl.UserServceImpl" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en"><head><title>简历列表</title></head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">table, td{font:100% '微软雅黑';}table{width:80%;border-collapse:collapse; margin:0 0 0 100px}th, td{text-align:center;border:1px solid #fff;}th{background:#328aa4}td{background:#e5f1f4;}
</style>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script><script type="text/javascript">$(function(){loadResumeListData();let tds = $("td");tds.click(tdClick);});//添加点击事件function addClickEvent() {//第一行绑定添加事件$("#add_btn").bind("click", function() {addNewLine(this);})//第一行绑定编辑事件$("#edit_btn").bind("click", function() {saveData(this);})//第一行绑定删除事件$("#delete_btn").bind("click", function() {deleteData();})}//删除数据function deleteData() {if(window.confirm("您确定要删除数据吗?")) {let id = $('table tr').eq(1).find("td").eq(0).text();$.ajax({url:'resume/delete',type:'POST',async:false,data:{id: id},timeout:5000,    //超时时间dataType:'json', //返回的数据格式:json/xml/html/script/jsonp/textsuccess:function(data){loadResumeListData();},failure:function (data) {}})}}function saveData(saveBtn) {let currLine = $(saveBtn).parent().parent().prevAll().length + 1;let id = $('table tr').eq(currLine).find("td").eq(0).text();let name = $('table tr').eq(currLine).find("td").eq(1).text();let address = $('table tr').eq(currLine).find("td").eq(2).text();let phone = $('table tr').eq(currLine).find("td").eq(3).text();$.ajax({url:'resume/update',type:'POST',async:false,data:{id: id,name: name,address: address,phone: phone},timeout:5000,    //超时时间dataType:'json', //返回的数据格式:json/xml/html/script/jsonp/textsuccess:function(data){alert("保存成功!");loadResumeListData();},failure:function (data) {}})}//给表格添加点击事件,使表格可编辑function tdClick(){let tdnode = $(this);let tdtext = tdnode.text();if (tdtext == '修改   删除' || tdtext == '新建') {return;}tdnode.html("");let input = $("<input>");input.val(tdtext);input.keyup(function(event){let myEvent = event || window.event;let keyCode = myEvent.keyCode;//判断是否按下Entry键if(keyCode == 13) {let inputnode = $(this);let inputtext = inputnode.val();let td = inputnode.parent();td.html(inputtext);td.click(tdClick);}//判断是否按下ESC键if(keyCode == 27) {$(this).parent().html(tdtext);$(this).parent().click(tdClick);}});tdnode.append(input);tdnode.children("input").trigger("select");//输入框失去焦点,所执行的方法input.blur(function() {tdnode.html($(this).val());tdnode.click(tdClick);});tdnode.unbind("click");}<!--请求列表数据-->function loadResumeListData() {$.ajax({url:'resume/findList',type:'POST',async:false,data:{},timeout:5000,    //超时时间dataType:'json', //返回的数据格式:json/xml/html/script/jsonp/textsuccess:function(data){refreshList(data);addClickEvent();},failure:function (data) {}})}<!--刷新列表-->function refreshList(data) {let str1 = "";$("#resumeBody").html("");for(let i = 0; i<data.length; i++) {str1 = "<tr>" +"<td id=\"id\">" + data[i].id + "</td>" +"<td id=\"name\">" + data[i].name + "</td>" +"<td id=\"address\">" + data[i].address + "</td>" +"<td id=\"phone\">" + data[i].phone + "</td>" +"<td>" + "<a href=\"#\" id=\"edit_btn\">修改</a>" + "   " +"<a href=\"#\" id=\"delete_btn\">删除</a>" +"</td>" +"</tr>";$("#resumeBody").append(str1);}}<!--添加一行-->function addNewLine() {let str1 = "";str1 = "<tr>" +"<td id=\"id\">" + "</td>" +"<td id=\"address\">" + "</td>" +"<td id=\"name\">" + "</td>" +"<td id=\"phone\">" + "</td>" +"<td>" + "<a href=\"#\" id=\"addNew_btn\">新建</a>" +"</td>" +"</tr>";$("#resumeBody").append(str1);let tds = $("td");tds.click(tdClick);$("#addNew_btn").bind("click", function() {saveData(this);})}
</script><!--绘制表格-->
<body>
<a href="./add.jsp" style ="margin:100px" id="add_btn">新增</a>
<form action=""></form>
<table id="tb"><c:forEach items="list"><tr id="listTable"><th style="width:100px" >ID</th><th style="width:100px" >姓名</th><th style="width:100px" >地址</th><th style="width:100px" >电话</th>
<%--        <th style="width:100px" >功能</th>--%></tr><th style="width:100px" > ${list.get(0).id}</th><th style="width:100px" > ${list.get(0).username}</th><th style="width:100px" > ${list.get(0).addr}</th><th style="width:100px" > ${list.get(0).tel}</th><br><th style="width:100px" > ${list.get(1).id}</th><th style="width:100px" > ${list.get(1).username}</th><th style="width:100px" > ${list.get(1).addr}</th><th style="width:100px" > ${list.get(1).tel}</th><br><tbody id="resumeBody"></tbody>
</table></c:forEach><%
//    UserService userService=new UserServceImpl();
//    List<User> list = userService.ALLUser();
//    out.println(list.get(0));
//    for (User user: list){
//     out.println(user);
//        out.println();
//    }
%>
</body>
</html>

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

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

相关文章

使用Nginx部署前端项目

使用Nginx部署前端项目 一、总述二、具体步骤 2.1解压2.2将原来的html文件夹的文件删除&#xff0c;将自己的静态资源文件放进去&#xff0c;点击nginx.exe文件启动项目2.3查看进程中是否有ngix的两个进程在浏览器中输入“localhost:端口号”即可访问。 2.4端口被占用情况处理 …

【论文学习】KAG论文翻译

文章目录KAG: Boosting LLMs in Professional Domains via Knowledge Augmented Generation摘要1 引言2 方法论2.1 LLM友好型知识表示2.2 互索引机制2.2.1 语义分块2.2.2 带丰富语境的的信息抽取2.2.3 领域知识注入与约束2.2.4 文本块向量与知识结构的相互索引2.3 逻辑形式求解…

24黑马SpringCloud安装MybatisPlus插件相关问题解决

目录 一、前言 二、菜单栏没有Other 三、Config Database里的dburl需要加上时区等配置 一、前言 在学习24黑马SpringCloud的MybatisPlus-12.拓展功能-代码生成器课程时&#xff0c;发现由于IDEA版本不同以及MybatisPlus版本更新会出现与视频不一致的相关问题&#xff0c;本博…

人工智能赋能聚合物及复合材料模型应用与实践

近年来&#xff0c;生成式人工智能&#xff08;包括大语言模型、分子生成模型等&#xff09;在聚合物及复合材料领域掀起革命性浪潮&#xff0c;其依托数据驱动与机理协同&#xff0c;从海量数据中挖掘构效关系、通过分子结构表示&#xff08;如 SMILES、BigSMILES&#xff09;…

MyBatis-Plus3

一、条件构造器和常用接口 1.wapper介绍 MyBatis-Plus 提供了一套强大的条件构造器&#xff08;Wrapper&#xff09;&#xff0c;用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件&#xff0c;无需编写繁琐的 SQL 语句&#xff0c;从而提高开…

GXP6040K压力传感器可应用于医疗/汽车/家电

GXP6040K 系列压力传感器是一种超小型&#xff0c;为设备小型化做出贡献的高精度半导体压力传感器&#xff0c;适用于生物医学、汽车电子、白色家电等领域。采用标准的SOP6 和 DIP6 封装形式&#xff0c;方便用户进行多种安装方式。 内部核心芯片是利用 MEMS&#xff08;微机械…

Android ConstraintLayout 使用详解

什么是 ConstraintLayoutConstraintLayout&#xff08;约束布局&#xff09;是 Android Studio 2.2 引入的一种新型布局&#xff0c;现已成为 Android 开发中最强大、最灵活的布局管理器之一。它结合了 RelativeLayout 的相对定位和 LinearLayout 的线性布局优势&#xff0c;能…

Unity3D数学第三篇:坐标系与变换矩阵(空间转换篇)

Unity3D数学第一篇&#xff1a;向量与点、线、面&#xff08;基础篇&#xff09; Unity3D数学第二篇&#xff1a;旋转与欧拉角、四元数&#xff08;核心变换篇&#xff09; Unity3D数学第三篇&#xff1a;坐标系与变换矩阵&#xff08;空间转换篇&#xff09; Unity3D数学第…

UV安装并设置国内源

文章目录一、UV下载1.官方一键安装2.github下载安装二、更换国内镜像源&#xff08;加速下载&#xff09;方法1&#xff1a;临时环境变量&#xff08;单次生效&#xff09;方法2&#xff1a;永久配置&#xff08;推荐&#xff09;方法3&#xff1a;命令行直接指定源三、验证镜像…

1 前言:什么是 CICD 为什么要学 CICD

什么是 CI/CD 我的资源库网站&#xff1a;https://www.byteooo.cn 在开发阶段&#xff0c;许多编译工具会将我们的源码编译可使用的文件。例如 vue-cli 的项目会被 webpack 打包编译为浏览器的文件&#xff0c;Java 项目会被编译为 .class/jar 文件以供服务器使用。 但是&am…

GitHub 趋势日报 (2025年07月30日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图3579copyparty752supervision664500-AI-Agents-Projects483awesome403prompt-optim…

“非参数化”大语言模型与RAG的关系?

这个问题触及了一个关键的技术细节&#xff0c;两者关系密切&#xff0c;但层面不同&#xff1a; “非参数化”大语言模型是一个更广泛的概念或类别&#xff0c;而RAG&#xff08;Retrieval-Augmented Generation&#xff09;是实现这一概念最主流、最具体的一种技术框架。 您可…

LeetCode Hot 100:15. 三数之和

题目给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。注意&#xff1a;答案中不可以包含重复的三元组。示例 1&…

银行回单识别应用场景剖析

银行回单OCR识别技术通过自动化处理纸质或电子回单中的关键信息&#xff0c;显著提升了金融、企业及个人场景下的数据管理效率。以下是其核心应用场景及价值的详细剖析&#xff1a;一、企业财务场景自动化账务处理对账与记账&#xff1a;OCR自动提取交易日期、金额、账号等信息…

React的介绍和特点

1. React是什么&#xff1f; 1.1. React&#xff1a; 用于构建用户界面的JavaScript库1.2. React的官网文档&#xff1a;https://zh-hans.reactjs.org/ 2. React的特点2.1. 声明式编程&#xff1a; 目前整个大前端开发的模式&#xff1a;Vue、React、Flutter、SwiftUI只需要维护…

内核smmu学习

思考 smmu对外提供功能&#xff0c;设备驱动调用smmu 提供的api来配置页表&#xff0c;那其他设备是如何和smmu交互的&#xff1f;iommu 作为将不同smmu硬件的一个抽象封装&#xff0c;其它设备应该只能看到iommu这个封装层&#xff0c;那么iommu这个子系统是如何进行抽象的&a…

Android Slices:让应用功能在系统级交互中触手可及

引言 在当今移动应用生态中&#xff0c;用户每天要面对数十个甚至上百个应用的选择&#xff0c;如何让自己的应用在关键时刻触达用户&#xff0c;成为开发者面临的重要挑战。Google在Android 9 Pie中引入的Slices技术&#xff0c;正是为了解决这一痛点而生。本文将全面介绍And…

python学智能算法(三十))|SVM-KKT条件的数学理解

【1】引言 前序学习进程中&#xff0c;通过类比力的平衡对KKT条件进行了初步的理解。 今天我们更进一步&#xff0c;常使用数学语言进一步解释KKT条件。 【2】带约束的最小优化问题 首先定义一个即将求解的优化问题&#xff1a; 目标函数&#xff1a;最小化f(x)(x∈Rn)f(x)(…

华为云Flexus+DeepSeek征文|Linux命令实现两种部署的性能捕获+(硅基+Maas)模型添加教学

前引&#xff1a;“在数字化浪潮汹涌澎湃的今天&#xff0c;企业对云计算服务的需求已从基础架构支撑&#xff0c;逐步转向更深层次的AI赋能与业务创新驱动。面对复杂多变的市场环境&#xff0c;选择一个强大、可靠且具备前瞻性的云服务伙伴&#xff0c;无疑是企业实现高速增长…

langchain--1--prompt、output格式、LCEL示例

环境&#xff1a;本地使用ollama部署的deepseek-r1:1.5b模型 本文示例包含: [1] 非LCEL的调用方法[2] LCEL的调用方法[3] prompt template的简单使用&#xff0c;除了PromptTemplate模板&#xff0c;还有一些其它模板&#xff0c;可去查看官网[4] 输出&#xff1a;json格式、py…