一篇万字博客带你入门layUI

news2024/12/27 18:16:31

今日金句

心里种花,人生才不会荒芜

文章目录

  • 一、什么是layui
  • 二、layui、easyui与bootstrap的对比
    • 2.1 layui和bootstrap对比(这两个都属于UI渲染框架)
    • 2.2 layui和easyui对比
  • 三、layui入门
    • 3.1 引入
    • 3.2 入门案例:点击弹出框
    • 3.3 经典,因返璞归真
    • 3.4 模块化的用法(推荐)
  • 四、layUI实现登入与注册
    • 4.1 环境准备
      • 4.1.1 导入jar包
      • 4.1.2 配置相关文件
      • 4.1.3 导入提前封装好的工具类
      • 4.1.4 编写实体以及对应的dao方法
      • 4.1.5 编写Servlet
      • 4.1.6 导入layUI相关依赖
    • 4. 2 登录
    • 4.3 注册

一、什么是layui

  • layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,极易上手,拿来即用。
  • 其风格简约轻盈,而组件优雅丰盈,从源代码到使用方法的每一处细节都经过精心雕琢,非常适合网页界面的快速开发。
  • layui 区别于那些基于 MVVM 底层的前端框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,它更多是面向后端开发者,你无需涉足前端各种工具,只需面对浏览器本身,让一切你所需要的元素与交互,从这里信手拈来。

官方网站:https://www.layui.com/(已下线)
参考地址:http://layui.org.cn/demo/index.html(已下线,非官网)

  • 由国人贤心开发(作者),16年出厂的框架,主要提供了很多好看、方便的样式,并且基本拿来即用,和Bootstrap有些相似,但该框架有个极大的好处就是定义了很多前后端交互的样式接口,如分页表格,只需在前端配置好接口,后端则按照定义好的接口规则返回数据,即可完成页面的展示,极大减少了后端人员的开发成本。
  • 目录结构
  ├─css //css目录
  │  │─modules //模块css目录(一般如果模块相对较大,我们会单独提取,比如下面三个:)
  │  │  ├─laydate
  │  │  ├─layer
  │  │  └─layim
  │  └─layui.css //核心样式文件
  ├─font  //字体图标目录
  ├─images //图片资源目录(目前只有layim和编辑器用到的GIF表情)
  │─lay //模块核心目录
  │  └─modules //各模块组件
  │─layui.js //基础核心库
  └─layui.all.js //包含layui.js和所有模块的合并文件

二、layui、easyui与bootstrap的对比

有趣的对比方式,嘿嘿嘿…

easyui=jquery+html4(用来做后台的管理界面) 半老徐娘——会的很多
bootstrap=jquery+html5 拜金美女——好看但费钱
layui 清纯少女——可调教

2.1 layui和bootstrap对比(这两个都属于UI渲染框架)

  • layui是国人开发的一套框架,2016年出来的,现在已更新到2.X版本了。比较新,轻量级,样式简单好看(目前官网已下架,开源了)
  • bootstrap 相对来说是比较成熟的一个框架,现在已经更新到4.X版本。是一个很成熟的框架,这个大部分人一般都用过

1)适用范围不一样

  • layui 其实更偏向与后端开发人员使用,在服务端页面上有非常好。适合做后台框架
  • layui是提供给后端开发人员最好的ui框架,基于DOM驱动,在实现前端交互上比较麻烦,页面的增删改查都需要查询DOM元素。所以在不需要交互的时候,用layui还是不错的(说这句话的人,只能说明你对layui不了解)
  • bootstrap 在前端响应式方面做得很好,PC端和移动端表现都不错。适合做网站
  • 如果是类似官网,且需要同时满足PC端和移动端效果,bootstrap 表现很好;但是如果是要交互的网站,比如商城之类,layui显然更好,前后端分离

2)大小不一样

  • layui 轻量级
  • bootsrap 因为成熟,所以使用方便,但是同时也是因为成熟,就显得有些冗余

2.2 layui和easyui对比

