简单仓库管理系统(增删改查功能)

前端

<!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='js/jQuery.js' ></script>
    <script  src='js/index_1.js' defer></script>
</head>
<body>
    商品名称: <input type="text" class="name_1">   <input type="button" class="btn_1" value="查找">  
    <table border='1'>
        <thead style="background-color: orange; color: black;">
        <tr>
        <th>商品名称</th>
        <th>数量</th>
        <th>价格</th>
        <th>操作</th>
        </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
    <div>添加商品页面</div>
    商品名称: <input type="text" class="name" id="inputId_1"> </br>
    数量; <input type="text" class="num" id="inputId_2">   </br>
    单价; <input type="text" class="price" id="inputId_3">  </br>
    <input type="button" class='btn' value="添加">  </br>
</body>
</html>

javascript代码:

$.ajax({
    url:'goods',
    type:'get',
    success:function(value){
        var arr = value.data
        console.log(arr)
        for(var i=0;i<arr.length;i++){
            
            $("tbody").append("<tr>"+
        "<td>"+arr[i].name+"</td>"+
        "<td>"+arr[i].num+"</td>"+
        "<td>"+arr[i].price+"</td>"+
        "<td>"+
            "<input type='button' value='修改' class='change' index_1='"+arr[i].id+"'>"+
            "<input type='button' class='delete' value='删除' index='"+arr[i].id+"'>"+
        "</td>"+
        "</tr>")
        }
    },
    error:function(){
        alert("进不去")
    }
})

$('tbody').on("click",".delete",function(){
    var id=$(this).attr("index")
    $.ajax({
        url:'delete_goods',
        type:'post',
        data:{
            id
        },
        success:function(value){
            alert(value)
            location.reload()
        },
        error:function(){
            alert("删除未进入")
        }
    })
})

$(".btn").on('click',function(){
    var name=$(".name").val()
    var num=$(".num").val()
    var price=$(".price").val()
    $.ajax({
        url:"add_goods",
        type:"post",
        data:{
            name,
            num,
            price,
        },
        success:function(value){
            alert(value)
            location.reload()
        },
        error:function(){
            alert("添加进不去")
        }
    })
})

$(".btn_1").on('click',function(){
    var name=$(".name_1").val()
    $.ajax({
        url:"find_goods",
        type:"get",
        data:{
            name
        },
        success:function(value){
            
            var arr = value.data
            for(var i=0;i<arr.length;i++){
                alert(arr[i].name+" "+arr[i].num+" "+arr[i].price)
            }
            
        },
        error:function(){
            alert("寻找进不去")
        },
    })
})
var butt=true
var id_1
$('tbody').on("click",".change",function(){
    id_1=$(this).attr("index_1")
    var id=$(this).attr("index_1")
    var inputId_1 = document.getElementById("inputId_1");
    var inputId_2 = document.getElementById("inputId_2");
    var inputId_3 = document.getElementById("inputId_3");
    if(butt){
        butt=false
        $.ajax({
            url:"find_goods1",
            type:"get",
            async:false,
            data:{
                id
            },
            success:function(value){
                var arr = value.data
                for(var i=0;i<arr.length;i++){
                    
                    inputId_1.value=arr[i].name
                    
                    inputId_2.value=arr[i].num
                    
                    inputId_3.value=arr[i].price
        
                }
                
            },
            error:function(){
                alert("寻找进不去")
            }
        })
    }else{
        var id=id_1
        var name=$(".name").val()
        var num=$(".num").val()
        var price=$(".price").val()
        butt=true
        $.ajax({
            url:"update_goods",
            type:"post",
            data:{
                id,
                name,
                num,
                price
            },
            success:function(value){
                alert(value)
                location.reload()
                
            },
            error:function(){
                alert("寻找进不去")
            },
        })
    }
    
    
})
 

增添功能:

import java.io.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;

/**
 * Servlet implementation class add_goods
 */
