基于SSM框架权限系统的开发

基于SSM框架的考勤签到请假系统 项目主要基于java+spring+springmvc+mybatis+mysql实现了一个员工考勤系统, 分为三个角色, 分为如下功能员工用户: 能够查看个人信息, 查找个人信息, 并实时点击签到, 能够填写表单进行请假申请, 之后经理通过后即表示请假通过 经理角色: 经理角色能够查看整个部门的考勤记录, 并查询部门的员工请假审批, 之后可以选择通过或者不通过 管理员角色: 管理员角色能够进行所有的员工信息录入管理 包含姓名性别职位的修改删除, 以及能够查询所有的考勤统计与请假统计。 阅读详情
有bug请在评论区留言


这是个十分简单的权限实现,后端采用SSM框架,前段展示层使用ztree(ztree官网),实现控制则使用jsp自定义的判断标签;

第一步:新建power数据库。

用户表user,权利表power,用户-权利关系表userPower,

/*
Navicat MySQL Data Transfer

Source Server         : 123
Source Server Version : 50610
Source Host           : 127.0.0.1:3306
Source Database       : power

Target Server Type    : MYSQL
Target Server Version : 50610
File Encoding         : 65001

Date: 2018-01-15 21:07:24
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for power
-- ----------------------------
DROP TABLE IF EXISTS `power`;
CREATE TABLE `power` (
  `pId` int(4) NOT NULL AUTO_INCREMENT,
  `pName` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`pId`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of power
-- ----------------------------
INSERT INTO `power` VALUES ('1', '吃');
INSERT INTO `power` VALUES ('2', '吃饭');
INSERT INTO `power` VALUES ('3', '吃面条');
INSERT INTO `power` VALUES ('4', '吃零食');
INSERT INTO `power` VALUES ('5', '喝');
INSERT INTO `power` VALUES ('6', '喝芬达');
INSERT INTO `power` VALUES ('7', '喝可乐');
INSERT INTO `power` VALUES ('8', '嘴');
INSERT INTO `power` VALUES ('9', '说话');
INSERT INTO `power` VALUES ('10', '喷人');

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `uId` int(4) NOT NULL AUTO_INCREMENT,
  `uName` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`uId`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'admin');
INSERT INTO `user` VALUES ('2', 'tom');
INSERT INTO `user` VALUES ('3', 'jack');

-- ----------------------------
-- Table structure for userpower
-- ----------------------------
DROP TABLE IF EXISTS `userpower`;
CREATE TABLE `userpower` (
  `uPId` int(4) NOT NULL AUTO_INCREMENT,
  `uPUId` int(11) DEFAULT NULL,
  `uPPId` int(11) DEFAULT NULL,
  PRIMARY KEY (`uPId`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of userpower
-- ----------------------------
INSERT INTO `userpower` VALUES ('1', '1', '1');
INSERT INTO `userpower` VALUES ('12', '2', '1');
INSERT INTO `userpower` VALUES ('13', '2', '2');
INSERT INTO `userpower` VALUES ('14', '2', '3');
INSERT INTO `userpower` VALUES ('15', '2', '4');
INSERT INTO `userpower` VALUES ('16', '2', '5');


数据库完成,开始web部分

第二步:新建maven项目

添加项目相关jar包,这是项目的架构,biaoqian包是存放jsp自定义标签的处理类


代码贴出关键部分

controller层代码:

package cn.controller;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONArray;

import cn.pojo.Power;
import cn.pojo.User;
import cn.pojo.UserPower;
import cn.service.UserPowerService;
import cn.service.UserService;

@Controller
@RequestMapping("power")
public class PowerController {

	@Resource
	private UserService userService;

	@Resource
	private UserPowerService userPowerService;

	/**
	 * 登录
	 * 
	 * @param request
	 * @param u
	 * @param model
	 * @return
	 */
	@RequestMapping("login")
	public String login(HttpServletRequest request, User u, Model model) {
		User user = userService.login(u);
		if (user == null) {
			return "redirect:/login.jsp";
		}
		HttpSession session = request.getSession();
		session.setAttribute("USER_LOGIN", user);
		if (user.getuName().equals("admin")) {
			List<User> list_user = userService.getAllUser();
			session.setAttribute("list_user", list_user);
			return "admin";
		}
		return "welcome";
	}

	/**
	 * 异步方法,根据uid获取相应权限list
	 * 
	 * @param uId
	 * @return
	 */
	@RequestMapping("getPowerByUId")
	@ResponseBody
	public String getPowerByUId(@RequestParam("uId") String uId) {
		List<UserPower> i = userPowerService.getPowerByUId(Integer.parseInt(uId));
		return JSONArray.toJSONString(i);
	}

	@RequestMapping("updatePower")
	public String updatePower(@RequestParam("uId") String uId, @RequestParam("pow") String pow) {
		userPowerService.deletePower(Integer.parseInt(uId));// 增加前先删除具有的权限
		String[] p = pow.split(",");
		UserPower up = new UserPower();
		for (String power : p) {
			if (power.length() > 0) {
				up.setuPUId(Integer.parseInt(uId));
				up.setuPPId(Integer.parseInt(power));
				userPowerService.addPower(up);// 增加权限
			}
		}
		return "admin";
	}
}
两个service的方法:

