快速了解SpringBoot注解的使用

文章目录

  • 容器功能--注解
    • Spring 注入组件的注解
      • @Component、@Controller、@Service、@Repository
      • 案例演示
    • @Configuration
      • 应用实例
        • 传统方式应用实例
        • 使用SpringBoot 的@Configuration 添加/注入组件
      • @Configuration 注意事项和细节
    • @Import
      • 应用实例
    • @Conditional
      • @Conditional 介绍
      • 应用实例
    • @ImportResource
      • @ImportResource 应用实例
    • 配置绑定
      • 应用实例
      • 注意事项和细节

容器功能–注解

Spring 注入组件的注解

@Component、@Controller、@Service、@Repository

说明: 这些在Spring 中的传统注解仍然有效,通过这些注解可以给容器注入组件

案例演示

  1. 创建quickstart\src\main\java\com\nlc\springboot\bean\A.java

image-20230805210154808

其他的就不做演示了

  1. 在quickstart\src\main\java\com\nlc\springboot\MainApp.java 获取, 完成测试

image-20230805210818355

@Configuration

应用实例

传统方式应用实例

说明: 演示在SpringBoot, 如何通过@Configuration 创建配置类来注入组件

回顾传统方式如何通过配置文件注入组件

1.创建quickstart\src\main\java\com\nlc\springboot\bean\Monster.java

public class Monster {private Integer id;private String name;private Integer age;private String skill;public Monster(Integer id, String name, Integer age, String skill) {this.id = id;this.name = name;this.age = age;this.skill = skill;}public Monster() {}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 Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSkill() {return skill;}public void setSkill(String skill) {this.skill = skill;}@Overridepublic String toString() {return "Monster{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", skill='" + skill + '\'' +'}';}
}
  1. 创建quickstart\src\main\resources\beans.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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--配置了Monster bean--><bean id="monster03" class="com.nlc.springboot.bean.Monster"><property name="name" value="牛魔王~"></property><property name="age" value="5000"></property><property name="skill" value="芭蕉扇~"></property><property name="id" value="1000"></property></bean>
</beans>

使用SpringBoot 的@Configuration 添加/注入组件

  1. 创建quickstart\src\main\java\com\nlc\springboot\config\BeanConfig.java

程序员可以通过@Bean 注解注入bean对象到容器。

当一个类被 @Configuration 标识,该类-Bean 也会注入容器。

//@Configuration 标识这是一个配置类: 等价配置文件
@Configuration
public class BeanConfig {/*** 解读* 1. @Bean : 给容器添加组件, 就是Monster bean* 2. monster01() : 默认 你的方法名monster01 作为Bean的名字/id* 3. Monster : 注入类型, 注入bean的类型是Monster* 4. new Monster(200,"牛魔王",500,"疯魔拳") 注入到容器中具体的Bean信息* 5. @Bean(name = "monster_nmw") : 在配置、注入Bean指定名字/id monster_nmw* 6. 默认是单例注入* 7. 通过 @Scope("prototype")  可以每次返回新的对象,就多例.*///@Bean(name = "monster_nmw")@Bean//@Scope("prototype")public Monster monster01() {return new Monster(200, "牛魔王", 500, "疯魔拳");}
}

2.修改MainApp.java , 从配置文件/容器获取bean , 并完成测试

 public static void main(String[] args) {//启动springboot应用程序/项目ConfigurableApplicationContext ioc = SpringApplication.run(MainApp.class, args);//1. ioc.getBean("monster01", Monster.class) 是从BeanConfig 配置类/容器获取bean实例//2. 默认是单列模式, 所以monster01 == monster02//获取BeanConfig 配置类的组件/bean 实例Monster monster01 = ioc.getBean("monster01", Monster.class);System.out.println(monster01);Monster monster02 = ioc.getBean("monster01", Monster.class);System.out.println(monster01 == monster02);
}
  1. 也可以通过Debug 来查看ioc 容器是否存在monster01 Bean 实例

image-20230805212207663

image-20230805212218978

image-20230805212231858

image-20230805212244577

beanDefinitionMap, 只是存放了bean 定义信息, 真正存放Bean 实例的在singleonObjectis的Map 中, 对于非单例,是每次动态反射生成的实例

