2022黑马SpringBoot跟学笔记(二)

2023-10-31

2.4 多环境配置

新建项目springboot_04_profile

Group:com.itheima
Artifact:springboot_04_profile

在这里插入图片描述
创建控制层
在这里插入图片描述

以后在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的。
在这里插入图片描述
来回的修改配置会很麻烦,而 SpringBoot 给开发者提供了多环境的快捷配置,需要切换环境时只需要改一个配置即可。不同类型的配置文件多环境开发的配置都不相同,接下来对不同类型的配置文件进行说明。

2.4.1 yaml文件

在 application.yml 中使用 — 来分割不同的配置,内容如下
在这里插入图片描述
application.yml

#开发环境
server:
  port: 9000
spring:
  profiles: dev
---
#生产环境
server:
  port: 9001
spring:
  profiles: pro
---
#测试环境
server:
  port: 9002
spring:
  profiles: test

上面配置中 spring.profiles 是用来给不同的配置起名字的。而如何告知 SpringBoot 使用哪段配置呢?可以使用如下配置来启用都一段配置。
application.yml

#设置启用的环境
spring:
  profiles:
    active: dev #表示使用的是开发环境

综上所述, application.yml 配置文件内容如下

#设置启用的环境
spring:
  profiles:
    active: dev #表示使用的是开发环境
---
#开发环境
server:
  port: 9000
spring:
  profiles: dev

---
#生产环境
server:
  port: 9001
spring:
  profiles: pro
---
#测试环境
server:
  port: 9002
spring:
  profiles: test

重新启动,看一下控制台启动的端口号,是开发的
在这里插入图片描述

注意
在上面配置中给不同配置起名字的 spring.profiles 配置项已经过时。最新用来起名字的配置项是:
在这里插入图片描述
application.yml
在这里插入图片描述
application.yml代码如下:

#开发环境
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 9000

我们再重启一下,一样是开发库的端口
在这里插入图片描述

2.4.2 properties文件

properties 类型的配置文件配置多环境需要定义不同的配置文件。
在这里插入图片描述

在application.properties中配置

#设置启动的环境
spring.profiles.active=dev
  • 新建application-dev.properties,它是开发环境的配置文件。我们在该文件中配置端口号为 7000
server.port=7000
  • application-test.properties 是测试环境的配置文件。我们在该文件中配置端口号为 7001
server.port=7001
  • application-pro.properties 是生产环境的配置文件。我们在该文件中配置端口号为 7002
server.port=7002

配置文件如下
在这里插入图片描述

SpringBoot 只会默认加载名为 application.properties 的配置文件(优先级高),启动应用
在这里插入图片描述
这时候我们把application.properties修改一下

#设置启动的环境
spring.profiles.active=pro

再启动一下
在这里插入图片描述

2.4.3 命令行启动参数设置

把几个文件拖到bak中
在这里插入图片描述
设置文件的编码,更改成UTF-8
在这里插入图片描述
执行clean然后再package
在这里插入图片描述

使用 SpringBoot 开发的程序以后都是打成 jar 包,通过 java -jar xxx.jar 的方式启动服务的。那么就存在一个问题,如何切换环境呢?因为配置文件打到的jar包中了。
我们知道 jar 包其实就是一个压缩包,可以解压缩,然后修改配置,最后再打成jar包就可以了。这种方式显然有点麻烦,而 SpringBoot 提供了在运行 jar 时设置开启指定的环境的方式,如下
在这里插入图片描述

java -jar springboot_04_profile-0.0.1-SNAPSHOT.jar

打包完,看一下端口9000
在这里插入图片描述
和配置的application.yml中配置的一样
在这里插入图片描述
切换测试端口
在这里插入图片描述
指令如下

java -jar springboot_04_profile-0.0.1-SNAPSHOT.jar --spring.profiles.active=test

那么这种方式能不能临时修改端口号呢?也是可以的,可以通过如下方式

java -jar springboot_04_profile-0.0.1-SNAPSHOT.jar --server.port=8888

输入后,端口更改
在这里插入图片描述

