maven搭建ssm初级框架

小编 2026-07-06 阅读:399 评论:0
喜欢的朋友可以关注下,粉...

喜欢的朋友可以关注下,粉丝也缺。


前言:

想必大家对smm框架已经熟悉的不能再熟悉了,它是Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。我们在一般的项目都能用到它,自己搭建一个smm也挺方便的。下面我就给大家介绍一下如何搭建一个初级的ssm框架。

下面吧demo的下载贡献给大家,需要的可以去下载

https://download.csdn.net/download/dsn727455218/10524640

正文:

1.创建一个maven项目,这个这里我就不做介绍了,很简单的,拿eclipse举例,下载maven插件就行,已经maven本地仓库。

2.准备需要得jar包,maven仓库有可以直接引用的,没有的可以动态的下载。

3.mybatis配置文件

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"	xsi:schemaLocation="		http://www.springframework.org/schema/beans 		http://www.springframework.org/schema/beans/spring-beans.xsd 		http://www.springframework.org/schema/tx 		http://www.springframework.org/schema/tx/spring-tx.xsd		http://www.springframework.org/schema/aop 		http://www.springframework.org/schema/aop/spring-aop.xsd		http://www.springframework.org/schema/context		http://www.springframework.org/schema/context/spring-context.xsd">	<context:property-placeholder location="classpath:remote/db.properties"		ignore-unresolvable="true" />	<!-- 配置数据源 使用的是Druid数据源 -->	<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"		init-method="init" destroy-method="close">		<property name="url" value="${jdbc.url}" />		<property name="username" value="${jdbc.username}" />		<property name="password" value="${jdbc.password}" />		<property name="driverClassName" value="${jdbc.driver}" />		<!-- 初始化连接大小 -->		<property name="initialSize" value="0" />		<!-- 连接池最大使用连接数量 -->		<property name="maxActive" value="20" />		<!-- 连接池最小空闲 -->		<property name="minIdle" value="0" />		<!-- 获取连接最大等待时间 -->		<property name="maxWait" value="60000" />		<property name="poolPreparedStatements" value="true" />		<property name="maxPoolPreparedStatementPerConnectionSize"			value="33" />		<!-- 用来检测有效sql -->		<property name="validationQuery" value="${validationQuery}" />		<property name="testOnBorrow" value="false" />		<property name="testOnReturn" value="false" />		<property name="testWhileIdle" value="true" />		<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->		<property name="timeBetweenEvictionRunsMillis" value="60000" />		<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->		<property name="minEvictableIdleTimeMillis" value="25200000" />		<!-- 打开removeAbandoned功能 -->		<property name="removeAbandoned" value="true" />		<!-- 1800秒,也就是30分钟 -->		<property name="removeAbandonedTimeout" value="1800" />		<!-- 关闭abanded连接时输出错误日志 -->		<property name="logAbandoned" value="true" />		<!-- 监控数据库 -->		<property name="filters" value="mergeStat" />	</bean>	<!-- myBatis文件内嵌 -->	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">		<property name="dataSource" ref="dataSource" />		<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->		<property name="configLocation" value="classpath:spring/myBatis-config.xml" />		<property name="mapperLocations" value="classpath:com/demo/mapper/*.xml" />		<!-- 配置PageHelper拦截实现分页 --><!-- 		<property name="plugins"> --><!-- 			<array> --><!-- 				<bean id="sqlInterceptor" class="com.shou6.filter.SqlInterceptor"> --><!-- 					拦截的sql语句 --><!-- 					<property name="sql_Intercept" value="^s*select[sS]*$" /> --><!-- 					不拦截的sql语句 ^s*selects+counts*\(s*(?:*|w+)s*)s+[sS]+$ --><!-- 					<property name="sql_Not_Intercept" value="^s*selects+[sS]+S+_enable=1s+[sS]+$" /> --><!-- 				</bean> --><!-- 				<bean class="com.github.pagehelper.PageHelper"> --><!-- 					<property name="properties"> --><!-- 						<value> --><!-- 							dialect=mysql --><!-- 							该参数默认为false,设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用,和startPage中的pageNum效果一样 --><!-- 							offsetAsPageNum=true --><!-- 							该参数默认为false,设置为true时,使用RowBounds分页会进行count查询 --><!-- 							rowBoundsWithCount=true --><!-- 							设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是Page类型) --><!-- 							<property name="pageSizeZero" value="true"/> --><!-- 							3.3.0版本可用 - 分页参数合理化,默认false禁用 --><!-- 							启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 --><!-- 							禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 --><!-- 							PageHelper.startPage(currentPage, pageSize, true)//第三个参数为true时,该设置的“pageNum>pages会查询最后一页”才生效 --><!-- 							reasonable=false --><!-- 							3.5.0版本可用 - 为了支持startPage(Object params)方法 --><!-- 							增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 --><!-- 							可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 --><!-- 							不理解该含义的前提下,不要随便复制该配置 <property name="params" value="pageNum=start;pageSize=limit;"/> --><!-- 						</value> --><!-- 					</property> --><!-- 				</bean> --><!-- 			</array> --><!-- 		</property> -->	</bean>	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">		<property name="basePackage" value="com.demo.dao" />		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />	</bean></beans>