package cn.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.pojo.UserPower;

public interface UserPowerService {
	// 根据uid查出具有的权限
	List<UserPower> getPowerByUId(Integer uId);

	// 增加权限
	int addPower(UserPower userPower);

	// 删除权限
	int deletePower(Integer uId);
}






package cn.service;

import java.util.List;

import cn.pojo.User;

public interface UserService {
	// 登录
	User login(User u);

	// 获得所有用户
	List<User> getAllUser();
}

jsp页面有3个,login.jsp   welcome.jsp    admin.jsp,这里的login.jsp就不用说了吧,一个输入框输入姓名后,去数据库查是否存在这个人,很简单;

welcome.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="/WEB-INF/powertag.tld"  prefix="yu" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'welcome.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  我是${USER_LOGIN.uName },<br/>
  我具有:<hr/>
  <p style="color:red;">
  <yu:power power="吃">吃,<br/></yu:power>
  <yu:power power="吃饭">吃饭,<br/></yu:power>
  <yu:power power="吃面条">吃面条,<br/></yu:power>
  <yu:power power="吃零食">吃零食,<br/></yu:power>
  <yu:power power="喝">喝,<br/></yu:power>
  <yu:power power="喝芬达">喝芬达,<br/></yu:power>
  <yu:power power="喝可乐">喝可乐,<br/></yu:power>
  <yu:power power="嘴">嘴,<br/></yu:power>
  <yu:power power="说话">说话,<br/></yu:power>
  <yu:power power="喷人">喷人,<br/></yu:power>
  </p>
  <hr/>
   功能的
  </body>
</html>

admin.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'admin.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

</head>

<body>
	<p>你想修改谁的权限:</p>
	<c:forEach var="list_user" items="${list_user }">
		<c:if test="${list_user.uName!='admin' }">
			<input type="radio" name="uName" value="${list_user.uId }" />${list_user.uName }
  	</c:if>
	</c:forEach>

	<div id="ztree" style="display:none;">
		<ul id="baseTree" class="ztree" style="width:260px; overflow:auto;"></ul>
		<button id="btn">提交</button>
	</div>
</body>
</html>
<link rel="stylesheet" type="text/css"
	href="ztree/css/zTreeStyle/zTreeStyle.css">
