博主声明:

转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主 威威喵 原创,请多支持与指教。

本文首发于此   博主:威威喵  |  博客主页:https://blog.csdn.net/smile_running

1、前言

由于博主之前写的这篇文章太水了,其实也是用处不大,所以我决定把这篇文章内容改了。改的内容是 ssm 框架的基本搭建与使用,由于博主毕业设计中需要做后台服务器的处理,我做的是 Android 端 app 的,但是需要数据交互,所以就当顺便学一下服务器的知识吧。

好吧,话不多说,我们自己开始整合 ssm 框架,建议你最好会先使用 Idea,因为我使用的是 Maven 的方式进行构建的,比较简单,容易上手。

2、正文

首先,我们需要创建一个新的 Maven Project

以下就随便填写吧,做一个简单的 demo

下面这个属性最要添加一个 archetypeCatalog = internal,如果不加这个参数,Maven 构建时会很慢,有时候直接卡住。

最后就创建出了一个空的 Maven 项目了,如下图:

到这里呢,你已经迈出了第一步。接下来,我们可以开始加入 Spring、SpringMVC、Mybatis、Json、Logger等依赖,这样才能够正常使用这些工具包。你只需要在 pom.xml 文件中添加如下的依赖即可(打开 pom.xml 文件,将里面的 <dependencies> 标签替换成下面的内容,具体依赖的作用以下都有注释)

  <dependencies><!--    单元测试(选择版本大于 4.0 ,使用注解的方式)    --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--   Java Web 相关依赖   --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.8.0</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><!--    日志工具:slf4j + logback    --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.5</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.1.7</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.1.7</version></dependency><!-- 添加fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.41</version></dependency><!--    数据库:mysql + c3p0 连接池    --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.29</version></dependency><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency><!--    DAO 层:mybatis + mybatis-spring 整合    --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.8</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency><!--    Spring 核心依赖    --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.2.5.RELEASE</version></dependency><!--    Spring dao依赖    --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>4.2.5.RELEASE</version></dependency><!--    Spring web相关    --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.2.5.RELEASE</version></dependency><!--    Spring test    --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.2.5.RELEASE</version></dependency><!--    使用 redis 优化接口并发(优化‘地址暴露接口’)    --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.3</version></dependency><!--    使用 protostuff 来序列化存储对象    --><dependency><groupId>com.dyuproject.protostuff</groupId><artifactId>protostuff-core</artifactId><version>1.0.8</version></dependency><dependency><groupId>com.dyuproject.protostuff</groupId><artifactId>protostuff-runtime</artifactId><version>1.0.8</version></dependency></dependencies>

替换代码之后,会弹出这样的窗口,选择 import 即可。

这样我们的 ssm 框架所需的依赖库就已经引入成功了,下面开始编写配置文件进行框架的整合。在整合之前呢,我们先创建几个文件夹,用于存放配置文件。创建文件夹后,工程目录结构图如下:

我这里就写了一个简单的业务逻辑,一个使用 ssm 框架来写的用户登录功能。上图就是所有的类与配置文件,下面我来简单地介绍一下这些类的主要功能以及配置文件的作用。

  • dao 包,这里是与数据库访问的接口,对应的 spring-dao.xml 就是操作数据库相关的配置信息,如 jdbc、c3p0 等等。
  • service 包,与主要业务逻辑相关,spring-service.xml 的主要是扫描 service 包下的接口,方便注入到其它类中使用。
  • web 包,就是 srpingMVC 相关的用于请求访问处理,spring-web.xml 主要是配置 controller 的相关属性。
  • logback.xml 是日志的配置文件
  • jdbc.properties 表示使用 jdbc 连接数据库驱动时要用的连接属性
  • mybatis-config.xml 是与 mybatis 整合时所需的配置信息
  • web.xml 需要配置请求的相关属性,比如 servlet 与 servlet-mapping 等。
  • mapper 包下主要存放与业务相关的 sql 语句

大致就这些,接下来我们从 jdbc.properties 文件先开始,它的代码如下(是类似与 key - value 的方式存储):

jdbc.driverClasss=com.mysql.jdbc.Driver
jdbc.Url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true
jdbc.username=root
jdbc.password=xww0826

 spring-dao.xml 文件中,就将它引用到连接数据库上,代码如下:

<?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:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><!--  加载 jdbc 属性文件  --><context:property-placeholder location="classpath:jdbc.properties"/><!--  配置 c3p0 数据源  --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><!--   配置 jdbc 连接基本属性     --><property name="driverClass" value="${jdbc.driverClasss}"/><property name="jdbcUrl" value="${jdbc.Url}"/><property name="user" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><!--   配置 c3p0 连接池属性     --><property name="initialPoolSize" value="5"/><property name="checkoutTimeout" value="20000"/><property name="maxPoolSize" value="40"/><property name="minPoolSize" value="10"/><!--   关闭连接后是否自动提交     --><property name="autoCommitOnClose" value="false"/><!--   获取连接失败重试次数     --><property name="acquireRetryAttempts" value="2"/></bean><!-- 配置 sqlSessionFactory 对象--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!--   注入数据库连接池     --><property name="dataSource" ref="dataSource"/><!-- 自动扫描 mapper包下的所有 xml 文件 --><property name="mapperLocations" value="classpath:mapper/*.xml"/><!-- 配置 mybatis-config 文件 --><property name="configLocation" value="classpath:mybatis-config.xml"/><!-- 扫描包下的 entity 类 --><property name="typeAliasesPackage" value="com.xww.demo.entity"/></bean><!-- 配置扫描 dao 包,动态的实现 dao 接口,注入 spring 容器--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 注入 sqlSessionFactory --><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/><!-- 扫描 dao 包下的接口,并实现它 --><property name="basePackage" value="com.xww.demo.dao"/></bean><!--  配置事物管理  --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!--  注入数据库连接池  --><property name="dataSource" ref="dataSource"/></bean><!--  默认使用注解来管理事物  --><tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

接下来是 spring-service.xml 文件,就配置一下扫描包的路径

<?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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--  自动扫描 service 包  --><context:component-scan base-package="com.xww.demo.service"/></beans>

然后是 spring-web.xml 文件,与 SpringMVC 相关的配置属性

<?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:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--  扫描 web 包(如:Controller)  --><context:component-scan base-package="com.xww.demo.web"/><!--  springMVC 配置文件,开启注解,并提供一系列功能进行数据绑定(如:xml、Json,时间戳等数据支持)  --><mvc:annotation-driven/><!--  配置默认处理,允许使用  / 做整体映射,如静态资源的处理(jpg,png,js等) --><mvc:default-servlet-handler/><!--避免IE执行AJAX时,返回JSON出现下载文件 --><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!--  配置视图解析器  --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean></beans>

然后是 mybatis-config.xml 文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><settings><!--   设置获取自增主键值 id     --><setting name="useGeneratedKeys" value="true"/><!--   自动将列名转为 entity 属性名    --><setting name="useColumnLabel" value="true"/><!--   使用驼峰命名法来转换    --><setting name="mapUnderscoreToCamelCase" value="true"/></settings></configuration>

最后是 logback.xml 文件,配置日志相关设置:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!-- encoders are assigned the typech.qos.logback.classic.encoder.PatternLayoutEncoder by default --><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="debug"><appender-ref ref="STDOUT"/></root>
</configuration>

以上就是 ssm 框架的所有配置文件代码,接下来我们来看 java 代码。首先是 dao 包下的 LoginDao 接口,代码如下:

package com.xww.demo.dao;import com.xww.demo.entity.User;
import org.apache.ibatis.annotations.Param;public interface LoginDao {// 用户登录User queryUser(@Param("username") String username, @Param("password") String password);
}

接下来是 mapper 包下的 LoginDao.xml 文件代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.xww.demo.dao.LoginDao"><select id="queryUser" parameterType="com.xww.demo.entity.User" resultType="com.xww.demo.entity.User">select user_name, pass_word from user where user_name = #{username} and pass_word = #{password}</select></mapper>

那么 entity 类就不用多说了,提供 getter 和 setter 方法,不过一定要加一个空的构造函数,否则会出错,代码如下:

package com.xww.demo.entity;public class User {private String username;private String password;public User() {}public User(String username, String password) {this.username = username;this.password = password;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"username='" + username + '\'' +", password='" + password + '\'' +'}';}
}

接着是 service 包,这里就是业务逻辑处理相关的代码,包括业务逻辑的接口与实现类。