4.myBatis-config:自动扫描实体类

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>		<!-- 通过别名简化对类的使用 -->	<typeAliases>		<!-- 通过package, 可以直接指定package的名字, mybatis会自动扫描你指定包下面的javabean, 并且默认设置一个别名,默认的名字为非限定类名来作为它的别名。 -->		<package name="com.demo.entity" />	</typeAliases></configuration>

5.application-trans:事务管理

<beans xmlns="http://www.springframework.org/schema/beans"	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"	xsi:schemaLocation="http://www.springframework.org/schema/beans 	http://www.springframework.org/schema/beans/spring-beans.xsd	http://www.springframework.org/schema/context 	http://www.springframework.org/schema/context/spring-context.xsd	http://www.springframework.org/schema/aop 	http://www.springframework.org/schema/aop/spring-aop.xsd 	http://www.springframework.org/schema/tx 	http://www.springframework.org/schema/tx/spring-tx.xsd	http://www.springframework.org/schema/util 	http://www.springframework.org/schema/util/spring-util.xsd">	<!-- 配置事务管理器 -->	<bean id="transactionManager"		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">		<property name="dataSource" ref="dataSource" />	</bean>	<!-- 拦截器方式配置事物 -->	<tx:advice id="txAdvice" transaction-manager="transactionManager">		<tx:attributes>			<!-- 传播行为 -->			<tx:method name="get*" propagation="REQUIRED" read-only="true" />			<tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />		</tx:attributes>	</tx:advice>		<!-- 方式1:注解方式配置事物管理 -->	<!-- <tx:annotation-driven transaction-manager="txAdvice" /> -->		<!-- 方式2:Spring Aop配置事务管理  expose-proxy="true":解决非事务方法调用本类事务方法时事务不起作用 -->	<aop:config  expose-proxy="true">		<aop:pointcut id="txPoint" expression="execution(* com.demo.service.impl.*.*(..))" />      	<aop:advisor pointcut-ref="txPoint" advice-ref="txAdvice" /> 	</aop:config>	</beans>