当然也可以同时设置多个配置,比如即指定启用哪个环境配置,又临时指定端口,如下:

java -jar springboot_04_profile-0.0.1-SNAPSHOT.jar --spring.profiles.active=test --server.port=8888

输入指令如下:
在这里插入图片描述
测试的端口是9002,命令行的端口是8888,这里说明生效的是888.

大家进行测试后就会发现命令行设置的端口号优先级高(也就是使用的是命令行设置的端口号),配置的优先级其实SpringBoot 官网已经进行了说明,参见 :

官网设置
进入上面网站后会看到如下页面
在这里插入图片描述
如果使用了多种方式配置同一个配置项,优先级高的生效

2.4.4多环境开发控制

在这里插入图片描述
以profile为例,如果Maven和Spring Boot都有profile,那么以Maven为主
一般来说是Maven控制版本,Spring Boot加载Maven的版本。

创建Maven

Group:com.itheima
Artifact:springboot_05_maven_and_boot_profile

在这里插入图片描述
在pom.xml中增加

 <profiles>
        <!-- 开发环境 -->
        <profile>
            <id>dev</id>
            <properties></properties>
        </profile>

        <!-- 测试环境 -->
        <profile>
            <id>test</id>
            <properties></properties>
        </profile>

        <!-- 生产环境 -->
        <profile>
            <id>pro</id>
            <properties></properties>
            <!-- 默认启动 -->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
    </profiles>

新建application.yml

#设置启用的环境
spring:
  profiles:
    active: dev

---
#开发
spring:
  profiles: dev

server:
  port: 9000

---
#生产
spring:
  profiles: pro

server:
  port: 9001
---
#测试
spring:
  profiles: test

server:
  port: 9002

相当于现在是Maven和SpringBoot的正面交锋,到底会采用哪个端口呢?
在这里插入图片描述
我们执行打包指令
在这里插入图片描述
去打包的文件夹中输入cmd指令
在这里插入图片描述
输入指令

java -jar springboot_05_maven_and_boot_profile-0.0.1-SNAPSHOT.jar

看一下启动的端口号是9000
在这里插入图片描述
发现生效的是application.yml的配置,这是为什么呢,和之前说的优先Maven配置好像不太一样啊,原来是我们在pom.xml中并没有指定名称。
修改pom.xml

<!-- 测试环境 -->
        <profile>
            <id>test</id>
            <properties>
                <profile.active>test</profile.active>
            </properties>
        </profile>

        <!-- 生产环境 -->
        <profile>
            <id>pro</id>
            <properties>
                <profile.active>pro</profile.active>
            </properties>
            <activation>
                <!-- 默认启动 -->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
    </profiles>

修改profile
在这里插入图片描述
修改application.yml
在这里插入图片描述
代码如下

#设置启用的环境
spring:
  profiles:
    active: ${profile.active}

clean后再package
在这里插入图片描述
之后重复步骤,在jar包的文件夹中执行命令

java -jar springboot_05_maven_and_boot_profile-0.0.1-SNAPSHOT.jar

执行后发现端口是8080
在这里插入图片描述
这就更奇怪了,为啥会变成默认的8080端口呢,我们打开jar包的application.yml看一下,发现没有解析
在这里插入图片描述
修改application.yml
在这里插入图片描述
application.yml中对参数进行解析
在这里插入图片描述
配置如下:

<!-- 增加插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <useDefaultDelimiters>true</useDefaultDelimiters>
                </configuration>
            </plugin>

再重新clean和package一下
在这里插入图片描述
再重复上面的步骤重新去jar包所在的目录执行cmd

java -jar springboot_05_maven_and_boot_profile-0.0.1-SNAPSHOT.jar

这次如愿以偿,跑了正式库的9091端口
在这里插入图片描述
我们再看一下jar包中的配置文件application.yml

在这里插入图片描述

2.5 配置文件分类

在这里插入图片描述
有这样的场景,我们开发完毕后需要测试人员进行测试,由于测试环境和开发环境的很多配置都不相同,所以测试人员在运行我们的工程时需要临时修改很多配置,如下:

java –jar springboot.jar –-spring.profiles.active=test --server.port=85 --
server.servlet.context-path=/heima --server.tomcat.connection-timeout=-1 …… …… …… …… ……

针对这种情况, SpringBoot 定义了配置文件不同的放置的位置;而放在不同位置的优先级时不同的。
SpringBoot 中4级配置文件放置位置:
(级别低)

  • 1级:classpath:application.yml
  • 2级:classpath:config/application.yml
  • 3级:file :application.yml
  • 4级:file :config/application.yml

(级别高)
3级与4级留做系统打包后设置通用属性
1级和2级用于系统开发阶段设置通用属性

说明:级别越高优先级越高

2.5.1 代码演示

在这里我们只演示不同级别配置文件放置位置的优先级。

2.5.1.1 环境准备

创建一个名为 springboot_06_config_file 的 SpringBoot 工程,目录结构如下

Group:com.itheima
Artifact:springboot_06_config_file

在这里插入图片描述
在 resources 下创建一个名为 config 的目录,在该目录中创建 application.yml 配置文件,而在该配置文件中将端口号设置为 8001 ,内容如下
在这里插入图片描述
配置如下:

server:
  port: 8001

而在 resources 下创建的 application.yml 配置文件中并将端口号设置为 8000 ,内容如下

server:
  port: 8000

2.5.1.2 验证1级和2级的优先级

运行启动引导类,可以在控制台看到如下日志信息
在这里插入图片描述

通过这个结果可以得出类路径下的 config 下的配置文件优先于类路径下的配置文件。
所以我们可以给config中配置一个application.yml用于本地开发库的配置,自己debug代码,到测试库的时候,就把这里面的清空即可。

2.5.1.3 验证2级和4级的优先级

要验证4级,按照以下步骤完成

  • 将工程打成 jar 包
    点击工程的 package 来打 jar 包
    在这里插入图片描述
  • 在硬盘上找到 jar 包所在位置
    在这里插入图片描述
  • 在 jar 包所在位置创建 application.yml 配置文件,而在该配置文件中将端口号设置为 8002
    在这里插入图片描述

在命令行使用以下命令运行程序:

java -jar springboot_06_config_file-0.0.1-SNAPSHOT.jar

输出结果如下:
在这里插入图片描述
发现新配置的application.yml的端口的优先级高。

  • 在 jar 包所在位置创建 config 文件夹,在该文件夹下创建 application.yml 配置文件,而在该配置文件中将端口号设置为 8003
  • 在这里插入图片描述

在命令行使用以下命令运行程序:

java -jar springboot_06_config_file-0.0.1-SNAPSHOT.jar

运行后日志信息如下
在这里插入图片描述

通过这个结果可以得出file: config 下的配置文件优先于类路径下的配置文件。

注意
SpringBoot 2.5.0版本存在一个bug,我们在使用这个版本时,需要在 jar 所在位置的 config 目录下创建一个任意名称的文件夹。

3.SpringBoot整合junit

回顾 Spring 整合 junit

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class UserServiceTest {
    @Autowired
    private BookService bookService;
    @Test
    public void testSave(){
        bookService.save();
    }
}

使用 @RunWith 注解指定运行器,使用 @ContextConfiguration 注解来指定配置类或者配置文件。而 SpringBoot 整合junit 特别简单,分为以下三步完成

  • 在测试类上添加 SpringBootTest 注解
  • 使用 @Autowired 注入要测试的资源
  • 定义测试方法进行测试

3.1 环境准备

创建一个名为 springboot_07_test 的 SpringBoot 工程,工程目录结构如下

Group:com.itheima
Artifact:springboot_07_test

在这里插入图片描述
这里不勾选spring web
在这里插入图片描述
看一下pom.xml
在这里插入图片描述
在 com.itheima.service 下创建 BookService 接口,内容如下

public interface BookService {
    void save();
}

在 com.itheima.service.impl 包写创建一个 BookServiceImpl 类,使其实现 BookService 接口,内容如下