package com.xww.demo.service;import com.xww.demo.entity.User;public interface LoginService {User doLogin(String username, String password);
}
package com.xww.demo.service.impl;import com.xww.demo.dao.LoginDao;
import com.xww.demo.entity.User;
import com.xww.demo.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class LoginImpl implements LoginService {@AutowiredLoginDao loginDao;@Overridepublic User doLogin(String username, String password) {return loginDao.queryUser(username, password);}
}

然后是 web 包的代码,这里是请求相关的逻辑代码,配置请求 url 、请求方式、请求参数等。代码如下:

package com.xww.demo.web;import com.alibaba.fastjson.JSONObject;
import com.xww.demo.entity.User;
import com.xww.demo.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@RequestMapping("/test")
public class LoginController {@AutowiredLoginService loginService;@ResponseBody@RequestMapping(value = "/login", method = RequestMethod.POST)public String doLoginAction(@RequestParam("username") String username, @RequestParam("password") String password) {User user = null;try {user = loginService.doLogin(username, password);} catch (RuntimeException e) {//如果用户为null,在此处理异常}return JSONObject.toJSONString(user);}}

到这里还没结束,最关键的是需要把 servlet 添加到 web.xml 文件中去,否则你无论怎么请求,都是无法接收到响应的,代码如下:

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><!-- 编码过滤器 --><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></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--    配置 SpringMVC DispatcherServlet    --><servlet><servlet-name>demo-LoginServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/spring-*.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>demo-LoginServlet</servlet-name><!--    配置请求 url 模式    --><url-pattern>/</url-pattern></servlet-mapping><!-- session配置 --><session-config><session-timeout>15</session-timeout></session-config></web-app>

最后是我们的前端 jsp 代码,就是简单的使用 bootstrap 框架写的一个登录界面,index.jsp 代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<!DOCTYPE html>
<html><head><title>用户登录</title><meta name="viewport" content="width=device-width, initial-scale=1.0"><!-- 引入 Bootstrap --><link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"><!-- HTML5 Shiv 和 Respond.js 用于让 IE8 支持 HTML5元素和媒体查询 --><!-- 注意: 如果通过 file:// 引入 Respond.js 文件,则该文件无法起效果 --><!--[if lt IE 9]><script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script><script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script><![endif]-->
</head><body><!-- 登录表单 -->
<form style="margin-left:500px;margin-top:200px;" action="test/login" method="post" target="_blank"><div class="form-group"><label for="user" stype="display:inline;">账户:</label><input type="text" class="form-control" id="user" name="username" style="display:inline;width:200px;"autocomplete="off"/></div><div class="form-group"><label for="password" style="display:inline;">密码:</label><input type="password" class="form-control" id="password" name="password" style="display:inline;width:200px;"autocomplete="off"/></div><button type="submit" class="btn btn-primary" style="margin-top: 10px">登录</button>
</form></body><!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</html>

接下来就是如何运行的问题了。使用 IDEA 添加 Local Tomcat,如下图:

添加项目,就是我们刚刚创建的这个项目名,如下图:

然后应用一下,直接运行 Tomcat 即可。那么你就会看到如下的 jsp 页面:

登录成功时,就会显示当前的登录名和密码,以 json 数据返回,登录失败则返回为 null,如下图:

数据库驱动使用的是 mysql,用到的 sql 命名如下:

# 创建数据库
CREATE DATABASE test;# 创建用户表
CREATE TABLE `user` (`id` INT NOT NULL auto_increment,`user_name` VARCHAR (16) NOT NULL,`pass_word` VARCHAR (16) NOT NULL,PRIMARY KEY (id, user_name)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;# 插入数据
INSERT INTO USER (user_name, pass_word)
VALUES('xww', '0826'),('user1', '123456');

好了,本文所有代码就这些,一个简单的 ssm 框架就整合完成了。

使用 IDEA Maven 整合 SSM 框架(Spring+SpringMVC+Mybatis)相关推荐

  1. SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统(功能包含分角色,报修管理、抄表管理、车位管理、房屋管理、业主管理、投诉管理、报修统计分析等)

    博客目录 SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 SSM框架(spring+springmv ...

  2. SSM框架Spring+SpringMVC+MyBatis——详细整合教程

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参 ...

  3. eclipse maven 搭建 SSM(Spring+SpringMVC+MyBatis)开发环境 和 MyBatis 自动生成的 maven 插件配置

    最近研究java web开发,首先需要配置好开发环境,查阅网上各位大神的文章后搭建完成,记录下来作为备忘. 1.安装Maven Maven下载地址:http://maven.apache.org/do ...

  4. SSM框架——Spring+SpringMVC+Mybatis的搭建教程

    一:概述 SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛. Spring作为一个轻量级的框架,有很多的拓展功能,最主要的我们一般项目使用的就是IOC和AOP. S ...

  5. 整合SSM(Spring+SpringMVC+MyBatis)-增删改查(上)

    新建maven web工程,添加web.xml 添加pom文件以及依赖,update项目.然后添加maven依赖. <project xmlns="http://maven.apach ...

  6. SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

    登录 | 注册 收藏成功 确定 收藏失败,请重新收藏 确定 查看所有私信查看所有通知 暂没有新通知 想要绕过微信小程序开发中的坑吗?不妨来听这个,今晚8点,1小时帮你搞定! 14小时以前 CSDN日报 ...

  7. SSM框架整合—详细整合教程(Spring+SpringMVC+MyBatis)

    SSM框架整合-详细整合教程(Spring+SpringMVC+MyBatis) ✨博主介绍 MyBatis和Spring整合 1.整合原因 2.整合条件 3.整合入门 4.整合MyBatis现有配置 ...

  8. 使用maven整合SSM框架详细步骤

    (文章所使用框架Spring+SpringMVC+Mybatis,为项目结构图参照文章末尾) 1.创建maven工程,在pom.xml文件中导入需要的jar包依赖: <project xmlns ...

  9. idea 使用 maven 整合 ssm 框架 实现简单的增、删、改 和 分页查询功能

    详细请参考:   idea 使用 maven 整合 ssm 框架 文章目录 ==效果图== ==准备数据库== ==创建maven项目== ==配置文件== pom.xml jdbc.properti ...

  10. 浅谈IDEA+Maven 整合SSM框架实现简单的增删改查

    SSM SSM(Spring+SpringMVC+MyBatis)框架集由Spring.MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容).常作为数据源较简单的web项 ...

最新文章

  1. (转)koogra--Excel文件读取利器
  2. void *指针的加减运算
  3. 2.2线性表的数据展示【王道数据结构】
  4. 分布式架构:并发重复请求和幂等场景技术实现总结
  5. 没事做做题之棋盘上的距离
  6. popoverController(iPad)
  7. hibernate的初次使用
  8. 爬虫遇到路径转换的解决方案
  9. iqooneo系统要不要更新_IQOOZ1即将发布,和IQOOneo3、OPPORenoACE对比,谁更值得入手?...
  10. 计算机id不同于MAC,Gurman:Mac上的Face ID将在几年内出现
  11. java相关求助---Java泛型的理解与等价实现---------没有完全明白啊...请大神指导...
  12. 函数在区间连续可以推出什么_A-22 函数的点连续、单侧连续、区间连续
  13. 今天参加广州.NET俱乐部活动,运气超好
  14. 技术人,其实很有优势
  15. 手把手Django入门 初步实现管理职位后台
  16. 彻底解决烦人的win10更新
  17. Windows.h 常用API函数【转】
  18. 安卓购物商城源码(服务端+客户端)
  19. 回归(Regression)是什么意思
  20. 在IntelliJ IDEA中,开发一个摸鱼看书插件

热门文章

  1. SoundTouch音频处理库
  2. php怎么更换图片背景颜色,照片换底色红色变白色怎么变 怎么换照片底色
  3. 方波信号的上升沿与带宽
  4. 单片机和嵌入式系统的区别
  5. 全国省市县oracle,最新行政区划 省市区三级 街道乡镇四级 社区/村五级 每月更新(2021年4月版)...
  6. 【node进阶】深入浅出前后端身份验证(上)---session
  7. 小米8SE 解BL锁教程 申请BootLoader解锁教程
  8. 软考高级系统架构师论文,到底该如何写
  9. 网易云原生架构实践之服务治理
  10. vue中的浏览量_vue项目中统计页面访问量PV UV