layui实现Tree组件前后端交互

2023-11-04

前言

关于树组件的话,layui官方提供的文档资料不太全面,本篇将分享Tree组件与后台交互实现动态加载数据。

运行效果

老板登录后显示的权限
在这里插入图片描述
普通用户显示的权限
在这里插入图片描述

Tree组件

1.Tree组件的加载方式

官方文档的基础说明部分可以静下心去仔细看一看(很有必要),我这里采取的非模块加载方式,对应的script的文件引入是layui.all.js

注意:script要在写在body底部哦!,不然加载不出来数据。

因为:浏览器生成Dom树的时候是一行一行读HTML代码的,script标签放在最后面就不会影响前面的页面的渲染

这里我用的是ajax来请求后台数据的,而后在success函数中拿到返回的json进行tree控件数据的加载。

1.1选项卡

选项卡的话是配合于tree组件中的点击事件,其中两个核心方法。

  1. 打开选项卡的方法:element.tabAdd('tabs',{title:xx,conten:xx});
  2. 判断选项卡的id是否打开过,$("li[lay-id='" + node.data.id + "']").length;

在这里插入图片描述

<script src="${pageContext.request.contextPath }/static/js/layui/layui.all.js" charset="utf-8"></script>
<script>
;!function(){
	//加载所需要的模块
	 var $=layui.$;
	  var element = layui.element;
	  var table = layui.table;
	  var layer=layui.layer;
	  var form=layui.form;
	  var tree = layui.tree;
      var url=$("#ctx").val();
      layer.msg('酷毙了。。', {icon: 1});
      
      layer.msg(RoleId);
      //获取角色权限id
      var RoleId=   $("#RoleId").val();
    //请求tree控件的数据
       $.ajax({
		  type: "post",
          url: url+"/permission.action?methodName=menuTree",
          dataType: 'json',
          data:{rid:RoleId},//获取角色权限id去加载数据
          success: function (data) {
        	  tree.render({
  			    elem: '#test13'
  			    ,data: data//数据源
  			    ,isJump:true//否允许点击节点时弹出新窗口跳转
  			  ,spread:true//节点是否初始展开
  			    ,showLine: false  //是否开启连接线
  			  	,click: function (node) {//点击事件
                     var exist = $("li[lay-id='" + node.data.id + "']").length;//判断是不是用重复的选项卡
                    if (exist > 0) {
                        element.tabChange('tabs', node.data.id);// 切换到已有的选项卡
                    } else {
                        if (node.data.attributes.self.url != "") {// 判断是否需要新增选项卡
                           //新增选项卡
                        	element.tabAdd('tabs',
                                {
                                    title: node.data.title,//获取标题
                                    content: '<iframe scrolling="yes" frameborder="0" src="'+url+node.data.attributes.self.url+'"width="100%" height="100%"></iframe>'
                                    ,
                                    id: node.data.id
                                });
                              //跳转到指定的选项卡
                            element.tabChange('tabs', node.data.id);
                        }
                    }   
              }
  			  }); 
        	  debugger;
            }
	  }) 
}(); 

</script>

2.Tree组件的渲染格式

这里可以看到它所提供支持的格式必不可少的有titlechildren属性,如果后台传入的json中没对应上这两个属性的话是出不来想要的效果,而后就是需要绑定元素,和定义数据接口。
在这里插入图片描述

3.基础参数

这个是控件里面的基础参数,都比较常用。
在这里插入图片描述

4.数据源属性选项

总之定义的json格式属性一定要向下面表中属性对齐。
在这里插入图片描述

后台代码实现

1.定义对应数据格式实体

package com.liyingdong.vo;

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


public class TreeVo<T> {
	/**
	 * 节点ID
	 */
	private String id;
	/**
	 * 显示节点标题
	 */
	private String title;
	/**
	 * 节点状态,open closed
	 */
	private Map<String, Object> state;
	/**
	 * 节点是否被选中 true false
	 */
	private boolean checked = false;
	/**
	 * 节点属性
	 */
	private Map<String, Object> attributes;

	/**
	 * 节点的子节点
	 */
	private List<TreeVo<T>> children = new ArrayList<TreeVo<T>>();

