山海关古城信息管理测试--片区

news2024/9/22 15:49:34

1.片区的检验名称编号是否重复

1.1controller添加两个方法,检验片区编号和检验片区名称

        作用为:调用方法判断片区编号与片区名称是否重复,并返回返回值

 
    /**
     * 检验片区编号是否重复
     */
    @PostMapping( "/checkPqbhUnique")
    @ResponseBody
    public String checkXqbhUnique(TBxwPqZhk tBxwPqZhk){
    	String back = tBxwPqZhkService.checkPqbhUnique(tBxwPqZhk.getId(),tBxwPqZhk.getPqbh());
        return back;
    }
    
    /**
     * 校验片区名称是否重复
     */
    @PostMapping("/checkPqmcUnique")
    @ResponseBody
    public String checkXqmcUnique(TBxwPqZhk tBxwPqZhk){
    	String back = tBxwPqZhkService.checkPqmcUnique(tBxwPqZhk.getId(),tBxwPqZhk.getPqmc());
        return back;
    }

1.2添加service和mapper中方法

        service:

 /**
     * 检验片区编号是否重复
     *
     * @param id 片区主键 
     * @param pqbh 片区编号
     * @return 结果
     */
	public String checkPqbhUnique(String id, String pqbh);

    /**
     * 检验片区编号是否重复
     *
     * @param id 片区主键 
     * @param pqmc 片区名称
     * @return 结果
     */
	public String checkPqmcUnique(String id, String pqmc);

        serviceImp:


    /**
     * 检验片区编号是否重复
     *
     * @param id 片区主键 
     * @param pqbh 片区编号
     * @return 0表示唯一,1表示重复
     */
	@Override
	public String checkPqbhUnique(String id, String pqbh) {
		// TODO Auto-generated method stub
		if (id != null && id.length() != 0) {
    	}else {
    		id = "1";
    	}
    	Map <String , String> map = new HashMap <String , String> ();
        map.put("id", id);
        map.put("pqbh", pqbh);
    	
        int count = tBxwPqZhkMapper.checkPqbhUnique(map);
        if (count > 0)
        {
           return "1";
        }
        return "0";
	}

	 /**
     * 检验片区名称是否重复
     *
     * @param id 片区主键 
     * @param pqmc 片区名称
     * @return 0表示唯一,1表示重复
     */
	@Override
	public String checkPqmcUnique(String id, String pqmc) {
		// TODO Auto-generated method stub
		if (id != null && id.length() != 0) {
    	}else {
    		id = "1";
    	}
    	Map <String , String> map = new HashMap <String , String> ();
        map.put("id", id);
        map.put("pqmc", pqmc);
    	
        int count = tBxwPqZhkMapper.checkPqmcUnique(map);
        if (count > 0)
        {
           return "1";
        }
        return "0";
	}

        mapper:

    /**
     * 校验片区编号是否唯一
     * 
     * @param Map id:片区编号  pqbh:片区名称
     * @return 结果
     */
    public int checkPqbhUnique(java.util.Map Map);
    
    /**
     * 校验片区编号是否唯一
     * 
     * @param Map id:片区编号  pqmc:片区名称
     * @return 结果
     */
    public int checkPqmcUnique(java.util.Map Map);

1.3添加mapper.xml文件方法

        添加对应函数的连接数据库方法:

	
	<select id="checkPqbhUnique" parameterType="java.util.Map" resultType="int">
		select count(1) from t_bxw_pq_zhk where id != #{id} and pqbh=#{pqbh} and rownum <![CDATA[ <= ]]> 1
	</select>
	
	<select id="checkPqmcUnique" parameterType="java.util.Map" resultType="int">
		select count(1) from t_bxw_pq_zhk where id != #{id} and pqmc=#{pqmc} and rownum <![CDATA[ <= ]]> 1
	</select>