1.easyui 是非开源的,有需要解决的问题的话,就只能等官方更新了
2.layui是开源的,社区比较活跃,解决问题还是比较快的
3.easyui诞生的早些,所以功能相对完善一些,很多功能都能是比较健全的
4.layui就相对来说少一些了,不过,功能都是像官网说的,精雕细琢
5.layui更符合现在的审美

三、layui入门

3.1 引入

将layui下载到了本地,那么可将其完整地放置到你的项目目录(或静态资源服务器),并在页面中分别引入:

<!-- 引入 layui.css -->   
  <link rel="stylesheet" href="xxx/layui.css">    
<!-- 引入 layui.js -->   
  <script src="xxx/layui.js"></script>

没错,不用去管其它任何文件。因为他们(比如各模块)都是在最终使用的时候才会自动加载。

3.2 入门案例:点击弹出框

<!-- 引入 layui.css -->   
<link rel="stylesheet" rev="stylesheet" href="${pageContext.request.contextPath }/js/layui/css/layui.css" type="text/css" media="all">
<!-- 引入 layui.js -->   
<script type="text/javascript" src="${pageContext.request.contextPath }/js/layui/layui.js"></script>
<script type="text/javascript">
layui.use(['jquery','layer'], function() {
    let $ = layui.jquery;
    let layer = layui.layer;
    $("#mi").click(function() {
    	let t = $("#test").val();
    	layer.alert(t);
     })
    
 });
</script>
</head>
<body>
	<input type="text" id="test" />
	<button id="mi">hello</button>
</body>

在这里插入图片描述

3.3 经典,因返璞归真

layui 定义为“经典模块化”,并非是自吹她自身有多优秀,而是有意避开当下JS社区的主流方案,试图以最简单的方式去诠释高效!她的所谓经典,是在于对返璞归真的执念,她以当前浏览器普通认可的方式去组织模块!我们认为,这恰是符合当下国内绝大多数程序员从旧时代过渡到未来新标准的最佳指引。所以 layui 本身也并不是完全遵循于AMD时代,准确地说,她试图建立自己的模式,所以你会看到:

//layui模块的定义
layui.define([mods], function(exports){
  
  //……
  
  exports('mod', api);
});  
 
//layui模块的使用
layui.use(['mod1', 'mod2'], function(args){
  var mod = layui.mod1;
  
  //……
  
});    

没错,她具备AMD的影子,又并非受限于 CommonJS 的那些条条框框,layui认为这种轻量的组织方式,比WebPack更符合绝大多数场景。所以她坚持采用经典模块化,也正是能让人避开工具的复杂配置,回归简单,安静高效地编织原生态的HTML、CSS和JavaScript。

但是 layui 又并非是 Requirejs 那样的模块加载器,而是一款UI解决方案,她与Bootstrap最大的不同恰恰在于她糅合了自身对经典模块化的理解。

3.4 模块化的用法(推荐)

我们推荐你遵循 layui 的模块规范建立一个入口文件,并通过 layui.use() 方式来加载该入口文件,如下所示:

<script>
layui.config({
  base: '/res/js/modules/' //你存放新模块的目录,注意,不是layui的模块目录
}).use('index'); //加载入口
</script>    

上述的 index 即为你 /res/js/modules/ 目录下的 index.js,它的内容应该如下:

/**
  项目JS主入口
  以依赖layui的layer和form模块为例
**/    
layui.define(['layer', 'form'], function(exports){
  var layer = layui.layer
  ,form = layui.form;
  
  layer.msg('Hello World');
  
  exports('index', {}); //注意,这里是模块输出的核心,模块名必须和use时的模块名一致
});   

四、layUI实现登入与注册

4.1 环境准备

4.1.1 导入jar包

在这里插入图片描述

4.1.2 配置相关文件

mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
<!-- 	<action path="/book" type="com.xqx.web.BookAction">
		<forward name="list" path="/bookList.jsp" redirect="false" />
		<forward name="toList" path="/book.action?methodName=list" redirect="true" />
		<forward name="toEdit" path="/bookEdit.jsp" redirect="false" />
	</action> -->
		<action path="/user" type="com.xqx.web.UserAction">
	</action>