5.application:核心配置文件

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 	xmlns:context="http://www.springframework.org/schema/context" 	xmlns:aop="http://www.springframework.org/schema/aop" 	xsi:schemaLocation="http://www.springframework.org/schema/beans			http://www.springframework.org/schema/beans/spring-beans.xsd			http://www.springframework.org/schema/context			http://www.springframework.org/schema/context/spring-context.xsd			http://www.springframework.org/schema/aop			http://www.springframework.org/schema/aop/spring-aop.xsd">	<!-- xsi:schemaLocation尽量不配版本号,这样会默认从本地加载xsd文件,断网不会导致加载出错 -->		<!--引入配置属性文件,使用@Value获取值 --><!-- 	<bean id="props" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> --><!-- 		<property name="locations"> --><!-- 			<list> --><!-- 				<value>classpath:nofilter.properties</value> --><!-- 				<value>classpath:config/param-injection.properties</value> --><!-- 			</list> --><!-- 		</property> --><!-- 		<property name="fileEncoding" value="UTF-8"/> --><!-- 	</bean> -->	<!-- 	<import resource="application-quartz.xml"/> -->	<import resource="application-mybatis.xml"/><!-- 	<import resource="application-redis.xml"/> -->		<!--自动扫描含有@Service将其注入为bean -->	<context:component-scan base-package="com.demo.service" />		<import resource="application-trans.xml"/>		<!-- 用于持有ApplicationContext,可以使用BeanMgrUtil.getBean('xxxx')的静态方法得到spring bean对象 -->  <!-- 	<bean class="com.shou6.utils.tools.BeanMgrUtil" lazy-init="false" />   -->	</beans>

6.spring-mvc:核心配置文件

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"	xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"	xmlns:aop="http://www.springframework.org/schema/aop"	xsi:schemaLocation="http://www.springframework.org/schema/beans 		http://www.springframework.org/schema/beans/spring-beans.xsd 		http://www.springframework.org/schema/context 		http://www.springframework.org/schema/context/spring-context.xsd 		http://www.springframework.org/schema/mvc 		http://www.springframework.org/schema/mvc/spring-mvc.xsd		http://www.springframework.org/schema/aop		http://www.springframework.org/schema/aop/spring-aop.xsd">	<!-- spring全局异常捕获 --><!-- 	<bean class="com.shou6.utils.exception.ExceptionHandler" /> -->	<!-- AOP拦截controller注意:需要把切面类和controller 放在同一个spring的xml配置文件中 -->	<context:component-scan base-package="com.demo.controller"/><!-- 	<context:component-scan base-package="com.shou6.filter"/> -->	<!-- 对@AspectJ切面的bean创建代理(不设置则@Aspect注解的切面将无效) -->	<aop:aspectj-autoproxy proxy-target-class="true" />	<!-- Jackson转换器 -->	<bean id="mappingJacksonHttpMessageConverter"		class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">		<property name="supportedMediaTypes">			<list>				<value>application/json;charset=UTF-8</value>				<value>text/html;charset=UTF-8</value><!-- 避免IE出现下载JSON文件的情况 -->			</list>		</property>	</bean>	<!-- String转换器(为配合APP支付异步通知) -->	<bean id="stringHttpMessageConverter"		class="org.springframework.http.converter.StringHttpMessageConverter">		<constructor-arg value="UTF-8" index="0"></constructor-arg><!--避免出现乱码 -->		<property name="supportedMediaTypes">			<list>				<value>text/plain;charset=UTF-8</value>				<value>text/xml;charset=UTF-8</value>			</list>		</property>	</bean>	<!-- 启动Spring MVC的注解功能,完成请求和返回的POJO-json/xml自动转换 -->	<bean		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">		<property name="messageConverters">			<list>				<!-- json转换器 -->				<ref bean="mappingJacksonHttpMessageConverter" />				<ref bean="stringHttpMessageConverter" />			</list>		</property>	</bean>	<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->	<bean		class="org.springframework.web.servlet.view.InternalResourceViewResolver">		<property name="viewClass"			value="org.springframework.web.servlet.view.JstlView" />		<!-- 解决默认返回均是application/json格式问题 -->		<property name="contentType" value="text/html;charset=UTF-8" />		<property name="prefix" value="/" />		<property name="suffix" value=".jsp" />	</bean>	<!-- 配置多文件上传 -->	<bean id="multipartResolver"		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">		<property name="defaultEncoding">			<value>UTF-8</value>		</property>		<property name="maxUploadSize">			<!-- 上传文件大小限制为5M,5120*1000b -->			<value>5120000</value>		</property>		<property name="maxInMemorySize">			<value>4096</value>		</property>	</bean></beans>