1.4修改add.html中代码,加入对应代码模块

        注意前面需要加入id=''pqbh'' 和id="pqmc",否则代码功能不实现!!!

  <th:block th:include="include :: footer" />
    <script th:inline="javascript">
        var prefix = ctx + "jcxx/pq"
        $("#form-pq-add").validate({
    	//数据校验
     	onkeyup: false,
    	rules:{
    		pqbh:{
       			minlength: 2,
       			maxlength: 20,
       			digits:true,
       			remote: {
	                url: prefix + "/checkPqbhUnique",
	                type: "post",
	                dataType: "json",
                    data: {
                    	"id": function() {
                         	return $("#id").val();
                     	},
                    	"pqbh": function() {	          
                            return $.common.trim($("#pqbh").val());
                        }
                    },
                    dataFilter: function(data, type) {
                    	return $.validate.unique(data);
                    }
               	}
   			},
   			pqmc:{
       			remote: {
	                url: prefix + "/checkPqmcUnique",
	                type: "post",
	                dataType: "json",
                    data: {
                    	"id": function() {
                         	return $("#id").val();
                     	},
                    	"pqmc": function() {
                            return $.common.trim($("#pqmc").val());
                        }
                    },
                    dataFilter: function(data, type) {
                    	return $.validate.unique(data);
                    }
               	}
   			}
    	},
    	messages: {
            "pqbh": {
                remote: "片区编号已经存在!"
            },
            "pqmc": {
                remote: "片区名称已经存在!"
            }
        },
        focusCleanup: true
    });
    
        function submitHandler() {
            if ($.validate.form()) {
                $.operate.save(prefix + "/add", $('#form-pq-add').serialize());
            }
        }
    </script>

        编辑功能中的重复信息提示也一样,修改edit.html即可,与pq.html一致

1.5功能实现

2.按序排列

2.1法一:在pq.html中加入sort语句

2.2功能实现

        按照默认值片区编号进行排序

2.3法二:在pq.html中加入sort语句

2.4功能实现

        可以通过点击红框处进行对应的升序或降序排序

3.片区删除时,输出提示框,若存在子街道,则不能删除

3.1连接片区表和街道表

3.1.1分析二者关系,修改domain文件

        一个片区可以有多个街道,一个街道属于一个片区,所以片区与街道是一对多的关系。

        因此需要在街道的属性domain中加入片区属性,正常情况下加入片区属性TBxwPq最好,但是为了代码的简易及基本的功能的实现,本代码中只加入了片区id(外键,原本就有的)和片区名称(pqmc),并生成对应的get和set方法。

3.1.2修改街道的xml文件

        在原有基础上加入片区名称(pqmc)的属性,并微调sql语句,由单表查询变为多表查询

3.1.3修改街道html文件

        将原来的片区id修改为片区名称即可。在添加和修改时,在片区中多几处细微的修改

        jd.html

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
    <th:block th:include="include :: header('片区街道列表')" />