	/**
	 * 父ID
	 */
	private String parentId;
	/**
	 * 是否有父节点
	 */
	private boolean hasParent = false;
	/**
	 * 是否有子节点
	 */
	private boolean hasChildren = false;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public Map<String, Object> getState() {
		return state;
	}

	public void setState(Map<String, Object> state) {
		this.state = state;
	}

	public boolean isChecked() {
		return checked;
	}

	public void setChecked(boolean checked) {
		this.checked = checked;
	}

	public Map<String, Object> getAttributes() {
		return attributes;
	}

	public void setAttributes(Map<String, Object> attributes) {
		this.attributes = attributes;
	}

	public List<TreeVo<T>> getChildren() {
		return children;
	}

	public void setChildren(List<TreeVo<T>> children) {
		this.children = children;
	}

	public boolean isHasParent() {
		return hasParent;
	}

	public void setHasParent(boolean isParent) {
		this.hasParent = isParent;
	}

	public boolean isHasChildren() {
		return hasChildren;
	}

	public void setChildren(boolean isChildren) {
		this.hasChildren = isChildren;
	}

	public String getParentId() {
		return parentId;
	}

	public void setParentId(String parentId) {
		this.parentId = parentId;
	}

	public TreeVo(String id, String title, Map<String, Object> state, boolean checked, Map<String, Object> attributes,
                  List<TreeVo<T>> children, boolean isParent, boolean isChildren, String parentID) {
		super();
		this.id = id;
		this.title = title;
		this.state = state;
		this.checked = checked;
		this.attributes = attributes;
		this.children = children;
		this.hasParent = isParent;
		this.hasChildren = isChildren;
		this.parentId = parentID;
	}

	public TreeVo() {
		super();
	}

	@Override
	public String toString() {
		return "TreeVo [id=" + id + ", title=" + title + ", state=" + state + ", checked=" + checked + ", attributes="
				+ attributes + ", children=" + children + ", parentId=" + parentId + ", hasParent=" + hasParent
				+ ", hasChildren=" + hasChildren + "]";
	}

}

2.数据转换

把查询到的数据转换为指定格式。

package com.liyingdong.dao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.liyingdong.entity.Permission;
import com.liyingdong.util.BaseDao;
import com.liyingdong.util.BuildTree;
import com.liyingdong.util.PageBean;
import com.liyingdong.vo.TreeVo;

public class PermissionDao extends BaseDao<Permission> {

	/**
	 * 
	 * 是直接从数据库获取到的数据
	 * @param permission
	 * @param pageBean
	 * @return
	 * @throws Exception
	 */
	public List<Permission> list(Permission permission,String json) throws Exception {
		//获取需要包含的字符串
		String sql="select * from t_easyui_Permission where id in("+json+") ";

		return super.executeQuery(sql, Permission.class, null);
	}
	
	public List<TreeVo<Permission>> topNode(String rid,String json) throws Exception {
	    //查询权限对应的子项
		List<Permission> list = this.list(null, json);
	    //声明顶级容器
		List<TreeVo<Permission>> nodes = new ArrayList<TreeVo<Permission>>();
	
		TreeVo<Permission> treeVo = null;
		//遍历实现把数据库的结构转换为前端需要的
		for (Permission p : list) {
			treeVo = new TreeVo<>();
			treeVo.setId(p.getId()+"");//id
			treeVo.setTitle(p.getName());//标题
			treeVo.setParentId(p.getPid()+"");//父id
			Map<String, Object> attributes = new HashMap<String, Object>();
			attributes.put("self", p);//属性
			treeVo.setAttributes(attributes);
			nodes.add(treeVo);
		}
		//获取权限对应的数据
		return BuildTree.buildList(nodes,nodes.get(0).getParentId());
	
	}

}

3.树结构存储的处理

这个方法是把转换好的数据进行树结构处理,让它用有层次。

