关于spring+springMVC+myBatis的一些基础配置以及整合
SSM框架的简单搭建
1.首先建立一个maven-web项目
2.pom文件配置
首先你要有自己的仓库,本人搭建SSM所用到的仓库:
百度云盘:
下面给大家展示我自己配置的pom文件
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>com.iflytek.extjs</groupId> 5 <artifactId>extjs</artifactId> 6 <packaging>war</packaging> 7 <version>0.0.1-SNAPSHOT</version> 8 <name>extjs Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 11 <properties> 12 <!-- 版本定义 --> 13 <org.springframework-version>3.1.0.RELEASE</org.springframework-version> 14 <org.slf4j-version>1.5.6</org.slf4j-version> 15 <mybatis.version>3.1.1</mybatis.version> 16 <org.aspectj-version>1.6.10</org.aspectj-version> 17 <iframework.version>1.0.0-SNAPSHOT</iframework.version> 18 </properties> 19 20 <dependencies> 21 <!-- 开发测试 --> 22 <dependency> 23 <groupId>junit</groupId> 24 <artifactId>junit</artifactId> 25 <version>3.8.1</version> 26 <scope>test</scope> 27 </dependency> 28 <!-- Spring --> 29 <dependency> 30 <groupId>org.springframework</groupId> 31 <artifactId>spring-tx</artifactId> 32 <version>${org.springframework-version}</version> 33 <exclusions> 34 <!-- Exclude Commons Logging in favor of SLF4j --> 35 <exclusion> 36 <groupId>commons-logging</groupId> 37 <artifactId>commons-logging</artifactId> 38 </exclusion> 39 </exclusions> 40 </dependency> 41 <dependency> 42 <groupId>org.springframework</groupId> 43 <artifactId>spring-webmvc</artifactId> 44 <version>${org.springframework-version}</version> 45 <exclusions> 46 <!-- Exclude Commons Logging in favor of SLF4j --> 47 <exclusion> 48 <groupId>commons-logging</groupId> 49 <artifactId>commons-logging</artifactId> 50 </exclusion> 51 </exclusions> 52 </dependency> 53 <dependency> 54 <groupId>org.springframework</groupId> 55 <artifactId>spring-context</artifactId> 56 <version>${org.springframework-version}</version> 57 <exclusions> 58 <!-- Exclude Commons Logging in favor of SLF4j --> 59 <exclusion> 60 <groupId>commons-logging</groupId> 61 <artifactId>commons-logging</artifactId> 62 </exclusion> 63 </exclusions> 64 </dependency> 65 <!-- Logging --> 66 <dependency> 67 <groupId>org.slf4j</groupId> 68 <artifactId>slf4j-api</artifactId> 69 <version>${org.slf4j-version}</version> 70 </dependency> 71 <dependency> 72 <groupId>org.slf4j</groupId> 73 <artifactId>jcl-over-slf4j</artifactId> 74 <version>${org.slf4j-version}</version> 75 <scope>runtime</scope> 76 </dependency> 77 <dependency> 78 <groupId>org.slf4j</groupId> 79 <artifactId>slf4j-log4j12</artifactId> 80 <version>${org.slf4j-version}</version> 81 <scope>runtime</scope> 82 </dependency> 83 <dependency> 84 <groupId>log4j</groupId> 85 <artifactId>log4j</artifactId> 86 <version>1.2.16</version> 87 </dependency> 88 <!-- mybatis --> 89 <dependency> 90 <groupId>org.mybatis</groupId> 91 <artifactId>mybatis</artifactId> 92 <version>${mybatis.version}</version> 93 </dependency> 94 <!-- mybatis/spring包 --> 95 <dependency> 96 <groupId>org.mybatis</groupId> 97 <artifactId>mybatis-spring</artifactId> 98 <version>1.1.0</version> 99 </dependency> 100 <!-- Servlet --> 101 <dependency> 102 <groupId>javax.servlet</groupId> 103 <artifactId>servlet-api</artifactId> 104 <version>2.5</version> 105 <scope>provided</scope> 106 </dependency> 107 <dependency> 108 <groupId>javax.servlet.jsp</groupId> 109 <artifactId>jsp-api</artifactId> 110 <version>2.1</version> 111 <scope>provided</scope> 112 </dependency> 113 <dependency> 114 <groupId>javax.servlet.jsp.jstl</groupId> 115 <artifactId>jstl-api</artifactId> 116 <version>1.2</version> 117 </dependency> 118 <dependency> 119 <groupId>org.glassfish.web</groupId> 120 <artifactId>jstl-impl</artifactId> 121 <version>1.2</version> 122 </dependency> 123 <!-- Database --> 124 <dependency> 125 <groupId>mysql</groupId> 126 <artifactId>mysql-connector-java</artifactId> 127 <version>5.1.13</version> 128 </dependency> 129 <dependency> 130 <groupId>commons-dbcp</groupId> 131 <artifactId>commons-dbcp</artifactId> 132 <version>1.2.2</version> 133 </dependency> 134 <dependency> 135 <groupId>cglib</groupId> 136 <artifactId>cglib</artifactId> 137 <version>2.2</version> 138 </dependency> 139 <dependency> 140 <groupId>org.freemarker</groupId> 141 <artifactId>freemarker</artifactId> 142 <version>2.3.23</version> 143 </dependency> 144 <!-- aspectjweaver --> 145 <dependency> 146 <groupId>org.aspectj</groupId> 147 <artifactId>aspectjweaver</artifactId> 148 <version>1.8.4</version> 149 </dependency> 150 </dependencies> 151 <build> 152 <finalName>extjs</finalName> 153 <resources> 154 <resource> 155 <directory>src/main/resources</directory> 156 <includes> 157 <include>**/*.xml</include>158 <include>**/*.properties</include> 159 <include>**/*.jsp</include>160 </includes>161 <filtering>true</filtering>162 </resource>163 </resources>164 <plugins>165 <plugin>166 <groupId>org.mortbay.jetty</groupId>167 <artifactId>maven-jetty-plugin</artifactId>168 <version>6.1.2</version>169 <configuration>170 <contextPath>/extjs</contextPath>171 <connectors>172 <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">173 <port>8280</port>174 </connector>175 </connectors>176 <scanIntervalSeconds>10</scanIntervalSeconds>177 </configuration>178 </plugin>179 </plugins>180 </build>181 </project>
View Code
3.配置web.xml文件
如下所示:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4"> <!-- 首页展示 --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 设置session过期的时间 --><session-config><session-timeout>20</session-timeout></session-config><!-- 配置Spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><!-- 防止Spring内存溢出监听器 --><listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- 将所有*.do的请求交给springMVC的DispatcherServlet来处理 --><servlet><servlet-name>DispatcherServlet</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>DispatcherServlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><!--设置字符编码,将所有的字符编码同意设置为utf-8 --> <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> </web-app>
View Code
4.接下来配置spring文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 8 http://www.springframework.org/schema/mvc 9 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 10 http://www.springframework.org/schema/context 11 http://www.springframework.org/schema/context/spring-context-3.0.xsd 12 http://www.springframework.org/schema/aop 13 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 14 http://www.springframework.org/schema/tx 15 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "> 16 <!-- 扫描service --> 17 <context:component-scan base-package="com.iflytek.extjs.service.serviceImpl" /> 18 <!-- 分解配置 jdbc.properites --> 19 <context:property-placeholder location="classpath:spring/jdbc.properties" ignore-unresolvable="true"/> 20 21 <!-- 数据库配置信息 --> 22 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 23 <property name="driverClassName" value="${jdbc.driver}"/> 24 <property name="url" value="${jdbc.url}"/> 25 <property name="username" value="${jdbc.username}"/> 26 <property name="password" value="${jdbc.password}"/> 27 <property name="validationQuery" value="${jdbc.validation.query}"/> 28 <property name="testWhileIdle" value="true"/> 29 <property name="timeBetweenEvictionRunsMillis" value="3600000"/> 30 <property name="minEvictableIdleTimeMillis" value="1800000"/> 31 <property name="testOnBorrow" value="true"/> 32 </bean> 33 <!-- sessionFactory 将spring和mybatis整合 --> 34 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 35 <property name="dataSource" ref="dataSource" /> 36 <property name="configLocation" value="classpath:spring/spring-mybatis.xml" /> 37 <property name="mapperLocations" value="classpath:mapping/*.xml" /> 38 </bean> 39 <!-- 自动扫描 将Mapper接口生成代理注入到Spring--> 40 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" autowire="byName"> 41 <property name="basePackage" value="com.iflytek.extjs.dao" /> 42 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> 43 </bean> 44 <!-- 配置事物 (事务管理)transaction manager, use JtaTransactionManager for global tx --> 45 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 46 <property name="dataSource" ref="dataSource" /> 47 </bean> 48 49 <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> 50 <tx:attributes> 51 <tx:method name="add*" propagation="REQUIRED" /> 52 <tx:method name="append*" propagation="REQUIRED" /> 53 <tx:method name="insert*" propagation="REQUIRED" /> 54 <tx:method name="save*" propagation="REQUIRED" /> 55 <tx:method name="update*" propagation="REQUIRED" /> 56 <tx:method name="modify*" propagation="REQUIRED" /> 57 <tx:method name="edit*" propagation="REQUIRED" /> 58 <tx:method name="delete*" propagation="REQUIRED" /> 59 <tx:method name="remove*" propagation="REQUIRED" /> 60 <tx:method name="repair" propagation="REQUIRED" /> 61 <tx:method name="delAndRepair" propagation="REQUIRED" /> 62 63 <tx:method name="get*" propagation="SUPPORTS" /> 64 <tx:method name="find*" propagation="SUPPORTS" /> 65 <tx:method name="load*" propagation="SUPPORTS" /> 66 <tx:method name="search*" propagation="SUPPORTS" /> 67 <tx:method name="datagrid*" propagation="SUPPORTS" /> 68 69 <tx:method name="*" propagation="SUPPORTS" /> 70 </tx:attributes> 71 </tx:advice> 72 73 <!-- 定义一个切面,在定义的切面上加入事物 --> 74 <aop:config> 75 <aop:pointcut id="transactionPointcut" expression="execution(* com.iflytek.extjs.service..*Impl.*(..))" /> 76 <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" /> 77 </aop:config> 78 </beans>
View Code
5.配置spring-MVC文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation="7 http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 9 http://www.springframework.org/schema/context 10 http://www.springframework.org/schema/context/spring-context-3.0.xsd 11 http://www.springframework.org/schema/mvc 12 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 13 <!-- 默认的注解映射的支持 --> 14 <mvc:annotation-driven /> 15 16 <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> 17 <context:component-scan base-package="com.iflytek.extjs.controller" /> 18 19 <!-- 定义跳转的文件的前后缀 ,视图模式配置 --> 20 <bean21 class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 22 <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> 23 <property name="prefix" value="/WEB-INF/" /> 24 <property name="suffix" value=".jsp" /> 25 </bean> 26 </beans>
View Code
6.配置jdbc.properties文件
# jdbc
jdbc.driver=com.mysql.jdbc.Driver
jdbc.validation.query=SELECT 1
jdbc.url=jdbc:mysql://1192.168.11.123:3306/zzl?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
7.配置spring-mybaties.xml文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 <configuration> 4 <!-- 暂时不需要其他配置--> 5 </configuration>
View Code
8.配置log4j.properties日志记录文件
1 log4j.rootLogger=DEBUG,console,dailyFile,im2 log4j.additivity.org.apache=true 3 4 # console5 log4j.appender.console=org.apache.log4j.ConsoleAppender6 log4j.appender.console.Threshold=DEBUG7 log4j.appender.console.ImmediateFlush=true 8 log4j.appender.console.Target=System.err9 log4j.appender.console.layout=org.apache.log4j.PatternLayout10 log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n11 12 # logFile13 log4j.appender.logFile=org.apache.log4j.FileAppender14 log4j.appender.logFile.Threshold=DEBUG15 log4j.appender.logFile.ImmediateFlush=true 16 log4j.appender.logFile.Append=true 17 log4j.appender.logFile.File=D:/iflytek/log/extjs/log.log4j18 log4j.appender.logFile.layout=org.apache.log4j.PatternLayout19 log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
View Code
9.controller
1 package com.iflytek.extjs.controller;2 3 import org.apache.log4j.Logger;4 import org.springframework.beans.factory.annotation.Autowired;5 import org.springframework.stereotype.Controller;6 import org.springframework.web.bind.annotation.RequestMapping;7 8 import com.iflytek.extjs.domain.User;9 import com.iflytek.extjs.service.UserService;10 11 @Controller12 @RequestMapping("/user")13 public classUserController {14 private static final Logger LOG = Logger.getLogger(UserController.class);15 @Autowired16 privateUserService userService;17 18 @RequestMapping(value="save.do")19 public voidturnToIndexHtml(){20 User user = new User("0101","AAAAAAA","bbb");21 userService.saveUser(user);22 LOG.info("入库成功!");23 }24 25 }
View Code
10.service
package com.iflytek.extjs.service;import com.iflytek.extjs.domain.User;public interfaceUserService {public voidsaveUser(User user);}
View Code
1 package com.iflytek.extjs.service.serviceImpl;2 3 import org.springframework.beans.factory.annotation.Autowired;4 import org.springframework.stereotype.Service;5 6 import com.iflytek.extjs.dao.UserDao;7 import com.iflytek.extjs.domain.User;8 import com.iflytek.extjs.service.UserService;9 @Service10 public classUserServiceImpl implements UserService{11 12 @Autowired13 privateUserDao userDao;14 15 public voidsaveUser(User user) {16 userDao.saveUser(user);17 }18 19 }
View Code
11.dao
1 package com.iflytek.extjs.dao;2 3 import com.iflytek.extjs.domain.User;4 5 public interfaceUserDao {6 7 public voidsaveUser(User user);8 9 }
View Code
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="com.iflytek.extjs.dao.UserDao"> 4 5 <resultMap id="baseResultMap" type="com.iflytek.extjs.domain.User"> 6 <id column="user_id" property="user_id" jdbcType="VARCHAR" /> 7 <result column="dept_name" property="dept_name" jdbcType="VARCHAR" /> 8 <result column="user_name" property="user_name" jdbcType="VARCHAR" /> 9 </resultMap> 10 11 <sql id="user_column_list"> 12 user_id,dept_name,user_name13 </sql> 14 15 <insert id="saveUser" parameterType="com.iflytek.extjs.domain.User"> 16 insert into t_user_info17 <trim prefix="(" suffix=")" suffixOverrides=","> 18 <if test="user_id != null"> 19 user_id,20 </if> 21 <if test="dept_name != null"> 22 dept_name,23 </if> 24 <if test="user_name != null"> 25 user_name,26 </if> 27 </trim> 28 <trim prefix="values (" suffix=")" suffixOverrides=","> 29 <if test="user_id != null"> 30 #{user_id,jdbcType=VARCHAR},31 </if> 32 <if test="dept_name != null"> 33 #{dept_name,jdbcType=VARCHAR},34 </if> 35 <if test="user_name != null"> 36 #{user_name,jdbcType=VARCHAR},37 </if> 38 </trim> 39 </insert> 40 </mapper>
View Code
注意问题:整个项目中注意编码格式要统一,统一设置UTF-8
参考网址:
http://wosyingjun.iteye.com/blog/2249750
http://www.open-open.com/lib/view/open1426236622935.html
http://www.cnblogs.com/Joetao/articles/4544572.html
http://blog.csdn.net/kenhins/article/details/42640349
转载于:https://www.cnblogs.com/ziliangzhao/p/5716457.html
关于spring+springMVC+myBatis的一些基础配置以及整合相关推荐
- ssm注解配置连接mysql_基于注解和配置类的SSM(Spring+SpringMVC+Mybatis)项目详细配置...
在上一篇文章中介绍了使用注解和xml配置文件对项目进行配置,在这篇文章中将xml配置文件中的配置信息都改成使用注解或者配置类的形式. 第一步.配置pom.xml 在一个ssm项目中,可能需要用到的依赖 ...
- Spring+SpringMVC+Mybatis简单整合 图书管理项目 实现增删改查
Spring+SpringMVC+Mybatis项目 tomcat7插件配置 <build><plugins><plugin><groupId>org. ...
- Spring+SpringMVC+Mybatis(开发必备技能)01、基础idea环境配置
Spring+SpringMVC+Mybatis(开发必备技能) 01.基础idea环境配置 环境: 数据库:MySQL 开发工具:IntelliJ IDEA 2020.1.3 x64 框架:SSM( ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 萌芽阶段 很久之前就开始打算整理一下自己的技术博客了,由于各种原因( ...
- Spring+SpringMVC+MyBatis整合基础篇
基础篇 Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简介 Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试 Spring+S ...
- springmvc连接mysql_挺详细的spring+springmvc+mybatis配置整合|含源代码
大家好,我是雄雄,今天来带着大家来配置一下SSM(spring+springmvc+ mybatis)框架. 01 新建java web项目 直接在myeclipse中,新建一个web项目即可. 02 ...
- [转]SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
使用SSM(spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...
- Spring+SpringMVC+MyBatis整合教程
2019独角兽企业重金招聘Python工程师标准>>> 1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框 ...
- 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构(附源码)
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:zheng gitee ...
最新文章
- 给定一个字符串,输出第一次出现k次的字母java,c++实现
- IDEA控制台输出乱码解决方案
- swoole 简单的聊天室
- 6.prometheus数据上报方式-pushgateway
- input中的disabled 和 readonly的区别
- python xgboost实战_史上最详细的XGBoost实战
- 自己动手写操作系统2011040101
- 代理模式(自己实现源码)
- 红黑联盟 php相关资讯
- ECCV 2020 五项大奖出炉!普林斯顿邓嘉获最佳论文奖
- 微软亚洲研究院多模态模型NÜWA:以自然语言创造视觉内容
- Button控件更改背景和去掉边框
- redis:Unable to connect to localhost:6379
- TCP/IP协议:最大传输单元MTU 路径MTU
- 新概念1、2英语学习计划
- 【Linux防火墙】iptables基础用法及高级用法
- P1489 猫狗大战
- 数据库SQL注入漏洞
- 第 3-7 课:延伸——Flutter Android Studio 开发环境的搭建
- 算法:连续邮资问题(回溯+动态规划+剪枝)
热门文章
- Julia的安装与配置详解(包含在Ubuntu 18.04和Windows 10系统上Julia的安装)
- java pdf分页显示,java读取pdf(可分页读取)
- sql in not in_SQL IN – SQL NOT IN
- scala案例_Scala案例类和案例对象深入(第1部分)
- RPC框架设计概要-性能
- Java面试题:String 和 StringBuffer、StringBuilder 的区别是什么?
- 中国硬科技城市发展指数正式发布,西安跻身前十
- 【Ian Goodfellow 强推】GAN 进展跟踪 10 大论文(附下载)
- STM32CubeMX+Keil裸机代码风格(2)
- 控制input输入框光标的位置