</head>
<body class="gray-bg">
     <div class="container-div">
        <div class="row">
            <div class="col-sm-12 search-collapse">
                <form id="formId">
                    <div class="select-list">
                        <ul>
                            <li>
                                <label>片区名称:</label>
                              	<input type="text" name="pqmc"/>
                            </li>
                            <li>
                                <label>街道编号:</label>
                                <input type="text" name="jdbh"/>
                            </li>
                            <li>
                                <label>街道名称:</label>
                                <input type="text" name="jdmc"/>
                            </li>
                            <li>
                                <label>注销标志:</label>
                                <select name="zxbz" th:with="type=${@dict.getType('t_jc_zxztlx')}">
                                    <option value="">所有</option>
                                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
                                </select>
                            </li>
                        
                            <li>
                                <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
                                <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
                            </li>
                        </ul>
                    </div>
                </form>
            </div>

            <div class="btn-group-sm" id="toolbar" role="group">
                <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="jcxx:jd:add">
                    <i class="fa fa-plus"></i> 添加
                </a>
                <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="jcxx:jd:edit">
                    <i class="fa fa-edit"></i> 修改
                </a>
                <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="jcxx:jd:remove">
                    <i class="fa fa-remove"></i> 删除
                </a>
                <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="jcxx:jd:export">
                    <i class="fa fa-download"></i> 导出
                </a>
            </div>
            <div class="col-sm-12 select-table table-striped">
                <table id="bootstrap-table"></table>
            </div>
        </div>
    </div>
    <th:block th:include="include :: footer" />
    <script th:inline="javascript">
        var editFlag = [[${@permission.hasPermi('jcxx:jd:edit')}]];
        var removeFlag = [[${@permission.hasPermi('jcxx:jd:remove')}]];
        var zxbzDatas = [[${@dict.getType('t_jc_zxztlx')}]];
        var prefix = ctx + "jcxx/jd";

        $(function() {
            var options = {
                url: prefix + "/list",
                createUrl: prefix + "/add",
                updateUrl: prefix + "/edit/{id}",
                removeUrl: prefix + "/remove",
                exportUrl: prefix + "/export",
                modalName: "片区街道",
                columns: [{
                    checkbox: true
                },
                {
                    field: 'id',
                    title: '主键',
                    visible: false
                },
                {
                    field: 'pqmc',
                    title: '片区名称'
                },
                {
                    field: 'jdbh',
                    title: '街道编号'
                },
                {
                    field: 'jdmc',
                    title: '街道名称'
                },
                {
                    field: 'zxbz',
                    title: '注销标志',
                    formatter: function(value, row, index) {
                       return $.table.selectDictLabel(zxbzDatas, value);
                    }
                },
                {
                    field: 'bz',
                    title: '备注'
                },
                
                {
                    title: '操作',
                    align: 'center',
                    formatter: function(value, row, index) {
                        var actions = [];
                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>');
                        return actions.join('');
                    }
                }]
            };
            $.table.init(options);
        });
    </script>
</body>
</html>

        add.html

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
    <th:block th:include="include :: header('新增片区街道')" />
</head>
<body class="white-bg">
    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
        <form class="form-horizontal m" id="form-jd-add">
            <div class="form-group">    
                <label class="col-sm-3 control-label is-required" >片区:</label>
                <div class="col-sm-8">
                      <select id="pq" name="tBxwPqZhkId" class="form-control select2-single required" single>
						  <option th:each="pq:${pqs}" th:value="${pq.id}" th:text="${pq.pqmc}" ></option>
					  </select>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label is-required">街道编号:</label>
                <div class="col-sm-8">
                    <input name="jdbh" class="form-control" type="text" required>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label is-required">街道名称:</label>
                <div class="col-sm-8">
                    <input name="jdmc" class="form-control" type="text" required>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label is-required">注销标志:</label>
                <div class="col-sm-8">
                    <select name="zxbz" class="form-control m-b" th:with="type=${@dict.getType('t_jc_zxztlx')}" required>
                        <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
                    </select>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">备注:</label>
                <div class="col-sm-8">
                    <input name="bz" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">扩展1:</label>
                <div class="col-sm-8">
                    <input name="kz1" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">扩展2:</label>
                <div class="col-sm-8">
                    <input name="kz2" class="form-control" type="text">
                </div>
            </div>
        </form>
    </div>
    <th:block th:include="include :: footer" />
    <script th:inline="javascript">
        var prefix = ctx + "jcxx/jd"
        $("#form-jd-add").validate({
            focusCleanup: true
        });

        function submitHandler() {
            if ($.validate.form()) {
                $.operate.save(prefix + "/add", $('#form-jd-add').serialize());
            }
        }
    </script>
</body>
</html>

        edit.html

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
    <th:block th:include="include :: header('修改片区街道')" />