image-20230805212310024

image-20230805212325251

@Configuration 注意事项和细节

  1. 配置类本身也是组件, 因此也可以获取, 测试修改MainApp.java
public static void main(String[] args) {ConfigurableApplicationContext ioc =  SpringApplication.run(MainApp.class, args);//1. ioc.getBean("monster01", Monster.class) 是从BeanConfig 配置类/容器获取bean 实例//2. 默认是单列模式, 所以monster01 == monster02//获取BeanConfig 配置类的组件/bean 实例Monster monster01 = ioc.getBean("monster01", Monster.class);System.out.println(monster01);Monster monster02 = ioc.getBean("monster01", Monster.class);System.out.println(monster01 == monster02);//配置类本身也是组件, 因此也可以获取BeanConfig beanConfig = ioc.getBean(BeanConfig.class);System.out.println("beanConfig= " + beanConfig);
}
  1. SpringBoot2 新增特性: proxyBeanMethods 指定Full 模式和Lite 模式

修改quickstart\src\main\java\com\nlc\springboot\config\BeanConfig.java

/***  * 1. proxyBeanMethods:代理bean的方法*  * (1) Full(proxyBeanMethods = true)、【保证每个@Bean方法被调用多少次返回的组件都是单实例的, 是代理方式】*  * (2) Lite(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的, 是非代理方式】*  * (3) 特别说明: proxyBeanMethods 是在 调用@Bean方法 才生效,因此,需要先获取BeanConfig 组件,再调用方法*  * 而不是直接通过 SpringBoot 主程序得到的容器来获取bean, 注意观察直接通过ioc.getBean() 获取Bean, proxyBeanMethods 值不会生效*  * (4) 如何选择: 组件依赖必须使用Full模式默认。如果不需要组件依赖使用 Lite模式*  * (5) Lite模 也称为轻量级模式,因为不检测依赖关系,运行速度快*/
//@Configuration 标识这是一个配置类: 等价配置文件
@Configuration(proxyBeanMethods = false)
public class BeanConfig {/*** 解读* 1. @Bean : 给容器添加组件, 就是Monster bean* 2. monster01() : 默认 你的方法名monster01 作为Bean的名字/id* 3. Monster : 注入类型, 注入bean的类型是Monster* 4. new Monster(200,"牛魔王",500,"疯魔拳") 注入到容器中具体的Bean信息* 5. @Bean(name = "monster_nmw") : 在配置、注入Bean指定名字/id monster_nmw* 6. 默认是单例注入* 7. 通过 @Scope("prototype")  可以每次返回新的对象,就多例.*///@Bean(name = "monster_nmw")@Bean//@Scope("prototype")public Monster monster01() {return new Monster(200, "牛魔王", 500, "疯魔拳");}
}
  1. 修改quickstart\src\main\java\com\nlc\springboot\MainApp.java