@Service
public class BookServiceImpl implements BookService {
    @Override
    public void save() {
        System.out.println("BookServiceImpl.save()");
    }
}

3.2 编写测试类

在 test/java 下创建 com.itheima 包,在该包下创建测试类,将 BookService 注入到该测试类中
Springboot07TestApplicationTests.java

@SpringBootTest
class Springboot07TestApplicationTests {
    @Autowired
    private BookService bookService;

    @Test
    void contextLoads() {
        bookService.save();
    }

}

运行测试类
在这里插入图片描述

注意:这里的引导类所在包必须是测试类所在包及其子包。
例如:

  • 引导类所在包是 com.itheima
  • 测试类所在包是 com.itheima

在这里插入图片描述

如果不满足这个要求的话,就需要在使用 @SpringBootTest 注解时,使用 classes 属性指定引导类的字节码对象。如
@SpringBootTest(classes = Springboot07TestApplication.class)

比如我们新建包test,将Springboot07TestApplicationTests.java移入
在这里插入图片描述
移入后再运行测试类,发现报错
在这里插入图片描述
修改Springboot07TestApplicationTests.java
增加属性值
在这里插入图片描述

代码如下:

@SpringBootTest(classes = Springboot07TestApplication.class)

再次运行,不再报错
在这里插入图片描述

4.SpringBoot整合mybatis

在这里插入图片描述
所以我们主要学习SpringBoot整合MyBatis

4.1 回顾Spring整合Mybatis

Spring 整合 Mybatis 需要定义很多配置类

  • SpringConfig 配置类
  • 导入 JdbcConfig 配置类
  • 导入 MybatisConfig 配置类
@Configuration
@ComponentScan("com.itheima")
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class,MyBatisConfig.class})
public class SpringConfig {
}
  • JdbcConfig 配置类
    定义数据源(加载properties配置项:driver、url、username、password)
public class JdbcConfig {
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String userName;
    @Value("${jdbc.password}")
    private String password;
    @Bean
    public DataSource getDataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(userName);
        ds.setPassword(password);
        return ds;
    }
}
  • MybatisConfig 配置类
    定义 SqlSessionFactoryBean
    定义映射配置
    @Bean
    public MapperScannerConfigurer getMapperScannerConfigurer(){
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        msc.setBasePackage("com.itheima.dao");
        return msc;
    }
    @Bean
    public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){
        SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
        ssfb.setTypeAliasesPackage("com.itheima.domain");
        ssfb.setDataSource(dataSource);
        return ssfb;
    }

4.2 SpringBoot整合mybatis

4.2.1 创建模块

  • 创建新模块,选择 Spring Initializr ,并配置模块相关基础信息

Group:com.itheima
Artifact:springboot_08_mybatis

在这里插入图片描述

  • 选择当前模块需要使用的技术集(MyBatis、MySQL)

在这里插入图片描述
上面的版本更改为2.7.8,如果没有更改,后续更改pom.xml也可以
在这里插入图片描述
依赖中新增的就是我们打勾的
在这里插入图片描述

4.2.2 定义实体类

在 com.itheima.domain 包下定义实体类 Book ,内容如下

public class Book {
    private Integer id;
    private String name;
    private String type;
    private String description;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", type='" + type + '\'' +
                ", description='" + description + '\'' +
                '}';
    }
}

4.2.3 定义dao接口

在 com.itheima.dao 包下定义 BookDao 接口,内容如下

@Repository
public interface BookDao {
    @Select("select * from tbl_book where id = #{id}")
    public Book getById(Integer id);
}

4.2.4 定义测试类

在 test/java 下定义包 com.itheima ,在该包下测试类,内容如下

@SpringBootTest
class Springboot08MybatisApplicationTests {
    @Autowired
    private BookDao bookDao;

    @Test
    void contextLoads() {
        Book book = bookDao.getById(1);
        System.out.println("book:"+book);
    }

}

4.2.5 编写配置

我们代码中并没有指定连接哪儿个数据库,用户名是什么,密码是什么。所以这部分需要在 SpringBoot 的配置文件中进行配合。
在 application.yml 配置文件中配置如下内容:

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db
    username: root
    password: hsp