@WebServlet("/add_goods")
public class add_goods extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public add_goods() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        String name=request.getParameter("name");
        String num=request.getParameter("num");
        String price=request.getParameter("price");
        String sql="insert into tb_2(name,num,price) value(\""+name+"\","+num+",\""+price+"\")";
        int num_1=MysqlUtil.add(sql);
        String res="";
        if(num_1>0) {
            res="添加成功";
        }else {
            res="添加失败";
        }
        response.getWriter().write(res);
    }

}
删减功能:

import java.io.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;

/**
 * Servlet implementation class delete_goods
 */
@WebServlet("/delete_goods")
public class delete_goods extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public delete_goods() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        String id=request.getParameter("id");
        String sql="delete from tb_2 where id= "+id;
        int num=MysqlUtil.del(sql);
        String res="";
        if(num>0) {
            res="删除成功";
        }else {
            res="删除失败";
        }
        response.getWriter().write(res);        
    }

}
查找功能:

import java.io.IOException;
import java.util.ArrayList;

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

/**
 * Servlet implementation class find_goods
 */
@WebServlet("/find_goods")
public class find_goods extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public find_goods() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/json;charset=utf-8");
        String name = request.getParameter("name");
        String sql = "select * from tb_2 where name=\"" + name + "\"";
        String []colums= {"id","name","num","price"};
        String res = MysqlUtil.getJsonBySql(sql, colums);
        response.getWriter().write(res);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        
    }
    }

改数据功能:

代码一:

import java.io.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;

/**
 * Servlet implementation class update_goods
 */
@WebServlet("/update_goods")
public class update_goods extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public update_goods() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        String id=request.getParameter("id");
        String name=request.getParameter("name");
        String num=request.getParameter("num");
        String price=request.getParameter("price");
        System.out.println(id);
        System.out.println(name);
        String sql="UPDATE tb_2 SET name = \""+ name +" \", num = \" "+ num +"\", price =\""+ price +"\" WHERE id = \""+ id +"\"";
        int num_1=MysqlUtil.update(sql);
        String res="";
        if(num_1>0) {
            res="更新成功";
        }else {
            res="更新失败";
        }
        response.getWriter().write(res);
    }

}

代码二:

import java.io.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;

/**
 * Servlet implementation class find_goods1
 */
@WebServlet("/find_goods1")
public class find_goods1 extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public find_goods1() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/json;charset=utf-8");
        String id = request.getParameter("id");
        String sql = "select * from tb_2 where id=\"" + id + "\"";
        String []colums= {"id","name","num","price"};
        String res = MysqlUtil.getJsonBySql(sql, colums);
        response.getWriter().write(res);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}
 

增删改查功能的总体实现代码:

代码一:

import java.rmi.StubNotFoundException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MysqlUtil {

    public static void main(String[] args) {
        
//        String sqlcount = "select count(*) from admin";
//        String sql = "select * from admin";
//        String[] colums = {"id","account","password"};
//        String json = getJsonBySql(sqlcount, sql, colums);
//        System.out.println(json);
        
//        String sql = "insert into tb_1(name,age,sex) values(\"张三\",21,\"男\")";
//        System.out.println(add(sql));
        
        
//        String sqldel = "delete from tb_1 where id=6";
//        System.out.println(del(sqldel));

        /*String sqlupdate ="update gq_user set age = 30 where username=\"gs1\"";
        System.out.println(update(sqlupdate));*/

        /*String sql = "select count(*) from gq_user";
        System.out.println(getCount(sql));*/
        
//        String[] col = {"id","name","age"};
//        String sql = "select * from tb_1";
//
//        String strJson = getJsonBySql(sql,col);
//        System.out.println(strJson);
        
        /*String sqlcount = "select count(*) from gq_user";
        String sql="select * from gq_user";
        String[] col = {"username","age","id","sex","salary"};
        System.out.println(getJsonBySql(sqlcount, sql, col));*/

        /*String sql = "select * from t_user";
        String[] column = {"id","username","password","available"};
        ArrayList<String[]> strings = MysqlUtil.showUtil(sql, column);
        for (String[] string : strings) {
            System.out.println(Arrays.toString(string));
        }*/


    }
    
    /*添加*/
    public static int add(String sql) {
        // System.out.println("sql语句是:" + sql);
        int i=0;
        //数据库连接
        DBConnection db = new DBConnection();
        try {        
            PreparedStatement preStmt = (PreparedStatement) db.conn.prepareStatement(sql);
            i=preStmt.executeUpdate();
            preStmt.close();
            db.close();//关闭连接 
            System.out.println("数据插入成功,sql语句是:" + sql);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return i;//返回影响的行数,1为执行成功;
    }

   /*修改数据*/
    public static int update(String sql) {
        int i =0;
        DBConnection db = new DBConnection();
        try {
            PreparedStatement preStmt = (PreparedStatement) db.conn.prepareStatement(sql);
            i = preStmt.executeUpdate();
            preStmt.close();
            db.close();
            System.out.println("数据更新成功,sql语句是:" + sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return i;
    }
    

    /*删除*/
    public static int del(String delstr) {
        int i=0;
        DBConnection db = new DBConnection();
        try {    
            PreparedStatement preStmt = (PreparedStatement) db.conn.prepareStatement(delstr);
            i=preStmt.executeUpdate();
            //executeUpdate()返回受影响的行数
            preStmt.close();
            db.close();
            System.out.println("数据删除成功,sql语句是:" + delstr);
        } catch (SQLException e){
            e.printStackTrace();
        }
        return i;
    }

    /*查询数量*/
    public static int getCount(String sql) {
        int sum = 0;
        DBConnection db = new DBConnection();
        try {
            Statement stmt = (Statement) db.conn.createStatement();
            ResultSet rs = (ResultSet) stmt.executeQuery(sql);
            while (rs.next()) {
                sum += rs.getInt(1);
            }
            rs.close();
            db.close();
        } catch (Exception e) {
            // TODO: handle exception
        }
        return sum;
    }

    /**
     *功能描述 查询json数据带数据总量
     * @author 郭帅
     * @date 2021-03-22 10:30
     * @param sqlcount 查询数量的sql
     * @param sql 查询具体数据的sql
     * @param colums 查询的字段
     * @return java.lang.String
     */
    public static String getJsonBySqlDataGrid( String sqlcount,String sql,String[] colums){
        int count = getCount(sqlcount);
        System.err.println("标红信息展示sql:" + sql);
        ArrayList<String[]>  result = new ArrayList<String[]>();
        DBConnection db = new DBConnection();
        try {
            Statement stmt = (Statement) db.conn.createStatement();
            ResultSet rs = (ResultSet) stmt.executeQuery(sql);
            while(rs.next()){
                String[] dataRow = new String[colums.length];
                for( int i = 0; i < dataRow.length; i++ ) {
                    dataRow[i] = rs.getString( colums[i] );
                }
                result.add(dataRow);
            }
            rs.close();
            db.close();//
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return listToJsonDataGrid(result,colums,count);
    }
    
    /**
     *功能描述 查询json数据
     * @author 郭帅
     * @date 2021-03-22 10:30
     * @param sql 查询具体数据的sql
     * @param colums 查询的字段
     * @return java.lang.String
     */
    public static String getJsonBySql( String sql,String[] colums){
       
        System.err.println("标红信息展示sql:" + sql);
        ArrayList<String[]>  result = new ArrayList<String[]>();
        DBConnection db = new DBConnection();
        try {
            Statement stmt = (Statement) db.conn.createStatement();
            ResultSet rs = (ResultSet) stmt.executeQuery(sql);
            while(rs.next()){
                String[] dataRow = new String[colums.length];
                for( int i = 0; i < dataRow.length; i++ ) {
                    dataRow[i] = rs.getString( colums[i] );
                }
                result.add(dataRow);
            }
            rs.close();
            db.close();//
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return listToJson(result,colums);
    }

    /**
     *功能描述 查询数据
     * @author 郭帅
     * @date 2021-03-22 10:38
     * @param sql 查询具体数据的sql
     * @param colums  查询的字段
     * @return java.util.ArrayList<java.lang.String[]>
     */
    public static ArrayList<String[]> showUtil( String sql, String[] colums){

        ArrayList<String[]>  result = new  ArrayList<String[]>();
        DBConnection db = new DBConnection();
        try {
            Statement stmt = (Statement) db.conn.createStatement();
            ResultSet rs = (ResultSet) stmt.executeQuery(sql);

            while(rs.next()){
                String[] dataRow = new String[colums.length];
                for( int i = 0; i < dataRow.length; i++ ) {
                    dataRow[i] = rs.getString( colums[i] );
                }
                result.add(dataRow);
            }
            rs.close();
            db.close();//
        } catch (SQLException e) {
            e.printStackTrace();
        }

        
    }

    /**
     * 转化为json数据字符串
     * @param
     * @return
     */
    public static String listToJsonDataGrid( ArrayList<String[]> list,String[] colums,int count) {

        String jsonStr = "{\"code\":0,\"msg\":\"成功了\",\"count\":"+count+",\"data\":[";
                for(int i = 0; i < list.size(); i++) {
                    String arr = "{";
                    for( int j = 0; j < list.get(0).length; j++) {
                        
                        if( list.get(i)[j] == null || "NULL".equals(list.get(i)[j])) {
                            arr += "\"" + colums[j] + "\":\"\"";
                        }else {
                            arr += "\"" + colums[j] + "\""+":" ;
                            arr +=  "\"" + list.get(i)[j].replace("\"","\\\"") + "\"";
                        }
                        
                        if( j < list.get(0).length - 1 ) {
                            arr += ",";
                        }
                    }
                    arr += "}";
                    if( i < list.size() - 1 ) {
                        arr += ",";
                    }
                    
                    jsonStr += arr;
                }
                jsonStr += "]}";
        
        return jsonStr;
    }
    
    /**
     * 转化为json数据字符串
     * @param
     * @return
     */
    public static String listToJson( ArrayList<String[]> list,String[] colums) {

        String jsonStr = "{\"code\":0,\"msg\":\"成功了\",\"data\":[";
                for(int i = 0; i < list.size(); i++) {
                    String arr = "{";
                    for( int j = 0; j < list.get(0).length; j++) {
                        
                        if( list.get(i)[j] == null || "NULL".equals(list.get(i)[j])) {
                            arr += "\"" + colums[j] + "\":\"\"";
                        }else {
                            arr += "\"" + colums[j] + "\""+":" ;
                            arr +=  "\"" + list.get(i)[j].replace("\"","\\\"") + "\"";
                        }
                        
                        if( j < list.get(0).length - 1 ) {
                            arr += ",";
                        }
                    }
                    arr += "}";
                    if( i < list.size() - 1 ) {
                        arr += ",";
                    }
                    
                    jsonStr += arr;
                }
                jsonStr += "]}";
        
        return jsonStr;
    }

}
代码二:

import java.sql.Connection;
import java.sql.DriverManager;

public class DBConnection {

    public static void main(String[] args) {

    }

    String driver = "com.mysql.cj.jdbc.Driver";
    String url = "jdbc:mysql://127.0.0.1:1111/hbu?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=false";
    String user = "root";
    String password = "123456";

    public Connection conn;

    public DBConnection() {

        try {
            Class.forName(driver);
            conn = (Connection) DriverManager.getConnection(url, user, password);//

            // if(!conn.isClosed())
            // System.out.println("Succeeded connecting to the Database!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void close() {
        try {
            this.conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OmniPlan Pro for Mac v4.8.0中文激活版 项目流程管理工具

OmniPlan Pro for Mac是一款功能强大的项目管理软件&#xff0c;它以其直观的用户界面和丰富的功能&#xff0c;帮助用户轻松管理各种复杂的项目。 OmniPlan Pro for Mac v4.8.0中文激活版 通过OmniPlan Pro&#xff0c;用户可以轻松创建任务&#xff0c;设置任务的开始和结束时…

苹果开发者 D-U-N-S 编号申请 经历 记录

首先查询需要注册的公司是否有D-U-N-S码 (如果之前该公司上架了苹果的app&#xff0c;那一定有的&#xff0c;直接查询就可以使用) 查询地址&#xff1a;Sign In - Apple 输入公司的相关信息后并没有找到。。 滑动到最下面之后&#xff0c;可以根据当前填写的内容进行提交申请…

iframe实现pdf预览,并使用pdf.js修改内嵌标题,解决乱码问题

项目中遇到文件预览功能,并且需要可以打印文件.下插件对于内网来说有点麻烦,正好iframe预览比较简单,且自带下载打印等功能按钮. 问题在于左上方的文件名乱码,网上找了一圈没有看到解决的,要么就是要收费要会员(ztmgs),要么直接说这东西改不了. 使用: 1.引入 PDF.js 库&…

Day51:动态规划 LeedCode 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

300. 最长递增子序列 中等 相关标签 相关企业 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] …

《动手学深度学习(Pytorch版)》Task02:预备知识——4.25打卡

《动手学深度学习&#xff08;Pytorch版&#xff09;》Task02&#xff1a;预备知识——4.25打卡 数据操作N维数组——张量创建数组访问元素入门初始化矩阵 运算符广播机制索引和切片节省内存转换为其他Python对象转换为NumPy张量ndarray张量转换为Python标量 数据预处理安装pan…

00后卷王拿下20k的测试岗,原来面试这么简单。。。

先说一下我的情况&#xff0c;某211本计算机&#xff0c;之前在深圳那边做少儿编程老师&#xff0c;之后内部平调回长沙这边&#xff0c;回来之后发现有点难&#xff0c;这边可能是业绩难做&#xff0c;虚假承诺很厉害&#xff0c;要给那些家长虚假承诺去骗人家&#xff0c;技术…

算法学习笔记Day8——回溯算法

本文解决几个问题&#xff1a; 回溯算法是什么&#xff1f;解决回溯算法相关的问题有什么技巧&#xff1f;回溯算法代码是否有规律可循&#xff1f; 一、介绍 1.回溯算法是什么&#xff1f; 回溯算法就是个多叉树的遍历问题&#xff0c;关键在于在前序和后序时间点做一些操作…

操作steam搬砖有哪些风险?你有中招吗?揭秘有没有规避技巧?

一、关于steam账号的地区问题&#xff1a; steam账号地区不要频繁的去更换&#xff0c;这样很容易导致让账号红信不能操作使用。 二、关于steam账号的充值问题&#xff1a; 一定要充值正规的礼品卡图&#xff0c;否则遇到黑卡分分钟让你的账号红锁&#xff0c;从而造成账号里…

Nginx下载安装,什么是nginx,什么是反向代理,Windows下、linux下安装nginx(保姆级教程)

文章目录 一、Nginx简介为什么要使用NginxNginx的特点Nginx的相关概念正向代理反向代理动静分离负载均衡 二、Nginx安装1. Windows安装2. Linux安装 一、Nginx简介 Nginx 是一个高性能的 HTTP&#xff08;静态资源服务器&#xff09; 和 反向代理 Web 服务器。 为什么要使用N…

MySQL锁详解

之前的博客给小伙伴们分享了java中的锁&#xff0c;今天我们一起来看看mysql中有什么锁吧 一、图示 二、粒度分类 2.1、全局锁&#xff1a; 什么是全局锁&#xff1f; MySQL的锁定主要分为全局锁、表锁和行锁。现在我们来看看MySQL全局锁。 MySQL全局锁是针对整个数据库的锁…

FreeRTOS之列表

1.FreeRTOS的列表和列表项十分重要。列表类相当于链表&#xff0c;列表项则相当于链表中的节点。列表项的地址是非连续的&#xff0c;列表项的数量可随时修改。在OS中的任务状态和数量会发生改变&#xff0c;因此使用列表可以很好的满足需求。 列表和列表项的相关定义与操作函…

网工交换基础——生成树协议(01)

一、生成树的技术概述 1、技术背景 二层交换机网络的冗余性导致出现二层环路&#xff1a; 人为因素导致的二层环路问题&#xff1a; 二层环路带来的网络问题&#xff1a; 生成树协议的概念&#xff1a; STP(Spanning Tree Protocol)是生成树协议的英文缩写。该协议可应用于在网…

vue3 -- 项目使用自定义字体font-family

在Vue 3项目中使用自定义字体(font-family)的方法与在普通的HTML/CSS项目中类似。可以按照以下步骤进行操作: 引入字体文件: 首先,确保你的字体文件(通常是.woff、.woff2、.ttf等格式)位于项目中的某个目录下,比如src/assets/font/。 在全局样式中定义字体: 在你的全局…

智慧健康旅居养老产业,做智慧旅居养老服务的公司

随着社会的进步和科技的飞速发展&#xff0c;传统的养老模式已经无法满足 现代老年人的多元化 需求。智慧健康旅居养老产业应运而生&#xff0c;成为了一种新型的养老模式&#xff0c;旨在为老年人提供更加舒适、便捷、安全的养老生活。随着社会的进步和人口老龄化趋势的加剧&a…

pytest数据驱动DDT

常见的DDT技术 数据结构&#xff1a; 列表、字典、json串 文件&#xff1a; txt、csv、xcel 数据库&#xff1a; 数据库链接 数据库提取 参数化&#xff1a; pytest.mark.parametrize() pytest.fixture() D…

【课程发布】软考高项目十大管理ITTO宫殿记忆法新版第四版正式发布

软考高项十大管理ITTO宫殿记忆法视频课程&#xff1a; 平台&#xff1a;荔枝微课 连接&#xff1a;十方教育 各位软考高级信息系统项目管理师考生好&#xff0c;新版第四版十大管理ITTO宫殿记忆法视频课程终于发布了&#xff0c;之前苦等的考生终于迎来了救星&#xff0c;再也…

OAuth2、JWT

文章目录 OAuth2JWT OAuth2 官网&#xff1a; https://oauth.net/2/ 在 RFC 6749 中说明 1、资源所有者 resource owner&#xff0c; 如 github 用户 2、客户端/第三方应用 client&#xff0c; 如 支持github 登录的 csdn 3、资源服务器 resource server&#xff0c; 如 4、授…

【C/C++笔试练习】OSI分层模型、源端口和目的端口、网段地址、SNMP、状态码、tcp报文、域名解析、HTTP协议、计算机网络、美国节日、分解因数

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;OSI分层模型&#xff08;2&#xff09;源端口和目的端口&#xff08;3&#xff09;网段地址&#xff08;4&#xff09;SNMP&#xff08;5&#xff09;状态码&#xff08;6&#xff09;tcp报文&#xff08;7&#xff09;域…

GRASSHOPPER电池Expression

Grasshopper中如果要实现简单的条件if语句的效果&#xff0c;可以使用电池Expression。 举例&#xff1a;获取两个数的差值&#xff0c;永远用大数减去小数

Geoserver中点击切片图层报错问题

最近想试试wmts&#xff0c;其中有一步需要用到切片图层 但是点击页面老是报错&#xff0c; 于是乎想断点&#xff0c;可惜代码太复杂 弃了&#xff0c;所以想重新部署一下新版本&#xff0c;结果还是报错&#xff0c;想着可能tomcat有缓存吧&#xff0c;在换个tomcat还是报错…