public static <T> List<TreeVo<T>> buildList(List<TreeVo<T>> nodes, String idParam) {
		if (nodes == null) {
			return null;
		}
		//存放顶级节点(二级节点)的容器
		List<TreeVo<T>> topNodes = new ArrayList<TreeVo<T>>();
//      外层循环
		for (TreeVo<T> children : nodes) {
//			获取到当前对象的父id
			String pid = children.getParentId();
//			判断id是否等于传进来的父id(根据数据库来判断)
			if (pid == null || idParam.equals(pid)) {
//				条件成立加入到当前二级节点下面
				topNodes.add(children);
//				跳过
				continue;
			}
//          内层循环
			for (TreeVo<T> parent : nodes) {
//				获取当前对象的id
				String id = parent.getId();
//				如果当前对象id等于父id就进来				
				if (id != null && id.equals(pid)) {
//					获取到二级节点的子节点容器加当前对象
					parent.getChildren().add(children);
//					有父节点
					children.setHasParent(true);
//					有子节点
					parent.setChildren(true);
//					跳过
					continue;
				}
			}
		}
//		返回存储好的树结构
		return topNodes;
	}

角色处理

1.思路

关于角色的权限问题是由中间表来进行判断的,账号表type–》权限表–》主表
我们可以根据登录者的账号来拿到用户的type,然后存入做用域进行跳转到主界面进行ajax请求带type过去type查询权限表拿到结果集进行pid的拼接+逗号的截取,拼接成需要的串后,在进行sql in(截取好的串)查询到数据进行转换返回到前端渲染。

在这里插入图片描述

2.PermissionAction