4.2.6 测试

运行测试方法,我们会看到如下错误信息
在这里插入图片描述

错误信息显示在 Spring 容器中没有 BookDao 类型的 bean 。为什么会出现这种情况呢?
原因是 Mybatis 会扫描接口并创建接口的代码对象交给 Spring 管理,但是现在并没有告诉 Mybatis 哪个是 dao 接口。而我们要解决这个问题需要在 BookDao 接口上使用 @Mapper , BookDao 接口改进为:

@Mapper
public interface BookDao {
    @Select("select * from tbl_book where id = #{id}")
    public Book getById(Integer id);
}

运行测试类
在这里插入图片描述
与数据库一致
在这里插入图片描述

注意
SpringBoot 版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC ,或在MySQL数据库端配置时区解决此问题。

此时我们的数据源是默认的,如果我们想用德鲁伊呢

4.2.7 使用Druid数据源

现在我们并没有指定数据源, SpringBoot 有默认的数据源,我们也可以指定使用 Druid 数据源,按照以下步骤实现

  • 导入 Druid 依赖
        <!-- Druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>
  • 在 application.yml 配置文件配置
    可以通过 spring.datasource.type 来配置使用什么数据源。配置文件内容可以改进为
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db
    username: root
    password: hsp
    type: com.alibaba.druid.pool.DruidDataSource

再重新测试一下,成功输出
在这里插入图片描述

这里mysql8之后需要更改配置

spring:
  datasource:
    #driver-class-name: com.mysql.jdbc.Driver
    driver-class-name: com.mysql.cj.jdbc.Driver
    #url: jdbc:mysql://localhost:3306/ssm_db
    url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
    username: root
    password: hsp
    type: com.alibaba.druid.pool.DruidDataSource

更改之后警告就没了。

5.案例

SpringBoot 到这就已经学习完毕,接下来我们将学习 SSM 时做的三大框架整合的案例用 SpringBoot 来实现一下。我们
完成这个案例基本是将之前做的拷贝过来,修改成 SpringBoot 的即可,主要从以下几部分完成

  1. pom.xml
    配置起步依赖,必要的资源坐标(druid)
  2. application.yml
    设置数据源、端口等
  3. 配置类
    全部删除
  4. dao
    设置@Mapper
  5. 测试类
  6. 页面

放置在resources目录下的static目录中

在这里插入图片描述

5.1 创建工程

创建 SpringBoot 工程,在创建工程时需要勾选 web 、 mysql 、 mybatis ,工程目录结构如下

Group:com.itheima
Artifact:springboot_09_ssm

在这里插入图片描述
勾选3个
在这里插入图片描述

由于我们工程中使用到了 Druid ,所以需要导入 Druid 的坐标
pom.xml

<!--Druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>

更改spring boot的版本
在这里插入图片描述
确认无误即可
在这里插入图片描述

5.2 代码拷贝

将 springmvc_11_page 工程中的 java 代码及测试代码连同包拷贝到 springboot_09_ssm 工程,按照下图进行拷贝。
在这里插入图片描述

需要修改的内容如下:

  • Springmvc_11_page 中 config 包下的是配置类,而 SpringBoot 工程不需要这些配置类,所以这些可以直接删除

  • dao 包下的接口上在拷贝到 springboot_09-ssm 工程中需要在接口中添加 @Mapper 注解
    在这里插入图片描述

  • BookServiceTest 测试需要改成 SpringBoot 整合 junit 的。

@SpringBootTest
public class BookServiceTest {

    @Autowired
    private BookService bookService;

    @Test
    public void testGetById(){
        Book book = bookService.getById(1);
        System.out.println(book);
    }

    @Test
    public void testGetAll(){
        List<Book> all = bookService.getAll();
        System.out.println(all);
    }

}

5.3 配置文件

在 application.yml 配置文件中需要配置如下内容

  • 服务的端口号
  • 连接数据库的信息
  • 数据源