@SpringBootApplication(scanBasePackages = "com.nlc")
public class MainApp {public static void main(String[] args) {//启动SpringBoot 应用程序ConfigurableApplicationContext ioc = SpringApplication.run(MainApp.class, args);//1. ioc.getBean("monster01", Monster.class) 是从BeanConfig 配置类/容器获取bean实例//2. 默认是单列模式, 所以monster01 == monster02//获取BeanConfig 配置类的组件/bean 实例Monster monster01 = ioc.getBean("monster01", Monster.class);System.out.println(monster01);Monster monster02 = ioc.getBean("monster01", Monster.class);System.out.println(monster01 == monster02);//配置类本身也是组件, 因此也可以获取,monster01 != monster02//上面配置了@Configuration(proxyBeanMethods = false),获取到的都是新创建的BeanConfig beanConfig = ioc.getBean(BeanConfig.class);System.out.println("beanConfig= " + beanConfig);Monster monster03 = beanConfig.monster01();Monster monster04 = beanConfig.monster01();System.out.println("monster03 == monster04 : " + (monster03 == monster04));}
}
  1. 配置类可以有多个, 就和Spring 可以有多个ioc 配置文件是一个道理.

创建quickstart\src\main\java\com\nlc\springboot\config\BeanConfig2.java

@Configuration
public class BeanConfig2 {@Beanpublic Monster monster100() {return new Monster(200, "牛魔王~~", 500, "芭蕉扇");}
}

完成测试quickstart\src\main\java\com\nlc\springboot\MainApp.java

@SpringBootApplication
public class MainApp {public static void main(String[] args) {//启动SpringBoot 应用程序ConfigurableApplicationContext ioc = SpringApplication.run(MainApp.class, args);Monster monster100 = ioc.getBean("monster100", Monster.class);System.out.println(monster100);}
}

image-20230805215006417

@Import

应用实例

说明: 演示在SpringBoot, 如何通过@Import 来注入组件

创建quickstart\src\main\java\com\nlc\springboot\bean\Cat.java

public class Cat {
}

创建quickstart\src\main\java\com\nlc\springboot\bean\Dog.java

public class Dog {
}
  1. 修改BeanConfig.java 通过@Import 注入组件
/**
* Import 可以传入一个数组,可以一次注入多个组件
* public @interface Import {
* Class<?>[] value();
* }
* 注意@Import 方式注入的组件, 默认组件的名字就是全类名
*/
@Import({Dog.class, Cat.class})
// @Configuration//标识这是一个配置类: 等价配置文件
@Configuration(proxyBeanMethods = false)
public class BeanConfig {
}
  1. 修改MainApp.java 完成测试
public static void main(String[] args) {//启动springboot应用程序/项目ConfigurableApplicationContext ioc =SpringApplication.run(MainApp.class, args);Dog dogBean = ioc.getBean(Dog.class);Cat catBean = ioc.getBean(Cat.class);System.out.println("dogBean--" + dogBean);System.out.println("catBean--" + catBean);
}

默认类型导入是单例的,如果有多个同类型bean就会报错。

@Conditional

@Conditional 介绍

  1. 条件装配:满足Conditional 指定的条件,则进行组件注入
  2. @Conditional 是一个根注解,下面有很多扩展注解

image-20230806113131984

image-20230806113154171

应用实例

  1. 要求: 演示在SpringBoot, 如何通过@ConditionalOnBean 来注入组件
  2. 只有在容器中有name = monster_nmw 组件时,才注入dog01, 代码如图

image-20230806113251428

@Bean
public Dog dog01() {return new Dog();
}
  1. 先测试下,当前是否能注入dog01

image-20230806113503712

System.out.println("容器是否注入了dog01= " + ioc.containsBean(“dog01”));

4.修改BeanConfig.java , 加入@ConditionalOnBean 条件约束,并完成测试

@Import({Dog.class, Cat.class})
// @Configuration//标识这是一个配置类: 等价配置文件
@Configuration(proxyBeanMethods = false)
//设置每次获取bean都创建新的,要符合条件才生效
public class BeanConfig {/*** 1. @Bean : 给容器中添加组件* 2. monster01() : 默认方法名作为组件的id* 3. Monster: 返回类型就是组件类型, 返回的值就是new Monster(100, "牛魔王", 500, "芭蕉扇")* 4. @Bean("monster_nmw"): 重新指定组件的id = “monster_nmw”* 5. 配置类里面使用@Bean 标注在方法上给容器注册组件,默认是单实例的*/// @Bean("monster_nmw")@Beanpublic Monster monster01() {return new Monster(100, "牛魔王", 500, "芭蕉扇");}/*** @ConditionalOnBean(name = "monster_nmw"):* 1. 表示只有容器中注入了name = monster_nmw 的组件,下面的组件(dog01)才会被注入* 2. @ConditionalOnBean(name = "monster_nmw") 也可以放在类名处,* 则表示对该配置类中所有要注入的组件都进行条件约束* 3. 还有很多其它条件约束注解,用到时在讲解.*/@ConditionalOnBean(name = "monster_nmw")@Beanpublic Dog dog01() {return new Dog();}
}

自己测试,打开注解,看是否注入。

@ImportResource

作用:原生配置文件引入, 也就是可以直接导入Spring 传统的beans.xml ,可以认为是SpringBoot 对Spring 容器文件的兼容.

@ImportResource 应用实例