</config>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>LayUI</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
   <servlet>
  	<servlet-name>mvc</servlet-name>
  	<servlet-class>com.zking.framework.DispatchServlet</servlet-class>
  	<init-param>
  		<param-name>configurationLocation</param-name>
  		<param-value>/mvc.xml</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>mvc</servlet-name>
  	<url-pattern>*.action</url-pattern>
  </servlet-mapping>
</web-app>

4.1.3 导入提前封装好的工具类

包括DBHelper、BaseDao等常用的工具类
在这里插入图片描述

4.1.4 编写实体以及对应的dao方法

entity

package com.xqx.entity;

/**
 * @author W许潜行
 * 2023年7月10日 下午9:33:59
 */
public class User {

	private long id;
	private String name;
	private String loginName;
	private String pwd;
	private long rid;
	public User() {
		// TODO Auto-generated constructor stub
	}
	public User(String loginName, String pwd) {
		super();
		this.loginName = loginName;
		this.pwd = pwd;
	}
	public User(long id, String name, String loginName, String pwd, long rid) {
		super();
		this.id = id;
		this.name = name;
		this.loginName = loginName;
		this.pwd = pwd;
		this.rid = rid;
	}
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getLoginName() {
		return loginName;
	}
	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public long getRid() {
		return rid;
	}
	public void setRid(long rid) {
		this.rid = rid;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", loginName=" + loginName + ", pwd=" + pwd + ", rid=" + rid + "]";
	}
	
}

dao

package com.xqx.dao;

import java.util.List;

import com.xqx.entity.User;
import com.zking.util.BaseDao;
import com.zking.util.PageBean;

/**
 * @author W许潜行
 * 2023年7月11日 上午11:20:43
 */
public class UserDao extends BaseDao<User>{
	
	/**查询所有用户
	 * @param user
	 * @param clz
	 * @param pageBean
	 * @return
	 * @throws Exception
	 */
	public List<User> list(User user, Class<User> clz, PageBean pageBean) throws Exception {
		String sql="select * from t_oa_user where 1=1";
		return super.executeQuery(sql, clz, pageBean);
	}
	/**登录
	 * @param user
	 * @return
	 * @throws Exception
	 */
	public User login(User user) throws Exception {
		String sql="select * from t_oa_user where loginName='"+user.getLoginName()+"'and pwd='"+user.getPwd()+"'";
		List<User> userList = super.executeQuery(sql, User.class, null);
		if (userList.size()==1) {
			return userList.get(0);
		} 
		return null;
	}
	/**注册
	 * @param user
	 * @return
	 * @throws Exception
	 */
	public int register (User user) throws Exception {
		String sql="insert into t_oa_user(name,loginName,pwd,rid) values(?,?,?,4)";
		return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd"});
	}
}

4.1.5 编写Servlet

package com.xqx.web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xqx.dao.UserDao;
import com.xqx.entity.User;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.ResponseUtil;

/**
 * @author W许潜行
 * 2023年7月11日 上午11:20:35
 */
public class UserAction extends ActionSupport implements ModelDriver<User> {
	User user = new User();
	UserDao ud = new UserDao();

