`
gevin
  • 浏览: 40471 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用Nutz[1.b.38]对关联数据表的一对一/一对多操作

    博客分类:
  • Nutz
 
阅读更多

本文在上一篇《使用Nutz[1.b.38]对数据库表的CRUD操作》的基础上进行扩展,有兴趣的话可以先阅读一下。

 

在完成此demo的过程中,发现DAO中有某些需求目前还无法完成,文章末尾会提到,只能待灰太狼解决了。

 

好了,直接上教程,关于一些环境、数据源和dao对象、web.xml的配置,请移步上一篇查看。

 

 

进入主题:

 

一、此demo涉及两个表DepartmentInfo和UserInfo,SQL如下:

-- ----------------------------

-- Table structure for `departmentinfo`

-- ----------------------------

DROP TABLE IF EXISTS `departmentinfo`;

CREATE TABLE `departmentinfo` (

  `departmentInfoId` int(11) NOT NULL AUTO_INCREMENT,

  `departmentName` varchar(50) DEFAULT NULL,

  PRIMARY KEY (`departmentInfoId`)

) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of departmentinfo

-- ----------------------------

INSERT INTO `departmentinfo` VALUES ('1', 'IT部');

INSERT INTO `departmentinfo` VALUES ('2', '人力资源');

INSERT INTO `departmentinfo` VALUES ('3', '财务部');

INSERT INTO `departmentinfo` VALUES ('4', '市场部');

 

-- ----------------------------

-- Table structure for `userinfo`

-- ----------------------------

DROP TABLE IF EXISTS `userinfo`;

CREATE TABLE `userinfo` (

  `userInfoId` int(11) NOT NULL AUTO_INCREMENT,

  `trueName` varchar(20) DEFAULT NULL,

  `departmentInfoId` int(11) DEFAULT NULL,

  `addDate` datetime DEFAULT NULL,

  `addIp` varchar(15) DEFAULT NULL,

  PRIMARY KEY (`userInfoId`)

) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of userinfo

-- ----------------------------

INSERT INTO `userinfo` VALUES ('1', 'Gevin', '1', '2011-07-25 19:28:50', '127.0.0.1');

INSERT INTO `userinfo` VALUES ('2', 'Wendal', '1', '2011-07-25 19:29:07', '127.0.0.1');

INSERT INTO `userinfo` VALUES ('3', '小宝', '2', '2011-07-25 19:29:55', '127.0.0.1');

INSERT INTO `userinfo` VALUES ('4', '灰太狼', '3', '2011-07-25 19:30:11', '127.0.0.1');

INSERT INTO `userinfo` VALUES ('5', 'E-Hunter', '3', '2011-07-25 19:30:38', '127.0.0.1');

INSERT INTO `userinfo` VALUES ('8', 'k-wait', '4', '2011-07-26 15:54:01', '127.0.0.1');

 

 

二、结构图



 

二、Model类

DepartmentInfo.java

 

package demo.nutz.model;

import java.util.List;

import org.nutz.dao.entity.annotation.Id;
import org.nutz.dao.entity.annotation.Many;
import org.nutz.dao.entity.annotation.Table;

@Table("DepartmentInfo")
public class DepartmentInfo {

	@Id
	private Integer departmentInfoId;
	private String departmentName;

	// 一对多关联用户信息
	@Many(target = UserInfo.class, field = "departmentInfoId")
	private List<UserInfo> userInfoList;
	
	/*此处省略Getter和Setter*/

}

 

 

UserInfo.java类

 

package demo.nutz.model;

import java.util.Date;

import org.nutz.dao.entity.annotation.Id;
import org.nutz.dao.entity.annotation.One;
import org.nutz.dao.entity.annotation.Table;

@Table("UserInfo")
public class UserInfo {

	@Id
	private Integer userInfoId;
	private String trueName;
	private Integer departmentInfoId;
	private Date addDate;
	private String addIp;

	// 一对一关联部门信息
	@One(target = DepartmentInfo.class, field = "departmentInfoId")
	private DepartmentInfo departmentInfo;
	
	/*此处省略Getter和Setter*/

}

 

 

 

三、模块类

DepartmentInfoAction.java跟上一篇一样,没改动。这里主要讲一下UserInfoAction.java类。

 

package demo.nutz.action;

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

import javax.servlet.http.HttpServletRequest;

import org.nutz.dao.Cnd;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;

import demo.nutz.base.BaseAction;
import demo.nutz.model.DepartmentInfo;
import demo.nutz.model.UserInfo;
import demo.nutz.service.DepartmentInfoService;
import demo.nutz.service.UserInfoService;

/**
 * 用户信息模块
 * 
 * @author gevin(gevinhjy@foxmail.com)
 * 
 */
@IocBean
@At("/userinfo")
public class UserInfoAction extends BaseAction {

	@Inject		// 通过注解@Inject注入对象
	private DepartmentInfoService departmentInfoService;
	
	@Inject		// 通过注解@Inject注入对象
	private UserInfoService userInfoService;

	/**
	 * 跳转到添加页面
	 * 
	 * @return
	 */
	@At("/addUserInfo")
	@Ok("jsp:${obj.msg == null ? '/userinfo/addUserInfo' : '/userinfo/showMessage'}")		// 在@Ok中使用NutzEL表达式
	public Map<String, Object> addUserInfo() {
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			// 获取部门列表
			List<DepartmentInfo> diList = this.departmentInfoService.query(Cnd.orderBy().asc("departmentName"), null);
			map.put("departmentInfoList", diList);
			
			return success(map);
		} catch (Exception e) {
			e.printStackTrace();
			return failure(GET_FAILURE, map);
		}
	}

	/**
	 * 添加成功
	 * 
	 * @param ui
	 * @return
	 */
	@At("/addUserInfoOk")
	@Ok("jsp:/userinfo/showMessage")
	public Map<String, Object> addUserInfoOk(@Param("..") UserInfo ui, HttpServletRequest request) {
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			if (ui==null || ui.getDepartmentInfoId()==null)
				return failure(GET_FAILURE, map);
			
			// 获取部门信息
			DepartmentInfo di = this.departmentInfoService.fetch(ui.getDepartmentInfoId());
			if (di == null)
				return failure(GET_FAILURE, map);
			
			ui.setAddDate(new Date());
			ui.setAddIp(request.getRemoteAddr());
			
			// 添加成功
			if (this.userInfoService.dao().insert(ui) == null)
				return failure(ADD_FAILURE, map);

			return success(ADD_SUCCESS, map);
		} catch (Exception e) {
			e.printStackTrace();
			map.put("msg", "getFailure");
			return map;
		}
	}

	/**
	 * 跳转到修改页面
	 * 
	 * @param userInfoId
	 * @return
	 */
	@At("/editUserInfo")
	@Ok("jsp:${obj.msg == null ? '/userinfo/editUserInfo' : '/userinfo/showMessage'}")
	public Map<String, Object> editUserInfo(@Param("userInfoId") Integer userInfoId) {
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			if (userInfoId == null)
				return failure(GET_FAILURE, map);

			// 获取对象
			UserInfo ui = this.userInfoService.fetch(userInfoId);
			if (ui == null)
				return failure(GET_FAILURE, map);
			map.put("userInfo", ui);
			
			// 获取部门列表
			List<DepartmentInfo> diList = this.departmentInfoService.query(Cnd.orderBy().asc("departmentName"), null);
			map.put("departmentInfoList", diList);
			
			return success(map);
		} catch (Exception e) {
			e.printStackTrace();
			return failure(GET_FAILURE, map);
		}
	}

	/**
	 * 修改成功
	 * 
	 * @param ui
	 * @return
	 */
	@At("/editUserInfoOk")
	@Ok("jsp:/userinfo/showMessage")
	public Map<String, Object> editUserInfoOk(@Param("..") UserInfo ui) {
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			if (ui == null)
				return failure(GET_FAILURE, map);

			// 获取原有对象
			UserInfo uiOld = this.userInfoService.fetch(ui.getUserInfoId());
			if (uiOld == null)
				return failure(GET_FAILURE, map);
			
			// 设置原对象信息
			ui.setAddDate(uiOld.getAddDate());
			ui.setAddIp(uiOld.getAddIp());
			
			// 修改对象
			if (this.userInfoService.dao().update(ui) == 0)
				return failure(EDIT_FAILURE, map);

			return success(EDIT_SUCCESS, map);
		} catch (Exception e) {
			e.printStackTrace();
			return failure(GET_FAILURE, map);
		}
	}

	/**
	 * 删除成功
	 * 
	 * @param ui
	 * @param request
	 * @return
	 */
	@At("/delUserInfoOk")
	@Ok("jsp:/userinfo/showMessage")
	public Map<String, Object> delUserInfoOk(@Param("..") UserInfo ui, HttpServletRequest request) {
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			if (ui == null)
				return failure(GET_FAILURE, map);

			// 删除对象
			if (this.userInfoService.dao().delete(ui) == 0)
				return failure(DEL_FAILURE, map);

			return success(DEL_SUCCESS, map);
		} catch (Exception e) {
			e.printStackTrace();
			return failure(GET_FAILURE, map);
		}
	}

	/**
	 * 显示列表[主要用来体现一对一的关系]
	 * 
	 * @return
	 */
	@At("/showUserInfoList")
	@Ok("jsp:/userinfo/showUserInfoList")
	public Map<String, Object> showUserInfoList() {
		Map<String, Object> map = new HashMap<String, Object>();
		List<UserInfo> okList = new ArrayList<UserInfo>();	// 存放已关联部门信息对象的用户列表
		try {
			// 获取用户列表
			List<UserInfo> uiList = this.userInfoService.query(Cnd.orderBy().asc("departmentInfoId"), null);
			
			// 循环设置关联部门信息
			for (UserInfo ui : uiList) {
				this.userInfoService.dao().fetchLinks(ui, "departmentInfo");
				okList.add(ui);
			}
			map.put("userInfoList", okList);
			return success(map);
		} catch (Exception e) {
			e.printStackTrace();
			return failure(GET_FAILURE, map);
		}
	}
	
	/**
	 * 显示列表[主要用来体现一对多的关系]
	 * 
	 * @return
	 */
	@At("/showUserInfoList2")
	@Ok("jsp:/userinfo/showUserInfoList2")
	public Map<String, Object> showUserInfoList2() {
		Map<String, Object> map = new HashMap<String, Object>();
		List<DepartmentInfo> okList = new ArrayList<DepartmentInfo>();	// 定义存放已关联人员信息的部门列表
		try {
			// 获取部门列表
			List<DepartmentInfo> diList = this.departmentInfoService.query(Cnd.orderBy().asc("departmentInfoId"), null);
			
			// 循环设置关联人员信息
			for (DepartmentInfo di : diList) {
				this.departmentInfoService.dao().fetchLinks(di, "userInfoList");
				okList.add(di);
			}
			map.put("departmentInfoList", okList);
			return success(map);
		} catch (Exception e) {
			e.printStackTrace();
			return failure(GET_FAILURE, map);
		}
	}

}

由于Nutz没有提供像Hibernate中的是否延迟加载关联对象的功能,若想获取关联对象的数据,需手工用代码获取。

如UserInfoAction.java中showUserInfoList()方法:

必须先获取到用户列表后,再循环该用户列表,获取用户所属的部门的对象,再将数据设置回UserInfo中。

 

又如showUserInfoList2()方法:

必须先获取到部门列表,再根据departmentInfoId获取该部门的用户列表,再设置到departmentInfo.userInfoList属性中。

 

 

四、JSP文件

showUserInfoList.jsp:体现一对一的关系

 

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ include file="../include/taglibs.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>员工信息列表</title>
<link href="../css/web.css" rel="stylesheet" type="text/css" />
</head>

<body>
<br />
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td height="35"><label>
      <input type="button" name="add" id="add" value="添加员工信息" onclick="window.location='addUserInfo.shtml'" />
     <input type="button" name="add" id="add" value="部门信息管理" onclick="window.location='../departmentinfo/showDepartmentInfoList.shtml'" />
    </label></td>
  </tr>
</table>
<table width="500" border="0" align="center" cellpadding="1" cellspacing="1" class="TableOut">
  <tr>
    <td height="30" colspan="4" align="center" class="TableTop">员工信息列表</td>
  </tr>
  <tr class="TableInWhite">
    <td width="68" height="30" align="center">序号</td>
    <td width="167" align="center">部门</td>
    <td width="130" align="center">姓名</td>
    <td width="122" align="center">操作</td>
  </tr>
  <c:forEach var = "ui" items = "${obj.userInfoList}" varStatus="status">
  <tr class="TableInWhite">
    <td height="30" align="center"><c:out value="${status.count}" /></td>
    <td align="center"><c:out value="${ui.departmentInfo.departmentName}" /></td>
    <td align="center"><c:out value="${ui.trueName}" /></td>
    <td align="center">[<a href="editUserInfo.shtml?userInfoId=${ui.userInfoId}">修改</a>]&nbsp;&nbsp;[<a href="delUserInfoOk.shtml?userInfoId=${ui.userInfoId}" onclick="return confirm('是否真的要删除此员工?')">删除</a>]</td>
  </tr>
  </c:forEach>
</table>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td height="45">此列表主要体现一对一的关系,其中获取部门的代码是{ui.departmentInfo.departmentName}<br />
      若想了解一对多的关系,可以查看另外一种显示方式:<a href="showUserInfoList2.shtml" style="color:#F00">员工信息列表[一对多]</a></td>
  </tr>
</table>
</body>
</html>

其中获取部门名称的代码是${ui.departmentInfo.departmentName}

 

 

 

showUserInfoList2.jsp:体现一对多的关系

 

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ include file="../include/taglibs.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>员工信息列表</title>
<link href="../css/web.css" rel="stylesheet" type="text/css" />
</head>

<body>
<br />
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td height="35"><label>
      <input type="button" name="add" id="add" value="添加员工信息" onclick="window.location='addUserInfo.shtml'" />
     <input type="button" name="add" id="add" value="部门信息管理" onclick="window.location='../departmentinfo/showDepartmentInfoList.shtml'" />
    </label></td>
  </tr>
</table>
<table width="500" border="0" align="center" cellpadding="1" cellspacing="1" class="TableOut">
  <tr>
    <td height="30" align="center" class="TableTop">员工信息列表</td>
  </tr>
  <c:forEach var = "di" items = "${obj.departmentInfoList}" varStatus="status">
  <tr class="TableInWhite">
    <td height="30" align="left"><span style="font-weight:bold"><c:out value="${di.departmentName}" /></span></td>
  </tr>
  <tr class="TableInWhite">
    <td height="30" align="left" style="padding-left:10px;">
    <c:forEach var = "ui" items = "${di.userInfoList}" varStatus="status">
    <c:out value="${ui.trueName}" />&nbsp;&nbsp;
    </c:forEach>
    </td>
    </tr>
  </c:forEach>
</table>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td height="45">此列表主要体现一对多的关系,其中获取人员列表的代码是{di.userInfoList}<br />
      若想了解一对一的关系,可以查看另外一种显示方式:<a href="showUserInfoList.shtml" style="color:#F00">员工信息列表[一对一]</a></td>
  </tr>
</table>
</body>
</html>

 其中使用

 

 <c:forEach var = "ui" items = "${di.userInfoList}" varStatus="status">
    <c:out value="${ui.trueName}" />&nbsp;&nbsp;
    </c:forEach>

 

来循环列出该部门的所有用户。

 

 

五、重启Tomcat,访问以下地址:

http://127.0.0.1:204/UserManageSystem/userinfo/showUserInfoList.shtml

 

 

效果图如下:

showUserInfoList.jsp

 

 

 

showUserInfoList2.jsp

----------------------------------------------------------------------------------------------------------------------

 

 

OK,第二篇教程搞定了。希望对大家有用。

 

在此demo中,发现了dao中有一个问题目前还没有解决,即Nutz中关联查询的排序问题,假如我在查询用户列表时,无法通过departmentInfo.departmentName字段来排序,即无法使用以下代码获取:

List<UserInfo> uiList = this.userInfoService.query(Cnd.orderBy().asc("departmentInfo.departmentName"), null);

 

此需求已提交给灰太狼,待解决。

 

目前要解决此问题,可以不使用对象关联,而是通过Nutz提供的视图来解决。

 

Nutz中提供的视图功能还是蛮给力的!只不过后期维护的时候,如增加字段、删除字段,要记得更新视图才行。

 

关于Nutz如何使用视图,会在下一篇《在Nutz[1.b.38]中使用视图对关联数据表的操作》讲到。

 

好了,最后把源代码奉上!!!

 

 

 

  • 大小: 43.7 KB
  • 大小: 30.5 KB
  • 大小: 50.2 KB
  • 大小: 40.2 KB
分享到:
评论
2 楼 gevin 2011-12-22  
kaywood 写道
员工信息列表界面,要使用部门名称来模糊查询,并且需要分页,用NUTZ该怎么做?

已跟Nutz管理员沟通过,他表示暂时不打算让Nutz支持关联对象的属性查询或排序。目前要解决此问题,可以通过视图来解决。可参考在Nutz[1.b.38]中使用视图对关联数据表的操作
1 楼 kaywood 2011-11-21  
员工信息列表界面,要使用部门名称来模糊查询,并且需要分页,用NUTZ该怎么做?

相关推荐

    满意度调查行·知dr.pptx

    满意度调查行·知dr.pptx

    基于B2C的网上拍卖系统_秒杀与竞价.zip

    基于B2C的网上拍卖系统主要用于帮助人们应用互联网方便快捷买到自己所中意的商品,并参与到秒杀与竞拍当中。 主要功能包括: 1.前台模块 (1)普通用户登录/注册。 (2)分类查看商品(普通商品与促销商品) (3)查看商品详细信息 (4)查看秒杀商品 (5)查看竞拍商品 (6)将商品加入购物车 (7)购买,结算功能 (8)留言 2.后台模块 (1)修改密码 (2)商品管理: -- 编辑/删除 -- 设置/取消促销 (3)秒杀商品:设置/取消秒杀 (4)竞拍商品:设置/取消竞拍 (5)订单管理:查看订单 (5)留言管理:查看/删除留言 项目访问路径: 前台:http://localhost:8080/sale 后台:http://localhost:8080/sale/user/adminlogin

    分布式系统中Java后端开发技术及其应用实践.pdf

    分布式系统的核心思想是复杂计算任务的拆分与并行计算,可有效减少计算时间、节约算力成本。以分布式系统中Java后端开发技术的应用为主题,分析分布式系统开发的需求,探讨Java技术栈、分布式监控与日志管理、云服务模型在分布式系统Java后端开发中的应用路径,旨在为分布式系统的设计与实现提供全面的理论分析和实践指导,以支持构建高效、稳定、可扩展的企业级Java应用。 随着云计算、大数据和人工智能技术的飞速发展, 分布式系统已成为支撑现代企业信息系统的基础架构。 Java 后端开发技术在构建分布式系统中扮演着至关重要的 角色,其应用价值和研究重点主要集中在微服务架构、容 器化技术、自动化部署、服务网格、无服务器计算、应用 程序编程接口(Application Programming Interface, API)管理、数据一致性解决方案、分布式缓存、负载均衡、 复杂事件处理和分布式事务管理等方面[1]。Java平台以 其成熟的生态系统、跨平台的移植性、丰富的开源框架 和库以及稳定的性能,为分布式系统的开发提供了坚实 的基础[2]。深入探讨Java后端开发技术在分布式系统中 的应用实践,旨在为企

    【微信小程序毕业设计】书店系统开发项目(源码+演示视频+说明).rar

    【微信小程序毕业设计】书店系统开发项目(源码+演示视频+说明).rar 【项目技术】 微信小程序开发工具+java后端+mysql 【演示视频-编号:246】 https://pan.quark.cn/s/cb634e7c02b5 【实现功能】 用户信息管理,图书信息管理,图书类型管理,图书留言管理,论坛信息管理等

    使用Spring in Guice和Guice in Spring的工具(高分项目).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、高效的企业级应用。 1. Spring框架:Spring是一个轻量级的Java开发框架,提供了丰富的功能和模块,用于开发企业级应用。它包括IoC(Inverse of Control,控制反转)容器、AOP(Aspect-Oriented Programming,面向切面编程)等特性,可以简化开发过程、提高代码的可维护性和可测试性。 2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、渲染视图和管理流程的功能。 3. MyBatis框架:MyBatis是一个持久层框架,用于与数据库进行交互。它提供了一种将数据库操作与Java对象映射起来的方式,避免了手动编写繁琐的SQL语句,并提供了事务管理和缓存等功能,简化了数据库访问的过程

    小程序-61-微信小程序的学生选课系统--LW-源码.zip

    提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

    【前端素材】大数据-010电商物流.zip

    大数据技术指的是用于处理和分析大规模数据集的技术和工具。以下是一些常见的大数据技术和工具: Hadoop:Apache Hadoop是一个用于分布式存储和处理大规模数据的开源框架。它包括Hadoop Distributed File System(HDFS)用于数据存储和MapReduce用于数据处理。 Spark:Apache Spark是一个快速、通用的集群计算系统,提供了比MapReduce更快的数据处理能力。它支持内存计算和更多复杂的数据处理流程。 NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。 机器学习:大数据技术也广泛应用于机器学习领域,支持大规模数据的模型训练和预测分析。 流式处理:针对实时数据处理需求,流式处理技术(如Apache Kafka、Apache Flink)可以实时。

    微信小程序源码 拼音查询小程序 (源码下载 +内附使用说明)

    **微信小程序源码 —— 拼音查询小程序:轻松掌握汉字发音** 对于语言学习者和教育工作者来说,一个实用的拼音查询工具是不可或缺的。我们特别推出了一款微信小程序源码 —— 拼音查询小程序,它能够帮助用户快速查找汉字的拼音和声调,是学习和教学的好帮手。 **核心功能**: - **汉字转拼音**:输入汉字,即可获取准确的拼音和声调。 - **智能搜索**:支持模糊匹配,快速定位用户查询的汉字。 - **多音字识别**:为多音字提供所有正确的拼音选项,方便用户选择。 **源码特点**: - **易于集成**:源码下载后,可以轻松集成到您的微信小程序项目中。 - **高度可定制**:源码开放,允许开发者根据需求进行定制和功能扩展。 - **详细文档**:内附的使用说明文档,帮助您快速理解如何使用和修改源码。 **应用场景**: - **语言学习**:适合汉语学习者练习和纠正汉字发音。 - **教学辅助**:教师可以用于课堂教学,帮助学生掌握正确的拼音。 - **自主学习**:个人用户可以自主查找生僻字或多音字的准确拼音。

    毕业设计-使用 Github Actions 跟踪 Github 趋势项目.zip

    这里为你收集整理了关于毕业设计、课程设计可参考借鉴的资料一份,质量非常高,如果你投入时间去研究几天相信肯定对你有很大的帮助。到时候你会回来感谢我的。 本资源是经过本地编译测试、可打开、可运行的项目、文件或源码,可以用于毕业设计、课程设计的应用、参考和学习需求,请放心下载。 祝愿你在这个毕业设计项目中取得巨大进步,顺利毕业! 但还需强调一下,这些项目源码仅供学习和研究之用。在使用这些资源时,请务必遵守学术诚信原则和相关法律法规,不得将其用于任何商业目的或侵犯他人权益的行为。对于任何因使用本资源而导致的问题,包括但不限于数据丢失、系统崩溃或安全漏洞,风险自担哦!

    【前端素材】大数据-突发预警平台实时监控.zip

    大数据技术指的是用于处理和分析大规模数据集的技术和工具。以下是一些常见的大数据技术和工具: Hadoop:Apache Hadoop是一个用于分布式存储和处理大规模数据的开源框架。它包括Hadoop Distributed File System(HDFS)用于数据存储和MapReduce用于数据处理。 Spark:Apache Spark是一个快速、通用的集群计算系统,提供了比MapReduce更快的数据处理能力。它支持内存计算和更多复杂的数据处理流程。 NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。 机器学习:大数据技术也广泛应用于机器学习领域,支持大规模数据的模型训练和预测分析。 流式处理:针对实时数据处理需求,流式处理技术(如Apache Kafka、Apache Flink)可以实时。

    小程序-46-驾校报名小程序--LW-源码.zip

    提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

    基于STM32的Holocubic透明桌面站

    基于STM32的Holocubic透明桌面站 基于STM32的Holocubic透明桌面站

    015ssm-jsp-mysql文物管理系统.zip(可运行源码+数据库文件+文档)

    L文主要是对文物管理系统进行了介绍,包括研究的现状,还有涉及的开发背景,然后还对系统的设计目标进行了论述,还有系统的需求,以及整个的设计方案,对系统的设计以及实现,也都论述的比较细致,最后对文物管理系统进行了一些具体测试。 本文以JSP为开发技术,实现了一个文物管理系统。文物管理系统的主要使用者分为管理员;个人中心、用户管理、文物分类管理、文物信息管理、文物外借管理、文物维修管理、留言板管理、论坛交流、系统管理,用户前台;首页、文物信息、论坛交流、文物资讯、留言反馈、我的、跳转到后台等功能。通过这些功能模块的设计,基本上实现了整个文物管理系统的过程。 具体在系统设计上,采用了B/S的结构,同时,也使用JSP技术在动态页面上进行了设计,后台上采用Mysql数据库,是一个非常优秀的文物管理系统。 关键词 :文物管理系统;JSP技术;Mysql数据库;B/S结构

    【微信小程序毕业设计】课程答疑系统开发项目(源码+演示视频+说明).rar

    【微信小程序毕业设计】课程答疑系统开发项目(源码+演示视频+说明).rar 【项目技术】 微信小程序开发工具+java后端+mysql 【演示视频-编号:161】 https://pan.quark.cn/s/cb634e7c02b5 【实现功能】 本课程答疑微信小程序设计与实现有管理员,教师,学生。管理员功能有个人中心,学生管理,教师管理,课程类型管理,课程视频管理,作业信息管理,作业提交管理,提问信息管理,提问回答管理,系统管理等。教师可以发布课程,发布作业,学生可以提交作业,查看课程等。

    node-v12.22.12-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于python的-4-宾馆管理系统--LW-源码.zip

    提供的源码资源涵盖了python应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

    算法中的动态规划讲义.pptx

    数学模型算法

    AI设计工具-LOOKA:AI在线设计LOGO.txt

    AI设计工具-LOOKA:AI在线设计LOGO

    【前端素材】大数据-酒机运行状态.zip

    大数据技术指的是用于处理和分析大规模数据集的技术和工具。以下是一些常见的大数据技术和工具: Hadoop:Apache Hadoop是一个用于分布式存储和处理大规模数据的开源框架。它包括Hadoop Distributed File System(HDFS)用于数据存储和MapReduce用于数据处理。 Spark:Apache Spark是一个快速、通用的集群计算系统,提供了比MapReduce更快的数据处理能力。它支持内存计算和更多复杂的数据处理流程。 NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。 机器学习:大数据技术也广泛应用于机器学习领域,支持大规模数据的模型训练和预测分析。 流式处理:针对实时数据处理需求,流式处理技术(如Apache Kafka、Apache Flink)可以实时。

    机械设计显示屏玻璃激光切割机sw18可编辑非常好的设计图纸100%好用.zip

    机械设计显示屏玻璃激光切割机sw18可编辑非常好的设计图纸100%好用.zip

Global site tag (gtag.js) - Google Analytics