当前位置:网站首页>Handwritten Blog Platform ~ Day Two
Handwritten Blog Platform ~ Day Two
2022-08-02 01:57:00 【hiccup kid paper】
给读者
现在环境各位小伙伴是不是都配好了呢?
那么接下来就是真正的开发了,Idea官网下载链接没给你们,现在给你们:https://youtrack.jetbrains.com/articles/IDEA-A-21/Release-Notes
我下载的是2021.3.2的,对应的“持续学习”开发jar包
天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享 (访问码:6in8)
推荐的Idea配置:可能是最好用的 IDEA 设置_张志帅的博客-CSDN博客
“持续学习”配置文件:
-javaagent:D:\Users\fyp01\ja-netfilter\ja-netfilter.jar
两种方式:
- 第一种:
将下载下来的包放在合适的位置,对ja-netfilter.jar按住Shift右键鼠标复制路径,如果可以打开Idea开发工具的话,去help–>Edit Custom VM Options 将内容复制进去.
- 第二种:
打开Idea安装目录bin下的idea64.exe.vmoptions文件,复制“持续学习”配置信息进去,重新打开即可.
煲鸡汤时间结束,到了开发时间
1. 创建项目
打开Idea手动创建一个maven空项目,要包含几个模块文件夹
- 步骤:
File --> New --> Project --> Maven --> 选择对应的Project SDK(即JDK) --> Next --> Name --> Localtion --> GroupId(com.fyupeng)–> ArtifactId(fyupeng-blog) --> Version(1.0-SNATSHOT)
- 目录结构:
– fyupeng-blog
– fyupeng-blog-commons
– fyupeng-blog-pojo
– fyupeng-blog-mapper
– fyupeng-blog-service
– fyupeng-blog-api
创建1个Project 5个Model,model是在File --> New --> Model 下
操作完成之后检测无错误后,打开根目录pom.xml
2. 配置依赖和配置信息
– fyupeng-blog
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.fyupeng</groupId>
<artifactId>fyupeng-blog</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>fyupeng-博客平台实战</name>
<description>:
Web开发
maven
springmvc
springboot
mybatis
mybatis-pagehelper
redis
druid
mariadb/mysql
mongodb
redis
</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.12.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<mysql.version>8.0.25</mysql.version>
</properties>
<modules>
<module>fyupeng-blog-common</module>
<module>fyupeng-blog-pojo</module>
<module>fyupeng-blog-mapper</module>
<module>fyupeng-blog-service</module>
<module>fyupeng-blog-api</module>
</modules>
</project>
– fyupeng-blog-commons
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.fyupeng</groupId>
<artifactId>fyupeng-blog</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>fyupeng-blog-common</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!-- 排除springboot默认的logback日志框架 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入log4j日志依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
<!-- 引入spring aop依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
</exclusions>
</dependency>
<!-- 资源配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 阿里开源数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!--mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
<!--pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<!-- apache 工具类 -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<!-- swagger2 配置 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<!-- 引入 redis 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.8.7.RELEASE</version>
</dependency>
</dependencies>
</project>
– fyupeng-blog-pojo
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.fyupeng</groupId>
<artifactId>fyupeng-blog</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>fyupeng-blog-pojo</artifactId>
<dependencies>
<dependency>
<groupId>com.fyupeng</groupId>
<artifactId>fyupeng-blog-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
– fyupeng-blog-mapper
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.fyupeng</groupId>
<artifactId>fyupeng-blog</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>fyupeng-blog-mapper</artifactId>
<dependencies>
<dependency>
<groupId>com.fyupeng</groupId>
<artifactId>fyupeng-blog-pojo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
– fyupeng-blog-service
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.fyupeng</groupId>
<artifactId>fyupeng-blog</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>fyupeng-blog-service</artifactId>
<dependencies>
<dependency>
<groupId>com.fyupeng</groupId>
<artifactId>fyupeng-blog-mapper</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
– fyupeng-blog-api
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.fyupeng</groupId>
<artifactId>fyupeng-blog</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>fyupeng-blog-api</artifactId>
<dependencies>
<dependency>
<groupId>com.fyupeng</groupId>
<artifactId>fyupeng-blog-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.12.RELEASE</version>
</plugin>
</plugins>
</build>
</project>
commons主要包含公用的api包
可以直接下载我经常使用到的,链接:GitHub - fyupeng/SoftWare: 软件下载地址
开发第一个接口:
在api模块中的资源目录(resources)中添加文件application.properties文件
加入两行配置信息:
application.properties
############################################################
#
# Server
#
############################################################
server.port=8080
############################################################
# Server - tomcat
############################################################
server.tomcat.uri-encoding=UTF-8
添加日志文件,使日志生效
log4j.properties
log4j.rootLogger=INFO,console,dailyFile
# TODO \u53d1\u5e03\u5230\u963f\u91cc\u4e91\u8bb0\u5f97\u6dfb\u52a0\uff0c\u53e6\u5916\u63a7\u5236\u53f0\u4e0d\u8f93\u51fa(\u53ea\u8f93\u51fawarn\u6216\u8005error\u4fe1\u606f)
# TODO 发布到阿里云记得添加,另外控制台不输出(只输出warn或者error信息)
#INFO,console,dailyFile
#log4j.logger.org.mybatis = DEBUG
log4j.logger.com.tony.mapper=INFO
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.encoding=UTF-8
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%l] - [%p] %m%n
# \u5b9a\u671f\u6eda\u52a8\u65e5\u5fd7\u6587\u4ef6\uff0c\u6bcf\u5929\u90fd\u4f1a\u751f\u6210\u65e5\u5fd7
# 定期滚动日志文件,每天都会生成日志
log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.encoding=UTF-8
log4j.appender.dailyFile.Threshold=INFO
# TODO \u672c\u5730\u65e5\u5fd7\u5730\u5740\uff0c\u6b63\u5f0f\u73af\u5883\u8bf7\u52a1\u5fc5\u5207\u6362\u4e3a\u963f\u91cc\u4e91\u5730\u5740
# TODO 本地日志地址,正式环境请务必切换为阿里云地址
log4j.appender.dailyFile.File=/fyupeng/logs/blog-web/log.log4j
log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%l] - [%p] %m%n
一般配置文件都使用unicode编码,到需要的时候再去解码,否则很容易出现乱码情况
提供Unicode在线编解码工具:在线Unicode编码转换-Unicode和ASCII在线互转-中文转Unicode工具
3. 编写第一个接口
api中新建controller目录
BasicController主要用来配置基本的静态变量,供给继承它的子类Controller使用
package com.fyupeng.controller;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class BasicController {
}
HelloController第一个接口
package com.fyupeng.controller;
import com.fyupeng.pojo.User;
import com.fyupeng.utils.BlogJSONResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/HelloWorld")
@Api(value = "第一个HelloWorld接口", tags = {
"第一个HelloWorld接口的controller"})
public class HelloWorldController extends BasicController{
@ApiOperation(value = "helloWorld", notes = "helloWorld的接口")
@RequestMapping(value = "/helloWorld")
public BlogJSONResult helloWorld() {
User user = new User();
user.setName("小明");
user.setAge(21);
user.setSex("男");
return BlogJSONResult.ok(user);
}
}
接口文档:http://localhost:8080/swagger-ui.html
访问第一个接口:
http://localhost:8080/HelloWorld/helloWorld

