学习记录三

一、力扣打卡

今天学习的是将罗马数字转换为整型

将罗马数字转换为整型有如下规则:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

那么怎么实现?

首先就是将罗马字符转换为数值,我们可以使用Map集合还有switch的方式去实现

因为Map集合里面包含键值对,正好是我们需要的

基本解题思路:前面一个数小于后一个数就减去,大于就加上

Map<Character,Integer> symbolValues=new HashMap<Character,Integer>(){{
        
        put('I', 1);
        put('V', 5);
        put('X', 10);
        put('L', 50);
        put('C', 100);
        put('D', 500);
        put('M', 1000);
}
};

public int romanToInt(String s) {
        int ans = 0;
        int n = s.length();
        for (int i = 0; i < n; ++i) {
            int value = symbolValues.get(s.charAt(i));
            if (i < n - 1 && value < symbolValues.get(s.charAt(i + 1))) {
                ans -= value;
            } else {
                ans += value;
            }
        }
        return ans;
    }

还有一种方法就是将所有的可能性列出来,先判断后面还有没有两个字符,有的话判断字符是不是存在于集合中,存在于就读取这两个数据,不存在就读取一个就可以了!

二、 Spring知识学习

1. 注解开发(对于对象

在前面我们学习了配置文件开发,虽然经过一些方法会让一些操作变得更加的简单,但是其实还有更简单的方法,就是进行注解扫描的方式

怎么进行注解开发?
第一步,在对应的类(在applicationContext.xml文件中进行了配置的)上进行注解的配置

第二步,仅仅配置上面的过程还不够,还需要添加

<context:component-scan base-package="com.wxy"/>

告诉Spring应该扫描哪里

在这里我们还是以之前的UserDaoImpl类和UserServiceImpl类来进行记录

之前的配置应该是,先写好类,然后在applicationContext.xml下面配置如下

<bean id="userDao" class="com.wxy.dao.UserDao"></bean>

<bean id="userService" class="com.wxy.service.UserService">

    <property name="userDao" ref="userDao"></property>
    
    <!--这里是将userDao封装进userService,使用的方法是set进行配置,同样可以使用构造器的方式,property改成constructer-args就可以;然后这里配置的是对象,如果是基本数据就是value;如果是集合就有多种方式,
比如对于List来说 <property name="XX"> <list>值A</list>。。。 </property> ; 
对于map来说,因为存在键值对,所以就是 
<property name="strMap">
        <map>
            <entry key="u1" value-ref="user1"></entry>
            <!--这里使用value-ref的原因是引用Map类型的对象-->
        </map>
</property>
对于properties来说就是<property name="XX"> <props>值A</props>。。。 </property>
-->
 

</bean>

那么在这里就会进行一个拆解

第一句话<bean id="userDao" class="com.wxy.dao.UserDao"></bean>

配置在userDaoImpl类中,添加注解

@Component("userDao")

第二句话<bean id="userService" class="com.wxy.service.UserService">

配置在userServiceImpl类中,添加注解

@Component("userService")

第三句话<property name="userDao" ref="userDao"></property>

因为是userService引用userDao,所以将其添加注解在userServiceImpl类中的对应位置

@Autowired  //自动注入   按照数据类型从Spring容器中进行匹配

//使用是按照id值从容器中进行匹配的,但是主要此处需要和@Autowired一起使用
@Qualifier("userDao")  //此时只有一个bean此处就算省略还是可以注入,但是有多个就不行

最后需要在applicationContext文件中配置

<context:component-scan base-package="com.wxy"/>

才不会报错!!!

1.(1) 对上面的加工,使用更明确的注解 

 在userServiceImpl中将@Component(userService)修改为@Service(userService)

在userDaoImpl中将@Component(userDao)修改为@Repository(userDao)

注意:如果你在这里使用的是xml文件进行配置的,那就必须写setUserDao方法在userServiceImpl中,因为他是通过反射进行注入的;但是如果使用注解的方式就不用set方法了

按照类型注入只写@Autowired就可以,但是按照id值的话就需要写@Autowired和@Qualifier这两个注释。

也可以将上面两句话替换为@Resource(name="xxx");  //@Resource相当于@Autowired和@Qualifier

2. 注解开发(基本数据类型

使用@Value("XXX")进行配置

3. 其他

@Scope("prototype")  //Spring容器产生多个bean

@Scope("singleton")  //Spring容器产生一个bean

@PostConstruct
    public void init(){
        System.out.println("Service对象的初始化方法");
    }

@PreDestroy
    public void destroy(){
        System.out.println("Service的销毁方法");
    }

4. Spring新注解开发

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值