	public void login(HttpServletRequest req, HttpServletResponse resp) {
		try {
			User login = ud.login(user);
			ResponseUtil.writeJson(resp, login);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void register(HttpServletRequest req, HttpServletResponse resp) {
		try {
			int register = ud.register(user);
			ResponseUtil.writeJson(resp, register);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	public User getModel() {
		// TODO Auto-generated method stub
		return user;
	}

}

接下来就是实现前端页面了

4.1.6 导入layUI相关依赖

在这里插入图片描述
这里编写了一个base标签,供其他页面调用

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" rev="stylesheet" href="${pageContext.request.contextPath }/css/iconfont.css" type="text/css" media="all">
<link rel="stylesheet" rev="stylesheet" href="${pageContext.request.contextPath }/css/login.css" type="text/css" media="all">
<link rel="stylesheet" rev="stylesheet" href="${pageContext.request.contextPath }/js/layui/css/layui.css" type="text/css" media="all">
<script type="text/javascript" src="${pageContext.request.contextPath }/js/layui/layui.js"></script>
</head>

4. 2 登录

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
		<%@include file="/common/head.jsp" %>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>登录</title>
		<style>
		body {
			color: #;
		}
		
		a {
			color: #;
		}
		
		a:hover {
			color: #;
		}
		
		.bg-black {
			background-color: #;
		}
		
		.tx-login-bg {
			background: url(images/bg.jpg) no-repeat 0 0;
		}
		</style>
		
		<script type="text/javascript">
		layui.use(['jquery','layer'], function() {
		    let $ = layui.jquery;
		    let layer = layui.layer;
		    $("#login").click(function() {
		    	layer.alert($("#username").val());
		    	$.ajax({
		    		url:"${pageContext.request.contextPath }/user.action?methodName=login",
		    		data: {
		    			loginName: $("#username").val(),
		    			pwd: $("#password").val()
		    		},
		    		type: 'post',
		    		dataType: 'json',
		    		success: function(resp) {
		    			if(resp) {
		    				layer.alert('登录成功!欢迎您回来!',{icon: 1});
		    			} else {
		    				layer.alert('登陆失败', {icon: 5});
		    			} 
		    		}
		    	})
		    })
		    
		 });
		</script>
</head>
    <body class="tx-login-bg">
        <div class="tx-login-box">
            <div class="login-avatar bg-black"><i class="iconfont icon-wode"></i></div>
				<ul class="tx-form-li row">
					<li class="col-24 col-m-24"><p><input type="text" id="username" placeholder="登录账号" class="tx-input"></p></li>
					<li class="col-24 col-m-24"><p><input type="password" id="password" placeholder="登录密码" class="tx-input"></p></li>
					<li class="col-24 col-m-24"><p class="tx-input-full"><button id="login" class="tx-btn tx-btn-big bg-black">登录</button></p></li>
					<li class="col-12 col-m-12"><p><a href="register.jsp" class="f-12 f-gray">新用户注册</a></p></li>
					<li class="col-12 col-m-12"><p class="ta-r"><a href="#" class="f-12 f-gray">忘记密码</a></p></li>
				</ul>
            </div>
    </body>
</html>

在这里插入图片描述

4.3 注册

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ include file="common/head.jsp" %>

<html>
    <head>
		<%@include file="/common/head.jsp" %>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>注册</title>
		<style>
		body {
			color: #;
		}
		
		a {
			color: #;
		}
		
		a:hover {
			color: #;
		}
		
		.bg-black {
			background-color: #;
		}
		
		.tx-login-bg {
			background: url(images/bg.jpg) no-repeat 0 0;
		}
		</style>
		
		<script type="text/javascript">
		layui.use(['jquery','layer'], function() {
		    let $ = layui.jquery;
		    let layer = layui.layer;
		    $("#register").click(function() {
		    	$.ajax({
		    		url:"${pageContext.request.contextPath }/user.action?methodName=register",
		    		data: {
		    			name: $("#name").val(),
		    			loginName: $("#username").val(),
		    			pwd: $("#password").val()
		    		},
		    		type: 'post',
		    		dataType:'json',
		    		success: function(data) {
		    			if(data) {
		    				layer.alert('注册成功!', {icon: 1});
		    			} else {
		    				layer.alert('注册失败', {icon: 5});
		    			} 
		    		}
		    	})
		    })
		    
		 });
		</script>
</head>
    <body class="tx-login-bg">
        <div class="tx-login-box">
            <div class="login-avatar bg-black"><i class="iconfont icon-wode"></i></div>
				<ul class="tx-form-li row">
					<li class="col-24 col-m-24"><p>用户名<input type="text" id="name" placeholder="用户名" class="tx-input"></p></li>
				
					<li class="col-24 col-m-24">账号名<p><input type="text" id="username" placeholder="账号名" class="tx-input"></p></li>
					<li class="col-24 col-m-24">密码<p><input type="password" id="password" placeholder="密码" class="tx-input"></p></li>
					<li class="col-24 col-m-24"><p class="tx-input-full"><button id="register" class="tx-btn tx-btn-big bg-black">注册</button></p></li>
				</ul>
            </div>
    </body>
</html>

在这里插入图片描述
好啦,本篇分享就到此为止!如果你看完本篇文章有所收获,请不要忘记点个赞,或者留下你的思考与问题,祝你变得更强!!!

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

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

相关文章

数学建模———层次分析法及其matlab语法,函数和代码实现

层次分析法思想登场 建模比赛中最基础的模型之一&#xff0c;其主要用于解决评价类问题&#xff08;例如&#xff1a;选择那种方案最好&#xff0c;哪位运动员或者员工表现的更优秀。&#xff09; 评价类问题字眼&#xff1a; 评价的目标是什么&#xff1f;达到这个目标有那…

flutter开发实战-dio文件下载实现

flutter开发实战-dio文件下载实现 在开发中&#xff0c;需要下载文件&#xff0c;这里使用的是dio dio 是一个强大的 Dart HTTP 请求库&#xff0c;支持全局配置、Restful API、FormData、拦截器、 请求取消、Cookie 管理、文件上传/下载、超时以及自定义适配器等。 一、引入d…

apache下载

Apache VS17 binaries and modules download php下载地址 PHP For Windows: Home windows.php.net - /downloads/releases/archives/ 历史版本下载 php下载 https://windows.php.net/downloads/releases/archives/php-5.6.37-Win32-VC11-x64.zip https://www.apachehaus.com/…

代码随想录day14

这里推荐这三道题先熟悉二叉树的三种遍历方式 144. 二叉树的前序遍历&#xff08;中->左->右) 根左右。前序遍历首先访问根结点然后遍历左子树&#xff0c;最后遍历右子树。在遍历左、右子树时&#xff0c;仍然先访问根节点&#xff0c;然后遍历左子树&#xff0c;最后…

如何在云中实现安全与合规的规模化?亚马逊云科技给出了答案

在亚马逊云科技&#xff0c;为满足客户不断变化的需求&#xff0c;亚马逊云科技持续创新与迭代&#xff0c;设计的服务能帮助客户满足最严格的安全和合规性要求。针对安全相关工作&#xff0c;亚马逊云科技服务团队与Amazon Security Guardians云守护者项目密切配合&#xff0c…

【计算机视觉】80 TB!58.5 亿!世界第一大规模公开图文数据集 LAION-5B 解读

文章目录 一、导读二、数据集背景信息2.1 图文对数据集2.2 图像数据集 三、LAION-5B有什么3.1 子集3.2 开源模型3.3 KNN index/web界面 四、LAION可以做什么任务4.1 图文匹配及多模态预训练4.2 生成任务4.3 分类任务4.4 其他任务 五、总结 一、导读 继去年 LAION-400M 这个史上…

Android Jetpack Compose多平台用于Android和IOS

Android Jetpack Compose多平台用于Android和IOS JetBrains和外部开源贡献者已经努力工作了几年时间来开发Compose Multiplatform&#xff0c;并最近发布了适用于iOS的Alpha版本。自然地&#xff0c;我们对其功能进行了测试&#xff0c;并决定通过使用该框架在iOS上运行我们的…

leetcode47. 全排列 II 回溯剪枝的细节问题

题目描述&#xff1a; 1、思路 作为回溯算法的经典问题&#xff0c;常用的方法是&#xff0c;每次dfs前先判断是否达到临界条件&#xff0c;满足条件则加入结果集并return。通过循环和dfs来构建树&#xff0c;查找出全部满足条件的集合。 例如本题&#xff0c;如1&…

dp动态规划详解下

dp动态规划详解上&#xff1a;https://blog.csdn.net/weixin_73936404/article/details/131527247?spm1001.2014.3001.5501 目录 dp动态规划详解上&#xff1a;https://blog.csdn.net/weixin_73936404/article/details/131527247?spm1001.2014.3001.5501 【案例1】 【题目描…

强度(极限强度、屈服强度)、韧性材料与脆性材料(韧性材料与脆性材料的强度、为什么脆性材料在压缩时比在拉伸时更坚固?)、材料的延展性、韧性、弹性

1.强度 强度&#xff08;Strength&#xff09;是材料可以承受的应力的量度&#xff0c;通常使用极限强度&#xff08;Ultimate strength&#xff09;和屈服强度&#xff08;Yield strength&#xff09;来定义材料的强度-极限。 材料的极限抗拉强度定义为在拉伸试验过程中达到的…

windows 编译libyuv

一、libyuv下载 git clone https://chromium.googlesource.com/external/libyuv 二、libjpeg-turbo下 git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git 三、编译可以参考 BUILDING.md 需要环境&#xff1a; VS2019 CMake YASM 启动vs工具 编译&#xff1…

js模块化开发

◼ 到底什么是模块化、模块化开发呢&#xff1f;  事实上模块化开发最终的目的是将程序划分成一个个小的结构&#xff1b;  这个结构中编写属于自己的逻辑代码&#xff0c;有自己的作用域&#xff0c;定义变量名词时不会影响到其他的结构&#xff1b;  这个结构可以将自己…

SAP S4 Hana 下面ACDOCA 凭证行字段增强创建过程

网上找到这个类下面是可以新增增强的 现在需要在如下位置建立四代增强点 保存以后会出现下面的增强项 保存激活后&#xff0c;完成在源程序中增加了一个4代显式增强点.上面步骤只是在程序中建立了一个增强点&#xff0c;并没有执行什么动作&#xff0c;就相当于建立一个容器。如…

Python将Excel数字对应列的字母写成字典(json)

在日常的办公中&#xff0c;我们经常需要利用python去读写Excel类型的文件&#xff0c;有时候我们需要将每个数字代表的列的字母表现出来&#xff0c;那么我们可以利用Python实现&#xff0c;而且今天的代码可以根据自己的需求去任意的改变你想规定的长度 如,或者更长 a {1:…

1分钟搭建VPN服务器

1分钟搭建一个VPN服务器 VPN技术在保障网络通信安全和隐私上发挥着重要作用。IPsec VPN是其中一种常用的VPN模式。本文将介绍如何通过使用Docker来快速搭建IPsec VPN Server。 什么是IPsec VPN&#xff1f; IPsec即Internet Protocol Security&#xff0c;是一种用于保护互联…

「2024」预备研究生mem- 形式逻辑强化:逻辑的特殊文字表述方式(重点记忆)

一、形式逻辑强化&#xff1a;逻辑的特殊文字表述方式 二、课后题

关于torch.load报出找不到模型的错误,但路径明明正确

后来发现是因为使用 torch.save(model,save.pt) 会保存整个文件时会默认保存训练py文件的父目录&#xff0c;用torch.load导入文件时搜索路径必须有此父路径&#xff0c;否则将会提示no model named model这样的错误 解决办法是使用sys.path.apend把该父目录加入搜索路径中 …

Java开发 - 探寻Spring的秘密

前言 Spring是企业级J2EE一站式解决方案&#xff0c;提供了整个项目的表现层、业务层、持久层&#xff0c;而且&#xff0c;它的生态特别完善&#xff0c;可以和其他框架无缝对接&#xff0c;现在做Java的哪个项目里没有Spring的说出不去都不信。但往往我们开发者只重视项目是…

重定向:电商行业打败对手的杀手锏

重定向是一种在线营销策略&#xff0c;针对对产品或服务表示兴趣的潜在客户。可以追踪那些访问过您的网站、但未进行过消费的用户&#xff0c;再次向他们展示相关产品&#xff0c;激起消费欲。再营销则是可以追踪那些将商品加入网页购物车&#xff0c;但最后没有购买的用户&…

物流RFID设备一般在哪些场景应用?

随着现代物流行业的快速发展&#xff0c;传统条码技术信息量少&#xff0c;易脏污损毁&#xff0c;耐用性不高等问题很难满足物流企业多样化的需求&#xff0c;物流RFID设备的应用也越来越广泛。下面我们就跟大家一起来分析一下&#xff0c;物流RFID设备可以在哪些场景中应用。…