</head>
<body class="white-bg">
    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
        <form class="form-horizontal m" id="form-jd-edit" th:object="${tBxwPqJdZhk}">
            <input name="id" th:field="*{id}" type="hidden">
            <div class="form-group">    
                <label class="col-sm-3 control-label is-required" >片区:</label>
                <div class="col-sm-8">
                      <select id="pq" name="tBxwPqZhkId" class="form-control select2-single required" single>
						  <option th:each="pq:${pqs}" th:value="${pq.id}" th:text="${pq.pqmc}" ></option>
					  </select>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label is-required">街道编号:</label>
                <div class="col-sm-8">
                    <input name="jdbh" th:field="*{jdbh}" class="form-control" type="text" required>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label is-required">街道名称:</label>
                <div class="col-sm-8">
                    <input name="jdmc" th:field="*{jdmc}" class="form-control" type="text" required>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label is-required">注销标志:</label>
                <div class="col-sm-8">
                    <select name="zxbz" class="form-control m-b" th:with="type=${@dict.getType('t_jc_zxztlx')}" required>
                        <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{zxbz}"></option>
                    </select>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">备注:</label>
                <div class="col-sm-8">
                    <input name="bz" th:field="*{bz}" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">扩展1:</label>
                <div class="col-sm-8">
                    <input name="kz1" th:field="*{kz1}" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">扩展2:</label>
                <div class="col-sm-8">
                    <input name="kz2" th:field="*{kz2}" class="form-control" type="text">
                </div>
            </div>
        </form>
    </div>
    <th:block th:include="include :: footer" />
    <script th:inline="javascript">
        var prefix = ctx + "jcxx/jd";
        $("#form-jd-edit").validate({
            focusCleanup: true
        });

        function submitHandler() {
            if ($.validate.form()) {
                $.operate.save(prefix + "/edit", $('#form-jd-edit').serialize());
            }
        }
    </script>
</body>
</html>

3.1.4新建片区service方法

        在街道的添加中,必须要已知现有的全部正常的片区,然后才可以在该片区下新建街道,而由于源代码中并未有函数方法能够完成这一操作,所以需要在pq中新建一个方法    selectTBxwPqZhkAll()  通过sql语句的修改,进行显示全部片区。

        service:

        serviceImp:

        mapper:

        mapper.xml:

3.1.5修改街道的controller中的add

3.1.6功能实现

        正确显示片区名称:

        回显全部片区:

3.2实现删除功能

3.2.1修改片区的serviceImp中删除函数的具体实现

package com.xyt.project.shggc.jcxx.pq.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.xyt.project.shggc.jcxx.pq.mapper.TBxwPqZhkMapper;
import com.xyt.project.shggc.jcxx.jd.mapper.TBxwPqJdZhkMapper;
import com.xyt.project.shggc.jcxx.pq.domain.TBxwPqZhk;
import com.xyt.project.shggc.jcxx.pq.service.ITBxwPqZhkService;
import com.xyt.common.utils.text.Convert;
import com.xyt.common.exception.BusinessException;

