SSM框架的基本介绍

文字概述:

SSM:spring+springMVC+mybaits
Spring:是一个容器,就是一个bean(实体对象)大集合。
SpringMVC:控制器(业务逻辑层)(视图分发器)。
Mybaits:jdbc的封装(数据库框架)Mapper.xml。

三大框架各司其职:

使用spring MVC负责请求的转发和视图管理
spring实现业务对象管理
mybatis作为数据对象的持久化引擎

流程图解:

创建一个web项目

1.在IDEA的工作目录下新建一个文件夹

2.在IDEA中打开这一文件夹

3.选中文件夹右键点击New ->Module

4.之间点击Next

5.输入对应的文件名及其路径

6.成功创建

![image.png](https://img-blog.csdnimg.cn/img_convert/14301e3670e12623c63ebd2cc41f0bd7.png#align=left&display=inline&height=349&margin=[object Object]&name=image.png&originHeight=697&originWidth=1011&size=98141&status=done&style=none&width=505.5)

7.配置IDEA版本及其输出目录:File->Project Structure

![image.png](https://img-blog.csdnimg.cn/img_convert/e7722b9d074e52ba83b6cfbb8c3a53e7.png#align=left&display=inline&height=306&margin=[object Object]&name=image.png&originHeight=612&originWidth=1016&size=106695&status=done&style=none&width=508)

8.添加web-app目录

File->Project Structure->Facets

9.配置webapp对应的路径

上下两个都要配置

10.成功添加webapp目录

11.项目创建完成

相关的配置文件配置

所需的jar包

<dependencies><!--spring相关--><!--spring上下文--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.0.5.RELEASE</version></dependency><!--spring事务管理--><dependency><groupId>org.example</groupId><artifactId>Spring-tx</artifactId><version>1.0-SNAPSHOT</version></dependency><!--aop所需--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.13</version></dependency><!--jdbc--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.0.5.RELEASE</version></dependency><!--mybatis相关--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><!--spring整合mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.2</version></dependency><dependency><groupId>io.github.orange1438</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.5</version></dependency><!--mybatis分页助手--><dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>0.9.1</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>3.7.5</version></dependency><!--数据库相关--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--spring-mvc相关和web相关--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.0.5.RELEASE</version></dependency><!--servlet和jsp--><dependency><groupId>org.apache.tomcat</groupId><artifactId>servlet-api</artifactId><version>6.0.29</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version></dependency><!--测试所需--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!--输入输出相关--><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.1</version></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>20040616</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>net.sf.ezmorph</groupId><artifactId>ezmorph</artifactId><version>1.0.6</version></dependency><dependency><groupId>dev.galasa</groupId><artifactId>gson</artifactId><version>2.8.5</version></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>1.3</version><scope>test</scope></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.8</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.8</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.8</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version></dependency><dependency><groupId>com.github.akarazhev</groupId><artifactId>json-simple</artifactId><version>1.2</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies>

web.xml文件配置

web.xml文件的作用

web.xml是web项目的配置文件,一般的web工程都会用到web.xml来配置,方便大型开发。web.xml主要用来配置Filter,Listener,Servlet等。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的web工程。

具体配置

<!--中文乱码处理--><filter><filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--方法过滤器--><filter><filter-name>hiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><!--设置过滤路径--><filter-mapping><filter-name>hiddenHttpMethodFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--设置spring配置文件全局参数--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:Spring/applicationContext.xml</param-value></context-param><!--设置监听器--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--配置前端控制器--><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:SpringMvc/springMvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><!--配置前端控制器的拦截路径--><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--配置一些页面信息--><error-page><error-code>404</error-code><location>/WEB-INF/errors/404.jsp</location></error-page><error-page><error-code>500</error-code><location>/WEB-INF/errors/500.jsp</location></error-page><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>

Spring 的ApplicationContext.xml文件配置

ApplicationContext.xml文件配置什么

配置注解扫描,配置bean对象,事务管理器等等,就是spring容器的配置文件

具体配置

<!--扫描注解包--><!--扫描除了Controller以外的注解包,那是springmvc的任务--><context:component-scan base-package="com.pjh"><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!--加载数据源配置文件--><context:property-placeholder location="classpath:db.properties"/><!--配置数据源对象--><bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${datasource.connection.driver_class}"/><property name="jdbcUrl" value="${datasource.connection.url}"/><property name="user" value="${datasource.connection.username}"/><property name="password" value="${datasource.connection.password}"/><property name="minPoolSize" value="${datasource.connection.minPoolSize}"/><!--连接池中保留的最大连接数。Default: 15 --><property name="maxPoolSize" value="${datasource.connection.maxPoolSize}"/><!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --><property name="maxIdleTime" value="${datasource.connection.maxIdleTime}"/><!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --><property name="acquireIncrement" value="${datasource.connection.acquireIncrement}"/><!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements 属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 --><property name="maxStatements" value="${datasource.connection.maxStatements}"/><!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 --><property name="maxStatementsPerConnection"value="${datasource.connection.maxStatementsPerConnection}"/><!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 --><property name="initialPoolSize" value="${datasource.connection.initialPoolSize}"/><!--每60秒检查所有连接池中的空闲连接。Default: 0 --><property name="idleConnectionTestPeriod"value="${datasource.connection.idleConnectionTestPeriod}"/><!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --><property name="acquireRetryAttempts"value="${datasource.connection.acquireRetryAttempts}"/><!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效 保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。Default: false --><property name="breakAfterAcquireFailure"value="${datasource.connection.breakAfterAcquireFailure}"/><!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的 时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable等方法来提升连接测试的性能。Default: false --><property name="testConnectionOnCheckout"value="${datasource.connection.testConnectionOnCheckout}"/><property name="checkoutTimeout" value="${datasource.connection.checkoutTimeout}"/><property name="testConnectionOnCheckin"value="${datasource.connection.testConnectionOnCheckin}"/><property name="automaticTestTable" value="${datasource.connection.automaticTestTable}"/><property name="acquireRetryDelay" value="${datasource.connection.acquireRetryDelay}"/><!--自动超时回收Connection--><property name="unreturnedConnectionTimeout" value="${datasource.connection.unreturnedConnectionTimeout}"/><!--超时自动断开--><property name="maxIdleTimeExcessConnections" value="${datasource.connection.maxIdleTimeExcessConnections}"/><property name="maxConnectionAge" value="${datasource.connection.maxConnectionAge}"/></bean><!--事务管理器--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="datasource"/></bean><!--启动声明式事务驱动--><tx:annotation-driven transaction-manager="transactionManager"/><!--spring-->
</beans>

SpringMvc的配置文件配置

SpringMvc.xml配置什么

配置拦截器,以及对Controller注解的扫描,视图解析器等等

具体配置

  <!--扫描注解驱动--><!--仅仅扫描Controller注解驱动即可--><context:component-scan base-package="com.pjh"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!--启动mvc注解驱动--><mvc:annotation-driven/><!--开放静态资源访问权限--><mvc:default-servlet-handler/><!--启动定时任务--><task:annotation-driven/><!--配置视图解析器--><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--前缀--><property name="suffix" value=".jsp"/><!--后缀--><property name="prefix" value="/WEB-INF/view/"/></bean><!--文件上传--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!--上传文件大小限制--><property name="maxUploadSize"><value>10485760</value></property><!--默认编码格式--><property name="defaultEncoding"><value>UTF-8</value></property></bean><!--后台访问拦截器--><mvc:interceptors><mvc:interceptor><!--这是对说有的方法进访问拦截的操作--><mvc:mapping path="/**"/><!--排除一些方法的拦截操作--><mvc:exclude-mapping path="/system/login"/><mvc:exclude-mapping path="/system/get_cpacha"/><mvc:exclude-mapping path="/h-ui/**"/><mvc:exclude-mapping path="/easyui/**"/><mvc:exclude-mapping path="/system/hello"/><!--配置拦截器类的所在路径--><bean class="com.pjh.Interceptor.LoginInterceptor"/></mvc:interceptor></mvc:interceptors>
</beans>

Mybatis的配置文件

Mybatis配置文件配置什么

配置的东西都可以集成到SpringApplication中,包括别名等等

这里的都集成到springApplication中了没有配置

数据库配置文件的具体配置

datasource.connection.driver_class=com.mysql.jdbc.Driver
#设置数据库的连接地址及编码方式
datasource.connection.url=jdbc:mysql://localhost:3309/StudentInformation?useUnicode=true&characterEncoding=utf-8
datasource.connection.username=root
datasource.connection.password=1234
#连接池保持的最小连接数,default : 3(建议使用)
datasource.connection.minPoolSize=3
#连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大,default : 15(建议使用)
datasource.connection.maxPoolSize=15
#连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接。如果为0,则永远不会断开连接,即回收此连接。default : 0 单位 s(建议使用)
datasource.connection.maxIdleTime=0
#连接池在无空闲连接可用时一次性创建的新数据库连接数,default : 3(建议使用)
datasource.connection.acquireIncrement=3
#连接池为数据源缓存的PreparedStatement的总数。由于PreparedStatement属于单个Connection,所以这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement来计算。同时maxStatementsPerConnection的配置无效。default : 0(不建议使用)
datasource.connection.maxStatements=0
#连接池为数据源单个Connection缓存的PreparedStatement数,这个配置比maxStatements更有意义,因为它缓存的服务对象是单个数据连接,如果设置的好,肯定是可以提高性能的。为0的时候不缓存。default : 0(看情况而论)
datasource.connection.maxStatementsPerConnection=0
#连接池初始化时创建的连接数,default : 3(建议使用)
datasource.connection.initialPoolSize=3
#用来配置测试空闲连接的间隔时间。测试方式还是上面的两种之一,可以用来解决MySQL8小时断开连接的问题。因为它保证连接池会每隔一定时间对空闲连接进行一次测试,从而保证有效的空闲连接能每隔一定时间访问一次数据库,将于MySQL8小时无会话的状态打破。为0则不测试。default : 0(建议使用)
datasource.connection.idleConnectionTestPeriod=0
#连接池在获得新连接失败时重试的次数,如果小于等于0则无限重试直至连接获得成功。default : 30(建议使用)
datasource.connection.acquireRetryAttempts=30
#如果为true,则当连接获取失败时自动关闭数据源,除非重新启动应用程序。所以一般不用。default : false(不建议使用)
datasource.connection.breakAfterAcquireFailure=false
#性能消耗大。如果为true,在每次getConnection的时候都会测试,为了提高性能,尽量不要用。default : false(不建议使用)
datasource.connection.testConnectionOnCheckout=false
#配置当连接池所有连接用完时应用程序getConnection的等待时间。为0则无限等待直至有其他连接释放或者创建新的连接,不为0则当时间到的时候如果仍没有获得连接,则会抛出SQLException。其实就是acquireRetryAttempts*acquireRetryDelay。default : 0(与上面两个,有重复,选择其中两个都行)
datasource.connection.checkoutTimeout=30000
#如果为true,则在close的时候测试连接的有效性。default : false(不建议使用)
datasource.connection.testConnectionOnCheckin=false
#配置一个表名,连接池根据这个表名用自己的测试sql语句在这个空表上测试数据库连接,这个表只能由c3p0来使用,用户不能操作。default : null(不建议使用)
datasource.connection.automaticTestTable=c3p0TestTable
#连接池在获得新连接时的间隔时间。default : 1000 单位ms(建议使用)
datasource.connection.acquireRetryDelay=1000
#为0的时候要求所有的Connection在应用程序中必须关闭。如果不为0,则强制在设定的时间到达后回收Connection,所以必须小心设置,保证在回收之前所有数据库操作都能够完成。这种限制减少Connection未关闭情况的不是很适用。建议手动关闭。default : 0 单位 s(不建议使用)
datasource.connection.unreturnedConnectionTimeout=0
#这个配置主要是为了快速减轻连接池的负载,比如连接池中连接数因为某次数据访问高峰导致创建了很多数据连接,但是后面的时间段需要的数据库连接数很少,需要快速释放,必须小于maxIdleTime。其实这个没必要配置,maxIdleTime已经配置了。default : 0 单位 s(不建议使用)
datasource.connection.maxIdleTimeExcessConnections=0
#配置连接的生存时间,超过这个时间的连接将由连接池自动断开丢弃掉。当然正在使用的连接不会马上断开,而是等待它close再断开。配置为0的时候则不会对连接的生存时间进行限制。default : 0 单位 s(不建议使用)
datasource.connection.maxConnectionAge=0

日志文件的配置

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=INFO, stdout

以上就是第二讲的具体内容,就是一些配置文件的简单配置

手把手教你使用SSM框架实现一个学生管理系统第二章之创建一个web工程及相关配置文件的介绍相关推荐

  1. 手把手教你搭建SSM框架(Eclipse版)

    作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白 公众号: [C you again],分享计算机类毕业设计源码.IT技术文章.游戏源码.网页模板.程序人生等等.公众号回复 ...

  2. 基于SSM框架的ERP生产管理系统源码 这是一个ERP生产管理系统

    基于SSM框架的ERP生产管理系统源码 这是一个ERP生产管理系统. 主要包括:计划进度.设备管理.工艺监控.物料监控.人员监控.质量监控.系统管理7大模块,每个模块细分了功能,丰富全面. 系统后台整 ...

  3. 手把手教你搭建SSM框架,简单有效理解SSM框架

    文章目录 1.基本概念 1.1.Spring概念 1.2.SpringMVC概念 1.3.MyBatis概念 2.开发步骤 2.1.maven项目创建 2.2.SSM框架的配置 2.2.1 配置前准备 ...

  4. 手把手教你搭建SSH框架(Eclipse版)

    作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白 公众号: [C you again],分享计算机类毕业设计源码.IT技术文章.游戏源码.网页模板.程序人生等等.公众号回复 ...

  5. JavaEE——SSM框架整合实现学生信息注册案例

    目录 十.SSM框架整合实现学生信息注册案例 1. 创建06-ssm的web项目 2. 修改web.xml版本为4.0 3. 更新pom.xml文件 4. jdbc的属性文件和日志文件 5. appl ...

  6. [51单片机] 从业将近十年!手把手教你单片机程序框架(连载)(转载)

    这个是转载的 http://bbs.21ic.com/icview-691804-1-1.html [51单片机] 从业将近十年!手把手教你单片机程序框架(连载) 大家好,我叫吴坚鸿,从事单片机项目开 ...

  7. Android 开发之手把手教你写 ButterKnife 框架(三)

    系列文章目录导读: Android开发之手把手教你写ButterKnife框架(一) Android开发之手把手教你写ButterKnife框架(二) Android开发之手把手教你写ButterKn ...

  8. 帮忙写基于SSM框架的购物商城管理系统

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

  9. SSM框架实现的垃圾分类管理系统+文档

    项目简介 后端框架:基于SSM框架实现的垃圾分类管理系统源码+论文 技术栈:jsp.bootstrap.jquery.maven.spring.mybatis.springmvc 数据库:Mysql ...

最新文章

  1. java 调度服务器,Quartz Scheduler - 使用PostgreSQL服务器调度作业
  2. 怎么把写好的python代码打包成exe-【Python之点到为止】如何优雅的将你的代码打包成EXE...
  3. Linux文件的权限[srwxr-xr-x]
  4. 类路径是什么意思_多播是什么意思 多播介绍【详解】
  5. SGU247(排列组合与大数运算)
  6. 简述python的编程规范_python编程规范
  7. 5——PHP逻辑运算符唯一的三元运算符
  8. IBAction和IBOutlet
  9. java根据模板生成word文档_Python办公自动化:使用python来自动生成word文档
  10. 《数字电子技术基础》3.3 CMOS门电路(上)
  11. FileZilla Server目录乱码问题的解决
  12. mac linux 引导分区,Paragon ExtFS For Mac v10.0.829 | Linux分区数据读写驱动 _ 黑苹果乐园...
  13. 实验报告 三密码破解技术
  14. HANA 数据库备份还原总结
  15. 手机APP神器大全,这些被堪称神器的APP你用过哪些!
  16. 线上环境频繁GC问题排查,Finalizer对象该背这个锅吗?
  17. 用scrapy+selenium+Firefox爬取腾讯新闻
  18. 比你拼命的人多的是,最可怕的是比你牛的人比你还拼命。。。励志
  19. Revit二次开发_获取视图样式替换
  20. 详解FLETA的Proof-of-Formulation共识算法

热门文章

  1. 软考高级 真题 2009年下半年 信息系统项目管理师 综合知识
  2. 深入理解防火墙的工作原理
  3. deepin安装卡死在蓝色背景_deepin官方论坛-深度科技官网旗下网站
  4. 云数据中心概述与趋势
  5. 菜鸟的Django+MongoDB搭建简单爬虫显示网站踩坑心得
  6. 移植GRBL控制器到ESP32实现写字机器人
  7. vector push_back()值传递到底啥意思?
  8. 一种全新的指令集架构RISC-V
  9. 使用pydub拼接多个MP3音频文件
  10. 在python中对文件操作的一般步骤是_python中对文件的操作