spring:
  datasource:
    #driver-class-name: com.mysql.jdbc.Driver
    driver-class-name: com.mysql.cj.jdbc.Driver
    #url: jdbc:mysql://localhost:3306/ssm_db
    url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
    username: root
    password: hsp
    type: com.alibaba.druid.pool.DruidDataSource
server:
  port: 9000

先跑一下测试类
在这里插入图片描述

5.4 静态资源

在 SpringBoot 程序中是没有 webapp 目录的,那么在 SpringBoot 程序中静态资源需要放在什么位置呢?
静态资源需要放在 resources 下的 static 下,如下图所示
在这里插入图片描述
启动Springboot09SsmApplication.java
输入网址

http://localhost:9000/pages/books.html

跳转成功
在这里插入图片描述
新建一个首页index.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<h1></h1>
<script>
    document.location.href="pages/books.html"
</script>
</body>
</html>

在这里插入图片描述
之后重启
输出地址

http://localhost:9000/

回车后即可跳转
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022黑马SpringBoot跟学笔记(二) 的相关文章

  • 如何将 JSpinner 的值设置为特定日期

    我有一个JSpinner我添加到JPanel我想将其时间设置为 GregorianCalendar calendar JSpinner spinner new JSpinner spinner setModel model pom add
  • 如何在log4j的配置文件中为文件附加器提供环境变量路径

    我有一个log4j xml配置文件 和一个RollingFileAppender我需要提供用于存储日志的文件路径 问题是我的代码将作为可运行的 jar 部署在 Unix 机器上 所以如果我传递这样的参数 value logs message
  • 如何提取文件 jre-9/lib/modules?

    In JRE 9 lib目录 至少在 Windows 上 有一个名为modules其大小约为107 MB 是否可以提取该文件或在其中列出 java 模块 我可以看到一个名为jmod可以在jdk 9 bin jmod exe 但那是为了阅读
  • 检查 IPv4 地址是否在私有范围内

    在 Python 中 使用 IPy 模块您可以执行以下操作 gt gt gt ip iptype PRIVATE 有没有一个库或简单的方法可以在 Java 中执行相同的操作 似乎不完全是但是InetAddress有一些 isXX 方法 例如
  • 使用 JSch 分别为各个提示提供输入

    问题是 SSH 连接需要在常规登录后提供另一个用户 ID 和密码信息 我正在使用 JSch 连接到远程服务器 它接受以下形式的输入InputStream 和这个InputStream只能通过一次 由于会话是交互式的 这会导致问题 我尝试将输
  • java中的单链表和双向链表?

    在java中 哪个集合接口可以有效地实现单链表和双向链表 请问代码示例吗 毫不奇怪 实现双向链表的正确接口是 LinkedList 看Java文档 http docs oracle com javase 8 docs api java ut
  • Java - JPanel 内有边距和 JTextArea

    我想创建这样的东西 主面板有其边距 x 并且 TextArea 位于该面板的中心 几乎填满了面板 底部是另一个具有自定义尺寸 高度 y 的面板 可以使用某些快捷方式将其切换为可见和不可见 底部面板有 FlowLayout 和几个元素 问题是
  • Java 中的 ExecuteUpdate sql 语句不起作用

    我正在学习如何将 SQL 与 Java 结合使用 我已成功安装 JDBC 驱动程序 并且能够从数据库读取记录并将其打印在屏幕上 我的问题发生在尝试执行更新或插入语句时 没有任何反应 这是我的代码 问题所在的方法 public static
  • 从 HttpClient 3 转换为 4

    我已经成功地对所有内容进行了更改 但以下内容除外 HttpClient client HttpPost method client new DefaultHttpClient method new HttpPost url InputStr
  • 如何在 Bean Validation 1.0 中构造 ConstraintViolationException?

    我对 javax validation API 感到困惑 我正在编写一个简单的测试来理解它 Sample sample new Sample Set
  • JAXB 编组器无参数默认构造函数

    我想从 java 库中编组一个 java 对象 当使用 JAXB marschaller 编组 java 对象时 我遇到了一个问题 A 类没有无参数默认构造函数 我使用Java Decompiler来检查类的实现 它是这样的 public
  • 如何检查日期字符串的有效性?

    在我的项目中 我需要检查日期字符串是否计算为正确的日期对象 我决定允许 yyyy MM dd 和日期格式 年 月 日 和 年 月 日 小时 分钟 我如何检查它们是否有效 我的代码为 1980 01 01 和一些奇怪的日期 如 3837 05
  • Java 中处理异步响应的设计模式

    我读过类似问答的答案 如何在 JAVA 中创建异步 HTTP 请求 https stackoverflow com questions 3142915 how do you create an asynchronous http reque
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • Java:一个函数有多种返回类型...可以使用泛型吗?

    为了简单起见 我有一些程序 如下所示 public String fetchValueAsString String key public DateTime fetchValueAsDateTime String key 我想要类似的东西
  • JPA 将 BigDecimal 作为整数保存在数据库中

    我在数据库中有这个字段 ITEMCOST NUMERIC 13 DEFAULT 0 NOT NULL 在JAVA中 Entity中的字段定义如下 Column name ITEMCOST private BigDecimal itemCos
  • 如何将库添加到 LIBGDX 项目的依赖项 gradle

    一切都在问题中 我已经尝试了在 SO 和其他网站中找到的所有答案 但没有运气 这就是我迄今为止尝试过的 adding compile fileTree dir lib include jar 到我的 build gradle adding
  • 如何使用注释处理 Hibernate 和 Spring 中的连接查询?

    我正在使用 Spring 和 Hibernate 以及 MySQL 开发应用程序 我是 Hibernate 新手 完成了基本任务 现在我需要在选择查询中应用联接以使用注释从多个表中获取数据 我已经搜索过但仍然没有任何想法 这是我的数据库表和
  • java.lang.ClassCastException:com.sun.proxy.$Proxy8 无法转换为 org.openqa.selenium.internal.WrapsDriver

    我有以下切入点和 AspectJ 中给出的建议 Pointcut call org openqa selenium WebElement sendKeys public void onWebElementAction After onWeb
  • 如何使用 Jest 从 ElasticSearch 获取索引列表

    我正在尝试使用 Jest 检索索引列表 但我只得到 Stats statistics new Stats Builder build result client execute statistics 如何从结果中检索索引列表 除了统计之外