/**
 * 片区Service业务层处理
 *
 * @author ruoyi
 * @date 2024-08-05
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class TBxwPqZhkServiceImpl implements ITBxwPqZhkService
{
    @Autowired
    private TBxwPqZhkMapper tBxwPqZhkMapper;

    @Autowired
    private TBxwPqJdZhkMapper tBxwPqJdZhkMapper;

    /**
     * 查询片区
     *
     * @param id 片区主键
     * @return 片区
     */
    @Override
    public TBxwPqZhk selectTBxwPqZhkById(String id)
    {
        return tBxwPqZhkMapper.selectTBxwPqZhkById(id);
    }

    /**
     * 查询片区列表
     *
     * @param tBxwPqZhk 片区
     * @return 片区
     */
    @Override
    public List<TBxwPqZhk> selectTBxwPqZhkList(TBxwPqZhk tBxwPqZhk)
    {
        return tBxwPqZhkMapper.selectTBxwPqZhkList(tBxwPqZhk);
    }
    
	 /**
     * 查询全部片区信息
     *
     */
	@Override
	public List<TBxwPqZhk> selectTBxwPqZhkAll() {
		// TODO Auto-generated method stub
		return tBxwPqZhkMapper.selectTBxwPqZhkAll();
	}
	
    /**
     * 新增片区
     *
     * @param tBxwPqZhk 片区
     * @return 结果
     */
    @Override
    public int insertTBxwPqZhk(TBxwPqZhk tBxwPqZhk)
    {
        return tBxwPqZhkMapper.insertTBxwPqZhk(tBxwPqZhk);
    }

    /**
     * 修改片区
     *
     * @param tBxwPqZhk 片区
     * @return 结果
     */
    @Override
    public int updateTBxwPqZhk(TBxwPqZhk tBxwPqZhk)
    {
        return tBxwPqZhkMapper.updateTBxwPqZhk(tBxwPqZhk);
    }

    /**
	 * 批量删除片区
     *
	 * @param ids 需要删除的片区主键
     * @return 结果
     */
    @Override
    public int deleteTBxwPqZhkByIds(String ids)
    {
    	String[] iids = Convert.toStrArray(ids);
        for (String id : iids)
        {
        	TBxwPqZhk tBxwPqZhk = selectTBxwPqZhkById(id);
            int pqjdNum = tBxwPqJdZhkMapper.selectTBxwPqJdZhkByPqId(tBxwPqZhk.getId()).size();
            if (pqjdNum > 0)
            {
                throw new BusinessException(String.format("%1$s下已经有街道信息,不能删除", tBxwPqZhk.getPqmc()));
            }
        }
        return tBxwPqZhkMapper.deleteTBxwPqZhkByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除片区信息
     *
     * @param id 片区ID
     * @return 结果
     */
    @Override
    public int deleteTBxwPqZhkById(String id)
    {
    	//通过片区id查询出该片区
    	TBxwPqZhk tBxwPqZhk = selectTBxwPqZhkById(id);
    	/通过调用函数selectTBxwPqJdZhkByPqId搜索出有多少个街道的片区id为上id,并计入到pqjdNum中
        int pqjdNum = tBxwPqJdZhkMapper.selectTBxwPqJdZhkByPqId(tBxwPqZhk.getId()).size();
    	/如果片区街道数大于0,则说明该片区存在子街道,不能删除
        if (pqjdNum > 0)
        {
            throw new BusinessException(String.format("%1$s下已经有街道信息,不能删除", tBxwPqZhk.getPqmc()));
        }
        如果为0,成功删除
        return tBxwPqZhkMapper.deleteTBxwPqZhkById(id);
    }
    

    /**
     * 检验片区编号是否重复
     *
     * @param id 片区主键 
     * @param pqbh 片区编号
     * @return 0表示唯一,1表示重复
     */
	@Override
	public String checkPqbhUnique(String id, String pqbh) {
		// TODO Auto-generated method stub
		if (id != null && id.length() != 0) {
    	}else {
    		id = "1";
    	}
    	Map <String , String> map = new HashMap <String , String> ();
        map.put("id", id);
        map.put("pqbh", pqbh);
    	
        int count = tBxwPqZhkMapper.checkPqbhUnique(map);
        if (count > 0)
        {
           return "1";
        }
        return "0";
	}

	 /**
     * 检验片区名称是否重复
     *
     * @param id 片区主键 
     * @param pqmc 片区名称
     * @return 0表示唯一,1表示重复
     */
	@Override
	public String checkPqmcUnique(String id, String pqmc) {
		// TODO Auto-generated method stub
		if (id != null && id.length() != 0) {
    	}else {
    		id = "1";
    	}
    	Map <String , String> map = new HashMap <String , String> ();
        map.put("id", id);
        map.put("pqmc", pqmc);
    	
        int count = tBxwPqZhkMapper.checkPqmcUnique(map);
        if (count > 0)
        {
           return "1";
        }
        return "0";
	}


}

3.2.2在街道的mapper文件中加入selectTBxwPqJdZhkByPqId方法

        

        在街道的mapper.xml中具体实现:

3.2.3功能实现

        提示框输出,防止误触:

        存在子街道,拒绝删除:

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

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

相关文章

深度解密CRLF注入与重定向漏洞:从原理到实践

在网络安全的世界中&#xff0c;CRLF注入和重定向漏洞常常被视为潜在的威胁&#xff0c;可能导致信息泄露和用户误导等严重后果。CRLF注入利用换行符在HTTP响应中插入恶意代码&#xff0c;而重定向漏洞则可能将用户引导至恶意网站。理解这些漏洞的原理及其复现方法&#xff0c;…