  1. 需求: 将beans.xml 导入到BeanConfig.java 配置类, 并测试是否可以获得beans.xml注入/配置的组件

将beans.xml放在resource资源目录下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--配置了Monster bean--><bean id="monster03" class="com.nlc.springboot.bean.Monster"><property name="name" value="牛魔王~"></property><property name="age" value="5000"></property><property name="skill" value="芭蕉扇~"></property><property name="id" value="1000"></property></bean>
</beans>
  1. 修改BeanConfig.java / 或者创建新的BeanConfig3.java(建议创建新的配置类) 来测试,使用@ImportResource 导入beans.xml
//外部导入bean
@Import({Dog.class, Cat.class})
// @Configuration//标识这是一个配置类: 等价配置文件
@Configuration(proxyBeanMethods = false)
//导入beans.xml
@ImportResource("classpath:beans.xml")
public class BeanConfig {
}
  1. 在MainApp.java 测试
public static void main(String[] args) {ConfigurableApplicationContext ioc = SpringApplication.run(MainApp.class, args);System.out.println("容器是否注入了dog01= " + ioc.containsBean("dog01"));System.out.println("monster03: " + ioc.containsBean("monster03"));System.out.println(ioc.getBean("monster03"));
}

配置绑定

说明:使用Java 读取到SpringBoot 核心配置文件application.properties 的内容,并且把它封装到JavaBean 中

应用实例

  1. 需求: 将application.properties 指定的k-v 和JavaBean 绑定
#默认server.port=8080
server.port=10000
#比如: 默认spring.servlet.multipart.max-file-size=1MB
#默认配置最终都是映射到某个类上,比如这里配置会映射到MultipartProperties
spring.servlet.multipart.max-file-size=10MB
#设置属性k-v
#前面的futn01用于指定/区分不同的绑定对象
furn01.id=100
furn01.name=soft_chair!!
furn01.price=45678.9
  1. 创建quickstart\src\main\java\com\nlc\springboot\bean\Furn.java
@Component
@ConfigurationProperties(prefix = "furn01")
//指定前缀。以 前缀匹配properties 文件的值,将值注入bean
/*** 说明:* 1. Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}* 2. @Data 注解等价使用了 如下注解 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode*/
//@Data
//说明: @NoArgsConstructor 在编译时,会生成无参构造器, 前面说过,默认情况下,会生成一个无参构造器
//说明:当我们有其它构造器生成时,如果你希望仍然有无参构造器就需要使用@NoArgsConstructor指定一下,否则就会覆盖无参构造器,从而代码错误
@NoArgsConstructor
//说明:@AllArgsConstructor 在编译时,会生成全参构造器
@AllArgsConstructor
//@ToString 在编译时,生成toString, 默认情况下,会生成一个无参构造器
@ToString
//生成所有的set/get方法
@Setter
@Getter
public class Furn {private Integer id;private String name;private Double price;
}
  1. 修改HelloController.java
@Controller
public class HelloController {@RequestMapping("/hello")@ResponseBodypublic String hello(){return "hello, spring boot";}@AutowiredFurn furn;@RequestMapping("/furn")@ResponseBodypublic Furn furn(){return furn;}
}
  1. 启动SpringBoot 主程序,测试

image-20230806115347536

如果测试时发现有结果为空,说明properties 文件的属性写错了。

  1. 配置绑定还有第2 种方式, 也给小伙伴演示下, 完成测试,效果一样, 注意: 注销@Component 需要在BeanConfig.java( 说明: 也可以是其它配置类) 配置@EnableConfigurationProperties(Furn.class), 否则会提示错误

image-20230806115506499

//@EnableConfigurationProperties(Furn.class)解读
//1、开启Furn 配置绑定功能
//2、把Furn 组件自动注册到容器中
@EnableConfigurationProperties(Furn.class)
public class BeanConfig {}

image-20230806115558339

注意事项和细节

1.如果application.properties 有中文, 需要转成unicode 编码写入, 否则出现乱码。可以使用unicode转码工具进行转换。

#设置属性k-v
furn01.id=100
furn01.name=soft_chair\u6c99\u53d1!!
furn01.price=45678.9

2.使用@ConfigurationProperties(prefix = “furn01”) 会提示如下信息, 但是不会影响使用

image-20230806183025605