编辑切换为居中
添加图片注释,不超过 140 字(可选)
这里提供一个CSDN的在线序列化插件:CSDN开发助手
4. 逆向工程
接下来准备要做的事:逆向工程(顾名思义就是懒得自己写pojo层和mapper层)
逆向工程链接:GitHub - fyupeng/mybatis-generator: mybatis逆向工程
- 创建数据库用户
CREATE USER `fyupeng`@`%` IDENTIFIED WITH mysql_native_password BY '******';
- 授予用户权限
grant all privileges on fyupeng_blog.* to 'fyupeng'@'%' with grant option
- 提示:
with grant option: 多次授权可以叠加权限
这里可以使用'用户名'@'主机'
授权的时候,不可以使用'数据库.'表',可以使用数据库名@‘表’
逆向工程创建User表,我使用的是Navicat
逆向工程我提供了两种:
- 面向接口:
面向接口使用的是maven项目
只需要配置jdbc相关连接和数据库表即可
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="MysqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="com.imooc.utils.MyMapper"/>
</plugin>
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/fyupeng_blog" userId="****" password="****">
<!-- connectionURL属性,防止乱码 -->
<property name="useUnicode" value="true"/>
<!-- connectionURL属性,防止乱码 -->
<property name="characterEncoding" value="utf-8"/>
<!-- connectionURL属性,防止报时间错误 -->
<property name="serverTimezone" value="UTC"/>
<!-- connectionURL属性,防止生成不同数据库同名表的代码 -->
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<!-- 对应生成的pojo所在包 -->
<javaModelGenerator targetPackage="com.fyupeng.pojo" targetProject="mybatis-generatorConfig/src/main/java"/>
<!-- 对应生成的mapper所在目录 -->
<sqlMapGenerator targetPackage="mapper" targetProject="mybatis-generatorConfig/src/main/resources"/>
<!-- 配置mapper对应的java映射 -->
<javaClientGenerator targetPackage="com.fyupeng.mapper" targetProject="mybatis-generatorConfig/src/main/java" type="XMLMAPPER"/>
<table tableName="user"></table>
</context>
</generatorConfiguration>
- 面向配置:
面向配置使用的是xml配置文件
只需要配置jdbc相关连接和数据库表即可
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/fyupeng_blog" userId="****" password="****">
<!-- 若为 8.0 版本以上的 mysql-connector-java 驱动,需要设置 nullCatalogMeansCurrent = true 否则其他表的相同名表会与本表冲突,生成自己不想要的表 -->
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.fyupeng.pojo" targetProject="./mybatisGeneratorSqlmapper/src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.fyupeng.mapper" targetProject="./mybatisGeneratorSqlmapper/src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.fyupeng.mapper" targetProject="./mybatisGeneratorSqlmapper/src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table schema="" tableName="user"></table>
</context>
</generatorConfiguration>
最大化压缩开发成本,我采用面向接口开发
先把生成的几个文件放到对应的model中,util下的MyMapper放到commons包下的utils下
配置数据库jdbc连接池,需要到application.properties中添加配置信息:
spring.datasource.url=jdbc:mysql://localhost:3306/fyupeng_blog?useUnicode=true&characterEncoding=utf8&useJDBCComplliantTimezoneShift=true\
&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=fyupeng
spring.datasource.password=*****
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.stat-view-servlet.allow=true
然后也有mapper.xml文件,放到mapper模块的resources里mapper文件夹下
这个文件夹需要告诉springboot去扫描并将实例对象放到spring容器中,所以可以在application.xml添加配置信息:
############################################################
#
# mybatis 配置
#
############################################################
# mybatis 配置
mybatis.type-aliases-package=com.fyupeng.pojo
mybatis.mapper-locations=classpath:mapper/*.xml
# 通用 Mapper 配置
mapper.mappers=com.fyupeng.utils.MyMapper
mapper.not-empty=false
mapper.identity=MYSQL
# 分页插件配置
pagehelper.helperDialect=mysql
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
初步配置完成
6. 开发第二个接口
用来测试MySQL数据库
@ApiOperation(value = "testMysql", notes = "测试数据库的接口")
@RequestMapping(value = "/testMysql")
public BlogJSONResult testMysql() {
User user = new User();
user.setId(Sid.next());
user.setName("小明");
user.setAge(21);
user.setSex("男");
userMapper.insert(user);
return BlogJSONResult.ok();
}
出现数据表乱码,导致ERROR 1366 (HY000): Incorrect string value: '\xE5\xB0\x8F\xE6\x98\x8E' for column 'name' at row 1
可使用下面方法设置,所有字段都会生效
alter table user convert to character set utf8;
数据库的话在创建时附加default charset=utf8即可解决乱码问题

编辑切换为居中
数据表
更精彩的在第三天,嗝屁小孩纸正持续跟进中…
出现任何bug可随时联系作者,我会第一时间为你们解决疑惑,大家一起干完这一票,就再一起去干其他更有趣的事哈哈.
顺便分享给各位已经完成的博客,这次开发算是第二次开发,主要还是把自己学到的分享出去,当然自己肯定也会有所收获!
明天就把链接给大家,希望明天见!
顺便给分享自己几年来做的技术专栏:https://github.com/fyupeng
边栏推荐
- AOF rewrite
- 当关注「互联网+」模式的时候,通常仅仅只是在关注「互联网+」模式本身
- LeetCode Review Diary: 153. Find the Minimum Value in a Rotated Sort Array
- MySQL optimization strategy
- Rust P2P Network Application Combat-1 P2P Network Core Concepts and Ping Program
- typeof in typescript32-ts
- The characteristics and principle of typescript29 - enumeration type
- 飞桨开源社区季度报告来啦,你想知道的都在这里
- 求大神解答,这种 sql 应该怎么写?
- 搜罗汇总的效应
猜你喜欢

手写博客平台~第二天

【图像融合】基于加权和金字塔实现图像融合附matlab代码

MySQL optimization strategy

制造企业数字化转型现状分析

Redis Subscription and Redis Stream

LeetCode刷题日记:LCP 03.机器人大冒险

Data transfer at the data link layer

kubernetes之服务发现

字节给我狠狠上了一课:危机来的时候你连准备时间都没有...

Some insights from 5 years of automated testing experience: UI automation must overcome these 10 pits
随机推荐
有效进行自动化测试,这几个软件测试工具一定要收藏好!!!
PHP 使用 PHPRedis 与 Predis
60种特征工程操作:使用自定义聚合函数【收藏】
超大规模的产业实用语义分割数据集PSSL与预训练模型开源啦!
LeetCode Review Diary: 34. Find the first and last position of an element in a sorted array
HSDC和独立生成树相关
Rust P2P Network Application Combat-1 P2P Network Core Concepts and Ping Program
Named parameter implementation of JDBC PreparedStatement
成都openGauss用户组招募啦!
The Paddle Open Source Community Quarterly Report is here, everything you want to know is here
JDBC PreparedStatement 的命名参数实现
【ORB_SLAM2】SetPose、UpdatePoseMatrices
记录一次数组转集合出现错误的坑点,尽量使用包装类型数组进行转换
大话西游无法登陆解决
云和恩墨:让商业数据库时代的价值在openGauss生态上持续繁荣
Yunhe Enmo: Let the value of the commercial database era continue to prosper in the openGauss ecosystem
Constructor instance method of typescript36-class
『网易实习』周记(三)
雇用WordPress开发人员:4个实用的方法
三本毕业的我被腾讯拒绝了十四次,最终成功入职阿里