一文了解服务器和电脑主机的区别及各自优势

服务器和电脑主机的区别主要是&#xff1a;服务器专为处理大量数据和网络服务设计&#xff0c;具备高性能、高稳定性和可扩展性&#xff0c;通常用于数据中心或大型企业环境&#xff1b;而电脑主机则面向个人用户&#xff0c;主要用于日常办公、娱乐等通用任务&#xff0c;成本…

【QT】Qt中Websocket的使用

一、WebSocket的定义 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455&#xff0c;并由RFC7936补充规范。WebSocket API也被W3C定为标准。 WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;…

HelloWorld驱动编写和加载驱动实验

HelloWorld驱动编写和加载驱动实验 Helloworld驱动实验驱动编写驱动的基本框架 内核模块实验设置交叉编译器找到RK3568平台交叉编译器&#xff1a;解压交叉编译器&#xff1a;设置全局的交叉编译器环境验证交叉编译器环境 编写Makefile编译模块模块的加载与卸载查看模块信息 He…

WT2605C蓝牙语音芯片赋能对讲机新体验:无屏操控、音频解码与蓝牙音箱三合一

一、产品概况 对讲机市场是一个技术成熟且具有广泛应用前景的市场。对讲机作为无线通信设备的一种&#xff0c;在许多不同的领域和业务中发挥着重要作用。从技术发展角度来看&#xff0c;对讲机经历了从模拟到数字的转型&#xff0c;以及从简单通信工具向多功能设备的演进。当…

LVS实验——部署DR模式集群

目录 一、实验环境 二、配置 1、LVS 2、router 3、client 4、RS 三、配置策略 四、测试 1.Director服务器采用双IP桥接网络&#xff0c;一个是VPP&#xff0c;一个DIP 2.Web服务器采用和DIP相同的网段和Director连接 3.每个Web服务器配置VIP 4.每个web服务器可以出外网…

【Python机器学习】回归——缩减系数来“理解”数据

如果数据特征比样本点还多&#xff0c;是不可以使用线性回归的&#xff0c;因为在计算的时候会出错。 如果特征比样本点还多&#xff08;n>m&#xff09;&#xff0c;也就是说输入数据的矩阵x不是满秩矩阵。非满秩矩阵在求逆时会出问题。 为了解决上述问题&#xff0c;可以…

贪心算法的初涉(双指针 + “过山车思想”)

“过山车”思想 首先我们用一道力扣的题目&#xff0c;来简单了解一下“过山车思想” 3228. 将 1 移动到末尾的最大操作次数 - 力扣&#xff08;LeetCode&#xff09; 给你一个 二进制字符串 s。 你可以对这个字符串执行 任意次 下述操作&#xff1a; 选择字符串中的任一…

京东京造的C2M供应链模式

京东自有品牌业务于2018年1月正式上线&#xff0c;在京东发展已久&#xff0c;依托京东供应链优势&#xff0c;已搭建出京东京造、惠寻、佳佰等多品牌矩阵。 京东给零售企业释放出了一个讯号&#xff1a;C2M崛起&#xff0c;消费者的需求开始走向多元化和个性化&#xff01; …

徐州市委书记宋乐伟一行莅临非凸科技徐州分公司调研

7月23日&#xff0c;徐州市委书记宋乐伟一行莅临非凸科技徐州分公司调研&#xff0c;详细了解非凸科技数智交易产品的生态体系以及AI算力赋能的实践成果&#xff0c;并就相关工作进行了现场指导与交流。 非凸科技徐州分公司位于淮海路经济区金融服务中心云盛大厦&#xff0c;致…

基于JSP、java、Tomcat三者的项目实战--校园交易平台系统--(实习,答辩皆可用到)--万字爆更