7.log4j:日志配置文件

# Rules reminder:# DEBUG < INFO < WARN < ERROR < FATAL# Global logging configurationlog4j.rootLogger=debug,stdout# My logging configuration...log4j.logger.cn.jbit.mybatisdemo=DEBUG## Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%nlog4j.logger.org.apache.ibatis=DEBUG## log4j.logger.org.apache.jdbc.SimpleDataSource=DEBUGlog4j.logger.org.apache.ibatis.jdbc.ScriptRunner=DEBUG## log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapclientDelegate=DEBUGlog4j.logger.java.sql.Connection=DEBUGlog4j.logger.java.sql.Statement=DEBUGlog4j.logger.java.sql.PreparedStatement=DEBUG#base log configlog4j.rootLogger=INFO,CONSOLE,INFO_FILE,ERROR_FILElog4j.addivity.org.apache=true#console configlog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.Threshold=INFOlog4j.appender.CONSOLE.Target=System.outlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=[%d{HH:mm:ss ms}]-%5p (%F:%L):%m%n# information logs configlog4j.appender.INFO_FILE=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.INFO_FILE.File=..\logs\OSS-INFO.loglog4j.appender.INFO_FILE.Threshold=INFOlog4j.appender.INFO_FILE.Append=truelog4j.appender.INFO_FILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.INFO_FILE.layout.ConversionPattern=[%d{HH:mm:ss ms}]-[%p]:%m ->%l %n# error logs configlog4j.appender.ERROR_FILE=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.ERROR_FILE.File=..\logs\OSS-ERROR.loglog4j.appender.ERROR_FILE.Threshold=ERRORlog4j.appender.ERROR_FILE.Append=truelog4j.appender.ERROR_FILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.ERROR_FILE.layout.ConversionPattern=[%d{HH:mm:ss ms}]-[%p]:%m ->%l %n# fail bill logs configlog4j.logger.FAIL_BILL=INFO, FAIL_BILL log4j.appender.FAIL_BILL=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.FAIL_BILL.File=..\logs\FAIL_BILL.loglog4j.appender.FAIL_BILL.Threshold=FAIL_BILLlog4j.appender.FAIL_BILL.Append=truelog4j.appender.FAIL_BILL.layout=org.apache.log4j.PatternLayoutlog4j.appender.FAIL_BILL.layout.ConversionPattern=[%d{HH:mm:ss ms}]:%m %n

8.web:项目启动加载spring配置

<?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>MyDemo</display-name>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <context-param>    <param-name>contextConfigLocation</param-name>    <param-value>classpath:spring/application.xml</param-value>  </context-param>    <!-- 监听spring -->  <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>    <!-- 启动系统服务 --><!--   <listener> --><!--     <listener-class>com.shou6.init.ServerInitHandler</listener-class> --><!--   </listener> -->     <!-- 防止内存泄漏 -->  <listener>    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  </listener>    <!-- 编码过滤 -->  <filter>    <filter-name>encodingFilter</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    <init-param>      <param-name>encoding</param-name>      <param-value>utf-8</param-value>    </init-param>    <init-param>      <param-name>forceEncoding</param-name>      <param-value>true</param-value>    </init-param>  </filter>  <filter-mapping>    <filter-name>encodingFilter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>   <!-- spring mvc -->  <servlet>    <description>spring mvc servlet</description>    <servlet-name>mvcServlet</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <init-param>      <param-name>contextConfigLocation</param-name>      <param-value>                classpath:spring/spring-mvc.xml      </param-value>    </init-param>    <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>mvcServlet</servlet-name>    <url-pattern>*.do</url-pattern>    <url-pattern>*.mdo</url-pattern>  </servlet-mapping>  </web-app>

所需要的配置文件就这么多,当然你需要redis,quartz也可以加入配置。

