layui会议OA项目数据表格新增改查

2023-11-19

前言

在上篇博客我们实现了左侧树形菜单与选项卡,今天我们来实现最重要的部分——数据表格的增删改查

一、后台代码编写

1.1 数据表优化

在这里插入图片描述

将rid身份用中文表示,即将 rid 转换为对应的角色名称

SELECT
    u.*,
    CASE
        WHEN u.rid = '1' THEN '管理员'
        WHEN u.rid = '2' THEN '发起者'
        WHEN u.rid = '3' THEN '审批者'
        WHEN u.rid = '4' THEN '参与者'
        WHEN u.rid = '5' THEN '会议室管理员'
        ELSE '其他'
    END AS rname
FROM
    t_oa_user u;

1.2 R工具类

package com.zking.util;

import java.util.HashMap;

public class R extends HashMap{
	public R data(String key, Object value) {
		this.put(key, value);
		return this;
	}
	
	/**
	 * data 数据传入   code返回结果成功还是失败    count分页
	 * @param code
	 * @param msg
	 * @return
	 */
	public static R ok(int code, String msg) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg);
		return r;
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.data("success", false).data("code", code).data("msg", msg);
		return r;
	}
	
	public static R ok(int code, String msg,Object data) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg).data("data", data);
		return r;
	}
	
	public static R ok(int code, String msg, long count, Object data) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg).data("count", count).data("data", data);
		return r;
	}
}
  • data方法:该方法用于向R对象中添加键值对数据,并返回R对象本身,以支持链式调用

  • ok方法和error方法:这些方法用于返回通用格式的响应结果。

  • 分页信息:代码中提供了一个构建分页响应结果的方法ok,其中包含了count和data两个部分。

1.3 UserDao新增改查

package com.xqx.dao;

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

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