<script type="text/javascript" src="js/jquery-1.8.0.js"></script>
<script type="text/javascript" src="ztree/jquery.ztree.all-3.5.js"></script>
<script>
	//$("input[name=uName]:checked")
	//显示已有权限
	$("input[name=uName]").click(function() {
		var uId = $("input[name=uName]:checked").val();
		$("#ztree").css("display", "block")
		var treeObj = $.fn.zTree.getZTreeObj("baseTree");
		treeObj.checkAllNodes(false); //所有节点取消选中
		treeObj.expandAll(false); //所有节点关闭
		$.post("power/getPowerByUId?uId=" + uId, function(data) {
			var v = JSON.parse(data);
			for (var i = 0; i < v.length; i++) {
				var node = treeObj.getNodeByParam("value", v[i].uPPId, null);
				treeObj.expandNode(node, true, false); //指定选中ID节点展开
				treeObj.checkNode(node); //指定节点选中
			}
		}, "text")
	})

	//修改权限
	$("#btn").click(function() {
		var pow = "";
		var uId = $("input[name=uName]:checked").val()
		var treeObj = $.fn.zTree.getZTreeObj("baseTree");
		var nodes = treeObj.getCheckedNodes(true);
		for (var i = 0; i < nodes.length; i++) {
			pow = pow + "," + nodes[i].value;
		}
		location.href = "power/updatePower?uId="+uId+"&pow="+pow;
	})
	//设置ztree
	var setting = {
		check : {
			chkboxType : {
				"Y" : "ps",
				"N" : "s"
			}, //勾选checkbox对于父子节点的关联关系,取消勾选时不关联父  
			chkStyle : "checkbox",
			enable : true //是否复选框  
		},
		data : {
			simpleData : {
				enable : true
			}
		}
	};
	var zNodes = [ {
		id : 1,
		name : "吃",
		value : "1"
	}, {
		id : 11,
		pId : 1,
		name : "吃饭",
		value : "2"
	}, {
		id : 12,
		pId : 1,
		name : "吃面条",
		value : "3"
	}, {
		id : 13,
		pId : 1,
		name : "吃零食",
		value : "4"
	}, {
		id : 2,
		name : "喝",
		value : "5"
	}, {
		id : 21,
		pId : 2,
		name : "喝芬达",
		value : "6"
	}, {
		id : 21,
		pId : 2,
		name : "喝可乐",
		value : "7"
	}, {
		id : 3,
		name : "嘴",
		value : "8"
	}, {
		id : 31,
		pId : 3,
		name : "说话",
		value : "9"
	}, {
		id : 32,
		pId : 3,
		name : "喷人",
		value : "10"
	}
	]
	$.fn.zTree.init($("#baseTree"), setting, zNodes);
</script>
请注意welcome.jsp中 <%@ taglib uri="/WEB-INF/powertag.tld"  prefix="yu" %> 这段代码,这是自定义标签的引用。

下面开始自定义一个jsp判断标签,简单的哦

jsp标签创建分3步,先创建处理类,在编写tid文件,最后引用。

处理类:

package cn.biaoqian;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.TagSupport;

import cn.pojo.Power;
import cn.pojo.User;


/**
 * @author Yu
 *
 */
public class Yu extends TagSupport {


	private PageContext pageContext;

	private String power;

	// 设置PageContext对象
	public void setPageContext(PageContext pageContext) {
		this.pageContext = pageContext;
	}

	public void setPower(String power) {
		this.power = power;
	}

	/**
	 * 标签开始处理..调用的方法
	 * 
	 */
	@Override
	public int doStartTag() throws JspException {
		try {
			HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
			HttpSession session = request.getSession();
			User u = (User) session.getAttribute("USER_LOGIN");
			System.out.println(u);
			List<Power> power = u.getPower();
			for (int i = 0; i < power.size(); i++) {
				if (power.get(i).getpName().equals(this.power)) {
					// 允许访问标签body
					return BodyTagSupport.EVAL_BODY_INCLUDE;// 返回此则执行标签body中内容,SKIP_BODY则不执行
				}
			}
			return BodyTagSupport.SKIP_BODY;
		} catch (Exception e) {
			return BodyTagSupport.SKIP_BODY;
		}
	}