下面我就来测试一下

在项目中我创建BaseMapper作为一个父类接口,只需要继承就可以调用其方法,是为了方便重复创建方法;BaseService也是同样的道理。

首先我们创建一个实体类User:

/** * @author dsn * * @version 创建时间:2018年7月5日 上午11:30:00  */package com.demo.entity;/** * @author dsn * @version 创建时间:2018年7月5日 上午11:30:00 */public class User {    /**     * @return the id     */    public int getId() {        return id;    }    /**     * @param id     *            the id to set     */    public void setId(int id) {        this.id = id;    }    /**     * @return the username     */    public String getUsername() {        return username;    }    /**     * @param username     *            the username to set     */    public void setUsername(String username) {        this.username = username;    }    /**     * @return the userpass     */    public String getUserpass() {        return userpass;    }    /**     * @param userpass     *            the userpass to set     */    public void setUserpass(String userpass) {        this.userpass = userpass;    }    /**     * @return the name     */    public String getName() {        return name;    }    /**     * @param name     *            the name to set     */    public void setName(String name) {        this.name = name;    }    private int id;    private String username;    private String userpass;    private String name;}

创建一个dao层接口:继承BaseMapper引入实体类User

/** * @author dsn * * @version 创建时间:2018年7月5日 上午11:35:10  */package com.demo.dao;import com.demo.entity.User;/** * @author dsn * @version 创建时间:2018年7月5日 上午11:35:10 */public interface UserMapper extends BaseMapper<User> {}

创建一个service接口:继承BaseService引入实体类User

/** * @author dsn * * @version 创建时间:2018年7月5日 上午11:35:36  */package com.demo.service;import com.demo.entity.User;/** * @author dsn * @version 创建时间:2018年7月5日 上午11:35:36 */public interface UserService extends BaseService<User> {}

创建一个Mapper文件:UserMapper.xml,这里我写一个insert的语句以及一个select语句,需要注意的是column需要与实体类User字段对应以及对应的type

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.demo.dao.UserMapper" >  <resultMap id="userResultMap" type="com.demo.entity.User" >    <id column="id" property="id" jdbcType="INTEGER" />    <result column="name" property="name" jdbcType="VARCHAR" />    <result column="username" property="username" jdbcType="VARCHAR" />    <result column="userpass" property="userpass" jdbcType="VARCHAR" />  </resultMap>  <select id="selectList" parameterType="User" resultMap="userResultMap">  	select    id,username,userpass,name    from user     <where>        disable='1'         <if test="key!=null">            and (            username = #{key,jdbcType=VARCHAR}                or            name = #{key,jdbcType=VARCHAR}            )        </if>    </where>  </select>  <insert id="insert" parameterType="User"         useGeneratedKeys="true" keyProperty="id">         insert into user(name,username,userpass)               values(#{name},#{username},#{userpass})    </insert></mapper>

接下来我们创建一个UserAction:这是作为controller控制器,处理所有的访问请求以及逻辑

/** * @author dsn * * @version 创建时间:2018年7月5日 上午11:47:26  */package com.demo.controller;import javax.annotation.Resource;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import com.demo.entity.User;import com.demo.service.UserService;/** * @author dsn * @version 创建时间:2018年7月5日 上午11:47:26 */@Controller@RequestMapping("user")public class UserAction {    @Resource    private UserService userService;    @ResponseBody    @RequestMapping(value = "/adduser")    public String addactivity(User user, String msg) throws Exception {        int insert = userService.insert(user);        if (insert == 1) {            msg = "插入成功";        } else {            msg = "插入失败";        }        return msg;    }}

启动项目,用postman测试一下,完美收官。

下面吧demo的下载贡献给大家,需要的可以去下载

https://download.csdn.net/download/dsn727455218/10524640


如有需要可以加我Q群【308742428】大家一起讨论技术。

后面会不定时为大家更新文章,敬请期待。


喜欢的朋友可以关注下,粉丝也缺。




版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表