常用的重要笔记记录


五分钟掌握TDengine时序数据的保留策略
https://z.itpub.net/article/detail/A0BF32D9A16FCFAEB480C4935F520FE2

那些经常被问的JAVA面试题(7)—— 幂等性
https://blog.51cto.com/u_15501087/5834819


使用Comparator 提供的reverseOrder() 方法
list = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
根据年龄升序排序。
list = list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());
先按姓名升序,姓名相同则按年龄升序。
list = list.sorted(Comparator.comparing(Student::getName).thenComparing(Student::getAge)).collect(Collectors.toList());

最全面的数仓分层剖析,一文搞定企业数仓分层
https://baijiahao.baidu.com/s?id=1725536452637878811&wfr=spider&for=pc

加速卡正式序列号:
72E7-6D79-778B-CA2D

//Liunx查看磁盘空间的命令
df -m | sed 1d | awk '{sum += $4} END {print sum/1024"GB"}'

//Liunx查看机器内存的命令
cat /proc/meminfo

//Liunx查看机器核数
cat /proc/cpuinfo |grep 'process' |sort |uniq |wc -l
 

jar-with-dependencies
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <finalName>FlinkStudent-1.0-full-jar-SNAPSHOT</finalName>
        <appendAssemblyId>false</appendAssemblyId>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

问题:service注解放在 接口还是实现?
@Service注解是标注在实现类上的,因为@Service是把spring容器中的bean进行实例化,也就是等同于new操作,只有实现类是可以进行new实例化的,而接口则不能,所以是加在实现类上的。
ssm项目中 @Autowired 注解在接口类上却是注入的是他的实现类?

问题:
为什么在CategoryController类中 @Auto明明注解在CategoryService 这个接口上 而注入的却是CategoryServiceImpl这个实现类
因为: (自动装配实现了CategoryService接口的的实例,只有CategoryServiceImpl实现了CategoryService接口,所以就会注入CategoryServiceImpl)
这种自动装配 @Autowired 还是@Resource在装配或者注入的时候都是先是实例化后再进行的 第一步都是先实例化
这里他要实例化一个接口是不可能的 所以要找到他的实现类 实例化他的实现类
使用 @Autowired 的时候,到底是写接口还是实现类?
场景:使用 @Autowired 的时候,到底是写接口还是实现类?

答案:写的接口

解析:来自网友的回答 :这个其实是创建了实现类的对象但引用了接口类型,即 "InjectionDao injectionDao = new InjectionDaoImpl ()", 这个其实是 Java 多态性(向上转型)的一种应用。在实现类处加 @Repository 注解,意思就是 new InjectionDaoImpl (), 而在 InjectionServiceImpl 中定义属性 InjectionDAO injectionDAO 就是将 new 出来的这个 InjectionDaoImpl 对象向上转型为 InjectionDao 类型。

注意:

  若一个接口被多个实现类,实现的时候

  @Autowired,Spring 会按 byType 的方式寻找接口的实现类,将其注入。存在多个实现类,应该指定名字,可以通过 byName 注入的方式。可以使用 @Resource 或 @Qualifier 注解。

@Service("menuService1")
public class MenuServiceImpl implements IMenuService
 
@Service("menuService2")
public class MenuServiceImpl implements IMenuService
 
    @Autowired
    @Qualifier("menuService1")
    private IMenuService menuService;
     
    @Autowired
    @Qualifier("menuService2")
    private IMenuService menuService;
    
    
1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP
2、如果目标对象实现了接口,也可以强制使用CGLIB实现AOP
3、如果目标对象没有实现接口,必须采用CGLIB的动态代理,spring会自动在两种模式之间转换
4、不管哪一种方式都不能用private和final做修饰词


tar -zxvf是什么意思?
使用gzip工具(-z)解压(-x)由参数-f指定的文件,并显示压缩过程中详细信息(-v)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值