	/**
	 * 
	 * 标签处理结束的调用的方法
	 */
	@Override
	public int doEndTag() throws JspException {
		return super.doEndTag();
	}

	/**
	 * 
	 * 释放资源
	 */
	@Override
	public void release() {
		super.release();
	}

}
powertag.tid文件,注意这个文件位置在WEB-INF目录下,与web.xml同级别:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<!-- 标签描述TLD文件 -->

<taglib>
    <tlib-version>1.1</tlib-version>
    <jsp-version>1.2</jsp-version>
    
    <!-- 默认前缀名 -->
    <short-name>yu</short-name>
    
    <uri>http://www.mytaglib.com/taglib</uri> 
    <display-name>MyDateTaglib</display-name>
    <description>My date taglib!</description>  
      
    <tag>
        <name>power</name>
        <tag-class>cn.biaoqian.Yu</tag-class>
        
        <attribute>
            <name>power</name>
            <!-- 属性是否必须 -->
            <required>true</required>
            <!-- 属性是否支持小脚本 EL表达式 -->
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        
    </tag>
    
</taglib>

最后在需要引用的界面引用

<%@ taglib uri="/WEB-INF/powertag.tld"  prefix="yu" %>

普通成员效果图:


admin效果图:


代码完成!

结束语:给与没有权限设计思路小伙伴的一个方法,仅作为案例(样式什么的随便啦)。

转载请注明出处!


基于SSM框架的权限控制Demo实战项目 在Spring Boot出现之前,传统SSM项目需手动配置大量XML。如今通过继承(注意:Spring Security 5.7+已弃用,建议使用新风格,但兼容旧项目仍广泛存在),可完全以Java Config方式定义安全规则。为了支持细粒度权限控制,需在认证阶段加载用户的完整权限码集合:@Override此时权限码如可直接用于,无需依赖角色前缀。在现代前后端分离架构中,前端常需根据用户权限动态渲染操作按钮(如“删除”、“审核”)。 阅读详情

相关推荐

SSM框架下的前后端分离项目数据库设计与实践

SSM框架指的是Spring、SpringMVC和MyBatis的整合框架,它基于Java语言,广泛应用于Java EE开发中。这个框架组合充分利用了Spring的依赖注入、事务管理等特性,SpringMVC的MVC架构模式以及MyBatis的半自动ORM映射机制。

weixin_31715353的博客 1102

SSM框架的用户权限功能

权限的用途 使用springSecurity控制用户的权限可以完成两方面的功能。 1.认证:可以根据输入的用户名和密码进行用户身份认证,如果用户名和密码都正确,则认证用户存在,登录成功。 2.授权:从数据库里查找登录成功用户的角色,判断用户应具有的权限,当用户进行操作时,根据用户角色判断是否允许用户进行操作。 使用SSM框架完成权限功能的步骤 1.首先要在pom.xml文件中添加代码,导入jar包...

sinat_41655809的博客 1579

SSM框架权限管理系统的开发实践

本文还有配套的精品资源,点击获取 简介:基于SSM(Spring、Spring MVC和Mybatis)框架开发的权限管理系统是一个Java Web应用程序,适用于企业级应用开发。系统设计包括用户、角色和权限管理,并使用Spring的依赖注入和面向切面编程、Spring MVC的MVC架构、以及Mybatis的轻量级持久层操作。此外,系统利用jQuery提升前端交互体验,以...

weixin_35987118的博客 2501

基于SSM框架的通用权限框架设计

基于SSM框架的通用权限框架设计

火雨(Nick) 1万+

基于SSM框架的用户权限管理

采用RBAC模式开发的用户权限管理系统,在实现基本的权限管理的同时,实现了用户权限的拦截。

SSM权限管理系统(完整可运行版)