技术支持&#xff1a;JAVA、JSP 服务器&#xff1a;TOMCAT 7.0.86 编程软件&#xff1a;IntelliJ IDEA 2021.1.3 x64 全部文件展示 网页实现功能截图 主页 注册 登录 购物车主页 修改功能 修改成功 添加商品功能 添加成功 添加进入购物车功能 支付功能 支付过的历史清单账单…

Comsol 声固耦合条件下超长水管路声传递损失

声固耦合条件指的是声波在固体和液体之间传递时&#xff0c;两者之间存在接触或耦合的情况。在水管路中&#xff0c;声固耦合条件下的声传递损失可以通过以下几个因素来影响和计算&#xff1a; 1. 声波的反射和透射&#xff1a;当声波从一个介质传递到另一个介质时&#xff0c…

服务器 Linux 的网络信息

博主上回大致讲解了文件系统&#xff0c;今天来说说 Linux 的网络信息&#xff0c;还是比较重要的~ 主机名称 临时修改 hostname node01 永久修改 vi /etc/hostname DNS解析 域名解析服务可以将域名转换为IP地址DNS域名劫持 window --> C:\Windows\System32\drivers…

Java 2.2 - Java 集合

Java 集合&#xff0c;也叫做容器&#xff0c;主要是由两大接口派生而来&#xff1a;一个是 Collection 接口&#xff0c;主要用于存放单一元素&#xff1b;另一个是 Map 接口&#xff0c;主要用于存放键值对。对于 Collection 接口&#xff0c;其下又有三个主要的子接口&#…

七大云安全威胁及其应对方法

关注公众号网络研究观获取更多内容。 对于任何依赖云来容纳快速增长的服务的企业来说&#xff0c;确保安全都是重中之重。然而&#xff0c;正如大多数云采用者很快意识到的那样&#xff0c;迁移到动态云环境需要新的和更新的安全措施&#xff0c;以确保数据和其他关键资产在整…

凯特王妃与戴安娜王妃:有跨越时空的优雅共鸣!

显而易见的是都是王妃,而王妃不仅是称谓也是一个头衔,她们同时要承担这个头衔应尽的职责! 在皇室世界里,总有一些名字,如同璀璨星辰,即便时光流转,依旧熠熠生辉。现在让我们揭开一段不为人知的幕后故事——凯特王妃与已故的戴安娜王妃之间,那些超越时代、共通的优雅与情…

前端模块化-手写mini-vite

前言 本文总结了一些关于 Vite 的工作原理&#xff0c;以及一些实现细节。 本节对应的 demo 可以在这里找到。 什么是 Vite Vite 是一个基于浏览器原生 ES imports 的开发服务器。利用浏览器去解析 imports&#xff0c;在服务器端按需编译返回&#xff0c;完全跳过了打包这个…

PyTorch深度学习实战(5)—— Tensor的命名张量和基本结构

1. 命名张量 命名张量&#xff08;Named Tensors&#xff09;允许用户将显式名称与Tensor的维度关联起来&#xff0c;便于对Tensor进行其他操作。笔者推荐使用维度的名称进行维度操作&#xff0c;这样可以避免重复计算Tensor每个维度的位置。支持命名张量的工厂函数&#xff08…

怎么删除iPhone重复照片:解放你的存储空间

在数字化时代&#xff0c;iPhone已成为我们记录生活点滴的重要工具。从家庭聚会的快乐时光到户外冒险的壮观景象&#xff0c;我们依靠iPhone捕捉无数珍贵瞬间。然而&#xff0c;这种便利性带来的一个副作用是&#xff0c;相册很快就会充满重复的照片&#xff0c;不仅占用了宝贵…

【IC设计】时序分析面试题总结(亚稳态、建立/保持裕量计算、最高时钟频率计算、时序违例解决办法)

文章目录 基本概念亚稳态建立时间和保持时间 常见问题1.为什么触发器要满足建立时间和保持时间&#xff1f;2.建立时间裕量和保持时间裕量的计算&#xff1f;3.最高时钟频率的计算&#xff1f;流水线思想&#xff1f;4.时序违例的解决办法&#xff1f; 基本概念 亚稳态 亚稳态…