/**
 * @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
	 * @param pageBean
	 * @return
	 * @throws Exception
	 */
	public List<Map<String, Object>> userRoles(User user, PageBean pageBean) throws Exception {
	    String sql = "SELECT\r\n" +
	            "    u.*,\r\n" +
	            "    CASE\r\n" +
	            "        WHEN u.rid = '1' THEN '管理员'\r\n" +
	            "        WHEN u.rid = '2' THEN '发起者'\r\n" +
	            "        WHEN u.rid = '3' THEN '审批者'\r\n" +
	            "        WHEN u.rid = '4' THEN '参与者'\r\n" +
	            "        WHEN u.rid = '5' THEN '会议室管理员'\r\n" +
	            "        ELSE '其他'\r\n" +
	            "    END AS rname\r\n" +
	            "FROM\r\n" +
	            "    t_oa_user u";
	    // 按照登录账号模糊查询
	    if (StringUtils.isNotBlank(user.getLoginName())) {
	        sql += " WHERE loginName LIKE '" + user.getLoginName() + "%'";
	    }
	    return super.executeQuery(sql, pageBean);
	}

	/**
	 * 新增用户
	 * 
	 * @param user
	 * @throws Exception
	 */
	public int addUser(User user) throws Exception {
		String sql = "insert into t_oa_user(name,loginName,pwd) values(?,?,?)";
		return super.executeUpdate(sql, user, new String[] { "name", "loginName", "pwd" });
	}

	/**
	 * 编辑用户
	 * 
	 * @param user
	 * @throws Exception
	 */
	public int editUser(User user) throws Exception {
		String sql = "update t_oa_user set name=?,loginName=?, pwd=?" + " where id=?";
		return super.executeUpdate(sql, user, new String[] { "name", "loginName", "pwd", "id" });
	}

	/**
	 * 删除用户
	 * 
	 * @param user
	 * @throws Exception
	 */
	public int delUser(User user) throws Exception {
		String sql = "delete from t_oa_user where id=?";
		return super.executeUpdate(sql, user, new String[] { "id" });
	}

	/**
	 * 登录
	 * 
	 * @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" });
	}
}

1.4 Servlet的编写

package com.xqx.web;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
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.PageBean;
import com.zking.util.R;
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();
	R R = new R();

	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();
		}
	}

	/**
	 * 
	 * @param req
	 * @param resp
	 * @throws IOException
	 * @throws ServletException
	 */
	public void userRoles(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
		try {
			PageBean pageBean = new PageBean();
			pageBean.setRequest(req);
			List<Map<String, Object>> list = ud.userRoles(user, pageBean);
			ResponseUtil.writeJson(resp, R.ok(0, "查询成功", pageBean.getTotal(), list));
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	/**
	 * 用户新增
	 * 
	 * @param req
	 * @param resp
	 * @return
	 * @throws IOException
	 * @throws ServletException
	 */
	public void addUser(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
		try {
			int addUser = ud.addUser(user);
			if (addUser > 0) {
				ResponseUtil.writeJson(resp, R.ok(200, "用户新增成功"));
			} else {
				ResponseUtil.writeJson(resp, R.error(0, "用户新增失败"));
			}

			ResponseUtil.writeJson(resp, addUser);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 用户编辑
	 * 
	 * @param req
	 * @param resp
	 * @throws IOException
	 * @throws ServletException
	 */
	public void editUser(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
		try {
			int editUser = ud.editUser(user);
			if (editUser > 0) {
				ResponseUtil.writeJson(resp, R.ok(200, "用户编辑成功"));
			} else {
				ResponseUtil.writeJson(resp, R.error(0, "用户编辑失败"));
			}

			ResponseUtil.writeJson(resp, editUser);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 用户删除
	 * 
	 * @param req
	 * @param resp
	 * @throws IOException
	 * @throws ServletException
	 */
	public void delUser(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
		try {
			int delUser = ud.delUser(user);
			if (delUser > 0) {
				ResponseUtil.writeJson(resp, R.ok(200, "用户删除成功"));
			} else {
				ResponseUtil.writeJson(resp, R.error(0, "用户删除失败"));
			}
			ResponseUtil.writeJson(resp, delUser);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

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

}

二、前台页面的编写

2.1 userManege.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<%@ include file="../../common/head.jsp"%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
 .layui-tab{
height:	100%;
}
</style>
</head>
<body>
 <!-- 搜索栏 -->
	<div class="layui-form-item">
	  <div class="layui-inline">
	    <label class="layui-form-label">用户名:</label>
	    <div class="layui-input-inline">
	      <input type="text" id="name" placeholder="请输入用户名" autocomplete="off" class="layui-input">
	    </div>
	  </div>
	  
	  <div class="layui-inline">
	    <div class="layui-input-inline">
	      <button id="btn_search" type="button" class="layui-btn layui-btn-normal">
	      	<i class="layui-icon layui-icon-search"></i>
	      	查询
	      </button>
	      <button id="btn_add" type="button" class="layui-btn">新增</button>
	    </div>
	  </div>
	  
	</div>
	<!-- 数据表格及分页 -->
	<table id="tb" lay-filter="tb" class="layui-table" style="margin-top:-15px;"></table>
	<!-- 对话框(新增和编辑共用一个页面) -->
<table class="layui-hide" id="test" lay-filter="test"></table>
 
<script type="text/html" id="toolbarDemo">
  <div class="layui-btn-container">
    <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
    <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
    <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
  </div>
</script>
 
<script type="text/html" id="barDemo">
  <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<script type="text/javascript" src="static/js/system/userManage.js"></script>


</body>
</html>

2.2 userManage.js

let layer, $, table;
var row;
layui.use([ 'jquery', 'layer', 'table' ], function() {
	layer = layui.layer, $ = layui.jquery, table = layui.table;
	// 初始化数据表格
	initTable();
 
	// 绑定查询按钮的点击事件
	$('#btn_search').click(function() {
		query();
	});
 
	// 绑定新增按钮的点击事件
	$('#btn_add').click(function() {
		row = null;
		open('新增');
	});
});
 
// 1.初始化数据表格
function initTable() {
	table.render({
		elem : '#tb',
		url : 'user.action?methodName=userRole',
		toolbar : '#toolbarDemo' // 开启头部工具栏,并为其绑定左侧模板
		,
		defaultToolbar : [ 'filter', 'exports', 'print', { // 自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
			title : '提示',
			layEvent : 'LAYTABLE_TIPS',
			icon : 'layui-icon-tips'
		} ],
		title : '用户数据表',
		cols : [ [ {
			type : 'checkbox',
			fixed : 'left'
		}, {
			field : 'id',
			title : 'ID',
			width : 80,
			fixed : 'left',
			unresize : true,
			sort : true
		}, {
			field : 'loginName',
			title : '账户名',
			width : 120,
			edit : 'text'
		}, {
			field : 'name',
			title : '用户名',
			width : 150,
			edit : 'text',
			templet : function(res) {
				return '<em>' + res.name + '</em>'
			}
		}, {
			field : 'pwd',
			title : '密码',
			width : 80,
			edit : 'text',
			sort : true
		}, {
			field : 'rname',
			title : '角色名称',
			width : 100
		}, {
			fixed : 'right',
			title : '操作',
			toolbar : '#barDemo',
			width : 150
		} ] ],
		page : true
	});
 
	// 表格监控
	table.on('tool(tb)', function(obj) {
		//给行数据赋值
		row = obj.data;
		if (obj.event == "edit") {
			open("编辑");
		} else if (obj.event == "del") {
			layer.confirm('确认删除吗?', {
				icon : 3,
				title : '提示'
			}, function(index) {
				$.post('user.action', {
					'methodName' : 'del',
					'id' : row.id
				}, function(rs) {
					if (rs.success) {
						// 调用查询方法刷新数据
						query();
					} else {
						layer.msg(rs.msg, function() {
						});
					}
				}, 'json');
				layer.close(index);
			});
		} else {
 
		}
	});
 
}
 
// 2.点击查询
function query() {
	//表格重载
	table.reload('tb', {
		url : $("#ctx").val() + '/user.action', // 请求地址
		method : 'POST', // 请求方式,GET或者POST
		loading : true, // 是否显示加载条(默认 true)
		page : true, // 是否分页
		where : { // 设定异步数据接口的额外参数,任意设
			'methodName' : 'userRole',
			'name' : $('#name').val()
		},
		request : { // 自定义分页请求参数名
			pageName : 'page', // 页码的参数名称,默认:page
			limitName : 'rows' // 每页数据量的参数名,默认:limit
		}
	});
}
 
// 3.对话框
function open(title) {
	layer.open({
		type : 2, // layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
		title : title,
		area : [ '660px', '340px' ], // 宽高
		skin : 'layui-layer-rim', // 样式类名
		content : $("#ctx").val() + '/jsp/system/userEdit.jsp', // 书本编辑页面
		btn : [ '保存', '关闭' ],
		yes : function(index, layero) {
			// 调用子页面中提供的getData方法,快速获取子页面的form表单数据 getData()子页面的方法
			let data = $(layero).find("iframe")[0].contentWindow.getData();
			console.log(data);
			// 判断title标题
			let methodName = "add";
			if (title == "编辑")
				methodName = "edit";
			$.post('user.action?methodName=' + methodName,
					data, function(rs) {
						if (rs.success) {
							// 关闭对话框
							layer.closeAll();
							// 调用查询方法刷新数据
							query();
						} else {
							layer.msg(rs.msg, function() {
							});
						}
					}, 'json');
		},
		btn2 : function(index, layero) {
			layer.closeAll();
		}
	});
} 

2.3 新增、修改用户共用jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@include file="/common/head.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/system/userEdit.js"></script>
<title>用户新增、修改共用界面</title>
</head>
<style>
.layui-form-select dl{
	max-height:150px;
}
</style>
<body>
<div style="padding:10px;">
    <form class="layui-form layui-form-pane" lay-filter="user">
        <input type="hidden" name="id"/>
        <div class="layui-form-item">
            <label class="layui-form-label">用户名称</label>
            <div class="layui-input-block">
                <input type="text" id="name" name="name" autocomplete="off" placeholder="请输入用户名" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">用户角色</label>
            <div class="layui-input-block">
                <select name="rid">
                    <option value="">---请选择---</option>
                    <option value="1">管理员</option>
                    <option value="2">发起者</option>
                    <option value="3">审批者</option>
                    <option value="4">参与者</option>
                    <option value="5">会议管理员</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">登录账号</label>
            <div class="layui-input-block">
                <input type="text" name="loginName" lay-verify="required" placeholder="请输入账号" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">登录密码</label>
            <div class="layui-input-block">
                <input type="password" name="pwd" placeholder="请输入密码" autocomplete="off" class="layui-input">
            </div>
        </div>
    </form>
</div>
</body>
</html>

2.4add、edit的js

let layer,form,$;
layui.use(['layer','form','jquery'],function(){
	layer=layui.layer,form=layui.form,$=layui.jquery;
	initData();
});
 
function initData(){
	if(null!=parent.row){

	     //parent.row:表格行对象
	     form.val('user',$.extend({}, parent.row||{}));
	     $('#name').attr('readonly','readonly');
	}
}
 
function getData(){
    return form.val('user');
}

三、演示

3.1 查询

在这里插入图片描述

3.2 新增

在这里插入图片描述

在这里插入图片描述

3.3 修改

在这里插入图片描述
在这里插入图片描述

3.4 删除

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

layui会议OA项目数据表格新增改查 的相关文章

  • Java:如何将ArrayList作为对象的实例变量?

    我正在开展一个班级项目 用 Java 构建一个小型 Connect4 游戏 我目前的想法是拥有一类 Columns 它具有一些整数 索引 最大长度 isFull 作为实例变量 以及一个 ArrayList 来接收上面的整数和每个玩家的表现
  • GSON:如何在保持循环引用的同时防止 StackOverflowError?

    我有一个带有循环引用的结构 出于调试目的 我想转储它 基本上任何格式都可以 但我选择了JSON 由于它可以是任何类 所以我选择了不需要 JAXB 注释的 GSON 但是 GSON 会遇到循环引用并递归直到StackOverflowError
  • 如何用泛型返回类型推断方法的具体返回类型?

    给出以下接口 interface Random extends java util function Supplier
  • 如何生成带logo的二维码?

    我正在为 Android 设备开发应用程序 我想生成带有徽标的二维码 With ZXing I know how to generate simple QR codes like this one But I want to generat
  • 使用矩阵参数创建 GET 请求

    我将使用的网络服务需要矩阵参数 http tester com v1 customers lastname Jackson firstname Tim bookingreference 7Y9UIY 而不是通常的 http tester c
  • Maven:在项目之间共享源

    我有两个项目 它们是一个共同父项目的子项目 还有一个生成器项目和生成器对应的maven插件项目 此外 两个子项目都使用相同的输入文件 该文件用于代码生成 parent pom child1 jar src main generator in
  • Java - Servlet 的默认 contentType

    在servlet中 通常我们会指定一个contentType 然后我们就可以打印出html代码了 response setContentType text html PrintWriter out response getWriter 如果
  • 更改单击后退按钮上的 BottomNavigationView 图标

    在我的布局的底部有一个底部导航视图与三个片段 如果我单击后退按钮 片段将切换 但底部图标不会切换 我该如何修复它 addToBackStack 有效 也许您有一些关于美化代码的建议 在活动或片段中添加片段标签是一个好的做法吗 public
  • Java俄罗斯方块旋转

    我知道这个问题已经被问了很多 但我想知道如何旋转俄罗斯方块 我已经做了一个又长又糟糕的解决方案 大约 170 行代码 但应该有更简单的方法来做到这一点 我的俄罗斯方块由 4 个块组成 它们都知道它们在矩阵中的位置 行和列 Matrix本身是
  • 如何将跨源资源共享与 Spring MVC 4.0.0 RESTful Webservice 集成

    我有一个简单的 Web 服务返回JSON data The 用户等级 com bargadss SpringService Domain 是个POJO类包含 用户 ID 名字 姓氏 电子邮件 The 用户服务类 com bargadss S
  • 在 JSON 转换为 CSV 期间保持 JSON 键的顺序

    我正在使用此处提供的 JSON 库http www json org java index html http www json org java index html为了将 json 字符串转换为 CSV 但我遇到的问题是 转换后键的顺序
  • 在其抽象超类中使用子类的泛型类型?

    在我的代码中有以下抽象超类 public abstract class AbstractClass
  • cipher.update在java中做什么?

    我正在实施 DES CBC 我很困惑什么cipher init cipher update and cipher dofinal做 我只是使用 init 来设置密钥dofinal得到结果 我不使用更新 那是对的吗 另外使用时结果有什么不同U
  • 需要在 java api 中的 Solr 搜索中搜索文本及其周围的几行

    我正在使用 solr 7 7 2 并且我使用 solrj 在 Solr 中编写了一个 Java 程序 该程序在一个巨大的文本文件中搜索单词 我使用以下代码来显示代表整个文本的搜索结果 SolrQuery params new SolrQue
  • 如何将 Java 字节数组转换为 Scala 字节数组?

    我是 Scala 新手 目前正在从事一个涉及 Java 和 Scala 模块的项目 现在我想使用 byte 类型的参数从 Java 调用 Scala 方法 Scala 方法的签名为 def foo data Array Byte Java
  • 如何在 Selenium 中定位具有特定文本的跨度? (使用Java)

    我在使用 java 查找 Selenium 中的 span 元素时遇到问题 HTML 看起来像 div class settings padding span Settings span div 我尝试了以下方法但没有成功 By xpath
  • 策略模式的现实示例

    我一直在读关于OCP原理 http en wikipedia org wiki Open closed principle以及如何使用策略模式来实现这一目标 我打算尝试向几个人解释这一点 但我能想到的唯一例子是根据 订单 的状态使用不同的验
  • 如何在 JUnit5 中为测试套件设置自定义测试执行顺序?

    我在 JUnit5 上进行了大量测试 并在多个线程中并行运行 还有有关每次测试时间的信息 我想在最长的测试开始时运行 并将最快的测试留在最后以优化公共执行时间 我还没有找到在 JUnit5 中执行此操作的方法 版本中5 4有一个org ju
  • 蓝牙连接;无法正确发送字符串

    当我需要将字符串从服务器蓝牙套接字发送到客户端蓝牙套接字时 我的程序遇到了麻烦 只要我一次只发送一个字符串 例如聊天 一切都可以正常工作 但是如果我需要在短时间内编写更多字符串 以交换信息 则字符串将不会与客户端代码分离 例如 如果我发送
  • Activity 在 Android 上创建两次

    首先 我是 Android 开发新手 所以请耐心等待 我将从用户界面开始 我有一个按钮 一旦您点击它 就会启动一个活动以获取结果 public class GUIActivity extends Activity Override publ

随机推荐

  • 残差神经网络的研究

    目录 一 ResNet残差神经网络 1 1 提出 1 2 作用 1 3 应用场景 1 4 残差单元的结构 1 4 1 残差网络得名的原因 1 4 2 残差网络可以有效缓解退化现象的原因 1 4 3 数学原理 二 附录 2 1 残差神经网络可
  • GD32F303调试小记(一)之USART(接收中断、接收空闲中断+DMA、发送DMA)

    前言 之前写了GD32F103调试小记 二 之USART 接收中断 接收空闲中断 DMA 发送DMA 一文 这次我们来看看GD32F303的USART是如何配置的 结合这两篇文章 相信大家GD32的USART配置流程会十分熟悉 DMA 能大
  • SpringBoot项目实战,附源码

    SpringBoot2 0笔记 一 SpringBoot基本操作 环境搭建及项目创建 有demo 二 SpringBoot基本操作 使用IDEA打war包发布及测试 三 SpringBoot基本操作 SpringBoot整合SpringDa
  • 逆向爬虫09 协程 & 异步编程(asyncio)

    逆向爬虫09 协程 异步编程 asyncio 1 什么是协程 What 协程 Coroutine 也可以被称为微线程 是一种用户态内的上下文切换技术 简而言之 其实就是通过一个线程实现代码块相互切换执行 def func1 print 1
  • Unity 拖尾(Trail Renderer)效果的实现

    1 新建场景 创建一个球 在球上添加组件Trail Renderer 2 在Trail Renderer组件设置Time为0 5 Materials材质 3 Width下点击右键 Add key 添加控制点 起始宽度为1 0 结束宽度为0
  • Nginx配置https网站

    1 什么是https https超文本传输安全协议是http ssl安全套接层和tls传输层安全的组合 用于提供加密通信和鉴定网络服务器的身份 网上的支付交易 个人隐私和企业中的敏感信息等越来越受到人们的关注和保护 因此https目前已经是
  • ICCV 2021: AdaAttN: Revisit Attention Mechanism in Arbitrary Neural Style Transfer 阅读笔记

    ICCV 2021 AdaAttN Revisit Attention Mechanism in Arbitrary Neural Style Transfer 论文 https arxiv org pdf 2108 03647 pdf 代
  • app上架流程的整理

    app的上架流程 一 准备工作 首先需要有开发者账号 企业级的账号是299 个人开发者账号是99 没有的话可以登录http developer apple com 自行申请 假如你已经有账号了 进入苹果官网点击Accout登录 二 申请证书
  • Android课设——理财小助手

    一 app介绍 理财小助手是一款利用Android studio软件实现的APP 可以录入每天的消费项目以及消费金额 同时也可以查找消费记录 统计消费总额 我用到的Android studio版本如下 二 模块设计 下面是我实现的一些模块
  • iOS Sqlite数据库增删改查基本操作

    Sqlite是ios上最常用的数据库之一 大家还是有必要了解一下的 实现效果如图 先来看看数据库方法类 将各个操作都封装在一个类里面 达到代码重用的目的 这是程序员都应该努力去实现的目标 这样在下一次用到同样的方法和类的时候 就可以直接使用
  • 推荐几款实用的Android Studio 插件

    http www jcodecraeer com a anzhuokaifa Android Studio 2015 1009 3557 html
  • 【Python小游戏】当当当当 万众瞩目得《滑雪大冒险》来啦~(附源码)

    前文 大家好 我是梨子同学 希望大家多多支持我 哈哈 为了感谢每一个关注我的小可爱 每篇文章的项目源码都是无偿分享滴 见文末 很多csdn的功能还在研究中 还有小编的文笔不好勿怪 会慢慢进步跟大家一起学习的 小编也一直在学习编程 如果代码小
  • javaweb——Response下载文件

    HttpServletResponse web服务器接收到客户端的http请求 针对这个请求分别创建一个代表请求的HttpServletResponse对象 一个代表响应的HttpServletResponse对象 如果要获取客户端请求过来
  • 查看Linux内存cpu使用情况,某一应用内存占用大小

    查看Linux内存 cpu使用情况排序 某一应用内存占用大小 virt res shr data的意义 1 知识点 1 top命令使用 2 如何查看某一应用内存占用大小 3 回收buff cache 1 使用 1 使用top查看cpu 内存
  • java中对象克隆的基本应用

    为什么需要克隆对象 直接new一个对象不行吗 答案是 克隆的对象可以直接使用已经有的属性值 而new出来的对象的属性都还是初始化时候的值 所以当需要一个新的对象来保存当前对象的 状态 就靠clone方法了 那么我把这个对象的临时属性一个一个
  • 行政如何借助ChatGPT提高效率

    文章目录 ChatGPT的优势与局限 行政人员的核心价值 行政人员应对策略 借助ChatGPT提高效率 结论 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 随着人工智
  • c++ goto语句

    goto语句又称无条件跳转语句 用于改变语句执行顺序 goto语句的一般格式为 goto label 其他语句 label statement label是用户可定义的一个标识符 以冒号结束 例如 include
  • 考公考研热度上升、是增加就业筹码or恐惧就业?

    现在 金三银四 的春招季已经逐渐告一段落 先不从本次职场招聘看 从考公考研来看 很大部分应届毕业生选择去考公务员和研究生 据统计今年457万考研大军比去年的377万整整多了80万人 今年也是最近几年考研人数增长最快的 今年考研大军达457万
  • Python学习-----起步4(列表元素的添加,删除,修改,查询,获取长度)

    目录 前言 列表元素的添加 或者叫写入 1 append 函数 2 extend 函数 3 insert 函数 列表元素的删除 1 remove 函数 2 pop 函数 3 clear 函数 4 del 方法 这个不是函数哦 列表元素的修改
  • layui会议OA项目数据表格新增改查

    文章目录 前言 一 后台代码编写 1 1 数据表优化 1 2 R工具类 1 3 UserDao新增改查 1 4 Servlet的编写 二 前台页面的编写 2 1 userManege jsp 2 2 userManage js 2 3 新增