完整的ssm权限管理系统,包括登陆验证,用户管理,角色管理。权限管理,内含sql,可直接运行,初始账号密码皆为admin。

java网站系列教程资料

排列顺序不一定是学习顺序,仅供参考,尽量找靠谱朋友给点指导。 基本的前端知识,学后端的同学浏览一遍,达到能看懂老师的一些前端代码水平就行了 韩顺平 轻松搞定网页设计(html+css+javascript)视频 https://www.bilibili.com/video/BV1Mt411v7gH 尚硅谷jQuery教程(jquery从入门到精通) https://www.bilibili.com/video/BV1ts411E7ag 韩顺平 Ajax技术 https://www.bilibi

qq_42331499的博客 251

基于SSM框架的博客系统源码

没积分的同学看这里免费下载地址 : http://blog.java1234.com/download.html 本站源码使用 J2EE 开发; 使用 Spring4+Springmvc+Mybatis3 架构, 采用 Mysql 数据库; 使用 Maven3 管理项目,使用 Shiro 作为项目安全框架,使用 Lucene 作为全文检索,支持 restful 风格; 前台网页使用主流的 Bootstrap3 UI 框架;后台管理使用主流易用的 EasyUI 轻量级框架; 数据库连接池使用的是阿里巴巴的 Druid; 在线编辑器使用了百度的 UEditor,支持单图,多图上传,支持截图上传,支持代码高亮特性;

SSM 单体框架 - 教育平台后台管理系统:权限模块开发

权限概念介绍 权限:权利(能做的)和限制(不能做的),在权限范围内做好自己的事情 认证: 验证用户名密码是否正确的过程 授权: 对用户所能访问的资源进行控制(动态显示菜单、URL 级别的权限控制) 实现权限系统的原因 首先系统需要进行登陆才能访问 其次不同登陆用户要有不同的权利,而且要有不同的菜单(例如财务经理针对系统中财务相关模块进行操作,人事经理针对系统中人事模块进行操作) 权限控制基本原理 ACL(Access Control Lists) ACL 是最早也是最基本的一种访问控制机制,它的原理非常简单

qq_40286307的博客 524

基于SSM框架开发的CRM系统

基于SSM框架开发的CRM系统 项目描述 本CRM系统是基于SSM框架开发的,主要的功能是对部门员工文档公告等模块组成,项目针对有基础,且刚学完Spring框架SpringMVC框架和Mybatis框架同学学习。 运行环境 jdk8+tomcat7.0.85+mysql5.5+IntelliJ IDEA+maven 项目技术(必填) spring+spring mvc+mybatis+layui+jquery+ajax 数据库文件 链接: https://pan.baidu.com/s/14rcUQNpEekavR8zA8yTQ2A 提取码: 63ub jar包文件 链接:https://pan.baidu.com/s/1Rnh2PsIwfjIlCoXt6gs4Mw 提取码:lbbj

简单的权限登录SSM框架

权限登录,框架springMVC+spring+myBatis+前台框架bootstrap 开发工具Eclipse, mySql

SSM 企业权限管理系统 项目实战(转载)

企业权限管理系统 完整项目github地址: https://github.com/lindaifeng/Authority-Management-System 一、前端应用 主要采用AdminLTE开源模板主题工具 1 1.AdminLTE介绍 AdminLTE是一款建立在bootstrap和jquery之上的开源的模板主题工具,它提供了一系列响应的、 可重复使用的组件,并内置了多个模板页面;同时自适应多种屏幕分辨率,兼容PC和移动端。 通 过AdminLTE,我们可以快速的创建一个响应式的Html5网站

shuirenbushijun的博客 461

最简洁易懂的ssm通用权限系统

最简洁易懂的ssm通用权限系统,本系统是一个基于ssm框架代码完整的通用权限管理系统,采用mysql数据库 ,下载可运行

通用权限系统快速开发框架