public String menuTree(HttpServletRequest req,HttpServletResponse resp) {
		try {
			RoleDao roleDao = new RoleDao();
			String rid = req.getParameter("rid");
			//获取到登录用户的权限id
			List<Role> list = roleDao.list(rid, null);
			StringBuffer  s=new StringBuffer();
			//截取需要串   
			for (Role rl : list) {
			     s.append(rl.getPid()+",");
			}
			//截取掉最后一个逗号
			int last = s.lastIndexOf(",");
		    String json = s.toString().substring(0, last);
		    //sql  in包含查询传入的字符串,转为需要的格式输出到浏览器中
			ResponseUtil.writeJson(resp, this.pd.topNode(rid, json));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

3.UserDao

public class UserDao extends BaseDao<User>{
	
	public List<User>  list(User user) throws Exception {
		String	sql="select*from t_easyui_user  where name='"+user.getName()+"' ";
		return super.executeQuery(sql, User.class, null);
	}
	
}

4.RoleDao

public class RoleDao extends BaseDao<Role>{

public List<Role> list(String rid,PageBean pageBean) throws Exception {
		
		String sql1="select *from t_easyui_role_permission where rid="+rid;
		
		return super.executeQuery(sql1, Role.class, pageBean);
	}
	
}

5.UserAction

//登录
	public String login(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		
		 User u = this.userDao.list(user).get(0);
		 
		 PrintWriter out = resp.getWriter();
		 if(u!=null) {
			 //存入作用域进行转发
			 req.setAttribute("name",u.getName());
			 req.setAttribute("pwd", u.getPwd());
			 req.setAttribute("type", u.getType());
			 out.print("<script>alert('登录成功!')</script>");
			 return "index";
		 }
		 out.print("<script>alert('账号或者密码错误!!')</script>");
		return "login";
	}

6.mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
	<action path="/permission" type="com.liyingdong.web.PermissionAction">
	</action>
	<action path="/book" type="com.liyingdong.web.BookAction">
	</action>
	
	<action path="/UserAction" type="com.liyingdong.web.UserAction">
	<forward name="index" path="/index.jsp" redirect="false"></forward>
	</action>
	
</config>

7.login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>用户登录</title>
		<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/css/bootstrap.min.css" />
		<style>
			.form-signin{
				width: 400px;
				/* 相对定位 :relative    绝对定位:absolute*/
				position: relative;
				top: 100px;
				left: 50%;
				margin-left: -200px;
			}
    </style>
	</head>
	<body>
		<form class="form-signin" action="${pageContext.request.contextPath }/UserAction.action?methodName=login" method="post">
			<div class="text-center mb-4">
				<img class="mb-4" src="/docs/assets/brand/bootstrap-solid.svg" alt="" width="72" height="72">
				<h1 class="h3 mb-3 font-weight-normal">用户登录</h1>
			</div>

			<div class="form-label-group">
				<input type="text" id="name" name="name" class="form-control" placeholder="请输入用户名" required autofocus>
			</div>

			<div class="form-label-group">
				<input type="password" id="pwd" name="pwd" class="form-control" placeholder="请输入密码" required>
			</div>

			<div class="checkbox mb-3">
				<label>
					<input type="checkbox" value="remember-me"> Remember me
				</label>
			</div>
			<button class="btn btn-lg btn-primary btn-block" type="submit">登录</button>
			<p class="mt-5 mb-3 text-muted text-center">&copy; 2017-2020</p>
		</form>
		<script src="js/bootstrap.min.js" type="text/javascript" charset="utf-8"></script>
	</body>
</html>

8.index.jsp

<%@ 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">
<link rel="stylesheet" href="${pageContext.request.contextPath }/static/js/layui/css/layui.css"  media="all">
<title>主界面</title>
</head>
<body class="layui-layout-body">

<input type="hidden" id="ctx" value="${pageContext.request.contextPath }" />
<div class="layui-layout layui-layout-admin">
  <div class="layui-header">
    <div class="layui-logo">东哥的后台</div>
    <!-- 头部区域 -->
    <ul class="layui-nav layui-layout-left">
      <li class="layui-nav-item">
        <a href="javascript:;">其它系统</a>
        <dl class="layui-nav-child">
          <dd><a href="">邮件管理</a></dd>
          <dd><a href="">消息管理</a></dd>
          <dd><a href="">授权管理</a></dd>
        </dl>
      </li>
    </ul>
    <ul class="layui-nav layui-layout-right">
      <li class="layui-nav-item">
        <a href="javascript:;">
          <img src="http://t.cn/RCzsdCq" class="layui-nav-img">
                                                       李瀛东
        </a>
        <dl class="layui-nav-child">
          <dd><a href="">基本资料</a></dd>
          <dd><a href="">安全设置</a></dd>
        </dl>
      </li>
      <li class="layui-nav-item"><a href="">退出</a></li>
    </ul>
  </div>
  
  <div class="layui-side layui-bg-black">
    <div class="layui-side-scroll">
      <!-- 左侧导航区域 -->
      <div id="test13" class="demo-tree-more"></div>
    </div>
  </div>
  <div class="layui-body">
    <!-- 内容主体区域 -->
             我是主体区域
    <div style="padding: 10px;">
    <div class="layui-inline">
    </div>
    
      <!-- 选项卡要显示的地方 -->
     <div class="layui-body">
        <div class="layui-tab" lay-filter="tabs" lay-allowClose="true">
            <ul class="layui-tab-title">
            </ul>
            <div class="layui-tab-content">
             数据表格
            </div>
        </div>
    </div> 
  </div> 
  
  
  <div class="layui-footer">
    <!-- 底部固定区域 -->
    © layui.com - 底部固定区域
  </div>
</div>

<!-- 登录时的账号权限 -->
<input type="hidden" id="RoleId" value="${type}"/>

<script src="${pageContext.request.contextPath }/static/js/layui/layui.all.js" charset="utf-8"></script>
<script>
;!function(){
	//加载所需要的模块
	 var $=layui.$;
	  var element = layui.element;
	  var table = layui.table;
	  var layer=layui.layer;
	  var form=layui.form;
	  var tree = layui.tree;
      var url=$("#ctx").val();
      layer.msg('酷毙了。。', {icon: 1});
      
      layer.msg(RoleId);
      //获取角色权限id
      var RoleId=   $("#RoleId").val();
    //请求tree控件的数据
       $.ajax({
		  type: "post",
          url: url+"/permission.action?methodName=menuTree",
          dataType: 'json',
          data:{rid:RoleId},//获取角色权限id去加载数据
          success: function (data) {
        	  tree.render({
  			    elem: '#test13'
  			    ,data: data//数据源
  			    ,isJump:true//否允许点击节点时弹出新窗口跳转
  			  ,spread:true//节点是否初始展开
  			    ,showLine: false  //是否开启连接线
  			  	,click: function (node) {//点击事件
                     var exist = $("li[lay-id='" + node.data.id + "']").length;//判断是不是用重复的选项卡
                    if (exist > 0) {
                        element.tabChange('tabs', node.data.id);// 切换到已有的选项卡
                    } else {
                        if (node.data.attributes.self.url != "") {// 判断是否需要新增选项卡
                           //新增选项卡
                        	element.tabAdd('tabs',
                                {
                                    title: node.data.title,//获取标题
                                    content: '<iframe scrolling="yes" frameborder="0" src="'+url+node.data.attributes.self.url+'"width="100%" height="100%"></iframe>'
                                    ,
                                    id: node.data.id
                                });
                              //跳转到指定的选项卡
                            element.tabChange('tabs', node.data.id);
                        }
                    }   
              }
  			  }); 
        	  debugger;
            }
	  }) 
}(); 

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

layui实现Tree组件前后端交互 的相关文章

  • layui中关于table表格reload后有缓存问题的解决办法

    问题描述 我在父窗口的table中的数据渲染方式不是异步请求后端 而是直接从后端加载数据 渲染到模板的时候直接渲染的 也就是下图中的data tableDatas 如下图 表格渲染 table render elem mytable tex
  • 会议OA项目之会议发布(多功能下拉框的详解)

    Welcome Huihui s Code World 接下来看看由辉辉所写的关于OA项目的相关操作吧 目录 Welcome Huihui s Code World 一 主要功能点介绍 二 效果展示 三 前端代码 jsp js 四 后端代码
  • layUI基本使用——布局

    layui特点 1 layui属于轻量级框架 简单美化 是用于开发后端模式 它在服务端页面上有非常好的效果 2 layui是提供给后端开发人员的ui框架 基于DOM驱动 layui的使用 引入layui的核心css文件 引入layui的he
  • layui笔记之树形结构

    div ul class easyui tree ul div div class easyui menu style width 120px div 添加 div div
  • Java项目:设计管理系统(java+SSM+JSP+MYSQL+layui+Maven)

    源码获取 博客首页 资源 里下载 一 项目简述 功能包括 课题管理 学生管理 内容管理 文件管理 提问管理 教师管理 进度管理等等 二 项目运行 环境配置 Jdk1 8 Tomcat8 5 mysql Eclispe IntelliJ ID
  • java毕业设计,基于layui+SSM实现母婴商场系统

    以下是我今年的论文加作品源码 感谢阅读 如需要源码学习 和本论文进行参考 可私聊我 如遇什么不懂的 我很乐意帮助你 让我们一起成长 目录 摘 要 ABSTRACT 1 绪论 1 1 研究背景 1 2 研究意义 1 3 国内外研究现状 2 开
  • layui的layer弹出层和form表单

    参考文献 含代码 http www shagua wiki project 3 p 113
  • 一款经典的ThinkPhp6开发的CMS内容管理系统

    项目介绍 一款 PHP 语言基于 ThinkPhp6 x Layui MySQL等框架精心打造的一款模块化 插件化 高性能的前后端分离架构敏捷开发框架 可用于快速搭建前后端分离后台管理系统 本着简化开发 提升开发效率的初衷 框架自研了一套个
  • LayUI之CRUD(增删改查)

    目录 前言 一 前端静态模板 二 用户管理后台代码 查看表 MySQL数据库 表结构 实体类 Dao方法 UserDao 查询 增加 删除 修改 测试后台dao方法 Junit UserDaoTest 查询 增加 修改 删除 web 三 用
  • ThinkPHP6.0 多应用模式 部署 Layuiadmin 单页版

    QQ 23426945 PHP技术群 159789818 个人技术博客 https www itqaq com TP6 0中的路由省略应用名只能用入口文件绑定应用 和 域名绑定应用 经过测试 最后得出域名绑定应用是最合适的部署方式 如果有更
  • Beego框架基本使用实践教程

    项目介绍 一款 Go 语言基于Beego Layui MySQL等框架精心打造的一款模块化 高性能 企业级的敏捷开发框架 本着简化开发 提升开发效率的初衷触发 框架自研了一套个性化的组件 实现了可插拔的组件式开发方式 单图上传 多图上传 下
  • 解决layui轮播图满屏是高度自适应的问题

    在做官网时 遇到轮播图的问题 本来自己写了个轮播图 怎奈有个问题 当我打开页面后去浏览其他页面 回来首页后会有图片会来回闪动 没有正确轮播 一直没有解决 后来看到了layui插件的轮播图 就拿过来用了 但是图片高度不会自适应 图片变形 如图
  • LayUi介绍&前言

    目录 1 什么是layui 2 layui easyui与bootstrap的对比 有趣的对比方式 嘿嘿嘿 easyui jquery html4 用来做后台的管理界面 半老徐娘 bootstrap jquery html5 美女 拜金 l
  • 使用layui/layuiAdmin的总结

    layui是一个前端UI框架 主要是配合JQuery使用 开始使用 首先是下载文件 然后引入css和js文件 引入之后就需要在
  • Layui框架的拖动上传 以及 时间选择器的基本使用

    上传用的layui的点击or拖动上传 其他上传也同理 不喜勿喷 欢迎补充 上代码 html div class layui form item style width 1 div
  • 使用layui 写一段动态向form表单添加select下拉框,带删除功能

    可以参考如下示例代码 实现动态向表单中添加和删除 select 下拉框 div class layui container div
  • 基于python+flask实现视频数据可视化

    项目概要 对视频的标题 播放量 弹幕量以及收藏量 视频分类等数据进行分析 通过flask项目中的python代码进行数据库连接进行前后端交互功能的实现 通过layui框架进行系统前端页面的功能实现 通过knn分类算法以及k均值聚类算法对爬取
  • layui与flask模板语言{{}}冲突的最佳方案

    使用 Jinja2的 raw 和 endraw 标签把 JavaScript 模板部分标记出来即可 raw endraw 但这是就需要注意区分项目中的 的值是jinja2还是layui
  • layui复选框按钮事件(智能去重刷新)

    1 写好复选框 lt input type checkbox value 0 name available title 智能去重 id available lay filter available gt 2 给复选框加事件 form on
  • layui表格table不分页,显示全部数据

    layui表格table不分页 显示全部数据 表格渲染时添加两行代码 page false limit Number MAX VALUE 数据表格默认全部显示 table render elem orderTable id orderTab

随机推荐

  • CGAL 入门基础

    目录 一 点和线段基础操作 1 概述 2 整型坐标 3 浮点型坐标 二 点序列的凸包 1 在数组Array中提取凸包点 2 在向量Vector中提取凸包点 三 关于kernel和Traits类 四 概念与模型 本文是提供给了解c 和几何算法
  • Windows下jdk的下载和安装详细步骤及解决javac无法使用的问题

    Windows下jdk的下载和安装详细步骤及解决javac无法使用的问题 一 简介 其实我最开始安装jdk是为了学习Java 而学习Java的初衷是为了开发安卓APP 但是当我接触多了之后 我才发现 Java和安卓APP是两码事 安卓原生A
  • 项目中如何修改element-ui的默认样式

    Vue项目中 通常我们在写样式的时候为了避免全局污染 我们会给当前组件的样式加上scoped 让当前的样式只作用域当前组件 但是在写项目的时候会发现一个问题 当我们需要在局部组件中修改第三方组件库样式 而又不想去除scoped属性造成的组件
  • 人工智能各领域跨界能手——Transformer

    导读 Transformer源自于AI自然语言处理任务 在计算机视觉领域 近年来Transformer逐渐替代CNN成为一个热门的研究方向 此外 Transformer在文本 语音 视频等多模态领域也在崭露头角 本文对Transformer
  • 如何用SD-WAN实现多地组网?

    SD WAN技术可以通过虚拟化和自动化的方式 实现多地点之间的网络互联 以下是如何使用SD WAN实现多地组网的步骤 部署SD WAN设备 在每个地点部署SD WAN设备 并将设备连接到各自的局域网中 设备可以是物理设备或虚拟设备 这取决于
  • 糊里糊涂进了微盟Java内招群,抱着试试的想法投了简历,没想到面试通过了

    不久前登录QQ的时候忽然发现自己进了微盟内招群 我一脸懵逼不知道什么时候进入的 在里面划水了一段时间 抱着试一试的心态就投了简历 昨天进行了一面二面 然后就 就通过了 我也挺惊讶的 等着三面吧 把面试经验分享给大家 希望我们都能成功 一面5
  • Elasticsearch出现field expansion matches too many fields异常

    7 4 2的集群里面执行query string 语句时 异常信息 报了 reason field expansion matches too many fields limit 1024 got 15448 表示子查询数量大于1024 对
  • Java中的迭代器Iterator接口详解

    Iterator对象称为迭代器 设计模式的一种 主要用于遍历 Collection 集合中的元素 迭代器模式的定义为 提供一种方法访问一个容器 container 对象中各个元 素 而又不需暴露该对象的内部细节 迭代器模式 就是为容器而生
  • k8s发布模板

    deployment apiVersion apps v1 kind Deployment metadata labels app datasource config name name datasource config name nam
  • 2020DCIC智慧海洋建设算法赛学习01-赛题北京及地理数据分析常用工具

    序 本系列的博客旨在学习2020DCIC智能算法赛 智慧海洋建设的优秀方案 对地理数据分析问题积累一些思路和经验 作为这一系列博客的开篇 这篇博客主要内容包括对赛题的解析和对项目中会用到的一些常用的地理数据分析工具的简要介绍 1 赛题背景
  • 想学C语言却不知道怎么如何下手?(最全c语言学习路径带你指明方向)

    C语言小白学习攻略 C语言入门 目标 就如同英语学习 需要学习单词 短语 长句 文章 最后口语练习 该阶段学习完成后 能够熟练掌握C常见关键字与数据类型 单词 掌握常见语法结构 短语 熟悉面向过程函数式编程 长句 达到能够读懂他人编写的C程
  • Unity Andriod调试

    一 查看手机运行日志 1 调试原理 https docs unity cn cn 2019 4 Manual LogFiles html 2 调试工具 Andriod LogCat 在Unity PackageManager中下载 3 调试
  • Matlab机器人工具箱机械手建模详解(同知乎)

    关于使用Matlab机器人工具箱建立机械手模型的一些经验分享给大家 使用软件版本为matlab2015a和rvctools9 8 matlab机械人工具箱下载地址 http petercorke com wordpress toolboxe
  • vue中的ref之间的通信

    vue文档对ref的官方解释是 ref 被用来给元素或子组件注册引用信息 引用信息将会注册在父组件的 refs 对象上 如果在普通的 DOM 元素上使用 引用指向的就是 DOM 元素 如果用在子组件上 引用就指向组件实例 p hello p
  • 从用户登录谈谈测试用例设计

    等价类划分和边界值分析方法是最常用 最典型并且是最重要的黑盒测试方法 一 功能测试用例 针对 用户登录 功能测试 基于等价类划分和边界值分析方法 能够设计的功能测试用例有 1 输入已注册的用户名和正确的密码 验证是否登录成功 2 输入已注册
  • 干货满满!MES生产制造管理全流程分析

    阅读本文您将了解 1 什么是MES生产管理流程 2 MES生产管理流程具体步骤 3 实施MES生产管理流程优势 4 MES生产管理流程中可能会遇见的问题 一 什么是MES生产管理流程 MES生产管理系统 又称制造执行系统 是一种集成了计划
  • C语言--库函数qsort排序

    文章目录 一 C语言 库函数qsort排序 1 1 冒泡排序 1 2 qsort排序 二 模拟实现qsort函数 一 C语言 库函数qsort排序 假设我们要对一个数组元素进行排序 如果是一个整型数组 我们首先可以想到的是冒泡排序 但其实C
  • 腾讯潘安群:腾讯云金融级数据库TDSQL分析

    SDCC 2015将于2015年11月19 21日在北京 朗丽姿西山花园酒店召开 在大会召开之际 笔者采访到了腾讯高级软件工程师潘安群 请他分享TDSQL在腾讯云金融领域的实践经验 SDCC 2015将于2015年11月19 21日在北京
  • python语法--文件基本操作(一)

    python语法 文件基本操作 文件基本操作 打开文件 open name mode encoding name 文件名 可以包括路径 mode 设置打开文件的模式 只读r 写入w 追加a等 encoding 编码格式 推荐utf 8 f
  • layui实现Tree组件前后端交互

    文章目录 前言 运行效果 Tree组件 1 Tree组件的加载方式 1 1选项卡 2 Tree组件的渲染格式 3 基础参数 4 数据源属性选项 后台代码实现 1 定义对应数据格式实体 2 数据转换 3 树结构存储的处理 角色处理 1 思路