  1. 解决@ConfigurationProperties(prefix = “furn01”) 提示信息, 在pom.xml 增加依赖, 即可
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1382245.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

干部年龄大 计算机水平,各级别公务员“晋升年龄表”来了,超过这个年龄,以后基本上没戏...

原标题&#xff1a;各级别公务员“晋升年龄表”来了&#xff0c;超过这个年龄&#xff0c;以后基本上没戏 距离2021年公务员报名考试已经过去一段时间了&#xff0c;只能说今年的考公没有那么容易&#xff0c;因为据说今年共有150万人报名&#xff0c;比去年整整多了10.8万人&a…

excel不显示0_【208期】根据身份证号计算退休年龄时长高亮提醒,EXCEL做到了

导读 应亲们要求&#xff0c;以后会多上实例&#xff0c;今天给大家分享一期关于EXCEL根据身份证号以及退休年龄&#xff0c;动态自动计算距离到期年限&#xff0c;以及高亮提醒的实战案例。 实例要求&#xff1a; 根据身份证号以及退休年龄&#xff0c;用excel公式自动计算出距…

年龄大了学计算机,年龄大了就“不值钱”的专业,30岁开始走下坡路,学生要慎重选择...

文/香橙聊教育 目前为止&#xff0c;我国有12个学科门类&#xff0c;98个专业类&#xff0c;500多个专业。 这些专业有很多是有年龄限制的&#xff0c;也就是说&#xff0c;到了一定的年龄就开始走下坡路&#xff0c;就像初二是初中阶段的分水岭是一个道理。 这些专业的学生在工…

计算机专业退休有退休金,我参加工作42年,国家公务员退休,二级警督,退休工资为什么按2014年10月份的工资计算机退休费...

咨询我 帮助人数&#xff1a;3463719 退休年龄 根据1978年6月国务院颁发的《关于工人退休、退职的暂行办法》和《关于安置老弱病残干部的暂行办法》(国发[1978]104号)规定&#xff0c;下列几种情况可以办理退休&#xff1a; (1)男性干部、工人年满60周岁&#xff0c;女干部年满…

计算退休年龄js怎么写,自定义年龄计算退休时间js怎么实现

最近在研究js&#xff0c;看到一个工具比较新颖&#xff0c;在线计算退休时间、退休年龄的工具&#xff0c;如下&#xff1a;http://www.chinawe.net/tools/tuixiunianling/ 可以自定义时间和退休年龄&#xff0c;还能得出工作天数。 这个其实就是通过js计算出来的&#xff0c…

Mysql:如果知道一个用户的出身日期,如何统计他的退休年龄是那一年

业务需求 今天获得一个统计报表的业务&#xff1a; 在一个企业用户表中&#xff08;详细字段不写&#xff09;&#xff0c;现需要统计所有员工的退休日期形成一个定时任务&#xff0c;在定时任务中&#xff0c;如果员工接近还有60天&#xff0c;定时任务会短信发名单给人事部。…

计算机领域男的多大年龄退休,2022年后男性几岁退休 2022退休时间表

近年来&#xff0c;有关于延迟退休的新闻报道&#xff0c;一直在不少。有一种说法是&#xff0c;在2022年以后&#xff0c;延迟退休政策将会出台&#xff0c;这对于近几年来&#xff0c;将要退休的人群来说&#xff0c;无疑是非常关心的&#xff0c;那么2022年后男性几岁退休&a…

计算机专业多大退休,60%仍在使用Windows 7的计算机下个月正式退休

实际上&#xff0c;计算机的普及发生在最近十年中。Microsoft Windows 7于2009年10月22日发布&#xff0c;距今天已经整整十年了。因此&#xff0c;许多人首先接触了Windows 7中的计算机。今天&#xff0c;这个伴随着许多人的操作系统即将完成其使命&#xff0c;并将于2020年1月…

退休人员计算工具

一&#xff0c;背景介绍 平时工作中需要计算退休年龄&#xff0c;分为公务员&#xff0c;参公&#xff0c;事业三类。 以前都是手工计算的&#xff0c;因为人会不断更新流动&#xff0c;每次需要这些数据的时候&#xff0c;都需要重新计算一遍。 这样存在几个问题&#xff1a; …

通达OA SQL注入漏洞【CVE-2023-4165】

通达OA SQL注入漏洞【CVE-2023-4165】 一、产品简介二、漏洞概述三、影响范围四、复现环境POC小龙POC检测工具: 五、修复建议 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损…

百度地图标注公司那家好

目前传统的商业模式已经无法满足创业者的发展需求&#xff0c;想要有更好更快的发展可以通过网络来进行推广&#xff0c;腾讯地图标注这是一种全新的推广模式&#xff0c;现在每个人几乎都在用手机来进行。上网&#xff0c;在手机上下载各种各样的地图来寻找自己的目的地&#…

如何在UI自动化测试中加入REST API的操作

1、问题 当我们描述一个“好的自动化测试用例”时&#xff0c;经常出现标准是&#xff1a; 精确 自动化测试用例应该测试一件事&#xff0c;只有一件事。与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败。 独立 自动化测试用例不应该受测试套件中任何其他…

将QQ和微信的保存路径由C盘转移到其他盘

将QQ和微信的保存路径由C盘转移到其他盘 &#xff08;1&#xff09;QQ中的文件通过右键点击QQ头像——》选择系统设置——》选择文件管理——》选择更改目录 完成以后&#xff0c;需要重启一下QQ即可。 &#xff08;2&#xff09;右键点击微信——》选择设置——》选择文件…

pc版微信聊天记录备份迁移

1. 备份:定期备份文件夹 C:\Users\${username}\Documents\WeChat Files (${username}为微信安装的windows用户名) 2. 恢复&#xff1a; &#xff08;1&#xff09;. 新机器安装成功微信后先别启动 &#xff0c;将 备份的WeChat Files 文件夹复制到 C:\Users\${username}\Doc…

固态硬盘的合盘及数据转移

场景 1.在C盘空间不足时&#xff0c;我们会想到把其他的盘的数据分给C盘&#xff0c;这样就会涉及到数据转移的问题。 2.在硬盘分区合并的时候&#xff0c;有的两分区中间会有一个恢复分区&#xff0c;导致不能合并的情况。 解决 分盘 1.右键我的电脑&#xff0c;点击管理 …

6.2.0在线编辑:GrapeCity Documents for Word (GcWord) Crack

GrapeCity Word 文档 (GcWord) 支持 Office Math 函数以及转换为 MathML GcWord 现在支持在 Word 文档中创建和编辑 Office Math 内容。GcWord 中的 OMath 支持包括完整的 API&#xff0c;可处理科学、数学和通用 Word 文档中广泛使用的数学符号、公式和方程。以下是通过 OMa…

男宝宝起名的三大思路

男宝宝起名的三大思路 最近有个哥们正在为一件事情烦恼&#xff0c;开始的时候咱们都觉得挺奇怪的&#xff0c;这哥们现在可以说是家庭事业双丰收了&#xff0c;到底还有什么事儿能让他这么的烦恼呢?询问之下&#xff0c;这个哥们儿向我们吐了苦水&#xff0c;不为别的&#x…

九重鸿蒙浮屠塔,浮图塔测算(浮图塔黄历老黄历)

浮图塔是什么 // 浮图塔就是佛塔. ※浮图&#xff1a;梵语 1、佛陀(简称佛)的别名。 2、佛塔。亦作“佛图”、“浮屠”。 魏书˙卷一一四˙释老志&#xff1a;“自洛中构白马寺&#xff0c;盛 饰佛图&#xff0c;画迹甚妙&#xff0c;为四方式。 凡宫塔制度&#xff0c;犹依天竺…

关于阿里云服务器密码重置和使用方法

总是记不住密码&#xff0c;今天又重置了阿里云服务器的远程连接密码&#xff0c;在这里做个记录&#xff0c;方便以后查找。 一定注意&#xff0c;重置完实例密码要重启&#xff01; Windows 系统 默认的用户名为administrator 密码为重置密码 一定注意&#xff0c;重置完…

阿里云服务器密码重置

目录 一、进入阿里云官网管理控制台 二、选择重置实例密码​ 三、保存 四、网页远程连接服务器 一、进入阿里云官网管理控制台 首先进入阿里云官网&#xff0c;登录你的阿里云账号进入阿里云的管理控制台&#xff0c;然后进入ECS管理后台&#xff0c;如下图。 二、选择重置实例…