随机推荐

  • NDK No implementation found for void com.*

    android jni 遇到报错No implementation found for void com 很多时候遇到这种情况 查找不到原因 还有的时候 之前好好的 后来出错了 再去检查C代码确实有实现的方法 那么问题在哪呢 这边建议去查看
  • css 行高

    1 什么是行高 以及行高的概念 我们可以试想一下 为什么会要有行高 我现在不需要行高不是完全可以的嘛 我们可以仔细看看这个 这不是很正常的嘛 那我们来看看这个 那当我们第一次看到这个的时候你觉得是横着度 还是竖着读 合理的行高可以让我们阅读
  • 打印ONNX/TRT文件的所有节点

    给一段python代码 可以查看 onnx文件的所有节点 import onnx def print graph nodes model path 加载 ONNX 模型 model onnx load model path 遍历所有图节点并
  • 量化策略——准备2 量化技能树&量化术语

    文章目录 量化技能树 量化 金融术语 1 俗语 2 持仓术语 3 资金术语 4 策略术语 5 股票软件界面实用术语 量化必然用到的核心价格数据 其他数据 指标含义 6 委托单术语 量化技能树 首先 量化金融 Quantitative Fin
  • leetcode 有效的括号(栈)

    有效的括号 给定一个只包括 的字符串 判断字符串是否有效 有效字符串需满足 左括号必须用相同类型的右括号闭合 左括号必须以正确的顺序闭合 注意空字符串可被认为是有效字符串 示例 1 输入 输出 true 示例 2 输入 输出 true 示例
  • 前端实现表单嵌套表格,el-form内部包着el-table并实现校验功能与动态添加表格的表单数据

    一 待实现的场景图 如下 二 元素部分实现方式代码如下图
  • 【开发工具集】Process Explorer——进程资源管理器

    进程资源管理器 特性 Process Explorer 是 Sysinternals 出品的工具 其在功能方面的独特之处有以下几点 显示进程安全令牌 比如安全组列表 特权 以及虚拟化状态 加亮显示进程和线程列表中的变化 列出服务宿主进程中的
  • vue_cli的vue.config.js文件常用配置

    vue cli的vue config js文件 vue config js文件常用配置 vue config js文件常用配置 module exports 手机端访问 devServer disableHostCheck false 安装
  • 父子组件通信

    父子组件通信 父子之间数据的传递 根组件data传子组件 当子组件props里的对象名有大写时出现的问题 props驼峰标识 子组件传父组件 父子之间的访问 父组件访问子组件的内容 父子之间数据的传递 根组件data传子组件 在子组件使用p
  • k8s容忍度和污点(固定只运行某个服务)

    Taints污点的组成 使用kubectl taint命令可以给某个Node节点设置污点 Node被设置污点之后就和Pod之间存在一种相斥的关系 可以让Node拒绝Pod的调度执行 甚至将Node上已经存在的Pod驱逐出去 每个污点的组成如
  • [蓝桥杯] 方格填数 (Python 实现)

    题目 代码 import itertools a x for x in range 10 b list itertools permutations a 10 def check nums def jduge y x move 1 0 1
  • SpringBoot 升级内嵌Tomcat

    SpringBoot 更新 Tomcat 最近公司的一个老项目需要升级下Tomcat 由于这个项目我完全没有参与 所以一开始我以为是一个老的Tomcat项目 升级它的Tomcat依赖或者是Tomcat容器镜像 后面发现是一个SpringBo
  • .net应用程序和工具

    1 1 从 NET Framework 到 NET Core 再到 NET net的第一个版本发布于2002年 从那之后 net发生了很多变化 net的第一个时代是 net framework的时代 它为Windows桌面开发提供了Wind
  • 多个Ajax请求成功后再执行后续方法

    经常会遇到需要ajax请求完毕后调用某方法 这次是多个ajax请求成功后 用它们返回的数据传参给回调方法 查询了一下 可以用jquery中的 when 使用方法如下 when ajax ajax ajax done function a1
  • centos6安装jenkins配置及使用

    本文的安装步骤说明环境为 centos6 9操作系统 jenkins2 138 安装jenkins 下载rpm文件 下载地址 https pkg jenkins io redhat 该说明中使用的是jenkins 2 138 1 1 noa
  • typora 快速复制excel到typora

    思想是把表格转换成html格式 复制到typora中 然后点击右上角 红色框的html 点击对号 就可以切换到表格了 有免费在线的切换工具 参考 http pressbin com tools excel to html table ind
  • 小孩子有没有学机器人编程的必要

    小孩子有没有学机器人编程的必要 对于很多的家长们来说 孩子的学习一直都是他们十分关心和重视的一件事情 很多的家长在培养孩子的学习方面也可以说是十分的用心的 他们会给孩子选择一些能够提升孩子能力的课程 就拿现在很多的家长想要孩子去学习机器人编
  • 在python中使用最小二乘法画出拟合曲线_基于jupyter notebook的python编程-----运用最小二乘法,导入文件数据模拟一元线性回归分析...

    基于jupyter notebook的python编程 运用最小二乘法 导入文件数据模拟一元线性回归分析 用最小二乘法模拟一元线性回去曲线的目录 一 运行jupyter notebook 搭建python环境 1 打开Windows终端命令
  • 预防死锁的3种方法

    1 采用资源的静态预分配策略 破坏 部分分配 条件 2 允许进程剥夺使用其他进程占用的资源破坏 不可剥夺 条件 3 采用资源有序分配法 破坏 环路 条件
  • 2022黑马SpringBoot跟学笔记(二)

    2022黑马SpringBoot跟学笔记 二 2 4 多环境配置 2 4 1 yaml文件 2 4 2 properties文件 2 4 3 命令行启动参数设置 2 4 4多环境开发控制 2 5 配置文件分类 2 5 1 代码演示 2 5