系统在线演示地址: http://120.90.2.126:8051 登录账户:system,密码:system### DEMO下载地址: http://download.youkuaiyun.com/detail/shecixiong/5372895   一、开发技术:B/S(.NET C# ) 1、Windows XP以上 (支援最新Win 8) 2、Micros...

weixin_34166847的博客 89

ssm权限管理源码

ssm框架 mysql数据库 easyui前端,带数据库文件,可直接导入。从csdn下载的13分那个,直接使用有问题,自己修改完,可以直接使用。登录地址为:http:localhost:xxxx/xxx/login.do,用户名admin/123456

基于DNN、CNN与SVM的串联电弧故障智能检测:从原理到嵌入式部署

在电气安全与工业物联网领域,时间序列分类是处理传感器信号、实现状态监测与故障诊断的核心技术。其原理在于从连续的信号数据中提取有效特征,并利用机器学习模型识别异常模式。这项技术的核心价值在于能够实现设备预测性维护、提升系统安全性并降低运维成本,广泛应用于智能电表、电机健康监测、电力设备保护等场景。本文聚焦于电气安全中的一个具体且危险的隐患——串联电弧故障的检测。针对这一隐蔽性强、传统方法误报率高的问题,项目深入实践了三种主流AI模型:深度神经网络、卷积神经网络和支持向量机。通过对比DNN的通用特征学习能力、C

weixin_31860973的博客 413

ssm实现管理员和用户_SSM权限系统框架

项目描述:本系统是一个SSM通用权限系统框架此项目数据库源码齐全,略收小费需要的请加我QQ:1694190210。项目描述为了方便框架的搭建,为此小刘搭建了通用ssm权限系统框架,本系统采用技术为:ssm+mybatis+mysql+thymeleaf+layui系统角色分为超级管理员 管理员和客服每个角色的权限都不相同,角色和权限都可以动态的添加和修改。可以做到用户及角色的权限,添加管...

weixin_39711959的博客 2068

S32K314 EB配置MCAL全模块讲解【Autosar——1 MCU模块详解】持续更新中

FIRC(fast internal RC Oscillator) :高速内部时钟,固定48MHZ;SIRC(Slow Internal RC Oscillator):低速内部时钟,固定32KHZ;FXOSC(Fast Crystal Oscillator Digital Controller):高速外部晶振(8-40MHZ),根据原理图选型进行配置;SXOSC():外部低速外部时钟,固定输入32.768KHZ;PLL_PHIn_CLK:时钟倍频锁相环时钟范围(640-1280MHZ);

qq_40488886的博客 1786

ssm框架

基于ssm框架 随着互联网技术的迅速发展,Internet的普及,以及IT技术的迅猛发展,我们的社会已经进入了一个信息化时代。随着信息化时代的到来,商城以及商城的服务随之产生。商城以及商城的服务指利用简单、快捷、低成本的电子网络通讯方式,买卖双方通过互联网进行各种服务、产品等有形或无形商品交换的的一种商业交易模式。随着信息时代的到来,以及互联网的迅速发展和普及,人们消费观念和生活方式也逐渐发生了改...

MaTiTing的博客 1923

QGIS:安装Deepness插件+应用

简单的描述了deepness的安装应用历程,重点是记录博主本次遇到的坑

fengyi157的博客 2342

Creo报错代码-9?手把手教你重新生成许可证文件(基于Creo 10.0)

本文详细解析Creo报错代码-9的成因及解决方案,重点介绍如何重新生成许可证文件以应对网络环境变化导致的验证失败。通过分步指南和高级技巧,帮助用户有效管理多网络环境下的Creo许可证问题,提升工作效率。

weixin_30839881的博客 565
上一篇: mysql 查询今天、昨天、上月、本月的数据
下一篇: mysql重连,连接丢失:The last packet successfully received from the server--转载
Yuwen_forJava
博客等级 码龄9年 28粉丝 90原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值